[*] 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