[*] Binary protection state of mdnsd

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


[*] Function printf tear down of mdnsd

    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x204c */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0000204c ()                                  | void fcn_0000204c (char * arg1, int16_t arg2, char * arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_ch_3;
                                                             |     int16_t var_10h_2;
                                                             |     int16_t var_0h_2;
                                                             |     int16_t var_24h_3;
                                                             |     char * src;
                                                             |     int16_t var_2ah;
                                                             |     int16_t var_2ch;
                                                             |     int16_t var_30h_2;
                                                             |     int16_t var_40h;
                                                             |     int16_t var_44h;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0000204c push.w {r4, r5, r6, r7, r8, sb, sl, lr}       |     
    0x00002050 mov r8, r2                                    |     r8 = r2;
    0x00002052 ldr.w r2, [pc, 0]                             |     r2 = *(0x00002054);
    0x00002054 movs r0, 0                                    |     r0 = 0;
    0x00002056 movs r0, r0                                   |     
    0x00002058 sub sp, 0x48                                  |     
    0x0000205a ldr.w r3, [pc, 0x528]                         |     
    0x0000205e add r2, pc                                    |     r2 += pc;
    0x00002060 ldr.w sb, [pc, 0x524]                         |     
    0x00002064 ldr r3, [r2, r3]                              |     r3 = *((r2 + r3));
    0x00002066 add sb, pc                                    |     sb = 0x45f2;
    0x00002068 ldr r3, [r3]                                  |     r3 = *(0x2586);
    0x0000206a str r3, [sp, 0x44]                            |     var_44h = r3;
    0x0000206c mov.w r3, 0                                   |     r3 = 0;
    0x0000206e lsls r0, r0, 0xc                              |     r0 <<= 0xc;
    0x00002070 cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x00002072 beq.w 0x2504                                  |         goto label_23;
                                                             |     }
    0x00002074 strh r7, [r0, 0x12]                           |     *((r0 + 0x12)) = r7;
    0x00002076 cmp r4, 0                                     |     
                                                             |     if (r4 == 0) {
    0x00002078 beq.w 0x2552                                  |         goto label_24;
                                                             |     }
    0x0000207c ldr r3, [r4]                                  |     r3 = *(r4);
    0x0000207e adds r3, 1                                    |     r3++;
                                                             |     if (r3 != 1) {
    0x00002080 bne.w 0x253c                                  |         goto label_25;
                                                             |     }
    0x00002084 mov r6, r0                                    |     r6 = r0;
    0x00002086 ldrh r0, [r0]                                 |     r0 = *(r0);
    0x00002088 uxth.w sl, r1                                 |     sl = (int16_t) r1;
    0x0000208c mov r7, r1                                    |     r7 = r1;
    0x0000208e cmp r0, 2                                     |     
                                                             |     if (r0 == 2) {
    0x00002090 beq 0x20bc                                    |         goto label_26;
                                                             |     }
    0x00002092 cmp r0, 0xa                                   |     
    0x00002094 it ne                                         |     
                                                             |     if (r0 == 0xa) {
    0x00002096 movne r5, 0x16                                |         r5 = 0x16;
                                                             |     }
    0x00002098 beq 0x20bc                                    |     
                                                             |     while (ip != -1) {
                                                             | label_1:
    0x0000209a ldr.w r2, [pc, 0x4f0]                         |         
    0x0000209e ldr.w r3, [pc, 0x4e4]                         |         r3 = *(0x2586);
    0x000020a2 add r2, pc                                    |         r2 = 0x4634;
    0x000020a4 ldr r3, [r2, r3]                              |         r3 = *(0x4634);
    0x000020a6 ldr r2, [r3]                                  |         r2 = *(0x4634);
    0x000020a8 ldr r3, [sp, 0x44]                            |         r3 = var_44h;
    0x000020aa eors r2, r3                                   |         r2 ^= r3;
    0x000020ac mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x000020b0 bne.w 0x2538                                  |             goto label_27;
                                                             |         }
    0x000020b4 mov r0, r5                                    |         r0 = r5;
    0x000020b6 add sp, 0x48                                  |         
    0x000020b8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc}        |         
                                                             | label_26:
    0x000020bc movs r2, 0x11                                 |         r2 = 0x11;
    0x000020be movs r1, 2                                    |         r1 = 2;
    0x000020c0 blx 0x152c                                    |         r0 = strncmp (r0, r1, r2);
    0x000020c4 cmp r0, 0                                     |         
    0x000020c6 str r0, [r4]                                  |         *(r4) = r0;
                                                             |         if (r0 < 0) {
    0x000020c8 blt 0x211a                                    |             goto label_28;
                                                             |         }
                                                             | label_0:
    0x000020ca cmp.w sl, 0                                   |         
                                                             |         if (sl != 0) {
    0x000020ce bne 0x215a                                    |             goto label_29;
                                                             |         }
    0x000020d0 ldrh r3, [r6]                                 |         r3 = *(r6);
    0x000020d2 cmp r3, 2                                     |         
                                                             |         if (r3 == 2) {
    0x000020d4 beq.w 0x22d4                                  |             goto label_30;
                                                             |         }
    0x000020d8 cmp r3, 0xa                                   |         
                                                             |         if (r3 == 0xa) {
    0x000020da beq 0x2188                                    |             goto label_31;
                                                             |         }
                                                             | label_5:
    0x000020dc movs r2, 0                                    |         r2 = 0;
    0x000020de ldr r0, [r4]                                  |         r0 = *(r4);
    0x000020e0 movs r1, 3                                    |         r1 = 3;
    0x000020e2 blx 0x143c                                    |         r0 = printf_chk ()
    0x000020e6 subs r2, r0, 0                                |         r2 = r0 - 0;
                                                             |         if (r2 >= r0) {
    0x000020e8 bge.w 0x241e                                  |             goto label_32;
                                                             |         }
                                                             | label_9:
    0x000020ec blx 0x1424                                    |         r0 = memset (r0, r1, r2);
    0x000020f0 ldr r5, [r0]                                  |         r5 = *(r0);
                                                             | label_8:
    0x000020f2 ldr.w ip, [r4]                                |         ip = *(r4);
                                                             |         if (r5 != 0) {
    0x000020f6 cbnz r5, 0x2138                               |             goto label_4;
                                                             |         }
    0x000020f8 cmp.w ip, -1                                  |         
    0x000020fc bne 0x209a                                    |         
                                                             |     }
    0x000020fe ldr.w r3, [pc, 0x490]                         |     
    0x00002102 mov.w r2, 0x4b8                               |     r2 = 0x4b8;
    0x00002106 ldr.w r1, [pc, 0x48c]                         |     
    0x0000210a ldr.w r0, [pc, 0x48c]                         |     
    0x0000210e add r3, pc                                    |     r3 = 0x46a4;
    0x00002110 add r1, pc                                    |     r1 = 0x46aa;
    0x00002112 adds r3, 0x2c                                 |     r3 += 0x2c;
    0x00002114 add r0, pc                                    |     r0 = 0x46b2;
    0x00002116 blx 0x15b4                                    |     fcn_000015b4 ();
                                                             | label_28:
    0x0000211a blx 0x131c                                    |     strcasecmp (r0, r1);
    0x0000211e ldrh r3, [r6]                                 |     r3 = *(r6);
    0x00002120 ldr r5, [r0]                                  |     r5 = *(r0);
    0x00002122 cmp r3, 2                                     |     
                                                             |     if (r3 == 2) {
    0x00002124 beq 0x2152                                    |         goto label_33;
                                                             |     }
    0x00002126 ldr.w r0, [pc, 0x474]                         |     
    0x0000212a add r0, pc                                    |     r0 = 0x46cc;
                                                             | label_2:
    0x0000212c blx 0x1340                                    |     sigaction ();
    0x00002130 cmp r5, 0                                     |     
                                                             |     if (r5 == 0) {
    0x00002132 beq 0x20ca                                    |         goto label_0;
                                                             |     }
                                                             | label_3:
    0x00002134 ldr.w ip, [r4]                                |     ip = *(r4);
                                                             | label_4:
    0x00002138 cmp.w ip, -1                                  |     
                                                             |     if (ip == -1) {
    0x0000213c beq 0x209a                                    |         goto label_1;
                                                             |     }
    0x0000213e mov r0, ip                                    |     r0 = ip;
    0x00002140 blx 0x1584                                    |     r0 = fcn_00001584 ();
    0x00002144 cmp r0, 0                                     |     
                                                             |     if (r0 != 0) {
    0x00002146 bne.w 0x2568                                  |         goto label_34;
                                                             |     }
    0x0000214a mov.w r3, -1                                  |     r3 = -1;
    0x0000214e str r3, [r4]                                  |     *(r4) = r3;
    0x00002150 b 0x209a                                      |     goto label_1;
                                                             | label_33:
    0x00002152 ldr.w r0, [pc, 0x44c]                         |     
    0x00002156 add r0, pc                                    |     r0 = 0x46fc;
    0x00002158 b 0x212c                                      |     goto label_2;
                                                             | label_29:
    0x0000215a ldr.w r3, [pc, 0x448]                         |     
    0x0000215e movs r2, 4                                    |     r2 = 4;
    0x00002160 str r2, [sp]                                  |     *(sp) = r2;
    0x00002162 movs r1, 1                                    |     r1 = 1;
    0x00002164 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00002166 movs r2, 2                                    |     r2 = 2;
    0x00002168 add r3, pc                                    |     r3 = 0x4712;
    0x0000216a adds r3, 0x38                                 |     r3 += 0x38;
    0x0000216c blx 0x11f4                                    |     fcn_000011f4 ();
    0x0000216e strex lr, r1, [r2, 0x14]                      |     __asm ("strex lr, r1, [r2, 0x14]");
                                                             |     if (r3 < 0x38) {
    0x00002172 blt.w 0x240e                                  |         goto label_35;
                                                             |     }
    0x00002174 strh r4, [r1, 0xa]                            |     *((r1 + 0xa)) = r4;
    0x00002176 ldrh r3, [r6]                                 |     r3 = *(r6);
    0x00002178 cmp r3, 2                                     |     
                                                             |     if (r3 == 2) {
    0x0000217a beq.w 0x22ce                                  |         goto label_36;
                                                             |     }
    0x0000217c strh r0, [r5, 4]                              |     *((r5 + 4)) = r0;
    0x0000217e cmp r3, 0xa                                   |     
                                                             |     if (r3 != 0xa) {
    0x00002180 bne.w 0x23de                                  |         goto label_37;
                                                             |     }
    0x00002184 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00002186 bne 0x2134                                    |         goto label_3;
                                                             |     }
                                                             | label_31:
    0x00002188 ldr.w r3, [pc, 0x41c]                         |     
    0x0000218c movs r2, 4                                    |     r2 = 4;
    0x0000218e str r2, [sp]                                  |     *(sp) = r2;
    0x00002190 movs r1, 0x29                                 |     r1 = 0x29;
    0x00002192 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00002194 movs r2, 0x31                                 |     r2 = 0x31;
    0x00002196 add r3, pc                                    |     r3 = 0x4742;
    0x00002198 adds r3, 0x38                                 |     r3 += 0x38;
    0x0000219a blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x0000219e subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x000021a0 blt.w 0x2476                                  |         goto label_38;
                                                             |     }
                                                             | label_14:
    0x000021a4 ldr.w ip, [r4]                                |     ip = *(r4);
    0x000021a8 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000021aa bne 0x2138                                    |         goto label_4;
                                                             |     }
    0x000021ac ldr r3, [pc, 0x3fc]                           |     
    0x000021ae movs r2, 4                                    |     r2 = 4;
    0x000021b0 str r2, [sp]                                  |     *(sp) = r2;
    0x000021b2 mov r0, ip                                    |     r0 = ip;
    0x000021b4 movs r2, 0x33                                 |     r2 = 0x33;
    0x000021b6 movs r1, 0x29                                 |     r1 = 0x29;
    0x000021b8 add r3, pc                                    |     r3 = 0x4768;
    0x000021ba adds r3, 0x38                                 |     r3 += 0x38;
    0x000021bc blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x000021c0 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x000021c2 blt.w 0x24c0                                  |         goto label_39;
                                                             |     }
                                                             | label_18:
    0x000021c6 subs.w r3, sl, 0                              |     r3 = sl - 0;
    0x000021ca ldr.w ip, [r4]                                |     ip = *(r4);
    0x000021ce it ne                                         |     
                                                             |     if (r3 == sl) {
    0x000021d0 movne r3, 1                                   |         r3 = 1;
                                                             |     }
    0x000021d2 cmp r5, 0                                     |     
    0x000021d4 it ne                                         |     
                                                             |     if (r5 == 0) {
    0x000021d6 movne r3, 0                                   |         r3 = 0;
                                                             |     }
                                                             |     if (r3 == 0) {
    0x000021d8 cbz r3, 0x2228                                |         goto label_40;
                                                             |     }
    0x000021da ldr r3, [pc, 0x3d4]                           |     r3 = *(0x25b2);
    0x000021dc movs r6, 0x14                                 |     r6 = 0x14;
    0x000021de add.w r5, sp, r6                              |     r5 = sp + r6;
    0x000021e2 ldr.w r3, [sb, r3]                            |     r3 = *((sb + r3));
    0x000021e6 str r6, [sp]                                  |     *(sp) = r6;
    0x000021e8 str.w r8, [sp, 0x24]                          |     __asm ("str.w r8, [var_24h_3]");
    0x000021ec adds r3, 4                                    |     r3 += 4;
    0x000021ee ldm r3, {r0, r1, r2, r3}                      |     r0 = *(r3);
                                                             |     r1 = *((r3 + 4));
                                                             |     r2 = *((r3 + 8));
                                                             |     r3 = *((r3 + 12));
    0x000021f0 stm.w r5, {r0, r1, r2, r3}                    |     *(r5) = r0;
                                                             |     *((r5 + 4)) = r1;
                                                             |     *((r5 + 8)) = r2;
                                                             |     *((r5 + 12)) = r3;
    0x000021f4 mov r3, r5                                    |     r3 = r5;
    0x000021f6 mov r2, r6                                    |     r2 = r6;
    0x000021f8 mov r0, ip                                    |     r0 = ip;
    0x000021fa movs r1, 0x29                                 |     r1 = 0x29;
    0x000021fc blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x00002200 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00002202 blt.w 0x23e6                                  |         goto label_41;
                                                             |     }
                                                             | label_6:
    0x00002206 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00002208 bne 0x2134                                    |         goto label_3;
                                                             |     }
    0x0000220a movs r3, 4                                    |     r3 = 4;
    0x0000220c movs r2, 0x11                                 |     r2 = 0x11;
    0x0000220e str r3, [sp]                                  |     *(sp) = r3;
    0x00002210 movs r1, 0x29                                 |     r1 = 0x29;
    0x00002212 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00002214 add r3, sp, 0xc                               |     r3 += var_ch_3;
    0x00002216 str.w r8, [sp, 0xc]                           |     __asm ("str.w r8, [var_ch_3]");
    0x0000221a blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x0000221e subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00002220 blt.w 0x2486                                  |         goto label_42;
                                                             |     }
                                                             | label_15:
    0x00002224 ldr.w ip, [r4]                                |     ip = *(r4);
                                                             | label_40:
    0x00002228 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0000222a bne 0x2138                                    |         goto label_4;
                                                             |     }
    0x0000222c ldr r3, [pc, 0x384]                           |     
    0x0000222e movs r2, 4                                    |     r2 = 4;
    0x00002230 str r2, [sp]                                  |     *(sp) = r2;
    0x00002232 mov r0, ip                                    |     r0 = ip;
    0x00002234 movs r2, 0x1a                                 |     r2 = 0x1a;
    0x00002236 movs r1, 0x29                                 |     r1 = 0x29;
    0x00002238 add r3, pc                                    |     r3 = 0x47f0;
    0x0000223a adds r3, 0x38                                 |     r3 += 0x38;
    0x0000223c blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x00002240 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00002242 blt.w 0x2498                                  |         goto label_43;
                                                             |     }
                                                             | label_16:
    0x00002246 ldr.w ip, [r4]                                |     ip = *(r4);
    0x0000224a cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0000224c bne.w 0x2138                                  |         goto label_4;
                                                             |     }
    0x00002250 ldr r3, [pc, 0x364]                           |     
    0x00002252 movs r2, 4                                    |     r2 = 4;
    0x00002254 str r2, [sp]                                  |     *(sp) = r2;
    0x00002256 mov r0, ip                                    |     r0 = ip;
    0x00002258 movs r2, 0x10                                 |     r2 = 0x10;
    0x0000225a movs r1, 0x29                                 |     r1 = 0x29;
    0x0000225c add r3, pc                                    |     r3 = 0x4818;
    0x0000225e adds r3, 0x3c                                 |     r3 += 0x3c;
    0x00002260 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x00002264 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00002266 blt.w 0x24d0                                  |         goto label_44;
                                                             |     }
                                                             | label_19:
    0x0000226a ldr.w ip, [r4]                                |     ip = *(r4);
    0x0000226e cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00002270 bne.w 0x2138                                  |         goto label_4;
                                                             |     }
    0x00002274 ldr r6, [pc, 0x344]                           |     
    0x00002276 movs r3, 1                                    |     r3 = 1;
    0x00002278 str r3, [sp]                                  |     *(sp) = r3;
    0x0000227a mov r0, ip                                    |     r0 = ip;
    0x0000227c movs r2, 0x12                                 |     r2 = 0x12;
    0x0000227e movs r1, 0x29                                 |     r1 = 0x29;
    0x00002280 add r6, pc                                    |     r6 = 0x4840;
    0x00002282 add.w r3, r6, 0x40                            |     r3 = r6 + 0x40;
    0x00002286 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x0000228a subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x0000228c blt.w 0x23f6                                  |         goto label_45;
                                                             |     }
                                                             | label_7:
    0x00002290 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x00002292 bne.w 0x2134                                  |         goto label_3;
                                                             |     }
    0x00002296 movs r3, 0xa                                  |     r3 = 0xa;
    0x00002298 str r5, [sp, 0x2c]                            |     var_2ch = r5;
    0x0000229a strh.w r3, [sp, 0x28]                         |     src = r3;
    0x0000229e ldr r3, [pc, 0x320]                           |     r3 = *(0x25c2);
    0x000022a0 str r5, [sp, 0x40]                            |     var_40h = r5;
    0x000022a2 add r5, sp, 0x30                              |     r5 += var_30h_2;
    0x000022a4 strh.w r7, [sp, 0x2a]                         |     var_2ah = r7;
    0x000022a8 ldr.w r3, [sb, r3]                            |     r3 = *((sb + r3));
    0x000022ac ldm r3, {r0, r1, r2, r3}                      |     r0 = *(r3);
                                                             |     r1 = *((r3 + 4));
                                                             |     r2 = *((r3 + 8));
                                                             |     r3 = *((r3 + 12));
    0x000022ae stm.w r5, {r0, r1, r2, r3}                    |     *(r5) = r0;
                                                             |     *((r5 + 4)) = r1;
                                                             |     *((r5 + 8)) = r2;
                                                             |     *((r5 + 12)) = r3;
    0x000022b0 movs r7, r1                                   |     r7 = r1;
    0x000022b2 movs r2, 0x1c                                 |     r2 = 0x1c;
    0x000022b4 ldr r0, [r4]                                  |     r0 = *(r4);
    0x000022b6 add r1, sp, 0x28                              |     r1 += src;
    0x000022b8 blx 0x1430                                    |     r0 = strncpy (r0, r1, r2);
    0x000022bc subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 >= r0) {
    0x000022be bge.w 0x23de                                  |         goto label_37;
                                                             |     }
    0x000022c2 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x000022c6 mov r3, r0                                    |     r3 = r0;
    0x000022c8 ldr r0, [pc, 0x2f8]                           |     
    0x000022ca add r0, pc                                    |     r0 = 0x4892;
    0x000022cc b 0x23cc                                      |     goto label_46;
                                                             | label_36:
    0x000022ce cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000022d0 bne.w 0x2134                                  |         goto label_3;
                                                             |     }
                                                             | label_30:
    0x000022d4 ldr r3, [pc, 0x2f0]                           |     
    0x000022d6 movs r2, 4                                    |     r2 = 4;
    0x000022d8 str r2, [sp]                                  |     *(sp) = r2;
    0x000022da movs r1, 0                                    |     r1 = 0;
    0x000022dc ldr r0, [r4]                                  |     r0 = *(r4);
    0x000022de movs r2, 8                                    |     r2 = 8;
    0x000022e0 add r3, pc                                    |     r3 = 0x48ac;
    0x000022e2 adds r3, 0x38                                 |     r3 += 0x38;
    0x000022e4 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x000022e8 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x000022ea blt.w 0x2432                                  |         goto label_47;
                                                             |     }
                                                             | label_10:
    0x000022ee ldr.w ip, [r4]                                |     ip = *(r4);
    0x000022f2 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000022f4 bne.w 0x2138                                  |         goto label_4;
                                                             |     }
    0x000022f8 ldr r3, [pc, 0x2d0]                           |     r3 = *(0x25cc);
    0x000022fa movs r2, 4                                    |     r2 = 4;
    0x000022fc str r2, [sp]                                  |     *(sp) = r2;
    0x000022fe mov r0, ip                                    |     r0 = ip;
    0x00002300 movs r2, 0xc                                  |     r2 = 0xc;
    0x00002302 mov r1, r5                                    |     r1 = r5;
    0x00002304 movs r0, r0                                   |     
    0x00002306 movs r0, r0                                   |     
    0x00002308 blx 0x11f4                                    |     fcn_000011f4 ();
    0x0000230c cmp.w sl, 0                                   |     
                                                             |     if (sl == 0) {
    0x00002310 beq.w 0x2500                                  |         goto label_48;
                                                             |     }
    0x00002314 ldr r3, [pc, 0x2b8]                           |     
    0x00002316 mov r1, r5                                    |     r1 = r5;
    0x00002318 movs r2, 0x23                                 |     r2 = 0x23;
    0x0000231a ldr.w r3, [sb, r3]                            |     r3 = *((sb + r3));
    0x0000231e ldr r3, [r3, 4]                               |     r3 = *(0x25d4);
    0x00002320 str r3, [sp, 0xc]                             |     var_ch_3 = r3;
    0x00002322 ldr r3, [r6, 4]                               |     r3 = *((r6 + 4));
    0x00002324 str r3, [sp, 0x10]                            |     var_10h_2 = r3;
    0x00002326 movs r3, 8                                    |     r3 = 8;
    0x00002328 str r3, [sp]                                  |     *(sp) = r3;
    0x0000232a add r3, sp, 0xc                               |     r3 += var_ch_3;
    0x0000232c ldr r0, [r4]                                  |     r0 = *(r4);
    0x0000232e blx 0x11f4                                    |     fcn_000011f4 ();
    0x00002330 invalid                                       |     
                                                             |     if (r3 < 8) {
    0x00002334 blt.w 0x2466                                  |         goto label_49;
                                                             |     }
                                                             | label_13:
    0x00002338 ldr.w ip, [r4]                                |     ip = *(r4);
    0x0000233c cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0000233e bne.w 0x2138                                  |         goto label_4;
                                                             |     }
    0x00002342 movs r2, 4                                    |     r2 = 4;
    0x00002344 mov r1, r5                                    |     r1 = r5;
    0x00002346 str r2, [sp]                                  |     *(sp) = r2;
    0x00002348 adds r3, r6, 4                                |     r3 = r6 + 4;
    0x0000234a mov r0, ip                                    |     r0 = ip;
    0x0000234c movs r2, 0x20                                 |     r2 = 0x20;
    0x0000234e blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x00002352 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00002354 blt 0x2454                                    |         goto label_50;
                                                             |     }
                                                             | label_12:
    0x00002356 ldr.w ip, [r4]                                |     ip = *(r4);
    0x0000235a mov r0, ip                                    |     r0 = ip;
    0x0000235c cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0000235e bne.w 0x2138                                  |         goto label_4;
                                                             |     }
                                                             | label_21:
    0x00002362 ldr r3, [pc, 0x270]                           |     
    0x00002364 movs r2, 4                                    |     r2 = 4;
    0x00002366 str r2, [sp]                                  |     *(sp) = r2;
    0x00002368 movs r1, 0                                    |     r1 = 0;
    0x0000236a movs r2, 2                                    |     r2 = 2;
    0x0000236c add r3, pc                                    |     r3 = 0x4946;
    0x0000236e adds r3, 0x3c                                 |     r3 += 0x3c;
    0x00002370 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x00002374 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x00002376 blt 0x2442                                    |         goto label_51;
                                                             |     }
                                                             | label_11:
    0x00002378 ldr.w ip, [r4]                                |     ip = *(r4);
    0x0000237c cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x0000237e bne.w 0x2138                                  |         goto label_4;
                                                             |     }
    0x00002382 ldr r6, [pc, 0x254]                           |     
    0x00002384 movs r3, 1                                    |     r3 = 1;
    0x00002386 mov r1, r5                                    |     r1 = r5;
    0x00002388 str r3, [sp]                                  |     *(sp) = r3;
    0x0000238a mov r0, ip                                    |     r0 = ip;
    0x0000238c movs r2, 0x21                                 |     r2 = 0x21;
    0x0000238e add r6, pc                                    |     r6 = 0x496c;
    0x00002390 add.w r3, r6, 0x40                            |     r3 = r6 + 0x40;
    0x00002394 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x00002398 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x0000239a blt.w 0x24aa                                  |         goto label_52;
                                                             |     }
                                                             | label_17:
    0x0000239e ldr.w ip, [r4]                                |     ip = *(r4);
    0x000023a2 cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000023a4 bne.w 0x2138                                  |         goto label_4;
                                                             |     }
    0x000023a8 movs r3, 2                                    |     r3 = 2;
    0x000023aa movs r2, 0x10                                 |     r2 = 0x10;
    0x000023ac mov r0, ip                                    |     r0 = ip;
    0x000023ae add r1, sp, 0x28                              |     r1 += src;
    0x000023b0 str r5, [sp, 0x2c]                            |     var_2ch = r5;
    0x000023b2 strh.w r7, [sp, 0x2a]                         |     var_2ah = r7;
    0x000023b6 strh.w r3, [sp, 0x28]                         |     src = r3;
    0x000023ba blx 0x1430                                    |     r0 = strncpy (r0, r1, r2);
    0x000023be subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 < r0) {
    0x000023c0 bge 0x23de                                    |         
    0x000023c2 blx 0x1424                                    |         r0 = memset (r0, r1, r2);
    0x000023c6 mov r3, r0                                    |         r3 = r0;
    0x000023c8 ldr r0, [pc, 0x210]                           |         
    0x000023ca add r0, pc                                    |         r0 = 0x49aa;
                                                             | label_46:
    0x000023cc ldr r5, [r3]                                  |         r5 = *(r3);
    0x000023ce blx 0x1340                                    |         sigaction ();
    0x000023d2 ldr r3, [pc, 0x20c]                           |         r3 = *(0x25e2);
    0x000023d4 ldr.w r3, [sb, r3]                            |         r3 = *((sb + r3));
    0x000023d8 ldr r0, [r3]                                  |         r0 = *(0x25e2);
    0x000023da blx 0x1228                                    |         fcn_00001228 ();
                                                             |     }
                                                             | label_37:
    0x000023de cmp r5, 0                                     |     
                                                             |     if (r5 != 0) {
    0x000023e0 bne.w 0x2134                                  |         goto label_3;
                                                             |     }
    0x000023e4 b 0x20dc                                      |     goto label_5;
                                                             | label_41:
    0x000023e6 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x000023ea ldr r5, [r0]                                  |     r5 = *(r0);
    0x000023ec ldr r0, [pc, 0x1f4]                           |     
    0x000023ee add r0, pc                                    |     r0 = 0x49d6;
    0x000023f0 blx 0x1340                                    |     sigaction ();
    0x000023f4 b 0x2206                                      |     goto label_6;
                                                             | label_45:
    0x000023f6 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x000023fa ldr r5, [r0]                                  |     r5 = *(r0);
    0x000023fc mov r8, r0                                    |     r8 = r0;
    0x000023fe cmp r5, 0x16                                  |     
                                                             |     if (r5 == 0x16) {
    0x00002400 beq.w 0x251a                                  |         goto label_53;
                                                             |     }
                                                             | label_22:
    0x00002404 ldr r0, [pc, 0x1e0]                           |     
    0x00002406 add r0, pc                                    |     r0 = 0x49f2;
    0x00002408 blx 0x1340                                    |     sigaction ();
    0x0000240c b 0x2290                                      |     goto label_7;
                                                             | label_35:
    0x0000240e blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x00002412 ldr r5, [r0]                                  |     r5 = *(r0);
    0x00002414 ldr r0, [pc, 0x1d4]                           |     
    0x00002416 add r0, pc                                    |     r0 = 0x4a06;
    0x00002418 blx 0x1340                                    |     sigaction ();
    0x0000241a invalid                                       |     
                                                             | label_32:
    0x0000241e ldr r0, [r4]                                  |     r0 = *(r4);
    0x00002420 orr r2, r2, 0x800                             |     r2 |= 0x800;
    0x00002424 movs r1, 4                                    |     r1 = 4;
    0x00002426 blx 0x143c                                    |     r0 = printf_chk ()
    0x0000242a subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 >= r0) {
    0x0000242c bge.w 0x20f2                                  |         goto label_8;
                                                             |     }
    0x00002430 b 0x20ec                                      |     goto label_9;
                                                             | label_47:
    0x00002432 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x00002436 ldr r5, [r0]                                  |     r5 = *(r0);
    0x00002438 ldr r0, [pc, 0x1b4]                           |     
    0x0000243a add r0, pc                                    |     r0 = 0x4a2e;
    0x0000243c blx 0x1340                                    |     sigaction ();
    0x00002440 b 0x22ee                                      |     goto label_10;
                                                             | label_51:
    0x00002442 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x00002446 mov r3, r0                                    |     r3 = r0;
    0x00002448 ldr r0, [pc, 0x1a8]                           |     
    0x0000244a ldr r5, [r3]                                  |     r5 = *(r3);
    0x0000244c add r0, pc                                    |     r0 = 0x4a44;
    0x0000244e blx 0x1340                                    |     sigaction ();
    0x00002452 b 0x2378                                      |     goto label_11;
                                                             | label_50:
    0x00002454 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x00002458 mov r3, r0                                    |     r3 = r0;
    0x0000245a ldr r0, [pc, 0x19c]                           |     
    0x0000245c ldr r5, [r3]                                  |     r5 = *(r3);
    0x0000245e add r0, pc                                    |     r0 = 0x4a5c;
    0x00002460 blx 0x1340                                    |     sigaction ();
    0x00002464 b 0x2356                                      |     goto label_12;
                                                             | label_49:
    0x00002466 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x0000246a ldr r5, [r0]                                  |     r5 = *(r0);
    0x0000246c ldr r0, [pc, 0x18c]                           |     
    0x0000246e add r0, pc                                    |     r0 = 0x4a6e;
    0x00002470 blx 0x1340                                    |     sigaction ();
    0x00002474 b 0x2338                                      |     goto label_13;
                                                             | label_38:
    0x00002476 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x0000247a ldr r5, [r0]                                  |     r5 = *(r0);
    0x0000247c ldr r0, [pc, 0x180]                           |     
    0x0000247e add r0, pc                                    |     r0 = 0x4a82;
    0x00002480 blx 0x1340                                    |     sigaction ();
    0x00002484 b 0x21a4                                      |     goto label_14;
                                                             | label_42:
    0x00002486 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x0000248a mov r3, r0                                    |     r3 = r0;
    0x0000248c ldr r0, [pc, 0x174]                           |     
    0x0000248e ldr r5, [r3]                                  |     r5 = *(r3);
    0x00002490 add r0, pc                                    |     r0 = 0x4a98;
    0x00002492 blx 0x1340                                    |     sigaction ();
    0x00002496 b 0x2224                                      |     goto label_15;
                                                             | label_43:
    0x00002498 blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x0000249c mov r3, r0                                    |     r3 = r0;
    0x0000249e ldr r0, [pc, 0x168]                           |     
    0x000024a0 ldr r5, [r3]                                  |     r5 = *(r3);
    0x000024a2 add r0, pc                                    |     r0 = 0x4ab0;
    0x000024a4 blx 0x1340                                    |     sigaction ();
    0x000024a8 b 0x2246                                      |     goto label_16;
                                                             | label_52:
    0x000024aa blx 0x1424                                    |     r0 = memset (r0, r1, r2);
    0x000024ae ldr r5, [r0]                                  |     r5 = *(r0);
    0x000024b0 mov r8, r0                                    |     r8 = r0;
    0x000024b2 cmp r5, 0x16                                  |     
                                                             |     if (r5 != 0x16) {
    0x000024b4 beq 0x24e2                                    |         
                                                             | label_20:
    0x000024b6 ldr r0, [pc, 0x154]                           |         
    0x000024b8 add r0, pc                                    |         r0 = 0x4aca;
    0x000024ba blx 0x1340                                    |         sigaction ();
    0x000024be b 0x239e                                      |         goto label_17;
                                                             | label_39:
    0x000024c0 blx 0x1424                                    |         r0 = memset (r0, r1, r2);
    0x000024c4 ldr r5, [r0]                                  |         r5 = *(r0);
    0x000024c6 ldr r0, [pc, 0x148]                           |         
    0x000024c8 add r0, pc                                    |         r0 = 0x4ade;
    0x000024ca blx 0x1340                                    |         sigaction ();
    0x000024ce b 0x21c6                                      |         goto label_18;
                                                             | label_44:
    0x000024d0 blx 0x1424                                    |         r0 = memset (r0, r1, r2);
    0x000024d4 mov r3, r0                                    |         r3 = r0;
    0x000024d6 ldr r0, [pc, 0x13c]                           |         
    0x000024d8 ldr r5, [r3]                                  |         r5 = *(r3);
    0x000024da add r0, pc                                    |         r0 = 0x4af4;
    0x000024dc blx 0x1340                                    |         sigaction ();
    0x000024e0 b 0x226a                                      |         goto label_19;
                                                             |     }
    0x000024e2 movs r2, 4                                    |     r2 = 4;
    0x000024e4 add.w r3, r6, 0x3c                            |     r3 = r6 + 0x3c;
    0x000024e8 str r2, [sp]                                  |     *(sp) = r2;
    0x000024ea movs r1, 0                                    |     r1 = 0;
    0x000024ec ldr r0, [r4]                                  |     r0 = *(r4);
    0x000024ee movs r2, 0x21                                 |     r2 = 0x21;
    0x000024f0 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x000024f4 subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 >= r0) {
    0x000024f6 bge.w 0x239e                                  |         goto label_17;
                                                             |     }
    0x000024fa ldr.w r5, [r8]                                |     r5 = *(r8);
    0x000024fe b 0x24b6                                      |     goto label_20;
                                                             | label_48:
    0x00002500 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00002502 b 0x2362                                      |     goto label_21;
                                                             | label_23:
    0x00002504 ldr r3, [pc, 0x110]                           |     
    0x00002506 movw r2, 0x3c2                                |     r2 = 0x3c2;
    0x0000250a ldr r1, [pc, 0x110]                           |     
    0x0000250c ldr r0, [pc, 0x110]                           |     
    0x0000250e add r3, pc                                    |     r3 = 0x4b2a;
    0x00002510 add r1, pc                                    |     r1 = 0x4b32;
    0x00002512 adds r3, 0x2c                                 |     r3 += 0x2c;
    0x00002514 add r0, pc                                    |     r0 = 0x4b38;
    0x00002516 blx 0x15b4                                    |     fcn_000015b4 ();
                                                             | label_53:
    0x0000251a movs r2, 4                                    |     r2 = 4;
    0x0000251c add.w r3, r6, 0x3c                            |     r3 = r6 + 0x3c;
    0x00002520 str r2, [sp]                                  |     *(sp) = r2;
    0x00002522 movs r1, 0x29                                 |     r1 = 0x29;
    0x00002524 ldr r0, [r4]                                  |     r0 = *(r4);
    0x00002526 movs r2, 0x12                                 |     r2 = 0x12;
    0x00002528 blx 0x11f4                                    |     r0 = fcn_000011f4 ();
    0x0000252c subs r5, r0, 0                                |     r5 = r0 - 0;
                                                             |     if (r5 >= r0) {
    0x0000252e bge.w 0x2290                                  |         goto label_7;
                                                             |     }
    0x00002532 ldr.w r5, [r8]                                |     r5 = *(r8);
    0x00002536 b 0x2404                                      |     goto label_22;
                                                             | label_27:
    0x00002538 blx 0x12ec                                    |     getrlimit ();
                                                             | label_25:
    0x0000253c ldr r3, [pc, 0xe4]                            |     
    0x0000253e mov.w r2, 0x3c4                               |     r2 = 0x3c4;
    0x00002542 ldr r1, [pc, 0xe4]                            |     
    0x00002544 ldr r0, [pc, 0xe4]                            |     
    0x00002546 add r3, pc                                    |     r3 = 0x4b6e;
    0x00002548 add r1, pc                                    |     r1 = 0x4b76;
    0x0000254a adds r3, 0x2c                                 |     r3 += 0x2c;
    0x0000254c add r0, pc                                    |     r0 = 0x4b7c;
    0x0000254e blx 0x15b4                                    |     fcn_000015b4 ();
                                                             | label_24:
    0x00002552 ldr r3, [pc, 0xdc]                            |     
    0x00002554 movw r2, 0x3c3                                |     r2 = 0x3c3;
    0x00002558 ldr r1, [pc, 0xd8]                            |     
    0x0000255a ldr r0, [pc, 0xdc]                            |     
    0x0000255c add r3, pc                                    |     r3 = 0x4b92;
    0x0000255e add r1, pc                                    |     r1 = 0x4b96;
    0x00002560 adds r3, 0x2c                                 |     r3 += 0x2c;
    0x00002562 add r0, pc                                    |     r0 = 0x4ba0;
    0x00002564 blx 0x15b4                                    |     fcn_000015b4 ();
                                                             | label_34:
    0x00002568 ldr r3, [pc, 0xd0]                            |     
    0x0000256a movw r2, 0x4b5                                |     r2 = 0x4b5;
    0x0000256e ldr r1, [pc, 0xd0]                            |     
    0x00002570 ldr r0, [pc, 0xd0]                            |     
    0x00002572 add r3, pc                                    |     r3 = 0x4bb2;
    0x00002574 add r1, pc                                    |     r1 = 0x4bba;
    0x00002576 adds r3, 0x2c                                 |     r3 += 0x2c;
    0x00002578 add r0, pc                                    |     r0 = 0x4bc0;
    0x0000257a blx 0x15b4                                    |     fcn_000015b4 ();
    0x0000257c invalid                                       |     
    0x00002580 ldr r5, [pc, 0x1e8]                           |     r5 = *(0x276c);
    0x00002582 movs r4, r0                                   |     r4 = r0;
    0x00002584 lsls r0, r7, 5                                |     r0 = r7 << 5;
    0x00002586 movs r0, r0                                   |     
    0x00002588 ldr r5, [pc, 0x1c8]                           |     r5 = *(0x2754);
    0x0000258a movs r4, r0                                   |     r4 = r0;
    0x0000258c ldr r5, [pc, 0xd8]                            |     r5 = *(0x2668);
    0x0000258e movs r4, r0                                   |     r4 = r0;
    0x00002590 adds r2, 0x4a                                 |     r2 += 0x4a;
    0x00002592 movs r3, r0                                   |     r3 = r0;
    0x00002594 cmp r2, 0                                     |     
    0x00002596 movs r3, r0                                   |     r3 = r0;
    0x00002598 cmp r5, 0x38                                  |     
    0x0000259a movs r3, r0                                   |     r3 = r0;
    0x0000259c cmp r3, 0x4e                                  |     
    0x0000259e movs r3, r0                                   |     r3 = r0;
    0x000025a0 cmp r3, 0x12                                  |     
    0x000025a2 movs r3, r0                                   |     r3 = r0;
    0x000025a4 adds r1, 0xf0                                 |     r1 += 0xf0;
    0x000025a6 movs r3, r0                                   |     r3 = r0;
    0x000025a8 adds r1, 0xc2                                 |     r1 += 0xc2;
    0x000025aa movs r3, r0                                   |     r3 = r0;
    0x000025ac adds r1, 0xa0                                 |     r1 += 0xa0;
    0x000025ae movs r3, r0                                   |     r3 = r0;
    0x000025b0 lsls r4, r6, 7                                |     r4 = r6 << 7;
    0x000025b2 movs r0, r0                                   |     
    0x000025b4 adds r1, 0x20                                 |     r1 += 0x20;
    0x000025b6 movs r3, r0                                   |     r3 = r0;
    0x000025b8 adds r0, 0xfc                                 |     r0 += 0xfc;
    0x000025ba movs r3, r0                                   |     r3 = r0;
    0x000025bc adds r0, 0xd8                                 |     r0 += 0xd8;
    0x000025be movs r3, r0                                   |     r3 = r0;
    0x000025c0 lsls r4, r7, 7                                |     r4 = r7 << 7;
    0x000025c2 movs r0, r0                                   |     
    0x000025c4 cmp r2, 0x9a                                  |     
    0x000025c6 movs r3, r0                                   |     r3 = r0;
    0x000025c8 adds r0, 0x78                                 |     r0 += 0x78;
    0x000025ca movs r3, r0                                   |     r3 = r0;
    0x000025cc adds r0, 0x54                                 |     r0 += 0x54;
    0x000025ce movs r3, r0                                   |     r3 = r0;
    0x000025d0 lsls r0, r6, 7                                |     r0 = r6 << 7;
    0x000025d2 movs r0, r0                                   |     
    0x000025d4 cmp r7, 0xec                                  |     
    0x000025d6 movs r3, r0                                   |     r3 = r0;
    0x000025d8 cmp r7, 0xca                                  |     
    0x000025da movs r3, r0                                   |     r3 = r0;
    0x000025dc cmp r1, 0x9a                                  |     
    0x000025de movs r3, r0                                   |     r3 = r0;
    0x000025e0 lsls r4, r3, 6                                |     r4 = r3 << 6;
    0x000025e2 movs r0, r0                                   |     
    0x000025e4 cmp r1, 0xbe                                  |     
    0x000025e6 movs r3, r0                                   |     r3 = r0;
    0x000025e8 cmp r2, 0x22                                  |     
    0x000025ea movs r3, r0                                   |     r3 = r0;
    0x000025ec cmp r0, 0xa6                                  |     
    0x000025ee movs r3, r0                                   |     r3 = r0;
    0x000025f0 cmp r0, 0x9e                                  |     
    0x000025f2 movs r3, r0                                   |     r3 = r0;
    0x000025f4 cmp r0, 0xe4                                  |     
    0x000025f6 movs r3, r0                                   |     r3 = r0;
    0x000025f8 cmp r0, 0xb2                                  |     
    0x000025fa movs r3, r0                                   |     r3 = r0;
    0x000025fc cmp r0, 0x82                                  |     
    0x000025fe movs r3, r0                                   |     r3 = r0;
    0x00002600 cmp r0, 0xee                                  |     
    0x00002602 movs r3, r0                                   |     r3 = r0;
    0x00002604 cmp r1, 0x3c                                  |     
    0x00002606 movs r3, r0                                   |     r3 = r0;
    0x00002608 cmp r1, 0x4a                                  |     
    0x0000260a movs r3, r0                                   |     r3 = r0;
    0x0000260c cmp r0, 0x8c                                  |     
    0x0000260e movs r3, r0                                   |     r3 = r0;
    0x00002610 cmp r0, 0xc4                                  |     
    0x00002612 movs r3, r0                                   |     r3 = r0;
    0x00002614 cmp r1, 0x2e                                  |     
    0x00002616 movs r3, r0                                   |     r3 = r0;
    0x00002618 cmp r6, 0x4a                                  |     
    0x0000261a movs r3, r0                                   |     r3 = r0;
    0x0000261c movs r6, 0                                    |     r6 = 0;
    0x0000261e movs r3, r0                                   |     r3 = r0;
    0x00002620 movs r7, 0x74                                 |     r7 = 0x74;
    0x00002622 movs r3, r0                                   |     r3 = r0;
    0x00002624 cmp r6, 0x12                                  |     
    0x00002626 movs r3, r0                                   |     r3 = r0;
    0x00002628 movs r5, 0xc8                                 |     r5 = 0xc8;
    0x0000262a movs r3, r0                                   |     r3 = r0;
    0x0000262c movs r7, 0x60                                 |     r7 = 0x60;
    0x0000262e movs r3, r0                                   |     r3 = r0;
    0x00002630 cmp r5, 0xfc                                  |     
    0x00002632 movs r3, r0                                   |     r3 = r0;
    0x00002634 movs r5, 0xb2                                 |     r5 = 0xb2;
    0x00002636 movs r3, r0                                   |     r3 = r0;
    0x00002638 movs r7, 0x3a                                 |     r7 = 0x3a;
    0x0000263a movs r3, r0                                   |     r3 = r0;
    0x0000263c cmp r5, 0xe6                                  |     
    0x0000263e movs r3, r0                                   |     r3 = r0;
    0x00002640 movs r5, 0x9c                                 |     r5 = 0x9c;
    0x00002642 movs r3, r0                                   |     r3 = r0;
    0x00002644 movs r6, 0xe8                                 |     r6 = 0xe8;
    0x00002646 movs r3, r0                                   |     r3 = r0;
                                                             | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x3314 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00003314 ()                          | void fcn_00003314 (int16_t arg_50h, int16_t arg_54h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int16_t var_10h;
                                                     |     int16_t var_12h;
                                                     |     int16_t var_14h;
                                                     |     int16_t var_18h;
                                                     |     int32_t var_ch;
                                                     |     int32_t var_ch_2;
                                                     |     int32_t var_14h_2;
                                                     |     int32_t var_14h_3;
                                                     |     int16_t var_2ch;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
                                                     |     r3 = arg4;
    0x00003314 mvnsmi lr, 0xb4000                    |     __asm ("mvnsmi lr, aav.0x000000ff");
    0x00003318 sub sp, 0x34                          |     
    0x0000331a ldr r5, [sp, 0x50]                    |     r5 = *(arg_50h);
    0x0000331c mov r6, r3                            |     r6 = r3;
    0x0000331e mov r4, r0                            |     r4 = r0;
    0x00003320 mov r7, r2                            |     r7 = r2;
    0x00003322 ldr r3, [pc, 0x1d4]                   |     r3 = *(0x34fa);
    0x00003324 str r5, [r0, 8]                       |     *((r0 + 8)) = r5;
    0x00003326 mov r5, r1                            |     r5 = r1;
    0x00003328 ldr r1, [pc, 0x1d0]                   |     
    0x0000332a movs r0, 0                            |     r0 = 0;
    0x0000332c strh.w r0, [r4, 0x50]                 |     *((r4 + 0x50)) = r0;
    0x0000332e lsls r0, r2, 1                        |     r0 = r2 << 1;
    0x00003330 mov r2, r0                            |     r2 = r0;
    0x00003332 str r0, [r4, 0x54]                    |     *((r4 + 0x54)) = r0;
    0x00003334 add r1, pc                            |     r1 = 0x6834;
    0x00003336 ldr r0, [r4, 0x28]                    |     r0 = *((r4 + 0x28));
    0x00003338 ldr r3, [r1, r3]                      |     
    0x0000333a movs r1, 3                            |     r1 = 3;
    0x0000333c ldr.w r8, [pc, 0x1c0]                 |     
    0x00003340 ldr r3, [r3]                          |     r3 = *(0x6834);
    0x00003342 str r3, [sp, 0x2c]                    |     var_2ch = r3;
    0x00003344 mov.w r3, 0                           |     r3 = 0;
    0x00003348 ldr r3, [sp, 0x54]                    |     r3 = *(arg_54h);
    0x0000334a add r8, pc                            |     r8 = 0x684e;
    0x0000334c str r3, [r4, 0x4c]                    |     *((r4 + 0x4c)) = r3;
    0x0000334e blx 0x143c                            |     r0 = printf_chk ()
    0x00003352 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00003354 blt.w 0x348c                          |         goto label_3;
                                                     |     }
    0x00003358 orr r2, r0, 0x800                     |     r2 = r0 | 0x800;
    0x0000335c movs r1, 4                            |     r1 = 4;
    0x0000335e ldr r0, [r4, 0x28]                    |     r0 = *((r4 + 0x28));
    0x00003360 blx 0x143c                            |     r0 = printf_chk ()
    0x00003364 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00003366 blt.w 0x34ac                          |         goto label_4;
                                                     |     }
                                                     |     if (r6 != 0) {
    0x0000336a cbz r6, 0x338e                        |         
    0x0000336c add.w sb, r6, 0x1000                  |         sb = r6 + 0x1000;
    0x00003370 ldr.w r6, [sb, 0x594]                 |         r6 = *((sb + 0x594));
    0x00003374 mov r0, r6                            |         r0 = r6;
    0x00003376 blx 0x1418                            |         fcntl ();
    0x0000337a mov r3, r6                            |         r3 = r6;
    0x0000337c str r0, [sp]                          |         *(sp) = r0;
    0x0000337e movs r2, 0x19                         |         r2 = 0x19;
    0x00003380 ldr r0, [r4, 0x28]                    |         r0 = *((r4 + 0x28));
    0x00003382 movs r1, 1                            |         r1 = 1;
    0x00003384 blx 0x11f4                            |         r0 = fcn_000011f4 ();
    0x00003388 cmp r0, 0                             |         
                                                     |         if (r0 < 0) {
    0x0000338a blt.w 0x34c8                          |             goto label_5;
                                                     |         }
                                                     |     }
    0x0000338e ldr r2, [r5]                          |     r2 = *(r5);
    0x00003390 add.w ip, sp, 0x10                    |     
    0x00003394 movs r3, 0                            |     r3 = 0;
    0x00003396 strd r3, r3, [ip, 4]                  |     __asm ("strd r3, r3, [var_14h]");
    0x0000339a cmp r2, 4                             |     
    0x0000339c strd r3, r3, [ip, 0xc]                |     __asm ("strd r3, r3, [var_ch]");
    0x000033a0 strd r3, r3, [ip, 0x14]               |     __asm ("strd r3, r3, [var_14h_2]");
                                                     |     if (r2 == 4) {
    0x000033a4 beq 0x3420                            |         goto label_6;
                                                     |     }
    0x000033a6 ldr r3, [r5, 0x10]                    |     r3 = *((r5 + 0x10));
    0x000033a8 add r6, sp, 0x18                      |     r6 += var_18h;
    0x000033aa ldr r0, [r5, 4]                       |     r0 = *((r5 + 4));
    0x000033ac ldr r1, [r5, 8]                       |     r1 = *((r5 + 8));
    0x000033ae ldr r2, [r5, 0xc]                     |     r2 = *((r5 + 0xc));
    0x000033b0 strh.w r7, [sp, 0x12]                 |     var_12h = r7;
    0x000033b4 stm r6!, {r0, r1, r2, r3}             |     *(r6!) = r0;
                                                     |     *((r6! + 4)) = r1;
                                                     |     *((r6! + 8)) = r2;
                                                     |     *((r6! + 12)) = r3;
    0x000033b6 movs r3, 0xa                          |     r3 = 0xa;
    0x000033b8 movs r6, 0x1c                         |     r6 = 0x1c;
                                                     | label_0:
    0x000033ba mov r1, ip                            |     r1 = ip;
    0x000033bc mov r2, r6                            |     r2 = r6;
    0x000033be ldr r0, [r4, 0x28]                    |     r0 = *((r4 + 0x28));
    0x000033c0 strh.w r3, [sp, 0x10]                 |     var_10h = r3;
    0x000033c4 blx 0x159c                            |     r0 = fcn_0000159c ();
    0x000033c8 cmp r0, 0                             |     
                                                     |     if (r0 >= 0) {
    0x000033ca bge 0x340e                            |         goto label_7;
                                                     |     }
    0x000033cc blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x000033d0 ldr r5, [r0]                          |     r5 = *(r0);
    0x000033d2 cmp r5, 0x73                          |     
                                                     |     if (r5 == 0x73) {
    0x000033d4 beq 0x342e                            |         goto label_8;
                                                     |     }
    0x000033d6 sub.w r3, r5, 0x63                    |     r3 = r5 - 0x63;
    0x000033da cmp r5, 0x71                          |     
    0x000033dc it ne                                 |     
                                                     |     if (r5 != 0x71) {
    0x000033de cmpne r3, 1                           |         __asm ("cmpne r3, 1");
                                                     |     }
                                                     |     if (r5 > 0x71) {
    0x000033e0 bhi 0x346c                            |         goto label_9;
                                                     |     }
    0x000033e2 ldr r3, [pc, 0x120]                   |     
    0x000033e4 ldr.w r3, [r8, r3]                    |     r3 = *((r8 + r3));
    0x000033e8 ldr r3, [r3]                          |     r3 = *(0x3506);
                                                     |     if (r3 != 0) {
    0x000033ea cbnz r3, 0x344e                       |         goto label_10;
                                                     |     }
                                                     | label_2:
    0x000033ec movw r0, 0xff04                       |     
    0x000033f0 movt r0, 0xfffe                       |     r0 = 0xfffeff04;
                                                     |     do {
                                                     | label_1:
    0x000033f4 ldr r2, [pc, 0x110]                   |         
    0x000033f6 ldr r3, [pc, 0x100]                   |         r3 = *(0x34fa);
    0x000033f8 add r2, pc                            |         r2 = 0x6904;
    0x000033fa ldr r3, [r2, r3]                      |         r3 = *(0x6904);
    0x000033fc ldr r2, [r3]                          |         r2 = *(0x6904);
    0x000033fe ldr r3, [sp, 0x2c]                    |         r3 = var_2ch;
    0x00003400 eors r2, r3                           |         r2 ^= r3;
    0x00003402 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00003406 bne 0x34f4                            |             goto label_11;
                                                     |         }
    0x00003408 add sp, 0x34                          |         
    0x0000340a pop.w {r4, r5, r6, r7, r8, sb, pc}    |         
    0x0000340c strh r0, [r6, 0x1e]                   |         *((r6 + 0x1e)) = r0;
                                                     | label_7:
    0x0000340e ldr r2, [pc, 0xfc]                    |         
    0x00003410 movs r1, 4                            |         r1 = 4;
    0x00003412 ldr r0, [pc, 0xfc]                    |         
    0x00003414 add r2, pc                            |         r2 = 0x6926;
    0x00003416 add r0, pc                            |         r0 = 0x692c;
    0x00003418 bl 0x2f4bc                            |         fcn_0002f4bc ();
    0x0000341c movs r0, 0                            |         r0 = 0;
    0x0000341e b 0x33f4                              |         
                                                     |     } while (1);
                                                     | label_6:
    0x00003420 ldr r2, [r5, 4]                       |     r2 = *((r5 + 4));
    0x00003422 movs r3, 2                            |     r3 = 2;
    0x00003424 movs r6, 0x10                         |     r6 = 0x10;
    0x00003426 strh.w r7, [sp, 0x12]                 |     var_12h = r7;
    0x0000342a str r2, [sp, 0x14]                    |     var_14h = r2;
    0x0000342c b 0x33ba                              |     goto label_0;
                                                     | label_8:
    0x0000342e ldr r2, [pc, 0xe4]                    |     
    0x00003430 movs r5, 4                            |     r5 = 4;
    0x00003432 ldr r1, [pc, 0xe4]                    |     
    0x00003434 add.w r0, r4, 0xc                     |     r0 = r4 + 0xc;
    0x00003438 mov r3, r4                            |     r3 = r4;
    0x0000343a str r5, [sp]                          |     *(sp) = r5;
    0x0000343c add r2, pc                            |     r2 = 0x6956;
    0x0000343e add r1, pc                            |     r1 = 0x695c;
    0x00003440 bl 0x1b78                             |     fcn_00001b78 (r0, r1, r2, r3, r4);
    0x00003444 movw r0, 0xff05                       |     
    0x00003448 movt r0, 0xfffe                       |     r0 = 0xfffeff05;
    0x0000344c b 0x33f4                              |     goto label_1;
                                                     | label_10:
    0x0000344e mov r0, r5                            |     r0 = r5;
    0x00003450 ldr r4, [r4, 0x28]                    |     r4 = *((r4 + 0x28));
    0x00003452 blx 0x13cc                            |     fcn_000013cc ();
    0x00003456 ldr r2, [pc, 0xc4]                    |     
    0x00003458 movs r1, 5                            |     r1 = 5;
    0x0000345a strd r5, r0, [sp]                     |     __asm ("strd r5, r0, [sp]");
    0x0000345e mov r3, r4                            |     r3 = r4;
    0x00003460 ldr r0, [pc, 0xbc]                    |     
    0x00003462 add r2, pc                            |     r2 = 0x6984;
    0x00003464 add r0, pc                            |     r0 = 0x6988;
    0x00003466 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x0000346a b 0x33ec                              |     goto label_2;
                                                     | label_9:
    0x0000346c mov r0, r5                            |     r0 = r5;
    0x0000346e ldr r4, [r4, 0x28]                    |     r4 = *((r4 + 0x28));
    0x00003470 blx 0x13cc                            |     fcn_000013cc ();
    0x00003474 ldr r2, [pc, 0xac]                    |     
    0x00003476 movs r1, 4                            |     r1 = 4;
    0x00003478 str r0, [sp, 4]                       |     var_4h = r0;
    0x0000347a mov r3, r4                            |     r3 = r4;
    0x0000347c ldr r0, [pc, 0xa8]                    |     
    0x0000347e add r2, pc                            |     r2 = 0x69a6;
    0x00003480 str r6, [sp, 8]                       |     var_8h = r6;
    0x00003482 str r5, [sp]                          |     *(sp) = r5;
    0x00003484 add r0, pc                            |     r0 = 0x69b0;
    0x00003486 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x0000348a b 0x33ec                              |     goto label_2;
                                                     | label_3:
    0x0000348c blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x00003490 ldr r0, [r0]                          |     r0 = *(r0);
    0x00003492 blx 0x13cc                            |     fcn_000013cc ();
    0x00003496 ldr r2, [pc, 0x94]                    |     
    0x00003498 mov r3, r0                            |     r3 = r0;
    0x0000349a ldr r0, [pc, 0x94]                    |     
    0x0000349c movs r1, 4                            |     r1 = 4;
    0x0000349e add r2, pc                            |     r2 = 0x69d0;
    0x000034a0 add r0, pc                            |     r0 = 0x69d6;
    0x000034a2 bl 0x2f4bc                            |     fcn_0002f4bc ();
                                                     |     do {
    0x000034a6 mvn r0, 0x10000                       |         r0 = ~0x10000;
    0x000034aa b 0x33f4                              |         goto label_1;
                                                     | label_4:
    0x000034ac blx 0x1424                            |         r0 = memset (r0, r1, r2);
    0x000034b0 ldr r0, [r0]                          |         r0 = *(r0);
    0x000034b2 blx 0x13cc                            |         fcn_000013cc ();
    0x000034b6 ldr r2, [pc, 0x7c]                    |         
    0x000034b8 mov r3, r0                            |         r3 = r0;
    0x000034ba ldr r0, [pc, 0x7c]                    |         
    0x000034bc movs r1, 4                            |         r1 = 4;
    0x000034be add r2, pc                            |         r2 = 0x69f8;
    0x000034c0 add r0, pc                            |         r0 = 0x69fe;
    0x000034c2 bl 0x2f4bc                            |         fcn_0002f4bc ();
    0x000034c6 b 0x34a6                              |         
                                                     |     } while (1);
                                                     | label_5:
    0x000034c8 blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x000034cc ldr r0, [r0]                          |     r0 = *(r0);
    0x000034ce ldr.w r5, [sb, 0x594]                 |     r5 = *((sb + 0x594));
    0x000034d2 blx 0x13cc                            |     fcn_000013cc ();
    0x000034d6 ldr r2, [pc, 0x64]                    |     
    0x000034d8 mov r4, r0                            |     r4 = r0;
    0x000034da ldr r0, [pc, 0x64]                    |     
    0x000034dc mov r3, r5                            |     r3 = r5;
    0x000034de movs r1, 4                            |     r1 = 4;
    0x000034e0 str r4, [sp]                          |     *(sp) = r4;
    0x000034e2 add r2, pc                            |     r2 = 0x6a24;
    0x000034e4 add r0, pc                            |     r0 = 0x6a2a;
    0x000034e6 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x000034ea movw r0, 0xfffc                       |     
    0x000034ee movt r0, 0xfffe                       |     r0 = 0xfffefffc;
    0x000034f2 b 0x33f4                              |     goto label_1;
                                                     | label_11:
    0x000034f4 blx 0x12ec                            |     getrlimit ();
    0x000034f8 lsls r0, r7, 5                        |     r0 = r7 << 5;
    0x000034fa movs r0, r0                           |     
    0x000034fc subs r2, 0xa4                         |     r2 -= 0xa4;
    0x000034fe movs r4, r0                           |     r4 = r0;
    0x00003500 subs r2, 0x8e                         |     r2 -= 0x8e;
    0x00003502 movs r4, r0                           |     r4 = r0;
    0x00003504 lsls r4, r0, 6                        |     r4 = r0 << 6;
    0x00003506 movs r0, r0                           |     
    0x00003508 subs r1, 0xe0                         |     r1 -= 0xe0;
    0x0000350a movs r4, r0                           |     r4 = r0;
    0x0000350c subs r4, r5, 0                        |     r4 = r5 - 0;
    0x0000350e movs r3, r0                           |     r3 = r0;
    0x00003510 asrs r2, r5, 0x12                     |     r2 = r5 >> 0x12;
    0x00003512 movs r3, r0                           |     r3 = r0;
    0x00003514 invalid                               |     
                                                     | }
    ; assembly                                                                                                                                       | /* r2dec pseudo code output */
                                                                                                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x3744 */
                                                                                                                                                     | #include <stdint.h>
                                                                                                                                                     |  
    ; (fcn) fcn.00003744 ()                                                                                                                          | void fcn_00003744 (uint32_t arg1, uint32_t arg2) {
                                                                                                                                                     |     int16_t var_0h;
                                                                                                                                                     |     char * var_8h;
                                                                                                                                                     |     int16_t var_ah;
                                                                                                                                                     |     int16_t var_eh;
                                                                                                                                                     |     int16_t var_10h;
                                                                                                                                                     |     char * src;
                                                                                                                                                     |     int16_t var_16h;
                                                                                                                                                     |     int16_t var_18h;
                                                                                                                                                     |     int16_t var_24h;
                                                                                                                                                     |     r0 = arg1;
                                                                                                                                                     |     r1 = arg2;
    0x00003744 blmi 0x9b0b6c                                                                                                                         |     __asm ("blmi aav.0x000000ff");
    0x00003748 add r3, pc                                                                                                                            |     r3 += pc;
    0x0000374a cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 == 0) {
    0x0000374c beq 0x37c8                                                                                                                            |         goto label_8;
                                                                                                                                                     |     }
    0x0000374e ldr r2, [pc, 0x94]                                                                                                                    |     
    0x00003750 ldr r2, [r3, r2]                                                                                                                      |     r2 = *((r3 + r2));
    0x00003752 ldr r2, [r2]                                                                                                                          |     r2 = *(0x37e6);
    0x00003754 cmp r2, r1                                                                                                                            |     
                                                                                                                                                     |     if (r2 == r1) {
    0x00003756 beq 0x37bc                                                                                                                            |         goto label_9;
                                                                                                                                                     |     }
    0x00003758 ldr r2, [pc, 0x8c]                                                                                                                    |     
    0x0000375a ldr r2, [r3, r2]                                                                                                                      |     r2 = *((r3 + r2));
    0x0000375c ldr r2, [r2]                                                                                                                          |     r2 = *(0x37e8);
    0x0000375e cmp r2, r1                                                                                                                            |     
                                                                                                                                                     |     if (r2 == r1) {
    0x00003760 beq 0x37c2                                                                                                                            |         goto label_10;
                                                                                                                                                     |     }
    0x00003762 ldr r2, [pc, 0x88]                                                                                                                    |     r2 = *(0x37ee);
    0x00003764 ldr r3, [r3, r2]                                                                                                                      |     r3 = *((r3 + r2));
    0x00003766 ldr r3, [r3]                                                                                                                          |     r3 = *(r3);
    0x00003768 cmp r3, r1                                                                                                                            |     
    0x0000376a it eq                                                                                                                                 |     
                                                                                                                                                     |     if (r3 != r1) {
    0x0000376c moveq r0, 0                                                                                                                           |         r0 = 0;
                                                                                                                                                     |     }
                                                                                                                                                     |     if (r3 == r1) {
    0x0000376e beq 0x3794                                                                                                                            |         goto label_0;
                                                                                                                                                     |     }
    0x00003770 add.w r0, r0, 0x1000                                                                                                                  |     r0 += 0x1000;
    0x00003774 ldr.w r3, [r0, 0xf68]                                                                                                                 |     r3 = *((r0 + 0xf68));
    0x00003778 cmp r1, r3                                                                                                                            |     
    0x0000377a it ne                                                                                                                                 |     
                                                                                                                                                     |     if (r1 != r3) {
    0x0000377c cmpne r3, 0                                                                                                                           |         __asm ("cmpne r3, 0");
                                                                                                                                                     |     }
                                                                                                                                                     |     if (r1 == r3) {
    0x0000377e beq 0x378a                                                                                                                            |         goto label_11;
                                                                                                                                                     |     }
                                                                                                                                                     |     do {
    0x00003780 ldr r3, [r3]                                                                                                                          |         r3 = *(r3);
    0x00003782 cmp r3, 0                                                                                                                             |         
    0x00003784 it ne                                                                                                                                 |         
                                                                                                                                                     |         if (r3 != 0) {
    0x00003786 cmpne r1, r3                                                                                                                          |             __asm ("cmpne r1, r3");
                                                                                                                                                     |         }
    0x00003788 bne 0x3780                                                                                                                            |         
                                                                                                                                                     |     } while (r3 != 0);
                                                                                                                                                     |     if (r3 != 0) {
                                                                                                                                                     | label_11:
    0x0000378a cbz r3, 0x3796                                                                                                                        |         
    0x0000378c add.w r3, r3, 0x1000                                                                                                                  |         r3 += 0x1000;
    0x00003790 ldr.w r0, [r3, 0x59c]                                                                                                                 |         r0 = *((r3 + 0x59c));
                                                                                                                                                     | label_0:
    0x00003794 pop {r3, pc}                                                                                                                          |         
                                                                                                                                                     |     }
    0x00003796 ldr r3, [pc, 0x58]                                                                                                                    |     
    0x00003798 add r3, pc                                                                                                                            |     r3 = 0x6f8e;
    0x0000379a ldr r0, [r3, 4]                                                                                                                       |     r0 = *(0x6f92);
    0x0000379c cmp r0, 0                                                                                                                             |     
    0x0000379e it ne                                                                                                                                 |     
                                                                                                                                                     |     if (r0 != 0) {
    0x000037a0 cmpne r1, r0                                                                                                                          |         __asm ("cmpne r1, r0");
                                                                                                                                                     |     }
                                                                                                                                                     |     if (r0 == 0) {
    0x000037a2 beq 0x37ae                                                                                                                            |         goto label_12;
                                                                                                                                                     |     }
                                                                                                                                                     |     do {
    0x000037a4 ldr r0, [r0]                                                                                                                          |         r0 = *(r0);
    0x000037a6 cmp r0, 0                                                                                                                             |         
    0x000037a8 it ne                                                                                                                                 |         
                                                                                                                                                     |         if (r0 != 0) {
    0x000037aa cmpne r1, r0                                                                                                                          |             __asm ("cmpne r1, r0");
                                                                                                                                                     |         }
    0x000037ac bne 0x37a4                                                                                                                            |         
                                                                                                                                                     |     } while (r0 != 0);
                                                                                                                                                     | label_12:
    0x000037ae cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 == 0) {
    0x000037b0 beq 0x3794                                                                                                                            |         goto label_0;
                                                                                                                                                     |     }
    0x000037b2 add.w r0, r0, 0x1000                                                                                                                  |     r0 += 0x1000;
    0x000037b6 ldr.w r0, [r0, 0x59c]                                                                                                                 |     r0 = *((r0 + 0x59c));
    0x000037ba pop {r3, pc}                                                                                                                          |     
                                                                                                                                                     | label_9:
    0x000037bc mov.w r0, -1                                                                                                                          |     r0 = -1;
    0x000037c0 pop {r3, pc}                                                                                                                          |     
                                                                                                                                                     | label_10:
    0x000037c2 mvn r0, 2                                                                                                                             |     r0 = ~2;
    0x000037c6 pop {r3, pc}                                                                                                                          |     
                                                                                                                                                     | label_8:
    0x000037c8 ldr r3, [pc, 0x28]                                                                                                                    |     
    0x000037ca movw r2, 0x377                                                                                                                        |     r2 = 0x377;
    0x000037ce ldr r1, [pc, 0x28]                                                                                                                    |     
    0x000037d0 ldr r0, [pc, 0x28]                                                                                                                    |     
    0x000037d2 add r3, pc                                                                                                                            |     r3 = 0x6fca;
    0x000037d4 add r1, pc                                                                                                                            |     r1 = 0x6fd2;
    0x000037d6 adds r3, 0xd0                                                                                                                         |     r3 += 0xd0;
    0x000037d8 add r0, pc                                                                                                                            |     r0 = 0x6fd8;
    0x000037da blx 0x15b4                                                                                                                            |     fcn_000015b4 ();
    0x000037de nop                                                                                                                                   |     
    0x000037e0 adds r6, 0x90                                                                                                                         |     r6 += 0x90;
    0x000037e2 movs r4, r0                                                                                                                           |     r4 = r0;
    0x000037e4 lsls r0, r2, 7                                                                                                                        |     r0 = r2 << 7;
    0x000037e6 movs r0, r0                                                                                                                           |     
    0x000037e8 lsls r4, r3, 5                                                                                                                        |     r4 = r3 << 5;
    0x000037ea movs r0, r0                                                                                                                           |     
    0x000037ec lsls r4, r1, 7                                                                                                                        |     r4 = r1 << 7;
    0x000037ee movs r0, r0                                                                                                                           |     
    0x000037f0 ldrh r4, [r5, 0x14]                                                                                                                   |     r4 = *((r5 + 0x14));
    0x000037f2 movs r5, r0                                                                                                                           |     r5 = r0;
    0x000037f4 subs r6, r0, r6                                                                                                                       |     r6 = r0 - r6;
    0x000037f6 movs r3, r0                                                                                                                           |     r3 = r0;
    0x000037f8 asrs r4, r7, 0xc                                                                                                                      |     r4 = r7 >> 0xc;
    0x000037fa movs r3, r0                                                                                                                           |     r3 = r0;
    0x000037fc asrs r4, r2, 0x1a                                                                                                                     |     r4 = r2 >> 0x1a;
    0x000037fe movs r3, r0                                                                                                                           |     r3 = r0;
    0x00003800 ldr r2, [pc, 0x1ec]                                                                                                                   |     
    0x00003802 ldr r3, [pc, 0x1f0]                                                                                                                   |     r3 = *(0x39f6);
    0x00003804 push.w {r4, r5, r6, r7, r8, lr}                                                                                                       |     
    0x00003808 sub sp, 0x28                                                                                                                          |     
    0x0000380a add r2, pc                                                                                                                            |     r2 = 0x71fe;
    0x0000380c ldr r7, [pc, 0x1e8]                                                                                                                   |     
    0x0000380e ldr r3, [r2, r3]                                                                                                                      |     
    0x00003810 add r7, pc                                                                                                                            |     r7 = 0x720c;
    0x00003812 ldr r3, [r3]                                                                                                                          |     r3 = *(0x71fe);
    0x00003814 str r3, [sp, 0x24]                                                                                                                    |     var_24h = r3;
    0x00003816 mov.w r3, 0                                                                                                                           |     r3 = 0;
    0x0000381a cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 == 0) {
    0x0000381c beq.w 0x39cc                                                                                                                          |         goto label_13;
                                                                                                                                                     |     }
    0x00003820 movs r1, 2                                                                                                                            |     r1 = 2;
    0x00003822 movs r2, 0x11                                                                                                                         |     r2 = 0x11;
    0x00003824 mov r4, r0                                                                                                                            |     r4 = r0;
    0x00003826 mov r0, r1                                                                                                                            |     r0 = r1;
    0x00003828 blx 0x152c                                                                                                                            |     strncmp (r0, r1, r2);
    0x0000382c movs r3, 2                                                                                                                            |     r3 = 2;
    0x0000382e add.w r8, sp, 0x14                                                                                                                    |     r8 += src;
    0x00003832 strh.w r3, [sp, 0x14]                                                                                                                 |     src = r3;
    0x00003836 movs r2, 0x10                                                                                                                         |     r2 = 0x10;
    0x00003838 ldr r3, [pc, 0x1c0]                                                                                                                   |     r3 = *(0x39fc);
    0x0000383a mov r1, r8                                                                                                                            |     r1 = r8;
    0x0000383c mov r6, r0                                                                                                                            |     r6 = r0;
    0x0000383e ldr r3, [r7, r3]                                                                                                                      |     r3 = *((r7 + r3));
    0x00003840 ldrh r3, [r3]                                                                                                                         |     r3 = *(r3);
    0x00003842 strh.w r3, [sp, 0x16]                                                                                                                 |     var_16h = r3;
    0x00003846 movs r3, 0                                                                                                                            |     r3 = 0;
    0x00003848 str r3, [sp, 0x1c]                                                                                                                    |     *((sp + 0x1c)) = r3;
    0x0000384a blx 0x1430                                                                                                                            |     r0 = strncpy (r0, r1, r2);
    0x0000384e mov r5, r0                                                                                                                            |     r5 = r0;
    0x00003850 mov r0, r6                                                                                                                            |     r0 = r6;
    0x00003852 blx 0x1584                                                                                                                            |     fcn_00001584 ();
    0x00003856 cmp r5, 0                                                                                                                             |     
    0x00003858 beq 0x38e8                                                                                                                            |     
                                                                                                                                                     |     while (1) {
    0x0000385a add.w r6, r4, 0x1840                                                                                                                  |         r6 = r4 + 0x1840;
    0x0000385e movs r3, 0                                                                                                                            |         r3 = 0;
    0x00003860 add.w r5, r4, 0x1000                                                                                                                  |         r5 = r4 + 0x1000;
    0x00003864 adds r6, 0xc                                                                                                                          |         r6 += 0xc;
    0x00003866 strb.w r3, [r5, 0x84c]                                                                                                                |         *((r5 + 0x84c)) = r3;
    0x0000386a mov r0, r6                                                                                                                            |         r0 = r6;
    0x0000386c bl 0x1e5c                                                                                                                             |         fcn_00001e5c (r0);
    0x00003870 ldrb.w r3, [r5, 0x84c]                                                                                                                |         r3 = *((r5 + 0x84c));
    0x00003874 cmp r3, 0                                                                                                                             |         
                                                                                                                                                     |         if (r3 == 0) {
    0x00003876 beq.w 0x39b4                                                                                                                          |             goto label_14;
                                                                                                                                                     |         }
                                                                                                                                                     | label_4:
    0x0000387a add.w r6, r4, 0x18c0                                                                                                                  |         r6 = r4 + 0x18c0;
    0x0000387e movs r3, 0                                                                                                                            |         r3 = 0;
    0x00003880 adds r6, 0xd                                                                                                                          |         r6 += 0xd;
    0x00003882 strb.w r3, [r5, 0x88c]                                                                                                                |         *((r5 + 0x88c)) = r3;
    0x00003886 bx r6                                                                                                                                 |         return uint32_t (*r6)() ();
    0x00003888 bl 0x1e5c                                                                                                                             |         r0 = fcn_00001e5c (r0);
    0x0000388c movs r2, r0                                                                                                                           |         r2 = r0;
    0x0000388e movs r0, r0                                                                                                                           |         
    0x00003890 cmp r3, 1                                                                                                                             |         
                                                                                                                                                     |         if (r3 == 1) {
    0x00003892 beq.w 0x39a6                                                                                                                          |             goto label_15;
                                                                                                                                                     |         }
                                                                                                                                                     | label_3:
    0x00003896 mov r0, r4                                                                                                                            |         r0 = r4;
    0x00003898 mov.w r5, -1                                                                                                                          |         r5 = -1;
    0x0000389c bl 0x15a9c                                                                                                                            |         fcn_00015a9c (r0);
    0x000038a0 ldr r3, [r4]                                                                                                                          |         r3 = *(r4);
    0x000038a2 movs r2, 2                                                                                                                            |         r2 = 2;
    0x000038a4 strh.w r2, [sp, 0x14]                                                                                                                 |         src = r2;
    0x000038a8 mov r1, r8                                                                                                                            |         r1 = r8;
    0x000038aa ldr r2, [pc, 0x154]                                                                                                                   |         r2 = *(0x3a02);
    0x000038ac str r5, [r3]                                                                                                                          |         *(r3) = r5;
    0x000038ae ldr r2, [r7, r2]                                                                                                                      |         r2 = *((r7 + r2));
    0x000038b0 ldrh r7, [r2]                                                                                                                         |         r7 = *(r2);
    0x000038b2 movs r2, 0                                                                                                                            |         r2 = 0;
    0x000038b4 mov r1, r6                                                                                                                            |         r1 = r6;
    0x000038b6 bl 0x204e                                                                                                                             |         void (*0x204e)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000038ba ldr r3, [r4]                                                                                                                          |         r3 = *(r4);
    0x000038bc movs r2, 0xb                                                                                                                          |         r2 = 0xb;
    0x000038be strh.w r2, [sp, 0x15]                                                                                                                 |         *((sp + 0x15)) = r2;
    0x000038c2 str r5, [r3, 4]                                                                                                                       |         *((r3 + 4)) = r5;
                                                                                                                                                     |         if (r0 == 0) {
    0x000038c4 cbz r0, 0x38ee                                                                                                                        |             goto label_16;
                                                                                                                                                     |         }
                                                                                                                                                     | label_1:
    0x000038c6 mvn r8, 0x10000                                                                                                                       |         r8 = ~0x10000;
                                                                                                                                                     | label_2:
    0x000038ca ldr r2, [pc, 0x138]                                                                                                                   |         
    0x000038cc ldr r3, [pc, 0x124]                                                                                                                   |         r3 = *(0x39f4);
    0x000038ce add r2, pc                                                                                                                            |         r2 = 0x72d8;
    0x000038d0 ldr r3, [r2, r3]                                                                                                                      |         r3 = *(0x72d8);
    0x000038d2 ldr r2, [r3]                                                                                                                          |         r2 = *(0x72d8);
    0x000038d4 ldr r3, [sp, 0x24]                                                                                                                    |         r3 = var_24h;
    0x000038d6 eors r2, r3                                                                                                                           |         r2 ^= r3;
    0x000038d8 mov.w r3, 0                                                                                                                           |         r3 = 0;
                                                                                                                                                     |         if (r2 != r3) {
    0x000038dc bne.w 0x39e2                                                                                                                          |             goto label_17;
                                                                                                                                                     |         }
    0x000038e0 mov r0, r8                                                                                                                            |         r0 = r8;
    0x000038e2 add sp, 0x28                                                                                                                          |         
    0x000038e4 pop.w {r4, r5, r6, r7, r8, pc}                                                                                                        |         
    0x000038e8 movs r3, 1                                                                                                                            |         r3 = 1;
    0x000038ea strb r3, [r4, 8]                                                                                                                      |         *((r4 + 8)) = r3;
    0x000038ec b 0x385a                                                                                                                              |         
                                                                                                                                                     |     }
                                                                                                                                                     | label_16:
    0x000038ee mov r2, r0                                                                                                                            |     r2 = r0;
    0x000038f0 adds r3, 4                                                                                                                            |     r3 += 4;
    0x000038f2 mov r1, r6                                                                                                                            |     r1 = r6;
    0x000038f4 mov r0, r8                                                                                                                            |     r0 = r8;
    0x000038f6 bl 0x204c                                                                                                                             |     r0 = fcn_0000204c (r0, r1, r2, r3);
    0x000038fa cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 != 0) {
    0x000038fc bne 0x38c6                                                                                                                            |         goto label_1;
                                                                                                                                                     |     }
    0x000038fe mov r0, r4                                                                                                                            |     r0 = r4;
    0x00003900 bl 0x29b0                                                                                                                             |     r0 = fcn_000029b0 (r0, r1);
    0x00003904 mov r8, r0                                                                                                                            |     r8 = r0;
    0x00003906 cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 != 0) {
    0x00003908 bne 0x38c6                                                                                                                            |         goto label_1;
                                                                                                                                                     |     }
    0x0000390a movs r1, 8                                                                                                                            |     r1 = 8;
    0x0000390c movs r0, 1                                                                                                                            |     r0 = 1;
    0x0000390e blx 0x11ac                                                                                                                            |     r0 = fcn_000011ac ();
    0x00003912 mov r5, r0                                                                                                                            |     r5 = r0;
    0x00003914 cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 == 0) {
    0x00003916 beq 0x39c2                                                                                                                            |         goto label_18;
                                                                                                                                                     |     }
    0x00003918 str r4, [r0, 4]                                                                                                                       |     *((r0 + 4)) = r4;
    0x0000391a mov r2, r8                                                                                                                            |     r2 = r8;
    0x0000391c movs r1, 3                                                                                                                            |     r1 = 3;
    0x0000391e movs r0, 0x10                                                                                                                         |     r0 = 0x10;
    0x00003920 blx 0x152c                                                                                                                            |     r0 = strncmp (r0, r1, r2);
    0x00003924 subs r6, r0, 0                                                                                                                        |     r6 = r0 - 0;
                                                                                                                                                     |     if (r6 < r0) {
    0x00003926 blt 0x397c                                                                                                                            |         goto label_19;
                                                                                                                                                     |     }
    0x00003928 mov.w r2, 0x800                                                                                                                       |     r2 = 0x800;
    0x0000392c movs r1, 4                                                                                                                            |     r1 = 4;
    0x0000392e blx 0x143c                                                                                                                            |     printf_chk ()
    0x00003932 movs r3, 0x10                                                                                                                         |     r3 = 0x10;
    0x00003934 movs r2, 0xc                                                                                                                          |     r2 = 0xc;
    0x00003936 strh.w r3, [sp, 8]                                                                                                                    |     var_8h = r3;
    0x0000393a add r1, sp, 8                                                                                                                         |     r1 += var_8h;
    0x0000393c movs r3, 0x11                                                                                                                         |     r3 = 0x11;
    0x0000393e mov r0, r6                                                                                                                            |     r0 = r6;
    0x00003940 str.w r8, [sp, 0xa]                                                                                                                   |     __asm ("str.w r8, [var_ah]");
    0x00003944 strh.w r8, [sp, 0xe]                                                                                                                  |     var_eh = r8;
    0x00003948 str r3, [sp, 0x10]                                                                                                                    |     var_10h = r3;
    0x0000394a blx 0x1430                                                                                                                            |     r0 = strncpy (r0, r1, r2);
                                                                                                                                                     |     if (r0 != 0) {
    0x0000394e cbnz r0, 0x397c                                                                                                                       |         goto label_19;
                                                                                                                                                     |     }
    0x00003950 str r6, [r5]                                                                                                                          |     *(r5) = r6;
                                                                                                                                                     | label_5:
    0x00003952 movs r1, 1                                                                                                                            |     r1 = 1;
    0x00003954 movs r0, 0x24                                                                                                                         |     r0 = 0x24;
    0x00003956 blx 0x11ac                                                                                                                            |     r0 = fcn_000011ac ();
    0x0000395a cmp r0, 0                                                                                                                             |     
                                                                                                                                                     |     if (r0 == 0) {
    0x0000395c beq 0x39e6                                                                                                                            |         goto label_20;
                                                                                                                                                     |     }
    0x0000395e movs r2, 2                                                                                                                            |     r2 = 2;
    0x00003960 ldr r1, [pc, 0xa4]                                                                                                                    |     
    0x00003962 str r6, [r0, 0x1c]                                                                                                                    |     *((r0 + 0x1c)) = r6;
    0x00003964 mov r3, r5                                                                                                                            |     r3 = r5;
    0x00003966 str r2, [sp]                                                                                                                          |     *(sp) = r2;
    0x00003968 ldr r2, [pc, 0xa0]                                                                                                                    |     
    0x0000396a add r1, pc                                                                                                                            |     r1 = 0x7376;
    0x0000396c add r2, pc                                                                                                                            |     r2 = 0x737c;
    0x0000396e bl 0x1b78                                                                                                                             |     fcn_00001b78 (r0, r1, r2, r3, r4);
                                                                                                                                                     |     do {
    0x00003972 movs r1, 0                                                                                                                            |         r1 = 0;
    0x00003974 mov r0, r4                                                                                                                            |         r0 = r4;
    0x00003976 bl 0x1d128                                                                                                                            |         fcn_0001d128 (r0, r1);
    0x0000397a b 0x38ca                                                                                                                              |         goto label_2;
                                                                                                                                                     | label_19:
    0x0000397c blx 0x1424                                                                                                                            |         r0 = memset (r0, r1, r2);
    0x00003980 ldr r6, [r0]                                                                                                                          |         r6 = *(r0);
                                                                                                                                                     |         if (r6 == 0) {
    0x00003982 cbz r6, 0x39be                                                                                                                        |             goto label_21;
                                                                                                                                                     |         }
                                                                                                                                                     | label_7:
    0x00003984 mov r0, r5                                                                                                                            |         r0 = r5;
    0x00003986 blx 0x125c                                                                                                                            |         fgets (r0, r1, r2);
                                                                                                                                                     | label_6:
    0x0000398a ldr r3, [pc, 0x84]                                                                                                                    |         r3 = *(0x3a12);
    0x0000398c ldr r3, [r7, r3]                                                                                                                      |         r3 = *((r7 + r3));
    0x0000398e ldr r5, [r3]                                                                                                                          |         r5 = *(0x3a12);
    0x00003990 blx 0x13fc                                                                                                                            |         fcn_000013fc ();
    0x00003992 vldmdb r4!, {s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31}    |         __asm ("vldmdb r4!, {s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s23, s24, s25, s26, s27, s28, s29, s30, s31}");
    0x00003996 mov r3, r0                                                                                                                            |         r3 = r0;
    0x00003998 movs r1, 1                                                                                                                            |         r1 = 1;
    0x0000399a mov r0, r5                                                                                                                            |         r0 = r5;
    0x0000399c str r6, [sp]                                                                                                                          |         *(sp) = r6;
    0x0000399e add r2, pc                                                                                                                            |         r2 += pc;
    0x000039a0 blx 0x1488                                                                                                                            |         fcn_00001488 ();
    0x000039a4 b 0x3972                                                                                                                              |         
                                                                                                                                                     |     } while (1);
                                                                                                                                                     | label_15:
    0x000039a6 ldr r1, [pc, 0x70]                                                                                                                    |     
    0x000039a8 mov r0, r6                                                                                                                            |     r0 = r6;
    0x000039aa add r1, pc                                                                                                                            |     r1 = 0x73c8;
    0x000039ac bl 0x1f980                                                                                                                            |     fcn_0001f980 (r0, r1);
    0x000039b0 b 0x3896                                                                                                                              |     goto label_3;
    0x000039b2 ldr r1, [pc, 0x68]                                                                                                                    |     
                                                                                                                                                     | label_14:
    0x000039b4 mov r0, r6                                                                                                                            |     r0 = r6;
    0x000039b6 add r1, pc                                                                                                                            |     r1 = 0x73d8;
    0x000039b8 bl 0x1f980                                                                                                                            |     fcn_0001f980 (r0, r1);
    0x000039bc b 0x387a                                                                                                                              |     goto label_4;
                                                                                                                                                     | label_21:
    0x000039be ldr r6, [r5]                                                                                                                          |     r6 = *(r5);
    0x000039c0 b 0x3952                                                                                                                              |     goto label_5;
                                                                                                                                                     | label_18:
    0x000039c2 movw r6, 0xfffd                                                                                                                       |     
    0x000039c6 movt r6, 0xfffe                                                                                                                       |     r6 = 0xfffefffd;
    0x000039ca b 0x398a                                                                                                                              |     goto label_6;
                                                                                                                                                     | label_13:
    0x000039cc ldr r3, [pc, 0x50]                                                                                                                    |     
    0x000039ce mov.w r2, 0x688                                                                                                                       |     r2 = 0x688;
    0x000039d2 ldr r1, [pc, 0x50]                                                                                                                    |     
    0x000039d4 ldr r0, [pc, 0x50]                                                                                                                    |     
    0x000039d6 add r3, pc                                                                                                                            |     r3 = 0x73fa;
    0x000039d8 add r1, pc                                                                                                                            |     r1 = 0x7402;
    0x000039da adds r3, 0xfc                                                                                                                         |     r3 += 0xfc;
    0x000039dc add r0, pc                                                                                                                            |     r0 = 0x7408;
    0x000039de blx 0x15b4                                                                                                                            |     fcn_000015b4 ();
                                                                                                                                                     | label_17:
    0x000039e2 blx 0x12ec                                                                                                                            |     getrlimit ();
                                                                                                                                                     | label_20:
    0x000039e6 movw r6, 0xfffd                                                                                                                       |     
    0x000039ea movt r6, 0xfffe                                                                                                                       |     r6 = 0xfffefffd;
    0x000039ee b 0x3984                                                                                                                              |     goto label_7;
                                                                                                                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x28b80 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00028b80 ()                          | void fcn_00028b80 (int16_t arg1) {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_4h;
                                                     |     int16_t var_8h;
                                                     |     int32_t var_8h_3;
                                                     |     int32_t var_ch_2;
                                                     |     int16_t var_18h;
                                                     |     int32_t var_18h_2;
                                                     |     int16_t var_20h;
                                                     |     int32_t var_0h_2;
                                                     |     int32_t var_8h_2;
                                                     |     int32_t var_ch;
                                                     |     int32_t var_10h;
                                                     |     int32_t var_14h;
                                                     |     int32_t var_18h_3;
                                                     |     int32_t var_18h_4;
                                                     |     int16_t var_78h;
                                                     |     int16_t var_7ah;
                                                     |     int16_t var_e8h;
                                                     |     int16_t var_154h;
                                                     |     r0 = arg1;
    0x00028b80 ldr.w r2, [pc, 0x45c]                 |     
    0x00028b84 ldr.w r3, [pc, 0x45c]                 |     r3 = *(0x28fe4);
    0x00028b88 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00028b8c sub sp, 0x158                         |     
    0x00028b8e add r2, pc                            |     r2 = 0x51b72;
    0x00028b90 ldr r5, [r0, 0x44]                    |     r5 = *((r0 + 0x44));
    0x00028b92 mov r4, r0                            |     r4 = r0;
    0x00028b94 ldr r3, [r2, r3]                      |     
    0x00028b96 ldr.w r6, [pc, 0x450]                 |     
    0x00028b9a ldr r3, [r3]                          |     r3 = imp.__aeabi_unwind_cpp_pr0;
    0x00028b9c str r3, [sp, 0x154]                   |     var_154h = r3;
    0x00028b9e mov.w r3, 0                           |     r3 = 0;
    0x00028ba2 subs r3, r5, 3                        |     r3 = r5 - 3;
    0x00028ba4 cmp r3, 1                             |     
    0x00028ba6 add r6, pc                            |     r6 = 0x51b94;
                                                     |     if (r3 < 1) {
    0x00028ba8 bls 0x28c70                           |         goto label_9;
                                                     |     }
    0x00028baa cmp r5, 2                             |     
                                                     |     if (r5 == 2) {
    0x00028bac beq.w 0x28d3c                         |         goto label_10;
                                                     |     }
    0x00028bb0 cmp r5, 1                             |     
                                                     |     if (r5 == 1) {
    0x00028bb2 beq 0x28be6                           |         goto label_11;
                                                     |     }
    0x00028bb4 ldr.w r3, [pc, 0x434]                 |     
    0x00028bb8 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028bba ldr r3, [r3]                          |     r3 = *(0x28fec);
    0x00028bbc cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00028bbe bne.w 0x28cee                         |         goto label_12;
                                                     |     }
                                                     | label_1:
    0x00028bc2 movs r3, 3                            |     r3 = 3;
                                                     | label_3:
    0x00028bc4 str r3, [r4, 0x44]                    |     *((r4 + 0x44)) = r3;
                                                     |     do {
                                                     | label_0:
    0x00028bc6 ldr.w r2, [pc, 0x428]                 |         
    0x00028bca ldr.w r3, [pc, 0x418]                 |         r3 = *(0x28fe6);
    0x00028bce add r2, pc                            |         r2 = 0x51bc4;
    0x00028bd0 ldr r3, [r2, r3]                      |         r3 = imp.__aeabi_unwind_cpp_pr0;
    0x00028bd2 ldr r2, [r3]                          |         r2 = imp.__aeabi_unwind_cpp_pr0;
    0x00028bd4 ldr r3, [sp, 0x154]                   |         r3 = var_154h;
    0x00028bd6 eors r2, r3                           |         r2 ^= r3;
    0x00028bd8 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00028bdc bne.w 0x28f78                         |             goto label_13;
                                                     |         }
    0x00028be0 add sp, 0x158                         |         
    0x00028be2 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_11:
    0x00028be6 ldr r5, [r0, 0x48]                    |         r5 = *((r0 + 0x48));
    0x00028be8 cmp r5, 0x1b                          |         
                                                     |         if (r5 < 0x1b) {
    0x00028bea bls 0x28c8c                           |             goto label_14;
                                                     |         }
                                                     | label_6:
    0x00028bec cmp r5, 0x1c                          |         
    0x00028bee bne 0x28bc6                           |         
                                                     |     } while (r5 != 0x1c);
    0x00028bf0 ldr r3, [r4, 0x68]                    |     r3 = *((r4 + 0x68));
    0x00028bf2 ldr r2, [r4, 0x50]                    |     r2 = *((r4 + 0x50));
    0x00028bf4 cmp r3, r2                            |     
                                                     |     if (r3 <= r2) {
    0x00028bf6 blo.w 0x28d74                         |         goto label_15;
                                                     |     }
                                                     | label_4:
    0x00028bfa cmp r2, r3                            |     
                                                     |     if (r2 != r3) {
    0x00028bfc bne 0x28bc6                           |         goto label_0;
                                                     |     }
    0x00028bfe ldr.w r3, [r4, 0x88]                  |     r3 = *((r4 + 0x88));
                                                     |     if (r3 != 0) {
    0x00028c02 cbz r3, 0x28c6a                       |         
    0x00028c04 ldr r3, [r4, 0x58]                    |         r3 = *((r4 + 0x58));
    0x00028c06 cmp r3, 0x3f                          |         
                                                     |         if (r3 == 0x3f) {
    0x00028c08 beq 0x28c6a                           |             goto label_16;
                                                     |         }
    0x00028c0a add r5, sp, 0xe8                      |         r5 += var_e8h;
    0x00028c0c movs r3, 0x6c                         |         r3 = 0x6c;
    0x00028c0e mov r2, r5                            |         r2 = r5;
    0x00028c10 ldr r1, [r4, 0x74]                    |         r1 = *((r4 + 0x74));
    0x00028c12 add.w r0, r4, 0x70                    |         r0 = r4 + 0x70;
    0x00028c16 add r7, sp, 0x78                      |         r7 += var_78h;
    0x00028c18 bl 0x2f614                            |         fcn_0002f614 (r0, r1, r2, r3);
    0x00028c1c movs r1, 0x6e                         |         r1 = 0x6e;
    0x00028c1e mov r0, r7                            |         r0 = r7;
    0x00028c20 bl 0x3b4c                             |         fcn_00003b4c (r0);
    0x00028c24 mov r1, r5                            |         r1 = r5;
    0x00028c26 add.w r5, sp, 0x7a                    |         r5 += var_7ah;
    0x00028c2a mov.w r8, 1                           |         r8 = 1;
    0x00028c2e movs r2, 0x6c                         |         r2 = 0x6c;
    0x00028c30 mov r0, r5                            |         r0 = r5;
    0x00028c32 strh.w r8, [sp, 0x78]                 |         var_78h = r8;
    0x00028c36 bl 0x3ae4                             |         fcn_00003ae4 (r0, r1, r2);
    0x00028c3a ldrb.w r3, [sp, 0xe8]                 |         r3 = var_e8h;
    0x00028c3e cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x00028c40 bne.w 0x28e36                         |             goto label_17;
                                                     |         }
    0x00028c44 ldr r5, [r4, 0x34]                    |         r5 = *((r4 + 0x34));
    0x00028c46 ldr r3, [r4, 8]                       |         r3 = *((r4 + 8));
    0x00028c48 cmp r5, r3                            |         
                                                     |         if (r5 == r3) {
    0x00028c4a beq.w 0x28e56                         |             goto label_18;
                                                     |         }
                                                     | label_5:
    0x00028c4e movs r2, 0                            |         r2 = 0;
    0x00028c50 movs r1, 3                            |         r1 = 3;
    0x00028c52 mov r0, r5                            |         r0 = r5;
    0x00028c54 blx 0x143c                            |         printf_chk ()
    0x00028c58 movs r1, 4                            |         r1 = 4;
    0x00028c5a orr r2, r0, 0x800                     |         r2 = r0 | 0x800;
    0x00028c5e mov r0, r5                            |         r0 = r5;
    0x00028c60 blx 0x143c                            |         r0 = printf_chk ()
    0x00028c64 cmp r0, 0                             |         
                                                     |         if (r0 != 0) {
    0x00028c66 bne.w 0x28e74                         |             goto label_19;
                                                     |         }
                                                     |     }
                                                     | label_16:
    0x00028c6a movs r3, 2                            |     r3 = 2;
    0x00028c6c str r3, [r4, 0x44]                    |     *((r4 + 0x44)) = r3;
    0x00028c6e b 0x28bc6                             |     goto label_0;
                                                     | label_9:
    0x00028c70 ldr r3, [pc, 0x378]                   |     
    0x00028c72 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028c74 ldr r3, [r3]                          |     r3 = *(0x28fec);
    0x00028c76 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028c78 beq 0x28bc2                           |         goto label_1;
                                                     |     }
    0x00028c7a ldr r3, [r0, 0x3c]                    |     r3 = *((r0 + 0x3c));
    0x00028c7c movs r1, 2                            |     r1 = 2;
    0x00028c7e ldr r2, [pc, 0x374]                   |     
    0x00028c80 ldr r0, [pc, 0x374]                   |     
    0x00028c82 add r2, pc                            |     r2 = 0x51c7c;
    0x00028c84 add r0, pc                            |     r0 = 0x51c80;
    0x00028c86 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028c8a b 0x28bc2                             |     goto label_1;
                                                     | label_14:
    0x00028c8c ldr r3, [r0, 0x40]                    |     r3 = *((r0 + 0x40));
    0x00028c8e add.w r7, r0, 0x4c                    |     r7 = r0 + 0x4c;
    0x00028c92 rsb.w r2, r5, 0x1c                    |     r2 = 0x1c - r5;
    0x00028c96 adds r1, r7, r5                       |     r1 = r7 + r5;
    0x00028c98 str r3, [sp]                          |     *(sp) = r3;
    0x00028c9a movs r3, 0                            |     r3 = 0;
    0x00028c9c ldr r0, [r0, 8]                       |     r0 = *((r0 + 8));
    0x00028c9e bl 0x1b5c                             |     r0 = fcn_00001b5c ();
    0x00028ca2 cmp r0, 0                             |     
    0x00028ca4 itt eq                                |     
                                                     |     if (r0 != 0) {
    0x00028ca6 moveq r3, 4                           |         r3 = 4;
                                                     |     }
                                                     |     if (r0 == 0) {
    0x00028ca8 streq r3, [r4, 0x44]                  |         *((r4 + 0x44)) = r3;
                                                     |         goto label_20;
                                                     |     }
                                                     |     if (r0 == 0) {
                                                     | label_20:
    0x00028caa beq 0x28bc6                           |         goto label_0;
                                                     |     }
                                                     |     if (r0 < 0) {
    0x00028cac blt 0x28d02                           |         goto label_2;
                                                     |     }
    0x00028cae ldr r3, [r4, 0x48]                    |     r3 = *((r4 + 0x48));
    0x00028cb0 add r0, r3                            |     r0 += r3;
    0x00028cb2 cmp r0, 0x1c                          |     
    0x00028cb4 str r0, [r4, 0x48]                    |     *((r4 + 0x48)) = r0;
                                                     |     if (r0 > 0x1c) {
    0x00028cb6 bhi.w 0x28dca                         |         goto label_21;
                                                     |     }
                                                     |     if (r0 != 0x1c) {
    0x00028cba bne 0x28bc6                           |         goto label_0;
                                                     |     }
    0x00028cbc mov r0, r7                            |     r0 = r7;
    0x00028cbe bl 0x2f694                            |     fcn_0002f694 (r0);
    0x00028cc2 ldr r1, [r4, 0x4c]                    |     r1 = *((r4 + 0x4c));
    0x00028cc4 cmp r1, 1                             |     
                                                     |     if (r1 == 1) {
    0x00028cc6 beq.w 0x28e06                         |         goto label_22;
                                                     |     }
    0x00028cca ldr r3, [pc, 0x320]                   |     
    0x00028ccc ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028cce ldr r3, [r3]                          |     r3 = *(0x28fee);
    0x00028cd0 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028cd2 beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028cd6 movs r0, 1                            |     r0 = 1;
    0x00028cd8 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028cda ldr r2, [pc, 0x320]                   |     
    0x00028cdc strd r1, r0, [sp]                     |     __asm ("strd r1, r0, [sp]");
    0x00028ce0 movs r1, 2                            |     r1 = 2;
    0x00028ce2 ldr r0, [pc, 0x31c]                   |     
    0x00028ce4 add r2, pc                            |     r2 = 0x51ce6;
    0x00028ce6 add r0, pc                            |     r0 = 0x51cec;
    0x00028ce8 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028cec b 0x28bc2                             |     goto label_1;
                                                     | label_12:
    0x00028cee ldr r3, [r0, 0x3c]                    |     r3 = *((r0 + 0x3c));
    0x00028cf0 movs r1, 2                            |     r1 = 2;
    0x00028cf2 ldr r2, [pc, 0x310]                   |     
    0x00028cf4 ldr r0, [pc, 0x310]                   |     
    0x00028cf6 str r5, [sp]                          |     *(sp) = r5;
    0x00028cf8 add r2, pc                            |     r2 = 0x51d02;
    0x00028cfa add r0, pc                            |     r0 = 0x51d06;
    0x00028cfc bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028d00 b 0x28bc2                             |     goto label_1;
                                                     | label_2:
    0x00028d02 blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x00028d06 ldr r5, [r0]                          |     r5 = *(r0);
    0x00028d08 cmp r5, 4                             |     
    0x00028d0a it ne                                 |     
                                                     |     if (r5 == 4) {
    0x00028d0c cmpne r5, 0xb                         |         __asm ("cmpne r5, 0xb");
                                                     |         goto label_23;
                                                     |     }
                                                     |     if (r5 == 4) {
                                                     | label_23:
    0x00028d0e beq.w 0x28bc6                         |         goto label_0;
                                                     |     }
    0x00028d12 ldr r3, [pc, 0x2d8]                   |     
    0x00028d14 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028d16 ldr r3, [r3]                          |     r3 = *(0x28fee);
    0x00028d18 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028d1a beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028d1e mov r0, r5                            |     r0 = r5;
    0x00028d20 ldr r6, [r4, 0x3c]                    |     r6 = *((r4 + 0x3c));
    0x00028d22 blx 0x13cc                            |     fcn_000013cc ();
    0x00028d26 ldr r2, [pc, 0x2e4]                   |     
    0x00028d28 movs r1, 2                            |     r1 = 2;
    0x00028d2a str r0, [sp, 4]                       |     var_4h = r0;
    0x00028d2c mov r3, r6                            |     r3 = r6;
    0x00028d2e ldr r0, [pc, 0x2e0]                   |     
    0x00028d30 add r2, pc                            |     r2 = 0x51d42;
    0x00028d32 str r5, [sp]                          |     *(sp) = r5;
    0x00028d34 add r0, pc                            |     r0 = 0x51d4a;
    0x00028d36 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028d3a b 0x28bc2                             |     goto label_1;
                                                     | label_10:
    0x00028d3c ldr r2, [r0, 0x40]                    |     r2 = *((r0 + 0x40));
    0x00028d3e movs r3, 0                            |     r3 = 0;
    0x00028d40 add r1, sp, 0xe8                      |     r1 += var_e8h;
    0x00028d42 str r2, [sp]                          |     *(sp) = r2;
    0x00028d44 movs r2, 4                            |     r2 = 4;
    0x00028d46 ldr r0, [r0, 8]                       |     r0 = *((r0 + 8));
    0x00028d48 bl 0x1b5c                             |     r0 = fcn_00001b5c ();
    0x00028d4c cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00028d4e beq 0x28d70                           |         goto label_24;
                                                     |     }
                                                     |     if (r0 < 0) {
    0x00028d50 blt 0x28d02                           |         goto label_2;
                                                     |     }
    0x00028d52 ldr r3, [pc, 0x298]                   |     
    0x00028d54 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028d56 ldr r3, [r3]                          |     r3 = *(0x28fee);
    0x00028d58 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028d5a beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028d5e ldr r2, [pc, 0x2b4]                   |     
    0x00028d60 mov r1, r5                            |     r1 = r5;
    0x00028d62 ldr r0, [pc, 0x2b4]                   |     
    0x00028d64 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028d66 add r2, pc                            |     r2 = 0x51d80;
    0x00028d68 add r0, pc                            |     r0 = 0x51d86;
    0x00028d6a bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028d6e b 0x28bc2                             |     goto label_1;
                                                     |     do {
                                                     | label_24:
    0x00028d70 movs r3, 4                            |         r3 = 4;
    0x00028d72 b 0x28bc4                             |         goto label_3;
                                                     | label_15:
    0x00028d74 subs r0, r2, r3                       |         r0 = r2 - r3;
    0x00028d76 ldr r2, [r4, 0x6c]                    |         r2 = *((r4 + 0x6c));
    0x00028d78 add r7, sp, 0x20                      |         r7 += var_20h;
    0x00028d7a str r5, [r7, 0x14]                    |         var_14h = r5;
    0x00028d7c adds r1, r2, r3                       |         r1 = r2 + r3;
    0x00028d7e add r3, sp, 0x18                      |         r3 += var_18h;
    0x00028d80 str r3, [r7, 8]                       |         var_8h_2 = r3;
    0x00028d82 movs r3, 1                            |         r3 = 1;
    0x00028d84 movs r2, 0                            |         r2 = 0;
    0x00028d86 str r3, [r7, 0xc]                     |         var_ch = r3;
    0x00028d88 add r3, sp, 0xe8                      |         r3 += var_e8h;
    0x00028d8a strd r1, r0, [sp, 0x18]               |         __asm ("strd r1, r0, [var_18h]");
    0x00028d8e strd r2, r2, [r7]                     |         __asm ("strd r2, r2, [r7]");
    0x00028d92 mov r1, r7                            |         r1 = r7;
    0x00028d94 ldr r0, [r4, 8]                       |         r0 = *((r4 + 8));
    0x00028d96 str r2, [r7, 0x18]                    |         var_18h_3 = r2;
    0x00028d98 str r3, [r7, 0x10]                    |         var_10h = r3;
    0x00028d9a blx 0x1504                            |         r0 = fcn_00001504 ();
    0x00028d9e cmp r0, 0                             |         
    0x00028da0 beq 0x28d70                           |         
                                                     |     } while (r0 == 0);
                                                     |     if (r0 < 0) {
    0x00028da2 blt 0x28d02                           |         goto label_2;
                                                     |     }
    0x00028da4 ldr r3, [r4, 0x68]                    |     r3 = *((r4 + 0x68));
    0x00028da6 ldr r2, [r4, 0x50]                    |     r2 = *((r4 + 0x50));
    0x00028da8 add r3, r0                            |     r3 += r0;
    0x00028daa cmp r3, r2                            |     
    0x00028dac str r3, [r4, 0x68]                    |     *((r4 + 0x68)) = r3;
                                                     |     if (r3 > r2) {
    0x00028dae bhi 0x28de8                           |         goto label_25;
                                                     |     }
    0x00028db0 ldr r1, [r7, 0x14]                    |     r1 = var_14h;
    0x00028db2 cmp r1, 0xb                           |     
                                                     |     if (r1 >= 0xb) {
    0x00028db4 bls 0x28dc0                           |         
    0x00028db6 ldr r1, [r7, 0x10]                    |         r1 = var_10h;
                                                     |         if (r1 == 0) {
    0x00028db8 cbz r1, 0x28dc0                       |             goto label_7;
                                                     |         }
    0x00028dba ldr r0, [r1, 4]                       |         r0 = *((r1 + 4));
    0x00028dbc cmp r0, 1                             |         
                                                     |         if (r0 == 1) {
    0x00028dbe beq 0x28ebe                           |             goto label_26;
                                                     |         }
                                                     |     }
                                                     | label_7:
    0x00028dc0 ldr r1, [r4, 0x48]                    |     r1 = *((r4 + 0x48));
    0x00028dc2 cmp r1, 0x1c                          |     
                                                     |     if (r1 == 0x1c) {
    0x00028dc4 beq.w 0x28bfa                         |         goto label_4;
                                                     |     }
    0x00028dc8 b 0x28bc6                             |     goto label_0;
                                                     | label_21:
    0x00028dca ldr r3, [pc, 0x220]                   |     
    0x00028dcc ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028dce ldr r3, [r3]                          |     r3 = *(0x28fee);
    0x00028dd0 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028dd2 beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028dd6 ldr r2, [pc, 0x244]                   |     
    0x00028dd8 movs r1, 2                            |     r1 = 2;
    0x00028dda ldr r0, [pc, 0x244]                   |     
    0x00028ddc ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028dde add r2, pc                            |     r2 = 0x51e00;
    0x00028de0 add r0, pc                            |     r0 = 0x51e06;
    0x00028de2 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028de6 b 0x28bc2                             |     goto label_1;
                                                     | label_25:
    0x00028de8 ldr r3, [pc, 0x200]                   |     
    0x00028dea ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028dec ldr r3, [r3]                          |     r3 = *(0x28fec);
    0x00028dee cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028df0 beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028df4 ldr r2, [pc, 0x22c]                   |     
    0x00028df6 movs r1, 2                            |     r1 = 2;
    0x00028df8 ldr r0, [pc, 0x22c]                   |     
    0x00028dfa ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028dfc add r2, pc                            |     r2 = 0x51e24;
    0x00028dfe add r0, pc                            |     r0 = 0x51e2a;
    0x00028e00 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028e04 b 0x28bc2                             |     goto label_1;
                                                     | label_22:
    0x00028e06 ldr r7, [r4, 0x50]                    |     r7 = *((r4 + 0x50));
    0x00028e08 movw r3, 0x1170                       |     
    0x00028e0c movt r3, 1                            |     r3 = 0x11170;
    0x00028e10 cmp r7, r3                            |     
                                                     |     if (r7 < r3) {
    0x00028e12 bls 0x28ea4                           |         goto label_27;
                                                     |     }
    0x00028e14 ldr r3, [pc, 0x1d4]                   |     
    0x00028e16 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028e18 ldr r3, [r3]                          |     r3 = *(0x28fec);
    0x00028e1a cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028e1c beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028e20 ldr r2, [pc, 0x208]                   |     
    0x00028e22 movs r1, 2                            |     r1 = 2;
    0x00028e24 ldr r0, [pc, 0x208]                   |     
    0x00028e26 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028e28 add r2, pc                            |     r2 = 0x51e58;
    0x00028e2a strd r7, r7, [sp]                     |     __asm ("strd r7, r7, [sp]");
    0x00028e2e add r0, pc                            |     r0 = 0x51e62;
    0x00028e30 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028e34 b 0x28bc2                             |     goto label_1;
                                                     | label_17:
    0x00028e36 movs r2, 0                            |     r2 = 0;
    0x00028e38 mov r1, r8                            |     r1 = r8;
    0x00028e3a mov r0, r8                            |     r0 = r8;
    0x00028e3c blx 0x152c                            |     r0 = strncmp (r0, r1, r2);
    0x00028e40 cmp r0, 0                             |     
    0x00028e42 str r0, [r4, 0x34]                    |     *((r4 + 0x34)) = r0;
                                                     |     if (r0 < 0) {
    0x00028e44 blt 0x28efe                           |         goto label_28;
                                                     |     }
    0x00028e46 mov r1, r7                            |     r1 = r7;
    0x00028e48 movs r2, 0x6e                         |     r2 = 0x6e;
    0x00028e4a blx 0x159c                            |     r0 = fcn_0000159c ();
    0x00028e4e cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00028e50 blt 0x28f38                           |         goto label_29;
                                                     |     }
    0x00028e52 ldr r5, [r4, 0x34]                    |     r5 = *((r4 + 0x34));
    0x00028e54 b 0x28c4e                             |     goto label_5;
                                                     | label_18:
    0x00028e56 ldr r3, [pc, 0x194]                   |     
    0x00028e58 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028e5a ldr r3, [r3]                          |     r3 = *(0x28fee);
    0x00028e5c cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028e5e beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028e62 ldr r2, [pc, 0x1d0]                   |     
    0x00028e64 movs r1, 2                            |     r1 = 2;
    0x00028e66 ldr r0, [pc, 0x1d0]                   |     
    0x00028e68 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028e6a add r2, pc                            |     r2 = 0x51ea4;
    0x00028e6c add r0, pc                            |     r0 = 0x51eaa;
    0x00028e6e bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028e72 b 0x28bc2                             |     goto label_1;
                                                     | label_19:
    0x00028e74 ldr r3, [pc, 0x174]                   |     
    0x00028e76 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028e78 ldr r3, [r3]                          |     r3 = *(0x28fec);
    0x00028e7a cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028e7c beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028e80 blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x00028e84 ldr r5, [r0]                          |     r5 = *(r0);
    0x00028e86 ldr r6, [r4, 0x3c]                    |     r6 = *((r4 + 0x3c));
    0x00028e88 mov r0, r5                            |     r0 = r5;
    0x00028e8a blx 0x13cc                            |     fcn_000013cc ();
    0x00028e8e ldr r2, [pc, 0x1ac]                   |     
    0x00028e90 mov r3, r6                            |     r3 = r6;
    0x00028e92 strd r5, r0, [sp]                     |     __asm ("strd r5, r0, [sp]");
    0x00028e96 movs r1, 2                            |     r1 = 2;
    0x00028e98 ldr r0, [pc, 0x1a4]                   |     
    0x00028e9a add r2, pc                            |     r2 = 0x51edc;
    0x00028e9c add r0, pc                            |     r0 = 0x51ee0;
    0x00028e9e bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028ea2 b 0x28bc2                             |     goto label_1;
                                                     | label_27:
    0x00028ea4 adds r1, r7, 5                        |     r1 = r7 + 5;
    0x00028ea6 movs r0, 1                            |     r0 = 1;
    0x00028ea8 blx 0x11ac                            |     fcn_000011ac ();
    0x00028eac str r0, [r4, 0x6c]                    |     *((r4 + 0x6c)) = r0;
    0x00028eae cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00028eb0 beq.w 0x28fd0                         |         goto label_30;
                                                     |     }
    0x00028eb4 add r7, r0                            |     r7 += r0;
    0x00028eb6 ldr r5, [r4, 0x48]                    |     r5 = *((r4 + 0x48));
    0x00028eb8 strd r0, r7, [r4, 0x70]               |     __asm ("strd r0, r7, [r4, 0x70]");
    0x00028ebc b 0x28bec                             |     goto label_6;
                                                     | label_26:
    0x00028ebe ldr r0, [r1, 8]                       |     r0 = *((r1 + 8));
    0x00028ec0 cmp r0, 1                             |     
                                                     |     if (r0 != 1) {
    0x00028ec2 bne.w 0x28dc0                         |         goto label_7;
                                                     |     }
    0x00028ec6 ldr r1, [r1, 0xc]                     |     r1 = *((r1 + 0xc));
    0x00028ec8 cmp r3, r2                            |     
    0x00028eca str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
                                                     |     if (r3 >= r2) {
    0x00028ecc bhs.w 0x28dc0                         |         goto label_7;
                                                     |     }
    0x00028ed0 ldr r0, [pc, 0x118]                   |     
    0x00028ed2 ldr r0, [r6, r0]                      |     r0 = *((r6 + r0));
    0x00028ed4 ldr r0, [r0]                          |     r0 = *(0x28fec);
    0x00028ed6 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00028ed8 beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028edc ldr r0, [r4, 0xc]                     |     r0 = *((r4 + 0xc));
    0x00028ede add.w r5, r4, 0x10                    |     r5 = r4 + 0x10;
    0x00028ee2 strd r3, r2, [sp, 0xc]                |     __asm ("strd r3, r2, [var_8h_3]");
    0x00028ee6 str r5, [sp, 4]                       |     var_4h = r5;
    0x00028ee8 ldr r2, [pc, 0x158]                   |     
    0x00028eea ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028eec str r0, [sp]                          |     *(sp) = r0;
    0x00028eee ldr r0, [pc, 0x158]                   |     
    0x00028ef0 add r2, pc                            |     r2 = 0x51f38;
    0x00028ef2 str r1, [sp, 8]                       |     var_8h = r1;
    0x00028ef4 movs r1, 6                            |     r1 = 6;
    0x00028ef6 add r0, pc                            |     r0 = 0x51f44;
    0x00028ef8 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028efc b 0x28bc2                             |     goto label_1;
                                                     | label_28:
    0x00028efe ldr r3, [pc, 0x14c]                   |     
    0x00028f00 movs r1, 0xfa                         |     r1 = 0xfa;
    0x00028f02 add r3, pc                            |     r3 = 0x51f54;
    0x00028f04 ldr r0, [r3, 0x14]                    |     r0 = imp.__aeabi_unwind_cpp_pr0;
    0x00028f06 adds r2, r0, 1                        |     r2 = r0 + 1;
    0x00028f08 str r2, [r3, 0x14]                    |     *((r3 + 0x14)) = r2;
    0x00028f0a bl 0x347ac                            |     fcn_000347ac (r0, r1);
    0x00028f0e cmp r1, 0                             |     
                                                     |     if (r1 != 0) {
    0x00028f10 bne.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028f14 blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x00028f18 ldr r5, [r0]                          |     r5 = *(r0);
    0x00028f1a mov r0, r5                            |     r0 = r5;
    0x00028f1c blx 0x13cc                            |     fcn_000013cc ();
    0x00028f1e orrs.w fp, r6, fp, lsl 17             |     
    0x00028f22 movs r1, 4                            |     r1 = 4;
    0x00028f24 strd r5, r0, [sp]                     |     __asm ("strd r5, r0, [sp]");
    0x00028f28 ldr r2, [pc, 0x128]                   |     
    0x00028f2a ldr r0, [pc, 0x12c]                   |     
    0x00028f2c add r3, pc                            |     r3 += pc;
    0x00028f2e add r2, pc                            |     r2 = 0x51f86;
    0x00028f30 add r0, pc                            |     r0 = 0x51f8e;
    0x00028f32 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028f36 b 0x28bc2                             |     goto label_1;
                                                     | label_29:
    0x00028f38 ldr r3, [pc, 0xb0]                    |     r3 = *(0x28fec);
    0x00028f3a ldr r7, [r6, r3]                      |     r7 = *((r6 + r3));
    0x00028f3c ldr r3, [r7]                          |     r3 = *(r7);
    0x00028f3e cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00028f40 bne 0x28fa8                           |         goto label_31;
                                                     |     }
                                                     | label_8:
    0x00028f42 add r6, sp, 0x20                      |     r6 += var_20h;
    0x00028f44 mov r0, r5                            |     r0 = r5;
    0x00028f46 mov r1, r6                            |     r1 = r6;
    0x00028f48 blx 0x13f0                            |     r0 = fcn_000013f0 ();
    0x00028f4c cmp r0, 0                             |     
    0x00028f4e ldr r3, [r7]                          |     r3 = *(r7);
                                                     |     if (r0 < 0) {
    0x00028f50 blt 0x28f7c                           |         goto label_32;
                                                     |     }
    0x00028f52 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028f54 beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028f58 ldrd r2, r1, [r6, 0x18]               |     __asm ("ldrd r2, r1, [var_18h_3]");
    0x00028f5c ldr r0, [r6, 0x10]                    |     r0 = var_10h;
    0x00028f5e str r5, [sp]                          |     *(sp) = r5;
    0x00028f60 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028f62 strd r2, r1, [sp, 8]                  |     __asm ("strd r2, r1, [var_8h]");
    0x00028f66 movs r1, 2                            |     r1 = 2;
    0x00028f68 str r0, [sp, 4]                       |     var_4h = r0;
    0x00028f6a ldr r2, [pc, 0xf0]                    |     
    0x00028f6c ldr r0, [pc, 0xf0]                    |     
    0x00028f6e add r2, pc                            |     r2 = 0x51fd0;
    0x00028f70 add r0, pc                            |     r0 = 0x51fd4;
    0x00028f72 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028f76 b 0x28bc2                             |     goto label_1;
                                                     | label_13:
    0x00028f78 blx 0x12ec                            |     getrlimit ();
                                                     | label_32:
    0x00028f7c cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028f7e beq.w 0x28bc2                         |         goto label_1;
                                                     |     }
    0x00028f82 blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x00028f86 ldr r6, [r0]                          |     r6 = *(r0);
    0x00028f88 ldr r7, [r4, 0x3c]                    |     r7 = *((r4 + 0x3c));
    0x00028f8a mov r0, r6                            |     r0 = r6;
    0x00028f8c blx 0x13cc                            |     fcn_000013cc ();
    0x00028f90 ldr r2, [pc, 0xd0]                    |     
    0x00028f92 mov r3, r7                            |     r3 = r7;
    0x00028f94 str r0, [sp, 8]                       |     var_8h = r0;
    0x00028f96 movs r1, 2                            |     r1 = 2;
    0x00028f98 ldr r0, [pc, 0xcc]                    |     
    0x00028f9a add r2, pc                            |     r2 = 0x52002;
    0x00028f9c strd r5, r6, [sp]                     |     __asm ("strd r5, r6, [sp]");
    0x00028fa0 add r0, pc                            |     r0 = 0x5200c;
    0x00028fa2 bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028fa6 b 0x28bc2                             |     goto label_1;
                                                     | label_31:
    0x00028fa8 blx 0x1424                            |     r0 = memset (r0, r1, r2);
    0x00028fac ldr r6, [r0]                          |     r6 = *(r0);
    0x00028fae ldr.w r8, [r4, 0x3c]                  |     r8 = *((r4 + 0x3c));
    0x00028fb2 mov r0, r6                            |     r0 = r6;
    0x00028fb4 blx 0x13cc                            |     fcn_000013cc ();
    0x00028fb8 ldr r2, [pc, 0xb0]                    |     
    0x00028fba mov r3, r8                            |     r3 = r8;
    0x00028fbc str r0, [sp, 8]                       |     var_8h = r0;
    0x00028fbe movs r1, 2                            |     r1 = 2;
    0x00028fc0 ldr r0, [pc, 0xac]                    |     
    0x00028fc2 add r2, pc                            |     r2 = 0x52032;
    0x00028fc4 str r6, [sp, 4]                       |     var_4h = r6;
    0x00028fc6 str r5, [sp]                          |     *(sp) = r5;
    0x00028fc8 add r0, pc                            |     r0 = 0x5203c;
    0x00028fca bl 0x2f4bc                            |     fcn_0002f4bc ();
    0x00028fce b 0x28f42                             |     goto label_8;
                                                     | label_30:
    0x00028fd0 ldr r0, [pc, 0xa0]                    |     
    0x00028fd2 add r0, pc                            |     r0 = 0x5204a;
    0x00028fd4 bl 0x263a8                            |     fcn_000263a8 (r0);
    0x00028fd8 movs r3, 3                            |     r3 = 3;
    0x00028fda str r3, [r4, 0x44]                    |     *((r4 + 0x44)) = r3;
    0x00028fdc b 0x28bc6                             |     goto label_0;
                                                     | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x29698 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) fcn.00029698 ()              | void fcn_00029698 (int16_t arg1) {
                                         |     int32_t var_0h;
                                         |     int32_t var_0h_2;
                                         |     r0 = arg1;
    0x00029698 push {r4, r5, lr}         |     
    0x0002969a movs r2, 0                |     r2 = 0;
    0x0002969c ldr r5, [pc, 0xd0]        |     
    0x0002969e sub sp, 0xc               |     
    0x000296a0 movs r1, 3                |     r1 = 3;
    0x000296a2 mov r4, r0                |     r4 = r0;
    0x000296a4 blx 0x143c                |     printf_chk ()
    0x000296a8 movs r1, 4                |     r1 = 4;
    0x000296aa orr r2, r0, 0x800         |     r2 = r0 | 0x800;
    0x000296ae mov r0, r4                |     r0 = r4;
    0x000296b0 add r5, pc                |     r5 = 0x52e24;
    0x000296b2 blx 0x143c                |     r0 = printf_chk ()
                                         |     if (r0 != 0) {
    0x000296b6 cbnz r0, 0x29716          |         goto label_2;
                                         |     }
    0x000296b8 movs r1, 0x64             |     r1 = 0x64;
    0x000296ba mov r0, r4                |     r0 = r4;
    0x000296bc blx 0x14d4                |     r0 = fcn_000014d4 ();
    0x000296c0 mov r3, r0                |     r3 = r0;
                                         |     if (r0 == 0) {
    0x000296c2 cbnz r0, 0x296ee          |         
    0x000296c4 ldr r1, [pc, 0xac]        |         
    0x000296c6 mov r2, r0                |         r2 = r0;
    0x000296c8 mov r0, r4                |         r0 = r4;
    0x000296ca add r1, pc                |         r1 = 0x52e42;
    0x000296cc bl 0x1b58                 |         r0 = fcn_00001b58 (r0, r1, r2);
    0x000296d0 cmp r0, 0                 |         
                                         |         if (r0 != 0) {
    0x000296d2 bne 0x2974c               |             goto label_3;
                                         |         }
    0x000296d4 ldr r3, [pc, 0xa0]        |         
    0x000296d6 ldr r3, [r5, r3]          |         r3 = *((r5 + r3));
    0x000296d8 ldr r3, [r3]              |         r3 = *(0x29778);
                                         |         if (r3 != 0) {
    0x000296da cbnz r3, 0x2973a          |             goto label_4;
                                         |         }
                                         | label_0:
    0x000296dc ldr r3, [pc, 0x9c]        |         
    0x000296de movs r0, 1                |         r0 = 1;
    0x000296e0 add r3, pc                |         
    0x000296e2 add.w r3, r3, 0x3000      |         r3 = 0x55e60;
    0x000296e6 str.w r4, [r3, 0x868]     |         __asm ("str.w r4, aav.0x000000ff");
    0x000296ea add sp, 0xc               |         
    0x000296ec pop {r4, r5, pc}          |         
                                         |     }
    0x000296ee blx 0x1424                |     r0 = memset (r0, r1, r2);
    0x000296f2 ldr r4, [r0]              |     r4 = *(r0);
    0x000296f4 mov r0, r4                |     r0 = r4;
    0x000296f6 blx 0x13cc                |     fcn_000013cc ();
    0x000296fa ldr r3, [pc, 0x84]        |     
    0x000296fc movs r1, 4                |     r1 = 4;
    0x000296fe ldr r2, [pc, 0x84]        |     
    0x00029700 strd r4, r0, [sp]         |     __asm ("strd r4, r0, [sp]");
    0x00029704 ldr r0, [pc, 0x80]        |     
    0x00029706 add r3, pc                |     r3 = 0x52e8c;
    0x00029708 add r2, pc                |     r2 = 0x52e92;
    0x0002970a add r0, pc                |     r0 = 0x52e96;
    0x0002970c bl 0x2f4bc                |     fcn_0002f4bc ();
                                         |     do {
                                         | label_1:
    0x00029710 movs r0, 0                |         r0 = 0;
    0x00029712 add sp, 0xc               |         
    0x00029714 pop {r4, r5, pc}          |         
                                         | label_2:
    0x00029716 blx 0x1424                |         r0 = memset (r0, r1, r2);
    0x0002971a ldr r4, [r0]              |         r4 = *(r0);
    0x0002971c mov r0, r4                |         r0 = r4;
    0x0002971e blx 0x13cc                |         fcn_000013cc ();
    0x00029722 ldr r3, [pc, 0x68]        |         
    0x00029724 movs r1, 4                |         r1 = 4;
    0x00029726 strd r4, r0, [sp]         |         __asm ("strd r4, r0, [sp]");
    0x0002972a ldr r2, [pc, 0x64]        |         
    0x0002972c ldr r0, [pc, 0x64]        |         
    0x0002972e add r3, pc                |         r3 = 0x52ec0;
    0x00029730 add r2, pc                |         r2 = 0x52ec6;
    0x00029732 add r0, pc                |         r0 = 0x52eca;
    0x00029734 bl 0x2f4bc                |         fcn_0002f4bc ();
    0x00029738 b 0x29710                 |         
                                         |     } while (1);
                                         | label_4:
    0x0002973a ldr r2, [pc, 0x5c]        |     
    0x0002973c mov r3, r4                |     r3 = r4;
    0x0002973e ldr r0, [pc, 0x5c]        |     
    0x00029740 movs r1, 5                |     r1 = 5;
    0x00029742 add r2, pc                |     r2 = 0x52ee0;
    0x00029744 add r0, pc                |     r0 = 0x52ee6;
    0x00029746 bl 0x2f4bc                |     fcn_0002f4bc ();
    0x0002974a b 0x296dc                 |     goto label_0;
                                         | label_3:
    0x0002974c blx 0x1424                |     r0 = memset (r0, r1, r2);
    0x00029750 ldr r4, [r0]              |     r4 = *(r0);
    0x00029752 mov r0, r4                |     r0 = r4;
    0x00029754 blx 0x13cc                |     fcn_000013cc ();
    0x00029758 ldr r3, [pc, 0x44]        |     
    0x0002975a movs r1, 4                |     r1 = 4;
    0x0002975c strd r4, r0, [sp]         |     __asm ("strd r4, r0, [sp]");
    0x00029760 ldr r2, [pc, 0x40]        |     
    0x00029762 ldr r0, [pc, 0x44]        |     
    0x00029764 add r3, pc                |     r3 = 0x52f08;
    0x00029766 add r2, pc                |     r2 = 0x52f0e;
    0x00029768 add r0, pc                |     r0 = 0x52f16;
    0x0002976a bl 0x2f4bc                |     fcn_0002f4bc ();
    0x0002976e b 0x29710                 |     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/sbin/mdnsd @ 0x2fff0 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.0002fff0 ()                                      | void fcn_0002fff0 (int16_t arg_a0h, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     size_t var_ch;
                                                                 |     char * src;
                                                                 |     int16_t var_12h;
                                                                 |     int16_t var_14h;
                                                                 |     long var_18h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ah;
                                                                 |     long offset;
                                                                 |     int16_t var_2fh;
                                                                 |     long var_30h;
                                                                 |     int16_t var_39h;
                                                                 |     int16_t var_3ah;
                                                                 |     long var_3ch;
                                                                 |     int16_t whence;
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_7ch;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0002fff0 push.w {r4, r5, r6, r7, r8, sb, lr}               |     
    0x0002fff4 mov r7, r2                                        |     r7 = r2;
    0x0002fff6 ldr r2, [pc, 0x230]                               |     
    0x0002fff8 mov r8, r3                                        |     r8 = r3;
    0x0002fffa sub sp, 0x84                                      |     
    0x0002fffc invalid                                           |     
    0x00030000 add r1, sp, 0x28                                  |     r1 += var_28h;
    0x00030002 add r2, pc                                        |     r2 = 0x60230;
    0x00030004 ldr.w sb, [sp, 0xa0]                              |     sb = *(arg_a0h);
    0x00030006 str r0, [sp, 0x280]                               |     *((sp + 0x280)) = r0;
    0x00030008 ldr r3, [r2, r3]                                  |     
    0x0003000a movs r2, 0x1c                                     |     r2 = 0x1c;
    0x0003000c ldr r3, [r3]                                      |     r3 = imp.__aeabi_unwind_cpp_pr0;
    0x0003000e str r3, [sp, 0x7c]                                |     var_7ch = r3;
    0x00030010 mov.w r3, 0                                       |     r3 = 0;
    0x00030014 mov.w r3, 0x4000                                  |     r3 = 0x4000;
    0x00030018 strd r2, r3, [sp, 8]                              |     __asm ("strd r2, r3, [var_8h]");
    0x0003001c add r2, sp, 8                                     |     r2 += var_8h;
    0x0003001e blx 0x134c                                        |     r0 = getsockopt ();
    0x00030022 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00030024 blt.w 0x30142                                     |         goto label_11;
                                                                 |     }
    0x00030028 mov.w r2, 0x800                                   |     r2 = 0x800;
    0x0003002c movs r1, 4                                        |     r1 = 4;
    0x0003002e blx 0x143c                                        |     r0 = printf_chk ()
    0x00030032 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00030034 blt.w 0x30154                                     |         goto label_12;
                                                                 |     }
    0x00030036 strh r6, [r1, 4]                                  |     *((r1 + 4)) = r6;
    0x00030038 movs r6, 4                                        |     r6 = 4;
    0x0003003a add r3, sp, 0xc                                   |     r3 += var_ch;
    0x0003003c movs r2, 0x19                                     |     r2 = 0x19;
    0x0003003e movs r1, 6                                        |     r1 = 6;
    0x00030040 mov r0, r4                                        |     r0 = r4;
    0x00030042 str r6, [sp]                                      |     *(sp) = r6;
    0x00030044 blx 0x11f4                                        |     r0 = fcn_000011f4 ();
    0x00030048 cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0003004a blt.w 0x3019e                                     |         goto label_13;
                                                                 |     }
    0x0003004e ldrh.w r0, [sp, 0x28]                             |     r0 = var_28h;
    0x00030052 cmp r0, 0xa                                       |     
                                                                 |     if (r0 != 0xa) {
    0x00030054 beq 0x300de                                       |         
    0x00030056 cmp r0, 2                                         |         
                                                                 |         if (r0 != 2) {
    0x00030058 bne 0x30128                                       |             goto label_14;
                                                                 |         }
    0x0003005a ldr r3, [sp, 0x2c]                                |         r3 = offset;
    0x0003005c add r5, sp, 0x44                                  |         r5 += whence;
    0x0003005e mov r2, r5                                        |         r2 = r5;
    0x00030060 add r1, sp, 0x2c                                  |         r1 += offset;
    0x00030062 str r6, [sp, 0x14]                                |         var_14h = r6;
    0x00030064 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x00030066 ldrh.w r3, [sp, 0x2a]                             |         r3 = var_2ah;
    0x0003006a strh.w r3, [sp, 0x10]                             |         src = r3;
    0x0003006e movs r3, 0x2f                                     |         r3 = 0x2f;
    0x00030070 blx 0x1520                                        |         fseek (r0, r1, r2);
    0x00030074 ldrh.w r6, [sp, 0x10]                             |         r6 = src;
    0x00030078 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x0003007a beq 0x30170                                       |             goto label_15;
                                                                 |         }
                                                                 | label_0:
    0x0003007c mov r0, r5                                        |         r0 = r5;
    0x0003007e rev16 r6, r6                                      |         __asm ("rev16 r6, r6");
    0x00030080 blx 0x1418                                        |         fcntl ();
    0x00030084 ldr r3, [pc, 0x1a8]                               |         
    0x00030086 uxth r6, r6                                       |         r6 = (int16_t) r6;
    0x00030088 mov r1, r0                                        |         r1 = r0;
    0x0003008a str r6, [sp, 4]                                   |         var_4h = r6;
    0x0003008c adds r0, r5, r0                                   |         r0 = r5 + r0;
    0x0003008e add r3, pc                                        |         r3 = 0x602c2;
    0x00030090 movs r6, 0x25                                     |         r6 = 0x25;
    0x00030092 str r3, [sp]                                      |         *(sp) = r3;
    0x00030094 movs r2, 1                                        |         r2 = 1;
    0x00030096 strb r6, [r5, r1]                                 |         *((r5 + r1)) = r6;
    0x00030098 mov.w r3, -1                                      |         r3 = -1;
    0x0003009c movs r1, 6                                        |         r1 = 6;
    0x0003009e adds r0, 1                                        |         r0++;
    0x000300a0 blx 0x15a8                                        |         fcn_000015a8 ();
    0x000300a4 mov r1, r4                                        |         r1 = r4;
    0x000300a6 mov r0, r7                                        |         r0 = r7;
    0x000300a8 bl 0x3220                                         |         r0 = fcn_00003220 (r0, r1);
    0x000300ac mov r6, r0                                        |         r6 = r0;
    0x000300ae cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000300b0 beq.w 0x301f0                                     |             goto label_16;
                                                                 |         }
    0x000300b4 mov r3, r5                                        |         r3 = r5;
    0x000300b6 add r2, sp, 0x10                                  |         r2 += src;
    0x000300b8 add r1, sp, 0x14                                  |         r1 += var_14h;
    0x000300ba str.w sb, [sp]                                    |         __asm ("str.w sb, [sp]");
    0x000300be blx r8                                            |         uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
                                                                 | label_1:
    0x000300c0 ldr r2, [pc, 0x170]                               |         
    0x000300c2 ldr r3, [pc, 0x168]                               |         r3 = *(0x3022e);
    0x000300c4 add r2, pc                                        |         r2 = 0x602fc;
    0x000300c6 ldr r3, [r2, r3]                                  |         r3 = imp.__aeabi_unwind_cpp_pr0;
    0x000300c8 ldr r2, [r3]                                      |         r2 = imp.__aeabi_unwind_cpp_pr0;
    0x000300ca ldr r3, [sp, 0x7c]                                |         r3 = var_7ch;
    0x000300cc eors r2, r3                                       |         r2 ^= r3;
    0x000300ce mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000300d2 bne.w 0x30224                                     |             goto label_17;
                                                                 |         }
    0x000300d6 mov r0, r6                                        |         r0 = r6;
    0x000300d8 add sp, 0x84                                      |         
    0x000300da pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
                                                                 |     }
    0x000300de add.w ip, sp, 0x2f                                |     
    0x000300e2 add.w r2, sp, 0x39                                |     r2 += var_39h;
                                                                 |     do {
    0x000300e6 ldrb r3, [ip, 1]!                                 |         r3 = var_30h;
                                                                 |         if (r3 != 0) {
    0x000300ea cbnz r3, 0x300fc                                  |             goto label_18;
                                                                 |         }
    0x000300ec cmp r2, ip                                        |         
    0x000300ee bne 0x300e6                                       |         
                                                                 |     } while (r2 != ip);
    0x000300f0 ldrh.w r2, [sp, 0x3a]                             |     r2 = var_3ah;
    0x000300f4 movw r3, 0xffff                                   |     r3 = 0xffff;
    0x000300f8 cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x000300fa beq 0x30182                                       |         goto label_19;
                                                                 |     }
                                                                 | label_18:
    0x000300fc movs r3, 6                                        |     r3 = 6;
    0x000300fe add r5, sp, 0x44                                  |     r5 += whence;
    0x00030100 add r6, sp, 0x30                                  |     r6 += var_30h;
    0x00030102 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00030104 mov r2, r5                                        |     r2 = r5;
    0x00030106 movs r3, 0x2f                                     |     r3 = 0x2f;
    0x00030108 mov r1, r6                                        |     r1 = r6;
    0x0003010a movs r0, 0xa                                      |     r0 = 0xa;
    0x0003010c blx 0x1520                                        |     r0 = fseek (r0, r1, r2);
    0x00030110 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00030112 beq 0x30208                                       |         goto label_20;
                                                                 |     }
                                                                 | label_4:
    0x00030114 ldm.w r6, {r0, r1, r2, r3}                        |     r0 = *(r6);
                                                                 |     r1 = *((r6 + 4));
                                                                 |     r2 = *((r6 + 8));
                                                                 |     r3 = *((r6 + 12));
    0x00030118 add r6, sp, 0x18                                  |     r6 += var_18h;
    0x0003011a stm.w r6, {r0, r1, r2, r3}                        |     *(r6) = r0;
                                                                 |     *((r6 + 4)) = r1;
                                                                 |     *((r6 + 8)) = r2;
                                                                 |     *((r6 + 12)) = r3;
                                                                 | label_3:
    0x0003011e ldrh.w r6, [sp, 0x2a]                             |     r6 = var_2ah;
    0x00030122 strh.w r6, [sp, 0x10]                             |     src = r6;
    0x00030126 b 0x3007c                                         |     goto label_0;
                                                                 | label_14:
    0x00030128 mov r3, r0                                        |     r3 = r0;
    0x0003012a ldr r2, [pc, 0x10c]                               |     
    0x0003012c ldr r0, [pc, 0x10c]                               |     
    0x0003012e mov r1, r6                                        |     r1 = r6;
    0x00030130 add r2, pc                                        |     r2 = 0x6036e;
    0x00030132 add r0, pc                                        |     r0 = 0x60372;
    0x00030134 bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x00030136 vst3.16 {d20[0], d22[0], d24[0]}, [r2], r0        |     __asm ("vst3.16 {d20[0], d22[0], d24[0]}, [r2], r0");
    0x0003013a blx 0x1584                                        |     fcn_00001584 ();
                                                                 |     do {
                                                                 | label_2:
    0x0003013e movs r6, 0                                        |         r6 = 0;
    0x00030140 b 0x300c0                                         |         goto label_1;
                                                                 | label_11:
    0x00030142 ldr r2, [pc, 0xfc]                                |         
    0x00030144 mov r3, r4                                        |         r3 = r4;
    0x00030146 ldr r0, [pc, 0xfc]                                |         
    0x00030148 movs r1, 4                                        |         r1 = 4;
    0x0003014a add r2, pc                                        |         r2 = 0x60390;
    0x0003014c add r0, pc                                        |         r0 = 0x60396;
    0x0003014e bl 0x2f4bc                                        |         fcn_0002f4bc ();
    0x00030152 b 0x3013e                                         |         
                                                                 |     } while (1);
                                                                 | label_12:
    0x00030154 mov r0, r4                                        |     r0 = r4;
    0x00030156 blx 0x1584                                        |     fcn_00001584 ();
    0x0003015a blx 0x1424                                        |     memset (r0, r1, r2);
    0x0003015c strd r4, sl, [r4, -0xe8]!                         |     __asm ("strd r4, sl, [r4, -0xe8]!");
    0x00030160 movs r1, 4                                        |     r1 = 4;
    0x00030162 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00030164 ldr r0, [pc, 0xe4]                                |     
    0x00030166 add r2, pc                                        |     r2 += pc;
    0x00030168 add r0, pc                                        |     r0 = 0x603b8;
    0x0003016a bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x0003016e b 0x3013e                                         |     goto label_2;
                                                                 | label_15:
    0x00030170 ldr r2, [pc, 0xdc]                                |     
    0x00030172 mov r3, r5                                        |     r3 = r5;
    0x00030174 ldrh.w r6, [sp, 0x10]                             |     r6 = src;
    0x00030178 add r2, pc                                        |     r2 = 0x603cc;
    0x0003017a ldm r2, {r0, r1, r2}                              |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
                                                                 |     r2 = *((r2 + 8));
    0x0003017c stm r3!, {r0, r1}                                 |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
    0x0003017e strh r2, [r3]                                     |     *(r3) = r2;
    0x00030180 b 0x3007c                                         |     goto label_0;
                                                                 |     if (r5 != 0) {
                                                                 | label_19:
    0x00030182 cbnz r5, 0x301ba                                  |         goto label_21;
                                                                 |     }
    0x00030184 movs r3, 4                                        |     r3 = 4;
    0x00030186 add r5, sp, 0x44                                  |     r5 += whence;
    0x00030188 str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0003018a mov r2, r5                                        |     r2 = r5;
    0x0003018c movs r3, 0x2f                                     |     r3 = 0x2f;
    0x0003018e add r1, sp, 0x3c                                  |     r1 += var_3ch;
    0x00030190 movs r0, 2                                        |     r0 = 2;
    0x00030192 blx 0x1520                                        |     r0 = fseek (r0, r1, r2);
    0x00030196 cbz r0, 0x301e2                                   |     
                                                                 |     while (1) {
    0x00030198 ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x0003019a str r3, [sp, 0x18]                                |         var_18h = r3;
    0x0003019c b 0x3011e                                         |         goto label_3;
                                                                 | label_13:
    0x0003019e mov r0, r4                                        |         r0 = r4;
    0x000301a0 blx 0x1584                                        |         fcn_00001584 ();
    0x000301a4 blx 0x1424                                        |         memset (r0, r1, r2);
    0x000301a8 ldr r2, [pc, 0xa8]                                |         
    0x000301aa mov r1, r6                                        |         r1 = r6;
    0x000301ac ldr r3, [r0]                                      |         r3 = *(r0);
    0x000301ae ldr r0, [pc, 0xa8]                                |         
    0x000301b0 add r2, pc                                        |         r2 = 0x60408;
    0x000301b2 add r0, pc                                        |         r0 = 0x60410;
    0x000301b4 bl 0x2f4bc                                        |         fcn_0002f4bc ();
    0x000301b8 b 0x3013e                                         |         goto label_2;
                                                                 | label_21:
    0x000301ba add r5, sp, 0x44                                  |         r5 += whence;
    0x000301bc movs r3, 0x2f                                     |         r3 = 0x2f;
    0x000301be mov r2, r5                                        |         r2 = r5;
    0x000301c0 add r1, sp, 0x3c                                  |         r1 += var_3ch;
    0x000301c2 movs r0, 2                                        |         r0 = 2;
    0x000301c4 blx 0x1520                                        |         r0 = fseek (r0, r1, r2);
                                                                 |         if (r0 == 0) {
    0x000301c8 cbz r0, 0x30216                                   |             goto label_22;
                                                                 |         }
                                                                 | label_5:
    0x000301ca ldr r2, [pc, 0x90]                                |         
    0x000301cc mov r3, r5                                        |         r3 = r5;
    0x000301ce ldr r0, [pc, 0x90]                                |         
    0x000301d0 movs r1, 4                                        |         r1 = 4;
    0x000301d2 add r2, pc                                        |         r2 = 0x60434;
    0x000301d4 add r0, pc                                        |         r0 = 0x6043a;
    0x000301d6 bl 0x2f4bc                                        |         fcn_0002f4bc ();
    0x000301da mov r0, r4                                        |         r0 = r4;
    0x000301dc blx 0x1584                                        |         fcn_00001584 ();
    0x000301e0 b 0x3013e                                         |         goto label_2;
    0x000301e2 ldr r2, [pc, 0x80]                                |         
    0x000301e4 mov r3, r5                                        |         r3 = r5;
    0x000301e6 add r2, pc                                        |         r2 = 0x60450;
    0x000301e8 ldm r2, {r0, r1, r2}                              |         r0 = *(r2);
                                                                 |         r1 = *((r2 + 4));
                                                                 |         r2 = *((r2 + 8));
    0x000301ea stm r3!, {r0, r1}                                 |         *(r3!) = r0;
                                                                 |         *((r3! + 4)) = r1;
    0x000301ec strh r2, [r3]                                     |         *(r3) = r2;
    0x000301ee b 0x30198                                         |         
                                                                 |     }
                                                                 | label_16:
    0x000301f0 ldr r2, [pc, 0x74]                                |     
    0x000301f2 mov r3, r5                                        |     r3 = r5;
    0x000301f4 ldr r0, [pc, 0x74]                                |     
    0x000301f6 movs r1, 4                                        |     r1 = 4;
    0x000301f8 add r2, pc                                        |     r2 = 0x60464;
    0x000301fa add r0, pc                                        |     r0 = 0x6046a;
    0x000301fc bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x00030200 mov r0, r4                                        |     r0 = r4;
    0x00030202 blx 0x1584                                        |     fcn_00001584 ();
    0x00030206 b 0x3013e                                         |     goto label_2;
                                                                 | label_20:
    0x00030208 ldr r2, [pc, 0x64]                                |     
    0x0003020a mov r3, r5                                        |     r3 = r5;
    0x0003020c add r2, pc                                        |     r2 = 0x60480;
    0x0003020e ldm r2, {r0, r1, r2}                              |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
                                                                 |     r2 = *((r2 + 8));
    0x00030210 stm r3!, {r0, r1}                                 |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
    0x00030212 strh r2, [r3]                                     |     *(r3) = r2;
    0x00030214 b 0x30114                                         |     goto label_4;
                                                                 | label_22:
    0x00030216 ldr r2, [pc, 0x5c]                                |     
    0x00030218 mov r3, r5                                        |     r3 = r5;
    0x0003021a add r2, pc                                        |     r2 = 0x60494;
    0x0003021c ldm r2, {r0, r1, r2}                              |     r0 = *(r2);
                                                                 |     r1 = *((r2 + 4));
                                                                 |     r2 = *((r2 + 8));
    0x0003021e stm r3!, {r0, r1}                                 |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
    0x00030220 strh r2, [r3]                                     |     *(r3) = r2;
    0x00030222 b 0x301ca                                         |     goto label_5;
                                                                 | label_17:
    0x00030224 blx 0x12ec                                        |     getrlimit ();
    0x00030228 ldr r6, [r2, 0x5c]                                |     r6 = *((r2 + 0x5c));
    0x0003022a movs r1, r0                                       |     r1 = r0;
    0x0003022c lsls r0, r7, 5                                    |     r0 = r7 << 5;
    0x0003022e movs r0, r0                                       |     
                                                                 |     if (r0 >= r0) {
    0x00030230 bls 0x30288                                       |         
    0x00030232 movs r0, r0                                       |         
    0x00030234 ldr r4, [r2, 0x50]                                |         r4 = *((r2 + 0x50));
    0x00030236 movs r1, r0                                       |         r1 = r0;
    0x00030238 adds r1, 0x54                                     |         r1 += 0x54;
    0x0003023a movs r1, r0                                       |         r1 = r0;
    0x0003023c invalid                                           |         
                                                                 |     }
    0x00030288 mov r4, r3                                        |     r4 = r3;
    0x0003028a add r1, pc                                        |     r1 += pc;
    0x0003028c ldrb.w r8, [sp, 0x50]                             |     r8 = var_50h;
    0x00030290 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00030292 ldr r2, [r2]                                      |     r2 = *(r2);
    0x00030294 str r2, [sp, 0x2c]                                |     offset = r2;
    0x00030296 mov.w r2, 0                                       |     r2 = 0;
    0x0003029a movs r2, 1                                        |     r2 = 1;
    0x0003029c str r2, [sp, 8]                                   |     var_8h = r2;
                                                                 |     if (r3 != 0) {
    0x0003029e cbz r3, 0x302a6                                   |         
    0x000302a0 ldr r3, [r3]                                      |         r3 = *(r3);
    0x000302a2 cmp r3, r5                                        |         
                                                                 |         if (r3 != r5) {
    0x000302a4 bne 0x3035c                                       |             goto label_23;
                                                                 |         }
                                                                 |     }
    0x000302a6 cmp r6, 0                                         |     
                                                                 |     if (r6 == 0) {
    0x000302a8 beq 0x3038e                                       |         goto label_24;
                                                                 |     }
    0x000302aa add.w sb, sp, 0x10                                |     sb += src;
    0x000302ae movs r1, 0x1c                                     |     r1 = 0x1c;
    0x000302b0 mov r0, sb                                        |     r0 = sb;
    0x000302b2 bl 0x3b4c                                         |     fcn_00003b4c (r0);
    0x000302b6 cmp r5, 6                                         |     
    0x000302b8 it ne                                             |     
                                                                 |     if (r5 != 6) {
    0x000302ba cmpne r5, 0                                       |         __asm ("cmpne r5, 0");
                                                                 |     }
                                                                 |     if (r5 != 6) {
    0x000302bc bne 0x30340                                       |         goto label_25;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x000302be cbz r4, 0x302cc                                   |         
    0x000302c0 ldr r0, [r4, 4]                                   |         r0 = *((r4 + 4));
    0x000302c2 ldr r1, [r4, 8]                                   |         r1 = *((r4 + 8));
    0x000302c4 ldr r2, [r4, 0xc]                                 |         r2 = *((r4 + 0xc));
    0x000302c6 ldr r3, [r4, 0x10]                                |         r3 = *((r4 + 0x10));
    0x000302c8 add r4, sp, 0x18                                  |         r4 += var_18h;
    0x000302ca stm r4!, {r0, r1, r2, r3}                         |         *(r4!) = r0;
                                                                 |         *((r4! + 4)) = r1;
                                                                 |         *((r4! + 8)) = r2;
                                                                 |         *((r4! + 12)) = r3;
                                                                 |     }
    0x000302cc ldrh r3, [r6]                                     |     r3 = *(r6);
    0x000302ce movs r0, 0xa                                      |     r0 = 0xa;
    0x000302d0 strh.w r0, [sp, 0x10]                             |     src = r0;
    0x000302d4 strh.w r3, [sp, 0x12]                             |     var_12h = r3;
    0x000302d8 movs r3, 0x1c                                     |     r3 = 0x1c;
    0x000302da str r3, [sp, 0xc]                                 |     var_ch = r3;
                                                                 |     do {
    0x000302dc movs r2, 6                                        |         r2 = 6;
    0x000302de movs r1, 1                                        |         r1 = 1;
    0x000302e0 blx 0x152c                                        |         r0 = strncmp (r0, r1, r2);
    0x000302e4 subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x000302e6 blt 0x303b0                                       |             goto label_26;
                                                                 |         }
    0x000302e8 str r4, [r7]                                      |         *(r7) = r4;
    0x000302ea cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x000302ee beq 0x30302                                       |             
    0x000302f0 movs r5, 4                                        |             r5 = 4;
    0x000302f2 add r3, sp, 8                                     |             r3 += var_8h;
    0x000302f4 movs r2, 2                                        |             r2 = 2;
    0x000302f6 movs r1, 1                                        |             r1 = 1;
    0x000302f8 str r5, [sp]                                      |             *(sp) = r5;
    0x000302fa blx 0x11f4                                        |             r0 = fcn_000011f4 ();
    0x000302fe cmp r0, 0                                         |             
                                                                 |             if (r0 < 0) {
    0x00030300 blt 0x303e8                                       |                 goto label_27;
                                                                 |             }
                                                                 |         }
    0x00030302 ldr r2, [sp, 0xc]                                 |         r2 = var_ch;
    0x00030304 mov r1, sb                                        |         r1 = sb;
    0x00030306 mov r0, r4                                        |         r0 = r4;
    0x00030308 blx 0x1430                                        |         r0 = strncpy (r0, r1, r2);
    0x0003030c cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x0003030e blt 0x303cc                                       |             goto label_28;
                                                                 |         }
    0x00030310 ldrh r3, [r6]                                     |         r3 = *(r6);
                                                                 |         if (r3 == 0) {
    0x00030312 cbz r3, 0x30370                                   |             goto label_29;
                                                                 |         }
                                                                 | label_7:
    0x00030314 ldr r1, [sp, 0x54]                                |         r1 = var_54h;
    0x00030316 mov r0, r4                                        |         r0 = r4;
    0x00030318 blx 0x14d4                                        |         r0 = fcn_000014d4 ();
    0x0003031c cmp r0, 0                                         |         
    0x0003031e it ge                                             |         
                                                                 |         if (r0 < 0) {
    0x00030320 movge r0, 1                                       |             r0 = 1;
                                                                 |         }
                                                                 |         if (r0 < 0) {
    0x00030322 blt 0x30404                                       |             goto label_30;
                                                                 |         }
                                                                 | label_6:
    0x00030324 ldr r2, [pc, 0x120]                               |         
    0x00030326 ldr r3, [pc, 0x11c]                               |         r3 = *(0x30446);
    0x00030328 add r2, pc                                        |         r2 = 0x60774;
    0x0003032a ldr r3, [r2, r3]                                  |         r3 = imp.__aeabi_unwind_cpp_pr0;
    0x0003032c ldr r2, [r3]                                      |         r2 = imp.__aeabi_unwind_cpp_pr0;
    0x0003032e ldr r3, [sp, 0x2c]                                |         r3 = offset;
    0x00030330 eors r2, r3                                       |         r2 ^= r3;
    0x00030332 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00030336 bne.w 0x3043c                                     |             goto label_31;
                                                                 |         }
    0x0003033a add sp, 0x34                                      |         
    0x0003033c pop.w {r4, r5, r6, r7, r8, sb, pc}                |         
                                                                 | label_25:
    0x00030340 cmp r5, 4                                         |         
                                                                 |         if (r5 != 4) {
    0x00030342 bne 0x3039e                                       |             goto label_32;
                                                                 |         }
                                                                 |         if (r4 != 0) {
    0x00030344 cbz r4, 0x3034a                                   |             
    0x00030346 ldr r3, [r4, 4]                                   |             r3 = *((r4 + 4));
    0x00030348 str r3, [sp, 0x14]                                |             var_14h = r3;
                                                                 |         }
    0x0003034a ldrh r3, [r6]                                     |         r3 = *(r6);
    0x0003034c movs r0, 2                                        |         r0 = 2;
    0x0003034e strh.w r0, [sp, 0x10]                             |         src = r0;
    0x00030352 strh.w r3, [sp, 0x12]                             |         var_12h = r3;
    0x00030356 movs r3, 0x10                                     |         r3 = 0x10;
    0x00030358 str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x0003035a b 0x302dc                                         |         
                                                                 |     } while (1);
                                                                 | label_23:
    0x0003035c ldr r2, [pc, 0xec]                                |     
    0x0003035e movs r1, 4                                        |     r1 = 4;
    0x00030360 ldr r0, [pc, 0xec]                                |     
    0x00030362 str r5, [sp]                                      |     *(sp) = r5;
    0x00030364 add r2, pc                                        |     r2 = 0x607b4;
    0x00030366 add r0, pc                                        |     r0 = 0x607ba;
    0x00030368 bl 0x2f4bc                                        |     fcn_0002f4bc ();
                                                                 |     do {
                                                                 | label_8:
    0x0003036c movs r0, 0                                        |         r0 = 0;
    0x0003036e b 0x30324                                         |         goto label_6;
                                                                 | label_29:
    0x00030370 movs r1, 0x1c                                     |         r1 = 0x1c;
    0x00030372 mov r0, sb                                        |         r0 = sb;
    0x00030374 bl 0x3b4c                                         |         fcn_00003b4c (r0);
    0x00030378 add r2, sp, 0xc                                   |         r2 += var_ch;
    0x0003037a mov r1, sb                                        |         r1 = sb;
    0x0003037c mov r0, r4                                        |         r0 = r4;
    0x0003037e blx 0x14f8                                        |         r0 = fcn_000014f8 ();
    0x00030382 cmp r0, 0                                         |         
                                                                 |         if (r0 < 0) {
    0x00030384 blt 0x30420                                       |             goto label_33;
                                                                 |         }
    0x00030386 ldrh.w r3, [sp, 0x12]                             |         r3 = var_12h;
    0x0003038a strh r3, [r6]                                     |         *(r6) = r3;
    0x0003038c b 0x30314                                         |         goto label_7;
                                                                 | label_24:
    0x0003038e ldr r2, [pc, 0xc4]                                |         
    0x00030390 movs r1, 4                                        |         r1 = 4;
    0x00030392 ldr r0, [pc, 0xc4]                                |         
    0x00030394 add r2, pc                                        |         r2 = 0x607ee;
    0x00030396 add r0, pc                                        |         r0 = 0x607f4;
    0x00030398 bl 0x2f4bc                                        |         fcn_0002f4bc ();
    0x0003039c b 0x3036c                                         |         
                                                                 |     } while (1);
                                                                 | label_32:
    0x0003039e ldr r2, [pc, 0xbc]                                |     
    0x000303a0 mov r3, r5                                        |     r3 = r5;
    0x000303a2 ldr r0, [pc, 0xbc]                                |     
    0x000303a4 movs r1, 4                                        |     r1 = 4;
    0x000303a6 add r2, pc                                        |     r2 = 0x60808;
    0x000303a8 add r0, pc                                        |     r0 = 0x6080e;
    0x000303aa bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x000303ae b 0x3036c                                         |     goto label_8;
                                                                 | label_26:
    0x000303b0 blx 0x1424                                        |     r0 = memset (r0, r1, r2);
    0x000303b4 ldr r0, [r0]                                      |     r0 = *(r0);
    0x000303b6 blx 0x13cc                                        |     fcn_000013cc ();
    0x000303ba ldr r2, [pc, 0xa8]                                |     
    0x000303bc mov r3, r0                                        |     r3 = r0;
    0x000303be ldr r0, [pc, 0xa8]                                |     
    0x000303c0 movs r1, 4                                        |     r1 = 4;
    0x000303c2 add r2, pc                                        |     r2 = 0x6082c;
    0x000303c4 add r0, pc                                        |     r0 = 0x60832;
    0x000303c6 bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x000303ca b 0x3036c                                         |     goto label_8;
                                                                 | label_28:
    0x000303cc blx 0x1424                                        |     r0 = memset (r0, r1, r2);
    0x000303d0 ldr r0, [r0]                                      |     r0 = *(r0);
    0x000303d2 blx 0x13cc                                        |     fcn_000013cc ();
    0x000303d6 ldr r2, [pc, 0x94]                                |     
    0x000303d8 mov r3, r0                                        |     r3 = r0;
    0x000303da ldr r0, [pc, 0x94]                                |     
    0x000303dc movs r1, 4                                        |     r1 = 4;
    0x000303de add r2, pc                                        |     r2 = 0x60850;
    0x000303e0 add r0, pc                                        |     r0 = 0x60856;
    0x000303e2 bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x000303e6 b 0x3036c                                         |     goto label_8;
                                                                 | label_27:
    0x000303e8 blx 0x1424                                        |     r0 = memset (r0, r1, r2);
    0x000303ec ldr r0, [r0]                                      |     r0 = *(r0);
    0x000303ee blx 0x13cc                                        |     fcn_000013cc ();
    0x000303f2 ldr r2, [pc, 0x80]                                |     
    0x000303f4 mov r3, r0                                        |     r3 = r0;
    0x000303f6 ldr r0, [pc, 0x80]                                |     
    0x000303f8 mov r1, r5                                        |     r1 = r5;
    0x000303fa add r2, pc                                        |     r2 = 0x60874;
    0x000303fc add r0, pc                                        |     r0 = 0x6087a;
    0x000303fe bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x00030402 b 0x3036c                                         |     goto label_8;
                                                                 | label_30:
    0x00030404 blx 0x1424                                        |     r0 = memset (r0, r1, r2);
    0x00030408 ldr r0, [r0]                                      |     r0 = *(r0);
    0x0003040a blx 0x13cc                                        |     fcn_000013cc ();
    0x0003040e ldr r2, [pc, 0x6c]                                |     
    0x00030410 mov r3, r0                                        |     r3 = r0;
    0x00030412 ldr r0, [pc, 0x6c]                                |     
    0x00030414 movs r1, 4                                        |     r1 = 4;
    0x00030416 add r2, pc                                        |     r2 = 0x60898;
    0x00030418 add r0, pc                                        |     r0 = 0x6089e;
    0x0003041a bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x0003041e b 0x3036c                                         |     goto label_8;
                                                                 | label_33:
    0x00030420 blx 0x1424                                        |     r0 = memset (r0, r1, r2);
    0x00030424 ldr r0, [r0]                                      |     r0 = *(r0);
    0x00030426 blx 0x13cc                                        |     fcn_000013cc ();
    0x0003042a ldr r2, [pc, 0x58]                                |     
    0x0003042c mov r3, r0                                        |     r3 = r0;
    0x0003042e ldr r0, [pc, 0x58]                                |     
    0x00030430 movs r1, 4                                        |     r1 = 4;
    0x00030432 add r2, pc                                        |     r2 = 0x608bc;
    0x00030434 add r0, pc                                        |     r0 = 0x608c2;
    0x00030436 bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x0003043a b 0x3036c                                         |     goto label_8;
                                                                 | label_31:
    0x0003043c blx 0x12ec                                        |     getrlimit ();
    0x00030440 ldr r6, [r1, 0x34]                                |     r6 = *((r1 + 0x34));
    0x00030442 movs r1, r0                                       |     r1 = r0;
    0x00030444 lsls r0, r7, 5                                    |     r0 = r7 << 5;
    0x00030446 movs r0, r0                                       |     
    0x00030448 ldr r0, [r6, 0x28]                                |     r0 = *((r6 + 0x28));
    0x0003044a movs r1, r0                                       |     r1 = r0;
    0x0003044c cmp r7, 0xc8                                      |     
    0x0003044e movs r1, r0                                       |     r1 = r0;
    0x00030450 cmp r2, fp                                        |     
    0x00030452 movs r0, r0                                       |     
    0x00030454 cmp r7, 0xcc                                      |     
    0x00030456 movs r1, r0                                       |     r1 = r0;
    0x00030458 cmp r2, r5                                        |     
    0x0003045a movs r0, r0                                       |     
    0x0003045c cmp r7, 0xea                                      |     
    0x0003045e movs r1, r0                                       |     r1 = r0;
    0x00030460 cmp r0, r3                                        |     
    0x00030462 movs r0, r0                                       |     
    0x00030464 cmp r7, 0xfe                                      |     
    0x00030466 movs r1, r0                                       |     r1 = r0;
    0x00030468 add ip, pc                                        |     
    0x0003046a movs r0, r0                                       |     
    0x0003046c adds r0, 0x42                                     |     r0 += 0x42;
    0x0003046e movs r1, r0                                       |     r1 = r0;
    0x00030470 add r8, ip                                        |     r8 += ip;
    0x00030472 movs r0, r0                                       |     
    0x00030474 cmp r7, 0xf6                                      |     
    0x00030476 movs r1, r0                                       |     r1 = r0;
    0x00030478 add ip, r8                                        |     
    0x0003047a movs r0, r0                                       |     
    0x0003047c adds r0, 0x56                                     |     r0 += 0x56;
    0x0003047e movs r1, r0                                       |     r1 = r0;
    0x00030480 add r8, r5                                        |     r8 += r5;
    0x00030482 movs r0, r0                                       |     
    0x00030484 adds r0, 0x16                                     |     r0 += 0x16;
    0x00030486 movs r1, r0                                       |     r1 = r0;
    0x00030488 add ip, r1                                        |     
    0x0003048a movs r0, r0                                       |     
    0x0003048c push {r4, r5, r6, lr}                             |     
    0x0003048e mov r4, r3                                        |     r4 = r3;
    0x00030490 sub sp, 8                                         |     
    0x00030492 movs r3, 0                                        |     r3 = 0;
    0x00030494 mov r5, r0                                        |     r5 = r0;
    0x00030496 blx 0x1578                                        |     r0 = fcn_00001578 ();
    0x0003049a cmp r0, 0                                         |     
                                                                 |     if (r0 <= 0) {
    0x0003049c ble 0x304ac                                       |         goto label_34;
                                                                 |     }
    0x0003049e ldr r3, [pc, 0xec]                                |     
    0x000304a0 movs r2, 0                                        |     r2 = 0;
    0x000304a2 add r3, pc                                        |     r3 = 0x60a34;
    0x000304a4 strd r2, r2, [r3, 4]                              |     __asm ("strd r2, r2, [r3, 4]");
                                                                 |     do {
                                                                 | label_10:
    0x000304a8 add sp, 8                                         |         
    0x000304aa pop {r4, r5, r6, pc}                              |         
                                                                 |         if (r2 != 0) {
                                                                 | label_34:
    0x000304ac bne 0x304e2                                       |             goto label_35;
                                                                 |         }
    0x000304ae ldr r6, [pc, 0xe0]                                |         
    0x000304b0 movs r1, 1                                        |         r1 = 1;
    0x000304b2 movw r2, 0xcccd                                   |         
    0x000304b6 movw r3, 0x9998                                   |         
    0x000304ba movt r2, 0xcccc                                   |         r2 = 0xcccccccd;
    0x000304be movt r3, 0x1999                                   |         r3 = 0x19999998;
    0x000304c2 add r6, pc                                        |         r6 = 0x60a58;
    0x000304c4 strb r1, [r4]                                     |         *(r4) = r1;
    0x000304c6 ldr r0, [r6, 4]                                   |         r0 = imp.__aeabi_unwind_cpp_pr0;
    0x000304c8 add r0, r1                                        |         r0 += r1;
    0x000304ca mla r3, r2, r0, r3                                |         __asm ("mla r3, r2, r0, r3");
    0x000304ce str r0, [r6, 4]                                   |         *((r6 + 4)) = r0;
    0x000304d0 movw r2, 0xcccc                                   |         
    0x000304d4 movt r2, 0xccc                                    |         r2 = 0xccccccc;
    0x000304d8 cmp.w r2, r3, ror 2                               |         
                                                                 |         if (r2 >= r3) {
    0x000304dc bhs 0x3053c                                       |             goto label_36;
                                                                 |         }
                                                                 | label_9:
    0x000304de movs r0, 0                                        |         r0 = 0;
    0x000304e0 b 0x304a8                                         |         
                                                                 |     } while (1);
                                                                 | label_35:
    0x000304e2 blx 0x1424                                        |     r0 = memset (r0, r1, r2);
    0x000304e6 ldr r6, [r0]                                      |     r6 = *(r0);
    0x000304e8 cmp r6, 0x68                                      |     
                                                                 |     if (r6 == 0x68) {
    0x000304ea beq 0x30536                                       |         goto label_37;
                                                                 |     }
    0x000304ec cmp r6, 0xb                                       |     
                                                                 |     if (r6 != 0xb) {
    0x000304ee bne 0x3056c                                       |         goto label_38;
                                                                 |     }
    0x000304f0 ldr r1, [pc, 0xa0]                                |     
    0x000304f2 movw r0, 0x78d5                                   |     
    0x000304f6 movw r3, 0x24d8                                   |     
    0x000304fa movt r0, 0x26e9                                   |     r0 = 0x26e978d5;
    0x000304fe movt r3, 0x106                                    |     r3 = 0x10624d8;
    0x00030502 movw r2, 0x8936                                   |     
    0x00030506 add r1, pc                                        |     r1 = 0x60a9e;
    0x00030508 movt r2, 0x41                                     |     r2 = 0x418936;
    0x0003050c subs r0, r3, r5                                   |     r0 = r3 - r5;
    0x0003050e adds r4, 1                                        |     r4++;
    0x00030510 mla r3, r0, r4, r3                                |     __asm ("mla r3, r0, r4, r3");
    0x00030514 str r4, [r1, 8]                                   |     *((r1 + 8)) = r4;
    0x00030516 cmp.w r2, r3, ror 3                               |     
                                                                 |     if (r2 <= r3) {
    0x0003051a blo 0x304de                                       |         goto label_9;
                                                                 |     }
    0x0003051c ldr r2, [pc, 0x78]                                |     
    0x0003051e mov r3, r5                                        |     r3 = r5;
    0x00030520 ldr r0, [pc, 0x78]                                |     
    0x00030522 movs r1, 4                                        |     r1 = 4;
    0x00030524 str r4, [sp]                                      |     *(sp) = r4;
    0x00030526 add r2, pc                                        |     r2 = 0x60ac2;
    0x00030528 add r0, pc                                        |     r0 = 0x60ac8;
    0x0003052a bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x0003052e movs r0, 1                                        |     r0 = 1;
    0x00030530 blx 0x12c8                                        |     strdup (r0);
    0x00030534 b 0x304de                                         |     goto label_9;
                                                                 | label_37:
    0x00030536 movs r3, 1                                        |     r3 = 1;
    0x00030538 strb r3, [r4]                                     |     *(r4) = r3;
    0x0003053a b 0x304de                                         |     goto label_9;
                                                                 | label_36:
    0x0003053c str r0, [sp]                                      |     *(sp) = r0;
    0x0003053e mov r3, r5                                        |     r3 = r5;
    0x00030540 ldr r2, [pc, 0x5c]                                |     
    0x00030542 movs r1, 4                                        |     r1 = 4;
    0x00030544 ldr r0, [pc, 0x5c]                                |     
    0x00030546 add r2, pc                                        |     r2 = 0x60aea;
    0x00030548 add r0, pc                                        |     r0 = 0x60af0;
    0x0003054a bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x0003054e ldr r3, [r6, 4]                                   |     r3 = *((r6 + 4));
    0x00030550 cmp.w r3, 0x3e8                                   |     
                                                                 |     if (r3 < 0x3e8) {
    0x00030554 blt 0x304de                                       |         goto label_9;
                                                                 |     }
    0x00030556 ldr r3, [pc, 0x50]                                |     
    0x00030558 movw r2, 0x2a6                                    |     r2 = 0x2a6;
    0x0003055c ldr r1, [pc, 0x4c]                                |     
    0x0003055e ldr r0, [pc, 0x50]                                |     
    0x00030560 add r3, pc                                        |     r3 = 0x60b0e;
    0x00030562 add r1, pc                                        |     r1 = 0x60b12;
    0x00030564 adds r3, 0x18                                     |     r3 += 0x18;
    0x00030566 add r0, pc                                        |     r0 = 0x60b1c;
    0x00030568 blx 0x15b4                                        |     fcn_000015b4 ();
                                                                 | label_38:
    0x0003056c mov r0, r6                                        |     r0 = r6;
    0x0003056e blx 0x13cc                                        |     fcn_000013cc ();
    0x00030572 ldr r2, [pc, 0x40]                                |     
    0x00030574 mov r4, r0                                        |     r4 = r0;
    0x00030576 ldr r0, [pc, 0x40]                                |     
    0x00030578 mov r3, r6                                        |     r3 = r6;
    0x0003057a movs r1, 4                                        |     r1 = 4;
    0x0003057c str r4, [sp]                                      |     *(sp) = r4;
    0x0003057e add r2, pc                                        |     r2 = 0x60b38;
    0x00030580 add r0, pc                                        |     r0 = 0x60b3e;
    0x00030582 bl 0x2f4bc                                        |     fcn_0002f4bc ();
    0x00030586 mov.w r0, -1                                      |     r0 = -1;
    0x0003058a b 0x304a8                                         |     goto label_10;
                                                                 | }

[*] Function printf used 11 times mdnsd