[*] Binary protection state of libgstisomp4.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat 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 strcat used 1 times libgstisomp4.so