[*] Binary protection state of ld-linux-armhf.so.3
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of ld-linux-armhf.so.3
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0x2990 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00002990 () | void fcn_00002990 (int16_t arg_8h, int16_t arg_20h, int16_t arg_24h, int16_t arg_2ch, int16_t arg_30h, int16_t arg_34h, int16_t arg_38h, int16_t arg_3ch, int16_t arg_44h, int16_t arg_58h, int16_t arg_5ch, int16_t arg_60h, int16_t arg_64h, int16_t arg_6ch, int16_t arg_70h, int16_t arg_74h, int16_t arg_78h, int16_t arg_7ch, int16_t arg_80h, int16_t arg_94h, int16_t arg_98h, int16_t arg_bch, int16_t arg_e8h, int16_t arg_134h, int16_t arg_138h, int16_t arg_140h, int16_t arg_150h, int16_t arg_154h, int16_t arg_15ch, int16_t arg_160h, int16_t arg_164h, int16_t arg_194h, int16_t arg_19ch, int16_t arg_1b4h, int16_t arg_1b8h, int16_t arg_1bch, int16_t arg_1d4h, int16_t arg_1f8h, int16_t arg_20ch, int16_t arg_210h, int16_t arg_230h, int16_t arg_23ch, int16_t arg_240h, int16_t arg_248h, int16_t arg_250h, int16_t arg_254h, int16_t arg_260h, int16_t arg_0h, int16_t arg_4h, int16_t arg_ch, int16_t arg_10h, int16_t arg_17h, int16_t arg_190h, int16_t arg_238h, int16_t arg3, int16_t arg4) {
| r2 = arg3;
| r3 = arg4;
| do {
0x00001a04 invalid |
0x00001a08 cmp r3, 6 |
| if (r3 != 6) {
0x00001a0a beq 0x1a1e |
0x00001a0c ldr.w r3, [pc, 0x938] | r3 = *(0x00002348);
0x00001a10 movs r2, 1 | r2 = 1;
0x00001a12 str.w r2, [sl, 0x164] | __asm ("str.w r2, [sl, 0x164]");
0x00001a16 mov.w r2, -1 | r2 = -1;
0x00001a1a add r3, pc | r3 += pc;
0x00001a1c str r2, [r3, 0x30] | *((r3 + 0x30)) = r2;
| }
0x00001a1e ldr.w r2, [pc, 0x92c] | r2 = *(0x0000234c);
0x00001a22 subs r4, 1 | r4--;
0x00001a24 adds r5, 4 | r5 += 4;
0x00001a26 add r2, pc | r2 += pc;
0x00001a28 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00001a2a adds r3, 1 | r3++;
0x00001a2c str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
| label_0:
0x00001a2e ldr.w r3, [pc, 0x920] | r3 = *(0x00002350);
0x00001a32 cmp r4, 1 |
0x00001a34 add r3, pc | r3 += pc;
0x00001a36 str r4, [r3] | *(r3) = r4;
0x00001a38 ldr.w r3, [pc, 0x918] | r3 = *(0x00002354);
0x00001a3c add r3, pc | r3 += pc;
0x00001a3e str r5, [r3] | *(r3) = r5;
| if (r4 == 1) {
0x00001a40 beq.w 0x1e0c | goto label_66;
| }
0x00001a44 ldr r6, [r5, 4] | r6 = *((r5 + 4));
0x00001a46 mov r1, r8 | r1 = r8;
0x00001a48 mov r0, r6 | r0 = r6;
0x00001a4a bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001a4e cmp r0, 0 |
0x00001a50 beq 0x1a04 |
| } while (r0 == 0);
0x00001a52 mov r1, fp | r1 = fp;
0x00001a54 mov r0, r6 | r0 = r6;
0x00001a56 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001a5a cmp r0, 0 |
| if (r0 == 0) {
0x00001a5c bne.w 0x1cf4 |
0x00001a60 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x00001a64 subs r4, 1 | r4--;
0x00001a66 ldr.w r2, [pc, 0x8f0] | r2 = *(0x00002358);
0x00001a6a adds r5, 4 | r5 += 4;
0x00001a6c cmp r3, 6 |
0x00001a6e it ne |
| if (r3 == 6) {
0x00001a70 movne r3, 2 | r3 = 2;
| }
0x00001a72 add r2, pc | r2 += pc;
0x00001a74 it ne |
| if (r3 == 6) {
0x00001a76 strne r3, [sl, 0x164] | *((sl + 0x164)) = r3;
| }
0x00001a7a ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00001a7c adds r3, 1 | r3++;
0x00001a7e str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00001a80 b 0x1a2e | goto label_0;
| }
0x00001cf4 ldr r1, [r7, 0x34] | r1 = *((r7 + 0x34));
0x00001cf6 mov r0, r6 | r0 = r6;
0x00001cf8 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
| if (r0 == 0) {
0x00001cfc cbnz r0, 0x1d1a |
0x00001cfe ldr.w r2, [pc, 0x6bc] | r2 = *(0x000023bc);
0x00001d02 movs r1, 1 | r1 = 1;
0x00001d04 ldr.w r3, [pc, 0x6b8] | r3 = *(0x000023c0);
0x00001d08 subs r4, 1 | r4--;
0x00001d0a adds r5, 4 | r5 += 4;
0x00001d0c add r2, pc | r2 += pc;
0x00001d0e add r3, pc | r3 += pc;
0x00001d10 str r1, [r3, 0x18] | *((r3 + 0x18)) = r1;
0x00001d12 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00001d14 add r3, r1 | r3 += r1;
0x00001d16 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00001d18 b 0x1a2e | goto label_0;
| }
0x00001d1a ldr r1, [r7, 0x30] | r1 = *((r7 + 0x30));
0x00001d1c mov r0, r6 | r0 = r6;
0x00001d1e bl 0x14f30 | fcn_00014f30 (r0, r1, r2, r3);
0x00001d22 subs.w sb, r4, 2 | sb = r4 - 2;
0x00001d26 it ne |
| if (sb == r4) {
0x00001d28 movne sb, 1 | sb = 1;
| }
0x00001d2c cmp r0, 0 |
0x00001d2e ite ne |
| if (r0 == 0) {
0x00001d30 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x00001d32 andeq r1, sb, 1 | r1 = sb & 1;
| }
0x00001d36 cmp r1, 0 |
| if (r1 != 0) {
0x00001d38 bne.w 0x2e86 | goto label_67;
| }
0x00001d3c ldr r1, [r7, 0x28] | r1 = *((r7 + 0x28));
0x00001d3e mov r0, r6 | r0 = r6;
0x00001d40 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001d44 cmp r0, 0 |
0x00001d46 ite ne |
| if (r0 == 0) {
0x00001d48 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x00001d4a andeq r1, sb, 1 | r1 = sb & 1;
| }
0x00001d4e cmp r1, 0 |
| if (r1 != 0) {
0x00001d50 bne.w 0x3098 | goto label_68;
| }
0x00001d54 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x00001d56 mov r0, r6 | r0 = r6;
0x00001d58 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001d5c cmp r0, 0 |
0x00001d5e ite ne |
| if (r0 == 0) {
0x00001d60 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x00001d62 andeq r1, sb, 1 | r1 = sb & 1;
| }
0x00001d66 cmp r1, 0 |
| if (r1 != 0) {
0x00001d68 bne.w 0x35ce | goto label_69;
| }
0x00001d6c ldr r1, [r7, 0x10] | r1 = *((r7 + 0x10));
0x00001d6e mov r0, r6 | r0 = r6;
0x00001d70 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001d74 cmp r0, 0 |
0x00001d76 ite ne |
| if (r0 == 0) {
0x00001d78 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x00001d7a andeq r1, sb, 1 | r1 = sb & 1;
| }
0x00001d7e cmp r1, 0 |
| if (r1 != 0) {
0x00001d80 bne.w 0x3632 | goto label_70;
| }
0x00001d84 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x00001d86 mov r0, r6 | r0 = r6;
0x00001d88 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001d8c cmp r0, 0 |
0x00001d8e ite ne |
| if (r0 == 0) {
0x00001d90 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x00001d92 andeq r1, sb, 1 | r1 = sb & 1;
| }
0x00001d96 cmp r1, 0 |
| if (r1 != 0) {
0x00001d98 bne.w 0x34d0 | goto label_71;
| }
0x00001d9c ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00001d9e mov r0, r6 | r0 = r6;
0x00001da0 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001da4 cmp r0, 0 |
0x00001da6 ite ne |
| if (r0 == 0) {
0x00001da8 movne r1, 0 | r1 = 0;
| }
| if (r0 != 0) {
0x00001daa andeq r1, sb, 1 | r1 = sb & 1;
| }
0x00001dae cmp r1, 0 |
| if (r1 != 0) {
0x00001db0 bne.w 0x403c | goto label_72;
| }
0x00001db4 ldr.w r1, [pc, 0x60c] | r1 = *(0x000023c4);
0x00001db8 mov r0, r6 | r0 = r6;
0x00001dba add r1, pc | r1 += pc;
0x00001dbc bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001dc0 cmp r0, 0 |
0x00001dc2 ite ne |
| if (r0 == 0) {
0x00001dc4 movne r2, 0 | r2 = 0;
| }
| if (r0 != 0) {
0x00001dc6 andeq r2, sb, 1 | r2 = sb & 1;
| }
0x00001dca cmp r2, 0 |
| if (r2 != 0) {
0x00001dcc bne.w 0x4066 | goto label_73;
| }
0x00001dd0 ldr.w r1, [pc, 0x5f4] | r1 = *(0x000023c8);
0x00001dd4 mov r0, r6 | r0 = r6;
0x00001dd6 add r1, pc | r1 += pc;
0x00001dd8 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001ddc cmp r0, 0 |
| if (r0 == 0) {
0x00001dde beq.w 0x3bee | goto label_74;
| }
0x00001de2 ldr.w r1, [pc, 0x5e8] |
0x00001de6 mov r0, r6 | r0 = r6;
0x00001de8 add r1, pc | r1 = 0x41ba;
0x00001dea bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001dee cmp r0, 0 |
| if (r0 != 0) {
0x00001df0 bne.w 0x4206 | goto label_75;
| }
0x00001df4 ldr.w r2, [pc, 0x5d8] | r2 = *(0x000023d0);
0x00001df8 movs r3, 5 | r3 = 5;
0x00001dfa str.w r3, [sl, 0x164] | __asm ("str.w r3, [sl, 0x164]");
0x00001dfe subs r4, 1 | r4--;
0x00001e00 adds r5, 4 | r5 += 4;
0x00001e02 add r2, pc | r2 += pc;
0x00001e04 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00001e06 adds r3, 1 | r3++;
0x00001e08 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00001e0a b 0x1a2e | goto label_0;
| label_66:
0x00001e0c ldr r6, [r7, 0x18] | r6 = *((r7 + 0x18));
| label_65:
0x00001e0e ldr.w r0, [sl, 0x164] | r0 = *((sl + 0x164));
0x00001e12 cmp r0, 4 |
| if (r0 == 4) {
0x00001e14 beq.w 0x3bbc | goto label_76;
| }
| label_41:
0x00001e18 cmp r0, 5 |
| if (r0 == 5) {
0x00001e1a beq.w 0x44b2 | goto label_77;
| }
0x00001e1e ldr.w r2, [pc, 0x5b4] | r2 = *(0x000023d4);
0x00001e22 add r2, pc | r2 += pc;
0x00001e24 ldr r3, [r2] | r3 = *(r2);
0x00001e26 cmp r3, 1 |
| if (r3 <= 1) {
0x00001e28 ble.w 0x33fa | goto label_78;
| }
0x00001e2c subs r3, 1 | r3--;
0x00001e2e ldr r1, [r7, 0x40] | r1 = *((r7 + 0x40));
0x00001e30 str r3, [r2] | *(r2) = r3;
0x00001e32 ldr.w r3, [pc, 0x5a4] | r3 = *(0x000023d8);
0x00001e36 add.w r1, r6, r1, lsl 5 | r1 = r6 + (r1 << 5);
0x00001e3a add r3, pc | r3 += pc;
0x00001e3c ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00001e3e cmp r6, r1 |
0x00001e40 ldr r4, [r3] | r4 = *(r3);
0x00001e42 add.w r2, r2, 1 | r2++;
0x00001e46 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x00001e48 add.w r2, r4, 4 | r2 = r4 + 4;
0x00001e4c str r2, [r3] | *(r3) = r2;
| if (r6 >= r1) {
0x00001e4e bhs 0x1e72 | goto label_79;
| }
0x00001e50 movw r2, 0xe551 |
0x00001e54 movt r2, 0x6474 | r2 = 0x6474e551;
0x00001e58 b 0x1e60 |
| while (r3 != r2) {
0x00001e5a adds r6, 0x20 | r6 += 0x20;
0x00001e5c cmp r6, r1 |
| if (r6 >= r1) {
0x00001e5e bhs 0x1e72 | goto label_79;
| }
0x00001e60 ldr r3, [r6] | r3 = *(r6);
0x00001e62 cmp r3, r2 |
0x00001e64 bne 0x1e5a |
| }
0x00001e66 ldr.w r3, [pc, 0x574] | r3 = *(0x000023dc);
0x00001e6a ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00001e6c add r3, pc | r3 += pc;
0x00001e6e str.w r2, [r3, 0x878] | __asm ("str.w r2, [r3, 0x878]");
| label_79:
0x00001e72 bic r0, r0, 4 | r0 = BIT_MASK (r0, 4);
0x00001e76 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00001e78 cmp r0, 2 |
| if (r0 == 2) {
0x00001e7a beq.w 0x40b6 | goto label_80;
| }
0x00001e7e movs r3, 0 | r3 = 0;
0x00001e80 mov.w r2, 0x20000000 | r2 = 0x20000000;
0x00001e84 strd r2, r3, [sp] | __asm ("strd r2, r3, [sp]");
0x00001e88 mov r0, r3 | r0 = r3;
0x00001e8a mov r2, r3 | r2 = r3;
0x00001e8c bl 0x684c | fcn_0000684c (r0, r1, r2, r3, r4, r5);
| label_50:
0x00001e90 ldr.w r3, [pc, 0x54c] | r3 = *(0x000023e0);
0x00001e94 ldr.w r2, [sl, 0x164] | r2 = *((sl + 0x164));
0x00001e98 add r3, pc | r3 += pc;
0x00001e9a ldr.w fp, [r3] | fp = *(r3);
| if (r2 == 0) {
0x00001e9e cbnz r2, 0x1eca |
0x00001ea0 ldr.w r2, [r3, 0x5f0] | r2 = *((r3 + 0x5f0));
| if (r2 == 0) {
0x00001ea4 cbz r2, 0x1eca | goto label_81;
| }
0x00001ea6 ldr.w r1, [fp, 0x58] | r1 = *(arg_58h);
| if (r1 == 0) {
0x00001eaa cbz r1, 0x1eca | goto label_81;
| }
0x00001eac ldr.w r0, [r3, 0x5cc] | r0 = *((r3 + 0x5cc));
0x00001eb0 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00001eb2 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00001eb4 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00001eb6 add r0, r2 | r0 += r2;
0x00001eb8 ldr.w r2, [fp, 0x34] | r2 = *(arg_34h);
0x00001ebc ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00001ebe add r1, r3 | r1 += r3;
0x00001ec0 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00001ec4 cmp r0, 0 |
| if (r0 == 0) {
0x00001ec6 beq.w 0x435e | goto label_82;
| }
| }
| label_81:
0x00001eca ldr.w r3, [pc, 0x518] | r3 = *(0x000023e4);
0x00001ece ldrh.w r2, [fp, 0x15c] | r2 = *(arg_15ch);
0x00001ed2 add r3, pc | r3 += pc;
0x00001ed4 str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x00001ed8 str r2, [r7, 0x40] | *((r7 + 0x40)) = r2;
0x00001eda ldrd r6, r3, [fp, 0x154] | __asm ("ldrd r6, r3, [arg_154h]");
0x00001ede ldr r2, [r7, 0x3c] | r2 = *((r7 + 0x3c));
0x00001ee0 str r3, [r2] | *(r2) = r3;
0x00001ee2 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x00001ee4 ldr r3, [r3] | r3 = *(r3);
0x00001ee6 cmp r3, 0 |
| if (r3 == 0) {
0x00001ee8 beq.w 0x2ed2 | goto label_11;
| }
0x00001eec ldr.w r1, [pc, 0x4f8] | r1 = *(0x000023e8);
0x00001ef0 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x00001ef2 ldrd r5, r4, [r7, 0x3c] | __asm ("ldrd r5, r4, [r7, 0x3c]");
0x00001ef6 add r1, pc | r1 += pc;
0x00001ef8 ldr r0, [r1] | r0 = *(r1);
| label_9:
0x00001efa subs r3, 3 | r3 -= 3;
0x00001efc cmp r3, 0x1c |
| if (r3 > 0x1c) {
0x00001efe bhi.w 0x2ec8 | goto label_83;
| }
| /* switch table (29 cases) at 0x1f06 */
0x00001f02 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| label_10:
0x00001f88 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00001f8a mov.w r1, -1 | r1 = -1;
0x00001f8e ldr.w r2, [fp, 0x194] | r2 = *(arg_194h);
0x00001f92 str.w r1, [fp, 0x1b4] | __asm ("str.w r1, [arg_1b4h]");
0x00001f96 lsls r3, r3, 5 | r3 <<= 5;
0x00001f98 adds r2, 1 | r2++;
0x00001f9a str.w r2, [fp, 0x194] | __asm ("str.w r2, [arg_194h]");
0x00001f9e movs r2, 0 | r2 = 0;
0x00001fa0 adds r4, r6, r3 | r4 = r6 + r3;
0x00001fa2 strd r2, r2, [fp, 0x1b8] | __asm ("strd r2, r2, [fp, 0x1b8]");
0x00001fa6 cmp r6, r4 |
| if (r6 >= r4) {
0x00001fa8 bhs.w 0x37f6 | goto label_84;
| }
0x00001fac ldr.w r3, [pc, 0x444] | r3 = *(0x000023f4);
0x00001fb0 movw r5, 0xe551 |
0x00001fb4 ldr.w r1, [pc, 0x440] | r1 = *(0x000023f8);
0x00001fb8 add.w r8, r4, 0x20 | r8 = r4 + 0x20;
0x00001fbc ldr.w r0, [pc, 0x43c] | r0 = *(0x000023fc);
0x00001fc0 movt r5, 0x6474 | r5 = 0x6474e551;
0x00001fc4 add r3, pc | r3 += pc;
0x00001fc6 ldr.w sb, [pc, 0x438] | sb = *(0x00002400);
0x00001fca ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00001fcc add r1, pc | r1 += pc;
0x00001fce str r2, [r7, 0x40] | *((r7 + 0x40)) = r2;
0x00001fd0 movw r2, 0xe552 |
0x00001fd4 add r0, pc | r0 += pc;
0x00001fd6 str r1, [r7, 0x28] | *((r7 + 0x28)) = r1;
0x00001fd8 rsbs r3, r3, 0 | r3 -= ;
0x00001fda adds r1, 0x14 | r1 += 0x14;
0x00001fdc str r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
0x00001fde add sb, pc | sb += pc;
0x00001fe0 ldr.w r3, [pc, 0x420] | r3 = *(0x00002404);
0x00001fe4 movt r2, 0x6474 | r2 = 0x6474e552;
0x00001fe8 str r1, [r7, 0x20] | *((r7 + 0x20)) = r1;
0x00001fea add.w r1, r0, 0x20 | r1 = r0 + 0x20;
0x00001fee str r0, [r7, 0x14] | *((r7 + 0x14)) = r0;
0x00001ff0 add r3, pc | r3 += pc;
0x00001ff2 str r1, [r7, 0x10] | *((r7 + 0x10)) = r1;
0x00001ff4 str r3, [r7, 0x2c] | *((r7 + 0x2c)) = r3;
0x00001ff6 ldr.w r3, [pc, 0x410] | r3 = *(0x00002408);
0x00001ffa str r4, [r7, 0x3c] | *((r7 + 0x3c)) = r4;
0x00001ffc add r3, pc | r3 += pc;
0x00001ffe str r3, [r7, 0x18] | *((r7 + 0x18)) = r3;
0x00002000 add.w r3, r6, 0x20 | r3 = r6 + 0x20;
| do {
| label_4:
0x00002004 ldr r1, [r3, -0x20] | r1 = *((r3 - 0x20));
0x00002008 cmp r1, 7 |
| if (r1 <= 7) {
0x0000200a bhi 0x2026 |
| if (r1 == 0) {
0x0000200c cbz r1, 0x2040 | goto label_3;
| }
0x0000200e subs r1, 1 | r1--;
0x00002010 cmp r1, 6 |
| if (r1 > 6) {
0x00002012 bhi 0x2040 | goto label_3;
| }
| /* switch table (8 cases) at 0x2018 */
0x00002014 tbh [pc, r1, lsl 1] | __asm ("tbh [pc, r1, lsl 1]");
| }
0x00002026 cmp r1, r5 |
| if (r1 == r5) {
0x00002028 beq.w 0x2e40 | goto label_85;
| }
0x0000202c cmp r1, r2 |
| if (r1 == r2) {
0x0000202e bne 0x2040 |
0x00002030 ldr r1, [r3, -0x18] | r1 = *((r3 - 0x18));
0x00002034 str.w r1, [fp, 0x250] | __asm ("str.w r1, [arg_250h]");
0x00002038 ldr r1, [r3, -0xc] | r1 = *((r3 - 0xc));
0x0000203c str.w r1, [fp, 0x254] | __asm ("str.w r1, [arg_254h]");
| }
| label_3:
0x00002040 adds r3, 0x20 | r3 += 0x20;
0x00002042 cmp r8, r3 |
0x00002044 bne 0x2004 |
| } while (r8 != r3);
| label_5:
0x00002046 ldr r4, [r7, 0x3c] | r4 = *((r7 + 0x3c));
| label_64:
0x00002048 movw r5, 0xe553 |
0x0000204c movt r5, 0x6474 | r5 = 0x6474e553;
0x00002050 b 0x2056 |
| while (r3 != r5) {
0x00002052 cmp r6, r4 |
| if (r6 == r4) {
0x00002054 beq 0x206e | goto label_86;
| }
| label_1:
0x00002056 ldr r3, [r4, -0x20]! | r3 = *((r4 -= 0x20));
0x0000205a cmp r3, r5 |
0x0000205c bne 0x2052 |
| }
0x0000205e mov r2, r4 | r2 = r4;
0x00002060 mov.w r1, -1 | r1 = -1;
0x00002064 mov r0, fp | r0 = fp;
0x00002066 bl 0x596c | fcn_0000596c (r0, r1);
0x0000206a cmp r6, r4 |
| if (r6 != r4) {
0x0000206c bne 0x2056 | goto label_1;
| }
| label_86:
0x0000206e ldr.w r3, [fp, 0x230] | r3 = *(arg_230h);
0x00002072 ldrd r2, r1, [fp, 0x1b8] | __asm ("ldrd r2, r1, [arg_1b8h]");
| if (r3 != 0) {
0x00002076 cbz r3, 0x2082 |
| label_28:
0x00002078 ldr.w r0, [fp] | r0 = *(fp);
0x0000207c add r3, r0 | r3 += r0;
0x0000207e str.w r3, [fp, 0x230] | __asm ("str.w r3, [arg_230h]");
| }
| if (r2 == 0) {
0x00002082 cbnz r2, 0x208c |
| label_49:
0x00002084 mov.w r3, -1 | r3 = -1;
0x00002088 str.w r3, [fp, 0x1b8] | __asm ("str.w r3, [arg_1b8h]");
| }
| if (r1 == 0) {
0x0000208c cbnz r1, 0x2096 |
0x0000208e mov.w r3, -1 | r3 = -1;
0x00002092 str.w r3, [fp, 0x1bc] | __asm ("str.w r3, [arg_1bch]");
| }
0x00002096 ldr r3, [pc, 0x374] |
0x00002098 add r3, pc | r3 = 0x44aa;
0x0000209a ldr.w r2, [r3, 0x5b4] | r2 = *(0x4a5e);
0x0000209e cmp r2, 0 |
| if (r2 == 0) {
0x000020a0 beq.w 0x323c | goto label_87;
| }
| label_12:
0x000020a4 ldr r3, [pc, 0x368] |
0x000020a6 add r3, pc | r3 = 0x44ba;
0x000020a8 ldr.w r2, [r3, 0x5f0] | r2 = *(0x4aaa);
| if (r2 != 0) {
0x000020ac cbz r2, 0x20e0 |
0x000020ae ldr.w r1, [r3, 0x5cc] | r1 = *((r3 + 0x5cc));
0x000020b2 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000020b4 ldr.w r5, [r3, 0x5b4] | r5 = *((r3 + 0x5b4));
0x000020b8 ldr r4, [r1, 4] | r4 = *((r1 + 4));
0x000020ba ldr r0, [r5] | r0 = *(r5);
0x000020bc add r4, r2 | r4 += r2;
0x000020be mov r1, r4 | r1 = r4;
0x000020c0 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
| if (r0 == 0) {
0x000020c4 cbz r0, 0x20e0 | goto label_88;
| }
0x000020c6 ldr r3, [pc, 0x34c] |
0x000020c8 movs r2, 0 | r2 = 0;
0x000020ca movs r1, 1 | r1 = 1;
0x000020cc add r3, pc | r3 = 0x44e6;
0x000020ce str r2, [r3, 0x30] | *((r3 + 0x30)) = r2;
0x000020d0 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x000020d2 str r4, [r3, 0x2c] | *((r3 + 0x2c)) = r4;
0x000020d4 str r1, [r3, 0x34] | *((r3 + 0x34)) = r1;
0x000020d6 cmp r2, 0 |
| if (r2 != 0) {
0x000020d8 bne.w 0x4476 | goto label_89;
| }
0x000020dc adds r3, 0x2c | r3 += 0x2c;
0x000020de str r3, [r5, 4] | *((r5 + 4)) = r3;
| }
| label_88:
0x000020e0 ldr r3, [pc, 0x334] |
0x000020e2 add r3, pc | r3 = 0x44fe;
0x000020e4 ldrb.w r3, [r3, 0x730] | r3 = *((r3 + 0x730));
0x000020e8 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x000020ea bpl.w 0x4428 | goto label_90;
| }
0x000020ee ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x000020f0 cmp r3, 0 |
| if (r3 != 0) {
0x000020f2 bne.w 0x22a0 | goto label_91;
| }
0x000020f6 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x000020fa cmp r2, 0 |
| if (r2 == 0) {
0x000020fc beq.w 0x227c | goto label_92;
| }
0x00002100 ldr r3, [r2] | r3 = *(r2);
0x00002102 add.w r1, fp, 0x20 | r1 += arg_20h;
| if (r3 == 0) {
0x00002106 cbz r3, 0x2174 | goto label_93;
| }
0x00002108 movw r6, 0xfdff |
0x0000210c movw lr, 0xfeff |
0x00002110 movw r8, 0xff41 |
0x00002114 movw ip, 0xfe35 |
0x00002118 movs r5, 0x22 | r5 = 0x22;
0x0000211a movt r6, 0x6fff | r6 = 0x6ffffdff;
0x0000211e movt lr, 0x6fff | lr = 0x6ffffeff;
0x00002122 movt r8, 0x6fff | r8 = 0x6fffff41;
0x00002126 movt ip, 0x6fff | ip = 0x6ffffe35;
0x0000212a movt r5, 0x7000 | r5 = (r5 & 0xFFFF) | 0x70000000;
0x0000212e mvn r4, 0x90000000 | r4 = ~0x90000000;
| do {
0x00002132 cmp r3, 0x22 |
| if (r3 >= 0x22) {
0x00002134 bls 0x2168 |
0x00002136 subs r0, r4, r3 | r0 = r4 - r3;
0x00002138 cmp r0, 0xf |
0x0000213a it ls |
| if (r0 > 0xf) {
0x0000213c subls r3, r5, r3 | r3 = r5 - r3;
| }
| if (r0 < 0xf) {
0x0000213e bls 0x2168 | goto label_94;
| }
0x00002140 sbfx r0, r3, 0, 0x1f | __asm ("sbfx r0, r3, 0, 0x1f");
0x00002144 cmn.w r0, 4 |
0x00002148 it hi |
| if (r0 > 4) {
0x0000214a rsbhi r3, r0, 0x32 | __asm ("rsbhi r3, r0, 0x32");
| }
| if (r0 > 4) {
0x0000214e bhi 0x2168 | goto label_94;
| }
0x00002150 subs r0, r6, r3 | r0 = r6 - r3;
0x00002152 cmp r0, 0xb |
0x00002154 it ls |
| if (r0 > 0xb) {
0x00002156 subls r3, ip, r3 | r3 = ip - r3;
| }
| if (r0 < 0xb) {
0x0000215a bls 0x2168 | goto label_94;
| }
0x0000215c sub.w r0, lr, r3 | r0 = lr - r3;
0x00002160 cmp r0, 0xa |
| if (r0 > 0xa) {
0x00002162 bhi 0x216c | goto label_95;
| }
0x00002164 sub.w r3, r8, r3 | r3 = r8 - r3;
| }
| label_94:
0x00002168 str.w r2, [r1, r3, lsl 2] | __asm ("str.w r2, [r1, r3, lsl 2]");
| label_95:
0x0000216c ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00002170 cmp r3, 0 |
0x00002172 bne 0x2132 |
| } while (r3 != 0);
| label_93:
0x00002174 ldr.w r3, [fp] | r3 = *(fp);
0x00002178 cmp r3, 0 |
| if (r3 != 0) {
0x0000217a beq 0x21e8 |
0x0000217c ldr.w r2, [fp, 0x30] | r2 = *(arg_30h);
| if (r2 != 0) {
0x00002180 cbz r2, 0x2188 |
0x00002182 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00002184 add r1, r3 | r1 += r3;
0x00002186 str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x00002188 ldr.w r2, [fp, 0x2c] | r2 = *(arg_2ch);
| if (r2 != 0) {
0x0000218c cbz r2, 0x2194 |
0x0000218e ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00002190 add r1, r3 | r1 += r3;
0x00002192 str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x00002194 ldr.w r2, [fp, 0x34] | r2 = *(arg_34h);
| if (r2 != 0) {
0x00002198 cbz r2, 0x21a0 |
0x0000219a ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x0000219c add r1, r3 | r1 += r3;
0x0000219e str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x000021a0 ldr.w r2, [fp, 0x38] | r2 = *(arg_38h);
| if (r2 != 0) {
0x000021a4 cbz r2, 0x21ac |
0x000021a6 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000021a8 add r1, r3 | r1 += r3;
0x000021aa str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x000021ac ldr.w r2, [fp, 0x3c] | r2 = *(arg_3ch);
| if (r2 != 0) {
0x000021b0 cbz r2, 0x21b8 |
0x000021b2 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000021b4 add r1, r3 | r1 += r3;
0x000021b6 str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x000021b8 ldr.w r2, [fp, 0x64] | r2 = *(arg_64h);
| if (r2 != 0) {
0x000021bc cbz r2, 0x21c4 |
0x000021be ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000021c0 add r1, r3 | r1 += r3;
0x000021c2 str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x000021c4 ldr.w r2, [fp, 0x7c] | r2 = *(arg_7ch);
| if (r2 != 0) {
0x000021c8 cbz r2, 0x21d0 |
0x000021ca ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000021cc add r1, r3 | r1 += r3;
0x000021ce str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x000021d0 ldr.w r2, [fp, 0xe8] | r2 = *(arg_e8h);
| if (r2 != 0) {
0x000021d4 cbz r2, 0x21dc |
0x000021d6 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000021d8 add r1, r3 | r1 += r3;
0x000021da str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
0x000021dc ldr.w r2, [fp, 0x150] | r2 = *(arg_150h);
| if (r2 == 0) {
0x000021e0 cbz r2, 0x21e8 | goto label_96;
| }
0x000021e2 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000021e4 add r1, r3 | r1 += r3;
0x000021e6 str r1, [r2, 4] | *((r2 + 4)) = r1;
| }
| label_96:
0x000021e8 ldr.w r3, [fp, 0x70] | r3 = *(arg_70h);
| if (r3 != 0) {
0x000021ec cbz r3, 0x21fa |
0x000021ee ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000021f0 cmp r3, 7 |
0x000021f2 it ne |
| if (r3 != 7) {
0x000021f4 cmpne r3, 0x11 | __asm ("cmpne r3, 0x11");
| }
| if (r3 != 7) {
0x000021f6 bne.w 0x43d6 | goto label_97;
| }
| }
0x000021fa ldr.w r3, [fp, 0x3c] | r3 = *(arg_3ch);
| if (r3 != 0) {
0x000021fe cbz r3, 0x220c |
0x00002200 ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x00002204 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00002206 cmp r3, 0xc |
| if (r3 != 0xc) {
0x00002208 bne.w 0x43b2 | goto label_98;
| }
| }
0x0000220c ldr.w r3, [fp, 0x64] | r3 = *(arg_64h);
| if (r3 != 0) {
0x00002210 cbz r3, 0x221e |
0x00002212 ldr.w r3, [fp, 0x6c] | r3 = *(arg_6ch);
0x00002216 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00002218 cmp r3, 8 |
| if (r3 != 8) {
0x0000221a bne.w 0x43c4 | goto label_99;
| }
| }
0x0000221e ldr.w r2, [fp, 0x98] | r2 = *(arg_98h);
| if (r2 != 0) {
0x00002222 cbz r2, 0x2242 |
0x00002224 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00002226 lsls r0, r3, 0x1e | r0 = r3 << 0x1e;
0x00002228 str.w r3, [fp, 0x210] | __asm ("str.w r3, [arg_210h]");
0x0000222c it mi |
| if (r0 >= r3) {
0x0000222e strmi r2, [fp, 0x60] | *(arg_60h) = r2;
| }
0x00002232 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
0x00002234 it mi |
| if (r1 >= r3) {
0x00002236 strmi r2, [fp, 0x78] | *(arg_78h) = r2;
| }
0x0000223a lsls r6, r3, 0x1c | r6 = r3 << 0x1c;
0x0000223c it mi |
| if (r6 < r3) {
0x0000223e strmi r2, [fp, 0x80] | *(arg_80h) = r2;
| goto label_100;
| }
| }
| label_100:
0x00002242 ldr.w r3, [fp, 0xbc] | r3 = *(arg_bch);
| if (r3 != 0) {
0x00002246 cbz r3, 0x2270 |
0x00002248 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000224a lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
0x0000224c str.w r3, [fp, 0x20c] | __asm ("str.w r3, [arg_20ch]");
0x00002250 itt mi |
| if (r5 >= r3) {
0x00002252 movmi r2, 1 | r2 = 1;
| }
| if (r5 >= r3) {
0x00002254 strbmi r2, [fp, 0x19c] | *(arg_19ch) = r2;
| }
0x00002258 ldr r2, [pc, 0x1c0] |
0x0000225a add r2, pc |
0x0000225c ldr r2, [r2] | r2 = *(0x467a);
0x0000225e lsls r4, r2, 0x19 | r4 = r2 << 0x19;
| if (r4 < r2) {
0x00002260 bmi.w 0x410c | goto label_101;
| }
| label_53:
0x00002264 lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
0x00002266 itt mi |
| if (r0 >= r3) {
0x00002268 ldrmi r3, [fp, 0xbc] | r3 = *(arg_bch);
| }
| if (r0 >= r3) {
0x0000226c str.w r3, [fp, 0x80] | __asm ("str.w r3, [arg_80h]");
| goto label_102;
| }
| }
| label_102:
0x00002270 ldr.w r3, [fp, 0x94] | r3 = *(arg_94h);
| if (r3 != 0) {
0x00002274 cbz r3, 0x227c |
0x00002276 movs r3, 0 | r3 = 0;
0x00002278 str.w r3, [fp, 0x5c] | __asm ("str.w r3, [arg_5ch]");
| }
| label_92:
0x0000227c ldr.w r3, [fp, 0x58] | r3 = *(arg_58h);
| if (r3 != 0) {
0x00002280 cbz r3, 0x229a |
0x00002282 ldr.w r2, [fp, 0x34] | r2 = *(arg_34h);
0x00002286 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00002288 ldr r1, [pc, 0x194] |
0x0000228a ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x0000228c add r1, pc | r1 = 0x46b0;
0x0000228e add r0, r3 | r0 += r3;
0x00002290 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00002294 cmp r0, 0 |
| if (r0 == 0) {
0x00002296 beq.w 0x3450 | goto label_103;
| }
| }
| label_19:
0x0000229a mov r0, fp | r0 = fp;
0x0000229c bl 0x8850 | fcn_00008850 (r0);
| label_91:
0x000022a0 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x000022a4 cmp r3, 2 |
| if (r3 == 2) {
0x000022a6 beq.w 0x3864 | goto label_104;
| }
| label_29:
0x000022aa ldr r4, [pc, 0x178] |
0x000022ac add r4, pc | r4 = 0x46d6;
0x000022ae ldr.w r3, [r4, 0x190] | r3 = *(0x4866);
0x000022b2 cmp r3, 0 |
| if (r3 == 0) {
0x000022b4 beq.w 0x2eaa | goto label_105;
| }
0x000022b8 ldr r1, [pc, 0x16c] |
0x000022ba movs r6, 0 | r6 = 0;
0x000022bc mov r3, r6 | r3 = r6;
0x000022be movs r2, 1 | r2 = 1;
0x000022c0 strd r6, r6, [sp] | __asm ("strd r6, r6, [sp]");
0x000022c4 add r1, pc | r1 = 0x46f0;
0x000022c6 mov r0, r1 | r0 = r1;
0x000022c8 bl 0x8950 | r0 = fcn_00008950 (r0, r1, r2, r3, r4, r5);
0x000022cc mov r5, r0 | r5 = r0;
0x000022ce cmp r0, 0 |
| if (r0 == 0) {
0x000022d0 beq.w 0x2eaa | goto label_105;
| }
0x000022d4 ldr.w r4, [r4, 0x190] | r4 = *((r4 + 0x190));
0x000022d8 mov r3, r6 | r3 = r6;
0x000022da ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x000022dc add r2, r4 | r2 += r4;
0x000022de str.w r2, [r0, 0x154] | __asm ("str.w r2, [r0, 0x154]");
0x000022e2 ldrh r0, [r4, 0x2c] | r0 = *((r4 + 0x2c));
0x000022e4 strh.w r0, [r5, 0x15c] | *((r5 + 0x15c)) = r0;
0x000022e8 cmp r0, 0 |
| if (r0 != 0) {
0x000022ea bne.w 0x2440 | goto label_2;
| }
0x000022ee b 0x2460 | goto label_106;
| do {
0x0000242c cmp r1, 1 |
| if (r1 == 1) {
0x0000242e beq.w 0x2e56 | goto label_107;
| }
0x00002432 cmp r1, 7 |
| if (r1 == 7) {
0x00002434 beq.w 0x43f0 | goto label_108;
| }
| label_6:
0x00002438 adds r3, 1 | r3++;
0x0000243a adds r2, 0x20 | r2 += 0x20;
0x0000243c cmp r3, r0 |
| if (r3 == r0) {
0x0000243e beq 0x2460 | goto label_106;
| }
| label_2:
0x00002440 ldr r1, [r2] | r1 = *(r2);
0x00002442 cmp r1, 2 |
0x00002444 bne 0x242c |
| } while (r1 != 2);
0x00002446 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x00002448 adds r3, 1 | r3++;
0x0000244a cmp r3, r0 |
0x0000244c add.w r2, r2, 0x20 | r2 += 0x20;
0x00002450 str r1, [r5, 8] | *((r5 + 8)) = r1;
0x00002452 ldr r1, [r2, -0xc] | r1 = *((r2 - 0xc));
0x00002456 lsr.w r1, r1, 3 | r1 >>= 3;
0x0000245a strh.w r1, [r5, 0x15e] | *((r5 + 0x15e)) = r1;
| if (r3 != r0) {
0x0000245e bne 0x2440 | goto label_2;
| }
| label_106:
0x00002460 ldr r1, [r5] | r1 = *(r5);
0x00002462 ldr.w r3, [r5, 0x1b8] | r3 = *((r5 + 0x1b8));
0x00002466 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00002468 subs r1, r4, r1 | r1 = r4 - r1;
0x0000246a str.w r4, [r5, 0x1b4] | __asm ("str.w r4, [r5, 0x1b4]");
0x0000246e add r3, r1 | r3 += r1;
0x00002470 str r1, [r5] | *(r5) = r1;
0x00002472 str.w r3, [r5, 0x1b8] | __asm ("str.w r3, [r5, 0x1b8]");
0x00002476 adds r2, r0, r1 | r2 = r0 + r1;
0x00002478 ldr.w r3, [r5, 0x1bc] | r3 = *((r5 + 0x1bc));
0x0000247c str r2, [r5, 8] | *((r5 + 8)) = r2;
0x0000247e add r3, r1 | r3 += r1;
0x00002480 str.w r3, [r5, 0x1bc] | __asm ("str.w r3, [r5, 0x1bc]");
0x00002484 cmp r2, 0 |
| if (r2 == 0) {
0x00002486 beq.w 0x26ba | goto label_109;
| }
0x0000248a ldr r3, [r0, r1] | r3 = *((r0 + r1));
0x0000248c add.w r0, r5, 0x20 | r0 = r5 + 0x20;
| if (r3 == 0) {
0x00002490 cbz r3, 0x2506 | goto label_110;
| }
0x00002492 movw lr, 0xfdff |
0x00002496 movw r8, 0xfeff |
0x0000249a movw sb, 0xfe35 |
0x0000249e mov.w ip, 0x22 |
0x000024a2 movw r4, 0xff41 |
0x000024a6 movt lr, 0x6fff | lr = 0x6ffffdff;
0x000024aa movt r8, 0x6fff | r8 = 0x6ffffeff;
0x000024ae movt sb, 0x6fff | sb = 0x6ffffe35;
0x000024b2 movt ip, 0x7000 |
0x000024b6 mvn r6, 0x90000000 | r6 = ~0x90000000;
0x000024ba movt r4, 0x6fff | r4 = 0x6fffff41;
0x000024be str r4, [r7, 0x40] | *((r7 + 0x40)) = r4;
| do {
0x000024c0 cmp r3, 0x22 |
| if (r3 >= 0x22) {
0x000024c2 bls 0x24fa |
0x000024c4 subs r4, r6, r3 | r4 = r6 - r3;
0x000024c6 cmp r4, 0xf |
0x000024c8 it ls |
| if (r4 > 0xf) {
0x000024ca subls r3, ip, r3 | r3 = ip - r3;
| }
| if (r4 < 0xf) {
0x000024ce bls 0x24fa | goto label_111;
| }
0x000024d0 sbfx r4, r3, 0, 0x1f | __asm ("sbfx r4, r3, 0, 0x1f");
0x000024d4 cmn.w r4, 4 |
0x000024d8 it hi |
| if (r4 > 4) {
0x000024da rsbhi r3, r4, 0x32 | __asm ("rsbhi r3, r4, 0x32");
| }
| if (r4 > 4) {
0x000024de bhi 0x24fa | goto label_111;
| }
0x000024e0 sub.w r4, lr, r3 | r4 = lr - r3;
0x000024e4 cmp r4, 0xb |
0x000024e6 it ls |
| if (r4 > 0xb) {
0x000024e8 subls r3, sb, r3 | r3 = sb - r3;
| }
| if (r4 < 0xb) {
0x000024ec bls 0x24fa | goto label_111;
| }
0x000024ee sub.w r4, r8, r3 | r4 = r8 - r3;
0x000024f2 cmp r4, 0xa |
| if (r4 > 0xa) {
0x000024f4 bhi 0x24fe | goto label_112;
| }
0x000024f6 ldr r4, [r7, 0x40] | r4 = *((r7 + 0x40));
0x000024f8 subs r3, r4, r3 | r3 = r4 - r3;
| }
| label_111:
0x000024fa str.w r2, [r0, r3, lsl 2] | __asm ("str.w r2, [r0, r3, lsl 2]");
| label_112:
0x000024fe ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00002502 cmp r3, 0 |
0x00002504 bne 0x24c0 |
| } while (r3 != 0);
| label_110:
0x00002506 cmp r1, 0 |
| if (r1 != 0) {
0x00002508 beq.w 0x2634 |
0x0000250c ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
| if (r3 != 0) {
0x0000250e cbz r3, 0x2526 |
0x00002510 ldr.w r2, [pc, 0xc08] | r2 = *(0x0000311c);
0x00002514 ldrd r3, r0, [r3] | __asm ("ldrd r3, r0, [r3]");
0x00002518 add r2, pc | r2 += pc;
0x0000251a str r3, [r2, 4] | *((r2 + 4)) = r3;
0x0000251c add r0, r1 | r0 += r1;
0x0000251e movs r3, 1 | r3 = 1;
0x00002520 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x00002522 adds r2, 4 | r2 += 4;
0x00002524 str r2, [r5, 0x30] | *((r5 + 0x30)) = r2;
| }
0x00002526 ldr r4, [r5, 0x2c] | r4 = *((r5 + 0x2c));
| if (r4 != 0) {
0x00002528 cbz r4, 0x2546 |
0x0000252a ldr.w r2, [pc, 0xbf4] | r2 = *(0x00003120);
0x0000252e ldr r0, [r4] | r0 = *(r4);
0x00002530 add r2, pc | r2 += pc;
0x00002532 adds r2, 4 | r2 += 4;
0x00002534 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x00002538 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x0000253c ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000253e adds r3, 1 | r3++;
0x00002540 add r0, r1 | r0 += r1;
0x00002542 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x00002544 str r2, [r5, 0x2c] | *((r5 + 0x2c)) = r2;
| }
0x00002546 ldr r4, [r5, 0x34] | r4 = *((r5 + 0x34));
| if (r4 != 0) {
0x00002548 cbz r4, 0x2566 |
0x0000254a ldr.w r2, [pc, 0xbd8] | r2 = *(0x00003124);
0x0000254e ldr r0, [r4] | r0 = *(r4);
0x00002550 add r2, pc | r2 += pc;
0x00002552 adds r2, 4 | r2 += 4;
0x00002554 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x00002558 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x0000255c ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000255e adds r3, 1 | r3++;
0x00002560 add r0, r1 | r0 += r1;
0x00002562 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x00002564 str r2, [r5, 0x34] | *((r5 + 0x34)) = r2;
| }
0x00002566 ldr r4, [r5, 0x38] | r4 = *((r5 + 0x38));
| if (r4 != 0) {
0x00002568 cbz r4, 0x2586 |
0x0000256a ldr.w r2, [pc, 0xbbc] | r2 = *(0x00003128);
0x0000256e ldr r0, [r4] | r0 = *(r4);
0x00002570 add r2, pc | r2 += pc;
0x00002572 adds r2, 4 | r2 += 4;
0x00002574 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x00002578 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x0000257c ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000257e adds r3, 1 | r3++;
0x00002580 add r0, r1 | r0 += r1;
0x00002582 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x00002584 str r2, [r5, 0x38] | *((r5 + 0x38)) = r2;
| }
0x00002586 ldr r4, [r5, 0x3c] | r4 = *((r5 + 0x3c));
| if (r4 != 0) {
0x00002588 cbz r4, 0x25a6 |
0x0000258a ldr.w r2, [pc, 0xba0] | r2 = *(0x0000312c);
0x0000258e ldr r0, [r4] | r0 = *(r4);
0x00002590 add r2, pc | r2 += pc;
0x00002592 adds r2, 4 | r2 += 4;
0x00002594 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x00002598 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x0000259c ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0000259e adds r3, 1 | r3++;
0x000025a0 add r0, r1 | r0 += r1;
0x000025a2 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x000025a4 str r2, [r5, 0x3c] | *((r5 + 0x3c)) = r2;
| }
0x000025a6 ldr r4, [r5, 0x64] | r4 = *((r5 + 0x64));
| if (r4 != 0) {
0x000025a8 cbz r4, 0x25c6 |
0x000025aa ldr.w r2, [pc, 0xb84] | r2 = *(0x00003130);
0x000025ae ldr r0, [r4] | r0 = *(r4);
0x000025b0 add r2, pc | r2 += pc;
0x000025b2 adds r2, 4 | r2 += 4;
0x000025b4 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x000025b8 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x000025bc ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000025be adds r3, 1 | r3++;
0x000025c0 add r0, r1 | r0 += r1;
0x000025c2 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x000025c4 str r2, [r5, 0x64] | *((r5 + 0x64)) = r2;
| }
0x000025c6 ldr r4, [r5, 0x7c] | r4 = *((r5 + 0x7c));
| if (r4 != 0) {
0x000025c8 cbz r4, 0x25e6 |
0x000025ca ldr.w r2, [pc, 0xb68] | r2 = *(0x00003134);
0x000025ce ldr r0, [r4] | r0 = *(r4);
0x000025d0 add r2, pc | r2 += pc;
0x000025d2 adds r2, 4 | r2 += 4;
0x000025d4 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x000025d8 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x000025dc ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000025de adds r3, 1 | r3++;
0x000025e0 add r0, r1 | r0 += r1;
0x000025e2 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x000025e4 str r2, [r5, 0x7c] | *((r5 + 0x7c)) = r2;
| }
0x000025e6 ldr.w r4, [r5, 0xe8] | r4 = *((r5 + 0xe8));
| if (r4 != 0) {
0x000025ea cbz r4, 0x260a |
0x000025ec ldr.w r2, [pc, 0xb48] | r2 = *(0x00003138);
0x000025f0 ldr r0, [r4] | r0 = *(r4);
0x000025f2 add r2, pc | r2 += pc;
0x000025f4 adds r2, 4 | r2 += 4;
0x000025f6 str.w r0, [r2, r3, lsl 3] | __asm ("str.w r0, [r2, r3, lsl 3]");
0x000025fa add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x000025fe ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00002600 adds r3, 1 | r3++;
0x00002602 add r0, r1 | r0 += r1;
0x00002604 str r0, [r2, 4] | *((r2 + 4)) = r0;
0x00002606 str.w r2, [r5, 0xe8] | __asm ("str.w r2, [r5, 0xe8]");
| }
0x0000260a ldr.w r4, [r5, 0x150] | r4 = *((r5 + 0x150));
| if (r4 == 0) {
0x0000260e cbz r4, 0x2634 | goto label_113;
| }
0x00002610 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00002612 cmp r3, 8 |
0x00002614 ldr.w r2, [pc, 0xb24] | r2 = *(0x0000313c);
0x00002618 add r0, r1 | r0 += r1;
0x0000261a ldr r1, [r4] | r1 = *(r4);
0x0000261c add r2, pc | r2 += pc;
0x0000261e add.w r2, r2, 4 | r2 += 4;
0x00002622 str.w r1, [r2, r3, lsl 3] | __asm ("str.w r1, [r2, r3, lsl 3]");
0x00002626 add.w r2, r2, r3, lsl 3 | r2 += (r3 << 3);
0x0000262a str r0, [r2, 4] | *((r2 + 4)) = r0;
0x0000262c str.w r2, [r5, 0x150] | __asm ("str.w r2, [r5, 0x150]");
| if (r3 == 8) {
0x00002630 beq.w 0x42a6 | goto label_114;
| }
| }
| label_113:
0x00002634 ldr r3, [r5, 0x70] | r3 = *((r5 + 0x70));
| if (r3 != 0) {
0x00002636 cbz r3, 0x2644 |
0x00002638 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000263a cmp r3, 7 |
0x0000263c it ne |
| if (r3 != 7) {
0x0000263e cmpne r3, 0x11 | __asm ("cmpne r3, 0x11");
| }
| if (r3 != 7) {
0x00002640 bne.w 0x43d6 | goto label_97;
| }
| }
0x00002644 ldr r3, [r5, 0x3c] | r3 = *((r5 + 0x3c));
| if (r3 != 0) {
0x00002646 cbz r3, 0x2652 |
0x00002648 ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x0000264a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000264c cmp r3, 0xc |
| if (r3 != 0xc) {
0x0000264e bne.w 0x43b2 | goto label_98;
| }
| }
0x00002652 ldr r3, [r5, 0x64] | r3 = *((r5 + 0x64));
| if (r3 != 0) {
0x00002654 cbz r3, 0x2660 |
0x00002656 ldr r3, [r5, 0x6c] | r3 = *((r5 + 0x6c));
0x00002658 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000265a cmp r3, 8 |
| if (r3 != 8) {
0x0000265c bne.w 0x43c4 | goto label_99;
| }
| }
0x00002660 ldr.w r3, [r5, 0x98] | r3 = *((r5 + 0x98));
| if (r3 != 0) {
0x00002664 cbz r3, 0x2680 |
0x00002666 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00002668 lsls r1, r2, 0x1e | r1 = r2 << 0x1e;
0x0000266a str.w r2, [r5, 0x210] | __asm ("str.w r2, [r5, 0x210]");
0x0000266e it mi |
| if (r1 >= r2) {
0x00002670 strmi r3, [r5, 0x60] | *((r5 + 0x60)) = r3;
| }
0x00002672 lsls r6, r2, 0x1d | r6 = r2 << 0x1d;
0x00002674 it mi |
| if (r6 >= r2) {
0x00002676 strmi r3, [r5, 0x78] | *((r5 + 0x78)) = r3;
| }
0x00002678 lsls r4, r2, 0x1c | r4 = r2 << 0x1c;
0x0000267a it mi |
| if (r4 < r2) {
0x0000267c strmi r3, [r5, 0x80] | *((r5 + 0x80)) = r3;
| goto label_115;
| }
| }
| label_115:
0x00002680 ldr.w r3, [r5, 0xbc] | r3 = *((r5 + 0xbc));
| if (r3 != 0) {
0x00002684 cbz r3, 0x26b0 |
0x00002686 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00002688 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
0x0000268a str.w r3, [r5, 0x20c] | __asm ("str.w r3, [r5, 0x20c]");
0x0000268e itt mi |
| if (r0 >= r3) {
0x00002690 movmi r2, 1 | r2 = 1;
| }
| if (r0 >= r3) {
0x00002692 strbmi r2, [r5, 0x19c] | *((r5 + 0x19c)) = r2;
| }
0x00002696 ldr.w r2, [pc, 0xaa8] | r2 = *(0x00003140);
0x0000269a add r2, pc | r2 += pc;
0x0000269c ldr r2, [r2] | r2 = *(r2);
0x0000269e lsls r1, r2, 0x19 | r1 = r2 << 0x19;
| if (r1 < r2) {
0x000026a0 bmi.w 0x4084 | goto label_116;
| }
| label_48:
0x000026a4 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x000026a6 itt mi |
| if (r2 >= r3) {
0x000026a8 ldrmi r3, [r5, 0xbc] | r3 = *((r5 + 0xbc));
| }
| if (r2 >= r3) {
0x000026ac str.w r3, [r5, 0x80] | __asm ("str.w r3, [r5, 0x80]");
| goto label_117;
| }
| }
| label_117:
0x000026b0 ldr.w r3, [r5, 0x94] | r3 = *((r5 + 0x94));
| if (r3 != 0) {
0x000026b4 cbz r3, 0x26ba |
0x000026b6 movs r3, 0 | r3 = 0;
0x000026b8 str r3, [r5, 0x5c] | *((r5 + 0x5c)) = r3;
| }
| label_109:
0x000026ba mov r0, r5 | r0 = r5;
0x000026bc bl 0x8850 | fcn_00008850 (r0);
0x000026c0 ldrb.w r3, [r5, 0x198] | r3 = *((r5 + 0x198));
0x000026c4 movs r2, 1 | r2 = 1;
0x000026c6 ldr r1, [r5, 0x58] | r1 = *((r5 + 0x58));
0x000026c8 str.w r2, [r5, 0x204] | __asm ("str.w r2, [r5, 0x204]");
0x000026cc orr r3, r3, 4 | r3 |= 4;
0x000026d0 strb.w r3, [r5, 0x198] | *((r5 + 0x198)) = r3;
0x000026d4 ldr.w r3, [r5, 0x1d8] | r3 = *((r5 + 0x1d8));
0x000026d8 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x000026da add.w r2, r5, 0x14 | r2 = r5 + 0x14;
0x000026de str r2, [r3] | *(r3) = r2;
| if (r1 != 0) {
0x000026e0 cbz r1, 0x26f0 |
0x000026e2 ldr r3, [r5, 0x34] | r3 = *((r5 + 0x34));
0x000026e4 ldr r2, [r1, 4] | r2 = *((r1 + 4));
0x000026e6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000026e8 add r3, r2 | r3 += r2;
0x000026ea ldr r2, [r5, 0x1c] | r2 = *((r5 + 0x1c));
0x000026ec str r3, [r2] | *(r2) = r3;
0x000026ee str r3, [r5, 4] | *((r5 + 4)) = r3;
| }
0x000026f0 movs r1, 0 | r1 = 0;
0x000026f2 mov r0, r5 | r0 = r5;
0x000026f4 bl 0x88cc | fcn_000088cc (r0, r1);
0x000026f8 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000026fa cmp r3, 0 |
| if (r3 != 0) {
0x000026fc bne.w 0x4416 | goto label_118;
| }
0x00002700 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00002702 cmp fp, r3 |
| if (fp != r3) {
0x00002704 bne.w 0x443c | goto label_119;
| }
0x00002708 ldr.w r3, [pc, 0xa38] | r3 = *(0x00003144);
0x0000270c add r3, pc | r3 += pc;
0x0000270e str.w r5, [r3, 0x5a4] | __asm ("str.w r5, [r3, 0x5a4]");
0x00002712 add.w r3, r3, 0x598 | r3 += 0x598;
0x00002716 str r3, [r5, 0x10] | *((r5 + 0x10)) = r3;
0x00002718 ldr.w r3, [pc, 0xa2c] | r3 = *(0x00003148);
0x0000271c add r3, pc | r3 += pc;
0x0000271e str.w r5, [r3, 0x194] | __asm ("str.w r5, [r3, 0x194]");
0x00002722 add.w r3, r5, 0xc | r3 = r5 + 0xc;
0x00002726 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
| label_8:
0x00002728 ldr.w r3, [pc, 0xa20] | r3 = *(0x0000314c);
0x0000272c movs r4, 0 | r4 = 0;
0x0000272e ldr r1, [r7, 0x44] | r1 = *((r7 + 0x44));
0x00002730 movs r2, 0x20 | r2 = 0x20;
0x00002732 add.w r6, r7, 0x64 | r6 = r7 + 0x64;
0x00002736 ldr.w sb, [pc, 0xa18] | sb = *(0x00003150);
0x0000273a add r3, pc | r3 += pc;
0x0000273c add.w r8, r7, 0x50 | r8 = r7 + 0x50;
0x00002740 str r4, [r1, 0xc] | *((r1 + 0xc)) = r4;
0x00002742 strd r4, r4, [r1] | __asm ("strd r4, r4, [r1]");
0x00002746 add sb, pc | sb += pc;
0x00002748 str r4, [r1, 8] | *((r1 + 8)) = r4;
0x0000274a strb r2, [r1, 0xc] | *((r1 + 0xc)) = r2;
0x0000274c str.w r1, [r8] | __asm ("str.w r1, [r8]");
0x00002750 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00002752 stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x00002756 mov r2, r8 | r2 = r8;
0x00002758 ldr.w r0, [pc, 0x9f8] | r0 = *(0x00003154);
0x0000275c add.w r3, r5, 0x1d8 | r3 = r5 + 0x1d8;
0x00002760 mov r1, r5 | r1 = r5;
0x00002762 strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [sp, 8]");
0x00002766 strd r6, r4, [sp] | __asm ("strd r6, r4, [sp]");
0x0000276a add r0, pc | r0 += pc;
0x0000276c ldr.w r4, [sb, 0x1b8] | r4 = *((sb + 0x1b8));
0x00002770 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00002772 ldr.w r2, [r8] | r2 = *(r8);
0x00002776 cmp r2, 0 |
| if (r2 == 0) {
0x00002778 beq.w 0x36ac | goto label_120;
| }
0x0000277c ldrh r3, [r2, 0xe] | r3 = *((r2 + 0xe));
0x0000277e movw r1, 0xfff1 | r1 = 0xfff1;
0x00002782 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00002784 cmp r3, r1 |
0x00002786 it ne |
| if (r3 != r1) {
0x00002788 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0000278a itte ne |
| if (r3 == r1) {
0x0000278c movne r3, 1 | r3 = 1;
| }
| if (r3 == r1) {
0x0000278e ldrne r3, [r0] | r3 = *(r0);
| }
| if (r3 != r1) {
0x00002790 moveq r3, 0 | r3 = 0;
| }
0x00002792 add r3, r2 | r3 += r2;
0x00002794 ldr.w r2, [pc, 0x9c0] | r2 = *(0x00003158);
0x00002798 add r2, pc | r2 += pc;
0x0000279a ldr.w ip, [r2, 0x194] | ip = *((r2 + 0x194));
| label_27:
0x0000279e ldr.w r5, [pc, 0x9bc] | r5 = *(0x0000315c);
0x000027a2 add r5, pc | r5 += pc;
0x000027a4 str.w r3, [r5, 0x198] | __asm ("str.w r3, [r5, 0x198]");
0x000027a8 cmp.w ip, 0 |
| if (ip == 0) {
0x000027ac beq.w 0x35bc | goto label_121;
| }
0x000027b0 ldr.w r3, [pc, 0x9ac] | r3 = *(0x00003160);
0x000027b4 movs r4, 0 | r4 = 0;
0x000027b6 ldr r1, [r7, 0x44] | r1 = *((r7 + 0x44));
0x000027b8 movs r2, 0x20 | r2 = 0x20;
0x000027ba add r3, pc | r3 += pc;
0x000027bc str r4, [r1, 0xc] | *((r1 + 0xc)) = r4;
0x000027be strd r4, r4, [r1] | __asm ("strd r4, r4, [r1]");
0x000027c2 str r4, [r1, 8] | *((r1 + 8)) = r4;
0x000027c4 str.w r1, [r8] | __asm ("str.w r1, [r8]");
0x000027c8 strb r2, [r1, 0xc] | *((r1 + 0xc)) = r2;
0x000027ca ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x000027cc stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x000027d0 mov r2, r8 | r2 = r8;
0x000027d2 ldr.w r0, [pc, 0x990] |
0x000027d6 add.w r3, ip, 0x1d8 | r3 = ip + 0x1d8;
0x000027da mov r1, ip | r1 = ip;
0x000027dc strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [sp, 8]");
0x000027e0 strd r6, r4, [sp] | __asm ("strd r6, r4, [sp]");
0x000027e4 add r0, pc | r0 = 0x594e;
0x000027e6 ldr.w r4, [r5, 0x1b8] | r4 = *((r5 + 0x1b8));
0x000027ea blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000027ec ldr.w r2, [r8] | r2 = *(r8);
0x000027f0 cmp r2, 0 |
| if (r2 == 0) {
0x000027f2 beq.w 0x36a2 | goto label_122;
| }
0x000027f6 ldrh r3, [r2, 0xe] | r3 = *((r2 + 0xe));
0x000027f8 movw r1, 0xfff1 | r1 = 0xfff1;
0x000027fc ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x000027fe cmp r3, r1 |
0x00002800 it ne |
| if (r3 != r1) {
0x00002802 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x00002804 itte ne |
| if (r3 == r1) {
0x00002806 movne r3, 1 | r3 = 1;
| }
| if (r3 == r1) {
0x00002808 ldrne r3, [r0] | r3 = *(r0);
| }
| if (r3 != r1) {
0x0000280a moveq r3, 0 | r3 = 0;
| }
0x0000280c add r3, r2 | r3 += r2;
0x0000280e ldr.w r2, [pc, 0x958] | r2 = *(0x00003168);
0x00002812 add r2, pc | r2 += pc;
0x00002814 ldr.w r5, [r2, 0x194] | r5 = *((r2 + 0x194));
| label_26:
0x00002818 ldr.w ip, [pc, 0x950] | ip = *(0x0000316c);
0x0000281c add ip, pc |
0x0000281e str.w r3, [ip, 0x19c] | __asm ("str.w r3, [ip, 0x19c]");
0x00002820 adds r1, 0x9c | r1 += 0x9c;
0x00002822 cmp r5, 0 |
| if (r5 == 0) {
0x00002824 beq.w 0x35c8 | goto label_123;
| }
0x00002828 ldr.w r3, [pc, 0x944] | r3 = *(0x00003170);
0x0000282c movs r4, 0 | r4 = 0;
0x0000282e ldr r1, [r7, 0x44] | r1 = *((r7 + 0x44));
0x00002830 movs r2, 0x20 | r2 = 0x20;
0x00002832 add r3, pc | r3 += pc;
0x00002834 str r4, [r1, 0xc] | *((r1 + 0xc)) = r4;
0x00002836 strd r4, r4, [r1] | __asm ("strd r4, r4, [r1]");
0x0000283a str r4, [r1, 8] | *((r1 + 8)) = r4;
0x0000283c str.w r1, [r8] | __asm ("str.w r1, [r8]");
0x00002840 strb r2, [r1, 0xc] | *((r1 + 0xc)) = r2;
0x00002842 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00002844 stm.w r6, {r0, r1, r2, r3} | *(r6) = r0;
| *((r6 + 4)) = r1;
| *((r6 + 8)) = r2;
| *((r6 + 12)) = r3;
0x00002848 mov r2, r8 | r2 = r8;
0x0000284a ldr.w r0, [pc, 0x928] | r0 = *(0x00003174);
0x0000284e add.w r3, r5, 0x1d8 | r3 = r5 + 0x1d8;
0x00002852 mov r1, r5 | r1 = r5;
0x00002854 str r6, [sp] | *(sp) = r6;
0x00002856 strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [sp, 8]");
0x0000285a add r0, pc | r0 += pc;
0x0000285c str r4, [sp, 4] | *(arg_4h) = r4;
0x0000285e ldr.w r4, [ip, 0x1b8] | r4 = *((ip + 0x1b8));
0x00002862 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00002864 ldr.w r2, [r8] | r2 = *(r8);
0x00002868 cmp r2, 0 |
| if (r2 == 0) {
0x0000286a beq.w 0x35c8 | goto label_123;
| }
0x0000286e ldrh r3, [r2, 0xe] | r3 = *((r2 + 0xe));
0x00002870 movw r1, 0xfff1 | r1 = 0xfff1;
0x00002874 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00002876 cmp r3, r1 |
0x00002878 it ne |
| if (r3 != r1) {
0x0000287a cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0000287c itte ne |
| if (r3 == r1) {
0x0000287e movne r3, 1 | r3 = 1;
| }
| if (r3 == r1) {
0x00002880 ldrne r3, [r0] | r3 = *(r0);
| }
| if (r3 != r1) {
0x00002882 moveq r3, 0 | r3 = 0;
| }
0x00002884 add r3, r2 | r3 += r2;
| label_21:
0x00002886 ldr.w r4, [pc, 0x8f0] | r4 = *(0x00003178);
0x0000288a add r4, pc | r4 += pc;
0x0000288c str.w r3, [r4, 0x1a0] | __asm ("str.w r3, [r4, 0x1a0]");
0x00002890 bl 0x11af8 | r0 = fcn_00011af8 ();
0x00002894 cmp r0, 0 |
| if (r0 < 0) {
0x00002896 blt.w 0x380c | goto label_124;
| }
0x0000289a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000289c cmp r3, 0 |
| if (r3 != 0) {
0x0000289e bne.w 0x387e | goto label_125;
| }
| label_31:
0x000028a2 ldr.w r3, [pc, 0x8d8] | r3 = *(0x0000317c);
0x000028a6 add r3, pc | r3 += pc;
0x000028a8 str r0, [r3, 4] | *((r3 + 4)) = r0;
| label_30:
0x000028aa movw r3, 0x1ff |
0x000028ae movt r3, 3 | r3 = 0x301ff;
0x000028b2 cmp r0, r3 |
| if (r0 <= r3) {
0x000028b4 ble.w 0x43e8 | goto label_126;
| }
0x000028b8 ldr.w r4, [pc, 0x8c4] | r4 = *(0x00003180);
0x000028bc ldrd r2, r3, [sl, 0x15c] | __asm ("ldrd r2, r3, [sl, 0x15c]");
0x000028c0 ldrd r0, r1, [sl, 0x14c] | __asm ("ldrd r0, r1, [sl, 0x14c]");
0x000028c4 add r4, pc | r4 += pc;
0x000028c6 bl 0x5714 | fcn_00005714 (r0, r1, r2, r3);
0x000028ca ldr.w r0, [r4, 0x598] | r0 = *((r4 + 0x598));
0x000028ce movs r1, 0 | r1 = 0;
0x000028d0 bl 0xbdf0 | fcn_0000bdf0 (r0);
0x000028d4 ldr.w r3, [r4, 0x59c] | r3 = *((r4 + 0x59c));
0x000028d8 movs r2, 0 | r2 = 0;
0x000028da str r0, [r7, 0x2c] | *((r7 + 0x2c)) = r0;
0x000028dc str r2, [r0, 0xc] | *((r0 + 0xc)) = r2;
0x000028de cmp r3, 0 |
| if (r3 == 0) {
0x000028e0 beq.w 0x33ec | goto label_127;
| }
| label_17:
0x000028e4 ldr.w r3, [pc, 0x89c] | r3 = *(0x00003184);
0x000028e8 movs r4, 1 | r4 = 1;
0x000028ea ldr.w r0, [pc, 0x89c] | r0 = *(0x00003188);
0x000028ee add r3, pc | r3 += pc;
0x000028f0 ldrb.w r1, [r3, 0x730] | r1 = *((r3 + 0x730));
0x000028f4 add r0, pc | r0 += pc;
0x000028f6 ldr.w r2, [r3, 0x578] | r2 = *((r3 + 0x578));
0x000028fa add.w r5, r3, 0x598 | r5 = r3 + 0x598;
0x000028fe bfi r1, r4, 0, 2 | value_0 = BIT_MASK (0, 2);
| value_1 = r4 & value_0;
| value_0 = ~value_0;
| r1 &= value_0;
| r1 |= value_1;
0x00002902 strb.w r1, [r3, 0x730] | *((r3 + 0x730)) = r1;
0x00002906 adds r2, r2, r4 | r2 += r4;
0x00002908 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0000290a add r1, r4 | r1 += r4;
0x0000290c ldr.w r4, [r0, 0x16c] | r4 = *((r0 + 0x16c));
0x00002910 str r1, [r3, 4] | *((r3 + 4)) = r1;
0x00002912 ldr.w r1, [r3, 0x57c] | r1 = *((r3 + 0x57c));
0x00002916 str.w r5, [fp, 0xc] | __asm ("str.w r5, [arg_ch]");
0x0000291a str.w r2, [r3, 0x578] | __asm ("str.w r2, [r3, 0x578]");
0x0000291e adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00002922 adds r4, 2 | r4 += 2;
0x00002924 str.w r1, [r3, 0x57c] | __asm ("str.w r1, [r3, 0x57c]");
0x00002928 str.w fp, [r3, 0x5a8] | __asm ("str.w fp, [r3, 0x5a8]");
| if (r4 == 2) {
0x0000292c bne 0x293e |
0x0000292e ldr.w r3, [fp] | r3 = *(fp);
0x00002932 clz r3, r3 | r3 &= r3;
0x00002936 lsrs r3, r3, 5 | r3 >>= 5;
0x00002938 rsbs r3, r3, 0 | r3 -= ;
0x0000293a str.w r3, [r0, 0x16c] | __asm ("str.w r3, [r0, 0x16c]");
| }
0x0000293e ldr.w r1, [pc, 0x84c] | r1 = *(0x0000318c);
0x00002942 add r1, pc | r1 += pc;
0x00002944 ldrh r3, [r1, 0x28] | r3 = *((r1 + 0x28));
0x00002946 cmp r3, 0x34 |
| if (r3 != 0x34) {
0x00002948 bne.w 0x438a | goto label_128;
| }
0x0000294c ldrh r3, [r1, 0x2a] | r3 = *((r1 + 0x2a));
0x0000294e cmp r3, 0x20 |
| if (r3 != 0x20) {
0x00002950 bne.w 0x439e | goto label_129;
| }
0x00002954 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x00002956 movw r0, 0xe552 |
0x0000295a ldrh r2, [r1, 0x2c] | r2 = *((r1 + 0x2c));
0x0000295c movt r0, 0x6474 | r0 = 0x6474e552;
0x00002960 add r3, r1 | r3 += r1;
0x00002962 ldr.w r1, [pc, 0x82c] | r1 = *(0x00003190);
0x00002966 add r1, pc | r1 += pc;
0x00002968 str.w r3, [r1, 0x6ec] | __asm ("str.w r3, [r1, 0x6ec]");
0x0000296c add.w r3, r3, r2, lsl 5 | r3 += (r2 << 5);
0x00002970 strh.w r2, [r1, 0x6f4] | *((r1 + 0x6f4)) = r2;
| if (r2 == 0) {
| do {
0x00002974 cbz r2, 0x2994 | goto label_130;
| }
0x00002976 ldr r1, [r3, -0x20] | r1 = *((r3 - 0x20));
0x0000297a subs r2, 1 | r2--;
0x0000297c subs r3, 0x20 | r3 -= 0x20;
0x0000297e cmp r1, r0 |
0x00002980 bne 0x2974 |
| } while (r1 != r0);
0x00002982 ldr.w r2, [pc, 0x810] | r2 = *(0x00003194);
0x00002986 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00002988 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x0000298a add r2, pc | r2 += pc;
0x0000298c str.w r1, [r2, 0x7e8] | __asm ("str.w r1, [r2, 0x7e8]");
0x00002990 str.w r3, [r2, 0x7ec] | __asm ("str.w r3, [r2, 0x7ec]");
| label_130:
0x00002994 ldr.w r0, [pc, 0x800] | r0 = *(0x00003198);
0x00002998 add r0, pc | r0 += pc;
0x0000299a ldr.w r3, [r0, 0x7d0] | r3 = *((r0 + 0x7d0));
0x0000299e cmp r3, 0 |
| if (r3 != 0) {
0x000029a0 bne.w 0x3258 | goto label_131;
| }
| label_13:
0x000029a4 ldr.w r3, [fp, 0x134] | r3 = *(arg_134h);
0x000029a8 ldr.w r2, [fp, 0x34] | r2 = *(arg_34h);
0x000029ac ldr r4, [r2, 4] | r4 = *((r2 + 4));
| if (r3 != 0) {
0x000029ae cbz r3, 0x29d4 |
0x000029b0 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000029b2 ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x000029b4 add r3, r4 | r3 += r4;
| if (r2 == 0) {
0x000029b6 cbz r2, 0x29d4 | goto label_132;
| }
0x000029b8 ldr.w r2, [sl, 0x40] | r2 = *((sl + 0x40));
0x000029bc cmp r2, 0x10 |
| if (r2 == 0x10) {
0x000029be beq.w 0x4382 | goto label_133;
| }
0x000029c2 str.w r3, [sl, r2, lsl 2] | __asm ("str.w r3, [sl, r2, lsl 2]");
0x000029c6 adds r2, 1 | r2++;
0x000029c8 cmp r2, 1 |
0x000029ca str.w r2, [sl, 0x40] | __asm ("str.w r2, [sl, 0x40]");
0x000029ce it eq |
| if (r2 == 1) {
0x000029d0 streq r3, [sl, 0x48] | *((sl + 0x48)) = r3;
| goto label_132;
| }
| }
| label_132:
0x000029d4 ldr.w r3, [fp, 0x138] | r3 = *(arg_138h);
| if (r3 != 0) {
0x000029d8 cbz r3, 0x2a00 |
0x000029da ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000029dc ldrb r2, [r4, r3] | r2 = *((r4 + r3));
0x000029de add r4, r3 | r4 += r3;
| if (r2 == 0) {
0x000029e0 cbz r2, 0x2a00 | goto label_134;
| }
0x000029e2 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x000029e6 cmp r3, 0x10 |
| if (r3 == 0x10) {
0x000029e8 beq.w 0x4382 | goto label_133;
| }
0x000029ec str.w r4, [sl, r3, lsl 2] | __asm ("str.w r4, [sl, r3, lsl 2]");
0x000029f0 adds r3, 1 | r3++;
0x000029f2 cmp r3, 1 |
0x000029f4 ldr.w r2, [sl, 0x164] | r2 = *((sl + 0x164));
0x000029f8 str.w r3, [sl, 0x40] | __asm ("str.w r3, [sl, 0x40]");
| if (r3 == 1) {
0x000029fc beq.w 0x3604 | goto label_135;
| }
| }
| label_134:
0x00002a00 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x00002a04 cmp r3, 6 |
| if (r3 == 6) {
0x00002a06 beq.w 0x34c8 | goto label_22;
| }
0x00002a0a ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x00002a0e cmp r3, 0 |
| if (r3 != 0) {
0x00002a10 bne.w 0x3264 | goto label_136;
| }
0x00002a14 movs r3, 1 | r3 = 1;
0x00002a16 str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
| label_16:
0x00002a18 bl 0xd498 | fcn_0000d498 ();
0x00002a1c ldr.w r3, [fp, 0x74] | r3 = *(arg_74h);
0x00002a20 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
| if (r3 != 0) {
0x00002a22 cbz r3, 0x2a28 |
0x00002a24 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x00002a26 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00002a28 ldr.w r3, [pc, 0x770] | r3 = *(0x0000319c);
0x00002a2c add r3, pc | r3 += pc;
0x00002a2e ldr.w r3, [r3, 0x60c] | r3 = *((r3 + 0x60c));
| if (r3 != 0) {
0x00002a32 cbz r3, 0x2a38 |
0x00002a34 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x00002a36 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00002a38 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x00002a3a movs r3, 1 | r3 = 1;
0x00002a3c ldr.w r4, [pc, 0x760] | r4 = *(0x000031a0);
0x00002a40 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x00002a42 add r4, pc | r4 += pc;
0x00002a44 bl 0xbdec | dl_debug_state ();
0x00002a48 ldr.w r3, [r4, 0x1dc] | r3 = *((r4 + 0x1dc));
0x00002a4c cmp r3, 0 |
| if (r3 != 0) {
0x00002a4e bne.w 0x38f2 | goto label_137;
| }
| label_36:
0x00002a52 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00002a54 ldr r3, [r3] | r3 = *(r3);
0x00002a56 cmp r3, 0 |
| if (r3 != 0) {
0x00002a58 bne.w 0x436e | goto label_138;
| }
0x00002a5c ldr.w r4, [sl, 0x154] | r4 = *((sl + 0x154));
0x00002a60 cmp r4, 0 |
| if (r4 != 0) {
0x00002a62 bne.w 0x393c | goto label_139;
| }
| label_37:
0x00002a66 ldr.w r0, [sl, 0x158] | r0 = *((sl + 0x158));
0x00002a6a cmp r0, 0 |
| if (r0 != 0) {
0x00002a6c bne.w 0x3a6a | goto label_140;
| }
| label_39:
0x00002a70 ldr.w r5, [pc, 0x730] | r5 = *(0x000031a4);
0x00002a74 movs r1, 4 | r1 = 4;
0x00002a76 add r5, pc | r5 += pc;
0x00002a78 mov r0, r5 | r0 = r5;
0x00002a7a bl 0x146f8 | r0 = fcn_000146f8 ();
0x00002a7e cmp r0, 0 |
| if (r0 == 0) {
0x00002a80 beq.w 0x3950 | goto label_141;
| }
| label_38:
0x00002a84 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x00002a86 ldr r1, [r3] | r1 = *(r3);
0x00002a88 cmp r1, 0 |
| if (r1 != 0) {
0x00002a8a bne.w 0x38b0 | goto label_142;
| }
| label_35:
0x00002a8e ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x00002a92 movs r0, 0 | r0 = 0;
0x00002a94 str r0, [sp] | *(sp) = r0;
0x00002a96 mov r2, r4 | r2 = r4;
0x00002a98 mov r0, fp | r0 = fp;
0x00002a9a sub.w r3, r3, 3 | r3 -= 3;
0x00002a9e clz r3, r3 | r3 &= r3;
0x00002aa2 lsrs r3, r3, 5 | r3 >>= 5;
0x00002aa4 bl 0xa720 | fcn_0000a720 (r0, r1, r2, r3, r4, r5, r6);
0x00002aa8 ldr.w r0, [fp, 0x164] | r0 = *(arg_164h);
0x00002aac cmp r0, 0 |
| if (r0 == 0) {
0x00002aae beq.w 0x3894 | goto label_143;
| }
0x00002ab2 ldr.w r4, [fp, 0x160] | r4 = *(arg_160h);
0x00002ab6 add.w r2, r4, r0, lsl 2 | r2 = r4 + (r0 << 2);
| do {
0x00002aba ldr r1, [r2, -0x4]! | r1 = *((r2 -= 0x4));
0x00002abe ldrb.w r3, [r1, 0x198] | r3 = *((r1 + 0x198));
0x00002ac2 cmp r2, r4 |
0x00002ac4 orr r3, r3, 0x10 | r3 |= 0x10;
0x00002ac8 strb.w r3, [r1, 0x198] | *((r1 + 0x198)) = r3;
0x00002acc bne 0x2aba |
| } while (r2 != r4);
0x00002ace ldr.w r3, [pc, 0x6d8] | r3 = *(0x000031a8);
0x00002ad2 add r3, pc | r3 += pc;
0x00002ad4 ldr.w r2, [r3, 0x5a8] | r2 = *((r3 + 0x5a8));
0x00002ad8 ldr.w r1, [r3, 0x5a4] | r1 = *((r3 + 0x5a4));
0x00002adc str r1, [r2, 0xc] | *((r2 + 0xc)) = r1;
0x00002ade ldr.w r3, [r3, 0x5a4] | r3 = *((r3 + 0x5a4));
| if (r3 != 0) {
0x00002ae2 cbz r3, 0x2ae6 |
| label_33:
0x00002ae4 str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
| }
0x00002ae6 cmp r0, 1 |
0x00002ae8 ldr.w r5, [sl, 0x164] | r5 = *((sl + 0x164));
| if (r0 < 1) {
0x00002aec bls.w 0x2ea4 | goto label_144;
| }
0x00002af0 ldr.w ip, [pc, 0x6b8] | ip = *(0x000031ac);
0x00002af4 movs r3, 1 | r3 = 1;
0x00002af6 ldr.w r6, [fp, 0x160] | r6 = *(arg_160h);
0x00002afa add ip, pc |
0x00002afc mov r2, r6 | r2 = r6;
0x00002afe add.w r4, ip, 0x598 | r4 = ip + 0x598;
0x00002b02 b 0x2b0c |
| while (r1 != r4) {
0x00002b04 adds r3, 1 | r3++;
0x00002b06 cmp r0, r3 |
| if (r0 == r3) {
0x00002b08 beq.w 0x2ea4 | goto label_144;
| }
0x00002b0c ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00002b10 cmp r1, r4 |
0x00002b12 bne 0x2b04 |
| }
0x00002b14 add.w r2, r3, 0x40000000 | r2 = r3 + 0x40000000;
0x00002b18 subs r2, 1 | r2--;
0x00002b1a ldr.w r1, [r6, r2, lsl 2] | offset_2 = r2 << 2;
| r1 = *((r6 + offset_2));
0x00002b1e lsls r2, r2, 2 | r2 <<= 2;
0x00002b20 str.w r1, [ip, 0x5a8] | __asm ("str.w r1, [ip, 0x5a8]");
0x00002b24 cmp r5, 0 |
| if (r5 != 0) {
0x00002b26 bne.w 0x3b5e | goto label_145;
| }
0x00002b2a adds r3, 1 | r3++;
0x00002b2c ldr.w r4, [pc, 0x680] | r4 = *(0x000031b0);
0x00002b30 cmp r3, r0 |
0x00002b32 ldr.w r3, [pc, 0x680] | r3 = *(0x000031b4);
0x00002b36 itet lo |
| if (r3 >= r0) {
0x00002b38 addlo r2, r2, r6 | r2 += r6;
| }
| if (r3 < r0) {
0x00002b3a movhs r0, r5 | r0 = r5;
| }
| if (r3 >= r0) {
0x00002b3c ldrlo r0, [r2, 8] | r0 = *((r2 + 8));
| }
0x00002b3e add r4, pc | r4 += pc;
0x00002b40 add r3, pc | r3 += pc;
0x00002b42 ldr.w r3, [r3, 0x194] | r3 = *((r3 + 0x194));
0x00002b46 str.w r0, [r4, 0x5a4] | __asm ("str.w r0, [r4, 0x5a4]");
0x00002b4a ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
| if (r3 != 0) {
0x00002b4c cbz r3, 0x2b64 |
0x00002b4e subs r6, r3, r2 | r6 = r3 - r2;
0x00002b50 cmp r3, r0 |
0x00002b52 clz r6, r6 | r6 &= r6;
0x00002b56 lsr.w r6, r6, 5 | r6 >>= 5;
0x00002b5a it eq |
| if (r3 != r0) {
0x00002b5c moveq r6, 0 | r6 = 0;
| }
0x00002b5e cmp r6, 0 |
| if (r6 != 0) {
0x00002b60 bne.w 0x3888 | goto label_146;
| }
| }
| label_32:
0x00002b64 cmp r2, r0 |
| if (r2 != r0) {
0x00002b66 bne.w 0x444e | goto label_147;
| }
0x00002b6a ldr.w r3, [pc, 0x64c] | r3 = *(0x000031b8);
0x00002b6e add r3, pc | r3 += pc;
0x00002b70 add.w r0, r3, 0x598 | r0 = r3 + 0x598;
0x00002b74 str r0, [r1, 0xc] | *((r1 + 0xc)) = r0;
0x00002b76 ldr.w r3, [r3, 0x5a4] | r3 = *((r3 + 0x5a4));
0x00002b7a cmp r3, 0 |
| if (r3 == 0) {
0x00002b7c beq.w 0x35a4 | goto label_148;
| }
0x00002b80 ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x00002b82 cmp r2, r1 |
0x00002b84 ittt eq |
| if (r2 != r1) {
0x00002b86 streq r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
| }
| if (r2 != r1) {
0x00002b88 moveq r3, 1 | r3 = 1;
| }
| if (r2 != r1) {
0x00002b8a streq r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
| }
| if (r2 != r1) {
0x00002b8c bne.w 0x4402 | goto label_149;
| }
| label_7:
0x00002b90 clz r3, r5 | r3 &= r5;
0x00002b94 sub.w r5, r5, 3 | r5 -= 3;
0x00002b98 ldr.w r1, [pc, 0x620] | r1 = *(0x000031bc);
0x00002b9c clz r5, r5 | r5 &= r5;
0x00002ba0 ldr.w r0, [pc, 0x61c] | r0 = *(0x000031c0);
0x00002ba4 lsrs r3, r3, 5 | r3 >>= 5;
0x00002ba6 lsrs r5, r5, 5 | r5 >>= 5;
0x00002ba8 add.w r6, r7, 0x64 | r6 = r7 + 0x64;
0x00002bac add r1, pc | r1 += pc;
0x00002bae strd r3, r5, [r6] | __asm ("strd r3, r5, [r6]");
0x00002bb2 add r0, pc | r0 += pc;
0x00002bb4 mov r2, r6 | r2 = r6;
0x00002bb6 bl 0x12578 | fcn_00012578 (r0, r1);
0x00002bba ldr.w r3, [pc, 0x608] | r3 = *(0x000031c4);
0x00002bbe add r3, pc | r3 += pc;
0x00002bc0 ldrb r3, [r3, 4] | r3 = *((r3 + 4));
0x00002bc2 str r3, [r7, 0x30] | *((r7 + 0x30)) = r3;
0x00002bc4 ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
0x00002bc6 cmp r3, 0 |
| if (r3 == 0) {
0x00002bc8 beq.w 0x3688 | goto label_150;
| }
| label_25:
0x00002bcc ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
| if (r3 != 0) {
0x00002bce cbz r3, 0x2bf6 |
0x00002bd0 ldr.w r3, [pc, 0x5f4] | r3 = *(0x000031c8);
0x00002bd4 movs r5, 0 | r5 = 0;
0x00002bd6 ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x00002bd8 ldr.w r2, [pc, 0x5f0] | r2 = *(0x31cc);
0x00002bdc add r3, pc | r3 += pc;
0x00002bde ldr.w r4, [pc, 0x5f0] | r4 = *(0x000031d0);
0x00002be2 ldr r0, [r3] | r0 = *(r3);
0x00002be4 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00002be6 add r4, pc | r4 += pc;
0x00002be8 ldr r1, [r0] | r1 = *(r0);
0x00002bea str r5, [r3] | *(r3) = r5;
0x00002bec ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00002bee bic r1, r1, 0xff | r1 = BIT_MASK (r1, 0xff);
0x00002bf2 str r1, [r2] | *(r2) = r1;
0x00002bf4 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
| }
0x00002bf6 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x00002bfa cmp r3, 0 |
| if (r3 != 0) {
0x00002bfc bne.w 0x3a96 | goto label_151;
| }
| label_45:
0x00002c00 ldr.w r3, [fp, 0x140] | r3 = *(arg_140h);
0x00002c04 cmp r3, 0 |
| if (r3 == 0) {
0x00002c06 beq.w 0x2f14 | goto label_152;
| }
0x00002c0a ldr.w r2, [pc, 0x5c8] | r2 = *(0x000031d4);
0x00002c0e add r2, pc | r2 += pc;
0x00002c10 ldr.w r1, [r2, 0x17c] | r1 = *((r2 + 0x17c));
0x00002c14 cmp r1, 0 |
| if (r1 != 0) {
0x00002c16 bne.w 0x2f14 | goto label_152;
| }
0x00002c1a ldr r2, [r2, 0x38] | r2 = *((r2 + 0x38));
0x00002c1c cmp r2, 0 |
| if (r2 != 0) {
0x00002c1e bne.w 0x2f14 | goto label_152;
| }
0x00002d46 ldr r1, [r3, -0xc] | r1 = *((r3 - 0xc));
0x00002d4a cmp r1, 0 |
| if (r1 == 0) {
0x00002d4c beq.w 0x2040 | goto label_3;
| }
0x00002d50 str.w r1, [fp, 0x238] | __asm ("str.w r1, [arg_238h]");
0x00002d54 ldr r1, [r3, -0x4] | r1 = *((r3 - 0x4));
0x00002d58 str.w r1, [fp, 0x23c] | __asm ("str.w r1, [arg_23ch]");
0x00002d5c ldr r0, [r3, -0x18] | r0 = *((r3 - 0x18));
0x00002d60 cmp r1, 0 |
| if (r1 != 0) {
0x00002d62 bne.w 0x3406 | goto label_153;
| }
| label_18:
0x00002d66 str.w r1, [fp, 0x240] | __asm ("str.w r1, [arg_240h]");
0x00002d6a adds r3, 0x20 | r3 += 0x20;
0x00002d6c ldr r1, [r3, -0x30] | r1 = *((r3 - 0x30));
0x00002d70 cmp r8, r3 |
0x00002d72 strd r0, r1, [fp, 0x230] | __asm ("strd r0, r1, [fp, 0x230]");
0x00002d76 mov.w r1, 1 | r1 = 1;
0x00002d7a ldr r0, [r7, 0x18] | r0 = *((r7 + 0x18));
0x00002d7c str.w r1, [fp, 0x248] | __asm ("str.w r1, [arg_248h]");
0x00002d80 str.w r1, [r0, 0x880] | __asm ("str.w r1, [r0, 0x880]");
| if (r8 != r3) {
0x00002d84 bne.w 0x2004 | goto label_4;
| }
0x00002d88 b.w 0x2046 | goto label_5;
0x00002d8c ldr r1, [r3, -0x18] | r1 = *((r3 - 0x18));
0x00002d90 adds r3, 0x20 | r3 += 0x20;
0x00002d92 cmp r8, r3 |
0x00002d94 sub.w r1, r6, r1 | r1 = r6 - r1;
0x00002d98 str.w r1, [fp] | __asm ("str.w r1, [fp]");
| if (r8 != r3) {
0x00002d9c bne.w 0x2004 | goto label_4;
| }
0x00002da0 b.w 0x2046 | goto label_5;
0x00002da4 ldr r1, [r3, -0x18] | r1 = *((r3 - 0x18));
0x00002da8 adds r3, 0x20 | r3 += 0x20;
0x00002daa ldr.w r0, [fp] | r0 = *(fp);
0x00002dae cmp r8, r3 |
0x00002db0 add r1, r0 | r1 += r0;
0x00002db2 str.w r1, [fp, 8] | __asm ("str.w r1, [arg_8h]");
| if (r8 != r3) {
0x00002db6 bne.w 0x2004 | goto label_4;
| }
0x00002dba b.w 0x2046 | goto label_5;
0x00002dbe ldr r0, [r3, -0x18] | r0 = *((r3 - 0x18));
0x00002dc2 ldr r4, [r7, 0x34] | r4 = *((r7 + 0x34));
0x00002dc4 ldr.w r1, [fp] | r1 = *(fp);
0x00002dc8 and.w lr, r0, r4 | lr = r0 & r4;
0x00002dcc ldr.w r4, [fp, 0x1b4] | r4 = *(arg_1b4h);
0x00002dd0 add lr, r1 | lr += r1;
0x00002dd2 cmp r4, lr |
0x00002dd4 it hi |
| if (r4 <= lr) {
0x00002dd6 strhi lr, [fp, 0x1b4] |
| }
0x00002dda ldr r4, [r3, -0xc] | r4 = *((r3 - 0xc));
0x00002dde add r0, r4 | r0 += r4;
0x00002de0 add r0, r1 | r0 += r1;
0x00002de2 ldr.w r1, [fp, 0x1b8] | r1 = *(arg_1b8h);
0x00002de6 cmp r1, r0 |
0x00002de8 it lo |
| if (r1 >= r0) {
0x00002dea strlo r0, [fp, 0x1b8] | *(arg_1b8h) = r0;
| }
0x00002dee ldr r1, [r3, -0x8] | r1 = *((r3 - 0x8));
0x00002df2 lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x00002df4 bpl.w 0x2040 | goto label_3;
| }
0x00002df8 ldr.w r1, [fp, 0x1bc] | r1 = *(arg_1bch);
0x00002dfc adds r3, 0x20 | r3 += 0x20;
0x00002dfe cmp r1, r0 |
0x00002e00 it lo |
| if (r1 >= r0) {
0x00002e02 strlo r0, [fp, 0x1bc] | *(arg_1bch) = r0;
| }
0x00002e06 cmp r8, r3 |
| if (r8 != r3) {
0x00002e08 bne.w 0x2004 | goto label_4;
| }
0x00002e0c b.w 0x2046 | goto label_5;
0x00002e10 ldr lr, [r3, -0x18] |
0x00002e14 ldr.w ip, [fp] | ip = *(fp);
0x00002e18 ldr r1, [r7, 0x20] | r1 = *((r7 + 0x20));
0x00002e1a ldr.w r0, [sb, 0x5a0] | r0 = *((sb + 0x5a0));
0x00002e1e ldr r4, [r7, 0x28] | r4 = *((r7 + 0x28));
0x00002e20 str.w r1, [sb, 0x5b4] | __asm ("str.w r1, [sb, 0x5b4]");
0x00002e24 add.w r1, lr, ip | r1 = lr + ip;
0x00002e28 str r1, [r4, 0x14] | *((r4 + 0x14)) = r1;
0x00002e2a cmp r0, 0 |
| if (r0 == 0) {
0x00002e2c beq.w 0x364c | goto label_154;
| }
| label_24:
0x00002e30 adds r3, 0x20 | r3 += 0x20;
0x00002e32 movs r1, 1 | r1 = 1;
0x00002e34 cmp r8, r3 |
0x00002e36 str r1, [r7, 0x40] | *((r7 + 0x40)) = r1;
| if (r8 != r3) {
0x00002e38 bne.w 0x2004 | goto label_4;
| }
0x00002e3c b.w 0x2046 | goto label_5;
| label_85:
0x00002e40 ldr r1, [r3, -0x8] | r1 = *((r3 - 0x8));
0x00002e44 adds r3, 0x20 | r3 += 0x20;
0x00002e46 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00002e48 cmp r8, r3 |
0x00002e4a str.w r1, [r0, 0x878] | __asm ("str.w r1, [r0, 0x878]");
| if (r8 != r3) {
0x00002e4e bne.w 0x2004 | goto label_4;
| }
0x00002e52 b.w 0x2046 | goto label_5;
| label_107:
0x00002e56 ldr r1, [r5] | r1 = *(r5);
0x00002e58 ldr r6, [r2, 8] | r6 = *((r2 + 8));
| if (r1 == 0) {
0x00002e5a cbnz r1, 0x2e5e |
0x00002e5c str r6, [r5] | *(r5) = r6;
| }
0x00002e5e ldr r1, [r2, 0x14] | r1 = *((r2 + 0x14));
0x00002e60 add r6, r1 | r6 += r1;
0x00002e62 ldr.w r1, [r5, 0x1b8] | r1 = *((r5 + 0x1b8));
0x00002e66 cmp r6, r1 |
0x00002e68 it hs |
| if (r6 < r1) {
0x00002e6a strhs r6, [r5, 0x1b8] | *((r5 + 0x1b8)) = r6;
| }
0x00002e6e ldr r1, [r2, 0x18] | r1 = *((r2 + 0x18));
0x00002e70 lsls r1, r1, 0x1f | r1 <<= 0x1f;
| if (r1 >= r1) {
0x00002e72 bpl.w 0x2438 | goto label_6;
| }
0x00002e76 ldr.w r1, [r5, 0x1bc] | r1 = *((r5 + 0x1bc));
0x00002e7a cmp r6, r1 |
0x00002e7c it hs |
| if (r6 < r1) {
0x00002e7e strhs r6, [r5, 0x1bc] | *((r5 + 0x1bc)) = r6;
| }
0x00002e82 b.w 0x2438 | goto label_6;
| label_67:
0x00002e86 ldr r3, [r5, 8]! | r3 = *((r5 += 8));
0x00002e8a subs r4, 2 | r4 -= 2;
0x00002e8c ldr r2, [pc, 0x354] |
0x00002e8e str.w r3, [sl, 0x14c] | __asm ("str.w r3, [sl, 0x14c]");
0x00002e92 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x00002e94 add r2, pc | r2 = 0x607c;
0x00002e96 str.w r3, [sl, 0x150] | __asm ("str.w r3, [sl, 0x150]");
0x00002e9a ldr r3, [r2, 0x10] | r3 = *(0x608c);
0x00002e9c adds r3, 2 | r3 += 2;
0x00002e9e str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00002ea0 b.w 0x1a2e | goto label_0;
| label_144:
0x00002ea4 movs r3, 0 | r3 = 0;
0x00002ea6 str r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
0x00002ea8 b 0x2b90 | goto label_7;
| label_105:
0x00002eaa ldr r3, [pc, 0x33c] |
0x00002eac add r3, pc | r3 = 0x609a;
0x00002eae ldr.w r5, [r3, 0x194] | r5 = *(0x622e);
0x00002eb2 cmp r5, 0 |
| if (r5 == 0) {
0x00002eb4 beq.w 0x35ac | goto label_155;
| }
0x00002eb8 ldr r3, [pc, 0x330] |
0x00002eba add r3, pc | r3 = 0x60aa;
0x00002ebc addw r3, r3, 0x5a4 | __asm ("addw r3, r3, 0x5a4");
0x00002ec0 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x00002ec2 b 0x2728 | goto label_8;
0x00002ec4 ldr r3, [r5] | r3 = *(r5);
0x00002ec6 str r3, [r2, 4] | *((r2 + 4)) = r3;
| label_83:
0x00002ec8 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00002ecc cmp r3, 0 |
| if (r3 != 0) {
0x00002ece bne.w 0x1efa | goto label_9;
| }
| label_11:
0x00002ed2 ldr r3, [r7, 0x20] | r3 = *((r7 + 0x20));
| if (r3 != 0) {
0x00002ed4 cbz r3, 0x2ee0 |
0x00002ed6 ldr r3, [pc, 0x318] |
0x00002ed8 ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x00002eda add r3, pc |
0x00002edc ldr r3, [r3] | r3 = *(0x60d0);
0x00002ede str r2, [r3] | *(r3) = r2;
| }
0x00002ee0 movs r3, 1 | r3 = 1;
0x00002ee2 str r3, [r7, 0x30] | *((r7 + 0x30)) = r3;
0x00002ee4 b.w 0x1f88 | goto label_10;
0x00002ee8 ldr r3, [r0] | r3 = *(r0);
0x00002eea str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00002eec ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00002ef0 cmp r3, 0 |
| if (r3 != 0) {
0x00002ef2 bne.w 0x1efa | goto label_9;
| }
0x00002ef6 b 0x2ed2 | goto label_11;
0x00002ef8 str r4, [r2, 4] | *((r2 + 4)) = r4;
0x00002efa ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00002efe cmp r3, 0 |
| if (r3 != 0) {
0x00002f00 bne.w 0x1efa | goto label_9;
| }
0x00002f04 b 0x2ed2 | goto label_11;
0x00002f06 str r6, [r2, 4] | *((r2 + 4)) = r6;
0x00002f08 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00002f0c cmp r3, 0 |
| if (r3 != 0) {
0x00002f0e bne.w 0x1efa | goto label_9;
| }
0x00002f12 b 0x2ed2 | goto label_11;
| label_152:
0x00002f14 ldr r3, [pc, 0x2dc] |
0x00002f16 add r3, pc | r3 = 0x610e;
0x00002f18 ldr r4, [r3] | r4 = *(0x610e);
0x00002f1a ldr r2, [pc, 0x2dc] |
0x00002f1c add.w r1, fp, 0x160 | r1 += arg_160h;
0x00002f20 ldr r3, [pc, 0x2d8] |
0x00002f22 add r2, pc |
0x00002f24 str r1, [r2, 8] | *((r2 + 8)) = r1;
0x00002f26 add r3, pc | r3 = 0x6126;
0x00002f28 ldr.w r2, [r2, 0x590] | r2 = *(0x66b0);
0x00002f2c adds r3, 0x1c | r3 += 0x1c;
0x00002f2e ldm r1, {r0, r1} | r0 = *(r1);
| r1 = *((r1 + 4));
0x00002f30 str.w r2, [r3, 0x170] | __asm ("str.w r2, [r3, 0x170]");
0x00002f34 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x00002f38 lsls r1, r4, 0x16 | r1 = r4 << 0x16;
| if (r1 < r4) {
0x00002f3a bmi.w 0x34a4 | goto label_156;
| }
0x00002f3e ldr r3, [pc, 0x2c0] |
0x00002f40 ldr.w r1, [fp, 0x164] | r1 = *(arg_164h);
0x00002f44 add r3, pc | r3 = 0x614a;
0x00002f46 ldr.w r6, [r3, 0x17c] | r6 = *(0x62c6);
0x00002f4a subs r4, r1, 1 | r4 = r1 - 1;
0x00002f4c ldr r2, [r3, 0x30] | r2 = *(0x617a);
0x00002f4e subs r6, 0 |
0x00002f50 it ne |
| if (r6 == 0) {
0x00002f52 movne r6, 1 | r6 = 1;
| }
0x00002f54 orrs r2, r6 | r2 |= r6;
0x00002f56 str r2, [r3, 0x30] | *((r3 + 0x30)) = r2;
0x00002f58 cmp r1, 0 |
| if (r1 == 0) {
0x00002f5a beq 0x2fd0 | void (*0x2fd0)() ();
| }
| label_68:
0x00003098 ldr r2, [pc, 0x194] |
0x0000309a subs r4, 2 | r4 -= 2;
0x0000309c ldr r3, [pc, 0x194] |
0x0000309e ldr r1, [r5, 8]! | r1 = *((r5 += 8));
0x000030a2 add r2, pc | r2 = 0x62d6;
0x000030a4 add r3, pc | r3 = 0x62dc;
0x000030a6 str.w r1, [r3, 0x164] | __asm ("str.w r1, [r3, 0x164]");
0x000030aa ldr r3, [r2, 0x10] | r3 = *(0x62e6);
0x000030ac adds r3, 2 | r3 += 2;
0x000030ae str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x000030b0 b.w 0x1a2e | goto label_0;
| label_87:
0x0000323c ldr.w r1, [r3, 0x59c] | r1 = *((r3 + 0x59c));
0x00003240 cmp r1, 0 |
| if (r1 == 0) {
0x00003242 beq.w 0x3bda | goto label_157;
| }
0x00003246 ldr.w r2, [pc, 0xc5c] | r2 = *(0x00003ea4);
0x0000324a add r2, pc | r2 += pc;
0x0000324c str r1, [r2, 0x14]! | *((r2 += 0x14)) = r1;
0x00003250 str.w r2, [r3, 0x5b4] | __asm ("str.w r2, [r3, 0x5b4]");
0x00003254 b.w 0x20a4 | goto label_12;
| label_131:
0x00003258 add.w r0, r0, 0x598 | r0 += 0x598;
0x0000325c bl 0xd3e0 | fcn_0000d3e0 (r0);
0x00003260 b.w 0x29a4 | goto label_13;
| label_136:
0x00003264 ldr.w r3, [sl, 0x44] | r3 = *((sl + 0x44));
0x00003268 ldr.w r4, [sl, 0x48] | r4 = *((sl + 0x48));
0x0000326c str r3, [r7, 0x20] | *((r7 + 0x20)) = r3;
0x0000326e cmp r3, 0 |
| if (r3 != 0) {
0x00003270 bne.w 0x3618 | goto label_158;
| }
| if (r4 == 0) {
0x00003274 cbz r4, 0x328c | goto label_159;
| }
| label_23:
0x00003276 movs r5, 0 | r5 = 0;
| do {
0x00003278 mov r0, sl | r0 = sl;
0x0000327a bl 0x1064 | r0 = fcn_00001064 (r0);
| if (r0 == 0) {
0x0000327e cbz r0, 0x328a | goto label_160;
| }
0x00003280 ldr.w r3, [sl, 0x48] | r3 = *((sl + 0x48));
0x00003284 adds r5, 1 | r5++;
0x00003286 cmp r3, 0 |
0x00003288 bne 0x3278 |
| } while (r3 != 0);
| label_160:
0x0000328a str r5, [r7, 0x20] | *((r7 + 0x20)) = r5;
| label_159:
0x0000328c str.w r4, [sl, 0x48] | __asm ("str.w r4, [sl, 0x48]");
0x00003290 movs r4, 0 | r4 = 0;
0x00003292 ldr r0, [r7, 0x20] | r0 = *((r7 + 0x20));
0x00003294 str.w r4, [sl, 0x44] | __asm ("str.w r4, [sl, 0x44]");
0x00003298 bl 0xec0 | fcn_00000ec0 ();
0x0000329c ldr.w r3, [pc, 0xc08] | r3 = *(0x00003ea8);
0x000032a0 ldr.w r2, [pc, 0xc08] | r2 = *(0x3eac);
0x000032a4 ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x000032a6 add r3, pc | r3 += pc;
0x000032a8 str r0, [r7, 0x1c] | *((r7 + 0x1c)) = r0;
0x000032aa ldr r0, [r3] | r0 = *(r3);
0x000032ac ldr r6, [r1, r2] | r6 = *((r1 + r2));
0x000032ae ldr.w r5, [pc, 0xc00] | r5 = *(0x00003eb0);
0x000032b2 ldr r2, [r0] | r2 = *(r0);
0x000032b4 ldr.w r1, [sl, 0x48] | r1 = *((sl + 0x48));
0x000032b8 str r4, [r3] | *(r3) = r4;
0x000032ba add r5, pc | r5 += pc;
0x000032bc ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000032be bic r2, r2, 0xff | r2 = BIT_MASK (r2, 0xff);
0x000032c2 str r2, [r6] | *(r6) = r2;
0x000032c4 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x000032c6 cmp r1, 0 |
| if (r1 == 0) {
0x000032c8 beq.w 0x33d2 | goto label_161;
| }
0x000032cc ldr.w r3, [pc, 0xbe4] |
0x000032d0 ldr.w r2, [pc, 0xbe4] | r2 = *(0x00003eb8);
0x000032d4 str.w fp, [r7, 0x18] | __asm ("str.w fp, [r7, 0x18]");
0x000032d8 add r3, pc |
0x000032da ldr.w fp, [r7, 0x44] | fp = *((r7 + 0x44));
0x000032de add.w r3, r3, 0x380 |
0x000032e2 add r2, pc | r2 += pc;
0x000032e4 str r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
0x000032e6 ldr.w r3, [pc, 0xbd4] | r3 = *(0x00003ebc);
0x000032ea str r2, [r7, 0x34] | *((r7 + 0x34)) = r2;
0x000032ec ldr.w r2, [pc, 0xbd0] | r2 = *(0x00003ec0);
0x000032f0 add r3, pc |
0x000032f2 str r3, [r7, 0x10] | *((r7 + 0x10)) = r3;
0x000032f4 add.w r3, r3, 0x598 | r3 = 0xad9c;
0x000032f8 add r2, pc | r2 += pc;
0x000032fa str r3, [r7, 0xc] | *((r7 + 0xc)) = r3;
0x000032fc str r2, [r7, 0x30] | *((r7 + 0x30)) = r2;
0x000032fe b 0x3364 |
| while (r6 == 0) {
0x00003300 ldr.w r3, [pc, 0xbc0] | r3 = *(0x00003ec4);
0x00003304 add.w r6, r7, 0x64 | r6 = r7 + 0x64;
0x00003308 ldr.w r1, [pc, 0xbbc] | r1 = *(0x00003ec8);
0x0000330c mov r0, sb | r0 = sb;
0x0000330e ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x00003312 add r3, pc | r3 += pc;
0x00003314 add r1, pc | r1 += pc;
0x00003316 strd r3, r2, [r6] | __asm ("strd r3, r2, [r6]");
0x0000331a mov r3, r1 | r3 = r1;
0x0000331c str r1, [r7, 0x3c] | *((r7 + 0x3c)) = r1;
0x0000331e mov r2, r8 | r2 = r8;
0x00003320 mov r1, r4 | r1 = r4;
0x00003322 str r6, [sp] | *(sp) = r6;
0x00003324 blx 0xa04 | fcn_00000a04 ();
0x00003328 ldr r3, [r4] | r3 = *(r4);
0x0000332a cmp r3, 0 |
| if (r3 == 0) {
0x0000332c beq.w 0x3524 | goto label_162;
| }
0x00003330 ldr r1, [r7, 0x40] | r1 = *((r7 + 0x40));
0x00003332 ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00003336 bl 0xfd4 | fcn_00000fd4 (r0, r1);
0x0000333a ldr r6, [r4] | r6 = *(r4);
0x0000333c mov r1, r5 | r1 = r5;
0x0000333e ldrb.w r4, [r8] | r4 = *(r8);
0x00003342 ldr.w r0, [pc, 0xb88] |
0x00003346 mov r2, r6 | r2 = r6;
0x00003348 add r0, pc | r0 = 0x721a;
0x0000334a bl 0xc284 | fcn_0000c284 ();
| if (r4 != 0) {
0x0000334e cbz r4, 0x335c |
0x00003350 ldr.w r3, [pc, 0xb7c] | r3 = *(0x00003ed0);
0x00003354 mov r0, r6 | r0 = r6;
0x00003356 add r3, pc | r3 += pc;
0x00003358 ldr r3, [r3] | r3 = *(r3);
0x0000335a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
| label_14:
0x0000335c ldr.w r3, [sl, 0x48] | r3 = *((sl + 0x48));
0x00003360 cmp r3, 0 |
| if (r3 == 0) {
0x00003362 beq 0x33ce | goto label_163;
| }
| label_15:
0x00003364 mov r0, sl | r0 = sl;
0x00003366 bl 0x1064 | r0 = fcn_00001064 (r0);
0x0000336a mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000336c cbz r0, 0x33ce | goto label_163;
| }
0x0000336e add.w r4, r7, 0x50 | r4 = r7 + 0x50;
0x00003372 movs r3, 0 | r3 = 0;
0x00003374 str.w r3, [fp, 4] | __asm ("str.w r3, [arg_4h]");
0x00003378 add.w r8, r7, 0x4b | r8 = r7 + 0x4b;
0x0000337c str r3, [r4] | *(r4) = r3;
0x0000337e add.w sb, r7, 0x4c | sb = r7 + 0x4c;
0x00003382 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x00003384 mov r2, r8 | r2 = r8;
0x00003386 str.w r0, [fp] | __asm ("str.w r0, [fp]");
0x0000338a mov r1, r4 | r1 = r4;
0x0000338c mov r0, sb | r0 = sb;
0x0000338e ldr.w r3, [r3, 0x880] | r3 = *((r3 + 0x880));
0x00003392 str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
0x00003394 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00003398 ldr r3, [r7, 0x30] | r3 = *((r7 + 0x30));
0x0000339a blx 0xa04 | fcn_00000a04 ();
0x0000339e ldr r6, [r4] | r6 = *(r4);
0x000033a0 cmp r6, 0 |
0x000033a2 beq 0x3300 |
| }
0x000033a4 ldrb.w r4, [r8] | r4 = *(r8);
0x000033a8 mov r1, r5 | r1 = r5;
0x000033aa ldr.w r0, [pc, 0xb28] |
0x000033ae mov r2, r6 | r2 = r6;
0x000033b0 add r0, pc | r0 = 0x728a;
0x000033b2 bl 0xc284 | fcn_0000c284 ();
0x000033b6 cmp r4, 0 |
| if (r4 == 0) {
0x000033b8 beq 0x335c | goto label_14;
| }
0x000033ba ldr.w r3, [pc, 0xb1c] | r3 = *(0x00003ed8);
0x000033be mov r0, r6 | r0 = r6;
0x000033c0 add r3, pc | r3 += pc;
0x000033c2 ldr r3, [r3] | r3 = *(r3);
0x000033c4 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000033c6 ldr.w r3, [sl, 0x48] | r3 = *((sl + 0x48));
0x000033ca cmp r3, 0 |
| if (r3 != 0) {
0x000033cc bne 0x3364 | goto label_15;
| }
| label_163:
0x000033ce ldr.w fp, [r7, 0x18] | fp = *((r7 + 0x18));
| label_161:
0x000033d2 ldr.w r4, [pc, 0xb08] | r4 = *(0x00003edc);
0x000033d6 add r4, pc | r4 += pc;
0x000033d8 ldr.w r3, [r4, 0x1dc] | r3 = *((r4 + 0x1dc));
0x000033dc cmp r3, 0 |
| if (r3 != 0) {
0x000033de bne.w 0x36b6 | goto label_164;
| }
0x000033e2 ldr r2, [r7, 0x1c] | r2 = *((r7 + 0x1c));
0x000033e4 str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
0x000033e6 str r2, [r7, 0x38] | *((r7 + 0x38)) = r2;
0x000033e8 b.w 0x2a18 | goto label_16;
| label_127:
0x000033ec ldr.w r3, [r4, 0x5b4] | r3 = *((r4 + 0x5b4));
0x000033f0 ldr r3, [r3] | r3 = *(r3);
0x000033f2 str.w r3, [r4, 0x59c] | __asm ("str.w r3, [r4, 0x59c]");
0x000033f6 b.w 0x28e4 | goto label_17;
| label_78:
0x000033fa cmp r0, 6 |
| if (r0 == 6) {
0x000033fc beq 0x34c8 | goto label_22;
| }
0x000033fe ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x00003400 movs r1, 0 | r1 = 0;
0x00003402 bl 0x12f50 | fcn_00012f50 (r0, r1);
| label_153:
0x00003406 subs r1, 1 | r1--;
0x00003408 ands r1, r0 | r1 &= r0;
0x0000340a b 0x2d66 | goto label_18;
| label_103:
0x00003450 ldr.w r3, [pc, 0xa94] | r3 = *(0x00003ee8);
0x00003454 add r3, pc | r3 += pc;
0x00003456 str.w fp, [r3, 0x14] | __asm ("str.w fp, [r3, 0x14]");
0x0000345a b.w 0x229a | goto label_19;
| label_156:
0x000034a4 movs r4, 0 | r4 = 0;
0x000034a6 ldr.w r0, [pc, 0xa54] |
0x000034aa mov r5, fp | r5 = fp;
0x000034ac add r0, pc | r0 = 0x73ae;
0x000034ae bl 0xc1f0 | fcn_0000c1f0 ();
| do {
0x000034b2 mov r0, r5 | r0 = r5;
0x000034b4 movs r1, 0 | r1 = 0;
0x000034b6 bl 0xe51c | fcn_0000e51c (r0, r1, r2, r3);
0x000034ba ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x000034bc cmp r5, 0 |
0x000034be bne 0x34b2 |
| } while (r5 != 0);
| label_22:
0x000034c8 ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x000034ca mov r1, sl | r1 = sl;
0x000034cc bl 0x12fa0 | fcn_00012fa0 (r0, r1);
| label_71:
0x000034d0 ldr.w r2, [pc, 0xa2c] | r2 = *(0x00003f00);
0x000034d4 subs r4, 2 | r4 -= 2;
0x000034d6 ldr r3, [r5, 8]! | r3 = *((r5 += 8));
0x000034da add r2, pc | r2 += pc;
0x000034dc str r3, [r7, 0x20] | *((r7 + 0x20)) = r3;
0x000034de ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x000034e0 adds r3, 2 | r3 += 2;
0x000034e2 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x000034e4 b.w 0x1a2e | goto label_0;
| label_162:
0x00003524 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00003526 cmp r2, 0 |
| if (r2 == 0) {
0x00003528 beq.w 0x44e4 | goto label_165;
| }
0x0000352c movs r0, 1 | r0 = 1;
0x0000352e str r3, [r7, 8] | *((r7 + 8)) = r3;
0x00003530 blx r2 | uint32_t (*r2)(uint32_t, uint32_t) (r0, r3);
0x00003532 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00003534 mov r2, r0 | r2 = r0;
0x00003536 cmp r0, 0 |
| if (r0 == 0) {
0x00003538 beq.w 0x3a7c | goto label_166;
| }
0x0000353c cmp r0, 1 |
| if (r0 != 1) {
0x0000353e bne.w 0x4056 | goto label_167;
| }
0x00003542 ldr.w r2, [pc, 0x9c0] | r2 = *(0x00003f04);
0x00003546 movs r0, 0x24 | r0 = 0x24;
0x00003548 str r3, [r7, 8] | *((r7 + 8)) = r3;
0x0000354a add r2, pc | r2 += pc;
0x0000354c ldr r2, [r2] | r2 = *(r2);
0x0000354e blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00003550 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00003552 str r0, [r7, 0x40] | *((r7 + 0x40)) = r0;
0x00003554 cmp r0, 0 |
| if (r0 == 0) {
0x00003556 beq.w 0x4366 | goto label_168;
| }
0x0000355a ldr r2, [r7, 0x40] | r2 = *((r7 + 0x40));
0x0000355c str.w fp, [r7, 8] | __asm ("str.w fp, [r7, 8]");
0x00003560 str.w sl, [r7, 4] | __asm ("str.w sl, [r7, 4]");
0x00003564 mov sl, r3 | sl = r3;
0x00003566 subs r2, 4 | r2 -= 4;
0x00003568 ldr r5, [r7, 0x14] | r5 = *((r7 + 0x14));
0x0000356a mov fp, r2 |
0x0000356c b 0x358a |
| while (r3 != 0) {
0x0000356e movs r3, 0 | r3 = 0;
| label_20:
0x00003570 mov r0, r5 | r0 = r5;
0x00003572 str r3, [fp, 4]! | *(arg_4h) = r3;
0x00003576 movs r1, 0 | r1 = 0;
0x00003578 add.w sl, sl, 1 | sl++;
0x0000357c bl 0x15e20 | void (*0x15e20)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00003580 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00003582 adds r5, r0, 1 | r5 = r0 + 1;
0x00003584 cmp r3, 0 |
| if (r3 == 0) {
0x00003586 beq.w 0x3816 | goto label_169;
| }
0x0000358a str r5, [r6] | *(r6) = r5;
0x0000358c mov r2, r8 | r2 = r8;
0x0000358e str r6, [sp] | *(sp) = r6;
0x00003590 mov r1, r4 | r1 = r4;
0x00003592 ldr r3, [r7, 0x3c] | r3 = *((r7 + 0x3c));
0x00003594 mov r0, sb | r0 = sb;
0x00003596 blx 0xa04 | fcn_00000a04 ();
0x0000359a ldr r3, [r4] | r3 = *(r4);
0x0000359c cmp r3, 0 |
0x0000359e bne 0x356e |
| }
0x000035a0 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x000035a2 b 0x3570 | goto label_20;
| label_148:
0x000035a4 movs r3, 1 | r3 = 1;
| label_34:
0x000035a6 str r3, [r7, 0x34] | *((r7 + 0x34)) = r3;
0x000035a8 b.w 0x2b90 | goto label_7;
| label_155:
0x000035ac str.w r5, [r3, 0x198] | __asm ("str.w r5, [r3, 0x198]");
0x000035b0 ldr.w r3, [pc, 0x954] | r3 = *(0x00003f08);
0x000035b4 add r3, pc | r3 += pc;
0x000035b6 addw r3, r3, 0x5a4 | __asm ("addw r3, r3, 0x5a4");
0x000035ba str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
| label_121:
0x000035bc ldr.w r3, [pc, 0x94c] | r3 = *(0x00003f0c);
0x000035c0 movs r2, 0 | r2 = 0;
0x000035c2 add r3, pc | r3 += pc;
0x000035c4 str.w r2, [r3, 0x19c] | __asm ("str.w r2, [r3, 0x19c]");
| label_123:
0x000035c8 movs r3, 0 | r3 = 0;
0x000035ca b.w 0x2886 | goto label_21;
| label_69:
0x000035ce ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x000035d0 ldrb r3, [r2] | r3 = *(r2);
| if (r3 != 0) {
0x000035d2 cbz r3, 0x35f0 |
0x000035d4 ldr.w r3, [sl, 0x40] | r3 = *((sl + 0x40));
0x000035d8 cmp r3, 0x10 |
| if (r3 == 0x10) {
0x000035da beq.w 0x4382 | goto label_133;
| }
0x000035de str.w r2, [sl, r3, lsl 2] | __asm ("str.w r2, [sl, r3, lsl 2]");
0x000035e2 adds r3, 1 | r3++;
0x000035e4 cmp r3, 1 |
0x000035e6 str.w r3, [sl, 0x40] | __asm ("str.w r3, [sl, 0x40]");
0x000035ea it eq |
| if (r3 == 1) {
0x000035ec streq r2, [sl, 0x48] | *((sl + 0x48)) = r2;
| goto label_170;
| }
| }
| label_170:
0x000035f0 ldr.w r2, [pc, 0x91c] | r2 = *(0x00003f10);
0x000035f4 subs r4, 2 | r4 -= 2;
0x000035f6 adds r5, 8 | r5 += 8;
0x000035f8 add r2, pc | r2 += pc;
0x000035fa ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x000035fc adds r3, 2 | r3 += 2;
0x000035fe str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00003600 b.w 0x1a2e | goto label_0;
| label_135:
0x00003604 cmp r2, 6 |
0x00003606 str.w r4, [sl, 0x48] | __asm ("str.w r4, [sl, 0x48]");
| if (r2 == 6) {
0x0000360a beq.w 0x34c8 | goto label_22;
| }
0x0000360e ldr.w r3, [sl, 0x44] | r3 = *((sl + 0x44));
0x00003612 cmp r3, 0 |
| if (r3 == 0) {
0x00003614 beq.w 0x3276 | goto label_23;
| }
| label_158:
0x00003618 ldr.w r3, [pc, 0x8f8] |
0x0000361c mov.w r2, 0x116 | r2 = 0x116;
0x00003620 ldr.w r1, [pc, 0x8f4] | r1 = *(0x00003f18);
0x00003624 ldr.w r0, [pc, 0x8f4] |
0x00003628 add r3, pc | r3 = 0x7540;
0x0000362a add r1, pc | r1 += pc;
0x0000362c add r0, pc | r0 = 0x754c;
0x0000362e bl 0x11f30 | fcn_00011f30 (r0);
| label_70:
0x00003632 ldr.w r2, [pc, 0x8ec] | r2 = *(0x00003f20);
0x00003636 subs r4, 2 | r4 -= 2;
0x00003638 ldr r3, [r5, 8]! | r3 = *((r5 += 8));
0x0000363c add r2, pc | r2 += pc;
0x0000363e str.w r3, [sl, 0x158] | __asm ("str.w r3, [sl, 0x158]");
0x00003642 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00003644 adds r3, 2 | r3 += 2;
0x00003646 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00003648 b.w 0x1a2e | goto label_0;
| label_154:
0x0000364c ldrb.w ip, [lr, ip] | ip = *((lr + ip));
0x00003650 cmp.w ip, 0 |
| if (ip == 0) {
0x00003654 beq.w 0x2e30 | goto label_24;
| }
0x00003658 ldr r4, [r7, 0x3c] | r4 = *((r7 + 0x3c));
0x0000365a mov lr, r3 | lr = r3;
0x0000365c mov r3, ip | r3 = ip;
0x0000365e mov ip, lr |
| do {
0x00003660 adds r1, 1 | r1++;
0x00003662 cmp r3, 0x2f |
0x00003664 it eq |
| if (r3 != 0x2f) {
0x00003666 moveq r0, r1 | r0 = r1;
| }
0x00003668 ldrb r3, [r1] | r3 = *(r1);
0x0000366a cmp r3, 0 |
0x0000366c bne 0x3660 |
| } while (r3 != 0);
0x0000366e mov r3, ip | r3 = ip;
0x00003670 str r4, [r7, 0x3c] | *((r7 + 0x3c)) = r4;
0x00003672 cmp r0, 0 |
| if (r0 == 0) {
0x00003674 beq.w 0x2e30 | goto label_24;
| }
0x00003678 ldr r1, [r7, 0x14] | r1 = *((r7 + 0x14));
0x0000367a str r0, [r1, 0x20] | *((r1 + 0x20)) = r0;
0x0000367c ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0000367e str r0, [r1, 0x18] | *((r1 + 0x18)) = r0;
0x00003680 movs r1, 1 | r1 = 1;
0x00003682 str r1, [r7, 0x40] | *((r7 + 0x40)) = r1;
0x00003684 b.w 0x2040 | goto label_3;
| label_150:
0x00003688 mov r0, r3 | r0 = r3;
0x0000368a bl 0xec0 | fcn_00000ec0 ();
0x0000368e str r0, [r7, 0x38] | *((r7 + 0x38)) = r0;
0x00003690 b.w 0x2bcc | goto label_25;
| label_122:
0x000036a2 ldr.w r5, [r5, 0x194] | r5 = *((r5 + 0x194));
0x000036a6 mov r3, r2 | r3 = r2;
0x000036a8 b.w 0x2818 | goto label_26;
| label_120:
0x000036ac ldr.w ip, [sb, 0x194] | ip = *((sb + 0x194));
0x000036b0 mov r3, r2 | r3 = r2;
0x000036b2 b.w 0x279e | goto label_27;
| label_164:
0x000036b6 mov r0, fp | r0 = fp;
0x000036b8 bl 0xaf0 | fcn_00000af0 ();
0x000036bc ldr.w r0, [pc, 0x864] | r0 = *(0x00003f24);
0x000036c0 add r0, pc | r0 += pc;
0x000036c2 add.w r0, r0, 0x598 | r0 += 0x598;
0x000036c6 bl 0xaf0 | fcn_00000af0 ();
0x000036ca ldr.w r3, [r4, 0x1dc] | r3 = *((r4 + 0x1dc));
0x000036ce ldr r2, [r7, 0x20] | r2 = *((r7 + 0x20));
0x000036d0 cmp r3, r2 |
| if (r3 > r2) {
0x000036d2 bhi.w 0x44bc | goto label_171;
| }
0x000036d6 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x000036d8 str r3, [r7, 0x38] | *((r7 + 0x38)) = r3;
0x000036da movs r3, 0 | r3 = 0;
0x000036dc str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
0x000036de b.w 0x2a18 | goto label_16;
| if (r3 != 0) {
| label_84:
0x000037f6 bne.w 0x4344 | goto label_172;
| }
0x000037fa ldr.w r3, [fp, 0x230] | r3 = *(arg_230h);
0x000037fe cmp r3, 0 |
| if (r3 == 0) {
0x00003800 beq.w 0x40ae | goto label_173;
| }
0x00003804 mov r1, r2 | r1 = r2;
0x00003806 str r2, [r7, 0x40] | *((r7 + 0x40)) = r2;
0x00003808 b.w 0x2078 | goto label_28;
| label_124:
0x0000380c ldr.w r0, [pc, 0x738] |
0x00003810 add r0, pc | r0 = 0x775c;
0x00003812 bl 0xc2a4 | dl_fatal_printf ();
| label_169:
0x00003816 mov r2, sl | r2 = sl;
0x00003818 ldrd sl, fp, [r7, 4] | __asm ("ldrd sl, fp, [r7, 4]");
0x0000381c cmp r2, 8 |
| if (r2 != 8) {
0x0000381e bne.w 0x4312 | goto label_174;
| }
0x00003822 ldr r2, [r7, 0x40] | r2 = *((r7 + 0x40));
0x00003824 str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
0x00003826 ldr r3, [r7, 0x38] | r3 = *((r7 + 0x38));
0x00003828 cmp r3, 0 |
| if (r3 == 0) {
0x0000382a beq.w 0x412c | goto label_175;
| }
0x0000382e ldr r2, [r7, 0x38] | r2 = *((r7 + 0x38));
0x00003830 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00003832 str r3, [r2, 0x20] | *((r2 + 0x20)) = r3;
0x00003834 str r3, [r7, 0x38] | *((r7 + 0x38)) = r3;
| label_54:
0x00003836 ldr.w r1, [pc, 0x714] | r1 = *(0x00003f4c);
0x0000383a ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x0000383e ldrd r5, r4, [r7, 0xc] | __asm ("ldrd r5, r4, [r7, 0xc]");
0x00003842 add r1, pc | r1 += pc;
0x00003844 ldr.w r3, [r1, 0x1dc] | r3 = *((r1 + 0x1dc));
0x00003848 add.w r0, r3, 0xff | r0 = r3 + 0xff;
0x0000384c adds r3, 1 | r3++;
0x0000384e str.w r5, [r4, r0, lsl 3] | __asm ("str.w r5, [r4, r0, lsl 3]");
0x00003852 str.w r3, [r1, 0x1dc] | __asm ("str.w r3, [r1, 0x1dc]");
0x00003856 ldrb.w r3, [r2, 0x199] | r3 = *((r2 + 0x199));
0x0000385a orr r3, r3, 8 | r3 |= 8;
0x0000385e strb.w r3, [r2, 0x199] | *((r2 + 0x199)) = r3;
0x00003862 b 0x335c | goto label_14;
| label_104:
0x00003864 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00003868 cmp r3, 0 |
| if (r3 == 0) {
0x0000386a beq.w 0x41c8 | goto label_176;
| }
| label_57:
0x0000386e ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00003870 eor r0, r3, 1 | r0 = r3 ^ 1;
0x00003874 lsls r0, r0, 1 | r0 <<= 1;
0x00003876 bl 0x14c28 | fcn_00014c28 (r0);
0x0000387a b.w 0x22aa | goto label_29;
| label_125:
0x0000387e cmp r3, r0 |
| if (r3 < r0) {
0x00003880 bls.w 0x28aa | goto label_30;
| }
0x00003884 b.w 0x28a2 | goto label_31;
| label_146:
0x00003888 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0000388a mov r1, r3 | r1 = r3;
0x0000388c str.w r3, [r4, 0x5a8] | __asm ("str.w r3, [r4, 0x5a8]");
0x00003890 b.w 0x2b64 | goto label_32;
| label_143:
0x00003894 ldr.w r2, [pc, 0x6b8] | r2 = *(0x00003f50);
0x00003898 ldr.w r5, [sl, 0x164] | r5 = *((sl + 0x164));
0x0000389c add r2, pc | r2 += pc;
0x0000389e ldr.w r3, [r2, 0x5a4] | r3 = *((r2 + 0x5a4));
0x000038a2 ldr.w r2, [r2, 0x5a8] | r2 = *((r2 + 0x5a8));
0x000038a6 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x000038a8 cmp r3, 0 |
| if (r3 != 0) {
0x000038aa bne.w 0x2ae4 | goto label_33;
| }
0x000038ae b 0x35a6 | goto label_34;
| label_142:
0x000038b0 lsls r3, r4, 2 | r3 = r4 << 2;
0x000038b2 adds r3, 7 | r3 += 7;
0x000038b4 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000038b8 sub.w sp, sp, r3 |
0x000038bc movs r3, 0 | r3 = 0;
0x000038be add r0, sp, 0x10 | r0 += arg_10h;
0x000038c0 add r2, sp, 0xc | r2 += arg_ch;
| do {
0x000038c2 str r1, [r2, 4]! | *((r2 += 4)) = r1;
0x000038c6 adds r3, 1 | r3++;
0x000038c8 ldr r1, [r1, 0xc] | r1 = *((r1 + 0xc));
0x000038ca cmp r1, 0 |
0x000038cc bne 0x38c2 |
| } while (r1 != 0);
0x000038ce cmp r4, r3 |
0x000038d0 it eq |
| if (r4 == r3) {
0x000038d2 moveq r1, r0 | r1 = r0;
| goto label_177;
| }
| if (r4 == r3) {
| label_177:
0x000038d4 beq.w 0x2a8e | goto label_35;
| }
0x000038d8 ldr.w r3, [pc, 0x678] |
0x000038dc movw r2, 0x77e | r2 = 0x77e;
0x000038e0 ldr.w r1, [pc, 0x674] | r1 = *(0x00003f58);
0x000038e4 ldr.w r0, [pc, 0x674] |
0x000038e8 add r3, pc | r3 = 0x7840;
0x000038ea add r1, pc | r1 += pc;
0x000038ec add r0, pc | r0 = 0x784c;
0x000038ee bl 0x11f30 | fcn_00011f30 (r0);
| label_137:
0x000038f2 ldr.w r8, [pc, 0x66c] | r8 = *(0x00003f60);
0x000038f6 add.w sb, fp, 0x260 | sb += arg_260h;
0x000038fa ldr.w r3, [pc, 0x668] | r3 = *(0x00003f64);
0x000038fe movs r5, 0 | r5 = 0;
0x00003900 ldr.w r6, [r4, 0x1d8] | r6 = *((r4 + 0x1d8));
0x00003904 add r8, pc | r8 += pc;
0x00003906 add r3, pc | r3 += pc;
0x00003908 add.w r8, r8, 0x7f8 | r8 += 0x7f8;
0x0000390c add.w r3, r3, 0x598 | r3 += 0x598;
0x00003910 str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
| do {
0x00003912 ldr r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x00003914 cbz r3, 0x3924 |
0x00003916 ldr r2, [r7, 0x3c] | r2 = *((r7 + 0x3c));
0x00003918 movs r1, 1 | r1 = 1;
0x0000391a cmp fp, r2 |
0x0000391c ite ne |
| if (fp == r2) {
0x0000391e movne r0, sb | r0 = sb;
| }
| if (fp != r2) {
0x00003920 moveq r0, r8 | r0 = r8;
| }
0x00003922 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
| }
0x00003924 ldr.w r3, [r4, 0x1dc] | r3 = *((r4 + 0x1dc));
0x00003928 adds r5, 1 | r5++;
0x0000392a ldr r6, [r6, 0x20] | r6 = *((r6 + 0x20));
0x0000392c add.w r8, r8, 8 | r8 += 8;
0x00003930 add.w sb, sb, 8 | sb += 8;
0x00003934 cmp r3, r5 |
0x00003936 bhi 0x3912 |
| } while (r3 > r5);
0x00003938 b.w 0x2a52 | goto label_36;
| label_139:
0x0000393c ldr.w r2, [pc, 0x628] |
0x00003940 mov r0, r4 | r0 = r4;
0x00003942 mov r1, fp | r1 = fp;
0x00003944 add r2, pc | r2 = 0x78b0;
0x00003946 bl 0x17b4 | r0 = fcn_000017b4 (r0, r1, r2);
0x0000394a mov r4, r0 | r4 = r0;
0x0000394c b.w 0x2a66 | goto label_37;
| label_141:
0x00003950 mov r0, r5 | r0 = r5;
0x00003952 ldr r1, [r7, 0x44] | r1 = *((r7 + 0x44));
0x00003954 movs r2, 3 | r2 = 3;
0x00003956 bl 0xc19c | r0 = fcn_0000c19c (r0, r1, r2);
0x0000395a adds r6, r0, 1 | r6 = r0 + 1;
0x0000395c mov r5, r0 | r5 = r0;
| if (r6 == r0) {
0x0000395e beq.w 0x2a84 | goto label_38;
| }
0x00003962 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00003964 add.w r6, r7, 0x64 | r6 = r7 + 0x64;
0x00003968 str r0, [r6] | *(r6) = r0;
0x0000396a ldr.w sb, [r3] | sb = *(r3);
0x0000396e cmp.w sb, 0 |
| if (sb == 0) {
0x00003972 beq.w 0x4326 | goto label_178;
| }
0x00003976 mov r3, r0 | r3 = r0;
0x00003978 mov.w r8, 0x20 | r8 = 0x20;
| label_47:
0x0000397c movs r1, 0x23 | r1 = 0x23;
0x0000397e mov r2, sb | r2 = sb;
0x00003980 mov r0, r3 | r0 = r3;
0x00003982 str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
0x00003984 bl 0x16420 | r0 = fcn_00016420 (r0, r1);
0x00003988 mov r1, r0 | r1 = r0;
| if (r0 == 0) {
0x0000398a cbz r0, 0x39b6 | goto label_179;
| }
0x0000398c ldr r3, [r7, 0x3c] | r3 = *((r7 + 0x3c));
0x0000398e subs r3, r0, r3 | r3 = r0 - r3;
0x00003990 sub.w r2, sb, r3 | r2 = sb - r3;
0x00003994 mov r3, r0 | r3 = r0;
0x00003996 subs r0, r2, 1 | r0 = r2 - 1;
0x00003998 add r1, r0 | r1 += r0;
0x0000399a subs r0, r3, 1 | r0 = r3 - 1;
0x0000399c add r0, r2 | r0 += r2;
0x0000399e b 0x39aa |
| while (r3 != r1) {
0x000039a0 ldrb r2, [r3, 1]! | r2 = *((r3 += 1));
0x000039a4 cmp r2, 0xa |
| if (r2 == 0xa) {
0x000039a6 beq.w 0x4080 | goto label_180;
| }
0x000039aa cmp r3, r1 |
0x000039ac sub.w sb, r0, r3 | sb = r0 - r3;
0x000039b0 strb.w r8, [r3] | *(r3) = r8;
0x000039b4 bne 0x39a0 |
| }
| label_179:
0x000039b6 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x000039b8 ldr r3, [r3] | r3 = *(r3);
0x000039ba subs r2, r3, 1 | r2 = r3 - 1;
0x000039bc ldrb r1, [r5, r2] | r1 = *((r5 + r2));
0x000039be add r2, r5 | r2 += r5;
0x000039c0 cmp r1, 0x20 |
0x000039c2 it ne |
| if (r1 != 0x20) {
0x000039c4 cmpne r1, 0x3a | __asm ("cmpne r1, 0x3a");
| }
0x000039c6 sub.w r1, r1, 9 | r1 -= 9;
0x000039ca ite ne |
| if (r1 == 0x20) {
0x000039cc movne r0, 1 | r0 = 1;
| }
| if (r1 != 0x20) {
0x000039ce moveq r0, 0 | r0 = 0;
| }
0x000039d0 cmp r1, 1 |
0x000039d2 ite ls |
| if (r1 > 1) {
0x000039d4 movls r0, 0 | r0 = 0;
| }
| if (r1 <= 1) {
0x000039d6 andhi r0, r0, 1 | r0 &= 1;
| }
0x000039da cmp r0, 0 |
| if (r0 != 0) {
0x000039dc bne.w 0x42c6 | goto label_181;
| }
| label_62:
0x000039e0 mov.w r8, 0 | r8 = 0;
0x000039e4 strb.w r8, [r2] | *(r2) = r8;
0x000039e8 cmp r5, 0 |
| if (r5 != 0) {
0x000039ea beq 0x3a5c |
| label_60:
0x000039ec ldr.w r3, [pc, 0x57c] | r3 = *(0x00003f6c);
0x000039f0 ldr.w sb, [pc, 0x57c] |
0x000039f4 str r5, [r6] | *(r6) = r5;
0x000039f6 add r3, pc | r3 += pc;
0x000039f8 add sb, pc | sb = 0x796c;
0x000039fa str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
0x000039fc b 0x3a06 | void (*0x3a06)() ();
| label_61:
0x00003a14 cmp.w r8, 0 |
| if (r8 == 0) {
0x00003a18 beq 0x3a5c | goto label_182;
| }
0x00003a1a ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00003a1c mov r0, r8 | r0 = r8;
0x00003a1e movs r6, 0 | r6 = 0;
0x00003a20 ldr r1, [r3] | r1 = *(r3);
0x00003a22 sub.w r3, r8, r5 | r3 = r8 - r5;
0x00003a26 subs r1, r1, r3 | r1 -= r3;
0x00003a28 bl 0x1561c | r0 = fcn_0001561c (r0, r1);
0x00003a2c add.w r3, r0, 8 | r3 = r0 + 8;
0x00003a30 mov r2, r0 | r2 = r0;
0x00003a32 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00003a36 mov r1, r8 | r1 = r8;
0x00003a38 sub.w sp, sp, r3 |
0x00003a3c add.w r0, sp, 0x17 | r0 += arg_17h;
0x00003a40 lsrs r3, r0, 3 | r3 = r0 >> 3;
0x00003a42 bic r0, r0, 7 | r0 = BIT_MASK (r0, 7);
0x00003a46 strb.w r6, [r2, r3, lsl 3] | offset_3 = r3 << 3;
| *((r2 + offset_3)) = r6;
0x00003a4a blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00003a4e ldr.w r2, [pc, 0x524] | r2 = fcn.00014c70;
0x00003a52 mov r1, fp | r1 = fp;
0x00003a54 add r2, pc | r2 += pc;
0x00003a56 bl 0xc64 | r0 = fcn_00000c64 (r0);
0x00003a5a add r4, r0 | r4 += r0;
| }
| label_182:
0x00003a5c ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00003a5e mov r0, r5 | r0 = r5;
0x00003a60 ldr r1, [r3] | r1 = *(r3);
0x00003a62 bl 0x14ae0 | fcn_00014ae0 (r0);
0x00003a66 b.w 0x2a84 | goto label_38;
| label_140:
0x00003a6a ldr.w r2, [pc, 0x50c] |
0x00003a6e mov r1, fp | r1 = fp;
0x00003a70 add r2, pc | r2 = 0x79ee;
0x00003a72 bl 0x17b4 | r0 = fcn_000017b4 (r0, r1, r2);
0x00003a76 add r4, r0 | r4 += r0;
0x00003a78 b.w 0x2a70 | goto label_39;
| label_166:
0x00003a7c ldr.w r3, [pc, 0x4fc] | r3 = *(0x00003f7c);
0x00003a80 add r3, pc | r3 += pc;
0x00003a82 ldr r3, [r3] | r3 = *(r3);
0x00003a84 lsls r3, r3, 0x19 | r3 <<= 0x19;
| if (r3 < r3) {
0x00003a86 bmi.w 0x3c92 | goto label_183;
| }
| label_43:
0x00003a8a ldr r1, [r7, 0x40] | r1 = *((r7 + 0x40));
0x00003a8c ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00003a90 bl 0xfd4 | fcn_00000fd4 (r0, r1);
0x00003a94 b 0x335c | goto label_14;
| label_151:
0x00003a96 ldr.w r2, [pc, 0x4e8] | r2 = *(0x00003f80);
0x00003a9a add r2, pc | r2 += pc;
0x00003a9c ldr r1, [r2] | r1 = *(r2);
0x00003a9e lsls r0, r1, 0x14 | r0 = r1 << 0x14;
| if (r0 >= r1) {
0x00003aa0 bpl.w 0x3c0e | goto label_184;
| }
0x00003aa4 ldr.w r2, [fp, 0x164] | r2 = *(arg_164h);
0x00003aa8 cmp r2, 0 |
| if (r2 == 0) {
0x00003aaa beq.w 0x3cb8 | goto label_55;
| }
0x00003aae ldr.w r3, [pc, 0x4d4] | r3 = *(0x00003f84);
0x00003ab2 movs r5, 0 | r5 = 0;
0x00003ab4 ldr.w sb, [pc, 0x4d0] | sb = *(0x00003f88);
0x00003ab8 mov r8, r6 | r8 = r6;
0x00003aba add r3, pc | r3 += pc;
0x00003abc str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
0x00003abe add sb, pc | sb += pc;
0x00003ac0 ldr.w r3, [pc, 0x4c8] |
0x00003ac4 add r3, pc | r3 = 0x7a54;
0x00003ac6 str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
0x00003ac8 b 0x3ae6 |
| while (r1 != 0) {
0x00003aca ldr.w r0, [pc, 0x4c4] |
0x00003ace mov r2, r6 | r2 = r6;
0x00003ad0 ldr.w r3, [r4, 0x244] | r3 = *((r4 + 0x244));
0x00003ad4 add r0, pc | r0 = 0x7a6a;
0x00003ad6 bl 0xc264 | fcn_0000c264 ();
| label_40:
0x00003ada ldr.w r3, [fp, 0x164] | r3 = *(arg_164h);
0x00003ade adds r5, 1 | r5++;
0x00003ae0 cmp r3, r5 |
| if (r3 < r5) {
0x00003ae2 bls.w 0x3cb2 | goto label_185;
| }
0x00003ae6 ldr.w r3, [fp, 0x160] | r3 = *(arg_160h);
0x00003aea ldr.w r4, [r3, r5, lsl 2] | offset_4 = r5 << 2;
| r4 = *((r3 + offset_4));
0x00003aee ldrb.w r3, [r4, 0x199] | r3 = *((r4 + 0x199));
0x00003af2 lsls r6, r3, 0x1e | r6 = r3 << 0x1e;
| if (r6 < r3) {
0x00003af4 bmi.w 0x3ca4 | goto label_186;
| }
0x00003af8 ldr r6, [r7, 0x44] | r6 = *((r7 + 0x44));
0x00003afa mov r1, r4 | r1 = r4;
0x00003afc ldr.w r0, [r6, 0x184] | r0 = *((r6 + 0x184));
0x00003b00 bl 0xc2c0 | r0 = fcn_0000c2c0 (r0, r1);
| if (r0 != 0) {
0x00003b04 cbz r0, 0x3b0a |
0x00003b06 str.w r4, [r6, 0x188] | __asm ("str.w r4, [r6, 0x188]");
| }
0x00003b0a ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00003b0c ldr r1, [r3] | r1 = *(r3);
0x00003b0e ldrb r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x00003b10 cbnz r3, 0x3b22 |
0x00003b12 ldr.w r3, [pc, 0x480] | r3 = *(0x00003f94);
0x00003b16 add r3, pc | r3 += pc;
0x00003b18 ldr r3, [r3] | r3 = *(r3);
0x00003b1a ldr r1, [r3] | r1 = *(r3);
0x00003b1c cmp r1, 0 |
| if (r1 == 0) {
0x00003b1e beq.w 0x40fc | goto label_187;
| }
| }
| label_51:
0x00003b22 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00003b24 ldrb r3, [r2] | r3 = *(r2);
| if (r3 == 0) {
0x00003b26 cbnz r3, 0x3b38 |
0x00003b28 ldr.w r3, [pc, 0x46c] | r3 = *(0x00003f98);
0x00003b2c add r3, pc | r3 += pc;
0x00003b2e ldr r3, [r3] | r3 = *(r3);
0x00003b30 ldr r2, [r3] | r2 = *(r3);
0x00003b32 cmp r2, 0 |
| if (r2 == 0) {
0x00003b34 beq.w 0x4104 | goto label_188;
| }
| }
| label_52:
0x00003b38 ldr r3, [r4] | r3 = *(r4);
0x00003b3a movs r6, 8 | r6 = 8;
0x00003b3c str r6, [sp, 4] | *(arg_4h) = r6;
0x00003b3e mov r0, sb | r0 = sb;
0x00003b40 str r3, [sp, 8] | *(arg_8h) = r3;
0x00003b42 ldr.w r3, [r4, 0x1b4] | r3 = *((r4 + 0x1b4));
0x00003b46 str r3, [sp] | *(sp) = r3;
0x00003b48 mov r3, r6 | r3 = r6;
0x00003b4a bl 0xc264 | fcn_0000c264 ();
0x00003b4e ldr.w r1, [r4, 0x248] | r1 = *((r4 + 0x248));
0x00003b52 cmp r1, 0 |
0x00003b54 bne 0x3aca |
| }
0x00003b56 ldr r0, [r7, 0x40] | r0 = *((r7 + 0x40));
0x00003b58 bl 0xc264 | fcn_0000c264 ();
0x00003b5c b 0x3ada | goto label_40;
| label_145:
0x00003b5e ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x00003b60 str.w r0, [ip, 0x5a4] | __asm ("str.w r0, [ip, 0x5a4]");
0x00003b64 ldr r2, [r1, 0xc] | r2 = *((r1 + 0xc));
0x00003b66 b.w 0x2b64 | goto label_32;
| label_76:
0x00003bbc bl 0x11280 | fcn_00011280 ();
0x00003bc0 movs r0, 0 | r0 = 0;
0x00003bc2 bl 0x14c28 | fcn_00014c28 (r0);
0x00003bc6 ldr.w r0, [sl, 0x164] | r0 = *((sl + 0x164));
0x00003bca b.w 0x1e18 | goto label_41;
| label_157:
0x00003bda ldr r3, [pc, 0x3cc] |
0x00003bdc movw r2, 0x637 | r2 = 0x637;
0x00003be0 ldr r1, [pc, 0x3c8] |
0x00003be2 ldr r0, [pc, 0x3cc] |
0x00003be4 add r3, pc | r3 = 0x7b92;
0x00003be6 add r1, pc | r1 = 0x7b96;
0x00003be8 add r0, pc | r0 = 0x7b9e;
0x00003bea bl 0x11f30 | fcn_00011f30 (r0);
| label_74:
0x00003bee ldr r2, [pc, 0x3c4] |
0x00003bf0 movs r3, 4 | r3 = 4;
0x00003bf2 str.w r3, [sl, 0x164] | __asm ("str.w r3, [sl, 0x164]");
0x00003bf6 subs r4, 1 | r4--;
0x00003bf8 adds r5, 4 | r5 += 4;
0x00003bfa add r2, pc | r2 = 0x7bb4;
0x00003bfc ldr r3, [r2, 0x10] | r3 = *(0x7bc4);
0x00003bfe adds r3, 1 | r3++;
0x00003c00 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00003c02 b.w 0x1a2e | goto label_0;
| label_184:
0x00003c0e lsls r0, r1, 0x17 | r0 = r1 << 0x17;
| if (r0 >= r1) {
0x00003c10 bpl.w 0x4152 | goto label_189;
| }
0x00003c14 ldr r3, [r2, 0x30] | r3 = *((r2 + 0x30));
0x00003c16 mov r2, r6 | r2 = r6;
0x00003c18 ldr r1, [pc, 0x39c] |
0x00003c1a ldr r0, [pc, 0x3a0] |
0x00003c1c cmp r3, 0 |
0x00003c1e mov.w r3, 1 |
0x00003c22 movt r3, 0x200 | r3 = 0x2000001;
0x00003c26 it eq |
| if (r3 != 0) {
0x00003c28 moveq r3, 0x2000000 | r3 = 0x2000000;
| }
0x00003c2c add r0, pc | r0 = 0x7bee;
0x00003c2e add r1, pc | r1 = 0x7bea;
0x00003c30 str.w fp, [r6] | __asm ("str.w fp, [r6]");
0x00003c34 str r3, [r6, 4] | *((r6 + 4)) = r3;
0x00003c36 bl 0x12578 | fcn_00012578 (r0, r1);
0x00003c3a ldr.w r4, [fp, 8] | r4 = *(arg_8h);
0x00003c3e ldr r0, [r4] | r0 = *(r4);
0x00003c40 cmp r0, 0 |
| if (r0 == 0) {
0x00003c42 beq.w 0x4148 | goto label_190;
| }
0x00003c46 ldr r3, [pc, 0x378] |
0x00003c48 mov r5, fp | r5 = fp;
0x00003c4a ldr.w sb, [pc, 0x378] | sb = *(0x00003fc4);
0x00003c4e ldr.w r8, [pc, 0x378] |
0x00003c52 add r3, pc | r3 = 0x7c18;
0x00003c54 str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
0x00003c56 add sb, pc | sb += pc;
0x00003c58 add r8, pc | r8 = 0x7c26;
0x00003c5a movs r3, 1 | r3 = 1;
0x00003c5c b 0x3c68 |
| while (r0 != 1) {
| label_42:
0x00003c5e ldr r0, [r4, 8]! | r0 = *((r4 += 8));
0x00003c62 cmp r0, 0 |
| if (r0 == 0) {
0x00003c64 beq.w 0x4144 | goto label_191;
| }
0x00003c68 cmp r0, 1 |
0x00003c6a bne 0x3c5e |
| }
0x00003c6c ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x00003c6e ldr.w r2, [sb, 0x194] | r2 = *((sb + 0x194));
0x00003c72 cmp r2, r5 |
0x00003c74 it eq |
| if (r2 != r5) {
0x00003c76 ldreq r5, [r5, 0xc] | r5 = *((r5 + 0xc));
| }
0x00003c78 ldr.w r2, [r5, 0x204] | r2 = *((r5 + 0x204));
0x00003c7c cmp r2, 0 |
| if (r2 != 0) {
0x00003c7e bne 0x3c5e | goto label_42;
| }
0x00003c80 cmp r3, 0 |
| if (r3 != 0) {
0x00003c82 bne.w 0x4286 | goto label_192;
| }
| label_59:
0x00003c86 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00003c88 mov r0, r8 | r0 = r8;
0x00003c8a bl 0xc264 | fcn_0000c264 ();
0x00003c8e movs r3, 0 | r3 = 0;
0x00003c90 b 0x3c5e | goto label_42;
| label_183:
0x00003c92 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00003c96 ldr r0, [pc, 0x334] |
0x00003c98 ldr r2, [r3, 0x18] | r2 = *((r3 + 0x18));
0x00003c9a ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00003c9c add r0, pc | r0 = 0x7c6e;
0x00003c9e bl 0xc1f0 | fcn_0000c1f0 ();
0x00003ca2 b 0x3a8a | goto label_43;
| label_186:
0x00003ca4 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00003ca6 ldr r0, [pc, 0x328] |
0x00003ca8 ldr r1, [r3] | r1 = *(r3);
0x00003caa add r0, pc | r0 = 0x7c80;
0x00003cac bl 0xc264 | fcn_0000c264 ();
0x00003cb0 b 0x3ada | goto label_40;
| label_185:
0x00003cb2 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x00003cb6 mov r6, r8 | r6 = r8;
| label_55:
0x00003cb8 cmp r3, 3 |
| if (r3 != 3) {
0x00003cba bne.w 0x4224 | goto label_193;
| }
0x00003cbe ldr r2, [pc, 0x314] |
0x00003cc0 add r2, pc | r2 = 0x7c9a;
0x00003cc2 ldr r3, [r2, 0x30] | r3 = *(0x7cca);
0x00003cc4 cmp r3, 0 |
| if (r3 < 0) {
0x00003cc6 blt 0x3d54 | goto label_194;
| }
0x00003cc8 ldr r2, [r2, 0x28] | r2 = *((r2 + 0x28));
0x00003cca cmp r2, 0 |
| if (r2 == 0) {
0x00003ccc beq 0x3d54 | goto label_194;
| }
0x00003cce ldr.w r2, [fp, 0x164] | r2 = *(arg_164h);
0x00003cd2 cmp r3, 0 |
0x00003cd4 mov.w r3, 1 |
0x00003cd8 movt r3, 0x200 | r3 = 0x2000001;
0x00003cdc it eq |
| if (r3 != 0) {
0x00003cde moveq r3, 0x2000000 | r3 = 0x2000000;
| }
0x00003ce2 subs r4, r2, 1 | r4 = r2 - 1;
0x00003ce4 str r3, [r6, 4] | *((r6 + 4)) = r3;
| if (r2 == 0) {
0x00003ce6 cbz r2, 0x3d24 | goto label_195;
| }
0x00003ce8 ldr r5, [pc, 0x2ec] |
0x00003cea ldr.w sb, [pc, 0x2f0] | sb = *(0x00003fdc);
0x00003cee ldr.w r8, [pc, 0x2f0] | r8 = *(0x00003fe0);
0x00003cf2 add r5, pc |
0x00003cf4 add.w r5, r5, 0x598 | r5 = 0x8266;
0x00003cf8 add sb, pc | sb += pc;
0x00003cfa add r8, pc | r8 += pc;
0x00003cfc b 0x3d02 |
0x00003d02 ldr.w r3, [fp, 0x1f8] | r3 = *(arg_1f8h);
0x00003d06 ldr.w r3, [r3, r4, lsl 2] | offset_5 = r4 << 2;
| r3 = *((r3 + offset_5));
0x00003d0a cmp r3, r5 |
| if (r3 == r5) {
0x00003d0c beq 0x3cfe | void (*0x3cfe)() ();
| }
| label_195:
0x00003d24 ldr r3, [pc, 0x2bc] |
0x00003d26 ldr r2, [r7, 0x34] | r2 = *((r7 + 0x34));
0x00003d28 add r3, pc |
0x00003d2a ldr r3, [r3] | r3 = *(0x7d10);
0x00003d2c ands.w r3, r2, r3, lsr 11 | r3 = r2 & (r3 >> 11);
| if (r3 != r2) {
0x00003d30 beq 0x3d54 |
0x00003d32 ldr r0, [pc, 0x2b4] |
0x00003d34 movs r3, 0 | r3 = 0;
0x00003d36 mov.w r2, 0x2000000 | r2 = 0x2000000;
0x00003d3a add r0, pc |
0x00003d3c ldrb.w r1, [r0, 0x730] | r1 = *((r0 + 0x730));
0x00003d40 add.w r0, r0, 0x598 | r0 = 0x82c0;
0x00003d44 bfc r1, 2, 1 | value_6 = BIT_MASK (1, );
| value_6 = ~value_6;
| r1 &= value_6;
0x00003d48 strb.w r1, [r0, 0x198] | *((r0 + 0x198)) = r1;
0x00003d4c ldr.w r1, [fp, 0x1d4] | r1 = *(arg_1d4h);
0x00003d50 bl 0x8e78 | fcn_00008e78 (r0, r1, r2, r3, r4, r5, r6);
| }
| label_194:
0x00003d54 ldrb.w r3, [sl, 0x169] | r3 = *((sl + 0x169));
0x00003d58 cmp r3, 0 |
| if (r3 == 0) {
0x00003d5a beq.w 0x3e98 | goto label_58;
| }
0x00003d5e ldr r3, [pc, 0x28c] |
0x00003d60 str.w fp, [r7, 0x2c] | __asm ("str.w fp, [r7, 0x2c]");
0x00003d64 str.w fp, [r7, 0x28] | __asm ("str.w fp, [r7, 0x28]");
0x00003d68 add r3, pc | r3 = 0x7d5a;
0x00003d6a str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
0x00003d6c ldr r3, [pc, 0x280] |
0x00003d6e add r3, pc | r3 = 0x7d62;
0x00003d70 str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
0x00003d72 movs r3, 1 | r3 = 1;
| label_44:
0x00003d74 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x00003d76 ldr.w r2, [r0, 0xb0] | r2 = *((r0 + 0xb0));
0x00003d7a cmp r2, 0 |
| if (r2 == 0) {
0x00003d7c beq.w 0x3e88 | goto label_196;
| }
0x00003d80 ldr r1, [r0, 0x34] | r1 = *((r0 + 0x34));
0x00003d82 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00003d84 ldr.w r8, [r1, 4] | r8 = *((r1 + 4));
0x00003d88 ldr r1, [r0] | r1 = *(r0);
0x00003d8a add.w sb, r1, r2 | sb = r1 + r2;
0x00003d8e cmp r3, 0 |
| if (r3 != 0) {
0x00003d90 bne.w 0x4014 | goto label_197;
| }
| label_46:
0x00003d94 ldr r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x00003d96 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00003d98 ldrb r3, [r1] | r3 = *(r1);
| if (r3 != 0) {
0x00003d9a cbnz r3, 0x3daa | void (*0x3daa)() ();
| }
| label_196:
0x00003e88 ldr r2, [r7, 0x2c] | r2 = *((r7 + 0x2c));
0x00003e8a ldr r2, [r2, 0xc] | r2 = *((r2 + 0xc));
0x00003e8c str r2, [r7, 0x2c] | *((r7 + 0x2c)) = r2;
0x00003e8e cmp r2, 0 |
| if (r2 != 0) {
0x00003e90 bne.w 0x3d74 | goto label_44;
| }
0x00003e94 ldr.w fp, [r7, 0x28] | fp = *((r7 + 0x28));
| label_58:
0x00003e98 movs r0, 0 | r0 = 0;
0x00003e9a bl 0x14c28 | fcn_00014c28 (r0);
0x00003e9e b.w 0x2c00 | goto label_45;
| label_197:
0x00004014 ldr.w r0, [pc, 0x510] |
0x00004018 add r0, pc | r0 = 0x8544;
0x0000401a bl 0xc264 | fcn_0000c264 ();
0x0000401e b 0x3d94 | goto label_46;
| label_72:
0x0000403c ldr.w r2, [pc, 0x4f0] | r2 = *(0x00004530);
0x00004040 subs r4, 2 | r4 -= 2;
0x00004042 ldr r3, [r5, 8]! | r3 = *((r5 += 8));
0x00004046 add r2, pc | r2 += pc;
0x00004048 str.w r3, [sl, 0x15c] | __asm ("str.w r3, [sl, 0x15c]");
0x0000404c ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x0000404e adds r3, 2 | r3 += 2;
0x00004050 str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x00004052 b.w 0x1a2e | goto label_0;
| label_167:
0x00004056 ldr.w r0, [pc, 0x4dc] | r0 = *(0x00004534);
0x0000405a mov r1, r5 | r1 = r5;
0x0000405c movs r3, 1 | r3 = 1;
0x0000405e add r0, pc | r0 += pc;
0x00004060 bl 0xc1f0 | fcn_0000c1f0 ();
0x00004064 b 0x3a8a | goto label_43;
| label_73:
0x00004066 ldr.w r2, [pc, 0x4d0] | r2 = *(0x00004538);
0x0000406a subs r4, 2 | r4 -= 2;
0x0000406c ldr r3, [r5, 8]! | r3 = *((r5 += 8));
0x00004070 add r2, pc | r2 += pc;
0x00004072 str.w r3, [sl, 0x160] | __asm ("str.w r3, [sl, 0x160]");
0x00004076 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
0x00004078 adds r3, 2 | r3 += 2;
0x0000407a str r3, [r2, 0x10] | *((r2 + 0x10)) = r3;
0x0000407c b.w 0x1a2e | goto label_0;
| label_180:
0x00004080 ldr r3, [r6] | r3 = *(r6);
0x00004082 b 0x397c | goto label_47;
| label_116:
0x00004084 bic r1, r3, 0x8000800 | r1 = BIT_MASK (r3, 0x8000800);
0x00004088 bic r1, r1, 0xe9 | r1 = BIT_MASK (r1, 0xe9);
0x0000408c cmp r1, 0 |
| if (r1 == 0) {
0x0000408e beq.w 0x26a4 | goto label_48;
| }
0x00004092 ldr.w r0, [pc, 0x4a8] | r0 = *(0x0000453c);
0x00004096 add r0, pc | r0 += pc;
0x00004098 bl 0xc1f0 | fcn_0000c1f0 ();
0x0000409c ldr.w r3, [r5, 0x20c] | r3 = *((r5 + 0x20c));
0x000040a0 b.w 0x26a4 | goto label_48;
| label_173:
0x000040ae mov r1, r3 | r1 = r3;
0x000040b0 str r3, [r7, 0x40] | *((r7 + 0x40)) = r3;
0x000040b2 b.w 0x2084 | goto label_49;
| label_80:
0x000040b6 ldr r4, [r7, 0x44] | r4 = *((r7 + 0x44));
0x000040b8 movs r2, 0 | r2 = 0;
0x000040ba str r2, [r7, 0x68] | *((r7 + 0x68)) = r2;
0x000040bc add.w r3, r7, 0x64 | r3 = r7 + 0x64;
0x000040c0 str r1, [r7, 0x64] | *((r7 + 0x64)) = r1;
0x000040c2 add.w r0, r7, 0x50 | r0 = r7 + 0x50;
0x000040c6 str r2, [r4] | *(r4) = r2;
0x000040c8 mov.w r2, 0x20000000 | r2 = 0x20000000;
0x000040cc str r2, [r7, 0x6c] | *((r7 + 0x6c)) = r2;
0x000040ce mov r1, r4 | r1 = r4;
0x000040d0 str r3, [sp] | *(sp) = r3;
0x000040d2 add.w r2, r7, 0x4c | r2 = r7 + 0x4c;
0x000040d6 ldr.w r3, [pc, 0x468] | r3 = *(0x00004540);
0x000040da add r3, pc | r3 += pc;
0x000040dc blx 0xa04 | fcn_00000a04 ();
0x000040e0 ldr r3, [r4] | r3 = *(r4);
0x000040e2 cmp r3, 0 |
| if (r3 == 0) {
0x000040e4 beq.w 0x1e90 | goto label_50;
| }
0x000040e8 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x000040ec cmp r3, 6 |
| if (r3 == 6) {
0x000040ee beq.w 0x34c8 | goto label_22;
| }
0x000040f2 movs r0, 1 | r0 = 1;
0x000040f4 bl 0x14c28 | fcn_00014c28 (r0);
0x000040f8 b.w 0x1e90 | goto label_50;
| label_187:
0x000040fc ldr.w r1, [pc, 0x444] |
0x00004100 add r1, pc | r1 = 0x8648;
0x00004102 b 0x3b22 | goto label_51;
| label_188:
0x00004104 ldr.w r2, [pc, 0x440] |
0x00004108 add r2, pc | r2 = 0x8654;
0x0000410a b 0x3b38 | goto label_52;
| label_101:
0x0000410c bic r1, r3, 0x8000800 | r1 = BIT_MASK (r3, 0x8000800);
0x00004110 bic r1, r1, 0xe9 | r1 = BIT_MASK (r1, 0xe9);
0x00004114 cmp r1, 0 |
| if (r1 == 0) {
0x00004116 beq.w 0x2264 | goto label_53;
| }
0x0000411a ldr.w r0, [pc, 0x430] | r0 = *(0x0000454c);
0x0000411e add r0, pc | r0 += pc;
0x00004120 bl 0xc1f0 | fcn_0000c1f0 ();
0x00004124 ldr.w r3, [fp, 0x20c] | r3 = *(arg_20ch);
0x00004128 b.w 0x2264 | goto label_53;
| label_175:
0x0000412c ldr.w r3, [pc, 0x420] | r3 = *(0x00004550);
0x00004130 str r2, [r7, 0x38] | *((r7 + 0x38)) = r2;
0x00004132 add r3, pc | r3 += pc;
0x00004134 str.w r2, [r3, 0x1d8] | __asm ("str.w r2, [r3, 0x1d8]");
0x00004138 b.w 0x3836 | goto label_54;
| label_191:
0x00004144 eor r0, r3, 1 | r0 = r3 ^ 1;
| label_190:
0x00004148 bl 0x14c28 | fcn_00014c28 (r0);
0x0000414c ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x00004150 b 0x3cb8 | goto label_55;
| label_189:
0x00004152 ldr.w r2, [fp, 0x24] | r2 = *(arg_24h);
0x00004156 cmp r2, 0 |
| if (r2 == 0) {
0x00004158 beq.w 0x42b8 | goto label_198;
| }
0x0000415c ldr.w r4, [fp, 0xc] | r4 = *(arg_ch);
0x00004160 cmp r4, 0 |
| if (r4 == 0) {
0x00004162 beq.w 0x3cb8 | goto label_55;
| }
0x00004166 ldr r3, [pc, 0x3f0] |
0x00004168 ldr.w r8, [pc, 0x3f0] | r8 = *(0x0000455c);
0x0000416c ldr.w sb, [pc, 0x3f0] | sb = *(0x00004560);
0x00004170 add r3, pc | r3 = 0x86ce;
0x00004172 add r8, pc | r8 += pc;
0x00004174 str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
0x00004176 add sb, pc | sb += pc;
0x00004178 b 0x4188 |
| while (r0 == 0) {
0x0000417a mov r1, r5 | r1 = r5;
0x0000417c movs r2, 8 | r2 = 8;
0x0000417e mov r0, sb | r0 = sb;
0x00004180 bl 0xc264 | fcn_0000c264 ();
| label_56:
0x00004184 ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
| if (r4 == 0) {
0x00004186 cbz r4, 0x41c2 | goto label_199;
| }
0x00004188 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x0000418a ldr r5, [r3] | r5 = *(r3);
0x0000418c ldrb.w r3, [r4, 0x199] | r3 = *((r4 + 0x199));
0x00004190 lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 < r3) {
0x00004192 bmi 0x41b8 | goto label_200;
| }
0x00004194 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00004196 mov r0, r5 | r0 = r5;
0x00004198 mov r1, r2 | r1 = r2;
0x0000419a str r2, [r7, 0x40] | *((r7 + 0x40)) = r2;
0x0000419c bl 0x14f30 | fcn_00014f30 (r0, r1, r2, r3);
0x000041a0 ldr.w r3, [r4, 0x1b4] | r3 = *((r4 + 0x1b4));
0x000041a4 ldr r2, [r7, 0x40] | r2 = *((r7 + 0x40));
0x000041a6 cmp r0, 0 |
0x000041a8 beq 0x417a |
| }
0x000041aa str r3, [sp] | *(sp) = r3;
0x000041ac mov r1, r5 | r1 = r5;
0x000041ae movs r3, 8 | r3 = 8;
0x000041b0 mov r0, r8 | r0 = r8;
0x000041b2 bl 0xc264 | fcn_0000c264 ();
0x000041b6 b 0x4184 | goto label_56;
| label_200:
0x000041b8 ldr r0, [r7, 0x44] | r0 = *((r7 + 0x44));
0x000041ba mov r1, r5 | r1 = r5;
0x000041bc bl 0xc264 | fcn_0000c264 ();
0x000041c0 b 0x4184 | goto label_56;
| label_199:
0x000041c2 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x000041c6 b 0x3cb8 | goto label_55;
| label_176:
0x000041c8 movs r0, 1 | r0 = 1;
0x000041ca bl 0x14c28 | fcn_00014c28 (r0);
0x000041ce b.w 0x386e | goto label_57;
| label_75:
0x00004206 ldr r1, [pc, 0x368] |
0x00004208 mov r0, r6 | r0 = r6;
0x0000420a add r1, pc | r1 = 0x8780;
0x0000420c bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x00004210 cmp r0, 0 |
| if (r0 != 0) {
0x00004212 bne.w 0x44f8 | goto label_201;
| }
0x00004216 movs r3, 6 | r3 = 6;
0x00004218 subs r4, 1 | r4--;
0x0000421a adds r5, 4 | r5 += 4;
0x0000421c str.w r3, [sl, 0x164] | __asm ("str.w r3, [sl, 0x164]");
0x00004220 b.w 0x1a2e | goto label_0;
| label_193:
0x00004224 ldr r3, [pc, 0x34c] |
0x00004226 add r3, pc |
0x00004228 ldr r3, [r3] | r3 = *(0x879e);
0x0000422a cmp r3, 1 |
| if (r3 < 1) {
0x0000422c bls.w 0x3e98 | goto label_58;
| }
0x00004230 ldr r5, [pc, 0x344] |
0x00004232 movs r4, 1 | r4 = 1;
0x00004234 ldr.w r8, [pc, 0x344] | r8 = *(0x0000457c);
0x00004238 add r5, pc | r5 = 0x87b4;
0x0000423a add r8, pc | r8 += pc;
| do {
0x0000423c ldr r3, [r5] | r3 = *(r5);
0x0000423e movs r2, 0 | r2 = 0;
0x00004240 mov r1, fp | r1 = fp;
0x00004242 ldr.w r0, [r3, r4, lsl 2] | offset_7 = r4 << 2;
| r0 = *((r3 + offset_7));
0x00004246 ldr.w r3, [fp, 0x1d4] | r3 = *(arg_1d4h);
0x0000424a str r2, [r6] | *(r6) = r2;
0x0000424c str r2, [sp, 0xc] | *(arg_ch) = r2;
0x0000424e str r2, [sp] | *(sp) = r2;
0x00004250 movs r2, 1 | r2 = 1;
0x00004252 strd r2, r2, [sp, 4] | __asm ("strd r2, r2, [sp, 4]");
0x00004256 mov r2, r6 | r2 = r6;
0x00004258 bl 0x7ac8 | fcn_00007ac8 (r0, r1, r2, r3, r4, r5, r6);
0x0000425c lsls r1, r4, 2 | r1 = r4 << 2;
0x0000425e mov r2, r0 | r2 = r0;
| if (r0 != 0) {
0x00004260 cbz r0, 0x4264 |
0x00004262 ldr r2, [r0] | r2 = *(r0);
| }
0x00004264 ldr r0, [r5] | r0 = *(r5);
0x00004266 adds r4, 1 | r4++;
0x00004268 ldr r3, [r6] | r3 = *(r6);
0x0000426a ldr r1, [r0, r1] | r1 = *((r0 + r1));
0x0000426c mov r0, r8 | r0 = r8;
0x0000426e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00004270 str r2, [sp, 4] | *(arg_4h) = r2;
0x00004272 movs r2, 8 | r2 = 8;
0x00004274 str r2, [sp] | *(sp) = r2;
0x00004276 bl 0xc264 | fcn_0000c264 ();
0x0000427a ldr r3, [pc, 0x304] |
0x0000427c add r3, pc |
0x0000427e ldr r3, [r3] | r3 = *(0x8802);
0x00004280 cmp r3, r4 |
0x00004282 bhi 0x423c |
| } while (r3 > r4);
0x00004284 b 0x3e98 | goto label_58;
| label_192:
0x00004286 ldr r0, [r7, 0x44] | r0 = *((r7 + 0x44));
0x00004288 bl 0xc264 | fcn_0000c264 ();
0x0000428c b 0x3c86 | goto label_59;
| label_114:
0x000042a6 ldr r3, [pc, 0x2dc] |
0x000042a8 movs r2, 0x6e | r2 = 0x6e;
0x000042aa ldr r1, [pc, 0x2dc] |
0x000042ac ldr r0, [pc, 0x2dc] |
0x000042ae add r3, pc | r3 = 0x8838;
0x000042b0 add r1, pc | r1 = 0x883e;
0x000042b2 add r0, pc | r0 = 0x8842;
0x000042b4 bl 0x11f30 | fcn_00011f30 (r0);
| label_198:
0x000042b8 ldr r0, [pc, 0x2d4] |
0x000042ba add r0, pc | r0 = 0x884e;
0x000042bc bl 0xc264 | fcn_0000c264 ();
0x000042c0 ldr.w r3, [sl, 0x164] | r3 = *((sl + 0x164));
0x000042c4 b 0x3cb8 | goto label_55;
| label_181:
0x000042c6 add r3, r5 | r3 += r5;
0x000042c8 cmp r5, r3 |
| if (r5 >= r3) {
0x000042ca bhs 0x4340 | goto label_202;
| }
0x000042cc mov r0, r3 | r0 = r3;
0x000042ce b 0x42d4 |
| while (r1 != 0) {
0x000042d0 cmp r5, r0 |
| if (r5 == r0) {
0x000042d2 beq 0x4340 | goto label_202;
| }
0x000042d4 ldrb r2, [r0, -0x1] | r2 = *((r0 - 0x1));
0x000042d8 mov r8, r0 | r8 = r0;
0x000042da subs r0, 1 | r0--;
0x000042dc mov r3, r0 | r3 = r0;
0x000042de cmp r2, 0x20 |
0x000042e0 it ne |
| if (r2 != 0x20) {
0x000042e2 cmpne r2, 0x3a | __asm ("cmpne r2, 0x3a");
| }
0x000042e4 sub.w r2, r2, 9 | r2 -= 9;
0x000042e8 ite ne |
| if (r2 == 0x20) {
0x000042ea movne r1, 1 | r1 = 1;
| }
| if (r2 != 0x20) {
0x000042ec moveq r1, 0 | r1 = 0;
| }
0x000042ee cmp r2, 1 |
0x000042f0 ite ls |
| if (r2 > 1) {
0x000042f2 movls r1, 0 | r1 = 0;
| }
| if (r2 <= 1) {
0x000042f4 andhi r1, r1, 1 | r1 &= 1;
| }
0x000042f8 cmp r1, 0 |
0x000042fa bne 0x42d0 |
| }
0x000042fc cmp r5, r8 |
0x000042fe it lo |
| if (r5 < r8) {
0x00004300 strblo r1, [r8, -0x1] | *((r8 - 0x1)) = r1;
| goto label_203;
| }
| if (r5 <= r8) {
| label_203:
0x00004304 blo.w 0x39ec | goto label_60;
| }
| label_63:
0x00004308 cmp r8, r5 |
| if (r8 == r5) {
0x0000430a beq.w 0x3a14 | goto label_61;
| }
0x0000430e b.w 0x39ec | goto label_60;
| label_174:
0x00004312 ldr r3, [pc, 0x280] |
0x00004314 movw r2, 0x414 | r2 = 0x414;
0x00004318 ldr r1, [pc, 0x27c] |
0x0000431a ldr r0, [pc, 0x280] |
0x0000431c add r3, pc | r3 = 0x88b6;
0x0000431e add r1, pc | r1 = 0x88ba;
0x00004320 add r0, pc | r0 = 0x88c2;
0x00004322 bl 0x11f30 | fcn_00011f30 (r0);
| label_178:
0x00004326 ldrb r3, [r0, -0x1] | r3 = *((r0 - 0x1));
0x0000432a subs r2, r0, 1 | r2 = r0 - 1;
0x0000432c cmp r3, 0x20 |
0x0000432e it ne |
| if (r3 == 0x20) {
0x00004330 cmpne r3, 0x3a | __asm ("cmpne r3, 0x3a");
| goto label_204;
| }
| if (r3 == 0x20) {
| label_204:
0x00004332 beq.w 0x39e0 | goto label_62;
| }
0x00004336 subs r3, 9 | r3 -= 9;
0x00004338 cmp r3, 1 |
| if (r3 < 1) {
0x0000433a bls.w 0x39e0 | goto label_62;
| }
0x0000433e mov r3, r5 | r3 = r5;
| label_202:
0x00004340 mov r8, r3 | r8 = r3;
0x00004342 b 0x4308 | goto label_63;
| label_172:
0x00004344 str r2, [r7, 0x40] | *((r7 + 0x40)) = r2;
0x00004346 b.w 0x2048 | goto label_64;
| label_82:
0x0000435e ldr r0, [pc, 0x24c] |
0x00004360 add r0, pc | r0 = 0x8912;
0x00004362 bl 0xc2a4 | dl_fatal_printf ();
| label_168:
0x00004366 ldr r0, [pc, 0x248] |
0x00004368 add r0, pc | r0 = 0x891e;
0x0000436a bl 0xc2a4 | dl_fatal_printf ();
| label_138:
0x0000436e ldr r3, [pc, 0x244] |
0x00004370 movw r2, 0x70a | r2 = 0x70a;
0x00004374 ldr r1, [pc, 0x240] |
0x00004376 ldr r0, [pc, 0x244] |
0x00004378 add r3, pc | r3 = 0x8932;
0x0000437a add r1, pc | r1 = 0x8936;
0x0000437c add r0, pc | r0 = 0x893e;
0x0000437e bl 0x11f30 | fcn_00011f30 (r0);
| label_133:
0x00004382 ldr r0, [pc, 0x23c] |
0x00004384 add r0, pc | r0 = 0x894a;
0x00004386 bl 0xc2a4 | dl_fatal_printf ();
| label_128:
0x0000438a ldr r3, [pc, 0x238] |
0x0000438c movw r2, 0x6a6 | r2 = 0x6a6;
0x00004390 ldr r1, [pc, 0x234] |
0x00004392 ldr r0, [pc, 0x238] |
0x00004394 add r3, pc | r3 = 0x895e;
0x00004396 add r1, pc | r1 = 0x8962;
0x00004398 add r0, pc | r0 = 0x896a;
0x0000439a bl 0x11f30 | fcn_00011f30 (r0);
| label_129:
0x0000439e ldr r3, [pc, 0x230] |
0x000043a0 movw r2, 0x6a7 | r2 = 0x6a7;
0x000043a4 ldr r1, [pc, 0x22c] |
0x000043a6 ldr r0, [pc, 0x230] |
0x000043a8 add r3, pc | r3 = 0x897e;
0x000043aa add r1, pc | r1 = 0x8982;
0x000043ac add r0, pc | r0 = 0x898a;
0x000043ae bl 0x11f30 | fcn_00011f30 (r0);
| label_98:
0x000043b2 ldr r3, [pc, 0x228] |
0x000043b4 movs r2, 0x7e | r2 = 0x7e;
0x000043b6 ldr r1, [pc, 0x228] |
0x000043b8 ldr r0, [pc, 0x228] |
0x000043ba add r3, pc | r3 = 0x899c;
0x000043bc add r1, pc | r1 = 0x89a2;
0x000043be add r0, pc | r0 = 0x89a6;
0x000043c0 bl 0x11f30 | fcn_00011f30 (r0);
| label_99:
0x000043c4 ldr r3, [pc, 0x220] |
0x000043c6 movs r2, 0x82 | r2 = 0x82;
0x000043c8 ldr r1, [pc, 0x220] |
0x000043ca ldr r0, [pc, 0x224] |
0x000043cc add r3, pc | r3 = 0x89b8;
0x000043ce add r1, pc | r1 = 0x89be;
0x000043d0 add r0, pc | r0 = 0x89c6;
0x000043d2 bl 0x11f30 | fcn_00011f30 (r0);
| label_97:
0x000043d6 ldr r3, [pc, 0x21c] |
0x000043d8 movs r2, 0x78 | r2 = 0x78;
0x000043da ldr r1, [pc, 0x21c] |
0x000043dc ldr r0, [pc, 0x21c] |
0x000043de add r3, pc | r3 = 0x89d8;
0x000043e0 add r1, pc | r1 = 0x89de;
0x000043e2 add r0, pc | r0 = 0x89e2;
0x000043e4 bl 0x11f30 | fcn_00011f30 (r0);
| label_126:
0x000043e8 ldr r0, [pc, 0x214] |
0x000043ea add r0, pc | r0 = 0x89ee;
0x000043ec bl 0xc2a4 | dl_fatal_printf ();
| label_108:
0x000043f0 ldr r3, [pc, 0x210] |
0x000043f2 movs r2, 0x3d | r2 = 0x3d;
0x000043f4 ldr r1, [pc, 0x210] |
0x000043f6 ldr r0, [pc, 0x214] |
0x000043f8 add r3, pc | r3 = 0x8a00;
0x000043fa add r1, pc | r1 = 0x8a06;
0x000043fc add r0, pc | r0 = 0x8a0e;
0x000043fe bl 0x11f30 | fcn_00011f30 (r0);
| label_149:
0x00004402 ldr r3, [pc, 0x20c] |
0x00004404 movw r2, 0x7bb | r2 = 0x7bb;
0x00004408 ldr r1, [pc, 0x208] |
0x0000440a ldr r0, [pc, 0x20c] |
0x0000440c add r3, pc | r3 = 0x8a22;
0x0000440e add r1, pc | r1 = 0x8a26;
0x00004410 add r0, pc | r0 = 0x8a2e;
0x00004412 bl 0x11f30 | fcn_00011f30 (r0);
| label_118:
0x00004416 ldr r3, [pc, 0x204] |
0x00004418 movs r2, 0x61 | r2 = 0x61;
0x0000441a ldr r1, [pc, 0x204] |
0x0000441c ldr r0, [pc, 0x204] |
0x0000441e add r3, pc | r3 = 0x8a40;
0x00004420 add r1, pc | r1 = 0x8a46;
0x00004422 add r0, pc | r0 = 0x8a4a;
0x00004424 bl 0x11f30 | fcn_00011f30 (r0);
| label_90:
0x00004428 ldr r3, [pc, 0x1fc] |
0x0000442a movw r2, 0x64b | r2 = 0x64b;
0x0000442e ldr r1, [pc, 0x1fc] |
0x00004430 ldr r0, [pc, 0x1fc] |
0x00004432 add r3, pc | r3 = 0x8a5e;
0x00004434 add r1, pc | r1 = 0x8a66;
0x00004436 add r0, pc | r0 = 0x8a6a;
0x00004438 bl 0x11f30 | fcn_00011f30 (r0);
| label_119:
0x0000443c ldr r3, [pc, 0x1f4] |
0x0000443e movs r2, 0x62 | r2 = 0x62;
0x00004440 ldr r1, [pc, 0x1f4] |
0x00004442 ldr r0, [pc, 0x1f8] |
0x00004444 add r3, pc | r3 = 0x8a7c;
0x00004446 add r1, pc | r1 = 0x8a82;
0x00004448 add r0, pc | r0 = 0x8a8a;
0x0000444a bl 0x11f30 | fcn_00011f30 (r0);
| label_147:
0x0000444e ldr r3, [pc, 0x1f0] |
0x00004450 movw r2, 0x7b7 | r2 = 0x7b7;
0x00004454 ldr r1, [pc, 0x1ec] |
0x00004456 ldr r0, [pc, 0x1f0] |
0x00004458 add r3, pc | r3 = 0x8a9e;
0x0000445a add r1, pc | r1 = 0x8aa2;
0x0000445c add r0, pc | r0 = 0x8aaa;
0x0000445e bl 0x11f30 | fcn_00011f30 (r0);
0x00004462 ldr r3, [pc, 0x1e8] |
0x00004464 movw r2, 0x58f | r2 = 0x58f;
0x00004468 ldr r1, [pc, 0x1e4] |
0x0000446a ldr r0, [pc, 0x1e8] |
0x0000446c add r3, pc | r3 = 0x8abe;
0x0000446e add r1, pc | r1 = 0x8ac2;
0x00004470 add r0, pc | r0 = 0x8aca;
0x00004472 bl 0x11f30 | fcn_00011f30 (r0);
| label_89:
0x00004476 ldr r3, [pc, 0x1e0] |
0x00004478 movw r2, 0x646 | r2 = 0x646;
0x0000447c ldr r1, [pc, 0x1dc] |
0x0000447e ldr r0, [pc, 0x1e0] |
0x00004480 add r3, pc | r3 = 0x8ade;
0x00004482 add r1, pc | r1 = 0x8ae2;
0x00004484 add r0, pc | r0 = 0x8aea;
0x00004486 bl 0x11f30 | fcn_00011f30 (r0);
0x0000448a ldr r3, [pc, 0x1d8] |
0x0000448c movw r2, 0x597 | r2 = 0x597;
0x00004490 ldr r1, [pc, 0x1d4] |
0x00004492 ldr r0, [pc, 0x1d8] |
0x00004494 add r3, pc | r3 = 0x8afe;
0x00004496 add r1, pc | r1 = 0x8b02;
0x00004498 add r0, pc | r0 = 0x8b0a;
0x0000449a bl 0x11f30 | fcn_00011f30 (r0);
0x0000449e ldr r3, [pc, 0x1d0] |
0x000044a0 movw r2, 0x8c7 | r2 = 0x8c7;
0x000044a4 ldr r1, [pc, 0x1cc] |
0x000044a6 ldr r0, [pc, 0x1d0] |
0x000044a8 add r3, pc | r3 = 0x8b1e;
0x000044aa add r1, pc | r1 = 0x8b22;
0x000044ac add r0, pc | r0 = 0x8b2a;
0x000044ae bl 0x11f30 | fcn_00011f30 (r0);
| label_77:
0x000044b2 ldr r3, [pc, 0x1c8] |
0x000044b4 add r3, pc | r3 = 0x8b36;
0x000044b6 ldr r0, [r3] | r0 = *(0x8b36);
0x000044b8 bl 0x134a8 | fcn_000134a8 (r0);
| label_171:
0x000044bc ldr r3, [pc, 0x1c0] |
0x000044be movw r2, 0x6db | r2 = 0x6db;
0x000044c2 ldr r1, [pc, 0x1c0] |
0x000044c4 ldr r0, [pc, 0x1c0] |
0x000044c6 add r3, pc | r3 = 0x8b4a;
0x000044c8 add r1, pc | r1 = 0x8b52;
0x000044ca add r0, pc | r0 = 0x8b56;
0x000044cc bl 0x11f30 | fcn_00011f30 (r0);
0x000044d0 ldr r3, [pc, 0x1b8] |
0x000044d2 movw r2, 0x983 | r2 = 0x983;
0x000044d6 ldr r1, [pc, 0x1b8] |
0x000044d8 ldr r0, [pc, 0x1b8] |
0x000044da add r3, pc | r3 = 0x8b6a;
0x000044dc add r1, pc | r1 = 0x8b72;
0x000044de add r0, pc | r0 = 0x8b76;
0x000044e0 bl 0x11f30 | fcn_00011f30 (r0);
| label_165:
0x000044e4 ldr r3, [pc, 0x1b0] |
0x000044e6 mov.w r2, 0x3d0 | r2 = 0x3d0;
0x000044ea ldr r1, [pc, 0x1b0] |
0x000044ec ldr r0, [pc, 0x1b0] |
0x000044ee add r3, pc | r3 = 0x8b8a;
0x000044f0 add r1, pc | r1 = 0x8b92;
0x000044f2 add r0, pc | r0 = 0x8b96;
0x000044f4 bl 0x11f30 | fcn_00011f30 (r0);
| label_201:
0x000044f8 ldr r1, [pc, 0x1a8] |
0x000044fa mov sb, r6 | sb = r6;
0x000044fc mov r0, sb | r0 = sb;
0x000044fe ldr r6, [r7, 0x18] | r6 = *((r7 + 0x18));
0x00004500 add r1, pc | r1 = 0x8ba8;
0x00004502 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
| if (r0 == 0) {
0x00004506 cbz r0, 0x4524 | goto label_205;
| }
0x00004508 ldrb.w r3, [sb] | r3 = *(sb);
0x0000450c cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x0000450e bne.w 0x1e0e | goto label_65;
| }
0x00004512 ldrb.w r3, [sb, 1] | r3 = *((sb + 1));
0x00004516 cmp r3, 0x2d |
| if (r3 != 0x2d) {
0x00004518 bne.w 0x1e0e | goto label_65;
| }
0x0000451c ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x0000451e mov r1, sb | r1 = sb;
0x00004520 bl 0x12f50 | r0 = fcn_00012f50 (r0, r1);
| label_205:
0x00004524 bl 0x12f8c | fcn_00012f8c ();
0x00004528 cmp r4, r3 |
0x0000452a movs r1, r0 | r1 = r0;
0x0000452c strh r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x0000452e movs r2, r0 | r2 = r0;
0x00004530 ldr r0, [sp, 0x238] | r0 = *(arg_238h);
0x00004532 movs r2, r0 | r2 = r0;
0x00004534 cmp r2, r1 |
0x00004536 movs r1, r0 | r1 = r0;
0x00004538 ldr r0, [sp, 0x190] | r0 = *(arg_190h);
0x0000453a movs r2, r0 | r2 = r0;
0x0000453c subs r7, 0xe2 | r7 -= 0xe2;
0x0000453e movs r1, r0 | r1 = r0;
0x00004540 ldm r3, {r0, r1, r2, r3, r5, r6, r7} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
| r5 = *((r3 + 16));
| r6 = *((r3 + 20));
| r7 = *((r3 + 24));
0x00004542 invalid |
| do {
0x00009c2e ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00009c30 ldr r2, [r2, 4] | r2 = *((r2 + 4));
0x00009c32 add r3, r1 | r3 += r1;
0x00009c34 add r3, r2 | r3 += r2;
0x00009c36 str.w r3, [sl, sb] | __asm ("str.w r3, [sl, sb]");
0x00009c3a b 0x9b44 | void (*0x9b44)() ();
0x0000a56a str r1, [r7, 0x44] | *((r7 + 0x44)) = r1;
0x0000a56c bl 0x8dbc | fcn_00008dbc (r0);
0x0000a570 ldr r1, [r7, 0x44] | r1 = *((r7 + 0x44));
0x0000a572 ldr r2, [r7, 0x54] | r2 = *((r7 + 0x54));
0x0000a574 ldr.w r3, [r1, 0x244] | r3 = *((r1 + 0x244));
0x0000a578 b.w 0x9c2e |
| } while (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/ld-linux-armhf.so.3 @ 0x47f0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000047f0 () | void fcn_000047f0 (int16_t arg_7h, int16_t arg_1dch, int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| int16_t var_20h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_4h_2;
| int32_t var_8h_2;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000047f0 ldr.w ip, [pc, 0x404] | ip = *(0x00004bf8);
0x000047f4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000047f8 sub sp, 0x24 |
0x000047fa add r7, sp, 8 | r7 += var_8h;
0x000047fc add ip, pc |
0x000047fe mov r6, r1 | r6 = r1;
0x00004800 ldr.w r5, [ip, 0x1dc] | r5 = *((ip + 0x1dc));
0x00004804 ldrb.w r4, [r7, 0x44] | r4 = *((r7 + 0x44));
0x00004808 str r0, [r7, 0x10] | var_10h = r0;
0x0000480a cmp r5, 0 |
0x0000480c it ne |
| if (r5 != 0) {
0x0000480e cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x00004810 str r4, [r7, 8] | var_8h_2 = r4;
| if (r5 != 0) {
0x00004812 bne.w 0x4afa | goto label_14;
| }
| label_12:
0x00004816 ldr r0, [r7, 0x10] | r0 = var_10h;
0x00004818 mov.w r1, 0x80000 | r1 = 0x80000;
0x0000481c bl 0x1488c | r0 = fcn_0001488c (r0);
0x00004820 cmp.w r0, -1 |
0x00004824 mov sb, r0 | sb = r0;
| if (r0 == -1) {
0x00004826 beq.w 0x4b66 | goto label_15;
| }
0x0000482a ldr r3, [pc, 0x3d0] |
0x0000482c movs r4, 0 | r4 = 0;
0x0000482e mov r1, r4 | r1 = r4;
0x00004830 add r3, pc | r3 = 0x9432;
0x00004832 str r4, [r3] | *(r3) = r4;
0x00004834 mov r3, r6 | r3 = r6;
0x00004836 str r4, [r3], 4 | *(r3) = r4;
| r3 += 4;
0x0000483a str r3, [r7, 0x14] | var_14h = r3;
| do {
0x0000483c ldr r3, [r7, 0x14] | r3 = var_14h;
0x0000483e rsb.w r2, r1, 0x200 | r2 = 0x200 - r1;
0x00004842 mov r0, sb | r0 = sb;
0x00004844 add r1, r3 | r1 += r3;
0x00004846 bl 0x148ec | r0 = fcn_000148ec ();
0x0000484a cmp r0, 0 |
| if (r0 <= 0) {
0x0000484c ble.w 0x4af0 | goto label_16;
| }
0x00004850 ldr r3, [r6] | r3 = *(r6);
0x00004852 adds r1, r0, r3 | r1 = r0 + r3;
0x00004854 cmp r1, 0x33 |
0x00004856 str r1, [r6] | *(r6) = r1;
0x00004858 bls 0x483c |
| } while (r1 < 0x33);
0x0000485a mov r4, r1 | r4 = r1;
| label_11:
0x0000485c cmp r4, 0x33 |
| if (r4 <= 0x33) {
0x0000485e ble.w 0x4a82 | goto label_17;
| }
0x00004862 ldr r1, [pc, 0x39c] |
0x00004864 movs r2, 8 | r2 = 8;
0x00004866 ldr r0, [r7, 0x14] | r0 = var_14h;
0x00004868 add r1, pc | r1 = 0x946e;
0x0000486a bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x0000486e cmp r0, 0 |
| if (r0 != 0) {
0x00004870 bne.w 0x4ac0 | goto label_18;
| }
| label_8:
0x00004874 ldr r3, [r6, 0x28] | r3 = *((r6 + 0x28));
0x00004876 mov.w r2, 0x200 |
0x0000487a movt r2, 0x500 | r2 = 0x5000200;
0x0000487e and r3, r3, 0xff00ff00 | r3 &= 0xff00ff00;
0x00004882 bic r3, r3, 0xfd00 | r3 = BIT_MASK (r3, 0xfd00);
0x00004886 cmp r3, r2 |
| if (r3 == r2) {
0x00004888 beq.w 0x4a1c | goto label_9;
| }
0x0000488c ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0000488e cmp r3, 0 |
| if (r3 != 0) {
0x00004890 bne.w 0x4a10 | goto label_19;
| }
| label_2:
0x00004894 ldr r1, [pc, 0x36c] |
0x00004896 movs r2, 7 | r2 = 7;
0x00004898 add.w r0, r6, 0xd | r0 = r6 + 0xd;
0x0000489c add r1, pc | r1 = 0x94a4;
0x0000489e adds r1, 9 | r1 += 9;
0x000048a0 bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x000048a4 mov r5, r0 | r5 = r0;
0x000048a6 cmp r0, 0 |
| if (r0 != 0) {
0x000048a8 bne.w 0x4a1c | goto label_9;
| }
0x000048ac ldr r3, [r6, 0x18] | r3 = *((r6 + 0x18));
0x000048ae cmp r3, 1 |
| if (r3 != 1) {
0x000048b0 bne.w 0x4ae6 | goto label_20;
| }
0x000048b4 ldrh r3, [r6, 0x16] | r3 = *((r6 + 0x16));
0x000048b6 cmp r3, 0x28 |
| if (r3 != 0x28) {
0x000048b8 bne.w 0x4aec | goto label_21;
| }
0x000048bc ldrh r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x000048be subs r3, 2 | r3 -= 2;
0x000048c0 uxth r3, r3 | r3 = (int16_t) r3;
0x000048c2 cmp r3, 1 |
| if (r3 > 1) {
0x000048c4 bhi.w 0x4af4 | goto label_22;
| }
0x000048c8 ldrh r3, [r6, 0x2e] | r3 = *((r6 + 0x2e));
0x000048ca cmp r3, 0x20 |
| if (r3 != 0x20) {
0x000048cc bne.w 0x49f4 | goto label_23;
| }
0x000048d0 ldrh r2, [r6, 0x30] | r2 = *((r6 + 0x30));
0x000048d2 ldr r3, [r6, 0x20] | r3 = *((r6 + 0x20));
0x000048d4 lsl.w sl, r2, 5 | sl = r2 << 5;
0x000048d8 add.w r1, sl, r3 | r1 = sl + r3;
0x000048dc cmp r1, r4 |
| if (r1 > r4) {
0x000048de bhi.w 0x4a56 | goto label_24;
| }
0x000048e2 ldr r1, [r7, 0x14] | r1 = var_14h;
0x000048e4 add.w r8, r1, r3 | r8 = r1 + r3;
| label_4:
0x000048e8 add sl, r8 | sl += r8;
0x000048ea cmp r8, sl |
| if (r8 >= sl) {
0x000048ec bhs.w 0x4b6c | goto label_25;
| }
0x000048f0 ldr r3, [pc, 0x314] |
0x000048f2 mov r4, r8 | r4 = r8;
0x000048f4 ldr.w sl, [pc, 0x314] | sl = *(0x00004c0c);
0x000048f8 add r3, pc | r3 = 0x9504;
0x000048fa add sl, pc | sl += pc;
0x000048fc str r3, [r7, 4] | var_4h_2 = r3;
0x000048fe movs r3, 0 | r3 = 0;
0x00004900 add.w sl, sl, 0x10 | sl += 0x10;
0x00004904 str r3, [r7, 0xc] | var_ch = r3;
0x00004906 b 0x4912 |
| while (r3 != 4) {
| label_0:
0x00004908 add.w r3, r8, r2, lsl 5 | r3 = r8 + (r2 << 5);
0x0000490c adds r4, 0x20 | r4 += 0x20;
0x0000490e cmp r4, r3 |
| if (r4 >= r3) {
0x00004910 bhs 0x49d0 | goto label_3;
| }
0x00004912 ldr r3, [r4] | r3 = *(r4);
0x00004914 cmp r3, 4 |
0x00004916 bne 0x4908 |
| }
0x00004918 ldr.w fp, [r4, 0x10] | fp = *((r4 + 0x10));
0x0000491c cmp.w fp, 0x1f |
| if (fp < 0x1f) {
0x00004920 bls 0x4908 | goto label_0;
| }
0x00004922 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00004924 subs r3, 4 | r3 -= 4;
0x00004926 bics r3, r3, 4 | __asm ("bics r3, r3, 4");
| if (r3 != 4) {
0x0000492a bne 0x4908 | goto label_0;
| }
0x0000492c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000492e ldr r2, [r6] | r2 = *(r6);
0x00004930 add.w r1, fp, r3 | r1 = fp + r3;
0x00004934 cmp r1, r2 |
| if (r1 < r2) {
0x00004936 bls.w 0x4a7c | goto label_26;
| }
0x0000493a cmp.w fp, 0x10000 |
| if (fp <= 0x10000) {
0x0000493e blo 0x49e4 | goto label_27;
| }
0x00004940 ldr r3, [r7, 4] | r3 = var_4h_2;
0x00004942 mov r1, fp | r1 = fp;
0x00004944 ldr r0, [r7, 0xc] | r0 = var_ch;
0x00004946 ldr r3, [r3] | r3 = *(r3);
0x00004948 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x0000494a mov r5, r0 | r5 = r0;
0x0000494c cmp r0, 0 |
| if (r0 == 0) {
0x0000494e beq.w 0x4ba0 | goto label_28;
| }
0x00004952 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00004954 str r0, [r7, 0xc] | var_ch = r0;
| label_1:
0x00004956 str r3, [sp] | *(sp) = r3;
0x00004958 movs r3, 0 | r3 = 0;
0x0000495a mov r2, fp | r2 = fp;
0x0000495c mov r1, r5 | r1 = r5;
0x0000495e mov r0, sb | r0 = sb;
0x00004960 str r3, [sp, 4] | var_4h = r3;
0x00004962 bl 0x14914 | r0 = fcn_00014914 (r0);
0x00004966 cmp fp, r0 |
| if (fp == r0) {
0x00004968 beq 0x4994 | goto label_5;
| }
0x0000496a b 0x4b96 | goto label_29;
| do {
0x0000496c ldr r2, [r4, 0x1c] | r2 = *((r4 + 0x1c));
0x0000496e sub.w r0, fp, 0x20 | r0 = fp - 0x20;
0x00004972 ldr r1, [r5] | r1 = *(r5);
0x00004974 add.w r3, r2, 0xb | r3 = r2 + 0xb;
0x00004978 add.w ip, r2, -1 |
0x0000497c add r3, r1 | r3 += r1;
0x0000497e rsbs r1, r2, 0 | r1 = r2 - ;
0x00004980 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00004982 ands r3, r1 | r3 &= r1;
0x00004984 add ip, r2 |
0x00004986 add r3, ip | r3 += ip;
0x00004988 ands r3, r1 | r3 &= r1;
0x0000498a cmp r3, r0 |
| if (r3 > r0) {
0x0000498c bhi 0x4a52 | goto label_30;
| }
0x0000498e sub.w fp, fp, r3 |
0x00004992 add r5, r3 | r5 += r3;
| label_5:
0x00004994 movs r2, 0x10 | r2 = 0x10;
0x00004996 mov r1, sl | r1 = sl;
0x00004998 mov r0, r5 | r0 = r5;
0x0000499a bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x0000499e cmp r0, 0 |
0x000049a0 bne 0x496c |
| } while (r0 != 0);
0x000049a2 cmp.w fp, 0 |
| if (fp == 0) {
0x000049a6 beq 0x4a52 | goto label_30;
| }
0x000049a8 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x000049aa ldrd r1, r2, [r5, 0x14] | __asm ("ldrd r1, r2, [r5, 0x14]");
0x000049ae ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000049b0 cmp r0, 0 |
| if (r0 != 0) {
0x000049b2 bne 0x4a3e | goto label_10;
| }
0x000049b4 ldr r0, [pc, 0x258] |
0x000049b6 uxtb r1, r1 | r1 = (int8_t) r1;
0x000049b8 uxtb r2, r2 | r2 = (int8_t) r2;
0x000049ba uxtb r3, r3 | r3 = (int8_t) r3;
0x000049bc add.w r2, r2, r1, lsl 8 | r2 += (r1 << 8);
0x000049c0 add r0, pc | r0 = 0x95d4;
0x000049c2 ldr r1, [r0, 4] | r1 = *(0x95d8);
0x000049c4 add.w r3, r3, r2, lsl 8 | r3 += (r2 << 8);
0x000049c8 cmp r1, 0 |
0x000049ca it ne |
| if (r1 != 0) {
0x000049cc cmpne r3, r1 | __asm ("cmpne r3, r1");
| }
| if (r1 > 0) {
0x000049ce bhi 0x4a3e | goto label_10;
| }
| label_3:
0x000049d0 ldr r3, [pc, 0x240] |
0x000049d2 ldr r0, [r7, 0xc] | r0 = var_ch;
0x000049d4 add r3, pc |
0x000049d6 ldr r3, [r3] | r3 = *(0x95ec);
0x000049d8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_13:
0x000049da mov r0, sb | r0 = sb;
0x000049dc adds r7, 0x1c | r7 += 0x1c;
0x000049de mov sp, r7 |
0x000049e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x000049e4 add.w r2, fp, 7 | r2 += arg_7h;
0x000049e8 bic r2, r2, 7 | r2 = BIT_MASK (r2, 7);
0x000049ec sub.w sp, sp, r2 |
0x000049f0 add r5, sp, 8 | r5 += var_8h;
0x000049f2 b 0x4956 | goto label_1;
| label_23:
0x000049f4 ldr r4, [pc, 0x220] |
0x000049f6 add r4, pc | r4 = 0x9612;
| label_6:
0x000049f8 ldr r3, [r7, 8] | r3 = var_8h_2;
0x000049fa cmp r3, 0 |
| if (r3 != 0) {
0x000049fc bne 0x4a92 | goto label_31;
| }
| label_7:
0x000049fe mov r0, sb | r0 = sb;
0x00004a00 bl 0x14720 | fcn_00014720 ();
0x00004a04 ldr r1, [r7, 0x10] | r1 = var_10h;
0x00004a06 mov r3, r4 | r3 = r4;
0x00004a08 movs r2, 0 | r2 = 0;
0x00004a0a mov r0, r5 | r0 = r5;
0x00004a0c blx 0x9f4 | fcn_000009f4 ();
| label_19:
0x00004a10 ldrb r2, [r6, 0xb] | r2 = *((r6 + 0xb));
0x00004a12 cmp r3, 2 |
0x00004a14 it ls |
| if (r3 > 2) {
0x00004a16 cmpls r2, 3 | __asm ("cmpls r2, 3");
| goto label_32;
| }
| if (r3 == 2) {
| label_32:
0x00004a18 beq.w 0x4894 | goto label_2;
| }
| label_9:
0x00004a1c ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00004a1e movw r3, 0x457f |
0x00004a22 movt r3, 0x464c | r3 = 0x464c457f;
0x00004a26 cmp r2, r3 |
| if (r2 != r3) {
0x00004a28 bne.w 0x4b80 | goto label_33;
| }
0x00004a2c ldrb r3, [r6, 8] | r3 = *((r6 + 8));
0x00004a2e cmp r3, 1 |
| if (r3 == 1) {
0x00004a30 beq.w 0x4b72 | goto label_34;
| }
0x00004a34 movs r2, 0 | r2 = 0;
0x00004a36 movs r3, 1 | r3 = 1;
0x00004a38 str r2, [r7, 0xc] | var_ch = r2;
0x00004a3a ldr r2, [r7, 0x40] | r2 = *((r7 + 0x40));
0x00004a3c strb r3, [r2] | *(r2) = r3;
| label_10:
0x00004a3e mov r0, sb | r0 = sb;
0x00004a40 mov.w sb, -1 | sb = -1;
0x00004a44 bl 0x14720 | fcn_00014720 ();
0x00004a48 ldr r3, [pc, 0x1d0] |
0x00004a4a movs r2, 2 | r2 = 2;
0x00004a4c add r3, pc | r3 = 0x966c;
0x00004a4e str r2, [r3] | *(r3) = r2;
0x00004a50 b 0x49d0 | goto label_3;
| label_30:
0x00004a52 ldrh r2, [r6, 0x30] | r2 = *((r6 + 0x30));
0x00004a54 b 0x4908 | goto label_0;
| label_24:
0x00004a56 sub.w sp, sp, sl |
0x00004a5a mov r2, sl | r2 = sl;
0x00004a5c add.w r8, sp, 8 | r8 += var_8h;
0x00004a60 strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x00004a64 mov r1, r8 | r1 = r8;
0x00004a66 mov r0, sb | r0 = sb;
0x00004a68 bl 0x14914 | r0 = fcn_00014914 (r0);
0x00004a6c cmp r0, sl |
0x00004a6e itt eq |
| if (r0 == sl) {
0x00004a70 ldrheq r2, [r6, 0x30] | __asm ("ldrheq r2, [r6, 0x30]");
| }
| if (r0 == sl) {
0x00004a72 lsleq sl, r2, 5 | sl = r2 << 5;
| goto label_35;
| }
| if (r0 == sl) {
| label_35:
0x00004a76 beq.w 0x48e8 | goto label_4;
| }
0x00004a7a b 0x4ba0 | goto label_28;
| label_26:
0x00004a7c ldr r2, [r7, 0x14] | r2 = var_14h;
0x00004a7e adds r5, r2, r3 | r5 = r2 + r3;
0x00004a80 b 0x4994 | goto label_5;
| label_17:
0x00004a82 ldr r3, [pc, 0x19c] |
0x00004a84 add r3, pc | r3 = 0x96aa;
0x00004a86 ldr r5, [r3] | r5 = *(0x96aa);
0x00004a88 cmp r5, 0 |
| if (r5 != 0) {
0x00004a8a bne 0x4b60 | goto label_36;
| }
0x00004a8c ldr r4, [pc, 0x194] |
0x00004a8e add r4, pc | r4 = 0x96b6;
0x00004a90 b 0x49f8 | goto label_6;
| label_31:
0x00004a92 ldr r6, [r7, 0x10] | r6 = var_10h;
0x00004a94 mov r0, r6 | r0 = r6;
0x00004a96 bl 0x15540 | r0 = fcn_00015540 (r0, r1);
0x00004a9a add.w r3, r0, 8 | r3 = r0 + 8;
0x00004a9e adds r2, r0, 1 | r2 = r0 + 1;
0x00004aa0 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00004aa4 mov r1, r6 | r1 = r6;
0x00004aa6 sub.w sp, sp, r3 |
0x00004aaa add r0, sp, 8 | r0 += var_8h;
0x00004aac blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004ab0 ldr r3, [pc, 0x174] |
0x00004ab2 mov r2, r0 | r2 = r0;
0x00004ab4 mov r0, r6 | r0 = r6;
0x00004ab6 str r2, [r7, 0x10] | var_10h = r2;
0x00004ab8 add r3, pc |
0x00004aba ldr r3, [r3] | r3 = *(0x96e4);
0x00004abc blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00004abe b 0x49fe | goto label_7;
| label_18:
0x00004ac0 ldr r1, [pc, 0x168] |
0x00004ac2 movs r2, 8 | r2 = 8;
0x00004ac4 ldr r0, [r7, 0x14] | r0 = var_14h;
0x00004ac6 add r1, pc | r1 = 0x96f6;
0x00004ac8 bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x00004acc cmp r0, 0 |
| if (r0 == 0) {
0x00004ace beq.w 0x4874 | goto label_8;
| }
0x00004ad0 add r6, sp, 0x344 | r6 = sp + 0x344;
0x00004ad2 ldr r1, [pc, 0x15c] |
0x00004ad4 movs r2, 8 | r2 = 8;
0x00004ad6 ldr r0, [r7, 0x14] | r0 = var_14h;
0x00004ad8 add r1, pc | r1 = 0x970e;
0x00004ada bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x00004ade cmp r0, 0 |
| if (r0 == 0) {
0x00004ae0 beq.w 0x4874 | goto label_8;
| }
0x00004ae4 b 0x4a1c | goto label_9;
| label_20:
0x00004ae6 ldr r4, [pc, 0x14c] |
0x00004ae8 add r4, pc | r4 = 0x9722;
0x00004aea b 0x49f8 | goto label_6;
| label_21:
0x00004aec str r0, [r7, 0xc] | var_ch = r0;
0x00004aee b 0x4a3e | goto label_10;
| label_16:
0x00004af0 ldr r4, [r6] | r4 = *(r6);
0x00004af2 b 0x485c | goto label_11;
| label_22:
0x00004af4 ldr r4, [pc, 0x140] |
0x00004af6 add r4, pc | r4 = 0x9732;
0x00004af8 b 0x49f8 | goto label_6;
| label_14:
0x00004afa mov r4, r2 | r4 = r2;
0x00004afc mov r2, r3 | r2 = r3;
0x00004afe ldrb.w r3, [r4, 0x199] | r3 = *((r4 + 0x199));
0x00004b02 ands r2, r3, 0x3940000 | r2 = r3 & 0x3940000;
0x00004b06 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00004b08 add r6, sp, 0x218 | r6 = sp + 0x218;
0x00004b0a ldr.w sb, [pc, 0x130] | sb = *(0x00004c3c);
0x00004b0e add.w sl, r4, 0x260 | sl = r4 + 0x260;
0x00004b12 ldr.w r8, [ip, 0x1d8] | r8 = *((ip + 0x1d8));
0x00004b16 ldr r3, [pc, 0x128] |
0x00004b18 ldr.w fp, [pc, 0x128] | fp = *(0x00004c44);
0x00004b1c add sb, pc | sb += pc;
0x00004b1e mov r6, r8 | r6 = r8;
0x00004b20 add.w sb, sb, 0x7f8 | sb += 0x7f8;
0x00004b24 add r3, pc |
0x00004b26 mov r8, r2 | r8 = r2;
0x00004b28 add fp, pc |
0x00004b2a add.w r3, r3, 0x598 | r3 = 0x9d02;
0x00004b2e str r3, [r7, 0x14] | var_14h = r3;
0x00004b30 str r1, [r7, 0xc] | var_ch = r1;
| do {
0x00004b32 ldr r3, [r6, 4] | r3 = *((r6 + 4));
| if (r3 != 0) {
0x00004b34 cbz r3, 0x4b46 |
0x00004b36 ldr r1, [r7, 0x14] | r1 = var_14h;
0x00004b38 mov r2, r8 | r2 = r8;
0x00004b3a cmp r4, r1 |
0x00004b3c ite ne |
| if (r4 == r1) {
0x00004b3e movne r1, sl | r1 = sl;
| }
| if (r4 != r1) {
0x00004b40 moveq r1, sb | r1 = sb;
| }
0x00004b42 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r1, r2);
| if (r0 == 0) {
0x00004b44 cbz r0, 0x4b66 | goto label_15;
| }
| }
0x00004b46 ldr.w r3, [fp, 0x1dc] | r3 = *(arg_1dch);
0x00004b4a adds r5, 1 | r5++;
0x00004b4c ldr r6, [r6, 0x20] | r6 = *((r6 + 0x20));
0x00004b4e add.w sb, sb, 8 | sb += 8;
0x00004b50 lsrs r0, r1, 4 | r0 = r1 >> 4;
0x00004b52 add.w sl, sl, 8 | sl += 8;
0x00004b56 cmp r5, r3 |
0x00004b58 blo 0x4b32 |
| } while (r5 <= r3);
0x00004b5a ldr r6, [r7, 0xc] | r6 = var_ch;
0x00004b5c str r0, [r7, 0x10] | var_10h = r0;
0x00004b5e b 0x4816 | goto label_12;
| label_36:
0x00004b60 ldr r4, [pc, 0xe4] |
0x00004b62 add r4, pc | r4 = 0x97ae;
0x00004b64 b 0x49f8 | goto label_6;
| label_15:
0x00004b66 mov.w sb, -1 | sb = -1;
0x00004b6a b 0x49da | goto label_13;
| label_25:
0x00004b6c movs r3, 0 | r3 = 0;
0x00004b6e str r3, [r7, 0xc] | var_ch = r3;
0x00004b70 b 0x49d0 | goto label_3;
| label_34:
0x00004b72 ldrb r3, [r6, 9] | r3 = *((r6 + 9));
0x00004b74 cmp r3, 1 |
| if (r3 != 1) {
0x00004b76 beq 0x4b88 |
0x00004b78 ldr r4, [pc, 0xd0] |
0x00004b7a movs r5, 0 | r5 = 0;
0x00004b7c add r4, pc | r4 = 0x97cc;
0x00004b7e b 0x49f8 | goto label_6;
| label_33:
0x00004b80 ldr r4, [pc, 0xcc] |
0x00004b82 movs r5, 0 | r5 = 0;
0x00004b84 add r4, pc | r4 = 0x97d8;
0x00004b86 b 0x49f8 | goto label_6;
| }
0x00004b88 ldrb r3, [r6, 0xa] | r3 = *((r6 + 0xa));
0x00004b8a cmp r3, 1 |
| if (r3 != 1) {
0x00004b8c beq 0x4bac |
0x00004b8e ldr r4, [pc, 0xc4] |
0x00004b90 movs r5, 0 | r5 = 0;
0x00004b92 add r4, pc | r4 = 0x97ec;
0x00004b94 b 0x49f8 | goto label_6;
| label_29:
0x00004b96 ldr r3, [pc, 0xc0] |
0x00004b98 ldr r0, [r7, 0xc] | r0 = *((r7 + 0xc));
0x00004b9a add r3, pc |
0x00004b9c ldr r3, [r3] | r3 = *(0x97f8);
0x00004b9e blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_28:
0x00004ba0 ldr r3, [pc, 0xb8] |
0x00004ba2 ldr r4, [pc, 0xbc] |
0x00004ba4 add r3, pc | r3 = 0x9804;
0x00004ba6 ldr r5, [r3] | r5 = *(0x9804);
0x00004ba8 add r4, pc | r4 = 0x980e;
0x00004baa b 0x49f8 | goto label_6;
| }
0x00004bac ldrb r2, [r6, 0xb] | r2 = *((r6 + 0xb));
0x00004bae subs r3, r2, 3 | r3 = r2 - 3;
0x00004bb0 it ne |
| if (r3 == r2) {
0x00004bb2 movne r3, 1 | r3 = 1;
| }
0x00004bb4 tst.w r2, 0xbf |
| if ((r2 & 0xbf) != 0) {
0x00004bb8 beq 0x4bc4 |
| if (r3 == 0) {
0x00004bba cbz r3, 0x4bc4 | goto label_37;
| }
0x00004bbc ldr r4, [pc, 0xa4] |
0x00004bbe movs r5, 0 | r5 = 0;
0x00004bc0 add r4, pc | r4 = 0x9828;
0x00004bc2 b 0x49f8 | goto label_6;
| }
| label_37:
0x00004bc4 ldrb r2, [r6, 0xc] | r2 = *((r6 + 0xc));
| if (r2 != 0) {
0x00004bc6 cbz r2, 0x4bd6 |
0x00004bc8 cmp r2, 2 |
| if (r2 <= 2) {
0x00004bca bhi 0x4bce |
| if (r3 == 0) {
0x00004bcc cbz r3, 0x4bd6 | goto label_38;
| }
| }
0x00004bce ldr r4, [pc, 0x98] |
0x00004bd0 movs r5, 0 | r5 = 0;
0x00004bd2 add r4, pc | r4 = 0x9840;
0x00004bd4 b 0x49f8 | goto label_6;
| }
| label_38:
0x00004bd6 ldr r1, [pc, 0x94] |
0x00004bd8 movs r2, 7 | r2 = 7;
0x00004bda add.w r0, r6, 0xd | r0 = r6 + 0xd;
0x00004bde add r1, pc | r1 = 0x9850;
0x00004be0 adds r1, 9 | r1 += 9;
0x00004be2 bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x00004be6 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00004be8 cbnz r0, 0x4bf0 |
0x00004bea ldr r4, [pc, 0x84] |
0x00004bec add r4, pc | r4 = 0x9862;
0x00004bee b 0x49f8 | goto label_6;
| }
0x00004bf0 ldr r4, [pc, 0x80] |
0x00004bf2 movs r5, 0 | r5 = 0;
0x00004bf4 add r4, pc | r4 = 0x986c;
0x00004bf6 b 0x49f8 | goto label_6;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0x4c78 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00004c78 () | void fcn_00004c78 (int16_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| uint32_t var_bp_4h;
| int16_t var_0h;
| int16_t var_4h;
| int8_t var_1h_2;
| int16_t var_0h_3;
| int16_t var_8h;
| int16_t var_1h;
| int32_t var_8h_2;
| int32_t var_ch;
| int32_t var_10h;
| int32_t var_14h;
| int32_t var_18h;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_28h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_34h;
| int32_t var_38h;
| int32_t var_3ch;
| int16_t var_40h;
| int32_t var_50h;
| int16_t var_30h_2;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00004c78 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00004c7c sub sp, 0xbc |
0x00004c7e add r7, sp, 8 | r7 += var_8h;
0x00004c80 str r3, [r7, 4] | var_bp_4h = r3;
0x00004c82 ldr r3, [r3] | r3 = *(r3);
0x00004c84 str r0, [r7, 0x30] | var_30h = r0;
0x00004c86 str r2, [r7, 0x28] | var_28h = r2;
0x00004c88 str r3, [r7, 0x24] | var_24h = r3;
0x00004c8a cmp r3, 0 |
| if (r3 == 0) {
0x00004c8c beq.w 0x4dcc | goto label_14;
| }
0x00004c90 ldr r3, [pc, 0x3a0] |
0x00004c92 ldr r2, [pc, 0x3a4] |
0x00004c94 str r1, [r7, 0x14] | var_14h = r1;
0x00004c96 add r3, pc |
0x00004c98 add r2, pc |
0x00004c9a ldr r3, [r3] |
0x00004c9c ldr r2, [r2] | r2 = *(0x9cd6);
0x00004c9e add r3, r2 | r3 += r2;
0x00004ca0 add r3, r1 | r3 += r1;
0x00004ca2 adds r3, 7 | r3 += 7;
0x00004ca4 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00004ca8 sub.w sp, sp, r3 |
0x00004cac ldr r3, [r7, 0x24] | r3 = var_24h;
0x00004cae add.w fp, sp, 8 |
0x00004cb2 ldr r3, [r3] | r3 = *(0x9cce);
0x00004cb4 str r3, [r7, 0x34] | var_34h = r3;
0x00004cb6 ldr r3, [pc, 0x384] |
0x00004cb8 add r3, pc | r3 = 0x9cfa;
0x00004cba str r3, [r7, 8] | var_8h_2 = r3;
0x00004cbc ldr r3, [pc, 0x380] |
0x00004cbe add r3, pc | r3 = 0x9d02;
0x00004cc0 str r3, [r7, 0x1c] | var_1ch = r3;
0x00004cc2 movs r3, 0 | r3 = 0;
0x00004cc4 str r3, [r7, 0x20] | var_20h = r3;
0x00004cc6 str r3, [r7, 0xc] | var_ch = r3;
| label_0:
0x00004cc8 ldr r3, [pc, 0x378] |
0x00004cca add r3, pc | r3 = 0x9d12;
0x00004ccc ldr r6, [r3] | r6 = *(0x9d12);
0x00004cce ands r6, r6, 1 | r6 &= 1;
| if (r6 != r6) {
0x00004cd2 bne.w 0x4eb8 | goto label_16;
| }
| label_7:
0x00004cd6 ldr r4, [r7, 0x34] | r4 = var_34h;
0x00004cd8 mov r0, fp | r0 = fp;
0x00004cda movs r6, 0 | r6 = 0;
0x00004cdc ldr.w sl, [pc, 0x368] | sl = *(0x00005048);
0x00004ce0 ldr.w sb, [pc, 0x368] | sb = *(0x0000504c);
0x00004ce4 mov r5, r6 | r5 = r6;
0x00004ce6 ldrd r1, r2, [r4, 0xc] | __asm ("ldrd r1, r2, [r4, 0xc]");
0x00004cea blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004cee ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00004cf0 add sl, pc | sl += pc;
0x00004cf2 ldr.w r8, [r7, 0x14] | r8 = var_14h;
0x00004cf6 add sb, pc | sb += pc;
0x00004cf8 str r6, [r7, 0x3c] | var_3ch = r6;
0x00004cfa adds r3, r0, r3 | r3 = r0 + r3;
0x00004cfc str r3, [r7, 0x38] | var_38h = r3;
0x00004cfe ldr r3, [pc, 0x350] |
0x00004d00 add r3, pc | r3 = 0x9d56;
0x00004d02 str r3, [r7, 0x2c] | var_2ch = r3;
0x00004d04 ldr r3, [pc, 0x34c] |
0x00004d06 add r3, pc |
0x00004d08 str r3, [r7, 0x18] | var_18h = r3;
0x00004d0a ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x00004d0c ldr r3, [r3, 4] | r3 = *(0x9d62);
0x00004d0e cmp r3, r5 |
| if (r3 < r5) {
0x00004d10 bls 0x4d9e | goto label_2;
| }
| do {
0x00004d12 ldr r3, [r7, 0x34] | r3 = var_34h;
0x00004d14 add.w r4, r3, r5, lsl 2 | r4 = r3 + (r5 << 2);
0x00004d18 adds r5, 1 | r5++;
0x00004d1a adds r4, 0x10 | r4 += 0x10;
| label_3:
0x00004d1c ldr r3, [r4, 4]! | r3 = *((r4 += 4));
0x00004d20 cmp r3, 1 |
| if (r3 == 1) {
0x00004d22 beq 0x4dea | goto label_4;
| }
0x00004d24 ldr.w r2, [sl, 8] | r2 = *((sl + 8));
0x00004d28 lsls r3, r5, 3 | r3 = r5 << 3;
0x00004d2a ldr r0, [r7, 0x38] | r0 = var_38h;
0x00004d2c subs r3, 8 | r3 -= 8;
0x00004d2e adds r6, r2, r3 | r6 = r2 + r3;
0x00004d30 ldr r1, [r2, r3] | r1 = *((r2 + r3));
0x00004d32 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00004d34 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004d38 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x00004d3a mov r2, r8 | r2 = r8;
0x00004d3c ldr r1, [r7, 0x30] | r1 = var_30h;
0x00004d3e add r0, r3 | r0 += r3;
0x00004d40 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004d44 ldr.w r3, [sb] | r3 = *(sb);
0x00004d48 add.w r6, r0, r8 | r6 = r0 + r8;
0x00004d4c sub.w r6, r6, fp | r6 -= fp;
0x00004d50 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00004d52 bmi.w 0x4e84 | goto label_17;
| }
| label_5:
0x00004d56 ldr.w r3, [r7, 0xe8] | r3 = *((r7 + 0xe8));
0x00004d5a mov r0, fp | r0 = fp;
0x00004d5c str r3, [sp] | *(sp) = r3;
0x00004d5e movs r3, 0 | r3 = 0;
0x00004d60 str r3, [sp, 4] | var_4h = r3;
0x00004d62 ldr.w r1, [r7, 0xdc] | r1 = *((r7 + 0xdc));
0x00004d66 ldrd r2, r3, [r7, 0xe0] | __asm ("ldrd r2, r3, [r7, 0xe0]");
0x00004d6a bl 0x47f0 | fcn_000047f0 (r0, r1, r2, r3, r4, r5);
0x00004d6e ldr r2, [r4] | r2 = *(r4);
0x00004d70 mov r3, r0 | r3 = r0;
0x00004d72 cmp r2, 0 |
| if (r2 != 0) {
0x00004d74 bne 0x4dda | goto label_18;
| }
0x00004d76 adds r0, r3, 1 | r0 += var_1h;
| if (r0 == var_1h) {
0x00004d78 beq 0x4dfa | goto label_19;
| }
0x00004d7a movs r2, 2 | r2 = 2;
0x00004d7c str r2, [r4] | *(r4) = r2;
0x00004d7e movs r2, 1 | r2 = 1;
0x00004d80 str r2, [r7, 0x3c] | var_3ch = r2;
| label_1:
0x00004d82 ldr r2, [r7, 0x28] | r2 = var_28h;
0x00004d84 lsls r2, r2, 5 | r2 <<= 5;
| if (r2 >= r2) {
0x00004d86 bpl 0x4e52 | goto label_20;
| }
0x00004d88 ldr r2, [r7, 0x18] | r2 = var_18h;
0x00004d8a ldr r2, [r2] | r2 = *(r2);
0x00004d8c cmp r2, 0 |
| if (r2 != 0) {
0x00004d8e bne 0x4e90 | goto label_21;
| }
| label_6:
0x00004d90 adds r1, r3, 1 | r1 = r3 + 1;
0x00004d92 mov r4, r6 | r4 = r6;
| if (r1 != r3) {
0x00004d94 bne 0x4e54 | goto label_22;
| }
0x00004d96 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x00004d98 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00004d9a cmp r3, r5 |
0x00004d9c bhi 0x4d12 |
| } while (r3 > r5);
| label_2:
0x00004d9e ldr r6, [r7, 0x3c] | r6 = var_3ch;
| if (r6 != 0) {
0x00004da0 cbz r6, 0x4db0 |
0x00004da2 ldr r3, [pc, 0x2b4] |
0x00004da4 add r3, pc |
0x00004da6 ldr r3, [r3] | r3 = *(0x9e02);
0x00004da8 cmp r3, 0xd |
0x00004daa it ne |
| if (r3 != 0xd) {
0x00004dac cmpne r3, 2 | __asm ("cmpne r3, 2");
| }
| if (r3 != 0xd) {
0x00004dae bne 0x4dcc | goto label_14;
| }
| }
0x00004db0 ldr r3, [r7, 0x20] | r3 = var_20h;
0x00004db2 orrs r3, r6 | r3 |= r6;
0x00004db4 str r3, [r7, 0x20] | var_20h = r3;
0x00004db6 ldr r3, [r7, 0x24] | r3 = var_24h;
0x00004db8 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x00004dbc str r2, [r7, 0x34] | var_34h = r2;
0x00004dbe str r3, [r7, 0x24] | var_24h = r3;
0x00004dc0 cmp r2, 0 |
| if (r2 != 0) {
0x00004dc2 bne 0x4cc8 | goto label_0;
| }
0x00004dc4 ldr r3, [r7, 0x20] | r3 = var_20h;
0x00004dc6 cmp r3, 0 |
| if (r3 == 0) {
0x00004dc8 beq.w 0x4ff2 | goto label_23;
| }
| label_14:
0x00004dcc mov.w r3, -1 | r3 = -1;
| label_15:
0x00004dd0 mov r0, r3 | r0 = r3;
0x00004dd2 adds r7, 0xb4 | r7 += 0xb4;
0x00004dd4 mov sp, r7 |
0x00004dd6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x00004dda ldr r1, [r7, 0x3c] | r1 = var_3ch;
0x00004ddc cmp r2, 1 |
0x00004dde it ne |
| if (r2 == 1) {
0x00004de0 orrne r1, r1, 1 | r1 |= 1;
| }
0x00004de4 adds r2, r0, 1 | r2 += var_1h;
0x00004de6 str r1, [r7, 0x3c] | var_3ch = r1;
| if (r2 != var_1h) {
0x00004de8 bne 0x4d82 | goto label_1;
| }
| label_4:
0x00004dea ldr r3, [pc, 0x270] |
0x00004dec adds r2, r5, 1 | r2 = r5 + 1;
0x00004dee add r3, pc |
0x00004df0 ldr r3, [r3, 4] | r3 = *(0x9e54);
0x00004df2 cmp r3, r5 |
| if (r3 < r5) {
0x00004df4 bls 0x4d9e | goto label_2;
| }
0x00004df6 mov r5, r2 | r5 = r2;
0x00004df8 b 0x4d1c | goto label_3;
| label_19:
0x00004dfa ldr.w r3, [r7, 0xe0] | r3 = *((r7 + 0xe0));
| if (r3 == 0) {
0x00004dfe cbz r3, 0x4e1c | goto label_24;
| }
0x00004e00 ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00004e02 movs r2, 0x54 | r2 = 0x54;
0x00004e04 mul r3, r2, r3 | r3 = r2 * r3;
0x00004e08 ldr r2, [pc, 0x254] |
0x00004e0a add r2, pc | r2 = 0x9e6e;
0x00004e0c ldr r3, [r2, r3] | r3 = *(0x9e6e);
0x00004e0e ldrb.w r3, [r3, 0x199] | r3 = *((r3 + 0x199));
0x00004e12 lsls r1, r3, 0x1c | r1 = r3 << 0x1c;
0x00004e14 itt mi |
| if (r1 >= r3) {
0x00004e16 movmi r3, 1 | r3 = 1;
| }
| if (r1 < r3) {
0x00004e18 strmi r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
| goto label_25;
| }
| if (r1 < r3) {
| label_25:
0x00004e1a bmi 0x4dea | goto label_4;
| }
| label_24:
0x00004e1c sub.w r6, r6, r8 | r6 -= r8;
0x00004e20 movs r3, 0 | r3 = 0;
0x00004e22 add r6, fp | r6 += fp;
0x00004e24 add.w r1, r7, 0x40 | r1 += var_40h;
0x00004e28 strb r3, [r6, -0x1] | *((r6 - 0x1)) = r3;
0x00004e2c mov r0, fp | r0 = fp;
0x00004e2e bl 0x14390 | fcn_00014390 (r0, r1);
0x00004e32 movs r3, 1 | r3 = 1;
| if (r0 == 0) {
0x00004e34 cbnz r0, 0x4e4e |
0x00004e36 ldr r3, [r7, 0x50] | r3 = var_50h;
0x00004e38 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00004e3c cmp.w r3, 0x4000 |
0x00004e40 ldr r3, [r7, 0x3c] | r3 = var_3ch;
0x00004e42 it eq |
| if (r3 != 0x4000) {
0x00004e44 moveq r3, 1 | r3 = 1;
| }
0x00004e46 str r3, [r7, 0x3c] | var_3ch = r3;
0x00004e48 ite eq |
| if (r3 != 0x4000) {
0x00004e4a moveq r3, 2 | r3 = 2;
| }
| if (r3 != 0x4000) {
0x00004e4c movne r3, 1 | r3 = 1;
| goto label_26;
| }
| }
| label_26:
0x00004e4e str r3, [r4] | *(r4) = r3;
0x00004e50 b 0x4dea | goto label_4;
| label_20:
0x00004e52 mov r4, r6 | r4 = r6;
| label_22:
0x00004e54 ldr r2, [pc, 0x20c] |
0x00004e56 mov r0, r4 | r0 = r4;
0x00004e58 str r3, [r7, 0x3c] | var_3ch = r3;
0x00004e5a add r2, pc |
0x00004e5c ldr r2, [r2] | r2 = *(0x9ec2);
0x00004e5e blx r2 | uint32_t (*r2)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00004e60 ldr.w r3, [r7, 0xd8] | r3 = *((r7 + 0xd8));
0x00004e64 str r0, [r3] | *(r3) = r0;
0x00004e66 ldr r3, [r7, 0x3c] | r3 = var_3ch;
0x00004e68 cmp r0, 0 |
| if (r0 == 0) {
0x00004e6a beq.w 0x5022 | goto label_27;
| }
0x00004e6e mov r2, r4 | r2 = r4;
0x00004e70 mov r1, fp | r1 = fp;
0x00004e72 str r3, [r7, 0x3c] | var_3ch = r3;
0x00004e74 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004e78 ldr r3, [r7, 0x3c] | r3 = var_3ch;
0x00004e7a adds r7, 0xb4 | r7 += 0xb4;
0x00004e7c mov r0, r3 | r0 = r3;
0x00004e7e mov sp, r7 |
0x00004e80 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_17:
0x00004e84 ldr r0, [pc, 0x1e0] |
0x00004e86 mov r1, fp | r1 = fp;
0x00004e88 add r0, pc | r0 = 0x9ef4;
0x00004e8a bl 0xc1f0 | fcn_0000c1f0 ();
0x00004e8e b 0x4d56 | goto label_5;
| label_21:
0x00004e90 mov r0, r3 | r0 = r3;
0x00004e92 add.w r1, r7, 0x40 | r1 += var_40h;
0x00004e96 str r3, [r7, 0x10] | var_10h = r3;
0x00004e98 bl 0x143c8 | fcn_000143c8 (r0, r1);
0x00004e9c ldr r3, [r7, 0x10] | r3 = var_10h;
| if (r0 != 0) {
0x00004e9e cbnz r0, 0x4ea8 | goto label_28;
| }
0x00004ea0 ldr r2, [r7, 0x50] | r2 = var_50h;
0x00004ea2 lsls r0, r2, 0x14 | r0 = r2 << 0x14;
| if (r0 < r2) {
0x00004ea4 bmi.w 0x4d90 | goto label_6;
| }
| label_28:
0x00004ea8 mov r0, r3 | r0 = r3;
0x00004eaa bl 0x14720 | fcn_00014720 ();
0x00004eae ldr r3, [pc, 0x1bc] |
0x00004eb0 movs r2, 2 | r2 = 2;
0x00004eb2 add r3, pc | r3 = 0x9f24;
0x00004eb4 str r2, [r3] | *(r3) = r2;
0x00004eb6 b 0x4dea | goto label_4;
| label_16:
0x00004eb8 ldr r1, [r7, 0x34] | r1 = var_34h;
0x00004eba ldr r2, [r7, 0xc] | r2 = var_ch;
0x00004ebc ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00004ebe cmp r3, r2 |
0x00004ec0 str r3, [r7, 0x38] | var_38h = r3;
| if (r3 == r2) {
0x00004ec2 beq.w 0x4cd6 | goto label_7;
| }
0x00004ec6 ldr r3, [pc, 0x1a8] |
0x00004ec8 ldr r2, [pc, 0x1a8] |
0x00004eca ldr r0, [pc, 0x1ac] |
0x00004ecc add r3, pc |
0x00004ece str.w sp, [r7, 0x10] | __asm ("str.w sp, [var_10h]");
0x00004ed2 add r2, pc |
0x00004ed4 ldr r3, [r3] | r3 = *(0x9f42);
0x00004ed6 ldr r2, [r2] | r2 = *(0x9f4a);
0x00004ed8 add r0, pc | r0 = 0x9f56;
0x00004eda add r3, r2 | r3 += r2;
0x00004edc adds r3, 7 | r3 += 7;
0x00004ede bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x00004ee2 sub.w sp, sp, r3 |
0x00004ee6 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00004ee8 add.w r8, sp, 8 | r8 += var_8h;
0x00004eec str r3, [r7, 0x18] | var_18h = r3;
0x00004eee bl 0xc1f0 | fcn_0000c1f0 ();
0x00004ef2 ldr r3, [r7, 0x24] | r3 = var_24h;
0x00004ef4 ldr r4, [r3] | r4 = *(0x9f42);
0x00004ef6 cmp r4, 0 |
| if (r4 == 0) {
0x00004ef8 beq 0x4fa4 | goto label_29;
| }
0x00004efa ldr r3, [pc, 0x180] |
0x00004efc ldr.w sl, [r7, 0x24] | sl = var_24h;
0x00004f00 str.w fp, [r7, 0xc] | __asm ("str.w fp, [var_ch]");
0x00004f04 add r3, pc | r3 = 0x9f86;
0x00004f06 mov fp, sl |
0x00004f08 str r3, [r7, 0x2c] | var_2ch = r3;
0x00004f0a ldr.w sl, [r7, 8] | sl = var_8h_2;
0x00004f0e ldr r3, [pc, 0x170] |
0x00004f10 add r3, pc | r3 = 0x9f96;
0x00004f12 str r3, [r7, 0x3c] | var_3ch = r3;
| label_10:
0x00004f14 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00004f16 ldr r3, [r7, 0x38] | r3 = var_38h;
0x00004f18 cmp r3, r2 |
| if (r3 != r2) {
0x00004f1a bne 0x4fa0 | goto label_30;
| }
0x00004f1c ldrd r1, r2, [r4, 0xc] | __asm ("ldrd r1, r2, [r4, 0xc]");
0x00004f20 mov r0, r8 | r0 = r8;
0x00004f22 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004f26 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x00004f28 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x00004f2a add.w sb, r0, r2 | sb = r0 + r2;
0x00004f2e ldr r2, [r3, 4] | r2 = *((r3 + 4));
| if (r2 == 0) {
0x00004f30 cbz r2, 0x4f98 | goto label_31;
| }
0x00004f32 movs r4, 0 | r4 = 0;
0x00004f34 b 0x4f60 | goto label_32;
| label_8:
0x00004f36 cmp r2, r5 |
| if (r2 == r5) {
0x00004f38 beq 0x4fd0 | goto label_33;
| }
| label_11:
0x00004f3a strb ip, [r2, -0x1] | *((r2 - 0x1)) = ip;
| label_9:
0x00004f3e ldr r3, [r7, 0x1c] | r3 = var_1ch;
0x00004f40 cmp r6, 0 |
0x00004f42 ldr r2, [r7, 0x3c] | r2 = var_3ch;
0x00004f44 mov r1, r8 | r1 = r8;
0x00004f46 mov.w r6, 0 | r6 = 0;
0x00004f4a ite ne |
| if (r6 == 0) {
0x00004f4c movne r0, r3 | r0 = r3;
| }
| if (r6 != 0) {
0x00004f4e moveq r0, r2 | r0 = r2;
| }
0x00004f50 bl 0xc218 | fcn_0000c218 ();
| do {
0x00004f54 ldr r2, [pc, 0x12c] |
0x00004f56 adds r4, 1 | r4++;
0x00004f58 add r2, pc |
0x00004f5a ldr r2, [r2, 4] | r2 = *(0x9fe4);
0x00004f5c cmp r4, r2 |
| if (r4 >= r2) {
0x00004f5e bhs 0x4f98 | goto label_31;
| }
| label_32:
0x00004f60 ldr.w r2, [fp] | r2 = *(fp);
0x00004f64 mov r0, sb | r0 = sb;
0x00004f66 add.w r2, r2, r4, lsl 2 | r2 += (r4 << 2);
0x00004f6a ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x00004f6c cmp r2, 1 |
0x00004f6e beq 0x4f54 |
| } while (r2 == 1);
0x00004f70 ldr.w r5, [sl, 8] | r5 = *((sl + 8));
0x00004f74 ldr.w r1, [r5, r4, lsl 3] | offset_0 = r4 << 3;
| r1 = *((r5 + offset_0));
0x00004f78 add.w r5, r5, r4, lsl 3 | r5 += (r4 << 3);
0x00004f7c ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00004f7e blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00004f82 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00004f84 mov.w ip, 0 |
0x00004f88 add.w r5, r8, 1 | r5 += var_1h;
0x00004f8c adds r2, r0, r1 | r2 = r0 + r1;
0x00004f8e cmp r8, r2 |
| if (r8 != r2) {
0x00004f90 bne 0x4f36 | goto label_8;
| }
0x00004f92 movs r2, 0 | r2 = 0;
0x00004f94 strb r2, [r0, r1] | *((r0 + r1)) = r2;
0x00004f96 b 0x4f3e | goto label_9;
| label_31:
0x00004f98 ldr r4, [fp, 4]! | r4 = var_bp_4h;
0x00004f9c cmp r4, 0 |
| if (r4 != 0) {
0x00004f9e bne 0x4f14 | goto label_10;
| }
| label_30:
0x00004fa0 ldr.w fp, [r7, 0xc] | fp = var_ch;
| label_29:
0x00004fa4 ldr r3, [r7, 0x18] | r3 = var_18h;
| if (r3 == 0) {
0x00004fa6 cbz r3, 0x4fde | goto label_34;
| }
0x00004fa8 ldr r3, [r7, 0x18] | r3 = var_18h;
0x00004faa ldrb r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x00004fac cbnz r3, 0x4fba |
0x00004fae ldr r3, [pc, 0xd8] |
0x00004fb0 add r3, pc |
0x00004fb2 ldr r3, [r3] |
0x00004fb4 ldr r3, [r3] | r3 = *(0xa03e);
0x00004fb6 str r3, [r7, 0x18] | var_18h = r3;
| if (r3 == 0) {
0x00004fb8 cbz r3, 0x4fea | goto label_35;
| }
| }
| label_13:
0x00004fba ldr r0, [pc, 0xd0] |
0x00004fbc ldr r2, [r7, 0x18] | r2 = var_18h;
0x00004fbe ldr r1, [r7, 0x38] | r1 = var_38h;
0x00004fc0 add r0, pc | r0 = 0xa052;
0x00004fc2 bl 0xc218 | fcn_0000c218 ();
| label_12:
0x00004fc6 ldr r3, [r7, 0x38] | r3 = var_38h;
0x00004fc8 str r3, [r7, 0xc] | var_ch = r3;
0x00004fca ldr.w sp, [r7, 0x10] | sp = var_10h;
0x00004fce b 0x4cd6 | goto label_7;
| label_33:
0x00004fd0 ldrb.w r5, [r8] | r5 = *(r8);
0x00004fd4 cmp r5, 0x2f |
| if (r5 != 0x2f) {
0x00004fd6 bne 0x4f3a | goto label_11;
| }
0x00004fd8 movs r2, 0 | r2 = 0;
0x00004fda strb r2, [r0, r1] | *((r0 + r1)) = r2;
0x00004fdc b 0x4f3e | goto label_9;
| label_34:
0x00004fde ldr r0, [pc, 0xb0] |
0x00004fe0 ldr r1, [r7, 0x38] | r1 = var_38h;
0x00004fe2 add r0, pc | r0 = 0xa078;
0x00004fe4 bl 0xc218 | fcn_0000c218 ();
0x00004fe8 b 0x4fc6 | goto label_12;
| label_35:
0x00004fea ldr r3, [pc, 0xa8] |
0x00004fec add r3, pc | r3 = 0xa086;
0x00004fee str r3, [r7, 0x18] | var_18h = r3;
0x00004ff0 b 0x4fba | goto label_13;
| label_23:
0x00004ff2 ldr r2, [r7, 4] | r2 = var_bp_4h;
0x00004ff4 ldr r3, [r2, 4] | r3 = *((r2 + 4));
| if (r3 != 0) {
0x00004ff6 cbz r3, 0x5002 |
0x00004ff8 ldr r3, [pc, 0x9c] |
0x00004ffa ldr r0, [r2] | r0 = *(r2);
0x00004ffc add r3, pc |
0x00004ffe ldr r3, [r3] | r3 = *(0xa098);
0x00005000 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
0x00005002 ldr r3, [pc, 0x98] |
0x00005004 ldr r1, [r7, 4] | r1 = var_bp_4h;
0x00005006 add r3, pc | r3 = 0xa0a8;
0x00005008 add.w r2, r3, 0xc | r2 = r3 + 0xc;
0x0000500c adds r3, 0x14 | r3 += 0x14;
0x0000500e cmp r1, r2 |
0x00005010 it ne |
| if (r1 == r2) {
0x00005012 cmpne r1, r3 | __asm ("cmpne r1, r3");
| goto label_36;
| }
| if (r1 == r2) {
| label_36:
0x00005014 beq.w 0x4dcc | goto label_14;
| }
0x00005018 mov.w r2, -1 | r2 = -1;
0x0000501c mov r3, r2 | r3 = r2;
0x0000501e str r2, [r1] | *(r1) = r2;
0x00005020 b 0x4dd0 | goto label_15;
| label_27:
0x00005022 mov r0, r3 | r0 = r3;
0x00005024 mov.w r3, -1 | r3 = -1;
0x00005028 str r3, [r7, 0x3c] | var_3ch = r3;
0x0000502a bl 0x14720 | fcn_00014720 ();
0x0000502e ldr r3, [r7, 0x3c] | r3 = var_3ch;
0x00005030 b 0x4dd0 | goto label_15;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0x53fc */
| #include <stdint.h>
|
; (fcn) fcn.000053fc () | void fcn_000053fc (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_48h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000053fc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005400 sub sp, 0x24 |
0x00005402 str r3, [sp, 0x14] | var_14h = r3;
0x00005404 mov r7, r2 | r7 = r2;
0x00005406 movs r4, 0 | r4 = 0;
0x00005408 add.w r8, sp, 0x1c | r8 += var_1ch;
0x0000540c ldr r3, [pc, 0x19c] |
0x0000540e ldr.w fp, [sp, 0x4c] | fp = var_4ch;
0x00005412 str r1, [sp, 8] | var_8h = r1;
0x00005414 add r3, pc | r3 = 0xa9c4;
0x00005416 str r0, [sp, 0x1c] | var_1ch = r0;
0x00005418 str r3, [sp, 4] | var_4h = r3;
0x0000541a ldr r3, [pc, 0x194] |
0x0000541c add r3, pc | r3 = 0xa9d2;
0x0000541e str r3, [sp, 0x10] | var_10h = r3;
0x00005420 ldr r3, [pc, 0x190] |
0x00005422 add r3, pc | r3 = 0xa9da;
0x00005424 str r3, [sp, 0x18] | var_18h = r3;
| do {
| label_2:
0x00005426 mov r1, r7 | r1 = r7;
0x00005428 mov r0, r8 | r0 = r8;
0x0000542a bl 0x122a0 | r0 = fcn_000122a0 (r0, r1);
0x0000542e mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x00005430 cbz r0, 0x5468 | goto label_6;
| }
| label_0:
0x00005432 ldrb.w r6, [sb] | r6 = *(sb);
| if (r6 == 0) {
0x00005436 cbz r6, 0x5474 | goto label_7;
| }
0x00005438 mov r1, sb | r1 = sb;
0x0000543a mov r0, fp | r0 = fp;
0x0000543c bl 0x5348 | r0 = fcn_00005348 (r0, r1);
0x00005440 mov sb, r0 | sb = r0;
0x00005442 cmp r0, 0 |
0x00005444 beq 0x5426 |
| } while (r0 == 0);
0x00005446 bl 0x15540 | r0 = fcn_00015540 (r0, r1);
0x0000544a mov r6, r0 | r6 = r0;
0x0000544c cmp r0, 0 |
| if (r0 != 0) {
0x0000544e bne 0x54c2 | goto label_8;
| }
0x00005450 ldr r3, [pc, 0x164] |
0x00005452 mov r0, sb | r0 = sb;
0x00005454 add r3, pc |
0x00005456 ldr r3, [r3] | r3 = *(0xaa10);
0x00005458 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000545a mov r1, r7 | r1 = r7;
0x0000545c mov r0, r8 | r0 = r8;
0x0000545e bl 0x122a0 | r0 = fcn_000122a0 (r0, r1);
0x00005462 mov sb, r0 | sb = r0;
0x00005464 cmp r0, 0 |
| if (r0 != 0) {
0x00005466 bne 0x5432 | goto label_0;
| }
| label_6:
0x00005468 ldr r3, [sp, 8] | r3 = var_8h;
0x0000546a str.w r0, [r3, r4, lsl 2] | __asm ("str.w r0, [r3, r4, lsl 2]");
0x0000546e add sp, 0x24 |
0x00005470 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00005474 mov sl, r6 | sl = r6;
| label_3:
0x00005476 ldr r3, [sp, 4] | r3 = var_4h;
0x00005478 ldr.w r5, [r3, 0x590] | r5 = *((r3 + 0x590));
| if (r5 != 0) {
0x0000547c cbnz r5, 0x5486 | goto label_4;
| }
0x0000547e b 0x54f8 | goto label_9;
| do {
| label_1:
0x00005480 ldr r5, [r5] | r5 = *(r5);
0x00005482 cmp r5, 0 |
| if (r5 == 0) {
0x00005484 beq 0x54f8 | goto label_9;
| }
| label_4:
0x00005486 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00005488 cmp r3, r6 |
0x0000548a bne 0x5480 |
| } while (r3 != r6);
0x0000548c ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x0000548e mov r2, r6 | r2 = r6;
0x00005490 mov r0, sb | r0 = sb;
0x00005492 bl 0x157dc | r0 = fcn_000157dc (r0, r1, r2);
0x00005496 cmp r0, 0 |
| if (r0 != 0) {
0x00005498 bne 0x5480 | goto label_1;
| }
0x0000549a ldr r3, [sp, 8] | r3 = var_8h;
0x0000549c subs r3, 4 | r3 -= 4;
| if (r4 == 0) {
0x0000549e cbz r4, 0x54ae | goto label_5;
| }
| do {
0x000054a0 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x000054a4 cmp r2, r5 |
| if (r2 == r5) {
0x000054a6 beq 0x54b6 | goto label_10;
| }
0x000054a8 adds r0, 1 | r0++;
0x000054aa cmp r0, r4 |
0x000054ac bne 0x54a0 |
| } while (r0 != r4);
| label_5:
0x000054ae ldr r3, [sp, 8] | r3 = var_8h;
0x000054b0 str.w r5, [r3, r4, lsl 2] | __asm ("str.w r5, [r3, r4, lsl 2]");
0x000054b4 adds r4, 1 | r4++;
| label_10:
0x000054b6 ldr r3, [pc, 0x104] |
0x000054b8 mov r0, sl | r0 = sl;
0x000054ba add r3, pc |
0x000054bc ldr r3, [r3] | r3 = *(0xaa7c);
0x000054be blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000054c0 b 0x5426 | goto label_2;
| label_8:
0x000054c2 add.w r3, sb, r0 | r3 = sb + r0;
0x000054c6 b 0x54d4 |
| while (r6 != 1) {
0x000054c8 ldrb r2, [r3, -0x1]! | r2 = *((r3 -= 0x1));
0x000054cc subs r1, r6, 1 | r1 = r6 - 1;
0x000054ce cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x000054d0 bne 0x54e4 | goto label_11;
| }
0x000054d2 mov r6, r1 | r6 = r1;
0x000054d4 cmp r6, 1 |
0x000054d6 bne 0x54c8 |
| }
0x000054d8 ldrb.w r3, [sb] | r3 = *(sb);
0x000054dc cmp r3, 0x2f |
0x000054de it eq |
| if (r3 == 0x2f) {
0x000054e0 moveq sl, sb | sl = sb;
| goto label_12;
| }
| if (r3 == 0x2f) {
| label_12:
0x000054e2 beq 0x5476 | goto label_3;
| }
| label_11:
0x000054e4 movs r3, 0x2f | r3 = 0x2f;
0x000054e6 mov sl, sb | sl = sb;
0x000054e8 strb.w r3, [sb, r6] | *((sb + r6)) = r3;
0x000054ec adds r6, 1 | r6++;
0x000054ee ldr r3, [sp, 4] | r3 = var_4h;
0x000054f0 ldr.w r5, [r3, 0x590] | r5 = *((r3 + 0x590));
0x000054f4 cmp r5, 0 |
| if (r5 != 0) {
0x000054f6 bne 0x5486 | goto label_4;
| }
| label_9:
0x000054f8 ldr r3, [sp, 0x48] | r3 = var_48h;
| if (r3 != 0) {
0x000054fa cbz r3, 0x5504 |
0x000054fc ldr r0, [sp, 0x48] | r0 = var_48h;
0x000054fe bl 0x15540 | r0 = fcn_00015540 (r0, r1);
0x00005502 adds r3, r0, 1 | r3 = r0 + 1;
| }
0x00005504 str r3, [sp, 0xc] | var_ch = r3;
0x00005506 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00005508 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000550a add.w r3, r6, r3, lsl 2 | r3 = r6 + (r3 << 2);
0x0000550e add.w r0, r3, 0x15 | r0 = r3 + 0x15;
0x00005512 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00005514 add r0, r3 | r0 += r3;
0x00005516 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00005518 ldr r3, [r3] | r3 = *(r3);
0x0000551a blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000551c mov r5, r0 | r5 = r0;
0x0000551e cmp r0, 0 |
| if (r0 == 0) {
0x00005520 beq 0x559c | goto label_13;
| }
0x00005522 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00005524 mov r2, r6 | r2 = r6;
0x00005526 mov r1, sb | r1 = sb;
0x00005528 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000552a adds r0, 5 | r0 += 5;
0x0000552c add.w r0, r5, r0, lsl 2 | r0 = r5 + (r0 << 2);
0x00005530 str r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
0x00005532 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00005536 ldr r2, [pc, 0x88] |
0x00005538 movs r1, 0 | r1 = 0;
0x0000553a strb r1, [r0, r6] | *((r0 + r6)) = r1;
0x0000553c str r6, [r5, 0x10] | *((r5 + 0x10)) = r6;
0x0000553e add r2, pc | r2 = 0xab04;
0x00005540 ldrb.w r0, [sb] | r0 = *(sb);
0x00005544 ldr r1, [r2] | r1 = *(0xab04);
0x00005546 cmp r6, r1 |
0x00005548 it hi |
| if (r6 <= r1) {
0x0000554a strhi r6, [r2] | *(r2) = r6;
| }
0x0000554c subs r0, 0x2f | r0 -= 0x2f;
0x0000554e ldr r2, [pc, 0x74] |
0x00005550 it ne |
| if (r0 == 0x2f) {
0x00005552 movne r0, 1 | r0 = 1;
| }
0x00005554 lsls r0, r0, 1 | r0 <<= 1;
0x00005556 add r2, pc | r2 = 0xab20;
0x00005558 ldr r3, [r2, 4] | r3 = *(0xab24);
| if (r3 == 0) {
0x0000555a cbz r3, 0x556c | goto label_14;
| }
0x0000555c add.w r1, r5, 0x10 | r1 = r5 + 0x10;
0x00005560 movs r2, 0 | r2 = 0;
| do {
0x00005562 adds r2, 1 | r2++;
0x00005564 str r0, [r1, 4]! | *((r1 += 4)) = r0;
0x00005568 cmp r2, r3 |
0x0000556a bne 0x5562 |
| } while (r2 != r3);
| label_14:
0x0000556c ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000556e str r2, [r5, 4] | *((r5 + 4)) = r2;
0x00005570 ldr r2, [sp, 0x48] | r2 = var_48h;
| if (r2 == 0) {
0x00005572 cbz r2, 0x5598 | goto label_15;
| }
0x00005574 add.w r0, r6, 0x15 | r0 = r6 + 0x15;
0x00005578 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0000557a add.w r0, r0, r3, lsl 2 | r0 += (r3 << 2);
0x0000557e ldr r1, [sp, 0x48] | r1 = var_48h;
0x00005580 add r0, r5 | r0 += r5;
0x00005582 blx 0x15f40 | fcn_00015f40 (r0, r1);
| do {
0x00005586 ldr r2, [pc, 0x40] |
0x00005588 str r0, [r5, 8] | *((r5 + 8)) = r0;
0x0000558a add r2, pc | r2 = 0xab58;
0x0000558c ldr.w r1, [r2, 0x590] | r1 = *(0xb0e8);
0x00005590 str r1, [r5] | *(r5) = r1;
0x00005592 str.w r5, [r2, 0x590] | __asm ("str.w r5, [r2, 0x590]");
0x00005596 b 0x54ae | goto label_5;
| label_15:
0x00005598 ldr r0, [sp, 0x48] | r0 = var_48h;
0x0000559a b 0x5586 |
| } while (1);
| label_13:
0x0000559c ldr r3, [pc, 0x2c] |
0x0000559e mov r2, r0 | r2 = r0;
0x000055a0 mov r1, r0 | r1 = r0;
0x000055a2 movs r0, 0xc | r0 = 0xc;
0x000055a4 add r3, pc | r3 = 0xab74;
0x000055a6 blx 0x9f4 | fcn_000009f4 ();
0x000055aa nop |
0x000055ac ldrb r0, [r7, 0xf] | r0 = *((r7 + 0xf));
0x000055ae movs r2, r0 | r2 = r0;
0x000055b0 strb r0, [r2] | *(r2) = r0;
0x000055b2 movs r2, r0 | r2 = r0;
0x000055b4 ldrb r6, [r6, 0xa] | r6 = *((r6 + 0xa));
0x000055b6 movs r2, r0 | r2 = r0;
0x000055b8 ldrb r4, [r1, 0xa] | r4 = *((r1 + 0xa));
0x000055ba movs r2, r0 | r2 = r0;
0x000055bc ldrb r6, [r4, 8] | r6 = *((r4 + 8));
0x000055be movs r2, r0 | r2 = r0;
0x000055c0 strh r6, [r1, 0x1e] | *((r1 + 0x1e)) = r6;
0x000055c2 movs r2, r0 | r2 = r0;
0x000055c4 ldr r6, [r2, 0x6c] | r6 = *((r2 + 0x6c));
0x000055c6 movs r2, r0 | r2 = r0;
0x000055c8 ldrb r2, [r0, 0xa] | r2 = *((r0 + 0xa));
0x000055ca movs r2, r0 | r2 = r0;
0x000055cc adds r3, 0xa8 | r3 += 0xa8;
0x000055ce movs r1, r0 | r1 = 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/ld-linux-armhf.so.3 @ 0x59cc */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000059cc () | void fcn_000059cc (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_bp_4h;
| int16_t var_bp_10h;
| int16_t var_18h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_3h;
| int16_t var_28h;
| int32_t var_8h_2;
| int32_t var_14h;
| int32_t var_18h_2;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_24h;
| int32_t var_2ch;
| int32_t var_30h;
| int32_t var_38h;
| int32_t var_40h;
| int32_t var_44h;
| int32_t var_48h;
| int32_t var_4ch;
| int32_t var_50h;
| int32_t var_54h;
| int16_t var_58h;
| int32_t var_5ch;
| int32_t var_60h;
| int32_t var_64h;
| int32_t var_0h_3;
| int16_t var_0h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000059cc svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000059d0 sub sp, 0xf4 |
0x000059d2 add r7, sp, 0x28 | r7 += var_28h;
0x000059d4 str r0, [r7, 0x38] | var_38h = r0;
0x000059d6 movs r0, 0 | r0 = 0;
0x000059d8 str r1, [r7, 0x10] | var_bp_10h = r1;
0x000059da ldr.w r1, [r7, 0x104] | r1 = *((r7 + 0x104));
0x000059de str r3, [r7, 0x24] | var_24h = r3;
0x000059e0 str r2, [r7, 0x40] | var_40h = r2;
0x000059e2 bl 0xbdf0 | fcn_0000bdf0 (r0);
0x000059e6 ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x000059ea str r0, [r7, 0x2c] | var_2ch = r0;
0x000059ec ands r3, r3, 0x20000000 | r3 &= 0x20000000;
0x000059f0 str r3, [r7, 0x18] | var_18h_2 = r3;
| if (r3 == r3) {
0x000059f2 beq.w 0x5daa | goto label_45;
| }
0x000059f6 ldr.w r3, [r7, 0x104] | r3 = *((r7 + 0x104));
0x000059fa cmp r3, 0 |
| if (r3 != 0) {
0x000059fc bne.w 0x6782 | goto label_46;
| }
0x00005a00 ldr.w r3, [r7, 0x104] | r3 = *((r7 + 0x104));
0x00005a04 strd r3, r3, [r7, 0x48] | __asm ("strd r3, r3, [var_48h]");
0x00005a08 strd r3, r3, [r7, 0x50] | __asm ("strd r3, r3, [var_50h]");
| label_6:
0x00005a0c ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x00005a10 ands r3, r3, 4 | r3 &= 4;
0x00005a14 str r3, [r7, 0x20] | var_20h = r3;
| if (r3 != r3) {
0x00005a16 bne.w 0x615c | goto label_47;
| }
0x00005a1a ldr.w r3, [pc, 0xb94] | r3 = *(0x000065b0);
0x00005a1e add r3, pc | r3 += pc;
0x00005a20 ldr r3, [r3] | r3 = *(r3);
0x00005a22 lsls r0, r3, 0x19 | r0 = r3 << 0x19;
| if (r0 < r3) {
0x00005a24 bmi.w 0x62fc | goto label_48;
| }
| label_13:
0x00005a28 ldr r3, [r7, 0x2c] | r3 = var_2ch;
0x00005a2a ldr r4, [r3, 0xc] | r4 = *((r3 + 0xc));
0x00005a2c cmp r4, 0 |
| if (r4 == 0) {
0x00005a2e beq.w 0x5d76 | goto label_49;
| }
0x00005a32 cmp r4, 1 |
0x00005a34 itt eq |
| if (r4 != 1) {
0x00005a36 moveq r3, 0 | r3 = 0;
| }
| if (r4 != 1) {
0x00005a38 streq r3, [r7, 0x14] | *((r7 + 0x14)) = r3;
| }
| if (r4 != 1) {
0x00005a3a bne.w 0x67ba | goto label_50;
| }
| label_4:
0x00005a3e ldr.w r3, [r7, 0x104] | r3 = *((r7 + 0x104));
0x00005a42 str r3, [sp, 4] | var_4h = r3;
0x00005a44 ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x00005a48 str r3, [sp] | *(sp) = r3;
0x00005a4a ldr r1, [r7, 0x38] | r1 = var_38h;
0x00005a4c ldrd r3, r2, [r7, 0xf4] | __asm ("ldrd r3, r2, [r7, 0xf4]");
0x00005a50 ldr.w r0, [r7, 0xf0] | r0 = *((r7 + 0xf0));
0x00005a54 bl 0x8950 | r0 = fcn_00008950 (r0, r1, r2, r3, r4, r5);
0x00005a58 mov r4, r0 | r4 = r0;
0x00005a5a cmp r0, 0 |
| if (r0 == 0) {
0x00005a5c beq.w 0x630e | goto label_51;
| }
0x00005a60 ldr r0, [r7, 0x24] | r0 = var_24h;
0x00005a62 ldrh r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x00005a64 ldrd r1, r3, [r0, 0x1c] | __asm ("ldrd r1, r3, [r0, 0x1c]");
0x00005a68 ldrh r6, [r0, 0x14] | r6 = *((r0 + 0x14));
0x00005a6a lsls r5, r2, 5 | r5 = r2 << 5;
0x00005a6c str.w r1, [r4, 0x158] | __asm ("str.w r1, [r4, 0x158]");
0x00005a70 ldr r1, [r0] | r1 = *(r0);
0x00005a72 strh.w r2, [r4, 0x15c] | *((r4 + 0x15c)) = r2;
0x00005a76 adds r2, r3, r5 | r2 = r3 + r5;
0x00005a78 str r6, [r7, 4] | var_bp_4h = r6;
0x00005a7a cmp r2, r1 |
| if (r2 > r1) {
0x00005a7c bhi.w 0x60b2 | goto label_52;
| }
0x00005a80 adds r2, r0, 4 | r2 = r0 + 4;
0x00005a82 adds r3, r2, r3 | r3 = r2 + r3;
0x00005a84 str r3, [r7, 0x1c] | var_1ch = r3;
| label_11:
0x00005a86 ldrh.w r2, [r4, 0x15c] | r2 = *((r4 + 0x15c));
0x00005a8a mov r1, sp | r1 = sp;
0x00005a8c ldr r6, [r7, 0x1c] | r6 = var_1ch;
0x00005a8e str.w sp, [r7, 8] | __asm ("str.w sp, [var_8h_2]");
0x00005a92 add.w r3, r2, r2, lsl 1 | r3 = r2 + (r2 << 1);
0x00005a96 add.w r2, r6, r2, lsl 5 | r2 = r6 + (r2 << 5);
0x00005a9a sub.w r3, r1, r3, lsl 3 | r3 = r1 - (r3 << 3);
0x00005a9e cmp r2, r6 |
0x00005aa0 mov sp, r3 |
0x00005aa2 add.w fp, sp, 0x28 |
| if (r2 < r6) {
0x00005aa6 bls.w 0x64a4 | goto label_53;
| }
0x00005aaa ldr.w r1, [pc, 0xb08] | r1 = *(0x000065b4);
0x00005aae movw ip, 0xe551 |
0x00005ab2 ldr.w r3, [pc, 0xb04] | r3 = *(0x000065b8);
0x00005ab6 movw r0, 0xe552 |
0x00005aba movw r5, 0x6240 |
0x00005abe movt ip, 0x6474 | ip = 0x6474e551;
0x00005ac2 add r1, pc | r1 += pc;
0x00005ac4 movt r0, 0x6474 | r0 = 0x6474e552;
0x00005ac8 ldr.w r1, [r1, 0x884] | r1 = *((r1 + 0x884));
0x00005acc add r3, pc | r3 += pc;
0x00005ace ldr.w lr, [r3, 0x10] |
0x00005ad2 movt r5, 0x7351 | r5 = 0x73516240;
0x00005ad6 str r5, [r7, 0x28] | *((r7 + 0x28)) = r5;
0x00005ad8 str r1, [r7, 0xc] | *((r7 + 0xc)) = r1;
0x00005ada movs r1, 0 | r1 = 0;
0x00005adc mov sl, r1 | sl = r1;
0x00005ade str r1, [r7, 0x34] | *((r7 + 0x34)) = r1;
0x00005ae0 movs r1, 7 | r1 = 7;
0x00005ae2 add.w r3, lr, -1 | r3 = lr + -1;
0x00005ae6 str r1, [r7, 0x30] | *((r7 + 0x30)) = r1;
0x00005ae8 rsb.w lr, lr, 0 | lr -= ;
0x00005aec ldr.w r1, [r7, 0xfc] | r1 = *((r7 + 0xfc));
0x00005af0 mov r8, lr | r8 = lr;
0x00005af2 str r3, [r7, 0x44] | *((r7 + 0x44)) = r3;
0x00005af4 mov r3, r6 | r3 = r6;
0x00005af6 and r1, r1, 0x8000000 | r1 &= 0x8000000;
0x00005afa str r1, [r7] | *(r7) = r1;
| do {
| label_2:
0x00005afc ldr r1, [r3] | r1 = *(r3);
0x00005afe cmp r1, 7 |
| if (r1 <= 7) {
0x00005b00 bhi 0x5b1c |
| if (r1 == 0) {
0x00005b02 cbz r1, 0x5b32 | goto label_1;
| }
0x00005b04 subs r1, 1 | r1--;
0x00005b06 cmp r1, 6 |
| if (r1 > 6) {
0x00005b08 bhi 0x5b32 | goto label_1;
| }
| /* switch table (8 cases) at 0x5b0e */
0x00005b0a tbh [pc, r1, lsl 1] | __asm ("tbh [pc, r1, lsl 1]");
| }
0x00005b1c cmp r1, ip |
| if (r1 == ip) {
0x00005b1e beq.w 0x5d9c | goto label_54;
| }
0x00005b22 cmp r1, r0 |
| if (r1 == r0) {
0x00005b24 bne 0x5b32 |
0x00005b26 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00005b28 str.w r1, [r4, 0x250] | __asm ("str.w r1, [r4, 0x250]");
0x00005b2c ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x00005b2e str.w r1, [r4, 0x254] | __asm ("str.w r1, [r4, 0x254]");
| }
| label_1:
0x00005b32 adds r3, 0x20 | r3 += 0x20;
0x00005b34 cmp r2, r3 |
0x00005b36 bhi 0x5afc |
| } while (r2 > r3);
| label_3:
0x00005b38 cmp.w sl, 0 |
| if (sl == 0) {
0x00005b3c beq.w 0x64a4 | goto label_53;
| }
0x00005b40 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00005b42 cmp r3, 3 |
| if (r3 != 3) {
0x00005b44 bne.w 0x64ee | goto label_55;
| }
0x00005b48 add.w r3, sl, -1 | r3 = sl + -1;
0x00005b4c ldr.w r5, [fp] | r5 = *(fp);
0x00005b50 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00005b54 ldr.w r2, [pc, 0xa64] | r2 = *(0x000065bc);
0x00005b58 add.w r3, fp, r3, lsl 3 | r3 = fp + (r3 << 3);
0x00005b5c add r2, pc | r2 += pc;
0x00005b5e ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00005b60 ldr.w r0, [r2, 0x16c] | r0 = *((r2 + 0x16c));
0x00005b64 sub.w sb, r3, r5 | sb = r3 - r5;
0x00005b68 ldrd r3, r6, [fp, 0x10] | __asm ("ldrd r3, r6, [var_bp_10h]");
0x00005b6c ands r0, r5 | r0 &= r5;
0x00005b6e mov r1, sb | r1 = sb;
0x00005b70 str r3, [sp, 4] | var_4h = r3;
0x00005b72 mov r2, r6 | r2 = r6;
0x00005b74 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00005b76 str r3, [sp] | *(sp) = r3;
0x00005b78 movw r3, 0x802 | r3 = 0x802;
0x00005b7c bl 0x14a98 | r0 = fcn_00014a98 (r0, r1);
0x00005b80 adds r3, r0, 1 | r3 = r0 + 1;
0x00005b82 str.w r0, [r4, 0x1b4] | __asm ("str.w r0, [r4, 0x1b4]");
| if (r3 == r0) {
0x00005b86 beq 0x5c48 | goto label_56;
| }
0x00005b88 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x00005b8a subs r5, r0, r5 | r5 = r0 - r5;
0x00005b8c add r0, sb | r0 += sb;
0x00005b8e str r5, [r4] | *(r4) = r5;
0x00005b90 str.w r0, [r4, 0x1b8] | __asm ("str.w r0, [r4, 0x1b8]");
0x00005b94 cmp r3, 0 |
| if (r3 != 0) {
0x00005b96 bne.w 0x5ea2 | goto label_57;
| }
| label_8:
0x00005b9a ldrb.w r3, [r4, 0x199] | r3 = *((r4 + 0x199));
0x00005b9e mov r5, fp | r5 = fp;
0x00005ba0 orr r3, r3, 0x40 | r3 |= 0x40;
0x00005ba4 strb.w r3, [r4, 0x199] | *((r4 + 0x199)) = r3;
| do {
| label_0:
0x00005ba8 lsls r3, r6, 0x1d | r3 = r6 << 0x1d;
0x00005baa itttt mi |
| if (r3 >= r6) {
0x00005bac ldrmi r3, [r4] | r3 = *(r4);
| }
| if (r3 >= r6) {
0x00005bae ldrmi r2, [r5, 4] | r2 = *((r5 + 4));
| }
| if (r3 >= r6) {
0x00005bb0 addmi r3, r3, r2 | r3 += r2;
| }
| if (r3 >= r6) {
0x00005bb2 strmi r3, [r4, 0x1bc] | *((r4 + 0x1bc)) = r3;
| }
0x00005bb6 ldr.w r3, [r4, 0x154] | r3 = *((r4 + 0x154));
0x00005bba cmp r3, 0 |
| if (r3 == 0) {
0x00005bbc beq.w 0x6086 | goto label_58;
| }
| label_10:
0x00005bc0 ldrd r2, r3, [r5, 8] | __asm ("ldrd r2, r3, [r5, 8]");
0x00005bc4 cmp r3, r2 |
| if (r3 >= r2) {
0x00005bc6 bls 0x5c12 |
0x00005bc8 ldr.w r0, [pc, 0x9f4] | r0 = *(0x000065c0);
0x00005bcc ldr r1, [r4] | r1 = *(r4);
0x00005bce add r0, pc | r0 += pc;
0x00005bd0 add r2, r1 | r2 += r1;
0x00005bd2 add r3, r1 | r3 += r1;
0x00005bd4 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x00005bd6 str r0, [r7, 0x3c] | *((r7 + 0x3c)) = r0;
0x00005bd8 str r2, [r7, 0x44] | *((r7 + 0x44)) = r2;
0x00005bda add.w r8, r1, -1 | r8 = r1 + -1;
0x00005bde rsbs r0, r1, 0 | r0 = r1 - ;
0x00005be0 add r8, r2 | r8 += r2;
0x00005be2 and.w r8, r8, r0 | r8 &= r0;
0x00005be6 cmp r8, r3 |
0x00005be8 it hs |
| if (r8 < r3) {
0x00005bea movhs r8, r3 | r8 = r3;
| }
0x00005bec cmp r2, r8 |
| if (r2 < r8) {
0x00005bee bhs 0x5c0c |
0x00005bf0 ands r2, r6, 2 | r2 = r6 & 2;
0x00005bf4 str r2, [r7, 0x34] | *((r7 + 0x34)) = r2;
| if (r2 == r6) {
0x00005bf6 beq.w 0x6424 | goto label_59;
| }
0x00005bfa str r3, [r7, 0x3c] | *((r7 + 0x3c)) = r3;
0x00005bfc movs r1, 0 | r1 = 0;
0x00005bfe ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00005c00 sub.w r2, r8, r3 | r2 = r8 - r3;
0x00005c04 mov r0, r3 | r0 = r3;
0x00005c06 blx 0x15da0 | fcn_00015da0 (r0, r1);
0x00005c0a ldr r3, [r7, 0x3c] | r3 = *((r7 + 0x3c));
| }
| label_21:
0x00005c0c cmp r3, r8 |
| if (r3 > r8) {
0x00005c0e bhi.w 0x6390 | goto label_60;
| }
| }
| label_17:
0x00005c12 adds r5, 0x18 | r5 += 0x18;
| label_28:
0x00005c14 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x00005c18 add.w r3, fp, r3, lsl 3 | r3 = fp + (r3 << 3);
0x00005c1c cmp r5, r3 |
| if (r5 >= r3) {
0x00005c1e bhs.w 0x5eca | goto label_61;
| }
0x00005c22 ldrd r3, r1, [r5] | __asm ("ldrd r3, r1, [r5]");
0x00005c26 ldr r6, [r5, 0x14] | r6 = *((r5 + 0x14));
0x00005c28 cmp r1, r3 |
0x00005c2a bls 0x5ba8 |
| } while (r1 < r3);
0x00005c2c ldr r0, [r4] | r0 = *(r4);
0x00005c2e subs r1, r1, r3 | r1 -= r3;
0x00005c30 mov r2, r6 | r2 = r6;
0x00005c32 add r0, r3 | r0 += r3;
0x00005c34 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00005c36 str r3, [sp, 4] | var_4h = r3;
0x00005c38 ldr r3, [r7, 0x40] | r3 = *((r7 + 0x40));
0x00005c3a str r3, [sp] | *(sp) = r3;
0x00005c3c movw r3, 0x812 | r3 = 0x812;
0x00005c40 bl 0x14a98 | fcn_00014a98 (r0, r1);
0x00005c44 adds r0, 1 | r0++;
| if (r0 != 1) {
0x00005c46 bne 0x5ba8 | goto label_0;
| }
| label_56:
0x00005c48 ldr.w r5, [pc, 0x978] |
0x00005c4c add r5, pc | r5 = 0xc214;
0x00005c4e b 0x63b2 | goto label_62;
0x00005c50 ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x00005c52 cmp r1, 0 |
| if (r1 == 0) {
0x00005c54 beq.w 0x5b32 | goto label_1;
| }
0x00005c58 str.w r1, [r4, 0x238] | __asm ("str.w r1, [r4, 0x238]");
0x00005c5c ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00005c5e str.w r1, [r4, 0x23c] | __asm ("str.w r1, [r4, 0x23c]");
0x00005c62 ldr r6, [r3, 8] | r6 = *((r3 + 8));
| if (r1 != 0) {
0x00005c64 cbz r1, 0x5c6a |
0x00005c66 subs r1, 1 | r1--;
0x00005c68 ands r1, r6 | r1 &= r6;
| }
0x00005c6a ldrb.w r5, [r4, 0x198] | r5 = *((r4 + 0x198));
0x00005c6e str.w r1, [r4, 0x240] | __asm ("str.w r1, [r4, 0x240]");
0x00005c72 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00005c74 and r5, r5, 3 | r5 &= 3;
0x00005c78 cmp r5, 1 |
0x00005c7a strd r6, r1, [r4, 0x230] | __asm ("strd r6, r1, [r4, 0x230]");
| if (r5 == 1) {
0x00005c7e beq.w 0x5b32 | goto label_1;
| }
0x00005c82 ldr r1, [r7, 0xc] | r1 = *((r7 + 0xc));
0x00005c84 cmp r1, 0 |
| if (r1 != 0) {
0x00005c86 bne.w 0x5b32 | goto label_1;
| }
0x00005c8a ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x00005c8c cmp r1, 0 |
| if (r1 == 0) {
0x00005c8e beq.w 0x5b32 | goto label_1;
| }
0x00005c92 ldr r1, [r7] | r1 = *(r7);
0x00005c94 cmp r1, 0 |
| if (r1 != 0) {
0x00005c96 bne.w 0x5b32 | goto label_1;
| }
0x00005c9a ldr.w r3, [pc, 0x92c] | r3 = *(0x000065c8);
0x00005c9e movw r2, 0x4cc | r2 = 0x4cc;
0x00005ca2 ldr.w r1, [pc, 0x928] |
0x00005ca6 ldr.w r0, [pc, 0x928] | r0 = *(0x000065d0);
0x00005caa add r3, pc | r3 += pc;
0x00005cac add r1, pc | r1 = 0xc27e;
0x00005cae add r0, pc | r0 += pc;
0x00005cb0 bl 0x11f30 | fcn_00011f30 (r0);
0x00005cb4 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00005cb6 cmp r1, 0 |
| if (r1 == 0) {
0x00005cb8 beq.w 0x5b32 | goto label_1;
| }
0x00005cbc ldr r1, [r3, 0x14] | r1 = *((r3 + 0x14));
0x00005cbe adds r3, 0x20 | r3 += 0x20;
0x00005cc0 ldr r5, [r3, -0x18] | r5 = *((r3 - 0x18));
0x00005cc4 cmp r2, r3 |
0x00005cc6 lsr.w r1, r1, 3 | r1 >>= 3;
0x00005cca str r5, [r4, 8] | *((r4 + 8)) = r5;
0x00005ccc strh.w r1, [r4, 0x15e] | *((r4 + 0x15e)) = r1;
| if (r2 > r3) {
0x00005cd0 bhi.w 0x5afc | goto label_2;
| }
0x00005cd4 b 0x5b38 | goto label_3;
0x00005cd6 ldr r1, [r3, 0x1c] | r1 = *((r3 + 0x1c));
0x00005cd8 ldr r5, [r7, 0x44] | r5 = *((r7 + 0x44));
0x00005cda tst r1, r5 |
| if ((r1 & r5) != 0) {
0x00005cdc bne.w 0x60d8 | goto label_63;
| }
0x00005ce0 ldrd r5, r6, [r3, 4] | __asm ("ldrd r5, r6, [r3, 4]");
0x00005ce4 subs r1, 1 | r1--;
0x00005ce6 sub.w lr, r6, r5 | lr = r6 - r5;
0x00005cea tst.w lr, r1 |
| if ((lr & r1) != 0) {
0x00005cee bne.w 0x617c | goto label_64;
| }
0x00005cf2 and.w r1, r5, r8 | r1 = r5 & r8;
0x00005cf6 ldr r5, [r3, 0x14] | r5 = *((r3 + 0x14));
0x00005cf8 str r1, [r7, 0x3c] | *((r7 + 0x3c)) = r1;
0x00005cfa lsl.w lr, sl, 1 | lr = sl << 1;
0x00005cfe ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
0x00005d00 and.w sb, r6, r8 | sb = r6 & r8;
0x00005d04 add r5, r6 | r5 += r6;
0x00005d06 add r1, r6 | r1 += r6;
0x00005d08 add.w r6, lr, sl | r6 = lr + sl;
0x00005d0c str.w sb, [fp, r6, lsl 3] | __asm ("str.w sb, [fp, r6, lsl 3]");
0x00005d10 add.w r6, fp, r6, lsl 3 | r6 = fp + (r6 << 3);
0x00005d14 str r5, [r6, 0xc] | *((r6 + 0xc)) = r5;
0x00005d16 ldr r5, [r7, 0x3c] | r5 = *((r7 + 0x3c));
0x00005d18 str r1, [r6, 8] | *((r6 + 8)) = r1;
0x00005d1a str r5, [r6, 0x10] | *((r6 + 0x10)) = r5;
0x00005d1c ldr r5, [r7, 0x44] | r5 = *((r7 + 0x44));
0x00005d1e add r1, r5 | r1 += r5;
0x00005d20 and.w r1, r1, r8 | r1 &= r8;
0x00005d24 str r1, [r6, 4] | *((r6 + 4)) = r1;
0x00005d26 add.w r1, sl, 1 | r1 = sl + 1;
0x00005d2a cmp r1, 1 |
| if (r1 >= 1) {
0x00005d2c bls 0x5d3c |
0x00005d2e ldr r5, [r6, -0x14] | r5 = *((r6 - 0x14));
0x00005d32 ldr r6, [r7, 0x34] | r6 = *((r7 + 0x34));
0x00005d34 cmp sb, r5 |
0x00005d36 it ne |
| if (sb == r5) {
0x00005d38 movne r6, 1 | r6 = 1;
| }
0x00005d3a str r6, [r7, 0x34] | *((r7 + 0x34)) = r6;
| }
0x00005d3c add lr, sl | lr += sl;
0x00005d3e mov sl, r1 | sl = r1;
0x00005d40 ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x00005d42 adds r3, 0x20 | r3 += 0x20;
0x00005d44 ldr r5, [r7, 0x28] | r5 = *((r7 + 0x28));
0x00005d46 add.w lr, fp, lr, lsl 3 | lr = fp + (lr << 3);
0x00005d4a cmp r2, r3 |
0x00005d4c and r1, r1, 7 | r1 &= 7;
0x00005d50 lsl.w r1, r1, 2 | r1 <<= 2;
0x00005d54 asr.w r1, r5, r1 | r1 = r5 >> r1;
0x00005d58 and r1, r1, 0xf | r1 &= 0xf;
0x00005d5c str.w r1, [lr, 0x14] | __asm ("str.w r1, [lr, 0x14]");
| if (r2 > r3) {
0x00005d60 bhi.w 0x5afc | goto label_2;
| }
0x00005d64 b 0x5b38 | goto label_3;
0x00005d66 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00005d68 adds r3, 0x20 | r3 += 0x20;
0x00005d6a cmp r2, r3 |
0x00005d6c str.w r1, [r4, 0x154] | __asm ("str.w r1, [r4, 0x154]");
| if (r2 > r3) {
0x00005d70 bhi.w 0x5afc | goto label_2;
| }
0x00005d74 b 0x5b38 | goto label_3;
| label_49:
0x00005d76 ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x00005d7a lsls r1, r3, 4 | r1 = r3 << 4;
| if (r1 >= r3) {
0x00005d7c bmi 0x5d8e |
0x00005d7e ldr.w r5, [pc, 0x854] | r5 = *(0x000065d4);
0x00005d82 add r5, pc | r5 += pc;
0x00005d84 ldr.w r3, [r5, 0x1dc] | r3 = *((r5 + 0x1dc));
0x00005d88 cmp r3, 0 |
| if (r3 != 0) {
0x00005d8a bne.w 0x63c8 | goto label_65;
| }
| }
| label_19:
0x00005d8e ldr r2, [r7, 0x2c] | r2 = var_2ch;
0x00005d90 movs r3, 1 | r3 = 1;
0x00005d92 str r3, [r7, 0x14] | var_14h = r3;
0x00005d94 str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x00005d96 bl 0xbdec | dl_debug_state ();
0x00005d9a b 0x5a3e | goto label_4;
| label_54:
0x00005d9c ldr r1, [r3, 0x18] | r1 = *((r3 + 0x18));
0x00005d9e adds r3, 0x20 | r3 += 0x20;
0x00005da0 cmp r2, r3 |
0x00005da2 str r1, [r7, 0x30] | *((r7 + 0x30)) = r1;
| if (r2 > r3) {
0x00005da4 bhi.w 0x5afc | goto label_2;
| }
0x00005da8 b 0x5b38 | goto label_3;
| label_45:
0x00005daa ldr r0, [r7, 0x40] | r0 = var_40h;
0x00005dac add.w r1, r7, 0x58 | r1 += var_58h;
0x00005db0 bl 0x143c8 | r0 = fcn_000143c8 (r0, r1);
0x00005db4 cmp r0, 0 |
| if (r0 < 0) {
0x00005db6 blt.w 0x6460 | goto label_66;
| }
0x00005dba ldr.w r2, [r7, 0x104] | r2 = *((r7 + 0x104));
0x00005dbe movs r3, 0x54 | r3 = 0x54;
0x00005dc0 ldr r0, [r7, 0x58] | r0 = var_58h;
0x00005dc2 ldr r1, [r7, 0x5c] | r1 = var_5ch;
0x00005dc4 ldr r6, [r7, 0x60] | r6 = var_60h;
0x00005dc6 mul r3, r2, r3 | r3 = r2 * r3;
0x00005dca ldr.w r2, [pc, 0x80c] | r2 = *(0x000065d8);
0x00005dce ldr r5, [r7, 0x64] | r5 = var_64h;
0x00005dd0 str r0, [r7, 0x48] | var_48h = r0;
0x00005dd2 add r2, pc | r2 += pc;
0x00005dd4 str r1, [r7, 0x4c] | var_4ch = r1;
0x00005dd6 ldr r4, [r2, r3] | r4 = *((r2 + r3));
0x00005dd8 str r6, [r7, 0x50] | var_50h = r6;
0x00005dda str r5, [r7, 0x54] | var_54h = r5;
| if (r4 != 0) {
0x00005ddc cbnz r4, 0x5de4 | goto label_67;
| }
0x00005dde b 0x5e2a | goto label_68;
| do {
| label_5:
0x00005de0 ldr r4, [r4, 0xc] | r4 = *((r4 + 0xc));
| if (r4 == 0) {
0x00005de2 cbz r4, 0x5e2a | goto label_68;
| }
| label_67:
0x00005de4 ldrb.w r3, [r4, 0x199] | r3 = *((r4 + 0x199));
0x00005de8 lsls r3, r3, 0x1a | r3 <<= 0x1a;
0x00005dea bmi 0x5de0 |
| } while (r3 < r3);
0x00005dec ldrd r2, r3, [r4, 0x1e0] | __asm ("ldrd r2, r3, [r4, 0x1e0]");
0x00005df0 cmp r3, r1 |
0x00005df2 it eq |
| if (r3 != r1) {
0x00005df4 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| goto label_69;
| }
| if (r3 != r1) {
| label_69:
0x00005df6 bne 0x5de0 | goto label_5;
| }
0x00005df8 ldrd r2, r3, [r4, 0x1e8] | __asm ("ldrd r2, r3, [r4, 0x1e8]");
0x00005dfc cmp r3, r5 |
0x00005dfe it eq |
| if (r3 != r5) {
0x00005e00 cmpeq r2, r6 | __asm ("cmpeq r2, r6");
| goto label_70;
| }
| if (r3 != r5) {
| label_70:
0x00005e02 bne 0x5de0 | goto label_5;
| }
0x00005e04 ldr r0, [r7, 0x40] | r0 = var_40h;
0x00005e06 bl 0x14720 | fcn_00014720 ();
0x00005e0a ldr.w r3, [pc, 0x7d0] | r3 = *(0x000065dc);
0x00005e0c adds r7, 0xd0 | r7 += 0xd0;
0x00005e0e ldr.w r0, [r7, 0xf0] | r0 = *((r7 + 0xf0));
0x00005e12 add r3, pc | r3 += pc;
0x00005e14 ldr r3, [r3] | r3 = *(r3);
0x00005e16 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00005e18 ldr r1, [r7, 0x38] | r1 = var_38h;
0x00005e1a ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00005e1c bl 0x5128 | fcn_00005128 (r0, r1);
| label_7:
0x00005e20 mov r0, r4 | r0 = r4;
0x00005e22 adds r7, 0xcc | r7 += 0xcc;
0x00005e24 mov sp, r7 |
0x00005e26 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_68:
0x00005e2a ldr.w r3, [r7, 0x104] | r3 = *((r7 + 0x104));
0x00005e2e cmp r3, 0 |
| if (r3 == 0) {
0x00005e30 beq.w 0x5a0c | goto label_6;
| }
0x00005e34 ldr.w r4, [pc, 0x7a8] | r4 = *(0x000065e0);
0x00005e38 add r4, pc | r4 += pc;
0x00005e3a ldr.w r2, [r4, 0x778] | r2 = *((r4 + 0x778));
0x00005e3e ldr.w r3, [r4, 0x77c] | r3 = *((r4 + 0x77c));
0x00005e42 cmp r3, r1 |
0x00005e44 it eq |
| if (r3 == r1) {
0x00005e46 cmpeq r2, r0 | __asm ("cmpeq r2, r0");
| }
| if (r3 == r1) {
0x00005e48 beq.w 0x64da | goto label_71;
| }
| label_26:
0x00005e4c ldr.w r1, [pc, 0x794] | r1 = *(0x000065e4);
0x00005e50 ldr r0, [r7, 0x38] | r0 = var_38h;
0x00005e52 add r1, pc | r1 += pc;
0x00005e54 add.w r1, r1, 0x598 | r1 += 0x598;
0x00005e58 bl 0xc2c0 | r0 = fcn_0000c2c0 (r0, r1);
0x00005e5c cmp r0, 0 |
| if (r0 == 0) {
0x00005e5e beq.w 0x5a0c | goto label_6;
| }
| label_27:
0x00005e62 ldr.w r3, [r7, 0x104] | r3 = *((r7 + 0x104));
0x00005e66 str r3, [sp, 4] | var_4h = r3;
0x00005e68 ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x00005e6c str r3, [sp] | *(sp) = r3;
0x00005e6e ldr r1, [r7, 0x38] | r1 = var_38h;
0x00005e70 ldrd r3, r2, [r7, 0xf4] | __asm ("ldrd r3, r2, [r7, 0xf4]");
0x00005e74 ldr.w r0, [r7, 0xf0] | r0 = *((r7 + 0xf0));
0x00005e78 bl 0x8950 | r0 = fcn_00008950 (r0, r1, r2, r3, r4, r5);
0x00005e7c mov r4, r0 | r4 = r0;
0x00005e7e cmp r0, 0 |
| if (r0 == 0) {
0x00005e80 beq.w 0x676a | goto label_72;
| }
0x00005e84 ldr.w r3, [pc, 0x760] | r3 = *(0x000065e8);
0x00005e88 ldr r0, [r7, 0x40] | r0 = var_40h;
0x00005e8a add r3, pc | r3 += pc;
0x00005e8c add.w r3, r3, 0x598 | r3 += 0x598;
0x00005e90 str r3, [r4, 0x14] | *((r4 + 0x14)) = r3;
0x00005e92 bl 0x14720 | fcn_00014720 ();
0x00005e96 ldr.w r1, [r7, 0x104] | r1 = *((r7 + 0x104));
0x00005e9a mov r0, r4 | r0 = r4;
0x00005e9c bl 0x88cc | fcn_000088cc (r0, r1);
0x00005ea0 b 0x5e20 | goto label_7;
| label_57:
0x00005ea2 add.w r3, sl, sl, lsl 1 | r3 = sl + (sl << 1);
0x00005ea6 ldr.w r0, [fp, 4] | r0 = var_bp_4h;
0x00005eaa movs r2, 0 | r2 = 0;
0x00005eac add.w r3, fp, r3, lsl 3 | r3 = fp + (r3 << 3);
0x00005eb0 ldr r1, [r3, -0x18] | r1 = *((r3 - 0x18));
0x00005eb4 subs r1, r1, r0 | r1 -= r0;
0x00005eb6 add r0, r5 | r0 += r5;
0x00005eb8 bl 0x14b10 | r0 = fcn_00014b10 (r0);
0x00005ebc cmp r0, 0 |
| if (r0 >= 0) {
0x00005ebe bge.w 0x5b9a | goto label_8;
| }
| label_20:
0x00005ec2 ldr.w r5, [pc, 0x728] | r5 = *(0x000065ec);
0x00005ec6 add r5, pc | r5 += pc;
0x00005ec8 b 0x63b2 | goto label_62;
| label_61:
0x00005eca ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00005ecc ldr.w sp, [r7, 8] | sp = *((r7 + 8));
0x00005ed0 cmp r3, 0 |
| if (r3 == 0) {
0x00005ed2 beq.w 0x6478 | goto label_73;
| }
0x00005ed6 ldr.w sl, [r4] | sl = *(r4);
0x00005eda add.w r2, r3, sl | r2 = r3 + sl;
0x00005ede str r2, [r4, 8] | *((r4 + 8)) = r2;
0x00005ee0 cmp r2, 0 |
| if (r2 == 0) {
0x00005ee2 beq.w 0x6480 | goto label_74;
| }
0x00005ee6 ldr.w r3, [r3, sl] | r3 = *((r3 + sl));
0x00005eea add.w r1, r4, 0x20 | r1 = r4 + 0x20;
| if (r3 == 0) {
0x00005eee cbz r3, 0x5f5e | goto label_75;
| }
0x00005ef0 movw ip, 0xfdff |
0x00005ef4 movw r8, 0xfeff |
0x00005ef8 movw fp, 0xff41 |
0x00005efc movw lr, 0xfe35 |
0x00005f00 movs r6, 0x22 | r6 = 0x22;
0x00005f02 movt ip, 0x6fff | ip = 0x6ffffdff;
0x00005f06 movt r8, 0x6fff | r8 = 0x6ffffeff;
0x00005f0a movt fp, 0x6fff | fp = 0x6fffff41;
0x00005f0e movt lr, 0x6fff | lr = 0x6ffffe35;
0x00005f12 movt r6, 0x7000 | r6 = (r6 & 0xFFFF) | 0x70000000;
0x00005f16 mvn r5, 0x90000000 | r5 = ~0x90000000;
| do {
0x00005f1a cmp r3, 0x22 |
| if (r3 >= 0x22) {
0x00005f1c bls 0x5f52 |
0x00005f1e subs r0, r5, r3 | r0 = r5 - r3;
0x00005f20 cmp r0, 0xf |
0x00005f22 it ls |
| if (r0 > 0xf) {
0x00005f24 subls r3, r6, r3 | r3 = r6 - r3;
| }
| if (r0 < 0xf) {
0x00005f26 bls 0x5f52 | goto label_76;
| }
0x00005f28 sbfx r0, r3, 0, 0x1f | __asm ("sbfx r0, r3, 0, 0x1f");
0x00005f2c cmn.w r0, 4 |
0x00005f30 it hi |
| if (r0 > 4) {
0x00005f32 rsbhi r3, r0, 0x32 | __asm ("rsbhi r3, r0, 0x32");
| }
| if (r0 > 4) {
0x00005f36 bhi 0x5f52 | goto label_76;
| }
0x00005f38 sub.w r0, ip, r3 | r0 = ip - r3;
0x00005f3c cmp r0, 0xb |
0x00005f3e it ls |
| if (r0 > 0xb) {
0x00005f40 subls r3, lr, r3 | r3 = lr - r3;
| }
| if (r0 < 0xb) {
0x00005f44 bls 0x5f52 | goto label_76;
| }
0x00005f46 sub.w r0, r8, r3 | r0 = r8 - r3;
0x00005f4a cmp r0, 0xa |
| if (r0 > 0xa) {
0x00005f4c bhi 0x5f56 | goto label_77;
| }
0x00005f4e sub.w r3, fp, r3 | r3 = fp - r3;
| }
| label_76:
0x00005f52 str.w r2, [r1, r3, lsl 2] | __asm ("str.w r2, [r1, r3, lsl 2]");
| label_77:
0x00005f56 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00005f5a cmp r3, 0 |
0x00005f5c bne 0x5f1a |
| } while (r3 != 0);
| label_75:
0x00005f5e cmp.w sl, 0 |
| if (sl != 0) {
0x00005f62 bne.w 0x632c | goto label_78;
| }
| label_16:
0x00005f66 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
| if (r3 != 0) {
0x00005f68 cbz r3, 0x5f76 |
0x00005f6a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00005f6c cmp r3, 7 |
0x00005f6e it ne |
| if (r3 != 7) {
0x00005f70 cmpne r3, 0x11 | __asm ("cmpne r3, 0x11");
| }
| if (r3 != 7) {
0x00005f72 bne.w 0x67a8 | goto label_79;
| }
| }
0x00005f76 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
| if (r3 != 0) {
0x00005f78 cbz r3, 0x5f84 |
0x00005f7a ldr r3, [r4, 0x44] | r3 = *((r4 + 0x44));
0x00005f7c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00005f7e cmp r3, 0xc |
| if (r3 != 0xc) {
0x00005f80 bne.w 0x6796 | goto label_80;
| }
| }
0x00005f84 ldr r3, [r4, 0x64] | r3 = *((r4 + 0x64));
| if (r3 != 0) {
0x00005f86 cbz r3, 0x5f92 |
0x00005f88 ldr r3, [r4, 0x6c] | r3 = *((r4 + 0x6c));
0x00005f8a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00005f8c cmp r3, 8 |
| if (r3 != 8) {
0x00005f8e bne.w 0x67ce | goto label_81;
| }
| }
0x00005f92 ldr.w r3, [r4, 0x98] | r3 = *((r4 + 0x98));
| if (r3 != 0) {
0x00005f96 cbz r3, 0x5fb2 |
0x00005f98 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00005f9a lsls r0, r2, 0x1e | r0 = r2 << 0x1e;
0x00005f9c str.w r2, [r4, 0x210] | __asm ("str.w r2, [r4, 0x210]");
0x00005fa0 it mi |
| if (r0 >= r2) {
0x00005fa2 strmi r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
| }
0x00005fa4 lsls r1, r2, 0x1d | r1 = r2 << 0x1d;
0x00005fa6 it mi |
| if (r1 >= r2) {
0x00005fa8 strmi r3, [r4, 0x78] | *((r4 + 0x78)) = r3;
| }
0x00005faa lsls r6, r2, 0x1c | r6 = r2 << 0x1c;
0x00005fac it mi |
| if (r6 < r2) {
0x00005fae strmi r3, [r4, 0x80] | *((r4 + 0x80)) = r3;
| goto label_82;
| }
| }
| label_82:
0x00005fb2 ldr.w r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x00005fb6 cmp r3, 0 |
| if (r3 == 0) {
0x00005fb8 beq.w 0x6554 | goto label_83;
| }
0x00005fbc ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00005fbe lsls r5, r3, 0x1c | r5 = r3 << 0x1c;
0x00005fc0 str.w r3, [r4, 0x20c] | __asm ("str.w r3, [r4, 0x20c]");
0x00005fc4 itt mi |
| if (r5 >= r3) {
0x00005fc6 movmi r2, 1 | r2 = 1;
| }
| if (r5 >= r3) {
0x00005fc8 strbmi r2, [r4, 0x19c] | *((r4 + 0x19c)) = r2;
| }
0x00005fcc ldr.w r2, [pc, 0x620] | r2 = *(0x000065f0);
0x00005fd0 add r2, pc | r2 += pc;
0x00005fd2 ldr r2, [r2] | r2 = *(r2);
0x00005fd4 lsls r0, r2, 0x19 | r0 = r2 << 0x19;
| if (r0 < r2) {
0x00005fd6 bmi.w 0x66d2 | goto label_84;
| }
| label_37:
0x00005fda ldr.w r2, [r4, 0x20c] | r2 = *((r4 + 0x20c));
| label_38:
0x00005fde lsls r1, r3, 0x1f | r1 = r3 << 0x1f;
0x00005fe0 itt mi |
| if (r1 >= r3) {
0x00005fe2 ldrmi r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
| }
| if (r1 < r3) {
0x00005fe6 str.w r3, [r4, 0x80] | __asm ("str.w r3, [r4, 0x80]");
| }
| label_30:
0x00005fea ldr.w r3, [r4, 0x94] | r3 = *((r4 + 0x94));
| if (r3 != 0) {
0x00005fee cbz r3, 0x5ff4 |
0x00005ff0 movs r3, 0 | r3 = 0;
0x00005ff2 str r3, [r4, 0x5c] | *((r4 + 0x5c)) = r3;
| }
| label_23:
0x00005ff4 ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x00005ff8 lsrs r3, r3, 0x1f | r3 >>= 0x1f;
0x00005ffa ands.w r3, r3, r2, lsr 6 | r3 &= (r2 >> 6);
| if (r3 != r3) {
0x00005ffe bne.w 0x6760 | goto label_85;
| }
0x00006002 ldr r3, [r7, 0x18] | r3 = var_18h_2;
0x00006004 clz r3, r3 | r3 &= r3;
0x00006008 lsrs r3, r3, 5 | r3 >>= 5;
0x0000600a ands.w r3, r3, r2, lsr 27 | r3 &= (r2 >> 27);
| if (r3 != r3) {
0x0000600e bne.w 0x6760 | goto label_85;
| }
0x00006012 ldr.w r3, [r4, 0x154] | r3 = *((r4 + 0x154));
0x00006016 cmp r3, 0 |
| if (r3 == 0) {
0x00006018 beq.w 0x64aa | goto label_86;
| }
0x0000601c ldr r2, [r4] | r2 = *(r4);
0x0000601e add r3, r2 | r3 += r2;
0x00006020 str.w r3, [r4, 0x154] | __asm ("str.w r3, [r4, 0x154]");
| label_25:
0x00006024 ldr.w r2, [pc, 0x5cc] | r2 = *(0x000065f4);
0x00006028 ldr r1, [r7, 0x30] | r1 = var_30h;
0x0000602a add r2, pc | r2 += pc;
0x0000602c ldr.w r3, [r2, 0x878] | r3 = *((r2 + 0x878));
0x00006030 bic.w r3, r1, r3 | r3 = BIT_MASK (r1, r3);
0x00006034 lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00006036 bmi.w 0x657c | goto label_87;
| }
| label_33:
0x0000603a ldr.w r3, [r4, 0x230] | r3 = *((r4 + 0x230));
| if (r3 != 0) {
0x0000603e cbz r3, 0x6048 |
0x00006040 ldr r2, [r4] | r2 = *(r4);
0x00006042 add r3, r2 | r3 += r2;
0x00006044 str.w r3, [r4, 0x230] | __asm ("str.w r3, [r4, 0x230]");
| }
0x00006048 ldr.w r2, [r4, 0x154] | r2 = *((r4 + 0x154));
0x0000604c ldrh.w r6, [r4, 0x15c] | r6 = *((r4 + 0x15c));
0x00006050 add.w r6, r2, r6, lsl 5 | r6 = r2 + (r6 << 5);
0x00006054 cmp r2, r6 |
| if (r2 == r6) {
0x00006056 beq.w 0x6190 | goto label_88;
| }
0x0000605a movw r5, 0xe553 |
0x0000605e ldr.w r8, [r7, 0x40] | r8 = var_40h;
0x00006062 movt r5, 0x6474 | r5 = 0x6474e553;
0x00006066 b 0x606e |
| while (r3 != r5) {
| label_9:
0x00006068 cmp r2, r6 |
| if (r2 == r6) {
0x0000606a beq.w 0x6190 | goto label_88;
| }
0x0000606e ldr r3, [r6, -0x20]! | r3 = *((r6 -= 0x20));
0x00006072 cmp r3, r5 |
0x00006074 bne 0x6068 |
| }
0x00006076 mov r2, r6 | r2 = r6;
0x00006078 mov r1, r8 | r1 = r8;
0x0000607a mov r0, r4 | r0 = r4;
0x0000607c bl 0x596c | fcn_0000596c (r0, r1);
0x00006080 ldr.w r2, [r4, 0x154] | r2 = *((r4 + 0x154));
0x00006084 b 0x6068 | goto label_9;
| label_58:
0x00006086 ldr r1, [r7, 0x24] | r1 = *((r7 + 0x24));
0x00006088 ldr r2, [r5, 0x10] | r2 = *((r5 + 0x10));
0x0000608a ldr r3, [r1, 0x20] | r3 = *((r1 + 0x20));
0x0000608c cmp r2, r3 |
| if (r2 > r3) {
0x0000608e bhi.w 0x5bc0 | goto label_10;
| }
0x00006092 ldrh r0, [r1, 0x30] | r0 = *((r1 + 0x30));
0x00006094 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00006096 ldr.w ip, [r5] | ip = *(r5);
0x0000609a add.w r0, r3, r0, lsl 5 | r0 = r3 + (r0 << 5);
0x0000609e add r1, r2 | r1 += r2;
0x000060a0 sub.w r1, r1, ip | r1 -= ip;
0x000060a4 cmp r1, r0 |
0x000060a6 ittt hs |
| if (r1 < r0) {
0x000060a8 addhs r3, ip | r3 += ip;
| }
| if (r1 < r0) {
0x000060aa subhs r3, r3, r2 | r3 -= r2;
| }
| if (r1 < r0) {
0x000060ac strhs r3, [r4, 0x154] | *((r4 + 0x154)) = r3;
| }
0x000060b0 b 0x5bc0 | goto label_10;
| label_52:
0x000060b2 sub.w sp, sp, r5 |
0x000060b6 mov r2, r5 | r2 = r5;
0x000060b8 str r3, [sp] | *(sp) = r3;
0x000060ba add r3, sp, 0x28 | r3 += var_28h;
0x000060bc str r3, [r7, 0x1c] | var_1ch = r3;
0x000060be mov r1, r3 | r1 = r3;
0x000060c0 movs r3, 0 | r3 = 0;
0x000060c2 str r3, [sp, 4] | var_4h = r3;
0x000060c4 ldr r0, [r7, 0x40] | r0 = var_40h;
0x000060c6 bl 0x14914 | r0 = fcn_00014914 (r0);
0x000060ca cmp r0, r5 |
| if (r0 == r5) {
0x000060cc beq.w 0x5a86 | goto label_11;
| }
0x000060d0 ldr.w r5, [pc, 0x524] |
0x000060d4 add r5, pc | r5 = 0xc6d0;
0x000060d6 b 0x6572 | goto label_44;
| label_63:
0x000060d8 ldr.w r5, [pc, 0x520] |
0x000060dc add r5, pc | r5 = 0xc6dc;
| do {
| label_18:
0x000060de ldr.w sp, [r7, 8] | sp = *((r7 + 8));
| label_32:
0x000060e2 ldr r3, [r7, 0x40] | r3 = var_40h;
0x000060e4 adds r3, 1 | r3++;
| if (r3 != 1) {
0x000060e6 beq 0x60ee |
0x000060e8 ldr r0, [r7, 0x40] | r0 = var_40h;
0x000060ea bl 0x14720 | fcn_00014720 ();
| }
0x000060ee ldr.w r0, [r4, 0x1b4] | r0 = *((r4 + 0x1b4));
0x000060f2 cmp r0, 0 |
| if (r0 != 0) {
0x000060f4 bne 0x6184 | goto label_89;
| }
| label_12:
0x000060f6 ldr.w r0, [r4, 0x1b0] | r0 = *((r4 + 0x1b0));
0x000060fa adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 != r0) {
0x000060fc beq 0x6108 |
0x000060fe ldr.w r3, [pc, 0x500] | r3 = *(0x00006600);
0x00006102 add r3, pc | r3 += pc;
0x00006104 ldr r3, [r3] | r3 = *(r3);
0x00006106 blx r3 | uint32_t (*r3)(uint32_t) (r3);
| }
0x00006108 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x0000610a ldr r3, [r0, 8] | r3 = *((r0 + 8));
| if (r3 == 0) {
0x0000610c cbnz r3, 0x6118 |
0x0000610e ldr.w r3, [pc, 0x4f4] | r3 = *(0x00006604);
0x00006112 add r3, pc | r3 += pc;
0x00006114 ldr r3, [r3] | r3 = *(r3);
0x00006116 blx r3 | uint32_t (*r3)(uint32_t) (r3);
| }
0x00006118 ldrsb.w r3, [r4, 0x198] | r3 = *((r4 + 0x198));
0x0000611c cmp r3, 0 |
| if (r3 < 0) {
0x0000611e bge 0x612e |
0x00006120 ldr.w r3, [pc, 0x4e4] | r3 = *(0x00006608);
0x00006124 ldr.w r0, [r4, 0x154] | r0 = *((r4 + 0x154));
0x00006128 add r3, pc | r3 += pc;
0x0000612a ldr r3, [r3] | r3 = *(r3);
0x0000612c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| }
| label_14:
0x0000612e mov r0, r4 | r0 = r4;
0x00006130 ldr.w r4, [pc, 0x4d8] | r4 = *(0x0000660c);
0x00006134 add r4, pc | r4 += pc;
0x00006136 ldr r3, [r4] | r3 = *(r4);
0x00006138 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000613a ldr r3, [r4] | r3 = *(r4);
0x0000613c ldr.w r0, [r7, 0xf0] | r0 = *((r7 + 0xf0));
0x00006140 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00006142 ldr r3, [r7, 0x14] | r3 = var_14h;
| if (r3 != 0) {
0x00006144 cbz r3, 0x6150 |
0x00006146 ldr r2, [r7, 0x2c] | r2 = var_2ch;
0x00006148 movs r3, 0 | r3 = 0;
0x0000614a str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x0000614c bl 0xbdec | dl_debug_state ();
| }
| label_31:
0x00006150 ldr r1, [r7, 0x38] | r1 = var_38h;
0x00006152 mov r3, r5 | r3 = r5;
0x00006154 ldr r0, [r7, 0x20] | r0 = var_20h;
0x00006156 movs r2, 0 | r2 = 0;
0x00006158 blx 0x9f4 | fcn_000009f4 ();
| label_47:
0x0000615c ldr.w r3, [pc, 0x4b0] | r3 = *(0x00006610);
0x00006160 movs r4, 0 | r4 = 0;
0x00006162 ldr.w r0, [r7, 0xf0] | r0 = *((r7 + 0xf0));
0x00006166 add r3, pc | r3 += pc;
0x00006168 ldr r3, [r3] | r3 = *(r3);
0x0000616a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000616c ldr r0, [r7, 0x40] | r0 = var_40h;
0x0000616e bl 0x14720 | fcn_00014720 ();
0x00006172 mov r0, r4 | r0 = r4;
0x00006174 adds r7, 0xcc | r7 += 0xcc;
0x00006176 mov sp, r7 |
0x00006178 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_64:
0x0000617c ldr.w r5, [pc, 0x494] |
0x00006180 add r5, pc | r5 = 0xc798;
0x00006182 b 0x60de |
| } while (1);
| label_89:
0x00006184 ldr.w r1, [r4, 0x1b8] | r1 = *((r4 + 0x1b8));
0x00006188 subs r1, r1, r0 | r1 -= r0;
0x0000618a bl 0x14ae0 | fcn_00014ae0 (r0);
0x0000618e b 0x60f6 | goto label_12;
| label_88:
0x00006190 ldr r0, [r7, 0x40] | r0 = var_40h;
0x00006192 bl 0x14720 | r0 = fcn_00014720 ();
0x00006196 cmp r0, 0 |
| if (r0 != 0) {
0x00006198 bne.w 0x656e | goto label_90;
| }
0x0000619c ldr r3, [r7, 4] | r3 = var_bp_4h;
0x0000619e cmp r3, 2 |
| if (r3 == 2) {
0x000061a0 beq.w 0x6486 | goto label_91;
| }
| label_24:
0x000061a4 ldr.w r3, [pc, 0x470] | r3 = *(0x00006618);
0x000061a8 ldr.w r1, [r4, 0x158] | r1 = *((r4 + 0x158));
0x000061ac ldr r0, [r4] | r0 = *(r4);
0x000061ae add r3, pc | r3 += pc;
0x000061b0 ldr r3, [r3] | r3 = *(r3);
0x000061b2 add r1, r0 | r1 += r0;
0x000061b4 str.w r1, [r4, 0x158] | __asm ("str.w r1, [r4, 0x158]");
0x000061b8 lsls r5, r3, 0x19 | r5 = r3 << 0x19;
| if (r5 < r3) {
0x000061ba bmi.w 0x669c | goto label_92;
| }
| label_35:
0x000061be mov r0, r4 | r0 = r4;
0x000061c0 bl 0x8850 | fcn_00008850 (r0);
0x000061c4 ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x000061c8 lsls r0, r3, 0x1c | r0 = r3 << 0x1c;
| if (r0 >= r3) {
0x000061ca bmi 0x6202 |
0x000061cc ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
| if (r3 == 0) {
0x000061ce cbz r3, 0x6202 | goto label_93;
| }
0x000061d0 ldr.w r1, [r4, 0x1d4] | r1 = *((r4 + 0x1d4));
0x000061d4 add.w r3, r4, 0x160 | r3 = r4 + 0x160;
0x000061d8 ldr r2, [r1] | r2 = *(r1);
0x000061da cmp r2, r3 |
| if (r2 == r3) {
0x000061dc beq 0x6202 | goto label_93;
| }
0x000061de ldr.w r3, [r4, 0x1d0] | r3 = *((r4 + 0x1d0));
0x000061e2 movs r0, 1 | r0 = 1;
0x000061e4 ldr.w r2, [r4, 0x168] | r2 = *((r4 + 0x168));
0x000061e8 subs r3, 1 | r3--;
0x000061ea str r4, [r2] | *(r2) = r4;
0x000061ec lsls r2, r3, 2 | r2 = r3 << 2;
0x000061ee str.w r0, [r4, 0x16c] | __asm ("str.w r0, [r4, 0x16c]");
0x000061f2 adds r0, r1, 4 | r0 = r1 + 4;
0x000061f4 blx 0x15a80 | fcn_00015a80 (r0, r1);
0x000061f8 ldr.w r3, [r4, 0x1d4] | r3 = *((r4 + 0x1d4));
0x000061fc add.w r2, r4, 0x168 | r2 = r4 + 0x168;
0x00006200 str r2, [r3] | *(r3) = r2;
| }
| label_93:
0x00006202 ldr.w r3, [r4, 0x20c] | r3 = *((r4 + 0x20c));
0x00006206 lsls r1, r3, 0x1a | r1 = r3 << 0x1a;
| if (r1 < r3) {
0x00006208 bmi.w 0x6322 | goto label_94;
| }
| label_15:
0x0000620c add.w r3, r7, 0x48 | r3 += var_48h;
0x00006210 add.w r5, r4, 0x1e0 | r5 = r4 + 0x1e0;
0x00006214 ldm r3, {r0, r1, r2, r3} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
| r3 = *((r3 + 12));
0x00006216 stm.w r5, {r0, r1, r2, r3} | *(r5) = r0;
| *((r5 + 4)) = r1;
| *((r5 + 8)) = r2;
| *((r5 + 12)) = r3;
0x0000621a ldr r3, [r7, 0x10] | r3 = var_bp_10h;
0x0000621c cmp r3, 0 |
| if (r3 != 0) {
0x0000621e bne.w 0x66c8 | goto label_95;
| }
| label_36:
0x00006222 ldr r3, [pc, 0x3f8] |
0x00006224 add r3, pc |
0x00006226 ldr.w r3, [r3, 0x17c] | r3 = *(0xc9c2);
0x0000622a cmp r3, 0 |
| if (r3 != 0) {
0x0000622c bne.w 0x6684 | goto label_96;
| }
| label_34:
0x00006230 ldr r5, [pc, 0x3ec] |
0x00006232 movs r3, 0x54 | r3 = 0x54;
0x00006234 ldr.w r2, [r7, 0x104] | r2 = *((r7 + 0x104));
0x00006238 add r5, pc | r5 = 0xc85c;
0x0000623a mla r5, r3, r2, r5 | __asm ("mla r5, r3, r2, r5");
0x0000623e ldr r3, [r5, 0x14] | r3 = *(0xc870);
0x00006240 cmp r3, 0 |
| if (r3 == 0) {
0x00006242 beq.w 0x6532 | goto label_97;
| }
| label_29:
0x00006246 ldr.w r3, [r4, 0x238] | r3 = *((r4 + 0x238));
| if (r3 != 0) {
0x0000624a cbz r3, 0x6260 |
0x0000624c ldrb.w r3, [r4, 0x198] | r3 = *((r4 + 0x198));
0x00006250 and r3, r3, 3 | r3 &= 3;
0x00006254 cmp r3, 1 |
| if (r3 != 1) {
0x00006256 bne.w 0x66f0 | goto label_98;
| }
| label_39:
0x0000625a mov r0, r4 | r0 = r4;
0x0000625c bl 0xd3e0 | fcn_0000d3e0 (r0);
| }
| label_40:
0x00006260 ldr r5, [pc, 0x3c0] | r5 = *(0x6624);
0x00006262 mov r0, r4 | r0 = r4;
0x00006264 ldr.w r1, [r7, 0x104] | r1 = *((r7 + 0x104));
0x00006268 bl 0x88cc | fcn_000088cc (r0, r1);
0x0000626a invalid |
0x0000626e ldr.w r3, [r5, 0x1dc] | r3 = *(0x6800);
0x00006272 cmp r3, 0 |
| if (r3 == 0) {
0x00006274 beq.w 0x5e20 | goto label_7;
| }
0x00006278 ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0000627a movs r2, 0x54 | r2 = 0x54;
0x0000627c ldr.w r8, [pc, 0x3a8] | r8 = *(0x00006628);
0x00006280 mul r3, r2, r3 | r3 = r2 * r3;
0x00006284 add r8, pc | r8 += pc;
0x00006286 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0000628a ldrb.w r3, [r3, 0x199] | r3 = *((r3 + 0x199));
0x0000628e ands r3, r3, 8 | r3 &= 8;
| if (r3 != r3) {
0x00006292 bne.w 0x5e20 | goto label_7;
| }
0x00006296 mov r6, r3 | r6 = r3;
0x00006298 ldr r3, [pc, 0x390] |
0x0000629a ldr.w sb, [r5, 0x1d8] | sb = *((r5 + 0x1d8));
0x0000629e add.w r8, r8, 0x7f8 | r8 += 0x7f8;
0x000062a2 add.w sl, r4, 0x260 | sl = r4 + 0x260;
0x000062a6 add r3, pc |
0x000062a8 add.w r3, r3, 0x598 | r3 = 0xce6e;
0x000062ac str r3, [r7, 0x44] | var_44h = r3;
| do {
0x000062ae ldr.w r3, [sb, 8] | r3 = *((sb + 8));
| if (r3 != 0) {
0x000062b2 cbz r3, 0x62e4 |
0x000062b4 ldr r2, [r7, 0x44] | r2 = var_44h;
0x000062b6 mov r0, r4 | r0 = r4;
0x000062b8 ldr.w r1, [r7, 0x104] | r1 = *((r7 + 0x104));
0x000062bc cmp r4, r2 |
0x000062be ite ne |
| if (r4 == r2) {
0x000062c0 movne fp, sl |
| }
| if (r4 != r2) {
0x000062c2 moveq fp, r8 |
| }
0x000062c4 mov r2, fp | r2 = fp;
0x000062c6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x000062c8 ldrb.w r3, [r4, 0x199] | r3 = *((r4 + 0x199));
0x000062cc str.w r0, [fp, 4] | __asm ("str.w r0, [var_bp_4h]");
0x000062d0 ubfx r2, r3, 4, 1 | r2 = (r3 >> 4) & ((1 << 1) - 1);
0x000062d4 cmp r0, 0 |
0x000062d6 it ne |
| if (r0 == 0) {
0x000062d8 orrne r2, r2, 1 | r2 |= 1;
| }
0x000062dc bfi r3, r2, 4, 1 | value_0 = BIT_MASK (4, 1);
| value_1 = r2 & value_0;
| value_0 = ~value_0;
| r3 &= value_0;
| r3 |= value_1;
0x000062e0 strb.w r3, [r4, 0x199] | *((r4 + 0x199)) = r3;
| }
0x000062e4 ldr.w r3, [r5, 0x1dc] | r3 = *((r5 + 0x1dc));
0x000062e8 adds r6, 1 | r6++;
0x000062ea ldr.w sb, [sb, 0x20] | sb = *((sb + 0x20));
0x000062ee add.w r8, r8, 8 | r8 += 8;
0x000062f2 add.w sl, sl, 8 | sl += 8;
0x000062f6 cmp r3, r6 |
0x000062f8 bhi 0x62ae |
| } while (r3 > r6);
0x000062fa b 0x5e20 | goto label_7;
| label_48:
0x000062fc ldr r0, [pc, 0x330] |
0x000062fe ldr.w r2, [r7, 0x104] | r2 = *((r7 + 0x104));
0x00006302 ldr r1, [r7, 0x38] | r1 = var_38h;
0x00006304 add r0, pc | r0 = 0xc938;
0x00006306 bl 0xc1f0 | fcn_0000c1f0 ();
0x0000630a b.w 0x5a28 | goto label_13;
| label_51:
0x0000630e ldr r3, [pc, 0x324] |
0x00006310 add r3, pc |
0x00006312 ldr r3, [r3] | r3 = *(0xc94a);
0x00006314 str r3, [r7, 0x20] | var_20h = r3;
0x00006316 ldr r3, [r7, 0x40] | r3 = var_40h;
0x00006318 adds r3, 1 | r3++;
| if (r3 != 1) {
0x0000631a bne 0x63ba | goto label_99;
| }
0x0000631c ldr r5, [pc, 0x318] |
0x0000631e add r5, pc | r5 = 0xc95a;
0x00006320 b 0x612e | goto label_14;
| label_94:
0x00006322 ldr r3, [pc, 0x318] |
0x00006324 add r3, pc | r3 = 0xc966;
0x00006326 str.w r4, [r3, 0x580] | __asm ("str.w r4, [r3, 0x580]");
0x0000632a b 0x620c | goto label_15;
| label_78:
0x0000632c ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
| if (r3 != 0) {
0x0000632e cbz r3, 0x6336 |
0x00006330 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00006332 add r2, sl | r2 += sl;
0x00006334 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00006336 ldr r3, [r4, 0x2c] | r3 = *((r4 + 0x2c));
| if (r3 != 0) {
0x00006338 cbz r3, 0x6340 |
0x0000633a ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0000633c add r2, sl | r2 += sl;
0x0000633e str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00006340 ldr r3, [r4, 0x34] | r3 = *((r4 + 0x34));
| if (r3 != 0) {
0x00006342 cbz r3, 0x634a |
0x00006344 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00006346 add r2, sl | r2 += sl;
0x00006348 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x0000634a ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
| if (r3 != 0) {
0x0000634c cbz r3, 0x6354 |
0x0000634e ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00006350 add r2, sl | r2 += sl;
0x00006352 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00006354 ldr r3, [r4, 0x3c] | r3 = *((r4 + 0x3c));
| if (r3 != 0) {
0x00006356 cbz r3, 0x635e |
0x00006358 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0000635a add r2, sl | r2 += sl;
0x0000635c str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x0000635e ldr r3, [r4, 0x64] | r3 = *((r4 + 0x64));
| if (r3 != 0) {
0x00006360 cbz r3, 0x6368 |
0x00006362 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00006364 add r2, sl | r2 += sl;
0x00006366 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00006368 ldr r3, [r4, 0x7c] | r3 = *((r4 + 0x7c));
| if (r3 != 0) {
0x0000636a cbz r3, 0x6372 |
0x0000636c ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0000636e add r2, sl | r2 += sl;
0x00006370 str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x00006372 ldr.w r3, [r4, 0xe8] | r3 = *((r4 + 0xe8));
| if (r3 != 0) {
0x00006376 cbz r3, 0x637e |
0x00006378 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0000637a add r2, sl | r2 += sl;
0x0000637c str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
0x0000637e ldr.w r3, [r4, 0x150] | r3 = *((r4 + 0x150));
0x00006382 cmp r3, 0 |
| if (r3 == 0) {
0x00006384 beq.w 0x5f66 | goto label_16;
| }
0x00006388 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x0000638a add r2, sl | r2 += sl;
0x0000638c str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0000638e b 0x5f66 | goto label_16;
| label_60:
0x00006390 mov r2, r6 | r2 = r6;
0x00006392 sub.w r1, r3, r8 | r1 = r3 - r8;
0x00006396 movs r6, 0 | r6 = 0;
0x00006398 mov.w r3, -1 | r3 = -1;
0x0000639c strd r3, r6, [sp] | __asm ("strd r3, r6, [sp]");
0x000063a0 mov r0, r8 | r0 = r8;
0x000063a2 movs r3, 0x32 | r3 = 0x32;
0x000063a4 bl 0x14a98 | fcn_00014a98 (r0, r1);
0x000063a8 adds r0, 1 | r0++;
| if (r0 != 1) {
0x000063aa bne.w 0x5c12 | goto label_17;
| }
0x000063ae ldr r5, [pc, 0x290] |
0x000063b0 add r5, pc | r5 = 0xc9f6;
| label_62:
0x000063b2 movs r3, 0 | r3 = 0;
0x000063b4 strd r3, r3, [r4, 0x1b4] | __asm ("strd r3, r3, [r4, 0x1b4]");
0x000063b8 b 0x60de | goto label_18;
| label_99:
0x000063ba ldr r5, [pc, 0x288] |
0x000063bc add r5, pc | r5 = 0xca06;
| label_22:
0x000063be ldr r0, [r7, 0x40] | r0 = var_40h;
0x000063c0 movs r4, 0 | r4 = 0;
0x000063c2 bl 0x14720 | fcn_00014720 ();
0x000063c6 b 0x612e | goto label_14;
| label_65:
0x000063c8 ldr.w r2, [r7, 0x104] | r2 = *((r7 + 0x104));
0x000063cc movs r3, 0x54 | r3 = 0x54;
0x000063ce ldr r6, [pc, 0x278] |
0x000063d0 mul r3, r2, r3 | r3 = r2 * r3;
0x000063d4 add r6, pc | r6 = 0xca22;
0x000063d6 ldr.w sl, [r6, r3] | sl = *(0xca22);
0x000063da ldrb.w r3, [sl, 0x199] | r3 = *((sl + 0x199));
0x000063de lsls r2, r3, 0x1c | r2 = r3 << 0x1c;
| if (r2 < r3) {
0x000063e0 bmi.w 0x5d8e | goto label_19;
| }
0x000063e4 ldr r3, [pc, 0x264] |
0x000063e6 add.w r6, r6, 0x7f8 | r6 += 0x7f8;
0x000063ea ldr.w r8, [r5, 0x1d8] | r8 = *((r5 + 0x1d8));
0x000063ee add.w sb, sl, 0x260 | sb = sl + 0x260;
0x000063f2 add r3, pc | r3 = 0xca42;
0x000063f4 add.w fp, r3, 0x598 |
0x000063f8 mov r3, r4 | r3 = r4;
0x000063fa mov r4, r8 | r4 = r8;
0x000063fc mov r8, r3 | r8 = r3;
| do {
0x000063fe ldr r3, [r4] | r3 = *(r4);
| if (r3 != 0) {
0x00006400 cbz r3, 0x640e |
0x00006402 movs r1, 1 | r1 = 1;
0x00006404 cmp sl, fp |
0x00006406 ite ne |
| if (sl == fp) {
0x00006408 movne r0, sb | r0 = sb;
| }
| if (sl != fp) {
0x0000640a moveq r0, r6 | r0 = r6;
| }
0x0000640c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
0x0000640e ldr.w r3, [r5, 0x1dc] | r3 = *((r5 + 0x1dc));
0x00006412 add.w r8, r8, 1 | r8++;
0x00006416 ldr r4, [r4, 0x20] | r4 = *((r4 + 0x20));
0x00006418 adds r6, 8 | r6 += 8;
0x0000641a add.w sb, sb, 8 | sb += 8;
0x0000641e cmp r3, r8 |
0x00006420 bhi 0x63fe |
| } while (r3 > r8);
0x00006422 b 0x5d8e | goto label_19;
| label_59:
0x00006424 str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x00006426 orr r2, r6, 2 | r2 = r6 | 2;
0x0000642a ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x0000642c ands r0, r3 | r0 &= r3;
0x0000642e bl 0x14b10 | r0 = fcn_00014b10 (r0);
0x00006432 cmp r0, 0 |
0x00006434 ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
| if (r0 < 0) {
0x00006436 blt.w 0x5ec2 | goto label_20;
| }
0x0000643a str r3, [r7, 0x28] | *((r7 + 0x28)) = r3;
0x0000643c ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x0000643e ldr r1, [r7, 0x34] | r1 = *((r7 + 0x34));
0x00006440 sub.w r2, r8, r3 | r2 = r8 - r3;
0x00006444 mov r0, r3 | r0 = r3;
0x00006446 blx 0x15da0 | fcn_00015da0 (r0, r1);
0x0000644a ldr r2, [r7, 0x3c] | r2 = *((r7 + 0x3c));
0x0000644c ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x0000644e ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
0x00006450 mov r2, r6 | r2 = r6;
0x00006452 rsbs r0, r1, 0 | r0 = r1 - ;
0x00006454 ands r0, r3 | r0 &= r3;
0x00006456 bl 0x14b10 | fcn_00014b10 (r0);
0x0000645a ldr r3, [r7, 0x28] | r3 = *((r7 + 0x28));
0x0000645c b.w 0x5c0c | goto label_21;
| label_66:
0x00006460 ldr r5, [pc, 0x1ec] |
0x00006462 add r5, pc | r5 = 0xcab6;
| label_43:
0x00006464 ldr r3, [pc, 0x1ec] |
0x00006466 add r3, pc |
0x00006468 ldr r3, [r3] | r3 = *(0xcabe);
0x0000646a str r3, [r7, 0x20] | var_20h = r3;
0x0000646c ldr r3, [r7, 0x40] | r3 = var_40h;
0x0000646e adds r3, 1 | r3++;
| if (r3 == 1) {
0x00006470 beq 0x655a | goto label_100;
| }
0x00006472 movs r3, 0 | r3 = 0;
0x00006474 str r3, [r7, 0x14] | var_14h = r3;
0x00006476 b 0x63be | goto label_22;
| label_73:
0x00006478 ldr r3, [r7, 4] | r3 = var_bp_4h;
0x0000647a cmp r3, 3 |
| if (r3 == 3) {
0x0000647c beq.w 0x6700 | goto label_101;
| }
| label_74:
0x00006480 ldr.w r2, [r4, 0x20c] | r2 = *((r4 + 0x20c));
0x00006484 b 0x5ff4 | goto label_23;
| label_91:
0x00006486 ldrb.w r3, [r4, 0x198] | r3 = *((r4 + 0x198));
0x0000648a lsls r6, r3, 0x1e | r6 = r3 << 0x1e;
| if (r6 == r3) {
0x0000648c beq.w 0x61a4 | goto label_24;
| }
0x00006490 ldr r3, [pc, 0x1c4] |
0x00006492 movw r2, 0x589 | r2 = 0x589;
0x00006496 ldr r1, [pc, 0x1c4] |
0x00006498 ldr r0, [pc, 0x1c4] |
0x0000649a add r3, pc | r3 = 0xcaf6;
0x0000649c add r1, pc | r1 = 0xcafe;
0x0000649e add r0, pc | r0 = 0xcb02;
0x000064a0 bl 0x11f30 | fcn_00011f30 (r0);
| label_53:
0x000064a4 ldr r5, [pc, 0x1bc] |
0x000064a6 add r5, pc | r5 = 0xcb0e;
0x000064a8 b 0x60de | goto label_18;
| label_86:
0x000064aa ldr r5, [r7, 0x24] | r5 = var_24h;
0x000064ac ldr r3, [pc, 0x1b8] |
0x000064ae ldrh r0, [r5, 0x30] | r0 = *((r5 + 0x30));
0x000064b0 add r3, pc |
0x000064b2 ldr r3, [r3] | r3 = *(0xcb1c);
0x000064b4 lsls r0, r0, 5 | r0 <<= 5;
0x000064b6 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000064b8 cmp r0, 0 |
| if (r0 == 0) {
0x000064ba beq.w 0x677c | goto label_102;
| }
0x000064be ldrh r2, [r5, 0x30] | r2 = *((r5 + 0x30));
0x000064c0 ldr r1, [r7, 0x1c] | r1 = var_1ch;
0x000064c2 lsls r2, r2, 5 | r2 <<= 5;
0x000064c4 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x000064c8 ldrb.w r3, [r4, 0x198] | r3 = *((r4 + 0x198));
0x000064cc str.w r0, [r4, 0x154] | __asm ("str.w r0, [r4, 0x154]");
0x000064d0 orr r3, r3, 0x80 | r3 |= 0x80;
0x000064d4 strb.w r3, [r4, 0x198] | *((r4 + 0x198)) = r3;
0x000064d8 b 0x6024 | goto label_25;
| label_71:
0x000064da ldr.w r2, [r4, 0x780] | r2 = *((r4 + 0x780));
0x000064de ldr.w r3, [r4, 0x784] | r3 = *((r4 + 0x784));
0x000064e2 cmp r3, r5 |
0x000064e4 it eq |
| if (r3 != r5) {
0x000064e6 cmpeq r2, r6 | __asm ("cmpeq r2, r6");
| goto label_103;
| }
| if (r3 != r5) {
| label_103:
0x000064e8 bne.w 0x5e4c | goto label_26;
| }
0x000064ec b 0x5e62 | goto label_27;
| label_55:
0x000064ee ldr r3, [r7, 0x18] | r3 = *((r7 + 0x18));
0x000064f0 cmp r3, 0 |
| if (r3 == 0) {
0x000064f2 beq.w 0x675a | goto label_104;
| }
0x000064f6 ldr r3, [r7, 0x34] | r3 = *((r7 + 0x34));
0x000064f8 ldr.w r2, [fp] | r2 = *(fp);
0x000064fc ldrb.w r5, [r4, 0x199] | r5 = *((r4 + 0x199));
0x00006500 eor r1, r3, 1 | r1 = r3 ^ 1;
0x00006504 add.w r3, sl, -1 | r3 = sl + -1;
0x00006508 add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x0000650c bfi r5, r1, 6, 1 | value_2 = BIT_MASK (6, 1);
| value_3 = r1 & value_2;
| value_2 = ~value_2;
| r5 &= value_2;
| r5 |= value_3;
0x00006510 add.w r3, fp, r3, lsl 3 | r3 = fp + (r3 << 3);
0x00006514 ldr r0, [r3, 0xc] | r0 = *((r3 + 0xc));
0x00006516 ldr r3, [r4] | r3 = *(r4);
0x00006518 strb.w r5, [r4, 0x199] | *((r4 + 0x199)) = r5;
0x0000651c mov r5, fp | r5 = fp;
0x0000651e sub.w sb, r0, r2 | sb = r0 - r2;
0x00006522 adds r1, r3, r2 | r1 = r3 + r2;
0x00006524 add r3, r0 | r3 += r0;
0x00006526 str.w r1, [r4, 0x1b4] | __asm ("str.w r1, [r4, 0x1b4]");
0x0000652a str.w r3, [r4, 0x1b8] | __asm ("str.w r3, [r4, 0x1b8]");
0x0000652e b.w 0x5c14 | goto label_28;
| label_97:
0x00006532 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x00006534 cmp r3, 0 |
| if (r3 == 0) {
0x00006536 beq.w 0x6246 | goto label_29;
| }
0x0000653a ldr r2, [r4, 0x34] | r2 = *((r4 + 0x34));
0x0000653c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000653e ldr r1, [pc, 0x12c] |
0x00006540 ldr r0, [r2, 4] | r0 = *((r2 + 4));
0x00006542 add r1, pc | r1 = 0xcbb4;
0x00006544 add r0, r3 | r0 += r3;
0x00006546 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x0000654a cmp r0, 0 |
| if (r0 != 0) {
0x0000654c bne.w 0x6246 | goto label_29;
| }
0x00006550 str r4, [r5, 0x14] | *((r5 + 0x14)) = r4;
0x00006552 b 0x6246 | goto label_29;
| label_83:
0x00006554 ldr.w r2, [r4, 0x20c] | r2 = *((r4 + 0x20c));
0x00006558 b 0x5fea | goto label_30;
| label_100:
0x0000655a ldr r4, [pc, 0x114] |
0x0000655c movs r0, 0 | r0 = 0;
0x0000655e add r4, pc | r4 = 0xcbd4;
0x00006560 ldr r3, [r4] | r3 = *(0xcbd4);
0x00006562 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00006564 ldr r3, [r4] | r3 = *(0xcbd4);
0x00006566 ldr.w r0, [r7, 0xf0] | r0 = *((r7 + 0xf0));
0x00006568 lsls r0, r6, 3 | r0 = r6 << 3;
0x0000656a blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000656c b 0x6150 | goto label_31;
| label_90:
0x0000656e ldr r5, [pc, 0x104] |
0x00006570 add r5, pc | r5 = 0xcbea;
| label_44:
0x00006572 ldr r3, [pc, 0x104] |
0x00006574 add r3, pc |
0x00006576 ldr r3, [r3] | r3 = *(0xcbf2);
0x00006578 str r3, [r7, 0x20] | var_20h = r3;
0x0000657a b 0x60e2 | goto label_32;
| label_87:
0x0000657c ldr.w r3, [r7, 0xfc] | r3 = *((r7 + 0xfc));
0x00006580 and r3, r3, 0x88000000 | r3 &= 0x88000000;
0x00006584 cmp.w r3, -0x80000000 |
| if (r3 == -0x80000000) {
0x00006588 beq.w 0x6706 | goto label_105;
| }
| label_41:
0x0000658c ldr r2, [pc, 0xec] |
0x0000658e add r2, pc | r2 = 0xcc0e;
0x00006590 ldr r3, [r2, 0x1c] | r3 = *(0xcc2a);
0x00006592 orr r3, r3, 7 | r3 |= 7;
0x00006596 str r3, [r2, 0x1c] | *((r2 + 0x1c)) = r3;
| label_42:
0x00006598 ldr.w r0, [r7, 0x100] | r0 = *((r7 + 0x100));
0x0000659c bl 0xdeec | fcn_0000deec (r0);
0x000065a0 str r0, [r7, 0x20] | var_20h = r0;
0x000065a2 cmp r0, 0 |
| if (r0 == 0) {
0x000065a4 beq.w 0x603a | goto label_33;
| }
0x000065a8 ldr r5, [pc, 0xd4] |
0x000065aa add r5, pc | r5 = 0xcc2e;
0x000065ac b 0x60e2 | goto label_32;
| label_96:
0x00006684 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
0x00006686 cmp r3, 0 |
| if (r3 == 0) {
0x00006688 beq.w 0x6246 | goto label_29;
| }
0x0000668c ldr r2, [r4, 0x34] | r2 = *((r4 + 0x34));
0x0000668e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00006690 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x00006692 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00006694 add r1, r3 | r1 += r3;
0x00006696 bl 0x5128 | fcn_00005128 (r0, r1);
0x0000669a b 0x6230 | goto label_34;
| label_92:
0x0000669c ldrh.w r5, [r4, 0x15c] | r5 = *((r4 + 0x15c));
0x000066a0 movs r3, 8 | r3 = 8;
0x000066a2 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x000066a4 strd r3, r5, [sp, 0x1c] | __asm ("strd r3, r5, [sp, 0x1c]");
0x000066a8 ldr.w r5, [r4, 0x154] | r5 = *((r4 + 0x154));
0x000066ac str r0, [sp] | *(sp) = r0;
0x000066ae ldr r0, [pc, 0x130] |
0x000066b0 str r1, [sp, 0x10] | var_10h = r1;
0x000066b2 mov r1, r3 | r1 = r3;
0x000066b4 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x000066b8 add r0, pc | r0 = 0xce9e;
0x000066ba strd r3, r5, [sp, 0x14] | __asm ("strd r3, r5, [sp, 0x14]");
0x000066be str r3, [sp, 0xc] | var_ch = r3;
0x000066c0 str r3, [sp, 4] | var_4h = r3;
0x000066c2 bl 0xc1f0 | fcn_0000c1f0 ();
0x000066c6 b 0x61be | goto label_35;
| label_95:
0x000066c8 ldr r0, [r4, 0x1c] | r0 = *((r4 + 0x1c));
0x000066ca mov r1, r3 | r1 = r3;
0x000066cc bl 0x5128 | fcn_00005128 (r0, r1);
0x000066d0 b 0x6222 | goto label_36;
| label_84:
0x000066d2 bic r1, r3, 0x8000800 | r1 = BIT_MASK (r3, 0x8000800);
0x000066d6 bic r1, r1, 0xe9 | r1 = BIT_MASK (r1, 0xe9);
0x000066da cmp r1, 0 |
| if (r1 == 0) {
0x000066dc beq.w 0x5fda | goto label_37;
| }
0x000066e0 ldr r0, [pc, 0x100] |
0x000066e2 add r0, pc | r0 = 0xceca;
0x000066e4 bl 0xc1f0 | fcn_0000c1f0 ();
0x000066e8 ldr.w r3, [r4, 0x20c] | r3 = *((r4 + 0x20c));
0x000066ec mov r2, r3 | r2 = r3;
0x000066ee b 0x5fde | goto label_38;
| label_98:
0x000066f0 ldr r3, [pc, 0xf4] |
0x000066f2 add r3, pc |
0x000066f4 ldr.w r3, [r3, 0x884] | r3 = *(0xd762);
0x000066f8 cmp r3, 0 |
| if (r3 != 0) {
0x000066fa bne.w 0x625a | goto label_39;
| }
0x000066fe b 0x6260 | goto label_40;
| label_101:
0x00006700 ldr r5, [pc, 0xe8] |
0x00006702 add r5, pc | r5 = 0xcef2;
0x00006704 b 0x60e2 | goto label_32;
| label_105:
0x00006706 ldr r3, [pc, 0xe8] |
0x00006708 ldr.w r1, [r2, 0x7e8] | r1 = *((r2 + 0x7e8));
0x0000670c ldr r6, [pc, 0xe4] |
0x0000670e add r3, pc | r3 = 0xcf04;
0x00006710 ldr r5, [r3, 0x10] | r5 = *(0xcf14);
0x00006712 ldr.w r3, [r2, 0x598] | r3 = *((r2 + 0x598));
0x00006716 add r6, pc | r6 = 0xcf0e;
0x00006718 ldr.w r2, [r2, 0x7ec] | r2 = *((r2 + 0x7ec));
0x0000671c rsbs r5, r5, 0 | r5 -= ;
0x0000671e add r3, r1 | r3 += r1;
0x00006720 add r3, r2 | r3 += r2;
0x00006722 add.w r2, r6, 0x1c | r2 = r6 + 0x1c;
0x00006726 ands r3, r5 | r3 &= r5;
0x00006728 ands r5, r2 | r5 &= r2;
0x0000672a add.w r2, r6, 0x20 | r2 = r6 + 0x20;
0x0000672e cmp r2, r3 |
0x00006730 sub.w r8, r2, r5 | r8 = r2 - r5;
| if (r2 > r3) {
0x00006734 bhi.w 0x658c | goto label_41;
| }
0x00006738 movs r2, 3 | r2 = 3;
0x0000673a mov r1, r8 | r1 = r8;
0x0000673c mov r0, r5 | r0 = r5;
0x0000673e bl 0x14b10 | r0 = fcn_00014b10 (r0);
0x00006742 cmp r0, 0 |
| if (r0 >= 0) {
0x00006744 blt 0x6776 |
0x00006746 ldr r3, [r6, 0x1c] | r3 = *((r6 + 0x1c));
0x00006748 mov r1, r8 | r1 = r8;
0x0000674a mov r0, r5 | r0 = r5;
0x0000674c movs r2, 1 | r2 = 1;
0x0000674e orr r3, r3, 7 | r3 |= 7;
0x00006752 str r3, [r6, 0x1c] | *((r6 + 0x1c)) = r3;
0x00006754 bl 0x14b10 | fcn_00014b10 (r0);
0x00006758 b 0x6598 | goto label_42;
| label_104:
0x0000675a ldr r5, [pc, 0x9c] |
0x0000675c add r5, pc | r5 = 0xcf5a;
0x0000675e b 0x60de | goto label_18;
| label_85:
0x00006760 lsls r2, r2, 4 | r2 <<= 4;
| if (r2 >= r2) {
0x00006762 bmi 0x6770 |
0x00006764 ldr r5, [pc, 0x94] |
0x00006766 add r5, pc | r5 = 0xcf66;
0x00006768 b 0x60e2 | goto label_32;
| label_72:
0x0000676a ldr r5, [pc, 0x94] |
0x0000676c add r5, pc | r5 = 0xcf72;
0x0000676e b 0x6464 | goto label_43;
| }
0x00006770 ldr r5, [pc, 0x90] |
0x00006772 add r5, pc | r5 = 0xcf7a;
0x00006774 b 0x60e2 | goto label_32;
| }
0x00006776 ldr r5, [pc, 0x90] |
0x00006778 add r5, pc | r5 = 0xcf86;
0x0000677a b 0x6572 | goto label_44;
| label_102:
0x0000677c ldr r5, [pc, 0x8c] |
0x0000677e add r5, pc | r5 = 0xcf8e;
0x00006780 b 0x6572 | goto label_44;
| label_46:
0x00006782 ldr r3, [pc, 0x8c] |
0x00006784 movw r2, 0x3c1 | r2 = 0x3c1;
0x00006788 ldr r1, [pc, 0x88] |
0x0000678a ldr r0, [pc, 0x8c] |
0x0000678c add r3, pc | r3 = 0xcfa2;
0x0000678e add r1, pc | r1 = 0xcfa6;
0x00006790 add r0, pc | r0 = 0xcfae;
0x00006792 bl 0x11f30 | fcn_00011f30 (r0);
| label_80:
0x00006796 ldr r3, [pc, 0x84] |
0x00006798 movs r2, 0x7e | r2 = 0x7e;
0x0000679a ldr r1, [pc, 0x84] |
0x0000679c ldr r0, [pc, 0x84] |
0x0000679e add r3, pc | r3 = 0xcfc0;
0x000067a0 add r1, pc | r1 = 0xcfc6;
0x000067a2 add r0, pc | r0 = 0xcfca;
0x000067a4 bl 0x11f30 | fcn_00011f30 (r0);
| label_79:
0x000067a8 ldr r3, [pc, 0x7c] |
0x000067aa movs r2, 0x78 | r2 = 0x78;
0x000067ac ldr r1, [pc, 0x7c] |
0x000067ae ldr r0, [pc, 0x80] |
0x000067b0 add r3, pc | r3 = 0xcfdc;
0x000067b2 add r1, pc | r1 = 0xcfe2;
0x000067b4 add r0, pc | r0 = 0xcfea;
0x000067b6 bl 0x11f30 | fcn_00011f30 (r0);
| label_50:
0x000067ba ldr r3, [pc, 0x78] |
0x000067bc movw r2, 0x442 | r2 = 0x442;
0x000067c0 ldr r1, [pc, 0x74] |
0x000067c2 ldr r0, [pc, 0x78] |
0x000067c4 add r3, pc | r3 = 0xcffe;
0x000067c6 add r1, pc | r1 = 0xd002;
0x000067c8 add r0, pc | r0 = 0xd00a;
0x000067ca bl 0x11f30 | fcn_00011f30 (r0);
| label_81:
0x000067ce ldr r3, [pc, 0x70] |
0x000067d0 movs r2, 0x82 | r2 = 0x82;
0x000067d2 ldr r1, [pc, 0x70] |
0x000067d4 ldr r0, [pc, 0x70] |
0x000067d6 add r3, pc | r3 = 0xd01c;
0x000067d8 add r1, pc | r1 = 0xd022;
0x000067da add r0, pc | r0 = 0xd026;
0x000067dc bl 0x11f30 | fcn_00011f30 (r0);
0x000067e0 movs r6, 0x5c | r6 = 0x5c;
0x000067e2 movs r1, r0 | r1 = r0;
0x000067e4 adds r6, r2, r6 | r6 = r2 + r6;
0x000067e6 movs r1, r0 | r1 = r0;
0x000067e8 ldr r2, [r3, 0x10] | r2 = *(0xd02c);
0x000067ea movs r2, r0 | r2 = r0;
0x000067ec movs r4, 0x66 | r4 = 0x66;
0x000067ee movs r1, r0 | r1 = r0;
0x000067f0 ldrh r6, [r7, r4] | r6 = *((r7 + r4));
0x000067f2 movs r2, r0 | r2 = r0;
0x000067f4 ldrb r6, [r2, r4] | r6 = *((r2 + r4));
0x000067f6 movs r2, r0 | r2 = r0;
0x000067f8 movs r3, 0x50 | r3 = 0x50;
0x000067fa movs r1, r0 | r1 = r0;
0x000067fc movs r3, 0xde | r3 = 0xde;
0x000067fe movs r1, r0 | r1 = r0;
0x00006800 movs r2, 0x8c | r2 = 0x8c;
0x00006802 movs r1, r0 | r1 = r0;
0x00006804 movs r3, 0x5e | r3 = 0x5e;
0x00006806 movs r1, r0 | r1 = r0;
0x00006808 movs r4, 0x30 | r4 = 0x30;
0x0000680a movs r1, r0 | r1 = r0;
0x0000680c movs r4, 0x9a | r4 = 0x9a;
0x0000680e movs r1, r0 | r1 = r0;
0x00006810 movs r6, 0xec | r6 = 0xec;
0x00006812 movs r1, r0 | r1 = r0;
0x00006814 movs r1, 0x5e | r1 = 0x5e;
0x00006816 movs r1, r0 | r1 = r0;
0x00006818 movs r4, 0xd0 | r4 = 0xd0;
0x0000681a movs r1, r0 | r1 = r0;
0x0000681c subs r6, r1, 4 | r6 = r1 - 4;
0x0000681e movs r1, r0 | r1 = r0;
0x00006820 asrs r0, r7, 0xd | r0 = r7 >> 0xd;
0x00006822 movs r1, r0 | r1 = r0;
0x00006824 adds r2, r4, r2 | r2 = r4 + r2;
0x00006826 movs r1, r0 | r1 = r0;
0x00006828 subs r4, r7, 3 | r4 -= var_3h;
0x0000682a movs r1, r0 | r1 = r0;
0x0000682c asrs r6, r4, 0xd | r6 = r4 >> 0xd;
0x0000682e movs r1, r0 | r1 = r0;
0x00006830 adds r0, r0, r1 | r0 += r1;
0x00006832 movs r1, r0 | r1 = r0;
0x00006834 movs r6, 0xb4 | r6 = 0xb4;
0x00006836 movs r1, r0 | r1 = r0;
0x00006838 movs r1, 0x26 | r1 = 0x26;
0x0000683a movs r1, r0 | r1 = r0;
0x0000683c movs r4, 0xd4 | r4 = 0xd4;
0x0000683e movs r1, r0 | r1 = r0;
0x00006840 subs r6, r2, 3 | r6 = r2 - 3;
0x00006842 movs r1, r0 | r1 = r0;
0x00006844 asrs r0, r0, 0xd | r0 >>= 0xd;
0x00006846 movs r1, r0 | r1 = r0;
0x00006848 asrs r2, r7, 0xd | r2 = r7 >> 0xd;
0x0000684a movs r1, r0 | r1 = 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/ld-linux-armhf.so.3 @ 0x721c */
| #include <stdint.h>
|
; (fcn) fcn.0000721c () | void fcn_0000721c (int16_t arg_18h, int16_t arg_1ch, int16_t arg_20h, int16_t arg_24h, int16_t arg_28h, int16_t arg_2ch, int16_t arg_30h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_20h;
| int16_t var_24h_2;
| int16_t var_28h_2;
| int16_t var_30h_2;
| int16_t var_34h_2;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| int16_t var_b0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000721c push.w {r4, r5, r6, r7, r8, lr} |
0x00007220 mov r7, r3 | r7 = r3;
0x00007222 ldr r6, [sp, 0x1c] | r6 = *(arg_1ch);
0x00007224 mov r8, r1 | r8 = r1;
0x00007226 mov r5, r2 | r5 = r2;
0x00007228 ldr r4, [sp, 0x28] | r4 = *(arg_28h);
0x0000722a ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0000722c ldrb.w lr, [r6, 0xc] |
0x00007230 ldrh r1, [r6, 0xe] | r1 = *((r6 + 0xe));
0x00007232 and lr, lr, 0xf | lr &= 0xf;
0x00007236 cmp r3, 0 |
| if (r3 == 0) {
0x00007238 beq 0x72d8 | goto label_4;
| }
| label_2:
0x0000723a movw ip, 0xfb98 |
0x0000723e ldr r2, [sp, 0x18] | r2 = *(arg_18h);
0x00007240 movt ip, 0xffff | ip = 0xfffffb98;
0x00007244 asr.w ip, ip, lr |
0x00007248 cmp r1, 0 |
0x0000724a ite ne |
| if (r1 == 0) {
0x0000724c movne r2, 0 | r2 = 0;
| }
| if (r1 != 0) {
0x0000724e andeq r2, r2, 1 | r2 &= 1;
| }
0x00007252 and ip, ip, 1 |
0x00007256 orrs.w r2, r2, ip | r2 |= ip;
| if (r2 != r2) {
0x0000725a bne 0x72e6 | goto label_5;
| }
0x0000725c cmp r6, r8 |
| if (r6 != r8) {
0x0000725e beq 0x7270 |
0x00007260 ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x00007262 mov r1, r0 | r1 = r0;
0x00007264 ldr r0, [r6] | r0 = *(r6);
0x00007266 add r0, r3 | r0 += r3;
0x00007268 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x0000726c cmp r0, 0 |
| if (r0 != 0) {
0x0000726e bne 0x72e6 | goto label_5;
| }
| }
0x00007270 ldr.w r3, [r4, 0x1ac] | r3 = *((r4 + 0x1ac));
| if (r5 == 0) {
0x00007274 cbz r5, 0x72a4 | goto label_6;
| }
0x00007276 cmp r3, 0 |
| if (r3 == 0) {
0x00007278 beq 0x72fa | goto label_7;
| }
0x0000727a ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x0000727c ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0000727e ldrh.w r7, [r3, r2, lsl 1] | offset_0 = r2 << 1;
| r7 = *((r3 + offset_0));
0x00007282 ldr.w r2, [r4, 0x174] | r2 = *((r4 + 0x174));
0x00007286 ubfx r3, r7, 0, 0xf | r3 = (r7 >> 0) & ((1 << 0xf) - 1);
0x0000728a lsls r3, r3, 4 | r3 <<= 4;
0x0000728c adds r0, r2, r3 | r0 = r2 + r3;
0x0000728e ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x00007290 cmp r4, r1 |
| if (r4 == r1) {
0x00007292 beq 0x72ec | goto label_8;
| }
| label_3:
0x00007294 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00007296 orrs r4, r3 | r4 |= r3;
| if (r4 != r3) {
0x00007298 bne 0x72e6 | goto label_5;
| }
0x0000729a lsls r2, r7, 0x10 | r2 = r7 << 0x10;
| if (r2 < r7) {
0x0000729c bmi 0x72e6 | goto label_5;
| }
| do {
| label_0:
0x0000729e mov r0, r6 | r0 = r6;
| label_1:
0x000072a0 pop.w {r4, r5, r6, r7, r8, pc} |
| label_6:
0x000072a4 cmp r3, 0 |
0x000072a6 beq 0x729e |
| } while (r3 == 0);
0x000072a8 ldr r2, [sp, 0x20] | r2 = *(arg_20h);
0x000072aa tst.w r7, 2 |
0x000072ae ldrh.w r3, [r3, r2, lsl 1] | offset_1 = r2 << 1;
| r3 = *((r3 + offset_1));
0x000072b2 ite ne |
| if ((r7 & 2) == 0) {
0x000072b4 movne r2, 2 | r2 = 2;
| }
| if ((r7 & 2) != 0) {
0x000072b6 moveq r2, 3 | r2 = 3;
| }
0x000072b8 ubfx r1, r3, 0, 0xf | r1 = (r3 >> 0) & ((1 << 0xf) - 1);
0x000072bc cmp r1, r2 |
| if (r1 < r2) {
0x000072be blt 0x729e | goto label_0;
| }
0x000072c0 lsls r3, r3, 0x10 | r3 <<= 0x10;
| if (r3 < r3) {
0x000072c2 bmi 0x72e6 | goto label_5;
| }
0x000072c4 ldr r3, [sp, 0x30] | r3 = *(arg_30h);
0x000072c6 ldr r1, [sp, 0x30] | r1 = *(arg_30h);
0x000072c8 ldr r3, [r3] | r3 = *(r3);
0x000072ca adds r2, r3, 1 | r2 = r3 + 1;
0x000072cc str r2, [r1] | *(r1) = r2;
| if (r3 != 0) {
0x000072ce cbnz r3, 0x72e6 | goto label_5;
| }
0x000072d0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000072d2 mov r0, r5 | r0 = r5;
0x000072d4 str r6, [r3] | *(r3) = r6;
0x000072d6 b 0x72a0 | goto label_1;
| label_4:
0x000072d8 movw r3, 0xfff1 | r3 = 0xfff1;
0x000072dc cmp.w lr, 6 |
0x000072e0 it ne |
| if (lr == 6) {
0x000072e2 cmpne r1, r3 | __asm ("cmpne r1, r3");
| goto label_9;
| }
| if (lr == 6) {
| label_9:
0x000072e4 beq 0x723a | goto label_2;
| }
| label_5:
0x000072e6 movs r0, 0 | r0 = 0;
0x000072e8 pop.w {r4, r5, r6, r7, r8, pc} |
| label_8:
0x000072ec ldr r0, [r2, r3] | r0 = *((r2 + r3));
0x000072ee ldr r1, [r5] | r1 = *(r5);
0x000072f0 bl 0x14f30 | r0 = fcn_00014f30 (r0, r1, r2, r3);
0x000072f4 cmp r0, 0 |
| if (r0 == 0) {
0x000072f6 beq 0x729e | goto label_0;
| }
0x000072f8 b 0x7294 | goto label_3;
| label_7:
0x000072fa ldr r0, [r5, 0xc] | r0 = *((r5 + 0xc));
0x000072fc cmp r0, 0 |
| if (r0 == 0) {
0x000072fe beq 0x729e | goto label_0;
| }
0x00007300 mov r1, r4 | r1 = r4;
0x00007302 bl 0xc2c0 | r0 = fcn_0000c2c0 (r0, r1);
0x00007306 cmp r0, 0 |
| if (r0 == 0) {
0x00007308 beq 0x729e | goto label_0;
| }
0x0000730a ldr r3, [pc, 0x10] |
0x0000730c movs r2, 0x69 | r2 = 0x69;
0x0000730e ldr r1, [pc, 0x10] |
0x00007310 ldr r0, [pc, 0x10] |
0x00007312 add r3, pc | r3 = 0xe634;
0x00007314 add r1, pc | r1 = 0xe63a;
0x00007316 add r0, pc | r0 = 0xe63e;
0x00007318 bl 0x11f30 | fcn_00011f30 (r0);
0x0000731c subs r2, r1, 5 | r2 = r1 - 5;
0x0000731e movs r1, r0 | r1 = r0;
0x00007320 subs r0, r6, r7 | r0 = r6 - r7;
0x00007322 movs r1, r0 | r1 = r0;
0x00007324 subs r2, r7, r7 | r2 = r7 - r7;
0x00007326 movs r1, r0 | r1 = r0;
| }
r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0x7328).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate
the needed data for the issue.
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0x7ac8 */
| #include <stdint.h>
|
; (fcn) fcn.00007ac8 () | void fcn_00007ac8 (int16_t arg_a8h, int16_t arg_ach, int16_t arg_b0h, int16_t arg_b4h, 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_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| 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_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00007ac8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00007acc sub sp, 0x84 |
0x00007ace str r3, [sp, 0x24] | var_24h = r3;
0x00007ad0 mov r4, r0 | r4 = r0;
0x00007ad2 mov fp, r2 |
0x00007ad4 ldr.w r3, [pc, 0xb48] | r3 = *(0x00008620);
0x00007ad8 ldrd r7, r5, [sp, 0xb0] | __asm ("ldrd r7, r5, [arg_b0h]");
0x00007adc str r1, [sp, 0x20] | var_20h = r1;
0x00007ade add r3, pc | r3 += pc;
0x00007ae0 addw r3, r3, 0x544 | __asm ("addw r3, r3, 0x544");
0x00007ae4 mov sb, r7 | sb = r7;
0x00007ae6 str r3, [sp, 0x3c] | var_3ch = r3;
0x00007ae8 ldr.w r3, [pc, 0xb38] | r3 = *(0x00008624);
0x00007aec add r3, pc | r3 += pc;
0x00007aee str r3, [sp, 0x28] | var_28h = r3;
0x00007af0 ldr.w r3, [pc, 0xb34] | r3 = *(0x00008628);
0x00007af4 add r3, pc | r3 += pc;
0x00007af6 str r3, [sp, 0x34] | var_34h = r3;
0x00007af8 mrc p15, 0, r3, c13, c0, 3 | __asm ("mrc p15, 0, r3, c13, c0, 3");
0x00007afc str r3, [sp, 0x38] | var_38h = r3;
0x00007afe sub.w r3, r3, 0x540 | r3 -= 0x540;
0x00007b02 str r3, [sp, 0x30] | var_30h = r3;
| label_17:
0x00007b04 ldrb r3, [r4] | r3 = *(r4);
0x00007b06 cmp r3, 0 |
| if (r3 == 0) {
0x00007b08 beq.w 0x7cae | goto label_52;
| }
0x00007b0c mov r2, r4 | r2 = r4;
0x00007b0e movw sl, 0x1505 | sl = 0x1505;
| do {
0x00007b12 add.w sl, sl, sl, lsl 5 | sl += (sl << 5);
0x00007b16 add sl, r3 | sl += r3;
0x00007b18 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00007b1c cmp r3, 0 |
0x00007b1e bne 0x7b12 |
| } while (r3 != 0);
| label_1:
0x00007b20 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00007b22 ldr.w r3, [r2, 0x588] | r3 = *((r2 + 0x588));
0x00007b26 adds r3, 1 | r3++;
0x00007b28 str.w r3, [r2, 0x588] | __asm ("str.w r3, [r2, 0x588]");
0x00007b2c movs r3, 0 | r3 = 0;
0x00007b2e strd r3, r3, [sp, 0x64] | __asm ("strd r3, r3, [var_64h]");
0x00007b32 mov.w r3, -1 | r3 = -1;
0x00007b36 str r3, [sp, 0x5c] | var_5ch = r3;
0x00007b38 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
| if (r3 != 0) {
0x00007b3a cbz r3, 0x7b44 |
0x00007b3c tst.w sb, 2 |
| if ((sb & 2) != 0) {
0x00007b40 bne.w 0x83bc | goto label_53;
| }
| }
0x00007b44 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00007b46 ldr r3, [r3] | r3 = *(r3);
0x00007b48 cmp r5, 0 |
| if (r5 != 0) {
0x00007b4a bne.w 0x7d30 | goto label_54;
| }
0x00007b4e cmp r3, 0 |
| if (r3 == 0) {
0x00007b50 beq.w 0x7cb4 | goto label_55;
| }
0x00007b54 str r5, [sp, 0x2c] | var_2ch = r5;
| label_2:
0x00007b56 add.w r8, sp, 0x64 | r8 += var_64h;
0x00007b5a ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00007b5c mov r2, r8 | r2 = r8;
0x00007b5e ldr r6, [sp, 0x24] | r6 = var_24h;
0x00007b60 mov r8, r5 | r8 = r5;
0x00007b62 add r7, sp, 0x5c | r7 += var_5ch;
0x00007b64 mov r5, sl | r5 = sl;
0x00007b66 mov sl, r2 | sl = r2;
0x00007b68 b 0x7b70 |
| while (r0 == 0) {
0x00007b6a ldr r3, [r6, 4]! | r3 = *((r6 += 4));
| if (r3 == 0) {
0x00007b6e cbz r3, 0x7b9c | goto label_56;
| }
0x00007b70 strd r3, r0, [sp, 4] | __asm ("strd r3, r0, [var_4h]");
0x00007b74 mov r2, r7 | r2 = r7;
0x00007b76 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007b78 mov r1, r5 | r1 = r5;
0x00007b7a str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h]");
0x00007b7e mov r0, r4 | r0 = r4;
0x00007b80 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00007b84 str r3, [sp, 0x1c] | var_1ch = r3;
0x00007b86 ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x00007b88 strd r8, r3, [sp, 0x14] | __asm ("strd r8, r3, [var_14h]");
0x00007b8c ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00007b8e str r3, [sp, 0xc] | var_ch = r3;
0x00007b90 ldr.w r3, [fp] | r3 = *(fp);
0x00007b94 bl 0x7328 | r0 = fcn_00007328 (r0, r1, r2, r3, r4, r5);
0x00007b98 cmp r0, 0 |
0x00007b9a beq 0x7b6a |
| }
| label_56:
0x00007b9c ldr r0, [sp, 0x64] | r0 = var_64h;
0x00007b9e mov sl, r5 | sl = r5;
0x00007ba0 ldr.w r3, [fp] | r3 = *(fp);
0x00007ba4 mov r5, r8 | r5 = r8;
0x00007ba6 cmp r0, 0 |
| if (r0 == 0) {
0x00007ba8 beq.w 0x7cb8 | goto label_57;
| }
| if (r3 != 0) {
0x00007bac cbz r3, 0x7bb8 |
0x00007bae ldrb r6, [r3, 0xd] | r6 = *((r3 + 0xd));
0x00007bb0 and r6, r6, 3 | r6 &= 3;
0x00007bb4 cmp r6, 3 |
| if (r6 == 3) {
0x00007bb6 beq 0x7bfa | goto label_58;
| }
| }
0x00007bb8 ldr r6, [sp, 0x68] | r6 = var_68h;
0x00007bba mov.w r8, 0 | r8 = 0;
| label_0:
0x00007bbe ldrb.w r3, [r6, 0x198] | r3 = *((r6 + 0x198));
0x00007bc2 and r3, r3, 3 | r3 &= 3;
0x00007bc6 cmp r3, 2 |
| if (r3 == 2) {
0x00007bc8 beq.w 0x7e64 | goto label_59;
| }
| label_5:
0x00007bcc mov r5, r6 | r5 = r6;
0x00007bce mov sl, r6 | sl = r6;
0x00007bd0 ldr r6, [sp, 0x64] | r6 = var_64h;
| label_6:
0x00007bd2 ldr.w r3, [sl, 0x204] | r3 = *((sl + 0x204));
0x00007bd6 cmp r3, 0 |
| if (r3 == 0) {
0x00007bd8 beq.w 0x7d4a | goto label_60;
| }
| label_3:
0x00007bdc ldr.w r3, [pc, 0xa4c] | r3 = *(0x0000862c);
0x00007be0 movw r2, 0x804 | r2 = 0x804;
0x00007be4 add r3, pc | r3 += pc;
0x00007be6 ldr r3, [r3] | r3 = *(r3);
0x00007be8 tst r3, r2 |
| if ((r3 & r2) != 0) {
0x00007bea bne.w 0x7d52 | goto label_61;
| }
0x00007bec strh r2, [r6, 4] | *((r6 + 4)) = r2;
| label_4:
0x00007bee mov r0, r5 | r0 = r5;
0x00007bf0 str.w r6, [fp] | __asm ("str.w r6, [fp]");
0x00007bf4 add sp, 0x84 |
0x00007bf6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_58:
0x00007bfa ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x00007bfc cmp r2, 1 |
| if (r2 == 1) {
0x00007bfe beq.w 0x7ed2 | goto label_62;
| }
0x00007c02 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00007c04 movs r6, 0 | r6 = 0;
0x00007c06 ldr r1, [r2] | r1 = *(r2);
0x00007c08 strd r6, r6, [sp, 0x74] | __asm ("strd r6, r6, [var_74h]");
0x00007c0c cmp r1, 0 |
| if (r1 == 0) {
0x00007c0e beq.w 0x7ef0 | goto label_63;
| }
0x00007c12 ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x00007c14 str r5, [sp, 0xb4] | *(arg_b4h) = r5;
0x00007c16 mov r5, sb | r5 = sb;
0x00007c18 ldr.w r8, [sp, 0x24] | r8 = var_24h;
0x00007c1c sub.w r2, r2, 4 | r2 -= 4;
0x00007c20 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00007c22 clz r2, r2 | r2 &= r2;
0x00007c24 bl 0x289de2 | void (*0x289de2)(uint32_t, uint32_t) (r0, r2);
0x00007c28 str r0, [sp, 0x2d0] | *((sp + 0x2d0)) = r0;
0x00007c2a lsrs r2, r2, 5 | r2 >>= 5;
0x00007c2c str r2, [sp, 0x40] | var_40h = r2;
0x00007c2e add r2, sp, 0x74 | r2 += var_74h;
0x00007c30 str r2, [sp, 0x44] | var_44h = r2;
0x00007c32 mov r2, r3 | r2 = r3;
0x00007c34 mov r3, r1 | r3 = r1;
0x00007c36 mov r1, r2 | r1 = r2;
0x00007c38 b 0x7c44 |
| while (r0 == 0) {
0x00007c3a ldr r3, [r8, 4]! | r3 = *((r8 += 4));
| if (r3 == 0) {
0x00007c3e cbz r3, 0x7c86 | goto label_64;
| }
0x00007c40 ldr.w r1, [fp] | r1 = *(fp);
0x00007c44 ldrb.w ip, [r1, 0xc] | ip = *((r1 + 0xc));
0x00007c48 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00007c4a strd r3, r0, [sp, 4] | __asm ("strd r3, r0, [var_4h]");
0x00007c4c adds r0, 1 | r0++;
0x00007c4e mov r3, r1 | r3 = r1;
0x00007c50 and r0, ip, 0xf | r0 = ip & 0xf;
0x00007c54 mov r1, sl | r1 = sl;
0x00007c56 cmp r0, 1 |
0x00007c58 ite ne |
| if (r0 == 1) {
0x00007c5a movne r2, 0 | r2 = 0;
| }
| if (r0 != 1) {
0x00007c5c andeq r2, r2, 1 | r2 &= 1;
| }
0x00007c60 str r6, [sp, 0x1c] | var_1ch = r6;
0x00007c62 cmp r2, 0 |
0x00007c64 ldr r2, [sp, 0xa8] | r2 = *(arg_a8h);
0x00007c66 ite ne |
| if (r2 == 0) {
0x00007c68 movne r0, 4 | r0 = 4;
| }
| if (r2 != 0) {
0x00007c6a moveq r0, 1 | r0 = 1;
| }
0x00007c6c str r0, [sp, 0x18] | var_18h = r0;
0x00007c6e mov r0, r4 | r0 = r4;
0x00007c70 str r2, [sp, 0xc] | var_ch = r2;
0x00007c72 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00007c74 str.w sb, [sp, 0x14] | __asm ("str.w sb, [var_14h]");
0x00007c78 str r5, [sp, 0x10] | var_10h = r5;
0x00007c7a str r2, [sp] | *(sp) = r2;
0x00007c7c mov r2, r7 | r2 = r7;
0x00007c7e bl 0x7328 | r0 = fcn_00007328 (r0, r1, r2, r3, r4, r5);
0x00007c82 cmp r0, 0 |
0x00007c84 beq 0x7c3a |
| }
| label_64:
0x00007c86 ldr r3, [sp, 0x74] | r3 = var_74h;
0x00007c88 str.w sb, [sp, 0xb4] | __asm ("str.w sb, [arg_b4h]");
0x00007c8c mov sb, r5 | sb = r5;
0x00007c8e ldr r5, [sp, 0xb4] | r5 = *(arg_b4h);
0x00007c90 cmp r3, 0 |
| if (r3 == 0) {
0x00007c92 beq.w 0x7ef0 | goto label_63;
| }
0x00007c96 ldr r3, [sp, 0x78] | r3 = var_78h;
0x00007c98 ldr r6, [sp, 0x20] | r6 = var_20h;
0x00007c9a cmp r3, r6 |
| if (r3 == r6) {
0x00007c9c beq.w 0x7ef0 | goto label_63;
| }
0x00007ca0 ldr.w r3, [fp] | r3 = *(fp);
0x00007ca4 str r6, [sp, 0x68] | var_68h = r6;
0x00007ca6 str r3, [sp, 0x64] | var_64h = r3;
| label_7:
0x00007ca8 mov.w r8, 1 | r8 = 1;
0x00007cac b 0x7bbe | goto label_0;
| label_52:
0x00007cae movw sl, 0x1505 | sl = 0x1505;
0x00007cb2 b 0x7b20 | goto label_1;
| label_55:
0x00007cb4 ldr.w r3, [fp] | r3 = *(fp);
| if (r3 != 0) {
| label_57:
0x00007cb8 cbz r3, 0x7cc2 |
0x00007cba ldrb r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00007cbc lsrs r3, r3, 4 | r3 >>= 4;
0x00007cbe cmp r3, 2 |
| if (r3 == 2) {
0x00007cc0 beq 0x7d20 | goto label_65;
| }
| }
0x00007cc2 ldr.w r3, [pc, 0x96c] | r3 = *(0x00008630);
0x00007cc6 add r3, pc | r3 += pc;
0x00007cc8 ldr r3, [r3] | r3 = *(r3);
0x00007cca lsls r6, r3, 0x17 | r6 = r3 << 0x17;
| if (r6 >= r3) {
0x00007ccc bmi 0x7d20 |
0x00007cce ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007cd0 cmp r3, 0 |
| if (r3 == 0) {
0x00007cd2 beq.w 0x7fec | goto label_66;
| }
0x00007cd6 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00007cd8 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00007cda ldrb r2, [r1] | r2 = *(r1);
0x00007cdc cmp r3, 0 |
| if (r3 == 0) {
0x00007cde beq.w 0x8082 | goto label_67;
| }
0x00007ce2 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00007ce4 ldr r3, [r3] | r3 = *(r3);
0x00007ce6 cmp r3, 0 |
| if (r3 == 0) {
0x00007ce8 beq.w 0x818a | goto label_68;
| }
0x00007cec ldr.w r0, [pc, 0x944] |
0x00007cf0 add r0, pc | r0 = 0x10328;
| label_12:
0x00007cf2 cmp r2, 0 |
| if (r2 == 0) {
0x00007cf4 beq.w 0x8004 | goto label_21;
| }
| label_11:
0x00007cf8 ldr.w r2, [pc, 0x93c] |
0x00007cfc str r3, [sp, 4] | var_4h = r3;
0x00007cfe mov r3, r4 | r3 = r4;
0x00007d00 add r4, sp, 0x74 | r4 += var_74h;
0x00007d02 str r0, [sp] | *(sp) = r0;
0x00007d04 add r2, pc | r2 = 0x10340;
0x00007d06 mov r0, r4 | r0 = r4;
0x00007d08 bl 0xfd5c | dl_exception_create_format ();
0x00007d0c ldr.w r2, [pc, 0x92c] |
0x00007d10 movs r0, 0 | r0 = 0;
0x00007d12 mov r1, r4 | r1 = r4;
0x00007d14 add r2, pc | r2 = 0x10354;
0x00007d16 bl 0x123f4 | fcn_000123f4 (r0, r1, r2, r3, r4);
0x00007d1a mov r0, r4 | r0 = r4;
0x00007d1c bl 0xff7c | dl_exception_free ();
| }
| label_65:
0x00007d20 movs r6, 0 | r6 = 0;
0x00007d22 mov r5, r6 | r5 = r6;
0x00007d24 str.w r6, [fp] | __asm ("str.w r6, [fp]");
0x00007d28 mov r0, r5 | r0 = r5;
0x00007d2a add sp, 0x84 |
0x00007d2c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_54:
0x00007d30 ldr r2, [r3] | r2 = *(r3);
0x00007d32 ldr r0, [r2] | r0 = *(r2);
0x00007d34 cmp r5, r0 |
| if (r5 == r0) {
0x00007d36 beq.w 0x8030 | goto label_69;
| }
0x00007d3a movs r1, 0 | r1 = 0;
| do {
0x00007d3c ldr r0, [r2, 4]! | r0 = *((r2 += 4));
0x00007d40 adds r1, 1 | r1++;
0x00007d42 cmp r0, r5 |
0x00007d44 bne 0x7d3c |
| } while (r0 != r5);
0x00007d46 str r1, [sp, 0x2c] | var_2ch = r1;
0x00007d48 b 0x7b56 | goto label_2;
| label_60:
0x00007d4a movs r3, 1 | r3 = 1;
0x00007d4c str.w r3, [sl, 0x204] | __asm ("str.w r3, [sl, 0x204]");
0x00007d50 b 0x7bdc | goto label_3;
| label_61:
0x00007d52 lsls r2, r3, 0x1d | r2 = r3 << 0x1d;
| if (r2 < r3) {
0x00007d54 bpl 0x7dc4 |
0x00007d56 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007d58 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00007d5a ldrb r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x00007d5c cbnz r3, 0x7d6e |
0x00007d5e ldr.w r3, [pc, 0x8e0] | r3 = *(0x00008640);
0x00007d62 add r3, pc | r3 += pc;
0x00007d64 ldr r3, [r3] | r3 = *(r3);
0x00007d66 ldr r1, [r3] | r1 = *(r3);
0x00007d68 cmp r1, 0 |
| if (r1 == 0) {
0x00007d6a beq.w 0x80e2 | goto label_70;
| }
| }
| label_15:
0x00007d6e ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00007d70 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007d72 ldrb r0, [r3] | r0 = *(r3);
0x00007d74 ldr r2, [r2, 0x18] | r2 = *((r2 + 0x18));
| if (r0 == 0) {
0x00007d76 cbnz r0, 0x7d88 |
0x00007d78 ldr.w r3, [pc, 0x8c8] | r3 = *(0x00008644);
0x00007d7c add r3, pc | r3 += pc;
0x00007d7e ldr r3, [r3] | r3 = *(r3);
0x00007d80 ldr r3, [r3] | r3 = *(r3);
0x00007d82 cmp r3, 0 |
| if (r3 == 0) {
0x00007d84 beq.w 0x80ea | goto label_71;
| }
| }
| label_16:
0x00007d88 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x00007d8a cmp.w r8, 0 |
| if (r8 != 0) {
0x00007d8e bne.w 0x7fe4 | goto label_72;
| }
0x00007d92 ldr.w r7, [pc, 0x8b4] | r7 = *(0x00008648);
0x00007d96 add r7, pc | r7 += pc;
| label_10:
0x00007d98 strd r0, r7, [sp] | __asm ("strd r0, r7, [sp]");
0x00007d9c ldr.w r0, [pc, 0x8ac] | r0 = *(0x0000864c);
0x00007da0 str r4, [sp, 8] | var_8h = r4;
0x00007da2 add r0, pc | r0 += pc;
0x00007da4 bl 0xc1f0 | fcn_0000c1f0 ();
0x00007da8 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00007daa cmp r3, 0 |
| if (r3 == 0) {
0x00007dac beq.w 0x801c | goto label_73;
| }
0x00007db0 ldr.w r0, [pc, 0x89c] | r0 = *(0x00008650);
0x00007db4 ldr r1, [r3] | r1 = *(r3);
0x00007db6 add r0, pc | r0 += pc;
0x00007db8 bl 0xc218 | fcn_0000c218 ();
0x00007dbc ldr.w r3, [pc, 0x894] | r3 = *(0x00008654);
0x00007dc0 add r3, pc | r3 += pc;
0x00007dc2 ldr r3, [r3] | r3 = *(r3);
| }
0x00007dc4 lsls r3, r3, 0x14 | r3 <<= 0x14;
| if (r3 >= r3) {
0x00007dc6 bpl.w 0x7bee | goto label_4;
| }
0x00007dca ldr.w r3, [pc, 0x88c] | r3 = *(0x00008658);
0x00007dce ldr.w r2, [pc, 0x88c] | r2 = *(0x0000865c);
0x00007dd2 add r3, pc | r3 += pc;
0x00007dd4 ldr.w r3, [r3, 0x188] | r3 = *((r3 + 0x188));
0x00007dd8 add r2, pc | r2 += pc;
0x00007dda ldr r1, [r2] | r1 = *(r2);
0x00007ddc movs r2, 0 | r2 = 0;
0x00007dde strd r2, r2, [sp, 0x6c] | __asm ("strd r2, r2, [var_6ch]");
0x00007de2 cmp r3, 0 |
| if (r3 == 0) {
0x00007de4 beq.w 0x7ef4 | goto label_74;
| }
0x00007de8 cmp r3, r1 |
| if (r3 == r1) {
0x00007dea beq.w 0x7ef4 | goto label_74;
| }
| label_8:
0x00007dee cmp r6, 0 |
| if (r6 == 0) {
0x00007df0 beq.w 0x8036 | goto label_75;
| }
0x00007df4 ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x00007df6 and r3, r3, 3 | r3 &= 3;
0x00007dfa str r3, [sp, 0xac] | *(arg_ach) = r3;
0x00007dfc ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00007dfe and r3, r3, 0xf | r3 &= 0xf;
0x00007e00 lsls r7, r1, 0xc | r7 = r1 << 0xc;
0x00007e02 cmp r3, 6 |
| if (r3 == 6) {
0x00007e04 beq.w 0x8232 | goto label_76;
| }
0x00007e08 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00007e0a beq.w 0x8228 | goto label_77;
| }
0x00007e0e ldr.w r3, [pc, 0x850] | r3 = *(0x00008660);
0x00007e12 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007e14 add r3, pc | r3 += pc;
0x00007e16 ldr.w r3, [r3, 0x188] | r3 = *((r3 + 0x188));
0x00007e1a cmp r2, r3 |
0x00007e1c it ne |
| if (r2 == r3) {
0x00007e1e cmpne r3, 0 | __asm ("cmpne r3, 0");
| goto label_78;
| }
| if (r2 != r3) {
| label_78:
0x00007e20 bne.w 0x7bee | goto label_4;
| }
0x00007e24 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007e26 ldr.w r1, [fp] | r1 = *(fp);
0x00007e2a ldr.w r3, [r3, 0x1b4] | r3 = *((r3 + 0x1b4));
0x00007e2e subs r1, r1, r3 | r1 -= r3;
| label_19:
0x00007e30 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00007e32 str r2, [sp, 0x14] | var_14h = r2;
0x00007e34 movs r2, 8 | r2 = 8;
0x00007e36 str r2, [sp, 0x10] | var_10h = r2;
0x00007e38 ldr.w r0, [r5, 0x1b4] | r0 = *((r5 + 0x1b4));
0x00007e3c str r1, [sp, 4] | var_4h = r1;
0x00007e3e ldr.w r1, [pc, 0x824] | r1 = *(0x00008664);
0x00007e42 strd r2, r0, [sp, 8] | __asm ("strd r2, r0, [var_ch]");
0x00007e46 ldr.w r0, [pc, 0x820] | r0 = *(0x00008668);
0x00007e4a add r1, pc | r1 += pc;
0x00007e4c str r2, [sp] | *(sp) = r2;
0x00007e4e add r0, pc | r0 += pc;
0x00007e50 bl 0xc264 | fcn_0000c264 ();
| label_9:
0x00007e54 ldr.w r0, [pc, 0x814] |
0x00007e58 mov r2, r4 | r2 = r4;
0x00007e5a ldr r1, [sp, 0xac] | r1 = *(arg_ach);
0x00007e5c add r0, pc | r0 = 0x104cc;
0x00007e5e bl 0xc264 | fcn_0000c264 ();
0x00007e62 b 0x7bee | goto label_4;
| label_59:
0x00007e64 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007e66 mvn.w r3, sb | r3 = ~sb;
0x00007e68 lsls r1, r1, 0xc | r1 <<= 0xc;
0x00007e6a and r3, r3, 1 | r3 &= 1;
0x00007e6e cmp r2, r6 |
0x00007e70 it eq |
| if (r2 != r6) {
0x00007e72 orreq r3, r3, 1 | r3 |= 1;
| }
0x00007e76 cmp r3, 0 |
| if (r3 != 0) {
0x00007e78 bne.w 0x7bcc | goto label_5;
| }
0x00007e7c ldrb.w r3, [r6, 0x19b] | r3 = *((r6 + 0x19b));
0x00007e80 cmp r3, 0 |
| if (r3 != 0) {
0x00007e82 bne.w 0x7bcc | goto label_5;
| }
0x00007e86 ands r3, sb, 8 | r3 = sb & 8;
0x00007e8a str r3, [sp, 0x44] | var_44h = r3;
| if (r3 == sb) {
0x00007e8c beq 0x7e98 | goto label_79;
| }
0x00007e8e ldrb.w r3, [r6, 0x19c] | r3 = *((r6 + 0x19c));
0x00007e92 cmp r3, 0 |
| if (r3 != 0) {
0x00007e94 bne.w 0x7bcc | goto label_5;
| }
| label_79:
0x00007e98 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007e9a ldr.w r3, [r2, 0x1fc] | r3 = *((r2 + 0x1fc));
0x00007e9e dmb ish | __asm ("dmb ish");
0x00007ea2 mov r1, r3 | r1 = r3;
0x00007ea4 ldr.w r3, [r2, 0x1f8] | r3 = *((r2 + 0x1f8));
0x00007ea8 mov r2, r1 | r2 = r1;
0x00007eaa str r3, [sp, 0x4c] | var_4ch = r3;
0x00007eac str r2, [sp, 0x48] | var_48h = r2;
0x00007eae cmp r3, 0 |
| if (r3 == 0) {
0x00007eb0 beq.w 0x808c | goto label_80;
| }
0x00007eb4 ldr r3, [r3] | r3 = *(r3);
0x00007eb6 ldr r2, [sp, 0x4c] | r2 = var_4ch;
| if (r3 != 0) {
0x00007eb8 cbnz r3, 0x7ec6 | goto label_81;
| }
0x00007eba b 0x808c | goto label_80;
| do {
0x00007ebc ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x00007ec0 cmp r3, 0 |
| if (r3 == 0) {
0x00007ec2 beq.w 0x808c | goto label_80;
| }
| label_81:
0x00007ec6 cmp r3, r6 |
0x00007ec8 bne 0x7ebc |
| } while (r3 != r6);
| label_13:
0x00007eca mov sl, r6 | sl = r6;
0x00007ecc ldrd r6, r5, [sp, 0x64] | __asm ("ldrd r6, r5, [var_64h]");
0x00007ed0 b 0x7bd2 | goto label_6;
| label_62:
0x00007ed2 mov r6, r3 | r6 = r3;
0x00007ed4 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007ed6 ldr r3, [sp, 0x68] | r3 = var_68h;
0x00007ed8 cmp r3, r2 |
0x00007eda it eq |
| if (r3 != r2) {
0x00007edc moveq r6, r0 | r6 = r0;
| }
| if (r3 != r2) {
0x00007ede beq 0x7ee4 |
0x00007ee0 strd r6, r2, [sp, 0x64] | __asm ("strd r6, r2, [var_64h]");
| }
0x00007ee4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007ee6 mov.w r8, 1 | r8 = 1;
0x00007eea mov r5, r3 | r5 = r3;
0x00007eec mov sl, r3 | sl = r3;
0x00007eee b 0x7bd2 | goto label_6;
| label_63:
0x00007ef0 ldr r6, [sp, 0x68] | r6 = var_68h;
0x00007ef2 b 0x7ca8 | goto label_7;
| label_74:
0x00007ef4 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00007ef6 cmp r2, r1 |
| if (r2 == r1) {
0x00007ef8 beq.w 0x7dee | goto label_8;
| }
0x00007efc ldrb r3, [r4] | r3 = *(r4);
0x00007efe cmp r3, 0 |
| if (r3 == 0) {
0x00007f00 beq.w 0x8320 | goto label_82;
| }
0x00007f04 mov r2, r4 | r2 = r4;
0x00007f06 movw r1, 0x1505 | r1 = 0x1505;
| do {
0x00007f0a add.w r1, r1, r1, lsl 5 | r1 += (r1 << 5);
0x00007f0e add r1, r3 | r1 += r3;
0x00007f10 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x00007f14 cmp r3, 0 |
0x00007f16 bne 0x7f0a |
| } while (r3 != 0);
| label_26:
0x00007f18 ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x00007f1a mov.w sb, 0 | sb = 0;
0x00007f1e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007f20 mov.w r0, -1 | r0 = -1;
0x00007f24 ldr.w r8, [pc, 0x748] | r8 = *(0x00008670);
0x00007f28 add r7, sp, 0x6c | r7 += var_6ch;
0x00007f2a str r2, [sp, 0x18] | var_18h = r2;
0x00007f2c ldr r2, [sp, 0xa8] | r2 = *(arg_a8h);
0x00007f2e str r3, [sp, 0x1c] | var_1ch = r3;
0x00007f30 add r8, pc | r8 += pc;
0x00007f32 str r0, [sp, 0x60] | var_60h = r0;
0x00007f34 mov r0, r4 | r0 = r4;
0x00007f36 str r2, [sp, 0xc] | var_ch = r2;
0x00007f38 add r2, sp, 0x60 | r2 += var_60h;
0x00007f3a ldr.w r3, [r3, 0x1d8] | r3 = *((r3 + 0x1d8));
0x00007f3e strd sb, sb, [sp, 0x10] | __asm ("strd sb, sb, [var_10h]");
0x00007f42 str.w sb, [sp, 8] | __asm ("str.w sb, [var_8h]");
0x00007f46 str r3, [sp, 4] | var_4h = r3;
0x00007f48 str r7, [sp] | *(sp) = r7;
0x00007f4a ldr.w r3, [fp] | r3 = *(fp);
0x00007f4e ldr.w sl, [r8, 0x30] | sl = *((r8 + 0x30));
0x00007f52 str.w sb, [r8, 0x30] | __asm ("str.w sb, [r8, 0x30]");
0x00007f56 strd r1, r2, [sp, 0x24] | __asm ("strd r1, r2, [var_24h]");
0x00007f5a bl 0x7328 | fcn_00007328 (r0, r1, r2, r3, r4, r5);
0x00007f5e ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x00007f60 ldrd r1, r2, [sp, 0x24] | __asm ("ldrd r1, r2, [var_24h]");
0x00007f64 cmp r6, r3 |
| if (r6 == r3) {
0x00007f66 beq.w 0x8198 | goto label_83;
| }
| label_18:
0x00007f6a str.w sl, [r8, 0x30] | __asm ("str.w sl, [r8, 0x30]");
0x00007f6e cmp r6, 0 |
| if (r6 == 0) {
0x00007f70 beq.w 0x80b4 | goto label_84;
| }
0x00007f74 ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x00007f76 and r3, r3, 3 | r3 &= 3;
0x00007f7a str r3, [sp, 0xac] | *(arg_ach) = r3;
0x00007f7c ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00007f7e and r3, r3, 0xf | r3 &= 0xf;
0x00007f82 cmp r3, 6 |
| if (r3 == 6) {
0x00007f84 beq.w 0x83b4 | goto label_85;
| }
0x00007f88 cmp r3, 0xa |
| if (r3 == 0xa) {
0x00007f8a beq.w 0x83d0 | goto label_86;
| }
| label_29:
0x00007f8e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00007f90 ldr.w r1, [fp] | r1 = *(fp);
0x00007f94 ldr.w r3, [r3, 0x1b4] | r3 = *((r3 + 0x1b4));
0x00007f98 subs r1, r1, r3 | r1 -= r3;
0x00007f9a cmp r6, 0 |
| if (r6 == 0) {
0x00007f9c beq.w 0x80c0 | goto label_87;
| }
0x00007fa0 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00007fa2 str r2, [sp, 0x14] | var_14h = r2;
0x00007fa4 movs r2, 8 | r2 = 8;
0x00007fa6 str r2, [sp, 0x10] | var_10h = r2;
0x00007fa8 ldr.w r0, [r5, 0x1b4] | r0 = *((r5 + 0x1b4));
0x00007fac str r1, [sp, 4] | var_4h = r1;
0x00007fae ldr.w r1, [pc, 0x6c4] | r1 = *(0x00008674);
0x00007fb2 strd r2, r0, [sp, 8] | __asm ("strd r2, r0, [var_ch]");
0x00007fb6 ldr.w r0, [pc, 0x6c0] | r0 = *(0x00008678);
0x00007fb8 lsls r0, r0, 0x1b | r0 <<= 0x1b;
0x00007fba add r1, pc | r1 += pc;
0x00007fbc str r2, [sp] | *(sp) = r2;
0x00007fbe add r0, pc | r0 += pc;
0x00007fc0 bl 0xc264 | fcn_0000c264 ();
| label_14:
0x00007fc4 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00007fc6 mov r3, r2 | r3 = r2;
| if (r2 != 0) {
0x00007fc8 cbz r2, 0x7fd2 |
0x00007fca ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00007fcc ldr r2, [sp, 0x70] | r2 = var_70h;
0x00007fce ldr.w r2, [r2, 0x1b4] | r2 = *((r2 + 0x1b4));
0x00007fd0 movs r1, 0xb4 | r1 = 0xb4;
| }
0x00007fd2 ldr.w r0, [pc, 0x6a8] |
0x00007fd6 str r3, [sp] | *(sp) = r3;
0x00007fd8 movs r3, 8 | r3 = 8;
0x00007fda mov r1, r3 | r1 = r3;
0x00007fdc add r0, pc | r0 = 0x1065e;
0x00007fde bl 0xc264 | fcn_0000c264 ();
0x00007fe2 b 0x7e54 | goto label_9;
| label_72:
0x00007fe4 ldr.w r7, [pc, 0x698] |
0x00007fe8 add r7, pc | r7 = 0x1066c;
0x00007fea b 0x7d98 | goto label_10;
| label_66:
0x00007fec ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00007fee cmp r3, 0 |
| if (r3 == 0) {
0x00007ff0 beq.w 0x820a | goto label_88;
| }
0x00007ff4 ldr r3, [sp, 0xa8] | r3 = *(arg_a8h);
0x00007ff6 ldr r3, [r3] | r3 = *(r3);
0x00007ff8 cmp r3, 0 |
| if (r3 == 0) {
0x00007ffa beq.w 0x8214 | goto label_89;
| }
0x00007ffe ldr.w r0, [pc, 0x684] | r0 = *(0x00008684);
0x00008002 add r0, pc | r0 += pc;
| label_21:
0x00008004 ldr.w r2, [pc, 0x680] | r2 = *(0x00008688);
0x00008008 add r2, pc | r2 += pc;
0x0000800a ldr r2, [r2] | r2 = *(r2);
0x0000800c ldr r1, [r2] | r1 = *(r2);
0x0000800e cmp r1, 0 |
| if (r1 != 0) {
0x00008010 bne.w 0x7cf8 | goto label_11;
| }
0x00008014 ldr.w r1, [pc, 0x674] |
0x00008018 add r1, pc | r1 = 0x106a8;
0x0000801a b 0x7cf8 | goto label_11;
| label_73:
0x0000801c ldr.w r0, [pc, 0x670] | r0 = *(0x8690);
0x00008020 movs r0, r0 |
0x00008022 movs r0, r0 |
0x00008024 invalid |
0x00008028 strh r0, [r0] | *(r0) = r0;
0x0000802a movs r0, r0 |
0x0000802c movs r0, r0 |
0x0000802e movs r0, r0 |
| label_69:
0x00008030 movs r3, r0 | r3 = r0;
0x00008032 movs r0, r0 |
0x00008034 movs r0, r0 |
| label_75:
0x00008036 movs r0, r0 |
0x00008038 movs r0, r0 |
0x0000803a movs r0, r0 |
0x0000803c cmp r3, 0 |
0x0000803e ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x00008040 ite eq |
| if (r3 != 0) {
0x00008042 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0) {
0x00008044 movne r3, 0 | r3 = 0;
| }
0x00008046 cmp r2, 3 |
0x00008048 it gt |
| if (r2 <= 3) {
0x0000804a orrgt r3, r3, 1 | r3 |= 1;
| }
0x0000804c lsls r1, r0, 0xc | r1 = r0 << 0xc;
0x0000804e cmp r3, 0 |
| if (r3 == 0) {
0x00008050 beq.w 0x7bee | goto label_4;
| }
0x00008054 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008056 ldr.w r1, [fp] | r1 = *(fp);
0x0000805a ldr.w r3, [r3, 0x1b4] | r3 = *((r3 + 0x1b4));
0x0000805c adds r1, 0xb4 | r1 += 0xb4;
0x0000805e subs r1, r1, r3 | r1 -= r3;
| label_20:
0x00008060 str r1, [sp, 4] | var_4h = r1;
0x00008062 movs r1, 0 | r1 = 0;
0x00008064 str r1, [sp, 0x14] | var_14h = r1;
0x00008066 movs r2, 8 | r2 = 8;
0x00008068 str r1, [sp, 0xc] | var_ch = r1;
0x0000806a ldr.w r0, [pc, 0x62c] |
0x0000806e ldr.w r1, [pc, 0x62c] |
0x00008072 str r2, [sp, 0x10] | var_10h = r2;
0x00008074 add r0, pc | r0 = 0x10712;
0x00008076 str r2, [sp, 8] | var_8h = r2;
0x00008078 add r1, pc | r1 = 0x1071a;
0x0000807a str r2, [sp] | *(sp) = r2;
0x0000807c bl 0xc264 | fcn_0000c264 ();
0x00008080 b 0x7e54 | goto label_9;
| label_67:
0x00008082 ldr.w r0, [pc, 0x61c] | r0 = *(0x000086a0);
0x00008086 add r0, pc | r0 += pc;
0x00008088 mov r3, r0 | r3 = r0;
0x0000808a b 0x7cf2 | goto label_12;
| label_80:
0x0000808c ldr r2, [sp, 0x48] | r2 = var_48h;
0x0000808e cmp r2, 0 |
| if (r2 == 0) {
0x00008090 beq.w 0x8222 | goto label_90;
| }
0x00008094 ldr.w sl, [r2] | sl = *(r2);
0x00008098 cmp.w sl, 0 |
| if (sl == 0) {
0x0000809c beq 0x80f4 | goto label_22;
| }
0x0000809e movs r3, 0 | r3 = 0;
0x000080a0 mov r7, sl | r7 = sl;
0x000080a2 b 0x80aa |
| while (r1 != r6) {
0x000080a4 adds r3, 1 | r3++;
0x000080a6 cmp r7, r3 |
| if (r7 == r3) {
0x000080a8 beq 0x80f2 | goto label_91;
| }
0x000080aa ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x000080ae cmp r1, r6 |
0x000080b0 bne 0x80a4 |
| }
0x000080b2 b 0x7eca | goto label_13;
| label_84:
0x000080b4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000080b6 ldr.w r1, [fp] | r1 = *(fp);
0x000080ba ldr.w r3, [r3, 0x1b4] | r3 = *((r3 + 0x1b4));
0x000080be subs r1, r1, r3 | r1 -= r3;
| label_87:
0x000080c0 str r1, [sp, 4] | var_4h = r1;
0x000080c2 movs r1, 0 | r1 = 0;
0x000080c4 str r1, [sp, 0x14] | var_14h = r1;
0x000080c6 movs r2, 8 | r2 = 8;
0x000080c8 str r1, [sp, 0xc] | var_ch = r1;
0x000080ca ldr.w r0, [pc, 0x5d8] |
0x000080ce ldr.w r1, [pc, 0x5d8] |
0x000080d2 str r2, [sp, 0x10] | var_10h = r2;
0x000080d4 add r0, pc | r0 = 0x1077e;
0x000080d6 str r2, [sp, 8] | var_8h = r2;
0x000080d8 add r1, pc | r1 = 0x10786;
0x000080da str r2, [sp] | *(sp) = r2;
0x000080dc bl 0xc264 | fcn_0000c264 ();
0x000080e0 b 0x7fc4 | goto label_14;
| label_70:
0x000080e2 ldr.w r1, [pc, 0x5c8] | r1 = *(0x000086ac);
0x000080e6 add r1, pc | r1 += pc;
0x000080e8 b 0x7d6e | goto label_15;
| label_71:
0x000080ea ldr.w r3, [pc, 0x5c4] | r3 = *(0x000086b0);
0x000080ee add r3, pc | r3 += pc;
0x000080f0 b 0x7d88 | goto label_16;
| label_91:
0x000080f2 mov sl, r7 | sl = r7;
| label_22:
0x000080f4 ldr.w r3, [r6, 0x258] | r3 = *((r6 + 0x258));
0x000080f8 str r3, [sp, 0x50] | var_50h = r3;
0x000080fa ldr.w r3, [r6, 0x25c] | r3 = *((r6 + 0x25c));
0x000080fe str r3, [sp, 0x54] | var_54h = r3;
0x00008100 ands r3, sb, 4 | r3 = sb & 4;
0x00008104 str r3, [sp, 0x2c] | var_2ch = r3;
| if (r3 != sb) {
0x00008106 bne.w 0x8326 | goto label_92;
| }
0x0000810a ldr.w r0, [pc, 0x5a8] | r0 = *(0x000086b4);
0x0000810e ldr.w r3, [pc, 0x5a8] | r3 = *(0x000086b8);
0x00008112 add r0, pc | r0 += pc;
0x00008114 add r3, pc | r3 += pc;
0x00008116 addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x0000811a ldr r3, [r3] | r3 = *(r3);
0x0000811c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000811e mov r2, r6 | r2 = r6;
| label_35:
0x00008120 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008122 ldr r1, [sp, 0x34] | r1 = var_34h;
0x00008124 ldr.w ip, [r3, 0x18] | ip = *((r3 + 0x18));
0x00008128 movs r3, 0x54 | r3 = 0x54;
0x0000812a mul r3, ip, r3 | r3 = ip * r3;
0x0000812e ldr r3, [r1, r3] | r3 = *((r1 + r3));
0x00008130 cmp r3, 0 |
0x00008132 it ne |
| if (r3 != 0) {
0x00008134 cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
| if (r3 == 0) {
0x00008136 beq 0x814a | goto label_93;
| }
0x00008138 mov r7, sl | r7 = sl;
0x0000813a mov r0, ip | r0 = ip;
| do {
0x0000813c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0000813e cmp r3, 0 |
0x00008140 it ne |
| if (r3 != 0) {
0x00008142 cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
0x00008144 bne 0x813c |
| } while (r3 != 0);
0x00008146 mov sl, r7 | sl = r7;
0x00008148 mov ip, r0 |
| label_93:
0x0000814a cmp r3, 0 |
| if (r3 == 0) {
0x0000814c beq.w 0x8306 | goto label_94;
| }
0x00008150 ldrd r1, r3, [r2, 0x258] | __asm ("ldrd r1, r3, [r2, 0x258]");
0x00008154 ldrd r0, r7, [sp, 0x50] | __asm ("ldrd r0, r7, [var_50h]");
0x00008158 cmp r7, r3 |
0x0000815a it eq |
| if (r7 == r3) {
0x0000815c cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
| if (r7 == r3) {
0x0000815e beq.w 0x8272 | goto label_95;
| }
0x00008162 ldr.w r3, [pc, 0x558] | r3 = *(0x000086bc);
0x00008166 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00008168 add r3, pc | r3 += pc;
0x0000816a ldr r3, [r3] | r3 = *(r3);
0x0000816c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000816e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008170 cmp r3, 0 |
| if (r3 == 0) {
0x00008172 beq.w 0x7b04 | goto label_17;
| }
| label_25:
0x00008176 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00008178 movs r3, 1 | r3 = 1;
0x0000817a str r3, [r2, 4] | *((r2 + 4)) = r3;
0x0000817c dmb ish | __asm ("dmb ish");
| label_27:
0x00008180 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008182 ldr.w r3, [r3, 0x1d4] | r3 = *((r3 + 0x1d4));
0x00008186 str r3, [sp, 0x24] | var_24h = r3;
0x00008188 b 0x7b04 | goto label_17;
| label_68:
0x0000818a ldr.w r0, [pc, 0x534] | r0 = *(0x000086c0);
0x0000818e ldr.w r3, [pc, 0x534] |
0x00008192 add r0, pc | r0 += pc;
0x00008194 add r3, pc | r3 = 0x1085e;
0x00008196 b 0x7cf2 | goto label_12;
| label_83:
0x00008198 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0000819a cmp r3, r5 |
| if (r3 != r5) {
0x0000819c bne.w 0x7f6a | goto label_18;
| }
0x000081a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000081a2 ldrb.w r3, [r3, 0x199] | r3 = *((r3 + 0x199));
0x000081a4 adds r1, 0x99 | r1 += 0x99;
0x000081a6 ubfx r3, r3, 7, 1 | r3 = (r3 >> 7) & ((1 << 1) - 1);
0x000081aa cmp r6, 0 |
0x000081ac ite eq |
| if (r6 != 0) {
0x000081ae moveq r3, 0 | r3 = 0;
| }
| if (r6 == 0) {
0x000081b0 andne r3, r3, 1 | r3 &= 1;
| }
0x000081b4 cmp r3, 0 |
| if (r3 != 0) {
0x000081b6 bne.w 0x84b4 | goto label_96;
| }
0x000081ba str.w sl, [r8, 0x30] | __asm ("str.w sl, [r8, 0x30]");
| if (r6 != 0) {
0x000081be cbz r6, 0x81da |
0x000081c0 ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x000081c2 and r2, r2, 3 | r2 &= 3;
0x000081c6 str r2, [sp, 0xac] | *(arg_ach) = r2;
0x000081c8 ldrb r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000081ca and r2, r2, 0xf | r2 &= 0xf;
0x000081ce cmp r2, 6 |
| if (r2 == 6) {
0x000081d0 beq.w 0x83e2 | goto label_97;
| }
0x000081d4 cmp r2, 0xa |
| if (r2 == 0xa) {
0x000081d6 beq.w 0x83d2 | goto label_46;
| }
| }
| label_30:
0x000081da ldr.w r3, [pc, 0x4ec] | r3 = *(0x000086c8);
0x000081de ldr r2, [sp, 0x20] | r2 = var_20h;
0x000081e0 add r3, pc | r3 += pc;
0x000081e2 ldr.w r3, [r3, 0x188] | r3 = *((r3 + 0x188));
0x000081e6 cmp r2, r3 |
0x000081e8 it ne |
| if (r2 != r3) {
0x000081ea cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r2 == r3) {
0x000081ec beq 0x81f6 | goto label_23;
| }
0x000081ee ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x000081f0 cmp r3, 3 |
| if (r3 <= 3) {
0x000081f2 ble.w 0x7bee | goto label_4;
| }
| label_23:
0x000081f6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000081f8 ldr.w r1, [fp] | r1 = *(fp);
0x000081fc ldr.w r3, [r3, 0x1b4] | r3 = *((r3 + 0x1b4));
0x00008200 subs r1, r1, r3 | r1 -= r3;
0x00008202 cmp r6, 0 |
| if (r6 != 0) {
0x00008204 bne.w 0x7e30 | goto label_19;
| }
0x00008208 b 0x8060 | goto label_20;
| label_88:
0x0000820a ldr.w r0, [pc, 0x4c0] | r0 = *(0x000086cc);
0x0000820e add r0, pc | r0 += pc;
0x00008210 mov r3, r0 | r3 = r0;
0x00008212 b 0x8004 | goto label_21;
| label_89:
0x00008214 ldr.w r0, [pc, 0x4b8] |
0x00008218 ldr.w r3, [pc, 0x4b8] | r3 = *(0x000086d4);
0x0000821c add r0, pc | r0 = 0x108f0;
0x0000821e add r3, pc | r3 += pc;
0x00008220 b 0x8004 | goto label_21;
| label_90:
0x00008222 ldr.w sl, [sp, 0x48] | sl = var_48h;
0x00008226 b 0x80f4 | goto label_22;
| label_77:
0x00008228 ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x0000822a orr r3, r3, 8 | r3 |= 8;
0x0000822e str r3, [sp, 0xac] | *(arg_ach) = r3;
0x00008230 b 0x81f6 | goto label_23;
| label_76:
0x00008232 ldr.w r1, [pc, 0x4a4] |
0x00008236 movs r7, 0 | r7 = 0;
0x00008238 add r1, pc | r1 = 0x10916;
| label_28:
0x0000823a ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x0000823c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000823e ldr.w r3, [r3, 0x1b4] | r3 = *((r3 + 0x1b4));
0x00008242 str r2, [sp, 0x14] | var_14h = r2;
0x00008244 movs r2, 8 | r2 = 8;
0x00008246 str r2, [sp, 0x10] | var_10h = r2;
0x00008248 ldr.w r0, [fp] | r0 = *(fp);
0x0000824c sub.w ip, r0, r3 |
0x00008250 ldr.w r0, [r5, 0x1b4] | r0 = *((r5 + 0x1b4));
0x00008254 strd ip, r2, [sp, 4] | __asm ("strd ip, r2, [var_4h]");
0x00008258 str r2, [sp] | *(sp) = r2;
0x0000825a str r0, [sp, 0xc] | var_ch = r0;
0x0000825c ldr.w r0, [pc, 0x47c] |
0x00008260 add r0, pc | r0 = 0x10940;
0x00008262 bl 0xc264 | fcn_0000c264 ();
0x00008266 movs r3, 4 | r3 = 4;
0x00008268 str r3, [sp, 0xac] | *(arg_ach) = r3;
0x0000826a cmp r7, 0 |
| if (r7 == 0) {
0x0000826c beq.w 0x7e54 | goto label_9;
| }
0x00008270 b 0x7fc4 | goto label_14;
| label_95:
0x00008272 ldrb.w r3, [r2, 0x19b] | r3 = *((r2 + 0x19b));
0x00008276 mov r0, ip | r0 = ip;
0x00008278 str.w sl, [sp, 0x24] | __asm ("str.w sl, [var_24h]");
0x0000827c mov sl, r6 | sl = r6;
0x0000827e mov r6, r2 | r6 = r2;
| if (r3 != 0) {
0x00008280 cbnz r3, 0x82d6 | goto label_32;
| }
0x00008282 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 != 0) {
0x00008284 cbz r3, 0x828c |
0x00008286 ldrb.w r3, [r2, 0x19c] | r3 = *((r2 + 0x19c));
| if (r3 != 0) {
0x0000828a cbnz r3, 0x82d6 | goto label_32;
| }
| }
0x0000828c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000828e ldrb.w r3, [r3, 0x198] | r3 = *((r3 + 0x198));
0x00008290 adds r1, 0x98 | r1 += 0x98;
0x00008292 and r3, r3, 3 | r3 &= 3;
0x00008296 cmp r3, 2 |
| if (r3 == 2) {
0x00008298 beq.w 0x840e | goto label_98;
| }
0x0000829c ldr.w r3, [pc, 0x440] | r3 = *(0x000086e0);
0x000082a0 add r3, pc | r3 += pc;
0x000082a2 ldr r3, [r3] | r3 = *(r3);
0x000082a4 lsls r5, r3, 0x1d | r5 = r3 << 0x1d;
| if (r5 < r3) {
0x000082a6 bmi.w 0x83ea | goto label_99;
| }
| label_31:
0x000082aa ldr r3, [sp, 0x44] | r3 = var_44h;
0x000082ac cmp r3, 0 |
| if (r3 != 0) {
0x000082ae bne.w 0x8494 | goto label_100;
| }
0x000082b2 ldr.w r0, [pc, 0x430] | r0 = *(0x000086e4);
0x000082b6 ldr.w r3, [pc, 0x430] | r3 = *(0x000086e8);
0x000082ba add r0, pc | r0 += pc;
0x000082bc addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x000082c0 add r3, pc | r3 += pc;
| label_41:
0x000082c2 movs r2, 1 | r2 = 1;
0x000082c4 ldr r3, [r3] | r3 = *(r3);
0x000082c6 strb.w r2, [r6, 0x19b] | *((r6 + 0x19b)) = r2;
0x000082ca blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000082cc ldr r3, [sp, 0x2c] | r3 = var_2ch;
| if (r3 != 0) {
0x000082ce cbnz r3, 0x82f0 | goto label_33;
| }
| do {
| label_24:
0x000082d0 ldrd r6, r5, [sp, 0x64] | __asm ("ldrd r6, r5, [var_64h]");
0x000082d4 b 0x7bd2 | goto label_6;
| label_32:
0x000082d6 ldr.w r0, [pc, 0x414] | r0 = *(0x000086ec);
0x000082da ldr.w r3, [pc, 0x414] | r3 = *(0x000086f0);
0x000082de add r0, pc | r0 += pc;
0x000082e0 add r3, pc | r3 += pc;
0x000082e2 addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x000082e6 ldr r3, [r3] | r3 = *(r3);
0x000082e8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000082ea ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000082ec cmp r3, 0 |
0x000082ee beq 0x82d0 |
| } while (r3 == 0);
| label_33:
0x000082f0 mrc p15, 0, r3, c13, c0, 3 | __asm ("mrc p15, 0, r3, c13, c0, 3");
0x000082f4 str r3, [sp, 0x40] | var_40h = r3;
| label_50:
0x000082f6 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000082f8 movs r2, 1 | r2 = 1;
0x000082fa sub.w r3, r3, 0x540 | r3 -= 0x540;
0x000082fe str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00008300 dmb ish | __asm ("dmb ish");
0x00008304 b 0x82d0 | goto label_24;
| label_94:
0x00008306 ldr r0, [pc, 0x3ec] |
0x00008308 ldr r3, [pc, 0x3ec] |
0x0000830a add r0, pc | r0 = 0x10a04;
0x0000830c add r3, pc |
0x0000830e addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x00008312 ldr r3, [r3] | r3 = *(0x10a08);
0x00008314 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00008316 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00008318 cmp r3, 0 |
| if (r3 == 0) {
0x0000831a beq.w 0x7b04 | goto label_17;
| }
0x0000831e b 0x8176 | goto label_25;
| label_82:
0x00008320 movw r1, 0x1505 | r1 = 0x1505;
0x00008324 b 0x7f18 | goto label_26;
| label_92:
0x00008326 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00008328 str r3, [sp, 0x40] | var_40h = r3;
0x0000832a subw r0, r3, 0x53c | __asm ("subw r0, r3, 0x53c");
0x0000832e movs r3, 0 | r3 = 0;
0x00008330 dmb ish | __asm ("dmb ish");
| do {
0x00008334 ldrex r2, [r0] | __asm ("ldrex r2, [r0]");
0x00008338 strex r1, r3, [r0] | __asm ("strex r1, r3, [r0]");
0x0000833c cmp r1, 0 |
0x0000833e bne 0x8334 |
| } while (r1 != 0);
0x00008340 cmp r2, 2 |
| if (r2 == 2) {
0x00008342 beq.w 0x8528 | goto label_101;
| }
| label_37:
0x00008346 ldr r0, [pc, 0x3b4] |
0x00008348 ldr r3, [pc, 0x3b4] |
0x0000834a add r0, pc | r0 = 0x10a4c;
0x0000834c add r3, pc |
0x0000834e addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x00008352 ldr r3, [r3] |
0x00008354 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00008356 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008358 mov r2, r6 | r2 = r6;
0x0000835a ldr.w r3, [r3, 0x1f8] | r3 = *(0x10c48);
0x0000835e cmp r3, 0 |
| if (r3 == 0) {
0x00008360 beq.w 0x84f6 | goto label_102;
| }
0x00008364 ldr r1, [sp, 0x4c] | r1 = var_4ch;
0x00008366 cmp r1, r3 |
| if (r1 == r3) {
0x00008368 beq.w 0x84f6 | goto label_102;
| }
0x0000836c ldr r1, [r3] | r1 = *(r3);
0x0000836e cmp r1, 0 |
| if (r1 == 0) {
0x00008370 beq.w 0x84f6 | goto label_102;
| }
0x00008374 mov r7, sl | r7 = sl;
0x00008376 b 0x8382 |
| while (r1 != r2) {
0x00008378 ldr r1, [r3, 4]! | r1 = *((r3 += 4));
0x0000837c cmp r1, 0 |
| if (r1 == 0) {
0x0000837e beq.w 0x84f4 | goto label_103;
| }
0x00008382 cmp r1, r2 |
0x00008384 bne 0x8378 |
| }
| label_36:
0x00008386 ldrd r1, r2, [r2, 0x258] | __asm ("ldrd r1, r2, [r2, 0x258]");
0x0000838a ldrd r0, r7, [sp, 0x50] | __asm ("ldrd r0, r7, [var_50h]");
0x0000838e ldr r3, [pc, 0x374] |
0x00008390 cmp r7, r2 |
0x00008392 it eq |
| if (r7 == r2) {
0x00008394 cmpeq r0, r1 | __asm ("cmpeq r0, r1");
| }
0x00008396 add r3, pc |
0x00008398 ldr r3, [r3] | r3 = *(0x10aa0);
| if (r7 == r2) {
0x0000839a beq.w 0x880e | goto label_104;
| }
0x0000839e ldr r0, [pc, 0x368] |
0x000083a0 add r0, pc | r0 = 0x10aae;
0x000083a2 addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x000083a6 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x000083a8 ldr r2, [sp, 0x30] | r2 = var_30h;
0x000083aa movs r3, 1 | r3 = 1;
0x000083ac str r3, [r2, 4] | *((r2 + 4)) = r3;
0x000083ae dmb ish | __asm ("dmb ish");
0x000083b2 b 0x8180 | goto label_27;
| label_85:
0x000083b4 ldr r1, [pc, 0x354] |
0x000083b6 movs r7, 1 | r7 = 1;
0x000083b8 add r1, pc | r1 = 0x10ac8;
0x000083ba b 0x823a | goto label_28;
| label_53:
0x000083bc ldr r3, [pc, 0x350] |
0x000083be movw r2, 0x34d | r2 = 0x34d;
0x000083c2 ldr r1, [pc, 0x350] |
0x000083c4 ldr r0, [pc, 0x350] |
0x000083c6 add r3, pc | r3 = 0x10ada;
0x000083c8 add r1, pc | r1 = 0x10ae2;
0x000083ca add r0, pc | r0 = 0x10ae6;
0x000083cc bl 0x11f30 | fcn_00011f30 (r0);
| label_86:
0x000083d0 movs r3, 1 | r3 = 1;
| label_46:
0x000083d2 ldr r2, [sp, 0xac] | r2 = *(arg_ach);
0x000083d4 orr r2, r2, 8 | r2 |= 8;
0x000083d8 str r2, [sp, 0xac] | *(arg_ach) = r2;
0x000083da cmp r3, 0 |
| if (r3 != 0) {
0x000083dc bne.w 0x7f8e | goto label_29;
| }
0x000083e0 b 0x81da | goto label_30;
| label_97:
0x000083e2 ldr r1, [pc, 0x338] |
0x000083e4 mov r7, r3 | r7 = r3;
0x000083e6 add r1, pc | r1 = 0x10b08;
0x000083e8 b 0x823a | goto label_28;
| label_99:
0x000083ea ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 != 0) {
0x000083ec cbz r3, 0x83f6 |
0x000083ee ldrb.w r3, [r6, 0x19c] | r3 = *((r6 + 0x19c));
0x000083f2 cmp r3, 0 |
| if (r3 != 0) {
0x000083f4 bne 0x8494 | goto label_100;
| }
| }
0x000083f6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000083f8 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000083fa ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x000083fc ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000083fe ldrb r5, [r3] | r5 = *(r3);
0x00008400 cmp r5, 0 |
| if (r5 != 0) {
0x00008402 bne 0x84e2 | goto label_105;
| }
0x00008404 ldr r0, [pc, 0x318] |
0x00008406 add r0, pc | r0 = 0x10b2a;
0x00008408 bl 0xc1f0 | fcn_0000c1f0 ();
0x0000840c b 0x82aa | goto label_31;
| label_98:
0x0000840e ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008410 ldr.w r5, [r3, 0x200] | r5 = *((r3 + 0x200));
0x00008414 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00008416 cmp r5, r3 |
| if (r5 < r3) {
0x00008418 bls.w 0x8536 | goto label_106;
| }
0x0000841c ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000841e ldr r2, [sp, 0x24] | r2 = var_24h;
0x00008420 ldr.w r3, [r1, 0x1fc] | r3 = *((r1 + 0x1fc));
0x00008424 add.w r3, r3, r2, lsl 2 | r3 += (r2 << 2);
0x00008428 adds r2, 1 | r2++;
0x0000842a str r6, [r3, 4] | *((r3 + 4)) = r6;
0x0000842c dmb ish | __asm ("dmb ish");
0x00008430 ldr.w r3, [r1, 0x1fc] | r3 = *((r1 + 0x1fc));
0x00008434 str r2, [r3] | *(r3) = r2;
| label_38:
0x00008436 ldr r3, [pc, 0x2ec] |
0x00008438 add r3, pc |
0x0000843a ldr r3, [r3] | r3 = *(0x10b62);
0x0000843c lsls r1, r3, 0x19 | r1 = r3 << 0x19;
| if (r1 >= r3) {
0x0000843e bpl.w 0x82d6 | goto label_32;
| }
0x00008442 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00008444 ldrb r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x00008446 cbnz r3, 0x8454 |
0x00008448 ldr r3, [pc, 0x2dc] |
0x0000844a add r3, pc |
0x0000844c ldr r3, [r3] | r3 = *(0x10b76);
0x0000844e ldr r1, [r3] | r1 = *(0x10b76);
0x00008450 cmp r1, 0 |
| if (r1 == 0) {
0x00008452 beq 0x84ee | goto label_107;
| }
| }
| label_34:
0x00008454 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008456 ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x00008458 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000845a ldrb r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0000845c cbnz r0, 0x846c |
0x0000845e ldr r3, [pc, 0x2cc] |
0x00008460 add r3, pc |
0x00008462 ldr r3, [r3] |
0x00008464 ldr r3, [r3] | r3 = *(0x10b92);
0x00008466 cmp r3, 0 |
| if (r3 == 0) {
0x00008468 beq.w 0x857c | goto label_108;
| }
| }
| label_39:
0x0000846c ldr r0, [sp, 0x20] | r0 = var_20h;
0x0000846e ldr r0, [r0, 0x18] | r0 = *((r0 + 0x18));
0x00008470 str r0, [sp] | *(sp) = r0;
0x00008472 ldr r0, [pc, 0x2bc] |
0x00008474 add r0, pc | r0 = 0x10baa;
0x00008476 bl 0xc1f0 | fcn_0000c1f0 ();
0x0000847a ldr r0, [pc, 0x2b8] |
0x0000847c ldr r3, [pc, 0x2b8] |
0x0000847e add r0, pc | r0 = 0x10bb8;
0x00008480 add r3, pc |
0x00008482 addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x00008486 ldr r3, [r3] | r3 = *(0x10bbc);
0x00008488 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x0000848a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000848c cmp r3, 0 |
| if (r3 == 0) {
0x0000848e beq.w 0x82d0 | goto label_24;
| }
0x00008492 b 0x82f0 | goto label_33;
| label_100:
0x00008494 ldr r0, [pc, 0x2a4] |
0x00008496 ldr r3, [pc, 0x2a8] |
0x00008498 add r0, pc | r0 = 0x10bd8;
0x0000849a addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x0000849e add r3, pc | r3 = 0x10be4;
| label_43:
0x000084a0 movs r2, 1 | r2 = 1;
0x000084a2 ldr r3, [r3] | r3 = *(r3);
0x000084a4 strb.w r2, [r6, 0x19c] | *((r6 + 0x19c)) = r2;
0x000084a8 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x000084aa ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000084ac cmp r3, 0 |
| if (r3 == 0) {
0x000084ae beq.w 0x82d0 | goto label_24;
| }
0x000084b2 b 0x82f0 | goto label_33;
| label_96:
0x000084b4 ldrb r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x000084b6 lsrs r3, r3, 4 | r3 >>= 4;
0x000084b8 cmp r3, 0xa |
| if (r3 == 0xa) {
0x000084ba beq.w 0x8774 | goto label_109;
| }
0x000084bc strh r3, [r3, 0xa] | *((r3 + 0xa)) = r3;
0x000084be str.w sl, [r8, 0x30] | __asm ("str.w sl, [r8, 0x30]");
| label_49:
0x000084c2 ldrb r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000084c4 ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x000084c6 and r2, r2, 0xf | r2 &= 0xf;
0x000084ca cmp r2, 6 |
0x000084cc and r3, r3, 3 | r3 &= 3;
0x000084d0 str r3, [sp, 0xac] | *(arg_ach) = r3;
0x000084d2 it ne |
| if (r2 == 6) {
0x000084d4 movne r3, 0 | r3 = 0;
| }
| if (r2 != 6) {
0x000084d6 bne.w 0x8612 | goto label_110;
| }
0x000084da ldr r1, [pc, 0x268] |
0x000084dc movs r7, 0 | r7 = 0;
0x000084de add r1, pc | r1 = 0x10c28;
0x000084e0 b 0x823a | goto label_28;
| label_105:
0x000084e2 str r0, [sp] | *(sp) = r0;
0x000084e4 ldr r0, [pc, 0x260] |
0x000084e6 add r0, pc | r0 = 0x10c32;
0x000084e8 bl 0xc1f0 | fcn_0000c1f0 ();
0x000084ec b 0x82aa | goto label_31;
| label_107:
0x000084ee ldr r1, [pc, 0x25c] |
0x000084f0 add r1, pc | r1 = 0x10c42;
0x000084f2 b 0x8454 | goto label_34;
| label_103:
0x000084f4 mov sl, r7 | sl = r7;
| label_102:
0x000084f6 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000084f8 ldr.w r3, [r3, 0x1fc] | r3 = *((r3 + 0x1fc));
0x000084fc cmp r3, 0 |
| if (r3 == 0) {
0x000084fe beq.w 0x8120 | goto label_35;
| }
0x00008502 ldr r0, [sp, 0x48] | r0 = var_48h;
0x00008504 ldr r1, [r3] | r1 = *(r3);
0x00008506 cmp r0, r3 |
| if (r0 == r3) {
0x00008508 beq.w 0x881c | goto label_111;
| }
0x0000850c cmp r1, 0 |
| if (r1 == 0) {
0x0000850e beq.w 0x8806 | goto label_112;
| }
0x00008512 movs r0, 0 | r0 = 0;
0x00008514 b 0x851e |
| while (r2 != r7) {
0x00008516 adds r0, 1 | r0++;
0x00008518 cmp r0, r1 |
| if (r0 == r1) {
0x0000851a beq.w 0x880a | goto label_113;
| }
0x0000851e ldr r7, [r3, 4]! | r7 = *((r3 += 4));
0x00008522 cmp r2, r7 |
0x00008524 bne 0x8516 |
| }
0x00008526 b 0x8386 | goto label_36;
| label_101:
0x00008528 movs r1, 0x81 | r1 = 0x81;
0x0000852a movs r2, 1 | r2 = 1;
0x0000852c mov.w ip, 0xf0 |
0x00008530 bl 0x139d0 | fcn_000139d0 ();
0x00008534 b 0x8346 | goto label_37;
| label_106:
0x00008536 cmp r5, 0 |
| if (r5 == 0) {
0x00008538 beq 0x85b2 | goto label_114;
| }
0x0000853a lsls r5, r5, 1 | r5 <<= 1;
| label_42:
0x0000853c ldr r3, [pc, 0x210] |
0x0000853e adds r0, r5, 1 | r0 = r5 + 1;
0x00008540 lsls r0, r0, 2 | r0 <<= 2;
0x00008542 add r3, pc |
0x00008544 ldr r3, [r3] | r3 = *(0x10c96);
0x00008546 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00008548 mov sb, r0 | sb = r0;
| if (r0 == 0) {
0x0000854a cbz r0, 0x8596 | goto label_115;
| }
0x0000854c ldr r7, [sp, 0x24] | r7 = var_24h;
| if (r7 != 0) {
0x0000854e cbnz r7, 0x8582 | goto label_116;
| }
| label_40:
0x00008550 add.w r2, sb, r7 | r2 = sb + r7;
0x00008554 str r6, [r2, 4] | *((r2 + 4)) = r6;
0x00008556 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00008558 adds r2, 1 | r2++;
0x0000855a str.w r2, [sb] | __asm ("str.w r2, [sb]");
0x0000855e dmb ish | __asm ("dmb ish");
0x00008562 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008564 ldr.w r0, [r3, 0x1fc] | r0 = *((r3 + 0x1fc));
0x00008568 str.w r5, [r3, 0x200] | __asm ("str.w r5, [r3, 0x200]");
0x0000856c str.w sb, [r3, 0x1fc] | __asm ("str.w sb, [r3, 0x1fc]");
0x00008570 cmp r0, 0 |
| if (r0 == 0) {
0x00008572 beq.w 0x8436 | goto label_38;
| }
0x00008576 bl 0xde4c | fcn_0000de4c (r0, r1);
0x0000857a b 0x8436 | goto label_38;
| label_108:
0x0000857c ldr r3, [pc, 0x1d4] |
0x0000857e add r3, pc | r3 = 0x10cd6;
0x00008580 b 0x846c | goto label_39;
| label_116:
0x00008582 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008584 lsls r7, r7, 2 | r7 <<= 2;
0x00008586 adds r0, 4 | r0 += 4;
0x00008588 mov r2, r7 | r2 = r7;
0x0000858a ldr.w r1, [r3, 0x1fc] | r1 = *((r3 + 0x1fc));
0x0000858e adds r1, 4 | r1 += 4;
0x00008590 blx 0x15f40 | fcn_00015f40 (r0, r1);
0x00008594 b 0x8550 | goto label_40;
| label_115:
0x00008596 ldr r3, [pc, 0x1c0] |
0x00008598 add r3, pc |
0x0000859a ldr r3, [r3] | r3 = *(0x10cf6);
0x0000859c lsls r0, r3, 0x1d | r0 = r3 << 0x1d;
0x0000859e bmi 0x85c4 |
| while (r3 != 0) {
| label_45:
0x000085a0 ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 == 0) {
0x000085a2 cbnz r3, 0x85b6 |
0x000085a4 ldr r0, [pc, 0x1b4] |
0x000085a6 ldr r3, [pc, 0x1b8] |
0x000085a8 add r0, pc | r0 = 0x10d08;
0x000085aa addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x000085ae add r3, pc | r3 = 0x10d14;
0x000085b0 b 0x82c2 | goto label_41;
| label_114:
0x000085b2 movs r5, 0xa | r5 = 0xa;
0x000085b4 b 0x853c | goto label_42;
| }
| label_44:
0x000085b6 ldr r0, [pc, 0x1ac] |
0x000085b8 ldr r3, [pc, 0x1ac] |
0x000085ba add r0, pc | r0 = 0x10d24;
0x000085bc addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x000085c0 add r3, pc | r3 = 0x10d2c;
0x000085c2 b 0x84a0 | goto label_43;
0x000085c4 ldrb.w r3, [r6, 0x19b] | r3 = *((r6 + 0x19b));
0x000085c8 cmp r3, 0 |
0x000085ca bne 0x85a0 |
| }
0x000085cc ldr r3, [sp, 0x44] | r3 = var_44h;
| if (r3 == 0) {
0x000085ce cbz r3, 0x85d8 | goto label_117;
| }
0x000085d0 ldrb.w r3, [r6, 0x19c] | r3 = *((r6 + 0x19c));
0x000085d4 cmp r3, 0 |
| if (r3 != 0) {
0x000085d6 bne 0x85b6 | goto label_44;
| }
| label_117:
0x000085d8 ldr r0, [pc, 0x190] |
0x000085da ldr r2, [r6, 0x18] | r2 = *((r6 + 0x18));
0x000085dc ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x000085de add r0, pc | r0 = 0x10d4e;
0x000085e0 bl 0xc1f0 | fcn_0000c1f0 ();
0x000085e4 b 0x85a0 | goto label_45;
| label_47:
0x000085e6 ldr r3, [sp, 0xac] | r3 = *(arg_ach);
0x000085e8 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x000085ea and r3, r3, 3 | r3 &= 3;
0x000085ee str r3, [sp, 0xac] | *(arg_ach) = r3;
0x000085f0 ldr r3, [pc, 0x17c] |
0x000085f2 add r3, pc | r3 = 0x10d66;
0x000085f4 str.w sl, [r3, 0x30] | __asm ("str.w sl, [r3, 0x30]");
0x000085f8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000085fa ldrb r2, [r6, 0xc] | r2 = *((r6 + 0xc));
0x000085fc ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x00008600 and r2, r2, 0xf | r2 &= 0xf;
0x00008604 cmp r2, 6 |
0x00008606 it ne |
| if (r2 == 6) {
0x00008608 movne r3, 1 | r3 = 1;
| }
0x0000860a stm.w r7, {r0, r1} | *(r7) = r0;
| *((r7 + 4)) = r1;
0x0000860c movs r3, r0 | r3 = r0;
| if (r3 == r0) {
0x0000860e beq.w 0x883c | goto label_118;
| }
| label_110:
0x00008612 cmp r2, 0xa |
| if (r2 == 0xa) {
0x00008614 beq.w 0x83d2 | goto label_46;
| }
0x00008618 cmp r3, 0 |
| if (r3 != 0) {
0x0000861a bne.w 0x7f8e | goto label_29;
| }
0x0000861e b 0x81da | goto label_30;
| label_109:
0x00008774 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00008776 mov r8, sb | r8 = sb;
0x00008778 strd sb, sb, [sp, 0x74] | __asm ("strd sb, sb, [var_74h]");
0x0000877c ldr.w r3, [r3, 0x1d8] | r3 = *((r3 + 0x1d8));
0x00008780 ldr.w ip, [r3, 4] | ip = *((r3 + 4));
0x00008784 mov lr, r3 | lr = r3;
0x00008786 str r3, [sp, 0x24] | var_24h = r3;
0x00008788 b 0x8796 |
| while (ip != r3) {
0x0000878a ldr.w r0, [lr] | r0 = *(lr);
0x0000878e ldr.w r3, [r0, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((r0 + offset_0));
0x00008792 cmp r3, r5 |
| if (r3 == r5) {
0x00008794 beq 0x87a0 | goto label_119;
| }
0x00008796 mov r3, r8 | r3 = r8;
0x00008798 add.w r8, r8, 1 | r8++;
0x0000879c cmp ip, r3 |
0x0000879e bne 0x878a |
| }
| label_119:
0x000087a0 add r3, sp, 0x74 | r3 += var_74h;
0x000087a2 mov.w sb, 0 | sb = 0;
0x000087a6 mov r0, ip | r0 = ip;
0x000087a8 strd r3, r7, [sp, 0x28] | __asm ("strd r3, r7, [var_28h]");
0x000087ac b 0x87f8 | goto label_120;
| label_48:
0x000087ae ldr r3, [sp, 0x24] | r3 = var_24h;
0x000087b0 ldr r3, [r3] | r3 = *(r3);
0x000087b2 ldr.w r3, [r3, r8, lsl 2] | offset_1 = r8 << 2;
| r3 = *((r3 + offset_1));
0x000087b4 adds r0, 0x28 | r0 += 0x28;
0x000087b6 ldr r7, [r3, 0x60] | r7 = *((r3 + 0x60));
| if (r7 == 0) {
0x000087b8 cbz r7, 0x87f4 | goto label_121;
| }
0x000087ba ldr r0, [sp, 0x20] | r0 = var_20h;
0x000087bc add.w r3, r3, 0x168 | r3 += 0x168;
0x000087c0 str r3, [sp, 4] | var_4h = r3;
0x000087c2 str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h]");
0x000087c6 str r0, [sp, 0x1c] | var_1ch = r0;
0x000087c8 ldr r0, [sp, 0xac] | r0 = *(arg_ach);
0x000087ca strd r1, r2, [sp, 0x30] | __asm ("strd r1, r2, [var_34h]");
0x000087ce strd sb, r0, [sp, 0x14] | __asm ("strd sb, r0, [var_14h]");
0x000087d2 ldr r0, [sp, 0xa8] | r0 = *(arg_a8h);
0x000087d4 strd sb, r0, [sp, 8] | __asm ("strd sb, r0, [var_ch]");
0x000087d8 ldr r0, [sp, 0x28] | r0 = var_28h;
0x000087da str r0, [sp] | *(sp) = r0;
0x000087dc mov r0, r4 | r0 = r4;
0x000087de ldr.w r3, [fp] | r3 = *(fp);
0x000087e2 bl 0x7328 | r0 = fcn_00007328 (r0, r1, r2, r3, r4, r5);
0x000087e6 cmp r0, 0 |
| if (r0 > 0) {
0x000087e8 bgt.w 0x85e6 | goto label_47;
| }
0x000087ec ldr r3, [sp, 0x24] | r3 = var_24h;
0x000087ee ldrd r1, r2, [sp, 0x30] | __asm ("ldrd r1, r2, [var_34h]");
0x000087f0 asrs r4, r1, 8 | r4 = r1 >> 8;
0x000087f2 ldr r0, [r3, 4] | r0 = *((r3 + 4));
| label_121:
0x000087f4 add.w r8, r8, 1 | r8++;
| label_120:
0x000087f8 cmp r8, r0 |
| if (r8 <= r0) {
0x000087fa blo 0x87ae | goto label_48;
| }
0x000087fc ldr r3, [pc, 0x44] |
0x000087fe add r3, pc | r3 = 0x11046;
0x00008800 str.w sl, [r3, 0x30] | __asm ("str.w sl, [r3, 0x30]");
0x00008804 b 0x84c2 | goto label_49;
| label_112:
0x00008806 mov sl, r1 | sl = r1;
0x00008808 b 0x8120 | goto label_35;
| label_113:
0x0000880a mov sl, r0 | sl = r0;
0x0000880c b 0x8120 | goto label_35;
| label_104:
0x0000880e ldr r0, [pc, 0x38] |
0x00008810 mov sl, r6 | sl = r6;
0x00008812 add r0, pc | r0 = 0x11060;
0x00008814 addw r0, r0, 0x544 | __asm ("addw r0, r0, 0x544");
0x00008818 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x0000881a b 0x82f6 | goto label_50;
| label_111:
0x0000881c cmp sl, r1 |
| if (sl >= r1) {
0x0000881e bhs.w 0x8120 | goto label_35;
| }
0x00008822 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00008824 mov r7, sl | r7 = sl;
0x00008826 adds r3, 4 | r3 += 4;
| label_51:
0x00008828 ldr.w r0, [r3, r7, lsl 2] | offset_2 = r7 << 2;
| r0 = *((r3 + offset_2));
0x0000882c cmp r2, r0 |
| if (r2 == r0) {
0x0000882e beq.w 0x8386 | goto label_36;
| }
0x00008832 adds r7, 1 | r7++;
0x00008834 cmp r7, r1 |
| if (r7 != r1) {
0x00008836 bne 0x8828 | goto label_51;
| }
0x00008838 mov sl, r7 | sl = r7;
0x0000883a b 0x8120 | goto label_35;
| label_118:
0x0000883c ldr r1, [pc, 0xc] |
0x0000883e movs r7, 1 | r7 = 1;
0x00008840 add r1, pc | r1 = 0x11090;
0x00008842 b 0x823a | goto label_28;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0xc218 */
| #include <stdint.h>
|
; (fcn) fcn.0000c218 () | void fcn_0000c218 () {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_4h_3;
| int16_t var_10h;
| int16_t var_4h_2;
0x0000c218 push {r0, r1, r2, r3} |
0x0000c21a mov.w r1, -1 | r1 = -1;
0x0000c21e push {lr} |
0x0000c220 sub sp, 0xc |
0x0000c222 add r3, sp, 0x10 | r3 += var_10h;
0x0000c224 ldr r0, [pc, 0x18] |
0x0000c226 ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x0000c22a add r0, pc |
0x0000c22c ldr r0, [r0, 0x2c] | r0 = *(0x1849a);
0x0000c22e str r3, [sp, 4] | var_4h = r3;
0x0000c230 bl 0xbe64 | fcn_0000be64 (r0, r1, r2, r3, r4);
0x0000c234 add sp, 0xc |
0x0000c236 ldr lr, [sp], 4 |
0x0000c23a add sp, 0x10 |
0x0000c23c bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0xc264 */
| #include <stdint.h>
|
; (fcn) fcn.0000c264 () | void fcn_0000c264 () {
| int16_t var_0h;
| int16_t var_4h;
| int32_t var_4h_3;
| int16_t var_10h;
| int16_t var_4h_2;
0x0000c264 push {r0, r1, r2, r3} |
0x0000c266 movs r1, 0 | r1 = 0;
0x0000c268 push {lr} |
0x0000c26a sub sp, 0xc |
0x0000c26c add r3, sp, 0x10 | r3 += var_10h;
0x0000c26e movs r0, 1 | r0 = 1;
0x0000c270 ldr r2, [r3], 4 | r2 = *(r3);
| r3 += 4;
0x0000c274 str r3, [sp, 4] | var_4h = r3;
0x0000c276 bl 0xbe64 | fcn_0000be64 (r0, r1, r2, r3, r4);
0x0000c27a add sp, 0xc |
0x0000c27c ldr lr, [sp], 4 |
0x0000c280 add sp, 0x10 |
0x0000c282 bx lr | return;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/ld-linux-armhf.so.3 @ 0x11638 */
| #include <stdint.h>
|
; (fcn) fcn.00011638 () | void fcn_00011638 (int16_t arg1, int16_t arg2) {
| int16_t var_1h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| 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_44h;
| r0 = arg1;
| r1 = arg2;
0x00011638 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001163c mov r3, r0 | r3 = r0;
0x0001163e ldr r4, [pc, 0x2cc] |
0x00011640 mov fp, r1 |
0x00011642 sub sp, 0x4c |
0x00011644 ldr r2, [pc, 0x2c8] |
0x00011646 add r4, pc | r4 = 0x22f58;
0x00011648 ldr r1, [pc, 0x2c8] |
0x0001164a str r0, [r4] | *(r4) = r0;
0x0001164c ldr r0, [r3], 4 | r0 = *(r3);
| r3 += 4;
0x00011650 add r2, pc | r2 = 0x22f64;
0x00011652 add r1, pc | r1 = 0x22f6a;
0x00011654 str r0, [r2] | *(r2) = r0;
0x00011656 ldr r2, [pc, 0x2c0] |
0x00011658 str r3, [r1] | *(r1) = r3;
0x0001165a adds r1, r0, 1 | r1 = r0 + 1;
0x0001165c add.w r0, r3, r1, lsl 2 | r0 = r3 + (r1 << 2);
0x00011660 add r2, pc | r2 = 0x22f7e;
0x00011662 str r0, [r2] | *(r2) = r0;
0x00011664 ldr.w r3, [r3, r1, lsl 2] | offset_0 = r1 << 2;
| r3 = *((r3 + offset_0));
0x00011668 cmp r3, 0 |
| if (r3 == 0) {
0x0001166a beq.w 0x1189e | goto label_5;
| }
0x0001166e mov r3, r0 | r3 = r0;
| do {
0x00011670 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x00011674 cmp r2, 0 |
0x00011676 bne 0x11670 |
| } while (r2 != 0);
| label_2:
0x00011678 ldr r1, [pc, 0x2a0] |
0x0001167a adds r2, r3, 4 | r2 = r3 + 4;
0x0001167c ldr r4, [pc, 0x2a0] |
0x0001167e mov.w r5, 0x800 | r5 = 0x800;
0x00011682 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00011684 add r1, pc | r1 = 0x22fa4;
0x00011686 add r4, pc | r4 = 0x22faa;
0x00011688 str r1, [sp, 0x44] | var_44h = r1;
0x0001168a movs r1, 0 | r1 = 0;
0x0001168c str r2, [r4, 0x50] | *((r4 + 0x50)) = r2;
0x0001168e str r1, [r4, 8] | *((r4 + 8)) = r1;
0x00011690 str r5, [r4, 0x14] | *((r4 + 0x14)) = r5;
0x00011692 cmp r3, 0 |
| if (r3 == 0) {
0x00011694 beq.w 0x118a2 | goto label_6;
| }
0x00011698 mov r6, r1 | r6 = r1;
0x0001169a mov r7, r1 | r7 = r1;
0x0001169c mov lr, r1 | lr = r1;
0x0001169e mov r8, r1 | r8 = r1;
0x000116a0 mov sb, r1 | sb = r1;
0x000116a2 mov sl, r1 | sl = r1;
0x000116a4 mov r4, r1 | r4 = r1;
0x000116a6 mov r5, r1 | r5 = r1;
0x000116a8 strd r1, r1, [sp, 4] | __asm ("strd r1, r1, [var_4h]");
0x000116ac strd r1, r1, [sp, 0xc] | __asm ("strd r1, r1, [var_ch]");
| do {
| label_0:
0x000116b0 subs r3, 3 | r3 -= 3;
0x000116b2 cmp r3, 0x30 |
| if (r3 <= 0x30) {
0x000116b4 bhi 0x11722 |
| /* switch table (49 cases) at 0x116ba */
0x000116b6 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x0001171c ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0001171e movs r6, 1 | r6 = 1;
0x00011720 str r3, [sp, 0x18] | var_18h = r3;
| }
0x00011722 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011726 cmp r3, 0 |
0x00011728 bne 0x116b0 |
| } while (r3 != 0);
| if (r1 != 0) {
| label_1:
0x0001172a cbz r1, 0x11734 |
0x0001172c ldr r3, [pc, 0x1f4] |
0x0001172e ldr r2, [sp, 0x14] | r2 = var_14h;
0x00011730 add r3, pc | r3 = 0x23058;
0x00011732 str r2, [r3, 0x14] | *((r3 + 0x14)) = r2;
| }
| if (r6 != 0) {
0x00011734 cbz r6, 0x1173e |
0x00011736 ldr r3, [pc, 0x1f0] |
0x00011738 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0001173a add r3, pc | r3 = 0x23068;
0x0001173c str r2, [r3, 4] | *((r3 + 4)) = r2;
| }
| if (r7 != 0) {
0x0001173e cbz r7, 0x1174a |
0x00011740 ldr r3, [pc, 0x1e8] |
0x00011742 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00011744 add r3, pc | r3 = 0x23074;
0x00011746 str.w r2, [r3, 0x190] | __asm ("str.w r2, [r3, 0x190]");
| }
0x0001174a cmp.w lr, 0 |
| if (lr != 0) {
0x0001174e beq 0x11758 |
0x00011750 ldr r3, [pc, 0x1dc] |
0x00011752 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00011754 add r3, pc | r3 = 0x23088;
0x00011756 str r2, [r3, 0x3c] | *((r3 + 0x3c)) = r2;
| }
0x00011758 cmp.w r8, 0 |
| if (r8 != 0) {
0x0001175c beq 0x11766 |
0x0001175e ldr r3, [pc, 0x1d4] |
0x00011760 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00011762 add r3, pc | r3 = 0x2309c;
0x00011764 str r2, [r3, 0x24] | *((r3 + 0x24)) = r2;
| }
0x00011766 cmp.w sb, 0 |
| if (sb != 0) {
0x0001176a beq 0x1177c |
0x0001176c ldr r3, [pc, 0x1c8] |
0x0001176e ldr r2, [sp, 0x28] | r2 = var_28h;
0x00011770 add r3, pc | r3 = 0x230ac;
0x00011772 str.w r2, [r3, 0x1a8] | __asm ("str.w r2, [r3, 0x1a8]");
0x00011776 movs r2, 0 | r2 = 0;
0x00011778 str.w r2, [r3, 0x1ac] | __asm ("str.w r2, [r3, 0x1ac]");
| }
0x0001177c cmp.w sl, 0 |
| if (sl != 0) {
0x00011780 beq 0x1178e |
0x00011782 ldr r3, [pc, 0x1b8] |
0x00011784 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00011786 add r3, pc | r3 = 0x230c8;
0x00011788 str r2, [r3, 0x48] | *((r3 + 0x48)) = r2;
0x0001178a movs r2, 0 | r2 = 0;
0x0001178c str r2, [r3, 0x4c] | *((r3 + 0x4c)) = r2;
| }
0x0001178e ldr r3, [sp, 4] | r3 = var_4h;
| if (r3 != 0) {
0x00011790 cbz r3, 0x1179a |
0x00011792 ldr r3, [pc, 0x1ac] |
0x00011794 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00011796 add r3, pc | r3 = 0x230dc;
0x00011798 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
0x0001179a ldr r3, [sp, 8] | r3 = var_8h;
| if (r3 != 0) {
0x0001179c cbz r3, 0x117a6 |
0x0001179e ldr r3, [pc, 0x1a4] |
0x000117a0 ldr r2, [sp, 0x34] | r2 = var_34h;
0x000117a2 add r3, pc | r3 = 0x230ec;
0x000117a4 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
0x000117a6 ldr r3, [sp, 0xc] | r3 = var_ch;
| if (r3 != 0) {
0x000117a8 cbz r3, 0x117ae |
0x000117aa ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000117ac str r3, [sp, 0x44] | var_44h = r3;
| }
0x000117ae ldr r3, [sp, 0x10] | r3 = var_10h;
0x000117b0 cmp r3, 0 |
| if (r3 == 0) {
0x000117b2 beq 0x118a6 | goto label_7;
| }
0x000117b4 ldr r3, [pc, 0x190] |
0x000117b6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000117b8 add r3, pc | r3 = 0x23104;
0x000117ba str r2, [r3, 0x10] | *((r3 + 0x10)) = r2;
0x000117bc b 0x118a6 | goto label_7;
0x000117be ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000117c0 movs r1, 1 | r1 = 1;
0x000117c2 str r3, [sp, 0x14] | var_14h = r3;
0x000117c4 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x000117c8 cmp r3, 0 |
| if (r3 != 0) {
0x000117ca bne.w 0x116b0 | goto label_0;
| }
0x000117ce b 0x1172a | goto label_1;
0x000117d0 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000117d2 movs r7, 1 | r7 = 1;
0x000117d4 str r3, [sp, 0x1c] | var_1ch = r3;
0x000117d6 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x000117da cmp r3, 0 |
| if (r3 != 0) {
0x000117dc bne.w 0x116b0 | goto label_0;
| }
0x000117e0 b 0x1172a | goto label_1;
0x000117e2 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000117e4 mov.w sb, 1 | sb = 1;
0x000117e8 str r3, [sp, 0x28] | var_28h = r3;
0x000117ea ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x000117ee cmp r3, 0 |
| if (r3 != 0) {
0x000117f0 bne.w 0x116b0 | goto label_0;
| }
0x000117f4 b 0x1172a | goto label_1;
0x000117f6 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x000117f8 str r3, [sp, 0x34] | var_34h = r3;
0x000117fa movs r3, 1 | r3 = 1;
0x000117fc str r3, [sp, 8] | var_8h = r3;
0x000117fe ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011800 subs r7, 8 | r7 -= 8;
0x00011802 cmp r3, 0 |
| if (r3 != 0) {
0x00011804 bne.w 0x116b0 | goto label_0;
| }
0x00011808 b 0x1172a | goto label_1;
0x0001180a ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0001180c mov.w lr, 1 | lr = 1;
0x00011810 str r3, [sp, 0x20] | var_20h = r3;
0x00011812 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011816 cmp r3, 0 |
| if (r3 != 0) {
0x00011818 bne.w 0x116b0 | goto label_0;
| }
0x0001181c b 0x1172a | goto label_1;
0x0001181e ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00011820 mov.w r8, 1 | r8 = 1;
0x00011824 str r3, [sp, 0x24] | var_24h = r3;
0x00011826 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x0001182a cmp r3, 0 |
| if (r3 != 0) {
0x0001182c bne.w 0x116b0 | goto label_0;
| }
0x00011830 b 0x1172a | goto label_1;
0x00011832 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00011834 mov.w sl, 1 | sl = 1;
0x00011838 str r3, [sp, 0x2c] | var_2ch = r3;
0x0001183a ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x0001183e cmp r3, 0 |
| if (r3 != 0) {
0x00011840 bne.w 0x116b0 | goto label_0;
| }
0x00011844 b 0x1172a | goto label_1;
0x00011846 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00011848 str r3, [sp, 0x30] | var_30h = r3;
0x0001184a movs r3, 1 | r3 = 1;
0x0001184c str r3, [sp, 4] | var_4h = r3;
0x0001184e ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011852 cmp r3, 0 |
| if (r3 != 0) {
0x00011854 bne.w 0x116b0 | goto label_0;
| }
0x00011858 b 0x1172a | goto label_1;
0x0001185a ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0001185c str r3, [sp, 0x3c] | var_3ch = r3;
0x0001185e movs r3, 1 | r3 = 1;
0x00011860 str r3, [sp, 0xc] | var_ch = r3;
0x00011862 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011866 cmp r3, 0 |
| if (r3 != 0) {
0x00011868 bne.w 0x116b0 | goto label_0;
| }
0x0001186c b 0x1172a | goto label_1;
0x0001186e ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00011870 str r3, [sp, 0x38] | var_38h = r3;
0x00011872 movs r3, 1 | r3 = 1;
0x00011874 str r3, [sp, 0x10] | var_10h = r3;
0x00011876 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x0001187a cmp r3, 0 |
| if (r3 != 0) {
0x0001187c bne.w 0x116b0 | goto label_0;
| }
0x00011880 b 0x1172a | goto label_1;
0x00011882 ldr r4, [r2, 4] | r4 = *((r2 + 4));
0x00011884 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011888 cmp r3, 0 |
| if (r3 != 0) {
0x0001188a bne.w 0x116b0 | goto label_0;
| }
0x0001188e b 0x1172a | goto label_1;
0x00011890 ldr r5, [r2, 4] | r5 = *((r2 + 4));
0x00011892 ldr r3, [r2, 8]! | r3 = *((r2 += 8));
0x00011896 cmp r3, 0 |
| if (r3 != 0) {
0x00011898 bne.w 0x116b0 | goto label_0;
| }
0x0001189c b 0x1172a | goto label_1;
| label_5:
0x0001189e mov r3, r0 | r3 = r0;
0x000118a0 b 0x11678 | goto label_2;
| label_6:
0x000118a2 mov r4, r3 | r4 = r3;
0x000118a4 mov r5, r3 | r5 = r3;
| label_7:
0x000118a6 ldr r6, [pc, 0xa4] |
0x000118a8 bl 0x10e24 | fcn_00010e24 (r0, r1, r2);
0x000118ac movs r0, 0 | r0 = 0;
0x000118ae add r6, pc | r6 = 0x23200;
0x000118b0 bl 0x139d8 | fcn_000139d8 (r0);
0x000118b4 ldr r0, [r6, 8] | r0 = *(0x23208);
| if (r0 == 0) {
0x000118b6 cbz r0, 0x118be | goto label_8;
| }
0x000118b8 ldrb r3, [r0] | r3 = *(r0);
| if (r3 != 0) {
0x000118ba cbnz r3, 0x118ea | goto label_9;
| }
0x000118bc str r3, [r6, 8] | *((r6 + 8)) = r3;
| do {
| label_8:
0x000118be movs r0, 0 | r0 = 0;
0x000118c0 bl 0x13a0c | fcn_00013a0c (r0);
0x000118c4 ldr r3, [pc, 0x88] |
0x000118c6 add r3, pc | r3 = 0x2321a;
0x000118c8 cmp r0, r3 |
| if (r0 == r3) {
0x000118ca beq 0x118f2 | goto label_10;
| }
| label_3:
0x000118cc ldr r3, [pc, 0x84] |
0x000118ce add r3, pc |
0x000118d0 ldr r3, [r3, 8] | r3 = *(0x2322e);
| if (r3 != 0) {
0x000118d2 cbnz r3, 0x11904 | goto label_11;
| }
| label_4:
0x000118d4 ldr r3, [pc, 0x80] |
0x000118d6 mov r0, r5 | r0 = r5;
0x000118d8 add r2, sp, 0x44 | r2 += var_44h;
0x000118da mov r1, r4 | r1 = r4;
0x000118dc add r3, pc |
0x000118de ldr r3, [r3, 0x50] | r3 = *(0x23288);
0x000118e0 blx fp | fp (r0, r1, r2, r3);
0x000118e2 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000118e4 add sp, 0x4c |
0x000118e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x000118ea bl 0x15540 | fcn_00015540 (r0, r1);
0x000118ee str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x000118f0 b 0x118be |
| } while (1);
| label_10:
0x000118f2 ldr r3, [pc, 0x68] |
0x000118f4 add r3, pc | r3 = 0x23256;
0x000118f6 ldr r2, [r3, 0x10] | r2 = *(0x23266);
0x000118f8 subs r3, r2, 1 | r3 = r2 - 1;
0x000118fa ands r0, r3 | r0 &= r3;
0x000118fc subs r0, r2, r0 | r0 = r2 - r0;
0x000118fe bl 0x13a0c | fcn_00013a0c (r0);
0x00011902 b 0x118cc | goto label_3;
| label_11:
0x00011904 bl 0x1410c | fcn_0001410c ();
0x00011908 b 0x118d4 | goto label_4;
| }
[*] Function mmap used 1 times ld-linux-armhf.so.3