[*] Binary protection state of zip
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function popen tear down of zip
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/zip @ 0x12ae8 */
| #include <stdint.h>
|
; (fcn) fcn.00012ae8 () | void fcn_00012ae8 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00012ae8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00012aec mov r7, r0 | r7 = r0;
0x00012aee ldr r5, [pc, 0xec] |
0x00012af0 sub sp, 0x14 |
0x00012af2 mov.w r0, 0x4000 | r0 = 0x4000;
0x00012af6 mov r8, r1 | r8 = r1;
0x00012af8 mov fp, r2 |
0x00012afa mov sb, r3 | sb = r3;
0x00012afc add r5, pc | r5 = 0x256de;
0x00012afe blx 0x2f1c | r0 = fcn_00002f1c ();
0x00012b00 and.w r8, lr, r0, lsl 8 | r8 = lr & (r0 << 8);
| if (? == ?) {
0x00012b04 beq 0x12bd8 | goto label_2;
| }
0x00012b06 orrs.w r3, fp, sb | r3 = fp | sb;
0x00012b0a mov sl, r0 | sl = r0;
| if (r3 == fp) {
0x00012b0c beq 0x12b76 | goto label_3;
| }
0x00012b0e cmp.w sb, -1 |
0x00012b12 it eq |
| if (sb == -1) {
0x00012b14 cmpeq fp, -1 | __asm ("cmpeq fp, -1");
| }
0x00012b18 ittt ne |
| if (sb == -1) {
0x00012b1a movne r4, 0 | r4 = 0;
| }
| if (sb == -1) {
0x00012b1c strne r5, [sp, 0xc] | var_ch = r5;
| }
| if (sb == -1) {
0x00012b1e movne r6, r4 | r6 = r4;
| }
| if (sb != -1) {
0x00012b20 bne 0x12b3c | goto label_4;
| }
0x00012b22 b 0x12b8c | goto label_5;
| do {
0x00012b24 blx 0x2e74 | r0 = fcn_00002e74 ();
0x00012b28 cmp r0, r5 |
| if (r0 != r5) {
0x00012b2a bne 0x12bac | goto label_6;
| }
0x00012b2c adds r0, r0, r4 | r0 += r4;
0x00012b2e adc r6, r6, 0 | __asm ("adc r6, r6, 0");
0x00012b32 cmp r0, fp |
0x00012b34 sbcs.w r3, r6, sb | __asm ("sbcs.w r3, r6, sb");
0x00012b38 mov r4, r0 | r4 = r0;
| if (r0 >= fp) {
0x00012b3a bhs 0x12b76 | goto label_3;
| }
| label_4:
0x00012b3c subs.w r1, fp, r4 | r1 = fp - r4;
0x00012b40 mov.w r3, 0x4000 | r3 = 0x4000;
0x00012b44 sbc.w r2, sb, r6 | __asm ("sbc.w r2, sb, r6");
0x00012b48 cmp r1, r3 |
0x00012b4a sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
0x00012b4e mov r0, sl | r0 = sl;
0x00012b50 it lo |
| if (r1 >= r3) {
0x00012b52 movlo r3, r1 | r3 = r1;
| }
0x00012b54 movs r2, 1 | r2 = 1;
0x00012b56 mov.w r1, 0x4000 | r1 = 0x4000;
0x00012b5a str r7, [sp] | *(sp) = r7;
0x00012b5c blx 0x308c | r0 = popen (r0, r1)
0x00012b60 mov r5, r0 | r5 = r0;
0x00012b62 mov r3, r8 | r3 = r8;
0x00012b64 movs r1, 1 | r1 = 1;
0x00012b66 mov r0, sl | r0 = sl;
0x00012b68 mov r2, r5 | r2 = r5;
0x00012b6a cmp r5, 0 |
0x00012b6c bne 0x12b24 |
| } while (r5 != 0);
| label_0:
0x00012b6e mov r0, r7 | r0 = r7;
0x00012b70 blx 0x2dac | r0 = fcn_00002dac ();
| if (r0 != 0) {
0x00012b74 cbnz r0, 0x12bce | goto label_7;
| }
| label_3:
0x00012b76 mov r0, sl | r0 = sl;
0x00012b78 blx 0x2d94 | fcn_00002d94 ();
0x00012b7c movs r0, 0 | r0 = 0;
| label_1:
0x00012b7e add sp, 0x14 |
0x00012b80 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| do {
0x00012b84 blx 0x2e74 | r0 = fcn_00002e74 ();
0x00012b88 cmp r4, r0 |
| if (r4 != r0) {
0x00012b8a bne 0x12bae | goto label_8;
| }
| label_5:
0x00012b8c mov.w r3, 0x4000 | r3 = 0x4000;
0x00012b90 movs r2, 1 | r2 = 1;
0x00012b92 mov r1, r3 | r1 = r3;
0x00012b94 mov r0, sl | r0 = sl;
0x00012b96 str r7, [sp] | *(sp) = r7;
0x00012b98 blx 0x308c | r0 = popen (r0, r1)
0x00012b9c mov r4, r0 | r4 = r0;
0x00012b9e mov r3, r8 | r3 = r8;
0x00012ba0 movs r1, 1 | r1 = 1;
0x00012ba2 mov r0, sl | r0 = sl;
0x00012ba4 mov r2, r4 | r2 = r4;
0x00012ba6 cmp r4, 0 |
0x00012ba8 bne 0x12b84 |
| } while (r4 != 0);
0x00012baa b 0x12b6e | goto label_0;
| label_6:
0x00012bac ldr r5, [sp, 0xc] | r5 = var_ch;
| label_8:
0x00012bae mov r0, sl | r0 = sl;
0x00012bb0 blx 0x2d94 | fcn_00002d94 ();
0x00012bb4 ldr r3, [pc, 0x28] |
0x00012bb6 movs r2, 0x14 | r2 = 0x14;
0x00012bb8 ldr r0, [pc, 0x28] |
0x00012bba movs r1, 1 | r1 = 1;
0x00012bbc ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x00012bbe add r0, pc | r0 = 0x257a6;
0x00012bc0 ldr r3, [r3] | r3 = *(0x12be0);
0x00012bc2 blx 0x2e74 | r0 = fcn_00002e74 ();
0x00012bc4 ldrd r2, r0, [r8, -0x28] | __asm ("ldrd r2, r0, [r8, -0x28]");
0x00012bc8 add sp, 0x14 |
0x00012bca pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x00012bce mov r0, sl | r0 = sl;
0x00012bd0 blx 0x2d94 | fcn_00002d94 ();
0x00012bd4 movs r0, 0xb | r0 = 0xb;
0x00012bd6 b 0x12b7e | goto label_1;
| label_2:
0x00012bd8 movs r0, 4 | r0 = 4;
0x00012bda b 0x12b7e | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/bin/zip @ 0x14100 */
| #include <stdint.h>
|
; (fcn) fcn.00014100 () | void fcn_00014100 (int16_t arg_0h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| 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;
| r0 = arg1;
| r1 = arg2;
0x00014100 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00014104 mov r3, r0 | r3 = r0;
0x00014106 ldr.w r8, [pc, 0x754] |
0x0001410a mov.w r0, 0x4000 | r0 = 0x4000;
0x0001410e vpush {d8} | __asm ("vpush {d8}");
0x00014112 sub sp, 0x54 |
0x00014114 strd r3, r1, [sp, 0x10] | __asm ("strd r3, r1, [var_10h]");
0x00014118 add r8, pc | r8 = 0x2897a;
0x0001411a blx 0x2f1c | r0 = fcn_00002f1c ();
0x0001411e cmp r0, 0 |
| if (r0 == 0) {
0x00014120 beq.w 0x14762 | goto label_17;
| }
0x00014124 ldr.w r3, [pc, 0x738] |
0x00014128 mov sb, r0 | sb = r0;
0x0001412a ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001412e str r3, [sp, 0x34] | var_34h = r3;
0x00014130 ldr r3, [r3] | r3 = *(0x14860);
0x00014132 cmp r3, 0 |
| if (r3 != 0) {
0x00014134 bne.w 0x14502 | goto label_18;
| }
| label_3:
0x00014138 ldrd r2, r1, [sp, 0x10] | __asm ("ldrd r2, r1, [var_10h]");
0x0001413c ldr.w r3, [pc, 0x724] | r3 = *(0x14864);
0x0001413e adds r7, 0x24 | r7 += 0x24;
0x00014140 cmp.w r1, -1 |
0x00014144 it eq |
| if (r1 == -1) {
0x00014146 cmneq r2, 2 | __asm ("cmneq r2, 2");
| }
0x0001414a and.w r2, r2, r1 | r2 &= r1;
0x0001414c lsls r1, r0, 8 | r1 = r0 << 8;
0x0001414e ldr.w r0, [r8, r3] | r0 = *((r8 + r3));
0x00014152 it eq |
| if (r1 != r0) {
0x00014154 moveq r3, 1 | r3 = 1;
| }
0x00014156 str r2, [sp, 0x30] | var_30h = r2;
0x00014158 sub.w r2, r2, -1 | r2 -= -1;
0x0001415c clz r2, r2 | r2 &= r2;
0x00014160 it ne |
| if (r1 == r0) {
0x00014162 movne r3, 0 | r3 = 0;
| }
0x00014164 lsrs r2, r2, 5 | r2 >>= 5;
0x00014166 str r0, [sp, 0x40] | var_40h = r0;
0x00014168 str r2, [sp, 0x24] | var_24h = r2;
0x0001416a ldr r2, [r0] | r2 = *(r0);
0x0001416c cmp r2, 2 |
0x0001416e ite ne |
| if (r2 == 2) {
0x00014170 movne r3, 0 | r3 = 0;
| }
| if (r2 != 2) {
0x00014172 andeq r3, r3, 1 | r3 &= 1;
| }
0x00014176 cmp r3, 0 |
| if (r3 != 0) {
0x00014178 bne.w 0x146f0 | goto label_19;
| }
0x0001417c movs r2, 1 | r2 = 1;
0x0001417e str r3, [sp, 0x28] | var_28h = r3;
0x00014180 str r2, [sp, 0x2c] | var_2ch = r2;
0x00014182 strd r3, r3, [sp, 0x38] | __asm ("strd r3, r3, [var_38h]");
| label_11:
0x00014186 ldr.w r3, [pc, 0x6e0] | r3 = *(0x1486a);
0x0001418a movs r4, 0 | r4 = 0;
0x0001418c vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00014190 mov r6, r4 | r6 = r4;
0x00014192 mov r5, r4 | r5 = r4;
0x00014194 ldr.w fp, [r8, r3] | fp = *((r8 + r3));
0x00014198 strd r4, r4, [sp, 8] | __asm ("strd r4, r4, [var_8h]");
0x0001419c str.w r4, [fp] | __asm ("str.w r4, [fp]");
0x0001419e ands r0, r0 | r0 &= r0;
| do {
| label_0:
0x000141a0 ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 == 0) {
0x000141a2 cbnz r3, 0x141ce |
0x000141a4 ldr r3, [sp, 8] | r3 = var_8h;
0x000141a6 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000141a8 cmp r3, r2 |
0x000141aa ldr r3, [sp, 0xc] | r3 = var_ch;
0x000141ac ldr r2, [sp, 0x14] | r2 = var_14h;
0x000141ae sbcs r3, r2 | __asm ("sbcs r3, r2");
| if (r3 >= r2) {
0x000141b0 bhs.w 0x144ec | goto label_20;
| }
0x000141b4 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000141b6 ldr r2, [sp, 8] | r2 = var_8h;
0x000141b8 subs.w sl, r3, r2 | sl = r3 - r2;
0x000141bc ldr r3, [sp, 0x14] | r3 = var_14h;
0x000141be ldr r2, [sp, 0xc] | r2 = var_ch;
0x000141c0 sbc.w r3, r3, r2 | __asm ("sbc.w r3, r3, r2");
0x000141c4 cmp.w sl, 0x4000 |
0x000141c8 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (sl <= 0x4000) {
0x000141cc blo 0x141d2 | goto label_21;
| }
| }
0x000141ce mov.w sl, 0x4000 | sl = 0x4000;
| label_21:
0x000141d2 ldr.w r3, [pc, 0x698] | r3 = *(0x1486e);
0x000141d6 ldr.w r7, [r8, r3] | r7 = *((r8 + r3));
0x000141da ldr r0, [r7] | r0 = *(r7);
0x000141dc str r7, [sp, 0x18] | var_18h = r7;
0x000141de blx 0x31b0 | fcn_000031b0 ();
0x000141e2 ldr r3, [r7] | r3 = *(r7);
0x000141e4 movs r2, 1 | r2 = 1;
0x000141e6 strd r1, r0, [sp, 0x1c] | __asm ("strd r1, r0, [var_20h]");
0x000141ea mov.w r1, 0x4000 | r1 = 0x4000;
0x000141ee mov r0, sb | r0 = sb;
0x000141f0 str r3, [sp] | *(sp) = r3;
0x000141f2 mov r3, sl | r3 = sl;
0x000141f4 blx 0x308c | r0 = popen (r0, r1)
0x000141f8 mov r7, r0 | r7 = r0;
0x000141fa cmp r0, 0 |
| if (r0 == 0) {
0x000141fc beq.w 0x144c0 | goto label_22;
| }
0x00014200 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00014202 cmp r3, 0 |
| if (r3 == 0) {
0x00014204 beq.w 0x14320 | goto label_8;
| }
0x00014208 ldr.w r3, [pc, 0x664] | r3 = *(0x14870);
0x0001420c ldrb.w r1, [sb] | r1 = *(sb);
0x00014210 ldr.w r2, [r8, r3] | r2 = *((r8 + r3));
0x00014214 movs r3, 0 | r3 = 0;
0x00014216 cmp r1, 0x50 |
0x00014218 str r3, [r2] | *(r2) = r3;
0x0001421a ldr.w r3, [pc, 0x658] | r3 = *(0x14876);
0x0001421e ldr.w r0, [r8, r3] | r0 = *((r8 + r3));
0x00014222 ldr.w r3, [pc, 0x654] | r3 = *(0x1487a);
0x00014226 vstr d8, [r0] | __asm ("vstr d8, [r0]");
0x0001422a ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001422e vstr d8, [r3] | __asm ("vstr d8, [r3]");
| if (r1 != 0x50) {
0x00014232 bne 0x142de | goto label_23;
| }
0x00014234 ldrb.w r1, [sb, 1] | r1 = *((sb + 1));
0x00014238 cmp r1, 0x4b |
| if (r1 != 0x4b) {
0x0001423a bne 0x142de | goto label_23;
| }
0x0001423c ldrb.w r1, [sb, 2] | r1 = *((sb + 2));
0x00014240 cmp r1, 7 |
| if (r1 != 7) {
0x00014242 bne 0x142de | goto label_23;
| }
0x00014244 ldrb.w r1, [sb, 3] | r1 = *((sb + 3));
0x00014248 cmp r1, 8 |
| if (r1 != 8) {
0x0001424a bne 0x142de | goto label_23;
| }
0x0001424c movs r1, 0 | r1 = 0;
0x0001424e str.w r1, [fp] | __asm ("str.w r1, [fp]");
0x00014252 ldr.w r1, [pc, 0x628] | r1 = *(0x1487e);
0x00014256 ldr.w r1, [r8, r1] | r1 = *((r8 + r1));
0x00014258 asrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x0001425a ldr.w sl, [r1] | sl = *(0x1487e);
0x0001425e cmp.w sl, 0 |
| if (sl == 0) {
0x00014262 beq.w 0x14520 | goto label_24;
| }
0x00014264 strh r5, [r3, 0xa] | *((r3 + 0xa)) = r5;
0x00014266 cmp r7, 0x17 |
| if (r7 < 0x17) {
0x00014268 bls.w 0x14496 | goto label_4;
| }
0x0001426c ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00014270 ldr r7, [sp, 0x38] | r7 = var_38h;
0x00014272 vldr d16, [sb, 0x10] | __asm ("vldr d16, [sb, 0x10]");
0x00014276 str r1, [r2] | *(r2) = r1;
0x00014278 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x0001427c ldr.w r2, [sb, 0xc] | r2 = *((sb + 0xc));
0x0001427e movs r0, 0xc | r0 = 0xc;
0x00014280 vstr d16, [r3] | __asm ("vstr d16, [r3]");
0x00014282 lsrs r0, r0, 0xc | r0 >>= 0xc;
0x00014284 str r1, [r0] | *(r0) = r1;
0x00014286 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00014288 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0001428a subs.w ip, r0, r7 |
0x0001428e ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00014290 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x00014292 sbc.w r7, r7, r0 | __asm ("sbc.w r7, r7, r0");
0x00014296 ldr r0, [sp, 0x18] | r0 = var_18h;
0x00014298 cmp r7, r2 |
0x0001429a it eq |
| if (r7 == r2) {
0x0001429c cmpeq ip, r1 | __asm ("cmpeq ip, r1");
| }
0x0001429e ldr r0, [r0] | r0 = *(r0);
| if (r7 == r2) {
0x000142a0 beq.w 0x14690 | goto label_25;
| }
0x000142a4 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000142a6 movs r1, 0 | r1 = 0;
0x000142a8 ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x000142aa str r1, [sp] | *(sp) = r1;
0x000142ac adds r2, r3, 4 | r2 = r3 + 4;
0x000142ae adc r3, r7, 0 | __asm ("adc r3, r7, 0");
0x000142b2 blx 0x3074 | fread_chk ();
0x000142b4 cdp p8, 0xe, c2, c0, c0, 0 | __asm ("cdp p8, 0xe, c2, c0, c0, 0");
| if (r2 != r3) {
0x000142b8 bne.w 0x14728 | goto label_26;
| }
| label_12:
0x000142bc movs r3, 0 | r3 = 0;
0x000142be movs r2, 4 | r2 = 4;
0x000142c0 movs r1, 1 | r1 = 1;
0x000142c2 mov r0, sb | r0 = sb;
0x000142c4 bl 0x139ac | r0 = fcn_000139ac (r0, r1, r2, r3, r4);
0x000142c8 cmp r0, 4 |
| if (r0 != 4) {
0x000142ca bne.w 0x1470c | goto label_27;
| }
| label_5:
0x000142ce ldr r3, [sp, 8] | r3 = var_8h;
0x000142d0 adds r3, 4 | r3 += 4;
0x000142d2 str r3, [sp, 8] | var_8h = r3;
0x000142d4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x000142d6 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000142da str r3, [sp, 0xc] | var_ch = r3;
0x000142dc b 0x141a0 |
| } while (1);
| label_23:
0x000142de add.w r2, sb, -1 | r2 = sb + -1;
0x000142e2 mov r1, r5 | r1 = r5;
0x000142e4 adds r0, r2, r7 | r0 = r2 + r7;
0x000142e6 mov r5, r6 | r5 = r6;
0x000142e8 b 0x142ec |
| while (r0 != r2) {
0x000142ea mov r5, r6 | r5 = r6;
0x000142ec mov r6, r4 | r6 = r4;
0x000142ee mov ip, r2 |
0x000142f0 ldrb r4, [r2, 1]! | r4 = *((r2 += 1));
0x000142f4 cmp r6, 7 |
0x000142f6 it eq |
| if (r6 == 7) {
0x000142f8 cmpeq r5, 0x4b | __asm ("cmpeq r5, 0x4b");
| }
0x000142fa ite eq |
| if (r6 != 7) {
0x000142fc moveq r3, 1 | r3 = 1;
| }
| if (r6 == 7) {
0x000142fe movne r3, 0 | r3 = 0;
| }
0x00014300 cmp r4, 8 |
0x00014302 ite ne |
| if (r4 == 8) {
0x00014304 movne r3, 0 | r3 = 0;
| }
| if (r4 != 8) {
0x00014306 andeq r3, r3, 1 | r3 &= 1;
| }
0x0001430a cmp r1, 0x50 |
0x0001430c ite ne |
| if (r1 == 0x50) {
0x0001430e movne r3, 0 | r3 = 0;
| }
| if (r1 != 0x50) {
0x00014310 andeq r3, r3, 1 | r3 &= 1;
| }
0x00014314 mov r1, r5 | r1 = r5;
0x00014316 cmp r3, 0 |
| if (r3 != 0) {
0x00014318 bne.w 0x145e4 | goto label_28;
| }
0x0001431c cmp r0, r2 |
0x0001431e bne 0x142ea |
| }
| label_8:
0x00014320 ldr.w r3, [fp] | r3 = *(fp);
0x00014324 cmp r3, 0 |
| if (r3 == 0) {
0x00014326 beq.w 0x14496 | goto label_4;
| }
0x0001432a ldr r3, [sp, 0x34] | r3 = var_34h;
0x0001432c ldr r3, [r3] | r3 = *(r3);
0x0001432e cmp r3, 0 |
| if (r3 == 0) {
0x00014330 beq.w 0x144ec | goto label_20;
| }
| label_2:
0x00014334 ldr.w r3, [pc, 0x548] |
0x00014338 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001433c ldr r3, [r3] | r3 = *(0x14880);
0x0001433e cmp r3, 0 |
| if (r3 == 0) {
0x00014340 bne 0x143c4 |
0x00014342 ldr.w r3, [pc, 0x540] | r3 = *(0x14886);
0x00014346 ldr.w r2, [pc, 0x540] | r2 = *(0x1488a);
0x0001434a ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001434e str r3, [sp, 0x1c] | var_1ch = r3;
0x00014350 ldrd r0, r3, [r3] | __asm ("ldrd r0, r3, [r3]");
0x00014354 ldr.w sl, [r8, r2] | sl = *((r8 + r2));
0x00014358 cmp r0, 1 |
0x0001435a sbcs r2, r3, 0 | __asm ("sbcs r2, r3, 0");
| if (r0 >= 1) {
0x0001435e blt 0x1439c |
0x00014360 ldr.w r2, [pc, 0x528] | r2 = *(0x1488c);
0x00014364 ldr.w r1, [r8, r2] | r1 = *((r8 + r2));
0x00014368 ldr.w r2, [sl] | r2 = *(sl);
0x0001436c str r1, [sp, 0x20] | var_20h = r1;
0x0001436e ldrd ip, r1, [r1] | __asm ("ldrd ip, r1, [r1]");
| if (r2 != 0) {
0x00014372 cbz r2, 0x14382 |
0x00014374 cmp.w r1, -1 |
0x00014378 it eq |
| if (r1 == -1) {
0x0001437a cmpeq ip, -1 | __asm ("cmpeq ip, -1");
| }
| if (r1 == -1) {
0x0001437e beq.w 0x1461e | goto label_29;
| }
0x00014380 strh r6, [r1, 0xa] | *((r1 + 0xa)) = r6;
| }
| label_9:
0x00014382 adds.w r2, r7, ip | r2 = r7 + ip;
0x00014386 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0001438a cmp r2, r0 |
0x0001438c sbcs.w r7, r1, r3 | __asm ("sbcs.w r7, r1, r3");
0x00014390 ldr r7, [sp, 0x20] | r7 = var_20h;
0x00014392 itt ge |
| if (r2 < r0) {
0x00014394 movge r2, 0 | r2 = 0;
| }
| if (r2 < r0) {
0x00014396 movge r1, r2 | r1 = r2;
| }
0x00014398 strd r2, r1, [r7] | __asm ("strd r2, r1, [r7]");
| }
0x0001439c ldr.w r2, [pc, 0x4f0] |
0x000143a0 ldr.w r1, [sl] | r1 = *(sl);
0x000143a4 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x000143a8 ldr r2, [r2] | r2 = *(0x14890);
0x000143aa orrs r2, r1 | r2 |= r1;
| if (r2 == r1) {
0x000143ac beq 0x143c4 | goto label_1;
| }
0x000143ae orrs r3, r0 | r3 |= r0;
| if (r3 == r0) {
0x000143b0 beq 0x143c4 | goto label_1;
| }
0x000143b2 ldr.w r3, [pc, 0x4d8] | r3 = *(0x1488e);
0x000143b6 ldr.w r2, [r8, r3] | r2 = *((r8 + r3));
0x000143ba ldrd r3, r2, [r2] | __asm ("ldrd r3, r2, [r2]");
0x000143be orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x000143c0 beq.w 0x145a0 | goto label_30;
| }
| }
| label_1:
0x000143c4 ldr.w r3, [fp] | r3 = *(fp);
0x000143c8 cmp r3, 0 |
| if (r3 != 0) {
0x000143ca bne.w 0x144ec | goto label_20;
| }
0x000143ce ldrd r3, r2, [sp, 0x2c] | __asm ("ldrd r3, r2, [var_30h]");
0x000143d2 ldr r1, [sp, 0x10] | r1 = var_10h;
0x000143d4 cmp.w r2, -1 |
0x000143d8 ite eq |
| if (r2 != -1) {
0x000143da moveq r3, 0 | r3 = 0;
| }
| if (r2 == -1) {
0x000143dc andne r3, r3, 1 | r3 &= 1;
| }
0x000143e0 ldr r2, [sp, 8] | r2 = var_8h;
0x000143e2 and r3, r3, 1 | r3 &= 1;
0x000143e6 cmp r2, r1 |
0x000143e8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000143ea ldr r1, [sp, 0x14] | r1 = var_14h;
0x000143ec sbcs r2, r1 | __asm ("sbcs r2, r1");
0x000143ee it hs |
| if (r2 < r1) {
0x000143f0 movhs r3, 0 | r3 = 0;
| }
0x000143f2 cmp r3, 0 |
| if (r3 == 0) {
0x000143f4 beq.w 0x141a0 | goto label_0;
| }
0x000143f8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000143fa ldr r0, [r3] | r0 = *(r3);
0x000143fc blx 0x2f94 | fcn_00002f94 ();
0x000143fe stcl p8, c2, [sl] | __asm ("stcl p8, c2, [sl]");
| if (r3 == 0) {
0x00014402 beq.w 0x141a0 | goto label_0;
| }
0x00014406 ldr.w r3, [pc, 0x48c] | r3 = *(0x14896);
0x0001440a ldr.w r7, [r8, r3] | r7 = *((r8 + r3));
0x0001440e ldr.w r3, [pc, 0x488] | r3 = *(0x1489a);
0x00014412 ldr r1, [r7] | r1 = *(r7);
0x00014414 adds r1, 1 | r1++;
0x00014416 str r1, [r7] | *(r7) = r1;
0x00014418 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001441c ldr r2, [r3] | r2 = *(0x1489a);
0x0001441e str r3, [sp, 0x20] | var_20h = r3;
0x00014420 cmp r1, r2 |
| if (r1 >= r2) {
0x00014422 bhs 0x144ec | goto label_20;
| }
0x00014424 ldr.w r3, [pc, 0x474] |
0x00014428 subs r2, 1 | r2--;
0x0001442a cmp r1, r2 |
0x0001442c ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00014430 str r3, [sp, 0x44] | var_44h = r3;
0x00014432 ldr r3, [r3] | r3 = *(0x1489c);
0x00014434 mov r0, r3 | r0 = r3;
| if (r1 == r2) {
0x00014436 beq.w 0x145c0 | goto label_31;
| }
0x00014438 strh r3, [r0, 6] | *((r0 + 6)) = r3;
0x0001443a bl 0x130d4 | r0 = fcn_000130d4 (r0, r1);
0x0001443e mov sl, r0 | sl = r0;
| label_7:
0x00014440 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00014442 ldr r0, [r3] | r0 = *(r3);
0x00014444 blx 0x3068 | wctomb_chk ();
0x00014448 ldr.w r3, [pc, 0x454] |
0x0001444c add r3, pc | r3 = 0x28cf0;
0x0001444e str r3, [sp, 0x1c] | var_1ch = r3;
0x00014450 mov r3, sb | r3 = sb;
0x00014452 mov sb, r5 | sb = r5;
0x00014454 mov r5, r4 | r5 = r4;
0x00014456 mov r4, sl | r4 = sl;
0x00014458 mov sl, r3 | sl = r3;
| label_15:
0x0001445a ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0001445c mov r0, r4 | r0 = r4;
0x0001445e blx 0x3104 | fstat64 ();
0x00014462 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00014464 str r0, [r3] | *(r3) = r0;
0x00014466 cmp r0, 0 |
| if (r0 == 0) {
0x00014468 beq.w 0x14778 | goto label_32;
| }
0x0001446c mov r3, sl | r3 = sl;
0x0001446e mov sl, r4 | sl = r4;
0x00014470 mov r4, r5 | r4 = r5;
0x00014472 mov r5, sb | r5 = sb;
0x00014474 mov sb, r3 | sb = r3;
0x00014476 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00014478 mov r0, sl | r0 = sl;
0x0001447a ldr r3, [r3] | r3 = *(r3);
0x0001447c cmp r3, 2 |
| if (r3 == 2) {
0x0001447e bne 0x14490 |
0x00014480 ldr.w r3, [pc, 0x420] |
0x00014484 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00014486 adds r0, 3 | r0 += 3;
0x00014488 ldr r3, [r3] | r3 = *(0x148a4);
0x0001448a cmp r3, 0 |
| if (r3 != 0) {
0x0001448c bne.w 0x14768 | goto label_33;
| }
| }
0x00014490 blx 0x2d94 | fcn_00002d94 ();
0x00014494 b 0x141a0 | goto label_0;
| label_4:
0x00014496 movs r3, 0 | r3 = 0;
0x00014498 mov r2, r7 | r2 = r7;
0x0001449a movs r1, 1 | r1 = 1;
0x0001449c mov r0, sb | r0 = sb;
0x0001449e bl 0x139ac | r0 = fcn_000139ac (r0, r1, r2, r3, r4);
0x000144a2 cmp r0, r7 |
| if (r0 != r7) {
0x000144a4 bne.w 0x146d4 | goto label_34;
| }
0x000144a8 ldr r3, [sp, 8] | r3 = var_8h;
0x000144aa adds r3, r7, r3 | r3 = r7 + r3;
0x000144ac str r3, [sp, 8] | var_8h = r3;
0x000144ae ldr r3, [sp, 0xc] | r3 = var_ch;
0x000144b0 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000144b4 str r3, [sp, 0xc] | var_ch = r3;
0x000144b6 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000144b8 ldr r3, [r3] | r3 = *(r3);
0x000144ba cmp r3, 0 |
| if (r3 == 0) {
0x000144bc beq 0x143c4 | goto label_1;
| }
0x000144be b 0x14334 | goto label_2;
| label_22:
0x000144c0 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000144c2 cmp.w sl, 0 |
0x000144c6 ldr r3, [r3] | r3 = *(r3);
0x000144c8 sub.w r3, r3, 2 | r3 -= 2;
0x000144cc clz r3, r3 | r3 &= r3;
0x000144d0 lsr.w r3, r3, 5 | r3 >>= 5;
0x000144d4 it eq |
| if (sl != 0) {
0x000144d6 moveq r3, 0 | r3 = 0;
| }
0x000144d8 cmp r3, 0 |
| if (r3 != 0) {
0x000144da bne.w 0x146c8 | goto label_35;
| }
0x000144de ldr r3, [sp, 0x18] | r3 = var_18h;
0x000144e0 ldr r0, [r3] | r0 = *(r3);
0x000144e2 blx 0x2dac | r0 = fcn_00002dac ();
0x000144e6 cmp r0, 0 |
| if (r0 != 0) {
0x000144e8 bne.w 0x146c8 | goto label_35;
| }
| label_20:
0x000144ec mov r0, sb | r0 = sb;
0x000144ee mov.w sl, 0 | sl = 0;
0x000144f2 blx 0x2d94 | fcn_00002d94 ();
| label_6:
0x000144f6 mov r0, sl | r0 = sl;
0x000144f8 add sp, 0x54 |
0x000144fa vpop {d8} | __asm ("vpop {d8}");
0x000144fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x00014502 ldr r3, [pc, 0x37c] |
0x00014504 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00014508 ldr r3, [r3] | r3 = *(0x14882);
0x0001450a cmp r3, 0 |
| if (r3 != 0) {
0x0001450c bne.w 0x14138 | goto label_3;
| }
0x00014510 ldr r3, [pc, 0x378] | r3 = *(0x1488c);
0x00014512 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00014516 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001451a vstr d16, [r3] | __asm ("vstr d16, [r3]");
0x0001451e b 0x14138 | goto label_3;
| label_24:
0x00014520 cmp r7, 0xf |
| if (r7 < 0xf) {
0x00014522 bls 0x14496 | goto label_4;
| }
0x00014524 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00014528 ldr r7, [sp, 0x20] | r7 = var_20h;
0x0001452a str.w sl, [r3, 4] | __asm ("str.w sl, [r3, 4]");
0x0001452e str r1, [r2] | *(r2) = r1;
0x00014530 ldr.w r1, [sb, 0xc] | r1 = *((sb + 0xc));
0x00014534 ldr.w r2, [sb, 8] | r2 = *((sb + 8));
0x00014538 str.w sl, [r0, 4] | __asm ("str.w sl, [r0, 4]");
0x0001453c str r1, [r3] | *(r3) = r1;
0x0001453e ldr r3, [sp, 0x38] | r3 = var_38h;
0x00014540 str r2, [r0] | *(r0) = r2;
0x00014542 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x00014544 subs r1, r7, r3 | r1 = r7 - r3;
0x00014546 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00014548 sbc.w r3, r3, r0 | __asm ("sbc.w r3, r3, r0");
0x0001454c ldr r0, [sp, 0x18] | r0 = var_18h;
0x0001454e cmp sl, r3 |
0x00014550 it eq |
| if (sl == r3) {
0x00014552 cmpeq r2, r1 | __asm ("cmpeq r2, r1");
| }
0x00014554 ldr r0, [r0] | r0 = *(r0);
| if (sl == r3) {
0x00014556 beq 0x1464c | goto label_36;
| }
0x00014558 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001455a adds r2, r7, 4 | r2 = r7 + 4;
0x0001455c str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0001455e adr r0, 0 | r0 = 0;
0x00014560 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00014564 blx 0x3074 | r0 = fread_chk ();
0x00014568 cmp r0, 0 |
| if (r0 != 0) {
0x0001456a bne.w 0x1474c | goto label_37;
| }
| label_14:
0x0001456e movs r3, 0 | r3 = 0;
0x00014570 movs r2, 4 | r2 = 4;
0x00014572 movs r1, 1 | r1 = 1;
0x00014574 mov r0, sb | r0 = sb;
0x00014576 bl 0x139ac | r0 = fcn_000139ac (r0, r1, r2, r3, r4);
0x0001457a cmp r0, 4 |
| if (r0 == 4) {
0x0001457c beq.w 0x142ce | goto label_5;
| }
0x00014580 mov r0, sb | r0 = sb;
0x00014582 blx 0x2d94 | fcn_00002d94 ();
0x00014586 ldr r3, [pc, 0x320] |
0x00014588 movs r2, 0x14 | r2 = 0x14;
0x0001458a ldr r0, [pc, 0x320] |
0x0001458c movs r1, 1 | r1 = 1;
0x0001458e ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00014592 add r0, pc | r0 = 0x28e44;
0x00014594 ldr r3, [r3] | r3 = *(0x148aa);
0x00014596 blx 0x2e74 | fcn_00002e74 ();
| label_10:
0x0001459a mov.w sl, 0xa | sl = 0xa;
0x0001459e b 0x144f6 | goto label_6;
| label_30:
0x000145a0 ldr r3, [pc, 0x304] | r3 = *(0x148a8);
0x000145a2 movs r0, 0x2e | r0 = 0x2e;
0x000145a4 ldr.w r7, [r8, r3] | r7 = *((r8 + r3));
0x000145a8 ldr r1, [r7] | r1 = *(r7);
0x000145aa blx 0x30f8 | qsort ();
0x000145ae ldr r0, [r7] | r0 = *(r7);
0x000145b0 blx 0x2d7c | fcn_00002d7c ();
0x000145b4 ldr r3, [pc, 0x2f8] | r3 = *(0x148b0);
0x000145b6 movs r2, 1 | r2 = 1;
0x000145b8 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000145bc str r2, [r3] | *(r3) = r2;
0x000145be b 0x143c4 | goto label_1;
| label_31:
0x000145c0 str r3, [sp, 0x48] | var_48h = r3;
0x000145c2 blx 0x2fa0 | r0 = fcn_00002fa0 ();
0x000145c6 adds r2, r0, 1 | r2 = r0 + 1;
0x000145c8 mov r0, r2 | r0 = r2;
0x000145ca str r2, [sp, 0x1c] | var_1ch = r2;
0x000145cc blx 0x2f1c | fcn_00002f1c ();
0x000145d0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000145d2 mov sl, r0 | sl = r0;
0x000145d4 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000145d6 cmp r0, 0 |
| if (r0 == 0) {
0x000145d8 beq.w 0x14758 | goto label_38;
| }
0x000145dc mov r1, r3 | r1 = r3;
0x000145de blx 0x2db8 | fcn_00002db8 ();
0x000145e2 b 0x14440 | goto label_7;
| label_28:
0x000145e4 ldr r3, [pc, 0x2cc] | r3 = *(0x148b4);
0x000145e6 sub.w r7, ip, sb | r7 = ip - sb;
0x000145e8 lsls r1, r1, 0x1c | r1 <<= 0x1c;
0x000145ea ldr r2, [sp, 0x18] | r2 = var_18h;
0x000145ec subs r7, 2 | r7 -= 2;
0x000145ee movs r1, 0 | r1 = 0;
0x000145f0 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000145f4 ldr r2, [r2] | r2 = *(r2);
0x000145f6 mov r0, r2 | r0 = r2;
0x000145f8 str r2, [sp, 0x1c] | var_1ch = r2;
0x000145fa ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x000145fe str r1, [sp] | *(sp) = r1;
0x00014600 adds r2, r7, r2 | r2 = r7 + r2;
0x00014602 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00014606 blx 0x3074 | fread_chk ();
0x00014608 ldc p8, c2, [r6, -0]! | __asm ("ldc p8, c2, [r6, -0]!");
0x0001460c bne 0x14684 |
| while (1) {
0x0001460e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00014610 movs r4, 8 | r4 = 8;
0x00014612 movs r6, 7 | r6 = 7;
0x00014614 movs r5, 0x4b | r5 = 0x4b;
0x00014616 ldr r0, [r3] | r0 = *(r3);
0x00014618 blx 0x31b0 | fcn_000031b0 ();
0x0001461c b 0x14320 | goto label_8;
| label_29:
0x0001461e ldr r3, [pc, 0x288] |
0x00014620 movs r0, 0x20 | r0 = 0x20;
0x00014622 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00014626 ldr r1, [r3] | r1 = *(0x148aa);
0x00014628 str r3, [sp, 0x44] | var_44h = r3;
0x0001462a blx 0x30f8 | qsort ();
0x0001462e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00014630 ldr r0, [r3] | r0 = *(0x148aa);
0x00014632 blx 0x2d7c | fcn_00002d7c ();
0x00014636 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00014638 ldr r2, [r3] | r2 = *(0x148aa);
0x0001463a ldr r3, [r3, 4] | r3 = *(0x148ae);
0x0001463c adds.w ip, r2, 1 |
0x00014640 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x00014644 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00014646 ldrd r0, r3, [r3] | __asm ("ldrd r0, r3, [r3]");
0x00014648 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0001464a b 0x14382 | goto label_9;
| label_36:
0x0001464c movs r3, 1 | r3 = 1;
0x0001464e str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00014652 blx 0x31b0 | fcn_000031b0 ();
0x00014656 ldr r1, [sp, 0x18] | r1 = var_18h;
0x00014658 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0001465a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001465c str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00014660 ldr r1, [r1] | r1 = *(r1);
0x00014662 adds r2, 0x10 | r2 += 0x10;
0x00014664 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00014668 mov r0, r1 | r0 = r1;
0x0001466a str r1, [sp, 0x1c] | var_1ch = r1;
0x0001466c blx 0x3074 | r0 = fread_chk ();
0x00014670 cmp r0, 0 |
| if (r0 != 0) {
0x00014672 bne 0x14740 | goto label_39;
| }
| label_13:
0x00014674 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00014676 movs r7, 0x10 | r7 = 0x10;
0x00014678 ldr r0, [r3] | r0 = *(r3);
0x0001467a blx 0x31b0 | fcn_000031b0 ();
0x0001467e strd r0, r1, [sp, 0x38] | __asm ("strd r0, r1, [var_38h]");
0x00014682 b 0x14320 | goto label_8;
0x00014684 ldr r1, [pc, 0x230] |
0x00014686 movs r0, 0xb | r0 = 0xb;
0x00014688 add r1, pc | r1 = 0x28f44;
0x0001468a bl 0x9218 | fcn_00009218 (r0, r1);
0x0001468e b 0x1460e |
| }
| label_25:
0x00014690 movs r3, 1 | r3 = 1;
0x00014692 str.w r3, [fp] | __asm ("str.w r3, [fp]");
0x00014696 blx 0x31b0 | fcn_000031b0 ();
0x00014698 stc p9, c9, [ip, 0x18] | __asm ("stc p9, c9, [ip, 0x18]");
0x0001469c movs r3, 0 | r3 = 0;
0x0001469e ldr r2, [sp, 0x20] | r2 = var_20h;
0x000146a0 str r3, [sp] | *(sp) = r3;
0x000146a2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000146a4 ldr r1, [r1] | r1 = *(r1);
0x000146a6 adds r2, 0x18 | r2 += 0x18;
0x000146a8 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000146ac mov r0, r1 | r0 = r1;
0x000146ae str r1, [sp, 0x1c] | var_1ch = r1;
0x000146b0 blx 0x3074 | r0 = fread_chk ();
0x000146b4 cmp r0, 0 |
0x000146b6 bne 0x14734 |
| while (1) {
0x000146b8 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000146ba movs r7, 0x18 | r7 = 0x18;
0x000146bc ldr r0, [r3] | r0 = *(r3);
0x000146be blx 0x31b0 | fcn_000031b0 ();
0x000146c2 strd r0, r1, [sp, 0x38] | __asm ("strd r0, r1, [var_38h]");
0x000146c6 b 0x14320 | goto label_8;
| label_35:
0x000146c8 mov r0, sb | r0 = sb;
0x000146ca mov.w sl, 0xb | sl = 0xb;
0x000146ce blx 0x2d94 | r0 = fcn_00002d94 ();
0x000146d0 sbc.w r7, r2, r0, lsr 24 | __asm ("sbc.w r7, r2, r0, lsr 24");
| label_34:
0x000146d4 mov r0, sb | r0 = sb;
0x000146d6 blx 0x2d94 | fcn_00002d94 ();
0x000146da ldr r3, [pc, 0x1cc] |
0x000146dc movs r2, 0x14 | r2 = 0x14;
0x000146de ldr r0, [pc, 0x1dc] |
0x000146e0 movs r1, 1 | r1 = 1;
0x000146e2 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000146e6 add r0, pc | r0 = 0x28fa8;
0x000146e8 ldr r3, [r3] | r3 = *(0x148aa);
0x000146ea blx 0x2e74 | fcn_00002e74 ();
0x000146ee b 0x1459a | goto label_10;
| label_19:
0x000146f0 str r3, [sp, 0x24] | var_24h = r3;
0x000146f2 ldr r3, [pc, 0x178] | r3 = *(0x1486e);
0x000146f4 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000146f8 ldr r0, [r3] | r0 = *(0x1486e);
0x000146fa movs r3, 0 | r3 = 0;
0x000146fc str r3, [sp, 0x2c] | var_2ch = r3;
0x000146fe blx 0x31b0 | fcn_000031b0 ();
0x00014702 movs r3, 1 | r3 = 1;
0x00014704 strd r0, r1, [sp, 0x38] | __asm ("strd r0, r1, [var_38h]");
0x00014708 str r3, [sp, 0x28] | var_28h = r3;
0x0001470a b 0x14186 | goto label_11;
| label_27:
0x0001470c mov r0, sb | r0 = sb;
0x0001470e blx 0x2d94 | fcn_00002d94 ();
0x00014712 ldr r3, [pc, 0x194] |
0x00014714 movs r2, 0x14 | r2 = 0x14;
0x00014716 ldr r0, [pc, 0x1a8] |
0x00014718 movs r1, 1 | r1 = 1;
0x0001471a ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x0001471e add r0, pc | r0 = 0x28fe4;
0x00014720 ldr r3, [r3] | r3 = *(0x148aa);
0x00014722 blx 0x2e74 | fcn_00002e74 ();
0x00014724 sub.w r7, r8, r8, ror 24 | r7 = r8 - (r8 >>> 24);
| label_26:
0x00014728 ldr r1, [pc, 0x198] |
0x0001472a movs r0, 0xb | r0 = 0xb;
0x0001472c add r1, pc | r1 = 0x28ff4;
0x0001472e bl 0x9218 | fcn_00009218 (r0, r1);
0x00014732 b 0x142bc | goto label_12;
0x00014734 ldr r1, [pc, 0x190] |
0x00014736 movs r0, 0xb | r0 = 0xb;
0x00014738 add r1, pc | r1 = 0x29004;
0x0001473a bl 0x9218 | fcn_00009218 (r0, r1);
0x0001473e b 0x146b8 |
| }
| label_39:
0x00014740 ldr r1, [pc, 0x188] |
0x00014742 movs r0, 0xb | r0 = 0xb;
0x00014744 add r1, pc | r1 = 0x29014;
0x00014746 bl 0x9218 | fcn_00009218 (r0, r1);
0x0001474a b 0x14674 | goto label_13;
| label_37:
0x0001474c ldr r1, [pc, 0x180] |
0x0001474e movs r0, 0xb | r0 = 0xb;
0x00014750 add r1, pc | r1 = 0x29024;
0x00014752 bl 0x9218 | fcn_00009218 (r0, r1);
0x00014756 b 0x1456e | goto label_14;
| label_38:
0x00014758 ldr r0, [pc, 0x178] |
0x0001475a mov r1, r3 | r1 = r3;
0x0001475c add r0, pc | r0 = 0x29034;
0x0001475e bl 0x9a5c | fcn_00009a5c (r0, r1);
| label_17:
0x00014762 mov.w sl, 4 | sl = 4;
0x00014766 b 0x144f6 | goto label_6;
| label_33:
0x00014768 blx 0x2d94 | fcn_00002d94 ();
0x0001476c mov r0, sb | r0 = sb;
0x0001476e blx 0x2d94 | fcn_00002d94 ();
| do {
0x00014772 mov.w sl, 3 | sl = 3;
0x00014776 b 0x144f6 | goto label_6;
| label_32:
0x00014778 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001477a ldr r2, [r3] | r2 = *(r3);
0x0001477c cmp r2, 1 |
| if (r2 == 1) {
0x0001477e bne 0x1478a |
0x00014780 ldr r2, [pc, 0x120] |
0x00014782 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00014786 ldr r2, [r2] | r2 = *(0x148a4);
| if (r2 != 0) {
0x00014788 cbnz r2, 0x147bc | goto label_40;
| }
| }
0x0001478a ldr r0, [r7] | r0 = *(r7);
0x0001478c bl 0x131c8 | r0 = fcn_000131c8 (r0);
0x00014790 cmp r0, 9 |
| if (r0 == 9) {
0x00014792 beq 0x14840 | goto label_41;
| }
0x00014794 cmp r0, 2 |
| if (r0 == 2) {
0x00014796 beq 0x14816 | goto label_42;
| }
0x00014798 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0001479a ldr r2, [r3] | r2 = *(r3);
0x0001479c cmp r2, 2 |
| if (r2 == 2) {
0x0001479e beq 0x147ee | goto label_43;
| }
| label_16:
0x000147a0 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000147a2 ldr r1, [r7] | r1 = *(r7);
0x000147a4 ldr r3, [r3] | r3 = *(r3);
0x000147a6 subs r3, 1 | r3--;
0x000147a8 cmp r3, r1 |
| if (r3 == r1) {
0x000147aa beq 0x147ca | goto label_44;
| }
0x000147ac ldr r3, [pc, 0x128] | r3 = *(0x148d8);
0x000147ae ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x000147b2 ldr r0, [r3] | r0 = *(0x148d8);
0x000147b4 bl 0x130d4 | r0 = fcn_000130d4 (r0, r1);
0x000147b8 mov r4, r0 | r4 = r0;
0x000147ba b 0x1445a | goto label_15;
| label_40:
0x000147bc mov r0, r4 | r0 = r4;
0x000147be blx 0x2d94 | fcn_00002d94 ();
0x000147c2 mov r0, sl | r0 = sl;
0x000147c4 blx 0x2d94 | fcn_00002d94 ();
0x000147c8 b 0x14772 |
| } while (1);
| label_44:
0x000147ca ldr r3, [sp, 0x44] | r3 = var_44h;
0x000147cc ldr r1, [r3] | r1 = *(r3);
0x000147ce mov r0, r1 | r0 = r1;
0x000147d0 str r1, [sp, 0x4c] | var_4ch = r1;
0x000147d2 blx 0x2fa0 | fcn_00002fa0 ();
0x000147d4 invalid |
0x000147d8 mov r0, r2 | r0 = r2;
0x000147da str r2, [sp, 0x48] | var_48h = r2;
0x000147dc blx 0x2f1c | fcn_00002f1c ();
0x000147e0 ldrd r2, r1, [sp, 0x48] | __asm ("ldrd r2, r1, [var_48h]");
0x000147e4 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000147e6 cbz r0, 0x1480c | goto label_45;
| }
0x000147e8 blx 0x2db8 | fcn_00002db8 ();
0x000147ec b 0x1445a | goto label_15;
| label_43:
0x000147ee ldr r2, [pc, 0xb4] |
0x000147f0 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x000147f4 ldr r2, [r2] | r2 = *(0x148a6);
0x000147f6 cmp r2, 0 |
| if (r2 == 0) {
0x000147f8 beq 0x147a0 | goto label_16;
| }
0x000147fa ldr r0, [pc, 0xe0] |
0x000147fc mov r1, r4 | r1 = r4;
0x000147fe add r0, pc | r0 = 0x290e0;
0x00014800 bl 0x9a5c | fcn_00009a5c (r0, r1);
0x00014804 ldr r3, [r7] | r3 = *(r7);
0x00014806 adds r3, 1 | r3++;
0x00014808 str r3, [r7] | *(r7) = r3;
0x0001480a b 0x147a0 | goto label_16;
| label_45:
0x0001480c ldr r0, [pc, 0xd0] |
0x0001480e add r0, pc | r0 = 0x290f2;
0x00014810 bl 0x9a5c | fcn_00009a5c (r0, r1);
0x00014814 b 0x14762 | goto label_17;
| label_42:
0x00014816 mov r5, r4 | r5 = r4;
0x00014818 ldr r4, [pc, 0xc8] |
0x0001481a mov sb, sl | sb = sl;
0x0001481c movs r1, 1 | r1 = 1;
0x0001481e mov sl, r0 | sl = r0;
0x00014820 add r4, pc | r4 = 0x29108;
0x00014822 mov r0, r4 | r0 = r4;
0x00014824 bl 0x9888 | fcn_00009888 (r0, r1);
0x00014826 invalid |
0x0001482a mov r1, r4 | r1 = r4;
0x0001482c add r0, pc | r0 += pc;
0x0001482e bl 0x9a5c | fcn_00009a5c (r0, r1);
0x00014832 mov r0, r5 | r0 = r5;
0x00014834 blx 0x2d94 | fcn_00002d94 ();
0x00014836 invalid |
0x0001483a blx 0x2d94 | fcn_00002d94 ();
0x0001483e b 0x144f6 | goto label_6;
| label_41:
0x00014840 mov sb, sl | sb = sl;
0x00014842 mov sl, r0 | sl = r0;
0x00014844 ldr r0, [pc, 0xa4] |
0x00014846 mov r1, r4 | r1 = r4;
0x00014848 add r0, pc | r0 = 0x29138;
0x0001484a bl 0x9a5c | fcn_00009a5c (r0, r1);
0x0001484e mov r0, r4 | r0 = r4;
0x00014850 blx 0x2d94 | fcn_00002d94 ();
0x00014854 mov r0, sb | r0 = sb;
0x00014856 blx 0x2d94 | fcn_00002d94 ();
0x00014858 eors.w r6, lr, ip, lsl 25 | r6 = lr ^ (ip << 25);
| }
[*] Function popen used 4 times zip