[*] Binary protection state of libgstisomp4.so

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function sprintf tear down of libgstisomp4.so

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0xfe94 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000fe94 ()                                  | void fcn_0000fe94 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     int16_t var_1ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
                                                             |     if (? >= ?) {
    0x0000fe94 ldrbmi lr, [r0, sp, lsr 18]!                  |         
                                                             |     }
    0x0000fe98 mov sl, r2                                    |     sl = r2;
    0x0000fe9a ldr r2, [pc, 0x13c]                           |     
    0x0000fe9c mov sb, r3                                    |     sb = r3;
    0x0000fe9e movs r4, 0                                    |     r4 = 0;
    0x0000fea0 mov r5, r1                                    |     r5 = r1;
    0x0000fea2 ldr r3, [pc, 0x138]                           |     r3 = *(0xffde);
    0x0000fea4 mov r8, r0                                    |     r8 = r0;
    0x0000fea6 add r2, pc                                    |     r2 = 0x1fe84;
    0x0000fea8 vpush {d8}                                    |     __asm ("vpush {d8}");
    0x0000feac vldr d8, [pc, 0x120]                          |     __asm ("vldr d8, aav.0x000000ff");
    0x0000feb0 sub sp, 0x20                                  |     
    0x0000feb2 ldr r3, [r2, r3]                              |     
    0x0000feb4 mov r0, sl                                    |     r0 = sl;
    0x0000feb6 ldr r2, [r1, 0x38]                            |     r2 = *((r1 + 0x38));
    0x0000feb8 mov r1, sb                                    |     r1 = sb;
    0x0000feba ldr r3, [r3]                                  |     r3 = *(0x1fe84);
    0x0000febc str r3, [sp, 0x1c]                            |     var_1ch = r3;
    0x0000febe mov.w r3, 0                                   |     r3 = 0;
    0x0000fec2 mov r3, r4                                    |     r3 = r4;
    0x0000fec4 vstr d8, [sp]                                 |     __asm ("vstr d8, [sp]");
    0x0000fec8 blx 0x78cc                                    |     r0 = fcn_000078cc ();
    0x0000fecc mov r6, r0                                    |     r6 = r0;
    0x0000fece ldr r0, [r5, 0x44]                            |     r0 = *((r5 + 0x44));
    0x0000fed0 mov r7, r1                                    |     r7 = r1;
    0x0000fed2 ldr r3, [r0, 0x10]                            |     r3 = *((r0 + 0x10));
    0x0000fed4 ldr r1, [r0, 4]                               |     r1 = *((r0 + 4));
    0x0000fed6 ldr r2, [r0, 0x14]                            |     r2 = *((r0 + 0x14));
    0x0000fed8 adds r3, r1, r3                               |     r3 = r1 + r3;
    0x0000feda adc.w r2, r2, r1, asr 31                      |     __asm ("adc.w r2, r2, r1, asr 31");
    0x0000fede cmp r2, r7                                    |     
    0x0000fee0 it eq                                         |     
                                                             |     if (r2 == r7) {
    0x0000fee2 cmpeq r3, r6                                  |         __asm ("cmpeq r3, r6");
                                                             |     }
                                                             |     if (r2 == r7) {
    0x0000fee4 beq 0xff66                                    |         goto label_2;
                                                             |     }
    0x0000fee6 ldr.w r3, [r5, 0x228]                         |     r3 = *((r5 + 0x228));
    0x0000feea add.w ip, r0, r3, lsl 5                       |     
    0x0000feee ldr.w r3, [r5, 0x22c]                         |     r3 = *((r5 + 0x22c));
    0x0000fef2 cmp r3, 0                                     |     
                                                             |     if (r3 < 0) {
    0x0000fef4 blt 0xffb0                                    |         goto label_3;
                                                             |     }
    0x0000fef6 ldrd r2, r3, [ip, 0x10]                       |     __asm ("ldrd r2, r3, [ip, 0x10]");
    0x0000fefa cmp r2, r6                                    |     
    0x0000fefc sbcs r3, r7                                   |     __asm ("sbcs r3, r7");
                                                             |     if (r2 <= r6) {
    0x0000fefe blo 0xffb0                                    |         goto label_3;
                                                             |     }
    0x0000ff00 mov r3, r4                                    |     r3 = r4;
    0x0000ff02 vstr d8, [sp]                                 |     __asm ("vstr d8, [sp]");
    0x0000ff06 mov r0, sl                                    |     r0 = sl;
    0x0000ff08 ldrh r2, [r5, r2]                             |     r2 = *((r5 + r2));
    0x0000ff0a mov r1, sb                                    |     r1 = sb;
    0x0000ff0c str.w sl, [sp, 0x10]                          |     __asm ("str.w sl, [var_10h]");
    0x0000ff10 str.w sb, [sp, 0x14]                          |     __asm ("str.w sb, [var_14h]");
    0x0000ff14 blx 0x78cc                                    |     fcn_000078cc ();
    0x0000ff16 vldmia sl, {d26, d27}                         |     __asm ("vldmia sl, {d26, d27}");
    0x0000ff1a str r4, [sp, 8]                               |     var_8h = r4;
    0x0000ff1c strd r0, r1, [sp, 0x10]                       |     __asm ("strd r0, r1, [var_10h]");
    0x0000ff20 movs r2, 0x20                                 |     r2 = 0x20;
    0x0000ff22 ldr.w r1, [r5, 0x228]                         |     r1 = *((r5 + 0x228));
    0x0000ff26 str r3, [sp, 4]                               |     var_4h = r3;
    0x0000ff28 movs r3, 1                                    |     r3 = 1;
    0x0000ff2a str r3, [sp]                                  |     *(sp) = r3;
    0x0000ff2c ldr r3, [pc, 0xb0]                            |     
    0x0000ff2e adds r1, 1                                    |     r1++;
    0x0000ff30 ldr r0, [r5, 0x44]                            |     r0 = *((r5 + 0x44));
    0x0000ff32 add r3, pc                                    |     r3 = 0x1ff16;
    0x0000ff34 blx 0x7a7c                                    |     r0 = fcn_00007a7c ();
    0x0000ff38 mov ip, r0                                    |     
                                                             |     if (r0 == 0) {
    0x0000ff3a cbz r0, 0xff66                                |         goto label_2;
                                                             |     }
    0x0000ff3c ldr r0, [r5, 0x44]                            |     r0 = *((r5 + 0x44));
    0x0000ff3e sub.w r4, ip, r0                              |     r4 = ip - r0;
    0x0000ff42 asrs r4, r4, 5                                |     r4 >>= 5;
                                                             |     if (r4 == 0) {
                                                             | label_0:
    0x0000ff44 cbz r4, 0xff66                                |         goto label_2;
                                                             |     }
                                                             |     do {
    0x0000ff46 ldr.w r1, [ip, 4]                             |         r1 = *((ip + 4));
    0x0000ff4a ldrd r2, r3, [ip, 0x10]                       |         __asm ("ldrd r2, r3, [ip, 0x10]");
    0x0000ff4e adds r2, r1, r2                               |         r2 = r1 + r2;
    0x0000ff50 adc.w r0, r3, r1, asr 3                       |         __asm ("adc.w r0, r3, r1, asr 3");
    0x0000ff54 cmp r6, r2                                    |         
    0x0000ff56 sbcs.w r3, r7, r3                             |         __asm ("sbcs.w r3, r7, r3");
                                                             |         if (r6 >= r2) {
    0x0000ff5a bhs 0xff68                                    |             goto label_1;
                                                             |         }
    0x0000ff5c subs r4, 1                                    |         r4--;
    0x0000ff5e add.w ip, r0, r4, lsl 5                       |         
    0x0000ff62 cmp r4, 0                                     |         
    0x0000ff64 bne 0xff46                                    |         
                                                             |     } while (r4 != 0);
                                                             | label_2:
    0x0000ff66 movs r4, 0                                    |     r4 = 0;
                                                             | label_1:
    0x0000ff68 ldr r2, [pc, 0x78]                            |     
    0x0000ff6a ldr r3, [pc, 0x70]                            |     r3 = *(0xffde);
    0x0000ff6c add r2, pc                                    |     r2 = 0x1ff54;
    0x0000ff6e ldr r3, [r2, r3]                              |     r3 = *(0x1ff54);
    0x0000ff70 ldr r2, [r3]                                  |     r2 = *(0x1ff54);
    0x0000ff72 ldr r3, [sp, 0x1c]                            |     r3 = var_1ch;
    0x0000ff74 eors r2, r3                                   |     r2 ^= r3;
    0x0000ff76 mov.w r3, 0                                   |     r3 = 0;
                                                             |     if (r2 != r3) {
    0x0000ff7a bne 0xffc8                                    |         goto label_4;
                                                             |     }
    0x0000ff7c mov r0, r4                                    |     r0 = r4;
    0x0000ff7e add sp, 0x20                                  |     
    0x0000ff80 vpop {d8}                                     |     __asm ("vpop {d8}");
    0x0000ff84 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |     
                                                             |     do {
    0x0000ff88 add.w sb, r4, 1                               |         sb = r4 + 1;
    0x0000ff8c mov r1, r5                                    |         r1 = r5;
    0x0000ff8e mov r2, sb                                    |         r2 = sb;
    0x0000ff90 mov r0, r8                                    |         r0 = r8;
    0x0000ff92 bl 0xf740                                     |         r0 = fcn_0000f740 (r0, r1, r2, r3, r4);
                                                             |         if (r0 == 0) {
    0x0000ff96 cbz r0, 0xffba                                |             goto label_5;
                                                             |         }
    0x0000ff98 ldr r0, [r5, 0x44]                            |         r0 = *((r5 + 0x44));
    0x0000ff9a lsl.w r2, sb, 5                               |         r2 = sb << 5;
    0x0000ff9e add.w ip, r0, r2                              |         
    0x0000ffa2 ldrd r1, r3, [ip, 0x10]                       |         __asm ("ldrd r1, r3, [ip, 0x10]");
    0x0000ffa6 cmp r6, r1                                    |         
    0x0000ffa8 sbcs.w r3, r7, r3                             |         __asm ("sbcs.w r3, r7, r3");
                                                             |         if (r6 <= r1) {
    0x0000ffac blo 0xffc0                                    |             goto label_6;
                                                             |         }
    0x0000ffae mov r4, sb                                    |         r4 = sb;
                                                             | label_3:
    0x0000ffb0 ldr r3, [r5, 0x40]                            |         r3 = *((r5 + 0x40));
    0x0000ffb2 subs r3, 1                                    |         r3--;
    0x0000ffb4 cmp r3, r4                                    |         
    0x0000ffb6 bhi 0xff88                                    |         
                                                             |     } while (r3 > r4);
    0x0000ffb8 b 0xff44                                      |     goto label_0;
                                                             | label_5:
    0x0000ffba mov.w r4, -1                                  |     r4 = -1;
    0x0000ffbe b 0xff68                                      |     goto label_1;
                                                             | label_6:
    0x0000ffc0 subs r2, 0x20                                 |     r2 -= 0x20;
    0x0000ffc2 add.w ip, r0, r2                              |     
    0x0000ffc6 b 0xff44                                      |     goto label_0;
                                                             | label_4:
    0x0000ffc8 blx 0x8460                                    |     fcn_00008460 ();
    0x0000ffcc nop.w                                         |     
    0x0000ffd0 invalid                                       |     
                                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0x29270 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.00029270 ()                                  | void fcn_00029270 (int16_t arg1, uint32_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x00029270 stmdbhs r0, {r0, r1, r7, r8, fp, sp, lr}      |     __asm ("stmdbhs r0, {r0, r1, r7, r8, fp, sp, lr}");
    0x00029274 ldr r3, [r3]                                  |     r3 = *(r3);
    0x00029276 clz r3, r3                                    |     r3 &= r3;
    0x0002927a lsr.w r3, r3, 5                               |     r3 >>= 5;
    0x0002927e it eq                                         |     
                                                             |     if (? != ?) {
    0x00029280 moveq r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x00029282 cbnz r3, 0x29286                              |         
    0x00029284 bx lr                                         |         return;
                                                             |     }
    0x00029286 push {r4, r5, r6, lr}                         |     
    0x00029288 mov r4, r0                                    |     r4 = r0;
    0x0002928a movw r0, 0x4d58                               |     
    0x0002928e movt r0, 0x5f50                               |     r0 = 0x5f504d58;
    0x00029292 bl 0x25c7c                                    |     fcn_00025c7c (r0, r1);
    0x00029296 ldr r6, [r4, 0x10]                            |     r6 = *((r4 + 0x10));
    0x00029298 mov r5, r0                                    |     r5 = r0;
    0x0002929a mov r1, r0                                    |     r1 = r0;
                                                             |     if (r0 != 0) {
    0x0002929c cbz r0, 0x292b4                               |         
    0x0002929e movs r0, 0xc                                  |         r0 = 0xc;
    0x000292a0 blx 0x866c                                    |         fcn_0000866c ();
    0x000292a4 ldr r3, [pc, 0x18]                            |         
    0x000292a6 mov r1, r0                                    |         r1 = r0;
    0x000292a8 add r3, pc                                    |         r3 = 0x5256c;
    0x000292aa strd r5, r3, [r0]                             |         __asm ("strd r5, r3, [r0]");
    0x000292ae ldr r3, [pc, 0x14]                            |         
    0x000292b0 add r3, pc                                    |         r3 = 0x5257a;
    0x000292b2 str r3, [r0, 8]                               |         *((r0 + 8)) = r3;
                                                             |     }
    0x000292b4 mov r0, r6                                    |     r0 = r6;
    0x000292b6 blx 0x821c                                    |     fcn_0000821c ();
    0x000292ba str r0, [r4, 0x10]                            |     *((r4 + 0x10)) = r0;
    0x000292bc pop {r4, r5, r6, pc}                          |     
                                                             | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0x2c270 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) fcn.0002c270 ()                      | void fcn_0002c270 (int16_t arg1) {
                                                 |     r0 = arg1;
    0x0002c270 invalid                           |     
    0x0002c274 ldr r0, [r0]                      |     r0 = *(r0);
    0x0002c276 blx 0x7794                        |     fcn_00007794 ();
    0x0002c27a ldr r0, [r5, 0x18]                |     r0 = *((r5 + 0x18));
                                                 |     if (r0 == 0) {
    0x0002c27c cbz r0, 0x2c2a2                   |         goto label_0;
                                                 |     }
    0x0002c27e ldr r3, [r5, 0x14]                |     r3 = *((r5 + 0x14));
    0x0002c280 cmp r3, 0                         |     
                                                 |     if (r3 <= 0) {
    0x0002c282 ble 0x2c29e                       |         goto label_1;
                                                 |     }
    0x0002c284 movs r4, 0                        |     r4 = 0;
                                                 |     do {
    0x0002c286 add.w r3, r4, r4, lsl 1           |         r3 = r4 + (r4 << 1);
    0x0002c28a adds r4, 1                        |         r4++;
    0x0002c28c add.w r0, r0, r3, lsl 7           |         r0 += (r3 << 7);
    0x0002c290 adds r0, 0x78                     |         r0 += 0x78;
    0x0002c292 bl 0x260d8                        |         r0 = fcn_000260d8 (r0);
    0x0002c296 ldrd r3, r0, [r5, 0x14]           |         __asm ("ldrd r3, r0, [r5, 0x14]");
    0x0002c29a cmp r3, r4                        |         
    0x0002c29c bgt 0x2c286                       |         
                                                 |     } while (r3 > r4);
                                                 | label_1:
    0x0002c29e blx 0x7424                        |     fcn_00007424 ();
                                                 | label_0:
    0x0002c2a2 mov r0, r5                        |     r0 = r5;
    0x0002c2a4 pop.w {r3, r4, r5, lr}            |     
    0x0002c2a8 b.w 0x7420                        |     return void (*0x7420)() ();
                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0x2c87c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                 | #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
                                                                 |                                  ((val & 0x000000000000ff00ull) << 40) | \
                                                                 |                                  ((val & 0x0000000000ff0000ull) << 24) | \
                                                                 |                                  ((val & 0x00000000ff000000ull) <<  8) | \
                                                                 |                                  ((val & 0x000000ff00000000ull) >>  8) | \
                                                                 |                                  ((val & 0x0000ff0000000000ull) >> 24) | \
                                                                 |                                  ((val & 0x00ff000000000000ull) >> 40) | \
                                                                 |                                  ((val & 0xff00000000000000ull) >> 56)))
                                                                 |  
    ; (fcn) fcn.0002c87c ()                                      | void fcn_0002c87c (int16_t arg_78h, int16_t arg_3e8h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int32_t var_0h;
                                                                 |     int32_t var_0h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_42h;
                                                                 |     int16_t var_4ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0002c87c svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0002c880 sub sp, 0x54                                      |     
    0x0002c882 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x0002c884 add.w r3, sp, 0x42                                |     r3 += var_42h;
    0x0002c888 mov sl, r0                                        |     sl = r0;
    0x0002c88a mov r4, r1                                        |     r4 = r1;
    0x0002c88c ldr r2, [pc, 0x108]                               |     
    0x0002c88e add.w fp, sp, 0x28                                |     
    0x0002c892 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x0002c894 ldr r3, [pc, 0x104]                               |     r3 = *(0x2c99c);
    0x0002c896 add r2, pc                                        |     r2 = 0x59232;
    0x0002c898 ldr r3, [r2, r3]                                  |     
    0x0002c89a ldr r3, [r3]                                      |     r3 = *(0x59232);
    0x0002c89c str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x0002c89e mov.w r3, 0                                       |     r3 = 0;
                                                                 | label_1:
    0x0002c8a2 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x0002c8a6 movs r2, 0x22                                     |     r2 = 0x22;
    0x0002c8a8 movs r1, 1                                        |     r1 = 1;
    0x0002c8aa mov r0, fp                                        |     r0 = fp;
    0x0002c8ac blx 0x8994                                        |     r0 = fcn_00008994 ();
    0x0002c8b0 cmp r0, 0x22                                      |     
                                                                 |     if (r0 != 0x22) {
    0x0002c8b2 beq 0x2c8d0                                       |         
                                                                 | label_0:
    0x0002c8b4 movs r0, 1                                        |         r0 = 1;
                                                                 | label_2:
    0x0002c8b6 ldr r2, [pc, 0xe8]                                |         
    0x0002c8b8 ldr r3, [pc, 0xe0]                                |         r3 = *(0x2c99c);
    0x0002c8ba add r2, pc                                        |         r2 = 0x59260;
    0x0002c8bc ldr r3, [r2, r3]                                  |         r3 = *(0x59260);
    0x0002c8be ldr r2, [r3]                                      |         r2 = *(0x59260);
    0x0002c8c0 ldr r3, [sp, 0x4c]                                |         r3 = var_4ch;
    0x0002c8c2 eors r2, r3                                       |         r2 ^= r3;
    0x0002c8c4 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0002c8c8 bne 0x2c994                                       |             goto label_3;
                                                                 |         }
    0x0002c8ca add sp, 0x54                                      |         
    0x0002c8cc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x0002c8d0 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x0002c8d2 ldr.w r6, [sl, 0x14]                              |     r6 = *((sl + 0x14));
    0x0002c8d6 ldr r5, [sp, 0x28]                                |     r5 = var_28h;
    0x0002c8d8 str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x0002c8da ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x0002c8dc cmp r6, 0                                         |     
    0x0002c8de ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x0002c8e0 rev r5, r5                                        |     r5 = SWAP32 (r5);
    0x0002c8e2 ldr.w sb, [sp, 0x30]                              |     sb = var_30h;
    0x0002c8e6 ldr.w ip, [sp, 0x38]                              |     ip = var_38h;
    0x0002c8ea ldr.w lr, [sp, 0x3c]                              |     lr = var_3ch;
    0x0002c8ee rev r3, r3                                        |     r3 = SWAP32 (r3);
    0x0002c8f0 ldrb.w r7, [sp, 0x40]                             |     r7 = var_40h;
    0x0002c8f4 vld1.64 {d7}, [r2]                                |     __asm ("vld1.64 {d7}, [r2]");
                                                                 |     if (r6 <= 0) {
    0x0002c8f8 ble 0x2c97a                                       |         goto label_4;
                                                                 |     }
    0x0002c8fa ldr.w r0, [sl, 0x18]                              |     r0 = *((sl + 0x18));
    0x0002c8fe movs r1, 0                                        |     r1 = 0;
    0x0002c900 b 0x2c90c                                         |     
                                                                 |     while (r2 != r5) {
    0x0002c902 adds r1, 1                                        |         r1++;
    0x0002c904 add.w r0, r0, 0x180                               |         r0 += 0x180;
    0x0002c908 cmp r1, r6                                        |         
                                                                 |         if (r1 == r6) {
    0x0002c90a beq 0x2c97a                                       |             goto label_4;
                                                                 |         }
    0x0002c90c ldr r2, [r0]                                      |         r2 = *(r0);
    0x0002c90e cmp r2, r5                                        |         
    0x0002c910 bne 0x2c902                                       |         
                                                                 |     }
    0x0002c912 ldr r6, [r4, 0x18]                                |     r6 = *((r4 + 0x18));
    0x0002c914 ldr r2, [r4, 0x10]                                |     r2 = *((r4 + 0x10));
    0x0002c916 ldr r1, [r4, 0x1c]                                |     r1 = *((r4 + 0x1c));
    0x0002c918 ldr r5, [r4, 8]                                   |     r5 = *((r4 + 8));
    0x0002c91a subs r2, r6, r2                                   |     r2 = r6 - r2;
    0x0002c91c sbc r8, r1, 0                                     |     __asm ("sbc r8, r1, 0");
    0x0002c920 adds r2, r2, r3                                   |     r2 += r3;
    0x0002c922 adc r8, r8, 0                                     |     __asm ("adc r8, r8, 0");
    0x0002c926 cmp r5, r2                                        |     
    0x0002c928 ldr r2, [r4, 0xc]                                 |     r2 = *((r4 + 0xc));
    0x0002c92a sbcs.w r8, r2, r8                                 |     __asm ("sbcs.w r8, r2, r8");
                                                                 |     if (r5 <= r2) {
    0x0002c92e blo 0x2c8b4                                       |         goto label_0;
                                                                 |     }
    0x0002c930 adds r6, r6, r3                                   |     r6 += r3;
    0x0002c932 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0002c934 adc r1, r1, 0                                     |     __asm ("adc r1, r1, 0");
    0x0002c938 str r6, [r4, 0x18]                                |     *((r4 + 0x18)) = r6;
    0x0002c93a str r1, [r4, 0x1c]                                |     *((r4 + 0x1c)) = r1;
    0x0002c93c rev.w r6, ip                                      |     ip = SWAP32 (r6);
    0x0002c940 ldr r5, [r0, 4]                                   |     r5 = *((r0 + 4));
    0x0002c942 rev r1, r2                                        |     r2 = SWAP32 (r1);
    0x0002c944 rev.w r2, sb                                      |     sb = SWAP32 (r2);
    0x0002c948 rev.w lr, lr                                      |     lr = SWAPundefined (lr);
    0x0002c94c subs r7, 0                                        |     
    0x0002c94e add.w r0, r0, 0x78                                |     r0 += 0x78;
    0x0002c952 it ne                                             |     
                                                                 |     if (r7 == 0) {
    0x0002c954 movne r7, 1                                       |         r7 = 1;
                                                                 |     }
    0x0002c956 mla r5, r2, r1, r5                                |     __asm ("mla r5, r2, r1, r5");
    0x0002c95a str r5, [r0, -0x74]                               |     *((r0 - 0x74)) = r5;
    0x0002c95e vmov r5, s14                                      |     __asm ("vmov r5, s14");
    0x0002c962 strd lr, r6, [sp]                                 |     __asm ("strd lr, r6, [sp]");
    0x0002c966 rev r6, r5                                        |     r5 = SWAP32 (r6);
    0x0002c968 vmov r5, s15                                      |     __asm ("vmov r5, s15");
    0x0002c96c rev r5, r5                                        |     r5 = SWAP32 (r5);
    0x0002c96e str r7, [sp, 8]                                   |     var_8h = r7;
    0x0002c970 strd r5, r6, [sp, 0x10]                           |     __asm ("strd r5, r6, [var_10h]");
    0x0002c974 bl 0x2870c                                        |     fcn_0002870c (r0, r1, r2, r3, r4, r5, r6);
    0x0002c978 b 0x2c8a2                                         |     goto label_1;
                                                                 | label_4:
    0x0002c97a ldr r0, [pc, 0x28]                                |     
    0x0002c97c add r0, pc                                        |     r0 = 0x59326;
    0x0002c97e blx 0x813c                                        |     fcn_0000813c ();
    0x0002c982 ldr r3, [pc, 0x24]                                |     
    0x0002c984 mov r1, r0                                        |     r1 = r0;
    0x0002c986 movs r2, 3                                        |     r2 = 3;
    0x0002c988 ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x0002c98a add r3, pc                                        |     r3 = 0x59338;
    0x0002c98c blx 0x8010                                        |     fcn_00008010 ();
    0x0002c990 movs r0, 0                                        |     r0 = 0;
    0x0002c992 b 0x2c8b6                                         |     goto label_2;
                                                                 | label_3:
    0x0002c994 blx 0x8460                                        |     fcn_00008460 ();
    0x0002c998 add r7, sp, 0x78                                  |     r7 += arg_78h;
    0x0002c99a movs r1, r0                                       |     r1 = r0;
    0x0002c99c lsrs r0, r5, 0x20                                 |     r0 = r5 >> 0x20;
    0x0002c99e movs r0, r0                                       |     
    0x0002c9a0 add r6, sp, 0x3e8                                 |     r6 += arg_3e8h;
    0x0002c9a2 movs r1, r0                                       |     r1 = r0;
    0x0002c9a4 strb r4, [r0, 0x1c]                               |     *((r0 + 0x1c)) = r4;
    0x0002c9a6 movs r0, r0                                       |     
    0x0002c9a8 ldrb r6, [r2, 1]                                  |     r6 = *((r2 + 1));
    0x0002c9aa movs r0, r0                                       |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0x2c9ac */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                 |  
    ; (fcn) fcn.0002c9ac ()                                      | void fcn_0002c9ac (int16_t arg_158h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_20h_2;
                                                                 |     int16_t var_24h_2;
                                                                 |     int16_t var_28h_2;
                                                                 |     int16_t var_2ch_2;
                                                                 |     int16_t var_30h_2;
                                                                 |     int16_t var_34h_2;
                                                                 |     int16_t var_38h_2;
                                                                 |     int16_t var_3ch_2;
                                                                 |     int16_t var_40h_2;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_4ch_2;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_6ch;
                                                                 |     int16_t var_6dh;
                                                                 |     int16_t var_6eh;
                                                                 |     int16_t var_6fh;
                                                                 |     int16_t var_70h;
                                                                 |     int16_t var_74h;
                                                                 |     int16_t var_b0h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0002c9ac svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0002c9b0 mov sb, r0                                        |     sb = r0;
    0x0002c9b2 vpush {d8, d9}                                    |     __asm ("vpush {d8, d9}");
    0x0002c9b6 sub sp, 0x7c                                      |     
    0x0002c9b8 mov sl, r3                                        |     sl = r3;
    0x0002c9ba str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0002c9bc ldr.w r2, [pc, 0x668]                             |     
    0x0002c9c0 ldr r0, [sp, 0xb0]                                |     r0 = var_b0h;
    0x0002c9c2 ldr.w r3, [pc, 0x668]                             |     r3 = *(0x2d02e);
    0x0002c9c6 add r2, pc                                        |     r2 = 0x599f2;
    0x0002c9c8 strd r1, r0, [sp, 0x10]                           |     __asm ("strd r1, r0, [sp, 0x10]");
    0x0002c9cc ldr r3, [r2, r3]                                  |     
    0x0002c9ce movs r2, 0                                        |     r2 = 0;
    0x0002c9d0 ldr.w r0, [sb]                                    |     r0 = *(sb);
    0x0002c9d4 mov r1, r2                                        |     r1 = r2;
    0x0002c9d6 ldr r3, [r3]                                      |     r3 = *(0x599f2);
    0x0002c9d8 str r3, [sp, 0x74]                                |     var_74h = r3;
    0x0002c9da mov.w r3, 0                                       |     r3 = 0;
    0x0002c9de blx 0x7cf4                                        |     r0 = fcn_00007cf4 ();
    0x0002c9e2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0002c9e4 bne 0x2cade                                       |         goto label_10;
                                                                 |     }
    0x0002c9e6 add r3, sp, 0x64                                  |     r3 += var_64h;
    0x0002c9e8 mov r4, r0                                        |     r4 = r0;
    0x0002c9ea str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0002c9ec mov r0, r3                                        |     r0 = r3;
    0x0002c9ee movs r2, 2                                        |     r2 = 2;
    0x0002c9f0 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0002c9f4 movs r1, 1                                        |     r1 = 1;
    0x0002c9f6 blx 0x8994                                        |     r0 = fcn_00008994 ();
    0x0002c9fa cmp r0, 2                                         |     
                                                                 |     if (r0 != 2) {
    0x0002c9fc bne 0x2cab6                                       |         goto label_11;
                                                                 |     }
    0x0002c9fe ldrh.w r6, [sp, 0x64]                             |     r6 = var_64h;
    0x0002ca02 rev16 r6, r6                                      |     __asm ("rev16 r6, r6");
    0x0002ca04 uxth r6, r6                                       |     r6 = (int16_t) r6;
    0x0002ca06 cmp r6, 1                                         |     
                                                                 |     if (r6 == 1) {
    0x0002ca08 beq 0x2ca50                                       |         goto label_12;
                                                                 |     }
                                                                 | label_0:
    0x0002ca0a ldr.w r0, [pc, 0x624]                             |     
    0x0002ca0e add r0, pc                                        |     r0 = 0x59a44;
    0x0002ca10 blx 0x813c                                        |     fcn_0000813c ();
    0x0002ca14 movs r3, 1                                        |     r3 = 1;
    0x0002ca16 mov r1, r0                                        |     r1 = r0;
    0x0002ca18 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0002ca1a mov r0, sl                                        |     r0 = sl;
    0x0002ca1c ldr.w r3, [pc, 0x614]                             |     r3 = sym.imp.g_array_new;
    0x0002ca20 movs r2, 4                                        |     r2 = 4;
    0x0002ca22 str r6, [sp]                                      |     *(sp) = r6;
    0x0002ca24 add r3, pc                                        |     r3 += pc;
    0x0002ca26 blx 0x8010                                        |     fcn_00008010 ();
                                                                 | label_1:
    0x0002ca2a ldr.w r2, [pc, 0x60c]                             |     
    0x0002ca2e ldr.w r3, [pc, 0x5fc]                             |     r3 = *(0x2d02e);
    0x0002ca32 add r2, pc                                        |     r2 = 0x59a70;
    0x0002ca34 ldr r3, [r2, r3]                                  |     r3 = *(0x59a70);
    0x0002ca36 ldr r2, [r3]                                      |     r2 = *(0x59a70);
    0x0002ca38 ldr r3, [sp, 0x74]                                |     r3 = var_74h;
    0x0002ca3a eors r2, r3                                       |     r2 ^= r3;
    0x0002ca3c mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0002ca40 bne.w 0x2d172                                     |         goto label_13;
                                                                 |     }
    0x0002ca44 mov r0, r4                                        |     r0 = r4;
    0x0002ca46 add sp, 0x7c                                      |     
    0x0002ca48 vpop {d8, d9}                                     |     __asm ("vpop {d8, d9}");
    0x0002ca4c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 |     do {
                                                                 | label_12:
    0x0002ca50 ldr.w r0, [sb, 0x10]                              |         r0 = *((sb + 0x10));
    0x0002ca54 blx 0x79f8                                        |         fcn_000079f8 ();
    0x0002ca58 ldr.w r2, [sb, 0x10]                              |         r2 = *((sb + 0x10));
    0x0002ca5c mov r1, r6                                        |         r1 = r6;
    0x0002ca5e ldr.w r3, [sb]                                    |         r3 = *(sb);
    0x0002ca62 mov r5, r0                                        |         r5 = r0;
    0x0002ca64 blx 0x8994                                        |         fcn_00008994 ();
    0x0002ca68 ldr.w r2, [sb, 0x10]                              |         r2 = *((sb + 0x10));
    0x0002ca6c cmp r2, r0                                        |         
                                                                 |         if (r2 != r0) {
    0x0002ca6e bne 0x2cb24                                       |             goto label_14;
                                                                 |         }
    0x0002ca70 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0002ca72 mov r1, r6                                        |         r1 = r6;
    0x0002ca74 mov r0, r5                                        |         r0 = r5;
    0x0002ca76 blx 0x8258                                        |         fcn_00008258 ();
    0x0002ca7a ldr.w r3, [sb, 0x10]                              |         r3 = *((sb + 0x10));
    0x0002ca7e cmp r0, r3                                        |         
                                                                 |         if (r0 == r3) {
    0x0002ca80 beq 0x2cb48                                       |             goto label_15;
                                                                 |         }
    0x0002ca82 ldr.w r0, [pc, 0x5b8]                             |         r0 = sym.imp.gst_structure_get_name;
    0x0002ca86 movs r7, 0                                        |         r7 = 0;
    0x0002ca88 mov r8, r7                                        |         r8 = r7;
    0x0002ca8a mov r6, r7                                        |         r6 = r7;
    0x0002ca8c add r0, pc                                        |         r0 += pc;
    0x0002ca8e blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002ca92 mov r4, r0                                        |         r4 = r0;
    0x0002ca94 blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002ca98 ldr r0, [r0]                                      |         r0 = *(r0);
    0x0002ca9a blx 0x8760                                        |         fcn_00008760 ();
    0x0002ca9e ldr.w r3, [pc, 0x5a0]                             |         
    0x0002caa2 mov r2, r0                                        |         r2 = r0;
    0x0002caa4 mov r1, r4                                        |         r1 = r4;
    0x0002caa6 str r2, [sp]                                      |         *(sp) = r2;
    0x0002caa8 mov r0, sl                                        |         r0 = sl;
    0x0002caaa movs r2, 2                                        |         r2 = 2;
    0x0002caac add r3, pc                                        |         r3 = 0x59af2;
    0x0002caae mov r4, r7                                        |         r4 = r7;
    0x0002cab0 blx 0x8010                                        |         fcn_00008010 ();
    0x0002cab4 b 0x2cb02                                         |         goto label_5;
                                                                 | label_11:
    0x0002cab6 ldr.w r0, [pc, 0x58c]                             |         
    0x0002caba add r0, pc                                        |         r0 = 0x59b04;
    0x0002cabc blx 0x813c                                        |         fcn_0000813c ();
    0x0002cac0 ldr.w r3, [pc, 0x584]                             |         
    0x0002cac4 mov r1, r0                                        |         r1 = r0;
    0x0002cac6 movs r2, 2                                        |         r2 = 2;
    0x0002cac8 mov r0, sl                                        |         r0 = sl;
    0x0002caca add r3, pc                                        |         r3 = 0x59b16;
    0x0002cacc blx 0x8010                                        |         fcn_00008010 ();
    0x0002cad0 ldrh.w r6, [sp, 0x64]                             |         r6 = var_64h;
    0x0002cad4 rev16 r6, r6                                      |         __asm ("rev16 r6, r6");
    0x0002cad6 uxth r6, r6                                       |         r6 = (int16_t) r6;
    0x0002cad8 cmp r6, 1                                         |         
    0x0002cada beq 0x2ca50                                       |         
                                                                 |     } while (r6 == 1);
    0x0002cadc b 0x2ca0a                                         |     goto label_0;
                                                                 | label_10:
    0x0002cade ldr.w r0, [pc, 0x56c]                             |     
    0x0002cae2 movs r7, 0                                        |     r7 = 0;
    0x0002cae4 add r0, pc                                        |     r0 = 0x59b36;
    0x0002cae6 blx 0x813c                                        |     fcn_0000813c ();
    0x0002caea ldr.w r3, [pc, 0x564]                             |     
    0x0002caee mov r1, r0                                        |     r1 = r0;
    0x0002caf0 movs r2, 2                                        |     r2 = 2;
    0x0002caf2 add r3, pc                                        |     r3 = 0x59b48;
                                                                 | label_2:
    0x0002caf4 mov r8, r7                                        |     r8 = r7;
    0x0002caf6 mov r4, r7                                        |     r4 = r7;
    0x0002caf8 mov r5, r7                                        |     r5 = r7;
    0x0002cafa mov r6, r7                                        |     r6 = r7;
    0x0002cafc mov r0, sl                                        |     r0 = sl;
    0x0002cafe blx 0x8010                                        |     fcn_00008010 ();
                                                                 |     do {
                                                                 | label_5:
    0x0002cb02 mov r0, r7                                        |         r0 = r7;
    0x0002cb04 blx 0x7424                                        |         fcn_00007424 ();
    0x0002cb08 mov r0, r4                                        |         r0 = r4;
    0x0002cb0a movs r4, 0                                        |         r4 = 0;
    0x0002cb0c blx 0x7424                                        |         fcn_00007424 ();
    0x0002cb10 mov r0, r5                                        |         r0 = r5;
    0x0002cb12 blx 0x7424                                        |         fcn_00007424 ();
    0x0002cb16 mov r0, r8                                        |         r0 = r8;
    0x0002cb18 blx 0x7424                                        |         fcn_00007424 ();
    0x0002cb1c mov r0, r6                                        |         r0 = r6;
    0x0002cb1e blx 0x7424                                        |         fcn_00007424 ();
    0x0002cb22 b 0x2ca2a                                         |         goto label_1;
                                                                 | label_14:
    0x0002cb24 ldr.w r0, [pc, 0x52c]                             |         
    0x0002cb28 movs r7, 0                                        |         r7 = 0;
    0x0002cb2a mov r8, r7                                        |         r8 = r7;
    0x0002cb2c mov r4, r7                                        |         r4 = r7;
    0x0002cb2e mov r6, r7                                        |         r6 = r7;
    0x0002cb30 add r0, pc                                        |         r0 = 0x59b88;
    0x0002cb32 blx 0x813c                                        |         fcn_0000813c ();
    0x0002cb36 ldr.w r3, [pc, 0x520]                             |         
    0x0002cb3a mov r1, r0                                        |         r1 = r0;
    0x0002cb3c movs r2, 2                                        |         r2 = 2;
    0x0002cb3e mov r0, sl                                        |         r0 = sl;
    0x0002cb40 add r3, pc                                        |         r3 = 0x59b9e;
    0x0002cb42 blx 0x8010                                        |         fcn_00008010 ();
    0x0002cb46 b 0x2cb02                                         |         
                                                                 |     } while (1);
                                                                 | label_15:
    0x0002cb48 mov r0, r5                                        |     r0 = r5;
    0x0002cb4a blx 0x7424                                        |     fcn_00007424 ();
    0x0002cb4e ldr.w r3, [sb, 0xc]                               |     r3 = *((sb + 0xc));
    0x0002cb52 add.w r8, r3, 8                                   |     r8 = r3 + 8;
    0x0002cb56 ldr.w r3, [sb, 0x14]                              |     r3 = *((sb + 0x14));
    0x0002cb5a cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0002cb5c ble.w 0x2cd70                                     |         goto label_16;
                                                                 |     }
    0x0002cb60 movs r6, 0                                        |     r6 = 0;
    0x0002cb62 vmov.i32 d8, 0                                    |     __asm ("vmov.i32 d8, 0");
    0x0002cb66 mov r7, r6                                        |     r7 = r6;
    0x0002cb68 mov r5, r6                                        |     r5 = r6;
    0x0002cb6a add.w fp, sp, 0x58                                |     
    0x0002cb6e str r4, [sp, 0x1c]                                |     var_1ch_2 = r4;
                                                                 | label_4:
    0x0002cb70 ldr.w r4, [sb, 0x18]                              |     r4 = *((sb + 0x18));
    0x0002cb74 movs r3, 0                                        |     r3 = 0;
    0x0002cb76 mov r1, r3                                        |     r1 = r3;
    0x0002cb78 add r4, r7                                        |     r4 += r7;
    0x0002cb7a ldrd r0, r2, [r4, 4]                              |     __asm ("ldrd r0, r2, [r4, 4]");
    0x0002cb7e str r3, [sp, 4]                                   |     var_4h = r3;
    0x0002cb80 str r2, [sp]                                      |     *(sp) = r2;
    0x0002cb82 ldr.w r2, [sb, 4]                                 |     r2 = *((sb + 4));
    0x0002cb86 blx 0x7ee0                                        |     fcn_00007ee0 ();
    0x0002cb8a movs r2, 0                                        |     r2 = 0;
    0x0002cb8c cmp r5, r0                                        |     
    0x0002cb8e it lo                                             |     
                                                                 |     if (r5 >= r0) {
    0x0002cb90 movlo r5, r0                                      |         r5 = r0;
                                                                 |     }
    0x0002cb92 mov r3, fp                                        |     r3 = fp;
    0x0002cb94 mov r1, r2                                        |     r1 = r2;
    0x0002cb96 add.w r0, r4, 0xa8                                |     r0 = r4 + 0xa8;
    0x0002cb9a vstr d8, [sp, 0x58]                               |     __asm ("vstr d8, [sp, 0x58]");
    0x0002cb9e bl 0x27060                                        |     fcn_00027060 (r0, r1, r2, r3);
    0x0002cba2 orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002cba4 beq 0x2cbd0                                       |         goto label_3;
                                                                 |     }
    0x0002cba6 ldr.w r3, [r4, 0xec]                              |     r3 = *((r4 + 0xec));
                                                                 |     if (r3 != 0) {
    0x0002cbaa cbz r3, 0x2cbbe                                   |         
    0x0002cbac movs r2, 0                                        |         r2 = 0;
    0x0002cbae mov r3, fp                                        |         r3 = fp;
    0x0002cbb0 mov r1, r2                                        |         r1 = r2;
    0x0002cbb2 add.w r0, r4, 0xd0                                |         r0 = r4 + 0xd0;
    0x0002cbb6 bl 0x27580                                        |         fcn_00027580 (r0, r1, r2, r3);
    0x0002cbba orrs r0, r1                                       |         r0 |= r1;
                                                                 |         if (r0 == r1) {
    0x0002cbbc beq 0x2cbd0                                       |             goto label_3;
                                                                 |         }
                                                                 |     }
    0x0002cbbe movs r2, 0                                        |     r2 = 0;
    0x0002cbc0 mov r3, fp                                        |     r3 = fp;
    0x0002cbc2 mov r1, r2                                        |     r1 = r2;
    0x0002cbc4 add.w r0, r4, 0xf8                                |     r0 = r4 + 0xf8;
    0x0002cbc8 bl 0x271fc                                        |     fcn_000271fc (r0, r1, r2, r3);
    0x0002cbcc orrs r0, r1                                       |     r0 |= r1;
    0x0002cbce bne 0x2cbe8                                       |     
                                                                 |     while (r0 == r1) {
                                                                 | label_3:
    0x0002cbd0 ldr.w r0, [pc, 0x488]                             |         
    0x0002cbd4 movs r7, 0                                        |         r7 = 0;
    0x0002cbd6 add r0, pc                                        |         r0 = 0x59c36;
    0x0002cbd8 blx 0x813c                                        |         fcn_0000813c ();
    0x0002cbdc ldr.w r3, [pc, 0x480]                             |         r3 = fcn.0000770c;
    0x0002cbe0 mov r1, r0                                        |         r1 = r0;
    0x0002cbe2 movs r2, 1                                        |         r2 = 1;
    0x0002cbe4 add r3, pc                                        |         r3 += pc;
    0x0002cbe6 b 0x2caf4                                         |         goto label_2;
    0x0002cbe8 movs r2, 0                                        |         r2 = 0;
    0x0002cbea mov r3, fp                                        |         r3 = fp;
    0x0002cbec mov r1, r2                                        |         r1 = r2;
    0x0002cbee add.w r0, r4, 0x120                               |         r0 = r4 + 0x120;
    0x0002cbf2 bl 0x27130                                        |         fcn_00027130 (r0, r1, r2, r3);
    0x0002cbf6 orrs r0, r1                                       |         r0 |= r1;
    0x0002cbf8 beq 0x2cbd0                                       |         
                                                                 |     }
    0x0002cbfa ldr.w r0, [r4, 0x150]                             |     r0 = *((r4 + 0x150));
                                                                 |     if (r0 == 0) {
    0x0002cbfe cbz r0, 0x2cc0e                                   |         goto label_17;
                                                                 |     }
    0x0002cc00 movs r2, 0                                        |     r2 = 0;
    0x0002cc02 mov r3, fp                                        |     r3 = fp;
    0x0002cc04 mov r1, r2                                        |     r1 = r2;
    0x0002cc06 bl 0x27324                                        |     fcn_00027324 (r0, r1, r2, r3);
    0x0002cc0a orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002cc0c beq 0x2cbd0                                       |         goto label_3;
                                                                 |     }
                                                                 | label_17:
    0x0002cc0e movs r2, 0                                        |     r2 = 0;
    0x0002cc10 mov r3, fp                                        |     r3 = fp;
    0x0002cc12 mov r1, r2                                        |     r1 = r2;
    0x0002cc14 add.w r0, r4, 0x158                               |     r0 = r4 + 0x158;
    0x0002cc18 bl 0x27494                                        |     fcn_00027494 (r0, r1, r2, r3);
    0x0002cc1c orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002cc1e beq 0x2cbd0                                       |         goto label_3;
                                                                 |     }
    0x0002cc20 ldr r3, [sp, 0x58]                                |     r3 = var_58h;
    0x0002cc22 ldr r2, [r4, 0x28]                                |     r2 = *((r4 + 0x28));
    0x0002cc24 adds r3, 8                                        |     r3 += 8;
    0x0002cc26 add r3, r2                                        |     r3 += r2;
    0x0002cc28 ldr r2, [r4, 0x68]                                |     r2 = *((r4 + 0x68));
    0x0002cc2a add r3, r2                                        |     r3 += r2;
    0x0002cc2c ldr r2, [r4, 0x58]                                |     r2 = *((r4 + 0x58));
    0x0002cc2e subs r3, r3, r2                                   |     r3 -= r2;
                                                                 |     if (r3 == r3) {
    0x0002cc30 beq 0x2cbd0                                       |         goto label_3;
                                                                 |     }
    0x0002cc32 add r8, r3                                        |     r8 += r3;
    0x0002cc34 ldr.w r3, [sb, 0x14]                              |     r3 = *((sb + 0x14));
    0x0002cc38 adds r6, 1                                        |     r6++;
    0x0002cc3a add.w r7, r7, 0x180                               |     r7 += 0x180;
    0x0002cc3e cmp r3, r6                                        |     
                                                                 |     if (r3 > r6) {
    0x0002cc40 bgt 0x2cb70                                       |         goto label_4;
                                                                 |     }
    0x0002cc42 cmp r3, 0                                         |     
    0x0002cc44 ldr r4, [sp, 0x1c]                                |     r4 = var_1ch_2;
    0x0002cc46 str r5, [sp, 0x20]                                |     var_20h_2 = r5;
                                                                 |     if (r3 <= 0) {
    0x0002cc48 ble 0x2cc7c                                       |         goto label_18;
                                                                 |     }
    0x0002cc4a ldrd r7, r6, [sp, 0xc]                            |     __asm ("ldrd r7, r6, [var_ch]");
    0x0002cc4e movs r5, 0                                        |     r5 = 0;
                                                                 |     do {
    0x0002cc50 ldr.w r0, [sb, 0x18]                              |         r0 = *((sb + 0x18));
    0x0002cc54 adds r4, 1                                        |         r4++;
    0x0002cc56 add.w fp, r0, r5                                  |         
    0x0002cc5a mov r0, r7                                        |         r0 = r7;
    0x0002cc5c blx 0x7f8c                                        |         fcn_00007f8c ();
    0x0002cc60 ldr r3, [r6, 0x10]                                |         r3 = *((r6 + 0x10));
    0x0002cc62 mov r1, r0                                        |         r1 = r0;
    0x0002cc64 add.w r0, fp, 0x158                               |         r0 += arg_158h;
    0x0002cc68 add.w r5, r5, 0x180                               |         r5 += 0x180;
    0x0002cc6c add r3, r8                                        |         r3 += r8;
    0x0002cc6e add r1, r3                                        |         r1 += r3;
    0x0002cc70 bl 0x28ab4                                        |         fcn_00028ab4 (r0, r1);
    0x0002cc74 ldr.w r3, [sb, 0x14]                              |         r3 = *((sb + 0x14));
    0x0002cc78 cmp r3, r4                                        |         
    0x0002cc7a bgt 0x2cc50                                       |         
                                                                 |     } while (r3 > r4);
                                                                 |     do {
                                                                 | label_18:
    0x0002cc7c rev.w r3, r8                                      |         r8 = SWAP32 (r3);
    0x0002cc80 ldr r0, [sp, 0x18]                                |         r0 = var_18h;
    0x0002cc82 str r3, [sp, 0x64]                                |         var_64h = r3;
    0x0002cc84 movw r3, 0x6f6d                                   |         
    0x0002cc88 movt r3, 0x766f                                   |         r3 = 0x766f6f6d;
    0x0002cc8c movs r2, 8                                        |         r2 = 8;
    0x0002cc8e str r3, [sp, 0x68]                                |         var_68h = r3;
    0x0002cc90 movs r1, 1                                        |         r1 = 1;
    0x0002cc92 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0002cc94 blx 0x8258                                        |         r0 = fcn_00008258 ();
    0x0002cc98 cmp r0, 8                                         |         
                                                                 |         if (r0 != 8) {
    0x0002cc9a beq 0x2ccce                                       |             
    0x0002cc9c ldr r0, [pc, 0x3c4]                               |             
    0x0002cc9e movs r7, 0                                        |             r7 = 0;
    0x0002cca0 add r0, pc                                        |             
    0x0002cca2 blx 0x813c                                        |             r0 = fcn_0000813c ();
    0x0002cca6 mov r4, r0                                        |             r4 = r0;
    0x0002cca8 blx 0x8b48                                        |             r0 = g_queue_pop_head ();
    0x0002ccac ldr r0, [r0]                                      |             r0 = *(0x59d08);
    0x0002ccae blx 0x8760                                        |             fcn_00008760 ();
    0x0002ccb2 ldr r3, [pc, 0x3b4]                               |             
    0x0002ccb4 mov r2, r0                                        |             r2 = r0;
    0x0002ccb6 add r3, pc                                        |             r3 = 0x59d24;
                                                                 | label_8:
    0x0002ccb8 mov r1, r4                                        |             r1 = r4;
    0x0002ccba str r2, [sp]                                      |             *(sp) = r2;
    0x0002ccbc mov r0, sl                                        |             r0 = sl;
    0x0002ccbe movs r2, 2                                        |             r2 = 2;
    0x0002ccc0 mov r8, r7                                        |             r8 = r7;
    0x0002ccc2 mov r4, r7                                        |             r4 = r7;
    0x0002ccc4 mov r5, r7                                        |             r5 = r7;
    0x0002ccc6 mov r6, r7                                        |             r6 = r7;
    0x0002ccc8 blx 0x8010                                        |             fcn_00008010 ();
    0x0002cccc b 0x2cb02                                         |             goto label_5;
                                                                 |         }
    0x0002ccce ldr.w r0, [sb, 0xc]                               |         r0 = *((sb + 0xc));
    0x0002ccd2 blx 0x79f8                                        |         fcn_000079f8 ();
    0x0002ccd6 ldr.w r1, [sb, 8]                                 |         r1 = *((sb + 8));
    0x0002ccda mov r4, r0                                        |         r4 = r0;
    0x0002ccdc movs r2, 0                                        |         r2 = 0;
    0x0002ccde ldr.w r0, [sb]                                    |         r0 = *(sb);
    0x0002cce2 blx 0x7cf4                                        |         fcn_00007cf4 ();
    0x0002cce6 str r0, [sp, 0x1c]                                |         var_1ch_2 = r0;
                                                                 |         if (r0 == 0) {
    0x0002cce8 cbnz r0, 0x2cd02                                  |             
    0x0002ccea ldr.w r2, [sb, 0xc]                               |             r2 = *((sb + 0xc));
    0x0002ccee movs r1, 1                                        |             r1 = 1;
    0x0002ccf0 ldr.w r3, [sb]                                    |             r3 = *(sb);
    0x0002ccf4 mov r0, r4                                        |             r0 = r4;
    0x0002ccf6 blx 0x8994                                        |             fcn_00008994 ();
    0x0002ccfa ldr.w r2, [sb, 0xc]                               |             r2 = *((sb + 0xc));
    0x0002ccfe cmp r2, r0                                        |             
                                                                 |             if (r2 == r0) {
    0x0002cd00 beq 0x2cd0c                                       |                 goto label_19;
                                                                 |             }
                                                                 |         }
    0x0002cd02 movs r7, 0                                        |         r7 = 0;
    0x0002cd04 mov r8, r7                                        |         r8 = r7;
    0x0002cd06 mov r5, r7                                        |         r5 = r7;
    0x0002cd08 mov r6, r7                                        |         r6 = r7;
    0x0002cd0a b 0x2cb02                                         |         goto label_5;
                                                                 | label_19:
    0x0002cd0c ldr r0, [sp, 0x20]                                |         r0 = var_20h_2;
    0x0002cd0e ldr.w r3, [sb, 4]                                 |         r3 = *((sb + 4));
    0x0002cd12 strb r0, [r4, 0x1b]                               |         *((r4 + 0x1b)) = r0;
    0x0002cd14 lsrs r1, r0, 0x18                                 |         r1 = r0 >> 0x18;
    0x0002cd16 strb r3, [r4, 0x17]                               |         *((r4 + 0x17)) = r3;
    0x0002cd18 strb r1, [r4, 0x18]                               |         *((r4 + 0x18)) = r1;
    0x0002cd1a lsrs r1, r3, 0x18                                 |         r1 = r3 >> 0x18;
    0x0002cd1c strb r1, [r4, 0x14]                               |         *((r4 + 0x14)) = r1;
    0x0002cd1e lsrs r1, r3, 0x10                                 |         r1 = r3 >> 0x10;
    0x0002cd20 lsrs r3, r3, 8                                    |         r3 >>= 8;
    0x0002cd22 strb r1, [r4, 0x15]                               |         *((r4 + 0x15)) = r1;
    0x0002cd24 movs r1, 1                                        |         r1 = 1;
    0x0002cd26 strb r3, [r4, 0x16]                               |         *((r4 + 0x16)) = r3;
    0x0002cd28 lsrs r3, r0, 0x10                                 |         r3 = r0 >> 0x10;
    0x0002cd2a strb r3, [r4, 0x19]                               |         *((r4 + 0x19)) = r3;
    0x0002cd2c lsrs r3, r0, 8                                    |         r3 = r0 >> 8;
    0x0002cd2e mov r0, r4                                        |         r0 = r4;
    0x0002cd30 strb r3, [r4, 0x1a]                               |         *((r4 + 0x1a)) = r3;
    0x0002cd32 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0002cd34 blx 0x8258                                        |         fcn_00008258 ();
    0x0002cd38 ldr.w r3, [sb, 0xc]                               |         r3 = *((sb + 0xc));
    0x0002cd3c cmp r0, r3                                        |         
                                                                 |         if (r0 == r3) {
    0x0002cd3e beq 0x2cd76                                       |             goto label_20;
                                                                 |         }
    0x0002cd40 ldr r0, [pc, 0x328]                               |         
    0x0002cd42 ldr r7, [sp, 0x1c]                                |         r7 = var_1ch_2;
    0x0002cd44 add r0, pc                                        |         
    0x0002cd46 blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002cd4a mov r5, r0                                        |         r5 = r0;
    0x0002cd4c mov r8, r7                                        |         r8 = r7;
    0x0002cd4e blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002cd52 ldr r0, [r0]                                      |         r0 = *(0x59db4);
    0x0002cd54 mov r6, r7                                        |         r6 = r7;
    0x0002cd56 blx 0x8760                                        |         r0 = fcn_00008760 ();
    0x0002cd5a mov r3, r0                                        |         r3 = r0;
    0x0002cd5c mov r1, r5                                        |         r1 = r5;
    0x0002cd5e str r3, [sp]                                      |         *(sp) = r3;
    0x0002cd60 mov r0, sl                                        |         r0 = sl;
    0x0002cd62 ldr r3, [pc, 0x30c]                               |         
    0x0002cd64 movs r2, 2                                        |         r2 = 2;
    0x0002cd66 mov r5, r7                                        |         r5 = r7;
    0x0002cd68 add r3, pc                                        |         r3 = 0x59dde;
    0x0002cd6a blx 0x8010                                        |         fcn_00008010 ();
    0x0002cd6e b 0x2cb02                                         |         goto label_5;
                                                                 | label_16:
    0x0002cd70 movs r3, 0                                        |         r3 = 0;
    0x0002cd72 str r3, [sp, 0x20]                                |         var_20h_2 = r3;
    0x0002cd74 b 0x2cc7c                                         |         
                                                                 |     } while (1);
                                                                 | label_20:
    0x0002cd76 mov r0, r4                                        |     r0 = r4;
    0x0002cd78 blx 0x7424                                        |     fcn_00007424 ();
    0x0002cd7c ldr.w r3, [sb, 0x14]                              |     r3 = *((sb + 0x14));
    0x0002cd80 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0002cd82 ble.w 0x2d09e                                     |         goto label_21;
                                                                 |     }
    0x0002cd86 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch_2;
    0x0002cd88 add.w fp, sp, 0x58                                |     
    0x0002cd8c vldr d8, [pc, 0x290]                              |     __asm ("vldr d8, aav.0x000000ff");
    0x0002cd90 mov r7, fp                                        |     r7 = fp;
    0x0002cd92 vmov.i32 d9, 0                                    |     __asm ("vmov.i32 d9, 0");
    0x0002cd96 str r3, [sp, 0x2c]                                |     var_2ch_2 = r3;
    0x0002cd98 add r3, sp, 0x50                                  |     r3 += var_50h;
    0x0002cd9a str r3, [sp, 0x24]                                |     var_24h_2 = r3;
    0x0002cd9c add r3, sp, 0x4c                                  |     r3 += var_4ch_2;
    0x0002cd9e str r3, [sp, 0x20]                                |     var_20h_2 = r3;
    0x0002cda0 str.w sl, [sp, 0x44]                              |     __asm ("str.w sl, [var_44h]");
                                                                 | label_7:
    0x0002cda4 ldr.w r4, [sb, 0x18]                              |     r4 = *((sb + 0x18));
    0x0002cda8 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch_2;
    0x0002cdaa add r4, r3                                        |     r4 += r3;
    0x0002cdac movs r3, 0                                        |     r3 = 0;
    0x0002cdae ldrd r0, r2, [r4, 4]                              |     __asm ("ldrd r0, r2, [r4, 4]");
    0x0002cdb2 mov r1, r3                                        |     r1 = r3;
    0x0002cdb4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x0002cdb6 str r2, [sp]                                      |     *(sp) = r2;
    0x0002cdb8 ldr.w r2, [sb, 4]                                 |     r2 = *((sb + 4));
    0x0002cdbc blx 0x7ee0                                        |     fcn_00007ee0 ();
    0x0002cdc0 str r0, [sp, 0x38]                                |     var_38h_2 = r0;
    0x0002cdc2 mov.w r0, 0x100000                                |     r0 = 0x100000;
    0x0002cdc6 vstr d8, [sp, 0x50]                               |     __asm ("vstr d8, [sp, 0x50]");
    0x0002cdca blx 0x866c                                        |     fcn_0000866c ();
    0x0002cdce ldrd r1, r2, [sp, 0x20]                           |     __asm ("ldrd r1, r2, [var_20h_2]");
    0x0002cdd2 mov r3, r7                                        |     r3 = r7;
    0x0002cdd4 str r0, [sp, 0x4c]                                |     var_4ch_2 = r0;
    0x0002cdd6 add.w r0, r4, 0xa8                                |     r0 = r4 + 0xa8;
    0x0002cdda vstr d9, [sp, 0x58]                               |     __asm ("vstr d9, [sp, 0x58]");
    0x0002cdde bl 0x27060                                        |     fcn_00027060 (r0, r1, r2, r3);
    0x0002cde2 orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002cde4 beq.w 0x2cfda                                     |         goto label_22;
                                                                 |     }
    0x0002cde8 ldr.w r3, [r4, 0xec]                              |     r3 = *((r4 + 0xec));
                                                                 |     if (r3 != 0) {
    0x0002cdec cbz r3, 0x2ce02                                   |         
    0x0002cdee ldrd r1, r2, [sp, 0x20]                           |         __asm ("ldrd r1, r2, [var_20h_2]");
    0x0002cdf2 mov r3, r7                                        |         r3 = r7;
    0x0002cdf4 add.w r0, r4, 0xd0                                |         r0 = r4 + 0xd0;
    0x0002cdf8 bl 0x27580                                        |         fcn_00027580 (r0, r1, r2, r3);
    0x0002cdfc orrs r0, r1                                       |         r0 |= r1;
                                                                 |         if (r0 == r1) {
    0x0002cdfe beq.w 0x2cfda                                     |             goto label_22;
                                                                 |         }
                                                                 |     }
    0x0002ce02 ldrd r1, r2, [sp, 0x20]                           |     __asm ("ldrd r1, r2, [var_20h_2]");
    0x0002ce06 mov r3, r7                                        |     r3 = r7;
    0x0002ce08 add.w r0, r4, 0xf8                                |     r0 = r4 + 0xf8;
    0x0002ce0c bl 0x271fc                                        |     fcn_000271fc (r0, r1, r2, r3);
    0x0002ce10 orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002ce12 beq.w 0x2cfda                                     |         goto label_22;
                                                                 |     }
    0x0002ce16 ldrd r1, r2, [sp, 0x20]                           |     __asm ("ldrd r1, r2, [var_20h_2]");
    0x0002ce1a mov r3, r7                                        |     r3 = r7;
    0x0002ce1c add.w r0, r4, 0x120                               |     r0 = r4 + 0x120;
    0x0002ce20 bl 0x27130                                        |     fcn_00027130 (r0, r1, r2, r3);
    0x0002ce24 orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002ce26 beq.w 0x2cfda                                     |         goto label_22;
                                                                 |     }
    0x0002ce2a ldr.w r0, [r4, 0x150]                             |     r0 = *((r4 + 0x150));
                                                                 |     if (r0 != 0) {
    0x0002ce2e cbz r0, 0x2ce40                                   |         
    0x0002ce30 ldrd r1, r2, [sp, 0x20]                           |         __asm ("ldrd r1, r2, [var_20h_2]");
    0x0002ce34 mov r3, r7                                        |         r3 = r7;
    0x0002ce36 bl 0x27324                                        |         fcn_00027324 (r0, r1, r2, r3);
    0x0002ce3a orrs r0, r1                                       |         r0 |= r1;
                                                                 |         if (r0 == r1) {
    0x0002ce3c beq.w 0x2cfda                                     |             goto label_22;
                                                                 |         }
                                                                 |     }
    0x0002ce40 ldrd r1, r2, [sp, 0x20]                           |     __asm ("ldrd r1, r2, [var_20h_2]");
    0x0002ce44 mov r3, r7                                        |     r3 = r7;
    0x0002ce46 add.w r0, r4, 0x158                               |     r0 = r4 + 0x158;
    0x0002ce4a bl 0x27494                                        |     fcn_00027494 (r0, r1, r2, r3);
    0x0002ce4e orrs r0, r1                                       |     r0 |= r1;
                                                                 |     if (r0 == r1) {
    0x0002ce50 beq.w 0x2cfda                                     |         goto label_22;
                                                                 |     }
    0x0002ce54 ldr r2, [sp, 0x58]                                |     r2 = var_58h;
    0x0002ce56 ldr r3, [sp, 0x4c]                                |     r3 = var_4ch_2;
    0x0002ce58 str r2, [sp, 0x34]                                |     var_34h_2 = r2;
    0x0002ce5a ldr r2, [sp, 0x5c]                                |     r2 = var_5ch;
    0x0002ce5c str r3, [sp, 0x30]                                |     var_30h_2 = r3;
    0x0002ce5e str r2, [sp, 0x40]                                |     var_40h_2 = r2;
    0x0002ce60 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0002ce62 beq.w 0x2d1f2                                     |         goto label_23;
                                                                 |     }
    0x0002ce66 ldr r6, [sp, 0x34]                                |     r6 = var_34h_2;
    0x0002ce68 ldr r0, [r4, 0x68]                                |     r0 = *((r4 + 0x68));
    0x0002ce6a ldr r5, [r4, 0x58]                                |     r5 = *((r4 + 0x58));
    0x0002ce6c ldr r1, [r4, 0x48]                                |     r1 = *((r4 + 0x48));
    0x0002ce6e adds r6, 8                                        |     r6 += 8;
    0x0002ce70 ldr r2, [r4, 0x38]                                |     r2 = *((r4 + 0x38));
    0x0002ce72 add r6, r0                                        |     r6 += r0;
    0x0002ce74 ldr r3, [r4, 0x28]                                |     r3 = *((r4 + 0x28));
    0x0002ce76 subs r5, r6, r5                                   |     r5 = r6 - r5;
    0x0002ce78 add.w sl, r5, r1                                  |     sl = r5 + r1;
    0x0002ce7c ldr.w r0, [sb]                                    |     r0 = *(sb);
    0x0002ce80 add.w fp, r5, r2                                  |     
    0x0002ce84 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0002ce86 movs r2, 0                                        |     r2 = 0;
    0x0002ce88 add r5, r3                                        |     r5 += r3;
    0x0002ce8a blx 0x7cf4                                        |     fcn_00007cf4 ();
    0x0002ce8e str r0, [sp, 0x28]                                |     var_28h_2 = r0;
    0x0002ce90 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0002ce92 bne.w 0x2d1b2                                     |         goto label_24;
                                                                 |     }
    0x0002ce96 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x0002ce98 ldr r2, [r4, 0x60]                                |     r2 = *((r4 + 0x60));
    0x0002ce9a subs r2, r2, r3                                   |     r2 -= r3;
    0x0002ce9c mov r0, r2                                        |     r0 = r2;
    0x0002ce9e str r2, [sp, 0x3c]                                |     var_3ch_2 = r2;
    0x0002cea0 blx 0x79f8                                        |     fcn_000079f8 ();
    0x0002cea4 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch_2;
    0x0002cea6 movs r1, 1                                        |     r1 = 1;
    0x0002cea8 ldr.w r3, [sb]                                    |     r3 = *(sb);
    0x0002ceac mov r8, r0                                        |     r8 = r0;
    0x0002ceae blx 0x8994                                        |     fcn_00008994 ();
    0x0002ceb2 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch_2;
    0x0002ceb4 cmp r2, r0                                        |     
                                                                 |     if (r2 != r0) {
    0x0002ceb6 bne.w 0x2d1a8                                     |         goto label_25;
                                                                 |     }
    0x0002ceba lsrs r3, r5, 0x18                                 |     r3 = r5 >> 0x18;
    0x0002cebc strb.w r5, [r8, 3]                                |     *((r8 + 3)) = r5;
    0x0002cec0 ldr r0, [sp, 0x38]                                |     r0 = var_38h_2;
    0x0002cec2 strb.w r3, [r8]                                   |     *(r8) = r3;
    0x0002cec6 lsrs r3, r5, 0x10                                 |     r3 = r5 >> 0x10;
    0x0002cec8 lsrs r5, r5, 8                                    |     r5 >>= 8;
    0x0002ceca strb.w r3, [r8, 1]                                |     *((r8 + 1)) = r3;
    0x0002cece strb.w r5, [r8, 2]                                |     *((r8 + 2)) = r5;
    0x0002ced2 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0002ced4 ldr r3, [r4, 0x30]                                |     r3 = *((r4 + 0x30));
    0x0002ced6 subs r3, r3, r1                                   |     r3 -= r1;
    0x0002ced8 lsr.w r1, fp, 0x18                                |     r1 = fp >> 0x18;
    0x0002cedc strb.w r1, [r8, r3]                               |     *((r8 + r3)) = r1;
    0x0002cee0 add r3, r8                                        |     r3 += r8;
    0x0002cee2 strb.w fp, [r3, 3]                                |     *((r3 + 3)) = fp;
    0x0002cee6 lsr.w r1, fp, 0x10                                |     r1 = fp >> 0x10;
    0x0002ceea lsr.w fp, fp, 8                                   |     
    0x0002ceee strb r1, [r3, 1]                                  |     *((r3 + 1)) = r1;
    0x0002cef0 strb.w fp, [r3, 2]                                |     *((r3 + 2)) = fp;
    0x0002cef4 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0002cef6 ldr r3, [r4, 0x40]                                |     r3 = *((r4 + 0x40));
    0x0002cef8 subs r3, r3, r1                                   |     r3 -= r1;
    0x0002cefa lsr.w r1, sl, 0x18                                |     r1 = sl >> 0x18;
    0x0002cefe strb.w r1, [r8, r3]                               |     *((r8 + r3)) = r1;
    0x0002cf02 add r3, r8                                        |     r3 += r8;
    0x0002cf04 strb.w sl, [r3, 3]                                |     *((r3 + 3)) = sl;
    0x0002cf08 lsr.w r1, sl, 0x10                                |     r1 = sl >> 0x10;
    0x0002cf0c lsr.w sl, sl, 8                                   |     sl >>= 8;
    0x0002cf10 strb r1, [r3, 1]                                  |     *((r3 + 1)) = r1;
    0x0002cf12 strb.w sl, [r3, 2]                                |     *((r3 + 2)) = sl;
    0x0002cf16 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0002cf18 ldr r3, [r4, 0x50]                                |     r3 = *((r4 + 0x50));
    0x0002cf1a subs r3, r3, r1                                   |     r3 -= r1;
    0x0002cf1c lsrs r1, r6, 0x18                                 |     r1 = r6 >> 0x18;
    0x0002cf1e strb.w r1, [r8, r3]                               |     *((r8 + r3)) = r1;
    0x0002cf22 add r3, r8                                        |     r3 += r8;
    0x0002cf24 strb r6, [r3, 3]                                  |     *((r3 + 3)) = r6;
    0x0002cf26 lsrs r1, r6, 0x10                                 |     r1 = r6 >> 0x10;
    0x0002cf28 lsrs r6, r6, 8                                    |     r6 >>= 8;
    0x0002cf2a strb r1, [r3, 1]                                  |     *((r3 + 1)) = r1;
    0x0002cf2c strb r6, [r3, 2]                                  |     *((r3 + 2)) = r6;
    0x0002cf2e ldr r3, [r4, 0x18]                                |     r3 = *((r4 + 0x18));
    0x0002cf30 ldr r1, [r4, 0x10]                                |     r1 = *((r4 + 0x10));
    0x0002cf32 adds r3, 0x1c                                     |     r3 += 0x1c;
    0x0002cf34 subs r3, r3, r1                                   |     r3 -= r1;
    0x0002cf36 lsrs r1, r0, 0x18                                 |     r1 = r0 >> 0x18;
    0x0002cf38 strb.w r1, [r8, r3]                               |     *((r8 + r3)) = r1;
    0x0002cf3c lsrs r1, r0, 0x10                                 |     r1 = r0 >> 0x10;
    0x0002cf3e add r3, r8                                        |     r3 += r8;
    0x0002cf40 strb r1, [r3, 1]                                  |     *((r3 + 1)) = r1;
    0x0002cf42 lsrs r1, r0, 8                                    |     r1 = r0 >> 8;
    0x0002cf44 strb r0, [r3, 3]                                  |     *((r3 + 3)) = r0;
    0x0002cf46 strb r1, [r3, 2]                                  |     *((r3 + 2)) = r1;
    0x0002cf48 ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x0002cf4a ldr r3, [r4, 0x20]                                |     r3 = *((r4 + 0x20));
    0x0002cf4c ldr r0, [r4, 0x10]                                |     r0 = *((r4 + 0x10));
    0x0002cf4e adds r3, 0x18                                     |     r3 += 0x18;
    0x0002cf50 subs r3, r3, r0                                   |     r3 -= r0;
    0x0002cf52 lsrs r0, r1, 0x18                                 |     r0 = r1 >> 0x18;
    0x0002cf54 strb.w r0, [r8, r3]                               |     *((r8 + r3)) = r0;
    0x0002cf58 add r3, r8                                        |     r3 += r8;
    0x0002cf5a lsrs r0, r1, 0x10                                 |     r0 = r1 >> 0x10;
    0x0002cf5c strb r1, [r3, 3]                                  |     *((r3 + 3)) = r1;
    0x0002cf5e lsrs r1, r1, 8                                    |     r1 >>= 8;
    0x0002cf60 str r2, [sp, 0x38]                                |     var_38h_2 = r2;
    0x0002cf62 strb r0, [r3, 1]                                  |     *((r3 + 1)) = r0;
    0x0002cf64 mov r0, r8                                        |     r0 = r8;
    0x0002cf66 strb r1, [r3, 2]                                  |     *((r3 + 2)) = r1;
    0x0002cf68 movs r1, 1                                        |     r1 = 1;
    0x0002cf6a ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0002cf6c blx 0x8258                                        |     fcn_00008258 ();
    0x0002cf70 ldr r2, [sp, 0x38]                                |     r2 = var_38h_2;
    0x0002cf72 cmp r0, r2                                        |     
                                                                 |     if (r0 != r2) {
    0x0002cf74 bne.w 0x2d176                                     |         goto label_26;
                                                                 |     }
    0x0002cf78 ldr r5, [sp, 0x34]                                |     r5 = var_34h_2;
    0x0002cf7a movs r1, 1                                        |     r1 = 1;
    0x0002cf7c ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0002cf7e ldr r0, [sp, 0x30]                                |     r0 = var_30h_2;
    0x0002cf80 mov r2, r5                                        |     r2 = r5;
    0x0002cf82 blx 0x8258                                        |     fcn_00008258 ();
    0x0002cf86 ldr r2, [sp, 0x28]                                |     r2 = var_28h_2;
    0x0002cf88 ldr r1, [sp, 0x40]                                |     r1 = var_40h_2;
    0x0002cf8a cmp r2, r1                                        |     
    0x0002cf8c it eq                                             |     
                                                                 |     if (r2 == r1) {
    0x0002cf8e cmpeq r0, r5                                      |         __asm ("cmpeq r0, r5");
                                                                 |     }
                                                                 |     if (r2 != r1) {
    0x0002cf90 bne.w 0x2d1c0                                     |         goto label_27;
                                                                 |     }
    0x0002cf94 mov r0, r8                                        |     r0 = r8;
    0x0002cf96 blx 0x7424                                        |     fcn_00007424 ();
    0x0002cf9a ldr r0, [sp, 0x30]                                |     r0 = var_30h_2;
    0x0002cf9c blx 0x7424                                        |     fcn_00007424 ();
    0x0002cfa0 ldr.w r6, [sb]                                    |     r6 = *(sb);
    0x0002cfa4 ldrd r5, r1, [r4, 0x6c]                           |     __asm ("ldrd r5, r1, [r4, 0x6c]");
    0x0002cfa8 ldr r2, [sp, 0x28]                                |     r2 = var_28h_2;
    0x0002cfaa mov r0, r6                                        |     r0 = r6;
    0x0002cfac blx 0x7cf4                                        |     r0 = fcn_00007cf4 ();
                                                                 |     if (r0 != 0) {
    0x0002cfb0 cbnz r0, 0x2cfe0                                  |         goto label_28;
                                                                 |     }
    0x0002cfb2 mov r0, r5                                        |     r0 = r5;
    0x0002cfb4 blx 0x79f8                                        |     fcn_000079f8 ();
    0x0002cfb8 mov r3, r6                                        |     r3 = r6;
    0x0002cfba mov r2, r5                                        |     r2 = r5;
    0x0002cfbc movs r1, 1                                        |     r1 = 1;
    0x0002cfbe mov r4, r0                                        |     r4 = r0;
    0x0002cfc0 blx 0x8994                                        |     r0 = fcn_00008994 ();
    0x0002cfc4 cmp r5, r0                                        |     
                                                                 |     if (r5 == r0) {
    0x0002cfc6 beq 0x2cfe4                                       |         goto label_29;
                                                                 |     }
                                                                 | label_6:
    0x0002cfc8 movs r7, 0                                        |     r7 = 0;
    0x0002cfca mov r0, r4                                        |     r0 = r4;
                                                                 |     do {
    0x0002cfcc mov r8, r7                                        |         r8 = r7;
    0x0002cfce mov r4, r7                                        |         r4 = r7;
    0x0002cfd0 mov r5, r7                                        |         r5 = r7;
    0x0002cfd2 mov r6, r7                                        |         r6 = r7;
    0x0002cfd4 blx 0x7424                                        |         fcn_00007424 ();
    0x0002cfd8 b 0x2cb02                                         |         goto label_5;
                                                                 | label_22:
    0x0002cfda ldr r0, [sp, 0x4c]                                |         r0 = var_4ch_2;
    0x0002cfdc movs r7, 0                                        |         r7 = 0;
    0x0002cfde b 0x2cfcc                                         |         
                                                                 |     } while (1);
                                                                 | label_28:
    0x0002cfe0 ldr r4, [sp, 0x28]                                |     r4 = var_28h_2;
    0x0002cfe2 b 0x2cfc8                                         |     goto label_6;
                                                                 | label_29:
    0x0002cfe4 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0002cfe6 mov r2, r5                                        |     r2 = r5;
    0x0002cfe8 movs r1, 1                                        |     r1 = 1;
    0x0002cfea mov r0, r4                                        |     r0 = r4;
    0x0002cfec blx 0x8258                                        |     r0 = fcn_00008258 ();
    0x0002cff0 cmp r5, r0                                        |     
                                                                 |     if (r5 != r0) {
    0x0002cff2 beq 0x2d07c                                       |         
    0x0002cff4 ldr r0, [pc, 0x7c]                                |         
    0x0002cff6 ldr.w sl, [sp, 0x44]                              |         sl = var_44h;
    0x0002cffa add r0, pc                                        |         
    0x0002cffc blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002d000 mov r5, r0                                        |         r5 = r0;
    0x0002d002 blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002d006 ldr r0, [r0]                                      |         r0 = *(0x5a072);
    0x0002d008 blx 0x8760                                        |         fcn_00008760 ();
    0x0002d00c ldr r3, [pc, 0x68]                                |         
    0x0002d00e mov r2, r0                                        |         r2 = r0;
    0x0002d010 str r2, [sp]                                      |         *(sp) = r2;
    0x0002d012 mov r1, r5                                        |         r1 = r5;
    0x0002d014 movs r2, r0                                       |         r2 = r0;
    0x0002d016 movs r0, r0                                       |         
    0x0002d018 add r3, pc                                        |         r3 = 0x5a094;
    0x0002d01a blx 0x8010                                        |         fcn_00008010 ();
    0x0002d01e b 0x2cfc8                                         |         goto label_6;
                                                                 |     }
    0x0002d07c mov r0, r4                                        |     r0 = r4;
    0x0002d07e blx 0x7424                                        |     fcn_00007424 ();
    0x0002d082 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch_2;
    0x0002d084 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch_2;
    0x0002d086 add.w r3, r3, 0x180                               |     r3 += 0x180;
    0x0002d08a str r3, [sp, 0x2c]                                |     var_2ch_2 = r3;
    0x0002d08c adds r2, 1                                        |     r2++;
    0x0002d08e ldr.w r3, [sb, 0x14]                              |     r3 = *((sb + 0x14));
    0x0002d092 str r2, [sp, 0x1c]                                |     var_1ch_2 = r2;
    0x0002d094 cmp r3, r2                                        |     
                                                                 |     if (r3 > r2) {
    0x0002d096 bgt.w 0x2cda4                                     |         goto label_7;
                                                                 |     }
    0x0002d09a ldr.w sl, [sp, 0x44]                              |     sl = var_44h;
                                                                 | label_21:
    0x0002d09e ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0002d0a0 ldr r2, [r3, 0x10]                                |     r2 = *((r3 + 0x10));
    0x0002d0a2 cmp r2, 0x10                                      |     
                                                                 |     if (r2 == 0x10) {
    0x0002d0a4 beq.w 0x2d21c                                     |         goto label_30;
                                                                 |     }
    0x0002d0a8 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0002d0aa ldr r3, [r3, 0x18]                                |     r3 = *((r3 + 0x18));
    0x0002d0ac rev r3, r3                                        |     r3 = SWAP32 (r3);
    0x0002d0ae str r3, [sp, 0x64]                                |     var_64h = r3;
    0x0002d0b0 movw r3, 0x646d                                   |     
    0x0002d0b4 movt r3, 0x7461                                   |     r3 = 0x7461646d;
    0x0002d0b8 str r3, [sp, 0x68]                                |     var_68h = r3;
                                                                 | label_9:
    0x0002d0ba ldr r0, [sp, 0x18]                                |     r0 = var_18h;
    0x0002d0bc movs r1, 1                                        |     r1 = 1;
    0x0002d0be ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x0002d0c0 blx 0x8258                                        |     fcn_00008258 ();
    0x0002d0c4 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x0002d0c6 ldr r2, [r2, 0x10]                                |     r2 = *((r2 + 0x10));
    0x0002d0c8 cmp r0, r2                                        |     
                                                                 |     if (r0 != r2) {
    0x0002d0ca bne.w 0x2d1fe                                     |         goto label_31;
                                                                 |     }
    0x0002d0ce ldr r4, [sp, 0x10]                                |     r4 = var_10h;
    0x0002d0d0 ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x0002d0d2 ldr r1, [r4, 0x14]                                |     r1 = *((r4 + 0x14));
    0x0002d0d4 cmp r2, 0                                         |     
    0x0002d0d6 ite eq                                            |     
                                                                 |     if (r2 != 0) {
    0x0002d0d8 moveq r2, r0                                      |         r2 = r0;
                                                                 |     }
                                                                 |     if (r2 == 0) {
    0x0002d0da movne r2, 0                                       |         r2 = 0;
                                                                 |     }
    0x0002d0dc add r1, r2                                        |     r1 += r2;
    0x0002d0de ldr r0, [r4]                                      |     r0 = *(r4);
    0x0002d0e0 movs r2, 0                                        |     r2 = 0;
    0x0002d0e2 blx 0x7cf4                                        |     r0 = fcn_00007cf4 ();
    0x0002d0e6 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0002d0e8 bne.w 0x2d1f2                                     |         goto label_23;
                                                                 |     }
    0x0002d0ec ldr r5, [r4, 0x18]                                |     r5 = *((r4 + 0x18));
    0x0002d0ee mov.w r0, 0x100000                                |     r0 = 0x100000;
    0x0002d0f2 ldr r3, [r4, 0x10]                                |     r3 = *((r4 + 0x10));
    0x0002d0f4 mov r8, r4                                        |     r8 = r4;
    0x0002d0f6 subs r5, r5, r3                                   |     r5 -= r3;
    0x0002d0f8 blx 0x79f8                                        |     r0 = fcn_000079f8 ();
    0x0002d0fc mov r6, r0                                        |     r6 = r0;
    0x0002d0fe b 0x2d13c                                         |     
                                                                 |     while (r0 == 0) {
    0x0002d100 cmp r5, 0                                         |         
                                                                 |         if (r5 == 0) {
    0x0002d102 beq.w 0x2d27c                                     |             goto label_32;
                                                                 |         }
    0x0002d106 ldr.w r3, [r8]                                    |         r3 = *(r8);
    0x0002d10a cmp.w r5, 0x100000                                |         
    0x0002d10e mov.w r2, 1                                       |         r2 = 1;
    0x0002d112 mov.w r1, 0x100000                                |         r1 = 0x100000;
    0x0002d116 mov r0, r6                                        |         r0 = r6;
    0x0002d118 str r3, [sp]                                      |         *(sp) = r3;
    0x0002d11a mov r3, r5                                        |         r3 = r5;
    0x0002d11c it hs                                             |         
                                                                 |         if (r5 < 0x100000) {
    0x0002d11e movhs r3, 0x100000                                |             r3 = 0x100000;
                                                                 |         }
    0x0002d122 blx 0x84fc                                        |         fcn_000084fc ();
    0x0002d126 ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0002d128 mov r4, r0                                        |         r4 = r0;
    0x0002d12a mov r2, r0                                        |         r2 = r0;
    0x0002d12c subs r5, r5, r0                                   |         r5 -= r0;
    0x0002d12e movs r1, 1                                        |         r1 = 1;
    0x0002d130 mov r0, r6                                        |         r0 = r6;
    0x0002d132 blx 0x8258                                        |         r0 = fcn_00008258 ();
    0x0002d136 cmp r0, r4                                        |         
                                                                 |         if (r0 != r4) {
    0x0002d138 bne.w 0x2d24e                                     |             goto label_33;
                                                                 |         }
    0x0002d13c ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x0002d140 blx 0x7f70                                        |         r0 = fcn_00007f70 ();
    0x0002d144 mov r7, r0                                        |         r7 = r0;
    0x0002d146 cmp r0, 0                                         |         
    0x0002d148 beq 0x2d100                                       |         
                                                                 |     }
    0x0002d14a mov r0, r6                                        |     r0 = r6;
    0x0002d14c blx 0x7424                                        |     fcn_00007424 ();
    0x0002d150 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x0002d152 beq.w 0x2d282                                     |         
    0x0002d156 ldr r0, [pc, 0x158]                               |         
    0x0002d158 movs r4, 1                                        |         r4 = 1;
    0x0002d15a add r0, pc                                        |         r0 = 0x5a410;
    0x0002d15c blx 0x813c                                        |         fcn_0000813c ();
    0x0002d160 ldr r3, [pc, 0x150]                               |         
    0x0002d162 mov r1, r0                                        |         r1 = r0;
    0x0002d164 movs r2, 2                                        |         r2 = 2;
    0x0002d166 ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x0002d168 str r5, [sp]                                      |         *(sp) = r5;
    0x0002d16a add r3, pc                                        |         r3 = 0x5a422;
    0x0002d16c blx 0x8010                                        |         fcn_00008010 ();
    0x0002d170 b 0x2ca2a                                         |         goto label_1;
                                                                 | label_13:
    0x0002d172 blx 0x8460                                        |         fcn_00008460 ();
                                                                 | label_26:
    0x0002d176 ldr r0, [pc, 0x140]                               |         
    0x0002d178 ldr r4, [sp, 0x28]                                |         r4 = var_28h_2;
    0x0002d17a ldr.w sl, [sp, 0x44]                              |         sl = var_44h;
    0x0002d17e add r0, pc                                        |         
    0x0002d180 ldr r7, [sp, 0x30]                                |         r7 = var_30h_2;
    0x0002d182 blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002d186 mov r5, r0                                        |         r5 = r0;
    0x0002d188 mov r6, r4                                        |         r6 = r4;
    0x0002d18a blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002d18e ldr r0, [r0]                                      |         r0 = *(0x5a43c);
    0x0002d190 blx 0x8760                                        |         fcn_00008760 ();
    0x0002d194 ldr r3, [pc, 0x124]                               |         
    0x0002d196 mov r1, r5                                        |         r1 = r5;
    0x0002d198 str r0, [sp]                                      |         *(sp) = r0;
    0x0002d19a movs r2, 2                                        |         r2 = 2;
    0x0002d19c mov r0, sl                                        |         r0 = sl;
    0x0002d19e mov r5, r4                                        |         r5 = r4;
    0x0002d1a0 add r3, pc                                        |         r3 = 0x5a460;
    0x0002d1a2 blx 0x8010                                        |         fcn_00008010 ();
    0x0002d1a6 b 0x2cb02                                         |         goto label_5;
                                                                 | label_25:
    0x0002d1a8 ldr r4, [sp, 0x28]                                |         r4 = var_28h_2;
    0x0002d1aa ldr r7, [sp, 0x30]                                |         r7 = var_30h_2;
    0x0002d1ac mov r5, r4                                        |         r5 = r4;
    0x0002d1ae mov r6, r4                                        |         r6 = r4;
    0x0002d1b0 b 0x2cb02                                         |         goto label_5;
                                                                 | label_24:
    0x0002d1b2 mov.w r8, 0                                       |         r8 = 0;
    0x0002d1b6 ldr r7, [sp, 0x30]                                |         r7 = var_30h_2;
    0x0002d1b8 mov r4, r8                                        |         r4 = r8;
    0x0002d1ba mov r5, r8                                        |         r5 = r8;
    0x0002d1bc mov r6, r8                                        |         r6 = r8;
    0x0002d1be b 0x2cb02                                         |         goto label_5;
                                                                 | label_27:
    0x0002d1c0 ldr r0, [pc, 0xfc]                                |         
    0x0002d1c2 mov r4, r2                                        |         r4 = r2;
    0x0002d1c4 ldr.w sl, [sp, 0x44]                              |         sl = var_44h;
    0x0002d1c8 mov r6, r4                                        |         r6 = r4;
    0x0002d1ca ldr r7, [sp, 0x30]                                |         r7 = var_30h_2;
    0x0002d1cc add r0, pc                                        |         
    0x0002d1ce blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002d1d2 mov r5, r0                                        |         r5 = r0;
    0x0002d1d4 blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002d1d8 ldr r0, [r0]                                      |         r0 = *(0x5a490);
    0x0002d1da blx 0x8760                                        |         fcn_00008760 ();
    0x0002d1de ldr r3, [pc, 0xe4]                                |         
    0x0002d1e0 mov r1, r5                                        |         r1 = r5;
    0x0002d1e2 str r0, [sp]                                      |         *(sp) = r0;
    0x0002d1e4 movs r2, 2                                        |         r2 = 2;
    0x0002d1e6 mov r0, sl                                        |         r0 = sl;
    0x0002d1e8 mov r5, r4                                        |         r5 = r4;
    0x0002d1ea add r3, pc                                        |         r3 = 0x5a4b4;
    0x0002d1ec blx 0x8010                                        |         fcn_00008010 ();
    0x0002d1f0 b 0x2cb02                                         |         goto label_5;
                                                                 | label_23:
    0x0002d1f2 movs r7, 0                                        |         r7 = 0;
    0x0002d1f4 mov r8, r7                                        |         r8 = r7;
    0x0002d1f6 mov r4, r7                                        |         r4 = r7;
    0x0002d1f8 mov r5, r7                                        |         r5 = r7;
    0x0002d1fa mov r6, r7                                        |         r6 = r7;
    0x0002d1fc b 0x2cb02                                         |         goto label_5;
                                                                 | label_31:
    0x0002d1fe ldr r0, [pc, 0xc8]                                |         
    0x0002d200 movs r7, 0                                        |         r7 = 0;
    0x0002d202 add r0, pc                                        |         
    0x0002d204 blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002d208 mov r4, r0                                        |         r4 = r0;
    0x0002d20a blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002d20e ldr r0, [r0]                                      |         r0 = *(0x5a4d0);
    0x0002d210 blx 0x8760                                        |         fcn_00008760 ();
    0x0002d214 ldr r3, [pc, 0xb4]                                |         
    0x0002d216 mov r2, r0                                        |         r2 = r0;
    0x0002d218 add r3, pc                                        |         r3 = 0x5a4e8;
    0x0002d21a b 0x2ccb8                                         |         goto label_8;
                                                                 | label_30:
    0x0002d21c mov r1, r3                                        |         r1 = r3;
    0x0002d21e ldr r3, [r3, 0x1c]                                |         r3 = *((r3 + 0x1c));
    0x0002d220 ldr r1, [r1, 0x18]                                |         r1 = *((r1 + 0x18));
    0x0002d222 strb.w r3, [sp, 0x6f]                             |         var_6fh = r3;
    0x0002d226 rev r1, r1                                        |         r1 = SWAP32 (r1);
    0x0002d228 str r1, [sp, 0x70]                                |         var_70h = r1;
    0x0002d22a lsrs r1, r3, 0x18                                 |         r1 = r3 >> 0x18;
    0x0002d22c strb.w r1, [sp, 0x6c]                             |         var_6ch = r1;
    0x0002d230 lsrs r1, r3, 0x10                                 |         r1 = r3 >> 0x10;
    0x0002d232 lsrs r3, r3, 8                                    |         r3 >>= 8;
    0x0002d234 strb.w r1, [sp, 0x6d]                             |         var_6dh = r1;
    0x0002d238 strb.w r3, [sp, 0x6e]                             |         var_6eh = r3;
    0x0002d23c movw r3, 0x646d                                   |         
    0x0002d240 movt r3, 0x7461                                   |         r3 = 0x7461646d;
    0x0002d244 str r3, [sp, 0x68]                                |         var_68h = r3;
    0x0002d246 mov.w r3, 0x1000000                               |         r3 = 0x1000000;
    0x0002d24a str r3, [sp, 0x64]                                |         var_64h = r3;
    0x0002d24c b 0x2d0ba                                         |         goto label_9;
                                                                 | label_33:
    0x0002d24e ldr r0, [pc, 0x80]                                |         
    0x0002d250 mov r8, r7                                        |         r8 = r7;
    0x0002d252 mov r5, r7                                        |         r5 = r7;
    0x0002d254 add r0, pc                                        |         
    0x0002d256 blx 0x813c                                        |         r0 = fcn_0000813c ();
    0x0002d25a mov r4, r0                                        |         r4 = r0;
    0x0002d25c blx 0x8b48                                        |         r0 = g_queue_pop_head ();
    0x0002d260 ldr r0, [r0]                                      |         r0 = *(0x5a52a);
    0x0002d262 blx 0x8760                                        |         r0 = fcn_00008760 ();
    0x0002d266 mov r3, r0                                        |         r3 = r0;
    0x0002d268 mov r1, r4                                        |         r1 = r4;
    0x0002d26a str r3, [sp]                                      |         *(sp) = r3;
    0x0002d26c mov r0, sl                                        |         r0 = sl;
    0x0002d26e ldr r3, [pc, 0x64]                                |         
    0x0002d270 movs r2, 2                                        |         r2 = 2;
    0x0002d272 mov r4, r7                                        |         r4 = r7;
    0x0002d274 add r3, pc                                        |         r3 = 0x5a54e;
    0x0002d276 blx 0x8010                                        |         fcn_00008010 ();
    0x0002d27a b 0x2cb02                                         |         goto label_5;
                                                                 | label_32:
    0x0002d27c mov r0, r6                                        |         r0 = r6;
    0x0002d27e blx 0x7424                                        |         fcn_00007424 ();
                                                                 |     }
    0x0002d282 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0002d284 ldr r0, [r3]                                      |     r0 = *(r3);
    0x0002d286 blx 0x7f70                                        |     r0 = fcn_00007f70 ();
                                                                 |     if (r0 != 0) {
    0x0002d28a cbz r0, 0x2d292                                   |         
    0x0002d28c movs r4, 1                                        |         r4 = 1;
    0x0002d28e b.w 0x2ca2a                                       |         goto label_1;
                                                                 |     }
    0x0002d292 ldr r0, [pc, 0x44]                                |     
    0x0002d294 movs r4, 1                                        |     r4 = 1;
    0x0002d296 add r0, pc                                        |     r0 = 0x5a574;
    0x0002d298 blx 0x813c                                        |     fcn_0000813c ();
    0x0002d29c ldr r3, [pc, 0x3c]                                |     
    0x0002d29e mov r1, r0                                        |     r1 = r0;
    0x0002d2a0 movs r2, 2                                        |     r2 = 2;
    0x0002d2a2 ldr r0, [sp, 0x14]                                |     r0 = var_14h;
    0x0002d2a4 add r3, pc                                        |     r3 = 0x5a584;
    0x0002d2a6 blx 0x8010                                        |     fcn_00008010 ();
    0x0002d2aa b.w 0x2ca2a                                       |     goto label_1;
                                                                 | }
    ; assembly                       | /* r2dec pseudo code output */
                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/gstreamer-1.0/libgstisomp4.so @ 0x73c4 */
                                     | #include <stdint.h>
                                     |  
    ; (fcn) sym..init ()             | void _init () {
                                     |     /* [09] -r-x section size 12 named .init */
    0x000073c4 ands r0, r1           |     r0 &= r1;
    0x000073c8 bl 0x8c08             |     entry0 ();
    0x000073cc pop {r3, pc}          |     
                                     | }

[*] Function sprintf used 1 times libgstisomp4.so