[*] 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-50593792.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x1fd4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00001fd4 ()                                      | void fcn_00001fd4 (char * arg1, int16_t arg2, char * arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_5;
                                                                 |     int16_t var_ch_4;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_24h_3;
                                                                 |     char * dest;
                                                                 |     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;
    0x00001fd4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00001fd8 mov r8, r2                                        |     r8 = r2;
    0x00001fda ldr.w r2, [pc, 0x508]                             |     r2 = *(0x000024e4);
    0x00001fde mov r5, r3                                        |     r5 = r3;
    0x00001fe0 ldrh r3, [r2, 0x2c]                               |     r3 = *((r2 + 0x2c));
    0x00001fe2 movs r7, r3                                       |     r7 = r3;
    0x00001fe4 adds r5, 0                                        |     r5 += 0;
    0x00001fe6 add r2, pc                                        |     r2 += pc;
    0x00001fe8 ldr.w sb, [pc, 0x500]                             |     sb = *(0x000024ec);
    0x00001fec ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00001fee add sb, pc                                        |     sb += pc;
    0x00001ff0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00001ff2 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x00001ff4 mov.w r3, 0                                       |     r3 = 0;
    0x00001ff8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001ffa beq.w 0x249e                                      |         goto label_24;
                                                                 |     }
    0x00001ffe ldr r3, [r5]                                      |     r3 = *(r5);
    0x00002000 adds r3, 1                                        |     r3++;
                                                                 |     if (r3 != 1) {
    0x00002002 bne.w 0x24b8                                      |         goto label_25;
                                                                 |     }
    0x00002006 mov r6, r0                                        |     r6 = r0;
    0x00002008 ldrh r0, [r0]                                     |     r0 = *(r0);
    0x0000200a uxth.w sl, r1                                     |     sl = (int16_t) r1;
    0x0000200e mov r7, r1                                        |     r7 = r1;
    0x00002010 cmp r0, 2                                         |     
                                                                 |     if (r0 == 2) {
    0x00002012 beq 0x203e                                        |         goto label_26;
                                                                 |     }
    0x00002014 invalid                                           |     
    0x00002018 movs r4, 0x16                                     |     r4 = 0x16;
    0x0000201a beq 0x203e                                        |     
                                                                 |     while (ip != -1) {
                                                                 | label_2:
    0x0000201c ldr.w r2, [pc, 0x4d0]                             |         r2 = *(0x000024f0);
    0x00002020 ldr.w r3, [pc, 0x4c4]                             |         r3 = *(0x24e8);
    0x00002024 add r2, pc                                        |         r2 += pc;
    0x00002026 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00002028 ldr r2, [r3]                                      |         r2 = *(0x24e8);
    0x0000202a ldr r3, [sp, 0x44]                                |         r3 = var_44h;
    0x0000202c eors r2, r3                                       |         r2 ^= r3;
    0x0000202e mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00002032 bne.w 0x24b4                                      |             goto label_27;
                                                                 |         }
    0x00002034 strh r7, [r7, 0x10]                               |         *((r7 + 0x10)) = r7;
    0x00002036 mov r0, r4                                        |         r0 = r4;
    0x00002038 add sp, 0x4c                                      |         
    0x0000203a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_26:
    0x0000203e movs r2, 0x11                                     |         r2 = 0x11;
    0x00002040 movs r1, 2                                        |         r1 = 2;
    0x00002042 blx 0x14a4                                        |         strncmp (r0, r1, r2);
    0x00002046 subs.w fp, sl, 0                                  |         
    0x0000204a str r0, [r5]                                      |         *(r5) = r0;
    0x0000204c it ne                                             |         
                                                                 |         if (fp == sl) {
    0x0000204e movne fp, 1                                       |             
                                                                 |         }
    0x00002050 lsrs r1, r0, 0xc                                  |         r1 = r0 >> 0xc;
    0x00002052 cmp r0, 0                                         |         
    0x00002054 movs r0, 0                                        |         r0 = 0;
    0x00002056 movs r0, r0                                       |         
    0x00002058 lsrs r0, r0, 0x1c                                 |         r0 >>= 0x1c;
                                                                 |         if (r0 != r0) {
    0x0000205a bne 0x20ce                                        |             goto label_28;
                                                                 |         }
                                                                 | label_0:
    0x0000205c ldrh r3, [r6]                                     |         r3 = *(r6);
    0x0000205e cmp r3, 2                                         |         
                                                                 |         if (r3 == 2) {
    0x00002060 beq.w 0x2294                                      |             goto label_29;
                                                                 |         }
    0x00002064 cmp r3, 0xa                                       |         
                                                                 |         if (r3 == 0xa) {
    0x00002066 beq 0x2102                                        |             goto label_30;
                                                                 |         }
                                                                 | label_1:
    0x00002068 movs r2, 0                                        |         r2 = 0;
    0x0000206a movs r1, 3                                        |         r1 = 3;
    0x0000206c blx 0x13b4                                        |         printf_chk ()
    0x0000206e invalid                                           |         
                                                                 |         if (r1 >= 3) {
    0x00002072 bge.w 0x227c                                      |             goto label_31;
                                                                 |         }
    0x00002074 strh r3, [r0, 8]                                  |         *((r0 + 8)) = r3;
                                                                 | label_5:
    0x00002076 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x0000207a ldr r4, [r0]                                      |         r4 = *(r0);
                                                                 | label_4:
    0x0000207c ldr.w ip, [r5]                                    |         ip = *(r5);
    0x00002080 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x00002082 bne.w 0x225a                                      |             goto label_32;
                                                                 |         }
    0x00002086 cmp.w ip, -1                                      |         
    0x0000208a bne 0x201c                                        |         
                                                                 |     }
    0x0000208c ldr.w r3, [pc, 0x464]                             |     
    0x00002090 mov.w r2, 0x4b8                                   |     r2 = 0x4b8;
    0x00002094 ldr.w r1, [pc, 0x460]                             |     
    0x00002098 ldr.w r0, [pc, 0x460]                             |     
    0x0000209c add r3, pc                                        |     r3 = 0x4594;
    0x0000209e add r1, pc                                        |     r1 = 0x459a;
    0x000020a0 adds r3, 0x2c                                     |     r3 += 0x2c;
    0x000020a2 add r0, pc                                        |     r0 = 0x45a2;
    0x000020a4 blx 0x152c                                        |     fcn_0000152c ();
    0x000020a8 blx 0x139c                                        |     memset (r0, r1, r2);
    0x000020ac ldrh r3, [r6]                                     |     r3 = *(r6);
    0x000020ae ldr r4, [r0]                                      |     r4 = *(r0);
    0x000020b0 cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x000020b2 beq.w 0x2276                                      |         goto label_33;
                                                                 |     }
    0x000020b6 ldr.w r0, [pc, 0x448]                             |     
    0x000020ba add r0, pc                                        |     r0 = 0x45c0;
                                                                 | label_3:
    0x000020bc blx 0x12b8                                        |     sigaction ();
    0x000020c0 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000020c2 bne.w 0x224e                                      |         goto label_7;
                                                                 |     }
    0x000020c6 ldr r0, [r5]                                      |     r0 = *(r5);
    0x000020c8 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x000020cc beq 0x205c                                        |         goto label_0;
                                                                 |     }
                                                                 | label_28:
    0x000020ce ldr.w r3, [pc, 0x434]                             |     
    0x000020d2 movs r2, 4                                        |     r2 = 4;
    0x000020d4 str r2, [sp]                                      |     *(sp) = r2;
    0x000020d6 movs r1, 1                                        |     r1 = 1;
    0x000020d8 movs r2, 2                                        |     r2 = 2;
    0x000020da add r3, pc                                        |     r3 = 0x45e4;
    0x000020dc adds r3, 0x38                                     |     r3 += 0x38;
    0x000020de blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x000020e2 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x000020e4 blt.w 0x23ec                                      |         goto label_34;
                                                                 |     }
                                                                 | label_15:
    0x000020e8 ldrh r3, [r6]                                     |     r3 = *(r6);
    0x000020ea ldr.w ip, [r5]                                    |     ip = *(r5);
    0x000020ee cmp r3, 2                                         |     
    0x000020f0 mov r0, ip                                        |     r0 = ip;
                                                                 |     if (r3 == 2) {
    0x000020f2 beq.w 0x2290                                      |         goto label_35;
                                                                 |     }
    0x000020f6 cmp r3, 0xa                                       |     
                                                                 |     if (r3 == 0xa) {
    0x000020f8 bne.w 0x2252                                      |         
    0x000020fc cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x000020fe bne.w 0x2252                                      |             goto label_6;
                                                                 |         }
                                                                 | label_30:
    0x00002102 ldr.w r7, [pc, 0x204]                             |         r7 = *(0x00002308);
    0x00002106 movs r2, 4                                        |         r2 = 4;
    0x00002108 vrhadd.u8 d2, d0, d25                             |         __asm ("vrhadd.u8 d2, d0, d25");
    0x0000210c ldc2 p4, c4, [r1], -0x1ec                         |         __asm ("ldc2 p4, c4, [r1], -aav.0x000000ff");
    0x00002110 invalid                                           |         
    0x00002114 add r4, sp, 0xb0                                  |         r4 = sp + 0xb0;
    0x00002116 subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x00002118 blt.w 0x2420                                      |             goto label_36;
                                                                 |         }
                                                                 | label_18:
    0x0000211c ldr.w ip, [r5]                                    |         ip = *(r5);
    0x00002120 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x00002122 bne.w 0x2252                                      |             goto label_6;
                                                                 |         }
    0x00002126 ldr r3, [pc, 0x3e4]                               |         r3 = *(0x250e);
    0x00002128 movs r2, 4                                        |         r2 = 4;
    0x0000212a str r2, [sp]                                      |         *(sp) = r2;
    0x0000212c mov r0, ip                                        |         r0 = ip;
    0x0000212e movs r2, 0x33                                     |         r2 = 0x33;
    0x00002130 invalid                                           |         
    0x00002134 adds r3, 0x38                                     |         r3 += 0x38;
    0x00002136 blx 0x116c                                        |         r0 = fcn_0000116c ();
    0x0000213a subs r4, r0, 0                                    |         r4 = r0 - 0;
    0x0000213c movs r0, r0                                       |         
    0x0000213e movs r0, r0                                       |         
                                                                 | label_21:
    0x00002140 invalid                                           |         
    0x00002144 movs r3, 0                                        |         r3 = 0;
    0x00002146 and r3, fp, 1                                     |         r3 = fp & 1;
    0x0000214a ldr.w ip, [r5]                                    |         ip = *(r5);
                                                                 |         if (r3 != 0) {
    0x0000214e cbz r3, 0x21a2                                    |             
    0x00002150 invalid                                           |             
    0x00002154 add.w r4, sp, r6                                  |             r4 = sp + r6;
    0x00002156 lsls r6, r0, 0x10                                 |             r6 = r0 << 0x10;
    0x00002158 ldr.w r3, [sb, r3]                                |             r3 = *((sb + r3));
    0x0000215c str r6, [sp]                                      |             *(sp) = r6;
    0x0000215e str.w pc, [sp, 0xec3]                             |             __asm ("str.w pc, aav.0x000000ff");
    0x00002162 vtbl.8 d28, {d15, d16, d17, d18}, d15             |             __asm ("vtbl.8 d28, {d15, d16, d17, d18}, d15");
    0x00002164 ldm r3, {r0, r1, r2, r3}                          |             r0 = *(r3);
                                                                 |             r1 = *((r3 + 4));
                                                                 |             r2 = *((r3 + 8));
                                                                 |             r3 = *((r3 + 12));
    0x00002166 stm.w r4, {r0, r1, r2, r3}                        |             *(r4) = r0;
                                                                 |             *((r4 + 4)) = r1;
                                                                 |             *((r4 + 8)) = r2;
                                                                 |             *((r4 + 12)) = r3;
    0x0000216a mov r3, r4                                        |             r3 = r4;
    0x0000216c mov r2, r6                                        |             r2 = r6;
    0x0000216e mov r0, ip                                        |             r0 = ip;
    0x00002170 movs r1, 0x29                                     |             r1 = 0x29;
    0x00002172 blx 0x116c                                        |             fcn_0000116c ();
    0x00002174 invalid                                           |             
                                                                 |             if (r1 < 0x29) {
    0x00002178 blt.w 0x2442                                      |                 goto label_37;
                                                                 |             }
                                                                 | label_20:
    0x0000217c ldr.w ip, [r5]                                    |             ip = *(r5);
    0x00002180 cmp r4, 0                                         |             
                                                                 |             if (r4 != 0) {
    0x00002182 bne 0x2252                                        |                 goto label_6;
                                                                 |             }
    0x00002184 movs r3, 4                                        |             r3 = 4;
    0x00002186 mov r0, ip                                        |             r0 = ip;
    0x00002188 str r3, [sp]                                      |             *(sp) = r3;
    0x0000218a movs r2, 0x11                                     |             r2 = 0x11;
    0x0000218c add r3, sp, 0xc                                   |             r3 += var_ch_4;
    0x0000218e movs r1, 0x29                                     |             r1 = 0x29;
    0x00002190 str.w r8, [sp, 0xc]                               |             __asm ("str.w r8, [var_ch_4]");
    0x00002194 blx 0x116c                                        |             r0 = fcn_0000116c ();
    0x00002198 subs r4, r0, 0                                    |             r4 = r0 - 0;
                                                                 |             if (r4 < r0) {
    0x0000219a blt.w 0x2430                                      |                 goto label_38;
                                                                 |             }
                                                                 | label_19:
    0x0000219e ldr.w ip, [r5]                                    |             ip = *(r5);
                                                                 |         }
    0x000021a2 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x000021a4 bne 0x2252                                        |             goto label_6;
                                                                 |         }
    0x000021a6 ldr r3, [pc, 0x36c]                               |         
    0x000021a8 movs r2, 4                                        |         r2 = 4;
    0x000021aa str r2, [sp]                                      |         *(sp) = r2;
    0x000021ac mov r0, ip                                        |         r0 = ip;
    0x000021ae movs r2, 0x1a                                     |         r2 = 0x1a;
    0x000021b0 movs r1, 0x29                                     |         r1 = 0x29;
    0x000021b2 add r3, pc                                        |         r3 = 0x46cc;
    0x000021b4 adds r3, 0x38                                     |         r3 += 0x38;
    0x000021b6 blx 0x116c                                        |         r0 = fcn_0000116c ();
    0x000021ba subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x000021bc blt.w 0x240e                                      |             goto label_39;
                                                                 |         }
                                                                 | label_17:
    0x000021c0 ldr.w ip, [r5]                                    |         ip = *(r5);
    0x000021c4 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x000021c6 bne 0x2252                                        |             goto label_6;
                                                                 |         }
    0x000021c8 ldr r3, [pc, 0x34c]                               |         
    0x000021ca movs r2, 4                                        |         r2 = 4;
    0x000021cc str r2, [sp]                                      |         *(sp) = r2;
    0x000021ce mov r0, ip                                        |         r0 = ip;
    0x000021d0 movs r2, 0x10                                     |         r2 = 0x10;
    0x000021d2 movs r1, 0x29                                     |         r1 = 0x29;
    0x000021d4 add r3, pc                                        |         r3 = 0x46f0;
    0x000021d6 adds r3, 0x3c                                     |         r3 += 0x3c;
    0x000021d8 blx 0x116c                                        |         r0 = fcn_0000116c ();
    0x000021dc subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x000021de blt.w 0x23fc                                      |             goto label_40;
                                                                 |         }
                                                                 | label_16:
    0x000021e2 ldr.w ip, [r5]                                    |         ip = *(r5);
    0x000021e6 cmp r4, 0                                         |         
                                                                 |         if (r4 != 0) {
    0x000021e8 bne 0x2252                                        |             goto label_6;
                                                                 |         }
    0x000021ea ldr r6, [pc, 0x330]                               |         
    0x000021ec movs r3, 1                                        |         r3 = 1;
    0x000021ee str r3, [sp]                                      |         *(sp) = r3;
    0x000021f0 mov r0, ip                                        |         r0 = ip;
    0x000021f2 movs r2, 0x12                                     |         r2 = 0x12;
    0x000021f4 movs r1, 0x29                                     |         r1 = 0x29;
    0x000021f6 add r6, pc                                        |         r6 = 0x4718;
    0x000021f8 add.w r3, r6, 0x40                                |         r3 = r6 + 0x40;
    0x000021fc blx 0x116c                                        |         r0 = fcn_0000116c ();
    0x00002200 subs r4, r0, 0                                    |         r4 = r0 - 0;
                                                                 |         if (r4 < r0) {
    0x00002202 blt.w 0x2392                                      |             goto label_41;
                                                                 |         }
                                                                 |         if (r4 == 0) {
                                                                 | label_10:
    0x00002206 cbnz r4, 0x224e                                   |             
    0x00002208 movs r3, 0xa                                      |             r3 = 0xa;
    0x0000220a str r4, [sp, 0x2c]                                |             var_2ch = r4;
    0x0000220c strh.w r3, [sp, 0x28]                             |             dest = r3;
    0x00002210 ldr r3, [pc, 0x30c]                               |             r3 = *(0x2520);
    0x00002212 str r4, [sp, 0x40]                                |             var_40h = r4;
    0x00002214 add r4, sp, 0x30                                  |             r4 += var_30h_2;
    0x00002216 strh.w r7, [sp, 0x2a]                             |             var_2ah = r7;
    0x0000221a ldr.w r3, [sb, r3]                                |             r3 = *((sb + r3));
    0x0000221e ldm r3, {r0, r1, r2, r3}                          |             r0 = *(r3);
                                                                 |             r1 = *((r3 + 4));
                                                                 |             r2 = *((r3 + 8));
                                                                 |             r3 = *((r3 + 12));
    0x00002220 ldr r4, [r0, 8]                                   |             r4 = *((r0 + 8));
    0x00002222 movs r7, r1                                       |             r7 = r1;
    0x00002224 movs r2, 0x1c                                     |             r2 = 0x1c;
    0x00002226 movs r0, r6                                       |             r0 = r6;
    0x00002228 movs r0, r6                                       |             r0 = r6;
    0x0000222a blx 0x13a8                                        |             r0 = strncpy (r0, r1, r2);
    0x0000222e subs r4, r0, 0                                    |             r4 = r0 - 0;
                                                                 |             if (r4 >= r0) {
    0x00002230 bge 0x224e                                        |                 goto label_7;
                                                                 |             }
    0x00002232 blx 0x139c                                        |             r0 = memset (r0, r1, r2);
    0x00002236 mov r3, r0                                        |             r3 = r0;
    0x00002238 ldr r0, [pc, 0x2e8]                               |             
    0x0000223a add r0, pc                                        |             r0 = 0x4762;
                                                                 | label_8:
    0x0000223c ldr r4, [r3]                                      |             r4 = *(r3);
    0x0000223e blx 0x12b8                                        |             sigaction ();
    0x00002242 ldr r3, [pc, 0x2e4]                               |             r3 = *(0x252a);
    0x00002244 ldr.w r3, [sb, r3]                                |             r3 = *((sb + r3));
    0x00002248 ldr r0, [r3]                                      |             r0 = *(0x252a);
    0x0000224a blx 0x11a0                                        |             fcn_000011a0 ();
                                                                 |         }
                                                                 | label_7:
    0x0000224e ldr.w ip, [r5]                                    |         ip = *(r5);
                                                                 |     }
                                                                 | label_6:
    0x00002252 mov r0, ip                                        |     r0 = ip;
    0x00002254 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00002256 beq.w 0x2068                                      |         goto label_1;
                                                                 |     }
                                                                 | label_32:
    0x0000225a cmp.w ip, -1                                      |     
                                                                 |     if (ip == -1) {
    0x0000225e beq.w 0x201c                                      |         goto label_2;
                                                                 |     }
    0x00002262 mov r0, ip                                        |     r0 = ip;
    0x00002264 blx 0x14fc                                        |     r0 = fcn_000014fc ();
    0x00002268 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000226a bne.w 0x24ce                                      |         goto label_42;
                                                                 |     }
    0x0000226e mov.w r3, -1                                      |     r3 = -1;
    0x00002272 str r3, [r5]                                      |     *(r5) = r3;
    0x00002274 b 0x201c                                          |     goto label_2;
                                                                 | label_33:
    0x00002276 ldr r0, [pc, 0x2b4]                               |     
    0x00002278 add r0, pc                                        |     r0 = 0x47aa;
    0x0000227a b 0x20bc                                          |     goto label_3;
                                                                 | label_31:
    0x0000227c ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000227e orr r2, r2, 0x800                                 |     r2 |= 0x800;
    0x00002282 movs r1, 4                                        |     r1 = 4;
    0x00002284 blx 0x13b4                                        |     r0 = printf_chk ()
    0x00002288 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x0000228a bge.w 0x207c                                      |         goto label_4;
                                                                 |     }
    0x0000228e b 0x2076                                          |     goto label_5;
                                                                 | label_35:
    0x00002290 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00002292 bne 0x2252                                        |         goto label_6;
                                                                 |     }
                                                                 | label_29:
    0x00002294 ldr r3, [pc, 0x298]                               |     
    0x00002296 movs r2, 4                                        |     r2 = 4;
    0x00002298 str r2, [sp]                                      |     *(sp) = r2;
    0x0000229a movs r1, 0                                        |     r1 = 0;
    0x0000229c movs r2, 8                                        |     r2 = 8;
    0x0000229e add r3, pc                                        |     r3 = 0x47d2;
    0x000022a0 adds r3, 0x38                                     |     r3 += 0x38;
    0x000022a2 blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x000022a6 subs r4, r0, 0                                    |     r4 = r0 - 0;
    0x000022a8 bl 0x2c32aa                                       |     void (*0x2c32aa)() ();
                                                                 | label_14:
    0x000022ac invalid                                           |     
    0x000022b0 invalid                                           |     
    0x000022b4 movs r0, r0                                       |     
    0x000022b6 movs r2, 4                                        |     r2 = 4;
    0x000022b8 str r2, [sp]                                      |     *(sp) = r2;
    0x000022ba movs r0, r0                                       |     
    0x000022bc movs r0, r0                                       |     
    0x000022be mov r1, r4                                        |     r1 = r4;
    0x000022c0 add r3, pc                                        |     r3 += pc;
    0x000022c2 adds r3, 0x38                                     |     r3 += 0x38;
    0x000022c4 blx 0x116c                                        |     fcn_0000116c ();
    0x000022c8 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x000022cc beq 0x2310                                        |         goto label_43;
                                                                 |     }
    0x000022ce ldr r3, [pc, 0x268]                               |     r3 = *(0x253a);
    0x000022d0 mov r1, r4                                        |     r1 = r4;
    0x000022d2 movs r2, 0x23                                     |     r2 = 0x23;
    0x000022d4 ldr.w r0, [sb, r2, lsl 1]                         |     offset_0 = r2 << 1;
                                                                 |     r0 = *((sb + offset_0));
    0x000022d8 movs r0, r0                                       |     
    0x000022da invalid                                           |     
    0x000022de invalid                                           |     
    0x000022e2 movs r0, r0                                       |     
    0x000022e4 movs r0, r0                                       |     
    0x000022e6 ldr r0, [r5]                                      |     r0 = *(r5);
    0x000022e8 blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x000022ec subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x000022ee blt 0x23ba                                        |         goto label_44;
                                                                 |     }
                                                                 | label_12:
    0x000022f0 ldr.w ip, [r5]                                    |     ip = *(r5);
    0x000022f4 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000022f6 bne 0x2252                                        |         goto label_6;
                                                                 |     }
    0x000022f8 movs r2, 4                                        |     r2 = 4;
    0x000022fa mov r1, r4                                        |     r1 = r4;
    0x000022fc str r2, [sp]                                      |     *(sp) = r2;
    0x000022fe adds r3, r6, 4                                    |     r3 = r6 + 4;
    0x00002300 mov r0, ip                                        |     r0 = ip;
    0x00002302 movs r2, 0x20                                     |     r2 = 0x20;
    0x00002304 movs r0, r0                                       |     
    0x00002306 movs r0, r0                                       |     
    0x00002308 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x0000230a blt 0x23a8                                        |         goto label_45;
                                                                 |     }
                                                                 | label_11:
    0x0000230c cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0000230e bne 0x224e                                        |         goto label_7;
                                                                 |     }
                                                                 | label_43:
    0x00002310 ldr r3, [pc, 0x228]                               |     
    0x00002312 movs r2, 4                                        |     r2 = 4;
    0x00002314 str r2, [sp]                                      |     *(sp) = r2;
    0x00002316 movs r1, 0                                        |     r1 = 0;
    0x00002318 ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000231a movs r2, 2                                        |     r2 = 2;
    0x0000231c add r3, pc                                        |     r3 = 0x485c;
    0x0000231e adds r3, 0x3c                                     |     r3 += 0x3c;
    0x00002320 blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x00002324 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00002326 blt 0x23ca                                        |         goto label_46;
                                                                 |     }
                                                                 | label_13:
    0x00002328 ldr.w ip, [r5]                                    |     ip = *(r5);
    0x0000232c cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x0000232e bne 0x2252                                        |         goto label_6;
                                                                 |     }
    0x00002330 ldr r6, [pc, 0x20c]                               |     r6 = *(0x2540);
    0x00002332 movs r3, 1                                        |     r3 = 1;
    0x00002334 mov r1, r4                                        |     r1 = r4;
    0x00002336 str r3, [sp]                                      |     *(sp) = r3;
    0x00002338 mov r0, ip                                        |     r0 = ip;
    0x0000233a push {r0, r5}                                     |     
    0x0000233c movs r6, r3                                       |     r6 = r3;
    0x0000233e add.w r3, r0, 0x40                                |     r3 = r0 + 0x40;
    0x00002342 blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x00002346 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 < r0) {
    0x00002348 blt 0x237c                                        |         goto label_47;
                                                                 |     }
                                                                 | label_9:
    0x0000234a ldr.w ip, [r5]                                    |     ip = *(r5);
    0x0000234e cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00002350 bne.w 0x2252                                      |         goto label_6;
                                                                 |     }
    0x00002354 movs r3, 2                                        |     r3 = 2;
    0x00002356 movs r2, 0x10                                     |     r2 = 0x10;
    0x00002358 mov r0, ip                                        |     r0 = ip;
    0x0000235a add r1, sp, 0x28                                  |     r1 += dest;
    0x0000235c str r4, [sp, 0x2c]                                |     var_2ch = r4;
    0x0000235e strh.w r7, [sp, 0x2a]                             |     var_2ah = r7;
    0x00002362 strh.w r3, [sp, 0x28]                             |     dest = r3;
    0x00002366 blx 0x13a8                                        |     r0 = strncpy (r0, r1, r2);
    0x0000236a subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x0000236c bge.w 0x224e                                      |         goto label_7;
                                                                 |     }
    0x00002370 blx 0x139c                                        |     r0 = memset (r0, r1, r2);
    0x00002374 mov r3, r0                                        |     r3 = r0;
    0x00002376 ldr r0, [pc, 0x1cc]                               |     
    0x00002378 add r0, pc                                        |     r0 = 0x48c2;
    0x0000237a b 0x223c                                          |     goto label_8;
                                                                 | label_47:
    0x0000237c blx 0x139c                                        |     r0 = memset (r0, r1, r2);
    0x00002380 ldr r4, [r0]                                      |     r4 = *(r0);
    0x00002382 mov r8, r0                                        |     r8 = r0;
    0x00002384 cmp r4, 0x16                                      |     
                                                                 |     if (r4 != 0x16) {
    0x00002386 beq 0x2462                                        |         
                                                                 | label_22:
    0x00002388 ldr r0, [pc, 0x1bc]                               |         
    0x0000238a add r0, pc                                        |         r0 = 0x48d6;
    0x0000238c blx 0x12b8                                        |         sigaction ();
    0x00002390 b 0x234a                                          |         goto label_9;
                                                                 | label_41:
    0x00002392 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002396 ldr r4, [r0]                                      |         r4 = *(r0);
    0x00002398 mov r8, r0                                        |         r8 = r0;
    0x0000239a cmp r4, 0x16                                      |         
                                                                 |         if (r4 == 0x16) {
    0x0000239c beq 0x2480                                        |             goto label_48;
                                                                 |         }
                                                                 | label_23:
    0x0000239e ldr r0, [pc, 0x1ac]                               |         
    0x000023a0 add r0, pc                                        |         r0 = 0x48f2;
    0x000023a2 blx 0x12b8                                        |         sigaction ();
    0x000023a6 b 0x2206                                          |         goto label_10;
                                                                 | label_45:
    0x000023a8 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x000023ac mov r3, r0                                        |         r3 = r0;
    0x000023ae ldr r0, [pc, 0x1a0]                               |         
    0x000023b0 ldr r4, [r3]                                      |         r4 = *(r3);
    0x000023b2 add r0, pc                                        |         r0 = 0x4908;
    0x000023b4 blx 0x12b8                                        |         sigaction ();
    0x000023b8 b 0x230c                                          |         goto label_11;
                                                                 | label_44:
    0x000023ba blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x000023be ldr r4, [r0]                                      |         r4 = *(r0);
    0x000023c0 ldr r0, [pc, 0x190]                               |         
    0x000023c2 add r0, pc                                        |         r0 = 0x491a;
    0x000023c4 blx 0x12b8                                        |         sigaction ();
    0x000023c8 b 0x22f0                                          |         goto label_12;
                                                                 | label_46:
    0x000023ca blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x000023ce mov r3, r0                                        |         r3 = r0;
    0x000023d0 ldr r0, [pc, 0x184]                               |         
    0x000023d2 ldr r4, [r3]                                      |         r4 = *(r3);
    0x000023d4 add r0, pc                                        |         r0 = 0x4930;
    0x000023d6 blx 0x12b8                                        |         sigaction ();
    0x000023da b 0x2328                                          |         goto label_13;
    0x000023dc blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x000023e0 ldr r4, [r0]                                      |         r4 = *(r0);
    0x000023e2 ldr r0, [pc, 0x178]                               |         
    0x000023e4 add r0, pc                                        |         r0 = 0x4946;
    0x000023e6 blx 0x12b8                                        |         sigaction ();
    0x000023ea b 0x22ac                                          |         goto label_14;
                                                                 | label_34:
    0x000023ec blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x000023f0 ldr r4, [r0]                                      |         r4 = *(r0);
    0x000023f2 ldr r0, [pc, 0x16c]                               |         
    0x000023f4 add r0, pc                                        |         r0 = 0x495a;
    0x000023f6 blx 0x12b8                                        |         sigaction ();
    0x000023fa b 0x20e8                                          |         goto label_15;
                                                                 | label_40:
    0x000023fc blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002400 mov r3, r0                                        |         r3 = r0;
    0x00002402 ldr r0, [pc, 0x160]                               |         
    0x00002404 ldr r4, [r3]                                      |         r4 = *(r3);
    0x00002406 add r0, pc                                        |         r0 = 0x4970;
    0x00002408 blx 0x12b8                                        |         sigaction ();
    0x0000240c b 0x21e2                                          |         goto label_16;
                                                                 | label_39:
    0x0000240e blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002412 mov r3, r0                                        |         r3 = r0;
    0x00002414 ldr r0, [pc, 0x150]                               |         
    0x00002416 ldr r4, [r3]                                      |         r4 = *(r3);
    0x00002418 add r0, pc                                        |         r0 = 0x4984;
    0x0000241a blx 0x12b8                                        |         sigaction ();
    0x0000241e b 0x21c0                                          |         goto label_17;
                                                                 | label_36:
    0x00002420 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002424 ldr r4, [r0]                                      |         r4 = *(r0);
    0x00002426 ldr r0, [pc, 0x144]                               |         
    0x00002428 add r0, pc                                        |         r0 = 0x499a;
    0x0000242a blx 0x12b8                                        |         sigaction ();
    0x0000242e b 0x211c                                          |         goto label_18;
                                                                 | label_38:
    0x00002430 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002434 mov r3, r0                                        |         r3 = r0;
    0x00002436 ldr r0, [pc, 0x138]                               |         
    0x00002438 ldr r4, [r3]                                      |         r4 = *(r3);
    0x0000243a add r0, pc                                        |         r0 = 0x49b0;
    0x0000243c blx 0x12b8                                        |         sigaction ();
    0x00002440 b 0x219e                                          |         goto label_19;
                                                                 | label_37:
    0x00002442 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002446 ldr r4, [r0]                                      |         r4 = *(r0);
    0x00002448 ldr r0, [pc, 0x128]                               |         
    0x0000244a add r0, pc                                        |         r0 = 0x49c2;
    0x0000244c blx 0x12b8                                        |         sigaction ();
    0x00002450 b 0x217c                                          |         goto label_20;
    0x00002452 blx 0x139c                                        |         r0 = memset (r0, r1, r2);
    0x00002456 ldr r4, [r0]                                      |         r4 = *(r0);
    0x00002458 ldr r0, [pc, 0x11c]                               |         
    0x0000245a add r0, pc                                        |         r0 = 0x49d6;
    0x0000245c blx 0x12b8                                        |         sigaction ();
    0x00002460 b 0x2140                                          |         goto label_21;
                                                                 |     }
    0x00002462 movs r2, 4                                        |     r2 = 4;
    0x00002464 add.w r3, r6, 0x3c                                |     r3 = r6 + 0x3c;
    0x00002468 str r2, [sp]                                      |     *(sp) = r2;
    0x0000246a movs r1, 0                                        |     r1 = 0;
    0x0000246c ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000246e movs r2, 0x21                                     |     r2 = 0x21;
    0x00002470 blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x00002474 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x00002476 bge.w 0x234a                                      |         goto label_9;
                                                                 |     }
    0x0000247a ldr.w r4, [r8]                                    |     r4 = *(r8);
    0x0000247e b 0x2388                                          |     goto label_22;
                                                                 | label_48:
    0x00002480 movs r2, 4                                        |     r2 = 4;
    0x00002482 add.w r3, r6, 0x3c                                |     r3 = r6 + 0x3c;
    0x00002486 str r2, [sp]                                      |     *(sp) = r2;
    0x00002488 movs r1, 0x29                                     |     r1 = 0x29;
    0x0000248a ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000248c movs r2, 0x12                                     |     r2 = 0x12;
    0x0000248e blx 0x116c                                        |     r0 = fcn_0000116c ();
    0x00002492 subs r4, r0, 0                                    |     r4 = r0 - 0;
                                                                 |     if (r4 >= r0) {
    0x00002494 bge.w 0x2206                                      |         goto label_10;
                                                                 |     }
    0x00002496 add r6, sp, 0x2dc                                 |     r6 = sp + 0x2dc;
    0x00002498 ldr.w r4, [r8]                                    |     r4 = *(r8);
    0x0000249c b 0x239e                                          |     goto label_23;
                                                                 | label_24:
    0x0000249e ldr r3, [pc, 0xdc]                                |     
    0x000024a0 movw r2, 0x3c2                                    |     r2 = 0x3c2;
    0x000024a4 ldr r1, [pc, 0xd8]                                |     
    0x000024a6 ldr r0, [pc, 0xdc]                                |     
    0x000024a8 add r3, pc                                        |     r3 = 0x4a2a;
    0x000024aa add r1, pc                                        |     r1 = 0x4a2e;
    0x000024ac adds r3, 0x2c                                     |     r3 += 0x2c;
    0x000024ae add r0, pc                                        |     r0 = 0x4a38;
    0x000024b0 blx 0x152c                                        |     fcn_0000152c ();
                                                                 | label_27:
    0x000024b4 blx 0x1264                                        |     getrlimit ();
                                                                 | label_25:
    0x000024b8 ldr r3, [pc, 0xcc]                                |     
    0x000024ba mov.w r2, 0x3c4                                   |     r2 = 0x3c4;
    0x000024be ldr r1, [pc, 0xcc]                                |     
    0x000024c0 ldr r0, [pc, 0xcc]                                |     
    0x000024c2 add r3, pc                                        |     r3 = 0x4a4e;
    0x000024c4 add r1, pc                                        |     r1 = 0x4a56;
    0x000024c6 adds r3, 0x2c                                     |     r3 += 0x2c;
    0x000024c8 add r0, pc                                        |     r0 = 0x4a5c;
    0x000024ca blx 0x152c                                        |     fcn_0000152c ();
                                                                 | label_42:
    0x000024ce ldr r3, [pc, 0xc4]                                |     
    0x000024d0 movw r2, 0x4b5                                    |     r2 = 0x4b5;
    0x000024d4 ldr r1, [pc, 0xc0]                                |     
    0x000024d6 ldr r0, [pc, 0xc4]                                |     
    0x000024d8 add r3, pc                                        |     r3 = 0x4a72;
    0x000024da add r1, pc                                        |     r1 = 0x4a76;
    0x000024dc adds r3, 0x2c                                     |     r3 += 0x2c;
    0x000024de add r0, pc                                        |     r0 = 0x4a80;
    0x000024e0 blx 0x152c                                        |     fcn_0000152c ();
    0x000024e4 cmp r5, 0xf2                                      |     
    0x000024e6 movs r5, r0                                       |     r5 = r0;
    0x000024e8 lsls r0, r7, 5                                    |     r0 = r7 << 5;
    0x000024ea movs r0, r0                                       |     
    0x000024ec cmp r5, 0xea                                      |     
    0x000024ee movs r5, r0                                       |     r5 = r0;
    0x000024f0 cmp r5, 0xb4                                      |     
    0x000024f2 movs r5, r0                                       |     r5 = r0;
    0x000024f4 cmp r5, 0xbc                                      |     
    0x000024f6 movs r3, r0                                       |     r3 = r0;
    0x000024f8 movs r5, 0x82                                     |     r5 = 0x82;
    0x000024fa movs r3, r0                                       |     r3 = r0;
    0x000024fc cmp r0, 0xaa                                      |     
    0x000024fe movs r3, r0                                       |     r3 = r0;
    0x00002500 movs r6, 0xce                                     |     r6 = 0xce;
    0x00002502 movs r3, r0                                       |     r3 = r0;
    0x00002504 cmp r5, 0x7e                                      |     
    0x00002506 movs r3, r0                                       |     r3 = r0;
    0x00002508 cmp r5, 0x4a                                      |     
    0x0000250a movs r3, r0                                       |     r3 = r0;
    0x0000250c cmp r5, 0x26                                      |     
    0x0000250e movs r3, r0                                       |     r3 = r0;
    0x00002510 lsls r4, r6, 7                                    |     r4 = r6 << 7;
    0x00002512 movs r0, r0                                       |     
    0x00002514 cmp r4, 0xa6                                      |     
    0x00002516 movs r3, r0                                       |     r3 = r0;
    0x00002518 cmp r4, 0x84                                      |     
    0x0000251a movs r3, r0                                       |     r3 = r0;
    0x0000251c cmp r4, 0x62                                      |     
    0x0000251e movs r3, r0                                       |     r3 = r0;
    0x00002520 cmp r0, 0xfc                                      |     
    0x00002522 movs r0, r0                                       |     
    0x00002524 movs r6, 0x2a                                     |     r6 = 0x2a;
    0x00002526 movs r3, r0                                       |     r3 = r0;
    0x00002528 cmp r2, 0x9c                                      |     
    0x0000252a movs r0, r0                                       |     
    0x0000252c movs r5, 0                                        |     r5 = 0;
    0x0000252e movs r3, r0                                       |     r3 = r0;
    0x00002530 movs r0, 0                                        |     r0 = 0;
    0x00002532 movs r0, r0                                       |     
    0x00002534 ldr r0, [r3, 0x68]                                |     r0 = *(0x4ada);
    0x00002536 movs r3, r0                                       |     r3 = r0;
    0x00002538 push {r4, r5, r6, r7, lr}                         |     
    0x0000253a movs r0, r0                                       |     
    0x0000253c cmp r3, 0x3c                                      |     
    0x0000253e movs r3, r0                                       |     r3 = r0;
    0x00002540 cmp r3, 0x1c                                      |     
    0x00002542 movs r3, r0                                       |     r3 = r0;
    0x00002544 movs r4, 0xec                                     |     r4 = 0xec;
    0x00002546 movs r3, r0                                       |     r3 = r0;
    0x00002548 movs r4, 0xba                                     |     r4 = 0xba;
    0x0000254a movs r3, r0                                       |     r3 = r0;
    0x0000254c movs r5, 0x88                                     |     r5 = 0x88;
    0x0000254e movs r3, r0                                       |     r3 = r0;
    0x00002550 movs r4, 0x5e                                     |     r4 = 0x5e;
    0x00002552 movs r3, r0                                       |     r3 = r0;
    0x00002554 movs r4, 0x2e                                     |     r4 = 0x2e;
    0x00002556 movs r3, r0                                       |     r3 = r0;
    0x00002558 movs r4, 0x5c                                     |     r4 = 0x5c;
    0x0000255a movs r3, r0                                       |     r3 = r0;
    0x0000255c movs r3, 0xf4                                     |     r3 = 0xf4;
    0x0000255e movs r3, r0                                       |     r3 = r0;
    0x00002560 movs r3, 0xc8                                     |     r3 = 0xc8;
    0x00002562 movs r3, r0                                       |     r3 = r0;
    0x00002564 ldc2l p15, c15, [sp, 0x3fc]!                      |     __asm ("ldc2l p15, c15, aav.0x000000ff!");
    0x00002568 movs r4, 0xd4                                     |     r4 = 0xd4;
    0x0000256a movs r3, r0                                       |     r3 = r0;
    0x0000256c movs r4, 0x44                                     |     r4 = 0x44;
    0x0000256e movs r3, r0                                       |     r3 = r0;
    0x00002570 movs r4, 0x92                                     |     r4 = 0x92;
    0x00002572 movs r3, r0                                       |     r3 = r0;
    0x00002574 ldc2l p15, c15, [sp, 0x3fc]!                      |     __asm ("ldc2l p15, c15, aav.0x000000ff!");
    0x00002578 movs r4, 0x32                                     |     r4 = 0x32;
    0x0000257a movs r3, r0                                       |     r3 = r0;
    0x0000257c cmp r1, 0xb0                                      |     
    0x0000257e movs r3, r0                                       |     r3 = r0;
    0x00002580 movs r1, 0x76                                     |     r1 = 0x76;
    0x00002582 movs r3, r0                                       |     r3 = r0;
    0x00002584 movs r2, 0xea                                     |     r2 = 0xea;
    0x00002586 movs r3, r0                                       |     r3 = r0;
    0x00002588 cmp r1, 0x96                                      |     
    0x0000258a movs r3, r0                                       |     r3 = r0;
    0x0000258c movs r1, 0x5c                                     |     r1 = 0x5c;
    0x0000258e movs r3, r0                                       |     r3 = r0;
    0x00002590 movs r2, 0xe4                                     |     r2 = 0xe4;
    0x00002592 movs r3, r0                                       |     r3 = r0;
    0x00002594 cmp r1, 0x80                                      |     
    0x00002596 movs r3, r0                                       |     r3 = r0;
    0x00002598 movs r1, 0x46                                     |     r1 = 0x46;
    0x0000259a movs r3, r0                                       |     r3 = r0;
    0x0000259c movs r2, 0x92                                     |     r2 = 0x92;
    0x0000259e movs r3, r0                                       |     r3 = r0;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x326c */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) fcn.0000326c ()                              | void fcn_0000326c (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;
                                                         |     if (? >= ?) {
    0x0000326c ldrbmi lr, [r0, sp, lsr 18]!              |         
                                                         |     }
    0x00003270 sub sp, 0x30                              |     
    0x00003272 ldr r5, [sp, 0x50]                        |     r5 = *(arg_50h);
    0x00003274 mov r6, r3                                |     r6 = r3;
    0x00003276 mov r4, r0                                |     r4 = r0;
    0x00003278 mov r7, r2                                |     r7 = r2;
    0x0000327a ldr r3, [pc, 0x1f0]                       |     r3 = *(0x346e);
    0x0000327c str r5, [r0, 8]                           |     *((r0 + 8)) = r5;
    0x0000327e mov r5, r1                                |     r5 = r1;
    0x00003280 ldr r1, [pc, 0x1ec]                       |     
    0x00003282 movs r0, 0                                |     r0 = 0;
    0x00003284 strh.w r0, [r4, 0x50]                     |     *((r4 + 0x50)) = r0;
    0x00003288 mov r2, r0                                |     r2 = r0;
    0x0000328a str r0, [r4, 0x54]                        |     *((r4 + 0x54)) = r0;
    0x0000328c add r1, pc                                |     r1 = 0x6700;
    0x0000328e ldr r0, [r4, 0x28]                        |     r0 = *((r4 + 0x28));
    0x00003290 ldr r3, [r1, r3]                          |     
    0x00003292 movs r1, 3                                |     r1 = 3;
    0x00003294 ldr.w r8, [pc, 0x1dc]                     |     r8 = *(0x00003474);
    0x00003298 ldr r3, [r3]                              |     r3 = *(0x6700);
    0x0000329a str r3, [sp, 0x2c]                        |     var_2ch = r3;
    0x0000329c mov.w r3, 0                               |     r3 = 0;
    0x000032a0 ldr r3, [sp, 0x54]                        |     r3 = *(arg_54h);
    0x000032a2 add r8, pc                                |     r8 += pc;
    0x000032a4 str r3, [r4, 0x4c]                        |     *((r4 + 0x4c)) = r3;
    0x000032a6 blx 0x13b4                                |     r0 = printf_chk ()
    0x000032aa cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x000032ac blt.w 0x33fc                              |         goto label_2;
                                                         |     }
    0x000032b0 orr r2, r0, 0x800                         |     r2 = r0 | 0x800;
    0x000032b4 movs r1, 4                                |     r1 = 4;
    0x000032b6 ldr r0, [r4, 0x28]                        |     r0 = *((r4 + 0x28));
    0x000032b8 blx 0x13b4                                |     r0 = printf_chk ()
    0x000032bc cmp r0, 0                                 |     
                                                         |     if (r0 < 0) {
    0x000032be blt.w 0x341c                              |         goto label_3;
                                                         |     }
    0x000032c2 ldr.w sb, [r4, 0x28]                      |     sb = *((r4 + 0x28));
                                                         |     if (r6 != 0) {
    0x000032c6 cbz r6, 0x32ee                            |         
    0x000032c8 add.w sl, r6, 0x1000                      |         sl = r6 + 0x1000;
    0x000032cc ldr.w r6, [sl, 0x594]                     |         r6 = *((sl + 0x594));
    0x000032d0 mov r0, r6                                |         r0 = r6;
    0x000032d2 blx 0x1390                                |         fcntl ();
    0x000032d6 mov r3, r6                                |         r3 = r6;
    0x000032d8 str r0, [sp]                              |         *(sp) = r0;
    0x000032da movs r2, 0x19                             |         r2 = 0x19;
    0x000032dc mov r0, sb                                |         r0 = sb;
    0x000032de movs r1, 1                                |         r1 = 1;
    0x000032e0 blx 0x116c                                |         r0 = fcn_0000116c ();
    0x000032e4 cmp r0, 0                                 |         
                                                         |         if (r0 < 0) {
    0x000032e6 blt.w 0x343c                              |             goto label_4;
                                                         |         }
    0x000032e8 strh r1, [r5, 4]                          |         *((r5 + 4)) = r1;
    0x000032ea ldr.w sb, [r4, 0x28]                      |         sb = *((r4 + 0x28));
                                                         |     }
    0x000032ee ldr r2, [r5]                              |     r2 = *(r5);
    0x000032f0 add.w ip, sp, 0x10                        |     
    0x000032f4 movs r3, 0                                |     r3 = 0;
    0x000032f6 strd r3, r3, [ip, 4]                      |     __asm ("strd r3, r3, [var_14h]");
    0x000032fa cmp r2, 4                                 |     
    0x000032fc strd r3, r3, [ip, 0xc]                    |     __asm ("strd r3, r3, [var_ch]");
    0x00003300 strd r3, r3, [ip, 0x14]                   |     __asm ("strd r3, r3, [var_14h_2]");
    0x00003304 strh.w r7, [sp, 0x12]                     |     var_12h = r7;
                                                         |     if (r2 == 4) {
    0x00003308 beq 0x3380                                |         goto label_5;
                                                         |     }
    0x0000330a ldr r0, [r5, 4]                           |     r0 = *((r5 + 4));
    0x0000330c movs r6, 0x1c                             |     r6 = 0x1c;
    0x0000330e ldr r1, [r5, 8]                           |     r1 = *((r5 + 8));
    0x00003310 ldr r2, [r5, 0xc]                         |     r2 = *((r5 + 0xc));
    0x00003312 ldr r3, [r5, 0x10]                        |     r3 = *((r5 + 0x10));
    0x00003314 movs r5, 0xa                              |     r5 = 0xa;
    0x00003316 strh.w r5, [sp, 0x10]                     |     var_10h = r5;
    0x0000331a add r5, sp, 0x18                          |     r5 += var_18h;
    0x0000331c stm r5!, {r0, r1, r2, r3}                 |     *(r5!) = r0;
                                                         |     *((r5! + 4)) = r1;
                                                         |     *((r5! + 8)) = r2;
                                                         |     *((r5! + 12)) = r3;
                                                         | label_0:
    0x0000331e mov r1, ip                                |     r1 = ip;
    0x00003320 mov r0, sb                                |     r0 = sb;
    0x00003322 mov r2, r6                                |     r2 = r6;
    0x00003324 blx 0x1514                                |     r0 = fcn_00001514 ();
    0x00003328 cmp r0, 0                                 |     
                                                         |     if (r0 >= 0) {
    0x0000332a bge 0x336e                                |         goto label_6;
                                                         |     }
    0x0000332c blx 0x139c                                |     r0 = memset (r0, r1, r2);
    0x00003330 ldr r5, [r0]                              |     r5 = *(r0);
    0x00003332 cmp r5, 0x73                              |     
                                                         |     if (r5 == 0x73) {
    0x00003334 beq 0x338e                                |         goto label_7;
                                                         |     }
    0x00003336 sub.w r3, r5, 0x63                        |     r3 = r5 - 0x63;
    0x0000333a cmp r5, 0x71                              |     
    0x0000333c it ne                                     |     
                                                         |     if (r5 != 0x71) {
    0x0000333e cmpne r3, 1                               |         __asm ("cmpne r3, 1");
                                                         |     }
                                                         |     if (r5 > 0x71) {
    0x00003340 bhi 0x33d4                                |         goto label_8;
                                                         |     }
    0x00003342 ldr r3, [pc, 0x134]                       |     
    0x00003344 movw r0, 0xff04                           |     
    0x00003348 movt r0, 0xfffe                           |     r0 = 0xfffeff04;
    0x0000334c ldr.w r3, [r8, r3]                        |     r3 = *((r8 + r3));
    0x00003350 ldr r3, [r3]                              |     r3 = *(0x347a);
                                                         |     if (r3 != 0) {
    0x00003352 cbnz r3, 0x33ae                           |         goto label_9;
                                                         |     }
                                                         |     do {
                                                         | label_1:
    0x00003354 ldr r2, [pc, 0x124]                       |         
    0x00003356 ldr r3, [pc, 0x114]                       |         r3 = *(0x346e);
    0x00003358 add r2, pc                                |         r2 = 0x67d8;
    0x0000335a ldr r3, [r2, r3]                          |         r3 = *(0x67d8);
    0x0000335c ldr r2, [r3]                              |         r2 = *(0x67d8);
    0x0000335e ldr r3, [sp, 0x2c]                        |         r3 = var_2ch;
    0x00003360 eors r2, r3                               |         r2 ^= r3;
    0x00003362 mov.w r3, 0                               |         r3 = 0;
                                                         |         if (r2 != r3) {
    0x00003366 bne 0x3468                                |             goto label_10;
                                                         |         }
    0x00003368 add sp, 0x30                              |         
    0x0000336a pop.w {r4, r5, r6, r7, r8, sb, sl, pc}    |         
                                                         | label_6:
    0x0000336e ldr r2, [pc, 0x110]                       |         
    0x00003370 movs r1, 4                                |         r1 = 4;
    0x00003372 ldr r0, [pc, 0x110]                       |         
    0x00003374 add r2, pc                                |         r2 = 0x67fa;
    0x00003376 add r0, pc                                |         r0 = 0x6800;
    0x00003378 bl 0x2effc                                |         fcn_0002effc ();
    0x0000337c movs r0, 0                                |         r0 = 0;
    0x0000337e b 0x3354                                  |         
                                                         |     } while (1);
                                                         | label_5:
    0x00003380 ldr r3, [r5, 4]                           |     r3 = *((r5 + 4));
    0x00003382 movs r6, 0x10                             |     r6 = 0x10;
    0x00003384 str r3, [sp, 0x14]                        |     var_14h = r3;
    0x00003386 movs r3, 2                                |     r3 = 2;
    0x00003388 strh.w r3, [sp, 0x10]                     |     var_10h = r3;
    0x0000338c b 0x331e                                  |     goto label_0;
                                                         | label_7:
    0x0000338e ldr r2, [pc, 0xf8]                        |     
    0x00003390 movs r5, 4                                |     r5 = 4;
    0x00003392 ldr r1, [pc, 0xf8]                        |     
    0x00003394 add.w r0, r4, 0xc                         |     r0 = r4 + 0xc;
    0x00003398 mov r3, r4                                |     r3 = r4;
    0x0000339a str r5, [sp]                              |     *(sp) = r5;
    0x0000339c add r2, pc                                |     r2 = 0x682a;
    0x0000339e add r1, pc                                |     r1 = 0x6830;
    0x000033a0 bl 0x1af4                                 |     fcn_00001af4 (r0, r1, r2, r3, r4);
    0x000033a4 movw r0, 0xff05                           |     
    0x000033a8 movt r0, 0xfffe                           |     r0 = 0xfffeff05;
    0x000033ac b 0x3354                                  |     goto label_1;
                                                         | label_9:
    0x000033ae mov r0, r5                                |     r0 = r5;
    0x000033b0 ldr r4, [r4, 0x28]                        |     r4 = *((r4 + 0x28));
    0x000033b2 blx 0x1344                                |     fcn_00001344 ();
    0x000033b6 ldr r2, [pc, 0xd8]                        |     
    0x000033b8 movs r1, 5                                |     r1 = 5;
    0x000033ba strd r5, r0, [sp]                         |     __asm ("strd r5, r0, [sp]");
    0x000033be mov r3, r4                                |     r3 = r4;
    0x000033c0 ldr r0, [pc, 0xd0]                        |     
    0x000033c2 add r2, pc                                |     r2 = 0x6858;
    0x000033c4 add r0, pc                                |     r0 = 0x685c;
    0x000033c6 bl 0x2effc                                |     fcn_0002effc ();
    0x000033ca movw r0, 0xff04                           |     
    0x000033ce movt r0, 0xfffe                           |     r0 = 0xfffeff04;
    0x000033d2 b 0x3354                                  |     goto label_1;
                                                         | label_8:
    0x000033d4 mov r0, r5                                |     r0 = r5;
    0x000033d6 ldr r4, [r4, 0x28]                        |     r4 = *((r4 + 0x28));
    0x000033d8 blx 0x1344                                |     fcn_00001344 ();
    0x000033dc ldr r2, [pc, 0xb8]                        |     
    0x000033de movs r1, 4                                |     r1 = 4;
    0x000033e0 str r0, [sp, 4]                           |     var_4h = r0;
    0x000033e2 mov r3, r4                                |     r3 = r4;
    0x000033e4 ldr r0, [pc, 0xb4]                        |     
    0x000033e6 add r2, pc                                |     r2 = 0x6882;
    0x000033e8 str r6, [sp, 8]                           |     var_8h = r6;
    0x000033ea str r5, [sp]                              |     *(sp) = r5;
    0x000033ec add r0, pc                                |     r0 = 0x688c;
    0x000033ee bl 0x2effc                                |     fcn_0002effc ();
    0x000033f2 movw r0, 0xff04                           |     
    0x000033f6 movt r0, 0xfffe                           |     r0 = 0xfffeff04;
    0x000033fa b 0x3354                                  |     goto label_1;
                                                         | label_2:
    0x000033fc blx 0x139c                                |     r0 = memset (r0, r1, r2);
    0x00003400 ldr r0, [r0]                              |     r0 = *(r0);
    0x00003402 blx 0x1344                                |     fcn_00001344 ();
    0x00003406 ldr r2, [pc, 0x98]                        |     
    0x00003408 mov r3, r0                                |     r3 = r0;
    0x0000340a ldr r0, [pc, 0x98]                        |     
    0x0000340c movs r1, 4                                |     r1 = 4;
    0x0000340e add r2, pc                                |     r2 = 0x68b4;
    0x00003410 add r0, pc                                |     r0 = 0x68ba;
    0x00003412 bl 0x2effc                                |     fcn_0002effc ();
    0x00003416 mvn r0, 0x10000                           |     r0 = ~0x10000;
    0x0000341a b 0x3354                                  |     goto label_1;
                                                         | label_3:
    0x0000341c blx 0x139c                                |     r0 = memset (r0, r1, r2);
    0x00003420 ldr r0, [r0]                              |     r0 = *(r0);
    0x00003422 blx 0x1344                                |     fcn_00001344 ();
    0x00003426 ldr r2, [pc, 0x80]                        |     
    0x00003428 mov r3, r0                                |     r3 = r0;
    0x0000342a ldr r0, [pc, 0x80]                        |     
    0x0000342c movs r1, 4                                |     r1 = 4;
    0x0000342e add r2, pc                                |     r2 = 0x68dc;
    0x00003430 add r0, pc                                |     r0 = 0x68e2;
    0x00003432 bl 0x2effc                                |     fcn_0002effc ();
    0x00003434 stc2l p4, c15, [r3, 0x1bc]!               |     __asm ("stc2l p4, c15, aav.0x000000ff!");
    0x00003438 adds r0, 0x80                             |     r0 += 0x80;
    0x0000343a b 0x3354                                  |     goto label_1;
                                                         | label_4:
    0x0000343c blx 0x139c                                |     r0 = memset (r0, r1, r2);
    0x00003440 ldr r0, [r0]                              |     r0 = *(r0);
    0x00003442 ldr.w r5, [sl, 0x594]                     |     r5 = *((sl + 0x594));
    0x00003446 blx 0x1344                                |     fcn_00001344 ();
    0x0000344a ldr r2, [pc, 0x64]                        |     
    0x0000344c mov r4, r0                                |     r4 = r0;
    0x0000344e ldr r0, [pc, 0x64]                        |     
    0x00003450 mov r3, r5                                |     r3 = r5;
    0x00003452 movs r1, 4                                |     r1 = 4;
    0x00003454 str r4, [sp]                              |     *(sp) = r4;
    0x00003456 add r2, pc                                |     r2 = 0x690c;
    0x00003458 add r0, pc                                |     r0 = 0x6912;
    0x0000345a bl 0x2effc                                |     fcn_0002effc ();
    0x0000345e movw r0, 0xfffc                           |     
    0x00003462 movt r0, 0xfffe                           |     r0 = 0xfffefffc;
    0x00003466 b 0x3354                                  |     goto label_1;
                                                         | label_10:
    0x00003468 blx 0x1264                                |     getrlimit ();
    0x0000346c lsls r0, r7, 5                            |     r0 = r7 << 5;
    0x0000346e movs r0, r0                               |     
    0x00003470 subs r4, r1, r5                           |     r4 = r1 - r5;
    0x00003472 movs r5, r0                               |     r5 = r0;
    0x00003474 subs r6, r6, r4                           |     r6 -= r4;
    0x00003476 movs r5, r0                               |     r5 = r0;
    0x00003478 lsls r4, r0, 6                            |     r4 = r0 << 6;
    0x0000347a movs r0, r0                               |     
    0x0000347c subs r0, r0, r2                           |     r0 -= r2;
    0x0000347e movs r5, r0                               |     r5 = r0;
    0x00003480 adds r4, r1, r7                           |     r4 = r1 + r7;
    0x00003482 movs r3, r0                               |     r3 = r0;
    0x00003484 asrs r6, r3, 1                            |     r6 = r3 >> 1;
    0x00003486 movs r3, r0                               |     r3 = r0;
    0x00003488 invalid                                   |     
                                                         | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x36b0 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.000036b0 ()                          | void fcn_000036b0 (uint32_t arg1, uint32_t arg2) {
                                                     |     int16_t var_0h;
                                                     |     char * var_8h;
                                                     |     int32_t var_8h_2;
                                                     |     int16_t var_10h;
                                                     |     char * src;
                                                     |     int16_t var_16h;
                                                     |     int16_t var_18h;
                                                     |     int16_t var_24h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x000036b0 blmi 0x9b0ad8                         |     __asm ("blmi aav.0x000000ff");
    0x000036b4 add r3, pc                            |     r3 += pc;
    0x000036b6 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x000036b8 beq 0x3734                            |         goto label_7;
                                                     |     }
    0x000036ba ldr r2, [pc, 0x94]                    |     
    0x000036bc ldr r2, [r3, r2]                      |     r2 = *((r3 + r2));
    0x000036be ldr r2, [r2]                          |     r2 = *(0x3752);
    0x000036c0 cmp r2, r1                            |     
                                                     |     if (r2 == r1) {
    0x000036c2 beq 0x3728                            |         goto label_8;
                                                     |     }
    0x000036c4 ldr r2, [pc, 0x8c]                    |     
    0x000036c6 ldr r2, [r3, r2]                      |     r2 = *((r3 + r2));
    0x000036c8 ldr r2, [r2]                          |     r2 = *(0x3754);
    0x000036ca cmp r2, r1                            |     
                                                     |     if (r2 == r1) {
    0x000036cc beq 0x372e                            |         goto label_9;
                                                     |     }
    0x000036ce ldr r2, [pc, 0x88]                    |     r2 = *(0x375a);
    0x000036d0 ldr r3, [r3, r2]                      |     r3 = *((r3 + r2));
    0x000036d2 ldr r3, [r3]                          |     r3 = *(r3);
    0x000036d4 cmp r3, r1                            |     
    0x000036d6 it eq                                 |     
                                                     |     if (r3 != r1) {
    0x000036d8 moveq r0, 0                           |         r0 = 0;
                                                     |     }
                                                     |     if (r3 == r1) {
    0x000036da beq 0x3700                            |         goto label_0;
                                                     |     }
    0x000036dc add.w r0, r0, 0x1000                  |     r0 += 0x1000;
    0x000036e0 ldr.w r3, [r0, 0xf68]                 |     r3 = *((r0 + 0xf68));
    0x000036e4 cmp r1, r3                            |     
    0x000036e6 it ne                                 |     
                                                     |     if (r1 != r3) {
    0x000036e8 cmpne r3, 0                           |         __asm ("cmpne r3, 0");
                                                     |     }
                                                     |     if (r1 == r3) {
    0x000036ea beq 0x36f6                            |         goto label_10;
                                                     |     }
                                                     |     do {
    0x000036ec ldr r3, [r3]                          |         r3 = *(r3);
    0x000036ee cmp r3, 0                             |         
    0x000036f0 it ne                                 |         
                                                     |         if (r3 != 0) {
    0x000036f2 cmpne r1, r3                          |             __asm ("cmpne r1, r3");
                                                     |         }
    0x000036f4 bne 0x36ec                            |         
                                                     |     } while (r3 != 0);
                                                     |     if (r3 != 0) {
                                                     | label_10:
    0x000036f6 cbz r3, 0x3702                        |         
    0x000036f8 add.w r3, r3, 0x1000                  |         r3 += 0x1000;
    0x000036fc ldr.w r0, [r3, 0x59c]                 |         r0 = *((r3 + 0x59c));
                                                     | label_0:
    0x00003700 pop {r3, pc}                          |         
                                                     |     }
    0x00003702 ldr r3, [pc, 0x58]                    |     
    0x00003704 add r3, pc                            |     r3 = 0x6e66;
    0x00003706 ldr r0, [r3, 4]                       |     r0 = *(0x6e6a);
    0x00003708 cmp r0, 0                             |     
    0x0000370a it ne                                 |     
                                                     |     if (r0 != 0) {
    0x0000370c cmpne r1, r0                          |         __asm ("cmpne r1, r0");
                                                     |     }
                                                     |     if (r0 == 0) {
    0x0000370e beq 0x371a                            |         goto label_11;
                                                     |     }
                                                     |     do {
    0x00003710 ldr r0, [r0]                          |         r0 = *(r0);
    0x00003712 cmp r0, 0                             |         
    0x00003714 it ne                                 |         
                                                     |         if (r0 != 0) {
    0x00003716 cmpne r1, r0                          |             __asm ("cmpne r1, r0");
                                                     |         }
    0x00003718 bne 0x3710                            |         
                                                     |     } while (r0 != 0);
                                                     | label_11:
    0x0000371a cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x0000371c beq 0x3700                            |         goto label_0;
                                                     |     }
    0x0000371e add.w r0, r0, 0x1000                  |     r0 += 0x1000;
    0x00003722 ldr.w r0, [r0, 0x59c]                 |     r0 = *((r0 + 0x59c));
    0x00003726 pop {r3, pc}                          |     
                                                     | label_8:
    0x00003728 mov.w r0, -1                          |     r0 = -1;
    0x0000372c pop {r3, pc}                          |     
                                                     | label_9:
    0x0000372e mvn r0, 2                             |     r0 = ~2;
    0x00003732 pop {r3, pc}                          |     
                                                     | label_7:
    0x00003734 ldr r3, [pc, 0x28]                    |     
    0x00003736 movw r2, 0x377                        |     r2 = 0x377;
    0x0000373a ldr r1, [pc, 0x28]                    |     
    0x0000373c ldr r0, [pc, 0x28]                    |     
    0x0000373e add r3, pc                            |     r3 = 0x6ea2;
    0x00003740 add r1, pc                            |     r1 = 0x6eaa;
    0x00003742 adds r3, 0xd0                         |     r3 += 0xd0;
    0x00003744 add r0, pc                            |     r0 = 0x6eb0;
    0x00003746 blx 0x152c                            |     fcn_0000152c ();
    0x0000374a nop                                   |     
    0x0000374c asrs r4, r4, 0x1c                     |     r4 >>= 0x1c;
    0x0000374e movs r5, r0                           |     r5 = r0;
    0x00003750 lsls r0, r2, 7                        |     r0 = r2 << 7;
    0x00003752 movs r0, r0                           |     
    0x00003754 lsls r4, r3, 5                        |     r4 = r3 << 5;
    0x00003756 movs r0, r0                           |     
    0x00003758 lsls r4, r1, 7                        |     r4 = r1 << 7;
    0x0000375a movs r0, r0                           |     
    0x0000375c ldr r4, [r7, 0x30]                    |     r4 = *((r7 + 0x30));
    0x0000375e movs r6, r0                           |     r6 = r0;
    0x00003760 asrs r2, r3, 0x1c                     |     r2 = r3 >> 0x1c;
    0x00003762 movs r3, r0                           |     r3 = r0;
    0x00003764 lsrs r0, r4, 0x1b                     |     r0 = r4 >> 0x1b;
    0x00003766 movs r3, r0                           |     r3 = r0;
    0x00003768 asrs r0, r5, 8                        |     r0 = r5 >> 8;
    0x0000376a movs r3, r0                           |     r3 = r0;
    0x0000376c ldr r2, [pc, 0x1f8]                   |     
    0x0000376e ldr r3, [pc, 0x1fc]                   |     r3 = *(0x396e);
    0x00003770 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00003774 sub sp, 0x28                          |     
    0x00003776 add r2, pc                            |     r2 = 0x70e2;
    0x00003778 ldr r7, [pc, 0x1f4]                   |     
    0x0000377a ldr r3, [r2, r3]                      |     
    0x0000377c add r7, pc                            |     r7 = 0x70f0;
    0x0000377e ldr r3, [r3]                          |     r3 = *(0x70e2);
    0x00003780 str r3, [sp, 0x24]                    |     var_24h = r3;
    0x00003782 mov.w r3, 0                           |     r3 = 0;
    0x00003786 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00003788 beq.w 0x393c                          |         goto label_12;
                                                     |     }
    0x0000378c movs r1, 2                            |     r1 = 2;
    0x0000378e movs r2, 0x11                         |     r2 = 0x11;
    0x00003790 mov r4, r0                            |     r4 = r0;
    0x00003792 mov r0, r1                            |     r0 = r1;
    0x00003794 blx 0x14a4                            |     strncmp (r0, r1, r2);
    0x00003798 movs r3, 2                            |     r3 = 2;
    0x0000379a add.w r8, sp, 0x14                    |     r8 += src;
    0x0000379e strh.w r3, [sp, 0x14]                 |     src = r3;
    0x000037a2 movs r2, 0x10                         |     r2 = 0x10;
    0x000037a4 ldr r3, [pc, 0x1cc]                   |     r3 = *(0x3974);
    0x000037a6 mov r1, r8                            |     r1 = r8;
    0x000037a8 mov r6, r0                            |     r6 = r0;
    0x000037aa ldr r3, [r7, r3]                      |     r3 = *((r7 + r3));
    0x000037ac ldrh r3, [r3]                         |     r3 = *(r3);
    0x000037ae strh.w r3, [sp, 0x16]                 |     var_16h = r3;
    0x000037b2 movs r3, 0                            |     r3 = 0;
    0x000037b4 str r3, [sp, 0x18]                    |     var_18h = r3;
    0x000037b6 blx 0x13a8                            |     r0 = strncpy (r0, r1, r2);
    0x000037ba mov r5, r0                            |     r5 = r0;
    0x000037bc mov r0, r6                            |     r0 = r6;
    0x000037be blx 0x14fc                            |     fcn_000014fc ();
    0x000037c2 cmp r5, 0                             |     
                                                     |     if (r5 == 0) {
    0x000037c4 beq 0x3852                            |         goto label_13;
                                                     |     }
                                                     | label_1:
    0x000037c6 add.w r6, r4, 0x1840                  |     r6 = r4 + 0x1840;
    0x000037ca movs r3, 0                            |     r3 = 0;
    0x000037cc add.w r5, r4, 0x1000                  |     r5 = r4 + 0x1000;
    0x000037d0 adds r6, 0xc                          |     r6 += 0xc;
    0x000037d2 strb.w r3, [r5, 0x84c]                |     *((r5 + 0x84c)) = r3;
    0x000037d6 mov r0, r6                            |     r0 = r6;
    0x000037d8 bl 0x1dd8                             |     fcn_00001dd8 (r0);
    0x000037dc ldrb.w r3, [r5, 0x84c]                |     r3 = *((r5 + 0x84c));
    0x000037e0 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000037e2 beq.w 0x3926                          |         goto label_14;
                                                     |     }
                                                     | label_4:
    0x000037e6 add.w r6, r4, 0x1880                  |     r6 = r4 + 0x1880;
    0x000037ea movs r3, 0                            |     r3 = 0;
    0x000037ec adds r6, 0xc                          |     r6 += 0xc;
    0x000037ee strb.w r3, [r5, 0x88c]                |     *((r5 + 0x88c)) = r3;
    0x000037f2 mov r0, r6                            |     r0 = r6;
    0x000037f4 bl 0x1dd8                             |     fcn_00001dd8 (r0);
    0x000037f8 ldrb.w r3, [r5, 0x88c]                |     r3 = *((r5 + 0x88c));
    0x000037fc cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000037fe beq.w 0x391a                          |         goto label_15;
                                                     |     }
                                                     | label_3:
    0x00003802 mov r0, r4                            |     r0 = r4;
    0x00003804 mov.w r5, -1                          |     r5 = -1;
    0x00003808 bl 0x1589c                            |     fcn_0001589c (r0);
    0x0000380c ldr r3, [r4]                          |     r3 = *(r4);
    0x0000380e movs r2, 2                            |     r2 = 2;
    0x00003810 strh.w r2, [sp, 0x14]                 |     src = r2;
    0x00003814 mov r0, r8                            |     r0 = r8;
    0x00003816 ldr r2, [pc, 0x160]                   |     r2 = *(0x397a);
    0x00003818 str r5, [r3]                          |     *(r3) = r5;
    0x0000381a ldr r2, [r7, r2]                      |     r2 = *((r7 + r2));
    0x0000381c ldrh r6, [r2]                         |     r6 = *(r2);
    0x0000381e movs r2, 0                            |     r2 = 0;
    0x00003820 mov r1, r6                            |     r1 = r6;
    0x00003822 bl 0x1fd4                             |     fcn_00001fd4 (r0, r1, r2, r3);
    0x00003826 ldr r3, [r4]                          |     r3 = *(r4);
    0x00003828 movs r2, 0xa                          |     r2 = 0xa;
    0x0000382a strh.w r2, [sp, 0x14]                 |     src = r2;
    0x0000382e str r5, [r3, 4]                       |     *((r3 + 4)) = r5;
                                                     |     if (r0 == 0) {
    0x00003830 cbz r0, 0x3858                        |         goto label_16;
                                                     |     }
                                                     | label_2:
    0x00003832 mvn r5, 0x10000                       |     r5 = ~0x10000;
    0x00003836 ldr r2, [pc, 0x144]                   |     
    0x00003838 ldr r3, [pc, 0x130]                   |     r3 = *(0x396c);
    0x0000383a add r2, pc                            |     r2 = 0x71bc;
    0x0000383c ldr r3, [r2, r3]                      |     r3 = *(0x71bc);
    0x0000383e ldr r2, [r3]                          |     r2 = *(0x71bc);
    0x00003840 ldr r3, [sp, 0x24]                    |     r3 = var_24h;
    0x00003842 eors r2, r3                           |     r2 ^= r3;
    0x00003844 mov.w r3, 0                           |     r3 = 0;
                                                     |     if (r2 != r3) {
    0x00003848 bne 0x393a                            |         void (*0x393a)() ();
                                                     |     }
    0x0000384a mov r0, r5                            |     r0 = r5;
    0x0000384c add sp, 0x28                          |     
    0x0000384e pop.w {r4, r5, r6, r7, r8, pc}        |     
                                                     | label_13:
    0x00003852 movs r3, 1                            |     r3 = 1;
    0x00003854 strb r3, [r4, 8]                      |     *((r4 + 8)) = r3;
    0x00003856 b 0x37c6                              |     goto label_1;
                                                     | label_16:
    0x00003858 mov r2, r0                            |     r2 = r0;
    0x0000385a adds r3, 4                            |     r3 += 4;
    0x0000385c mov r1, r6                            |     r1 = r6;
    0x0000385e mov r0, r8                            |     r0 = r8;
    0x00003860 bl 0x1fd4                             |     r0 = fcn_00001fd4 (r0, r1, r2, r3);
    0x00003864 cmp r0, 0                             |     
                                                     |     if (r0 != 0) {
    0x00003866 bne 0x3832                            |         goto label_2;
                                                     |     }
    0x00003868 mov r0, r4                            |     r0 = r4;
    0x0000386a bl 0x2900                             |     r0 = fcn_00002900 (r0);
    0x0000386e mov r5, r0                            |     r5 = r0;
    0x00003870 cmp r0, 1                             |     
                                                     |     if (r0 != 1) {
    0x00003872 bne 0x3832                            |         goto label_2;
                                                     |     }
    0x00003874 movs r1, 9                            |     r1 = 9;
    0x00003876 movs r0, 1                            |     r0 = 1;
    0x00003878 blx 0x2124                            |     void (*0x2124)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000387c mov r0, r1                            |     r0 = r1;
    0x0000387e cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00003880 beq 0x3954                            |         void (*0x3954)() ();
                                                     |     }
    0x00003882 str r4, [r0, 4]                       |     *((r0 + 4)) = r4;
    0x00003884 mov r2, r5                            |     r2 = r5;
    0x00003886 movs r1, 3                            |     r1 = 3;
    0x00003888 movs r0, 0x11                         |     r0 = 0x11;
    0x0000388a invalid                               |     
    0x0000388e subs.w r8, r0, 1                      |     r8 = r0 - 1;
                                                     |     if (r8 < r0) {
    0x00003892 blt 0x38e0                            |         goto label_17;
                                                     |     }
    0x00003894 mov.w r2, 0x800                       |     r2 = 0x800;
    0x00003898 movs r1, 4                            |     r1 = 4;
    0x0000389a blx 0x13b4                            |     printf_chk ()
    0x0000389e movs r3, 0x10                         |     r3 = 0x10;
    0x000038a0 strd r5, r5, [sp, 8]                  |     __asm ("strd r5, r5, [var_8h]");
    0x000038a4 add r1, sp, 8                         |     r1 += var_8h;
    0x000038a6 strh.w r3, [sp, 9]                    |     *((sp + 9)) = r3;
    0x000038aa movs r2, 0xc                          |     r2 = 0xc;
    0x000038ac movs r3, 0x11                         |     r3 = 0x11;
    0x000038ae mov r0, r8                            |     r0 = r8;
    0x000038b0 str r3, [sp, 0x14]                    |     *((sp + 0x14)) = r3;
    0x000038b2 blx 0x13a8                            |     r0 = strncpy (r0, r1, r2);
                                                     |     if (r0 != 0) {
    0x000038b6 cbnz r0, 0x38e0                       |         goto label_17;
                                                     |     }
    0x000038b8 str.w r8, [r7]                        |     __asm ("str.w r8, [r7]");
                                                     |     do {
    0x000038bc movs r1, 2                            |         r1 = 2;
    0x000038be movs r0, 0x24                         |         r0 = 0x24;
    0x000038c0 blx 0x2124                            |         r0 = void (*0x2124)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000038c4 cmp r0, 0                             |         
                                                     |         if (r0 == 0) {
    0x000038c6 beq 0x395c                            |             goto label_18;
                                                     |         }
    0x000038c8 movs r2, 2                            |         r2 = 2;
    0x000038ca str.w r8, [r0, 0x1c]                  |         __asm ("str.w r8, [r0, 0x1c]");
    0x000038ce ldr r1, [pc, 0xb0]                    |         
    0x000038d0 mov r3, r6                            |         r3 = r6;
    0x000038d2 str r2, [sp]                          |         *(sp) = r2;
    0x000038d4 ldr r2, [pc, 0xb0]                    |         
    0x000038d6 add r1, pc                            |         r1 = 0x725c;
    0x000038d8 add r2, pc                            |         r2 = 0x7264;
    0x000038da bl 0x1af4                             |         fcn_00001af4 (r0, r1, r2, r3, r4);
    0x000038de b 0x3910                              |         goto label_19;
                                                     | label_17:
    0x000038e0 blx 0x139c                            |         memset (r0, r1, r2);
    0x000038e4 ldr.w r8, [r1]                        |         r8 = *(r1);
    0x000038e8 cmp.w r8, 0                           |         
                                                     |         if (r8 != 0) {
    0x000038ec beq 0x3932                            |             
                                                     | label_6:
    0x000038ee mov r0, r6                            |             r0 = r6;
    0x000038f0 blx 0x11d4                            |             fgets (r0, r1, r2);
                                                     | label_5:
    0x000038f4 ldr r3, [pc, 0x90]                    |             r3 = *(0x3988);
    0x000038f6 ldr r3, [r7, r3]                      |             r3 = *((r7 + r3));
    0x000038f8 ldr r6, [r3]                          |             r6 = *(0x3988);
    0x000038fa blx 0x1374                            |             fcn_00001374 ();
    0x000038fe ldr r2, [pc, 0x8c]                    |             
    0x00003900 mov r3, r0                            |             r3 = r0;
    0x00003902 movs r1, 1                            |             r1 = 1;
    0x00003904 mov r0, r6                            |             r0 = r6;
    0x00003906 str.w r8, [sp]                        |             __asm ("str.w r8, [sp]");
    0x0000390a add r2, pc                            |             r2 = 0x729c;
    0x0000390c blx 0x1400                            |             fcn_00001400 ();
                                                     | label_19:
    0x00003910 movs r1, 0                            |             r1 = 0;
    0x00003912 mov r0, r4                            |             r0 = r4;
    0x00003914 bl 0x1cdb0                            |             fcn_0001cdb0 (r0, r1);
    0x00003916 invalid                               |             
                                                     | label_15:
    0x0000391a ldr r1, [pc, 0x74]                    |             
    0x0000391c mov r0, r6                            |             r0 = r6;
    0x0000391e add r1, pc                            |             r1 = 0x72b4;
    0x00003920 bl 0x1f750                            |             fcn_0001f750 (r0, r1);
    0x00003924 b 0x3802                              |             goto label_3;
                                                     | label_14:
    0x00003926 ldr r1, [pc, 0x6c]                    |             
    0x00003928 mov r0, r6                            |             r0 = r6;
    0x0000392a add r1, pc                            |             r1 = 0x72c4;
    0x0000392c bl 0x1f750                            |             fcn_0001f750 (r0, r1);
    0x00003930 b 0x37e6                              |             goto label_4;
                                                     |         }
    0x00003932 ldr.w r8, [r6]                        |         r8 = *(r6);
    0x00003936 b 0x38bc                              |         
                                                     |     } while (1);
    0x00003938 blx 0x1264                            |     getrlimit ();
                                                     | label_12:
    0x0000393c ldr r3, [pc, 0x58]                    |     
    0x0000393e mov.w r2, 0x688                       |     r2 = 0x688;
    0x00003942 ldr r1, [pc, 0x58]                    |     
    0x00003944 ldr r0, [pc, 0x58]                    |     
    0x00003946 add r3, pc                            |     r3 = 0x72e2;
    0x00003948 add r1, pc                            |     r1 = 0x72ea;
    0x0000394a adds r3, 0xfc                         |     r3 += 0xfc;
    0x0000394c add r0, pc                            |     r0 = 0x72f0;
    0x0000394e blx 0x152c                            |     fcn_0000152c ();
    0x00003950 invalid                               |     
    0x00003952 movw r8, 0xfffd                       |     
    0x00003956 movt r8, 0xfffe                       |     r8 = 0xfffefffd;
    0x0000395a b 0x38f4                              |     goto label_5;
                                                     | label_18:
    0x0000395c movw r8, 0xfffd                       |     
    0x00003960 movt r8, 0xfffe                       |     r8 = 0xfffefffd;
    0x00003964 b 0x38ee                              |     goto label_6;
                                                     | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x28858 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00028858 ()                          | void fcn_00028858 (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;
    0x00028858 ldr.w r2, [pc, 0x45c]                 |     
    0x0002885c ldr.w r3, [pc, 0x45c]                 |     r3 = *(0x28cbc);
    0x00028860 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00028862 rors r0, r6                           |     __asm ("rors r0, r6");
    0x00028864 sub sp, 0x158                         |     
    0x00028866 add r2, pc                            |     r2 = 0x51522;
    0x00028868 ldr r5, [r0, 0x44]                    |     r5 = *((r0 + 0x44));
    0x0002886a mov r4, r0                            |     r4 = r0;
    0x0002886c ldr r3, [r2, r3]                      |     
    0x0002886e ldr.w r6, [pc, 0x450]                 |     
    0x00028872 ldr r3, [r3]                          |     r3 = *(0x51522);
    0x00028874 str r3, [sp, 0x154]                   |     var_154h = r3;
    0x00028876 mov.w r3, 0                           |     r3 = 0;
    0x0002887a subs r3, r5, 3                        |     r3 = r5 - 3;
    0x0002887c cmp r3, 1                             |     
    0x0002887e add r6, pc                            |     r6 = 0x51544;
                                                     |     if (r3 < 1) {
    0x00028880 bls 0x28948                           |         goto label_9;
                                                     |     }
    0x00028882 cmp r5, 2                             |     
                                                     |     if (r5 == 2) {
    0x00028884 beq.w 0x28a14                         |         goto label_10;
                                                     |     }
    0x00028888 cmp r5, 1                             |     
                                                     |     if (r5 == 1) {
    0x0002888a beq 0x288be                           |         goto label_11;
                                                     |     }
    0x0002888c ldr.w r3, [pc, 0x434]                 |     
    0x00028890 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028892 ldr r3, [r3]                          |     r3 = *(0x28cc4);
    0x00028894 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00028896 bne.w 0x289c6                         |         goto label_12;
                                                     |     }
                                                     | label_1:
    0x0002889a movs r3, 3                            |     r3 = 3;
                                                     | label_3:
    0x0002889c str r3, [r4, 0x44]                    |     *((r4 + 0x44)) = r3;
                                                     |     do {
                                                     | label_0:
    0x0002889e ldr.w r2, [pc, 0x428]                 |         
    0x000288a2 ldr.w r3, [pc, 0x418]                 |         r3 = *(0x28cbe);
    0x000288a6 add r2, pc                            |         r2 = 0x51574;
    0x000288a8 ldr r3, [r2, r3]                      |         r3 = *(0x51574);
    0x000288aa ldr r2, [r3]                          |         r2 = *(0x51574);
    0x000288ac ldr r3, [sp, 0x154]                   |         r3 = var_154h;
    0x000288ae eors r2, r3                           |         r2 ^= r3;
    0x000288b0 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x000288b4 bne.w 0x28c50                         |             goto label_13;
                                                     |         }
    0x000288b8 add sp, 0x158                         |         
    0x000288ba pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_11:
    0x000288be ldr r5, [r0, 0x48]                    |         r5 = *((r0 + 0x48));
    0x000288c0 cmp r5, 0x1b                          |         
                                                     |         if (r5 < 0x1b) {
    0x000288c2 bls 0x28964                           |             goto label_14;
                                                     |         }
                                                     | label_6:
    0x000288c4 cmp r5, 0x1c                          |         
    0x000288c6 bne 0x2889e                           |         
                                                     |     } while (r5 != 0x1c);
    0x000288c8 ldr r3, [r4, 0x68]                    |     r3 = *((r4 + 0x68));
    0x000288ca ldr r2, [r4, 0x50]                    |     r2 = *((r4 + 0x50));
    0x000288cc cmp r3, r2                            |     
                                                     |     if (r3 <= r2) {
    0x000288ce blo.w 0x28a4c                         |         goto label_15;
                                                     |     }
                                                     | label_4:
    0x000288d2 cmp r2, r3                            |     
                                                     |     if (r2 != r3) {
    0x000288d4 bne 0x2889e                           |         goto label_0;
                                                     |     }
    0x000288d6 ldr.w r3, [r4, 0x88]                  |     r3 = *((r4 + 0x88));
                                                     |     if (r3 != 0) {
    0x000288da cbz r3, 0x28942                       |         
    0x000288dc ldr r3, [r4, 0x58]                    |         r3 = *((r4 + 0x58));
    0x000288de cmp r3, 0x3f                          |         
                                                     |         if (r3 == 0x3f) {
    0x000288e0 beq 0x28942                           |             goto label_16;
                                                     |         }
    0x000288e2 add r5, sp, 0xe8                      |         r5 += var_e8h;
    0x000288e4 movs r3, 0x6c                         |         r3 = 0x6c;
    0x000288e6 mov r2, r5                            |         r2 = r5;
    0x000288e8 ldr r1, [r4, 0x74]                    |         r1 = *((r4 + 0x74));
    0x000288ea add.w r0, r4, 0x70                    |         r0 = r4 + 0x70;
    0x000288ee add r7, sp, 0x78                      |         r7 += var_78h;
    0x000288f0 bl 0x2f154                            |         fcn_0002f154 (r0, r1, r2, r3);
    0x000288f4 movs r1, 0x6e                         |         r1 = 0x6e;
    0x000288f6 mov r0, r7                            |         r0 = r7;
    0x000288f8 bl 0x3ac4                             |         fcn_00003ac4 (r0);
    0x000288fc mov r1, r5                            |         r1 = r5;
    0x000288fe add.w r5, sp, 0x7a                    |         r5 += var_7ah;
    0x00028902 mov.w r8, 1                           |         r8 = 1;
    0x00028906 movs r2, 0x6c                         |         r2 = 0x6c;
    0x00028908 mov r0, r5                            |         r0 = r5;
    0x0002890a strh.w r8, [sp, 0x78]                 |         var_78h = r8;
    0x0002890e bl 0x3a5c                             |         fcn_00003a5c (r0, r1, r2);
    0x00028912 ldrb.w r3, [sp, 0xe8]                 |         r3 = var_e8h;
    0x00028916 cmp r3, 0                             |         
                                                     |         if (r3 != 0) {
    0x00028918 bne.w 0x28b0e                         |             goto label_17;
                                                     |         }
    0x0002891a strh r1, [r7, 6]                      |         *((r7 + 6)) = r1;
    0x0002891c ldr r5, [r4, 0x34]                    |         r5 = *((r4 + 0x34));
    0x0002891e ldr r3, [r4, 8]                       |         r3 = *((r4 + 8));
    0x00028920 cmp r5, r3                            |         
                                                     |         if (r5 == r3) {
    0x00028922 beq.w 0x28b2e                         |             goto label_18;
                                                     |         }
                                                     | label_5:
    0x00028926 movs r2, 0                            |         r2 = 0;
    0x00028928 movs r1, 3                            |         r1 = 3;
    0x0002892a mov r0, r5                            |         r0 = r5;
    0x0002892c blx 0x13b4                            |         printf_chk ()
    0x00028930 movs r1, 4                            |         r1 = 4;
    0x00028932 orr r2, r0, 0x800                     |         r2 = r0 | 0x800;
    0x00028936 mov r0, r5                            |         r0 = r5;
    0x00028938 blx 0x13b4                            |         printf_chk ()
    0x0002893a ldc p8, c2, [ip, -0]!                 |         __asm ("ldc p8, c2, [ip, -0]!");
                                                     |         if (r1 != 4) {
    0x0002893e bne.w 0x28b4c                         |             goto label_19;
                                                     |         }
                                                     |     }
                                                     | label_16:
    0x00028942 movs r3, 2                            |     r3 = 2;
    0x00028944 str r3, [r4, 0x44]                    |     *((r4 + 0x44)) = r3;
    0x00028946 b 0x2889e                             |     goto label_0;
                                                     | label_9:
    0x00028948 ldr r3, [pc, 0x378]                   |     
    0x0002894a ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x0002894c ldr r3, [r3]                          |     r3 = *(0x28cc4);
    0x0002894e cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028950 beq 0x2889a                           |         goto label_1;
                                                     |     }
    0x00028952 ldr r3, [r0, 0x3c]                    |     r3 = *((r0 + 0x3c));
    0x00028954 movs r1, 2                            |     r1 = 2;
    0x00028956 ldr r2, [pc, 0x374]                   |     
    0x00028958 ldr r0, [pc, 0x374]                   |     
    0x0002895a add r2, pc                            |     r2 = 0x5162c;
    0x0002895c add r0, pc                            |     r0 = 0x51630;
    0x0002895e bl 0x2effc                            |     fcn_0002effc ();
    0x00028962 b 0x2889a                             |     goto label_1;
                                                     | label_14:
    0x00028964 ldr r3, [r0, 0x40]                    |     r3 = *((r0 + 0x40));
    0x00028966 add.w r7, r0, 0x4c                    |     r7 = r0 + 0x4c;
    0x0002896a rsb.w r2, r5, 0x1c                    |     r2 = 0x1c - r5;
    0x0002896e adds r1, r7, r5                       |     r1 = r7 + r5;
    0x00028970 str r3, [sp]                          |     *(sp) = r3;
    0x00028972 movs r3, 0                            |     r3 = 0;
    0x00028974 ldr r0, [r0, 8]                       |     r0 = *((r0 + 8));
    0x00028976 bl 0x1ad8                             |     r0 = fcn_00001ad8 ();
    0x0002897a cmp r0, 0                             |     
    0x0002897c itt eq                                |     
                                                     |     if (r0 != 0) {
    0x0002897e moveq r3, 4                           |         r3 = 4;
                                                     |     }
                                                     |     if (r0 == 0) {
    0x00028980 streq r3, [r4, 0x44]                  |         *((r4 + 0x44)) = r3;
                                                     |         goto label_20;
                                                     |     }
                                                     |     if (r0 == 0) {
                                                     | label_20:
    0x00028982 beq 0x2889e                           |         goto label_0;
                                                     |     }
                                                     |     if (r0 < 0) {
    0x00028984 blt 0x289da                           |         goto label_2;
                                                     |     }
    0x00028986 ldr r3, [r4, 0x48]                    |     r3 = *((r4 + 0x48));
    0x00028988 add r0, r3                            |     r0 += r3;
    0x0002898a cmp r0, 0x1c                          |     
    0x0002898c str r0, [r4, 0x48]                    |     *((r4 + 0x48)) = r0;
                                                     |     if (r0 > 0x1c) {
    0x0002898e bhi.w 0x28aa2                         |         goto label_21;
                                                     |     }
                                                     |     if (r0 != 0x1c) {
    0x00028992 bne 0x2889e                           |         goto label_0;
                                                     |     }
    0x00028994 mov r0, r7                            |     r0 = r7;
    0x00028996 bl 0x2f1d8                            |     fcn_0002f1d8 (r0);
    0x0002899a ldr r1, [r4, 0x4c]                    |     r1 = *((r4 + 0x4c));
    0x0002899c cmp r1, 1                             |     
                                                     |     if (r1 == 1) {
    0x0002899e beq.w 0x28ade                         |         goto label_22;
                                                     |     }
    0x000289a2 ldr r3, [pc, 0x320]                   |     
    0x000289a4 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x000289a6 ldr r3, [r3]                          |     r3 = *(0x28cc6);
    0x000289a8 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000289aa beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x000289ae movs r0, 1                            |     r0 = 1;
    0x000289b0 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x000289b2 ldr r2, [pc, 0x320]                   |     
    0x000289b4 strd r1, r0, [sp]                     |     __asm ("strd r1, r0, [sp]");
    0x000289b8 movs r1, 2                            |     r1 = 2;
    0x000289ba ldr r0, [pc, 0x31c]                   |     
    0x000289bc add r2, pc                            |     r2 = 0x51696;
    0x000289be add r0, pc                            |     r0 = 0x5169c;
    0x000289c0 bl 0x2effc                            |     fcn_0002effc ();
    0x000289c4 b 0x2889a                             |     goto label_1;
                                                     | label_12:
    0x000289c6 ldr r3, [r0, 0x3c]                    |     r3 = *((r0 + 0x3c));
    0x000289c8 movs r1, 2                            |     r1 = 2;
    0x000289ca ldr r2, [pc, 0x310]                   |     
    0x000289cc ldr r0, [pc, 0x310]                   |     
    0x000289ce str r5, [sp]                          |     *(sp) = r5;
    0x000289d0 add r2, pc                            |     r2 = 0x516b2;
    0x000289d2 add r0, pc                            |     r0 = 0x516b6;
    0x000289d4 bl 0x2effc                            |     fcn_0002effc ();
    0x000289d8 b 0x2889a                             |     goto label_1;
                                                     | label_2:
    0x000289da blx 0x139c                            |     r0 = memset (r0, r1, r2);
    0x000289de ldr r5, [r0]                          |     r5 = *(r0);
    0x000289e0 cmp r5, 4                             |     
    0x000289e2 it ne                                 |     
                                                     |     if (r5 == 4) {
    0x000289e4 cmpne r5, 0xb                         |         __asm ("cmpne r5, 0xb");
                                                     |         goto label_23;
                                                     |     }
                                                     |     if (r5 == 4) {
                                                     | label_23:
    0x000289e6 beq.w 0x2889e                         |         goto label_0;
                                                     |     }
    0x000289ea ldr r3, [pc, 0x2d8]                   |     
    0x000289ec ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x000289ee ldr r3, [r3]                          |     r3 = *(0x28cc6);
    0x000289f0 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x000289f2 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x000289f6 mov r0, r5                            |     r0 = r5;
    0x000289f8 ldr r6, [r4, 0x3c]                    |     r6 = *((r4 + 0x3c));
    0x000289fa blx 0x1344                            |     fcn_00001344 ();
    0x000289fe ldr r2, [pc, 0x2e4]                   |     
    0x00028a00 movs r1, 2                            |     r1 = 2;
    0x00028a02 str r0, [sp, 4]                       |     var_4h = r0;
    0x00028a04 mov r3, r6                            |     r3 = r6;
    0x00028a06 ldr r0, [pc, 0x2e0]                   |     
    0x00028a08 add r2, pc                            |     r2 = 0x516f2;
    0x00028a0a str r5, [sp]                          |     *(sp) = r5;
    0x00028a0c add r0, pc                            |     r0 = 0x516fa;
    0x00028a0e bl 0x2effc                            |     fcn_0002effc ();
    0x00028a12 b 0x2889a                             |     goto label_1;
                                                     | label_10:
    0x00028a14 ldr r2, [r0, 0x40]                    |     r2 = *((r0 + 0x40));
    0x00028a16 movs r3, 0                            |     r3 = 0;
    0x00028a18 add r1, sp, 0xe8                      |     r1 += var_e8h;
    0x00028a1a str r2, [sp]                          |     *(sp) = r2;
    0x00028a1c movs r2, 4                            |     r2 = 4;
    0x00028a1e ldr r0, [r0, 8]                       |     r0 = *((r0 + 8));
    0x00028a20 bl 0x1ad8                             |     r0 = fcn_00001ad8 ();
    0x00028a24 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00028a26 beq 0x28a48                           |         goto label_24;
                                                     |     }
                                                     |     if (r0 < 0) {
    0x00028a28 blt 0x289da                           |         goto label_2;
                                                     |     }
    0x00028a2a ldr r3, [pc, 0x298]                   |     
    0x00028a2c ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028a2e ldr r3, [r3]                          |     r3 = *(0x28cc6);
    0x00028a30 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028a32 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028a36 ldr r2, [pc, 0x2b4]                   |     
    0x00028a38 mov r1, r5                            |     r1 = r5;
    0x00028a3a ldr r0, [pc, 0x2b4]                   |     
    0x00028a3c ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028a3e add r2, pc                            |     r2 = 0x51730;
    0x00028a40 add r0, pc                            |     r0 = 0x51736;
    0x00028a42 bl 0x2effc                            |     fcn_0002effc ();
    0x00028a46 b 0x2889a                             |     goto label_1;
                                                     |     do {
                                                     | label_24:
    0x00028a48 movs r3, 4                            |         r3 = 4;
    0x00028a4a b 0x2889c                             |         goto label_3;
                                                     | label_15:
    0x00028a4c subs r0, r2, r3                       |         r0 = r2 - r3;
    0x00028a4e ldr r2, [r4, 0x6c]                    |         r2 = *((r4 + 0x6c));
    0x00028a50 add r7, sp, 0x20                      |         r7 += var_20h;
    0x00028a52 str r5, [r7, 0x14]                    |         var_14h = r5;
    0x00028a54 adds r1, r2, r3                       |         r1 = r2 + r3;
    0x00028a56 add r3, sp, 0x18                      |         r3 += var_18h;
    0x00028a58 str r3, [r7, 8]                       |         var_8h_2 = r3;
    0x00028a5a movs r3, 1                            |         r3 = 1;
    0x00028a5c movs r2, 0                            |         r2 = 0;
    0x00028a5e str r3, [r7, 0xc]                     |         var_ch = r3;
    0x00028a60 add r3, sp, 0xe8                      |         r3 += var_e8h;
    0x00028a62 strd r1, r0, [sp, 0x18]               |         __asm ("strd r1, r0, [var_18h]");
    0x00028a66 strd r2, r2, [r7]                     |         __asm ("strd r2, r2, [r7]");
    0x00028a6a mov r1, r7                            |         r1 = r7;
    0x00028a6c ldr r0, [r4, 8]                       |         r0 = *((r4 + 8));
    0x00028a6e str r2, [r7, 0x18]                    |         var_18h_3 = r2;
    0x00028a70 str r3, [r7, 0x10]                    |         var_10h = r3;
    0x00028a72 blx 0x147c                            |         r0 = fcn_0000147c ();
    0x00028a76 cmp r0, 0                             |         
    0x00028a78 beq 0x28a48                           |         
                                                     |     } while (r0 == 0);
                                                     |     if (r0 < 0) {
    0x00028a7a blt 0x289da                           |         goto label_2;
                                                     |     }
    0x00028a7c ldr r3, [r4, 0x68]                    |     r3 = *((r4 + 0x68));
    0x00028a7e ldr r2, [r4, 0x50]                    |     r2 = *((r4 + 0x50));
    0x00028a80 add r3, r0                            |     r3 += r0;
    0x00028a82 cmp r3, r2                            |     
    0x00028a84 str r3, [r4, 0x68]                    |     *((r4 + 0x68)) = r3;
                                                     |     if (r3 > r2) {
    0x00028a86 bhi 0x28ac0                           |         goto label_25;
                                                     |     }
    0x00028a88 ldr r1, [r7, 0x14]                    |     r1 = var_14h;
    0x00028a8a cmp r1, 0xb                           |     
                                                     |     if (r1 >= 0xb) {
    0x00028a8c bls 0x28a98                           |         
    0x00028a8e ldr r1, [r7, 0x10]                    |         r1 = var_10h;
                                                     |         if (r1 == 0) {
    0x00028a90 cbz r1, 0x28a98                       |             goto label_7;
                                                     |         }
    0x00028a92 ldr r0, [r1, 4]                       |         r0 = *((r1 + 4));
    0x00028a94 cmp r0, 1                             |         
                                                     |         if (r0 == 1) {
    0x00028a96 beq 0x28b96                           |             goto label_26;
                                                     |         }
                                                     |     }
                                                     | label_7:
    0x00028a98 ldr r1, [r4, 0x48]                    |     r1 = *((r4 + 0x48));
    0x00028a9a cmp r1, 0x1c                          |     
                                                     |     if (r1 == 0x1c) {
    0x00028a9c beq.w 0x288d2                         |         goto label_4;
                                                     |     }
    0x00028aa0 b 0x2889e                             |     goto label_0;
                                                     | label_21:
    0x00028aa2 ldr r3, [pc, 0x220]                   |     
    0x00028aa4 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028aa6 ldr r3, [r3]                          |     r3 = *(0x28cc6);
    0x00028aa8 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028aaa beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028aae ldr r2, [pc, 0x244]                   |     
    0x00028ab0 movs r1, 2                            |     r1 = 2;
    0x00028ab2 ldr r0, [pc, 0x244]                   |     
    0x00028ab4 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028ab6 add r2, pc                            |     r2 = 0x517b0;
    0x00028ab8 add r0, pc                            |     r0 = 0x517b6;
    0x00028aba bl 0x2effc                            |     fcn_0002effc ();
    0x00028abe b 0x2889a                             |     goto label_1;
                                                     | label_25:
    0x00028ac0 ldr r3, [pc, 0x200]                   |     
    0x00028ac2 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028ac4 ldr r3, [r3]                          |     r3 = *(0x28cc4);
    0x00028ac6 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028ac8 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028acc ldr r2, [pc, 0x22c]                   |     
    0x00028ace movs r1, 2                            |     r1 = 2;
    0x00028ad0 ldr r0, [pc, 0x22c]                   |     
    0x00028ad2 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028ad4 add r2, pc                            |     r2 = 0x517d4;
    0x00028ad6 add r0, pc                            |     r0 = 0x517da;
    0x00028ad8 bl 0x2effc                            |     fcn_0002effc ();
    0x00028adc b 0x2889a                             |     goto label_1;
                                                     | label_22:
    0x00028ade ldr r7, [r4, 0x50]                    |     r7 = *((r4 + 0x50));
    0x00028ae0 movw r3, 0x1170                       |     
    0x00028ae4 movt r3, 1                            |     r3 = 0x11170;
    0x00028ae8 cmp r7, r3                            |     
                                                     |     if (r7 < r3) {
    0x00028aea bls 0x28b7c                           |         goto label_27;
                                                     |     }
    0x00028aec ldr r3, [pc, 0x1d4]                   |     
    0x00028aee ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028af0 ldr r3, [r3]                          |     r3 = *(0x28cc4);
    0x00028af2 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028af4 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028af8 ldr r2, [pc, 0x208]                   |     
    0x00028afa movs r1, 2                            |     r1 = 2;
    0x00028afc ldr r0, [pc, 0x208]                   |     
    0x00028afe ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028b00 add r2, pc                            |     r2 = 0x51808;
    0x00028b02 strd r7, r7, [sp]                     |     __asm ("strd r7, r7, [sp]");
    0x00028b06 add r0, pc                            |     r0 = 0x51812;
    0x00028b08 bl 0x2effc                            |     fcn_0002effc ();
    0x00028b0c b 0x2889a                             |     goto label_1;
                                                     | label_17:
    0x00028b0e movs r2, 0                            |     r2 = 0;
    0x00028b10 mov r1, r8                            |     r1 = r8;
    0x00028b12 mov r0, r8                            |     r0 = r8;
    0x00028b14 blx 0x14a4                            |     r0 = strncmp (r0, r1, r2);
    0x00028b18 cmp r0, 0                             |     
    0x00028b1a str r0, [r4, 0x34]                    |     *((r4 + 0x34)) = r0;
                                                     |     if (r0 < 0) {
    0x00028b1c blt 0x28bd6                           |         goto label_28;
                                                     |     }
    0x00028b1e mov r1, r7                            |     r1 = r7;
    0x00028b20 movs r2, 0x6e                         |     r2 = 0x6e;
    0x00028b22 blx 0x1514                            |     r0 = fcn_00001514 ();
    0x00028b26 cmp r0, 0                             |     
                                                     |     if (r0 < 0) {
    0x00028b28 blt 0x28c10                           |         goto label_29;
                                                     |     }
    0x00028b2a ldr r5, [r4, 0x34]                    |     r5 = *((r4 + 0x34));
    0x00028b2c b 0x28926                             |     goto label_5;
                                                     | label_18:
    0x00028b2e ldr r3, [pc, 0x194]                   |     
    0x00028b30 ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028b32 ldr r3, [r3]                          |     r3 = *(0x28cc6);
    0x00028b34 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028b36 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028b3a ldr r2, [pc, 0x1d0]                   |     
    0x00028b3c movs r1, 2                            |     r1 = 2;
    0x00028b3e ldr r0, [pc, 0x1d0]                   |     
    0x00028b40 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028b42 add r2, pc                            |     r2 = 0x51854;
    0x00028b44 add r0, pc                            |     r0 = 0x5185a;
    0x00028b46 bl 0x2effc                            |     fcn_0002effc ();
    0x00028b4a b 0x2889a                             |     goto label_1;
                                                     | label_19:
    0x00028b4c ldr r3, [pc, 0x174]                   |     
    0x00028b4e ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x00028b50 ldr r3, [r3]                          |     r3 = *(0x28cc4);
    0x00028b52 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028b54 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028b58 blx 0x139c                            |     r0 = memset (r0, r1, r2);
    0x00028b5c ldr r5, [r0]                          |     r5 = *(r0);
    0x00028b5e ldr r6, [r4, 0x3c]                    |     r6 = *((r4 + 0x3c));
    0x00028b60 mov r0, r5                            |     r0 = r5;
    0x00028b62 blx 0x1344                            |     fcn_00001344 ();
    0x00028b66 ldr r2, [pc, 0x1ac]                   |     
    0x00028b68 mov r3, r6                            |     r3 = r6;
    0x00028b6a strd r5, r0, [sp]                     |     __asm ("strd r5, r0, [sp]");
    0x00028b6e movs r1, 2                            |     r1 = 2;
    0x00028b70 ldr r0, [pc, 0x1a4]                   |     
    0x00028b72 add r2, pc                            |     r2 = 0x5188c;
    0x00028b74 add r0, pc                            |     r0 = 0x51890;
    0x00028b76 bl 0x2effc                            |     fcn_0002effc ();
    0x00028b7a b 0x2889a                             |     goto label_1;
                                                     | label_27:
    0x00028b7c adds r1, r7, 5                        |     r1 = r7 + 5;
    0x00028b7e movs r0, 1                            |     r0 = 1;
    0x00028b80 blx 0x1124                            |     fcn_00001124 ();
    0x00028b84 str r0, [r4, 0x6c]                    |     *((r4 + 0x6c)) = r0;
    0x00028b86 cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00028b88 beq.w 0x28ca8                         |         goto label_30;
                                                     |     }
    0x00028b8c add r7, r0                            |     r7 += r0;
    0x00028b8e ldr r5, [r4, 0x48]                    |     r5 = *((r4 + 0x48));
    0x00028b90 strd r0, r7, [r4, 0x70]               |     __asm ("strd r0, r7, [r4, 0x70]");
    0x00028b94 b 0x288c4                             |     goto label_6;
                                                     | label_26:
    0x00028b96 ldr r0, [r1, 8]                       |     r0 = *((r1 + 8));
    0x00028b98 cmp r0, 1                             |     
                                                     |     if (r0 != 1) {
    0x00028b9a bne.w 0x28a98                         |         goto label_7;
                                                     |     }
    0x00028b9c add r7, sp, 0x1f4                     |     r7 = sp + 0x1f4;
    0x00028b9e ldr r1, [r1, 0xc]                     |     r1 = *((r1 + 0xc));
    0x00028ba0 cmp r3, r2                            |     
    0x00028ba2 str r1, [r4, 0x34]                    |     *((r4 + 0x34)) = r1;
                                                     |     if (r3 >= r2) {
    0x00028ba4 bhs.w 0x28a98                         |         goto label_7;
                                                     |     }
    0x00028ba8 ldr r0, [pc, 0x118]                   |     
    0x00028baa ldr r0, [r6, r0]                      |     r0 = *((r6 + r0));
    0x00028bac ldr r0, [r0]                          |     r0 = *(0x28cc4);
    0x00028bae cmp r0, 0                             |     
                                                     |     if (r0 == 0) {
    0x00028bb0 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028bb4 ldr r0, [r4, 0xc]                     |     r0 = *((r4 + 0xc));
    0x00028bb6 add.w r5, r4, 0x10                    |     r5 = r4 + 0x10;
    0x00028bba strd r3, r2, [sp, 0xc]                |     __asm ("strd r3, r2, [var_8h_3]");
    0x00028bbe str r5, [sp, 4]                       |     var_4h = r5;
    0x00028bc0 ldr r2, [pc, 0x158]                   |     
    0x00028bc2 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028bc4 str r0, [sp]                          |     *(sp) = r0;
    0x00028bc6 ldr r0, [pc, 0x158]                   |     
    0x00028bc8 add r2, pc                            |     r2 = 0x518e8;
    0x00028bca str r1, [sp, 8]                       |     var_8h = r1;
    0x00028bcc movs r1, 6                            |     r1 = 6;
    0x00028bce add r0, pc                            |     r0 = 0x518f4;
    0x00028bd0 bl 0x2effc                            |     fcn_0002effc ();
    0x00028bd4 b 0x2889a                             |     goto label_1;
                                                     | label_28:
    0x00028bd6 ldr r3, [pc, 0x14c]                   |     
    0x00028bd8 movs r1, 0xfa                         |     r1 = 0xfa;
    0x00028bda add r3, pc                            |     r3 = 0x51904;
    0x00028bdc ldr r0, [r3, 0x14]                    |     r0 = *(0x51918);
    0x00028bde adds r2, r0, 1                        |     r2 = r0 + 1;
    0x00028be0 str r2, [r3, 0x14]                    |     *((r3 + 0x14)) = r2;
    0x00028be2 bl 0x342c4                            |     fcn_000342c4 (r0, r1);
    0x00028be6 cmp r1, 0                             |     
                                                     |     if (r1 != 0) {
    0x00028be8 bne.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028bec blx 0x139c                            |     r0 = memset (r0, r1, r2);
    0x00028bf0 ldr r5, [r0]                          |     r5 = *(r0);
    0x00028bf2 mov r0, r5                            |     r0 = r5;
    0x00028bf4 blx 0x1344                            |     fcn_00001344 ();
    0x00028bf8 ldr r3, [pc, 0x12c]                   |     
    0x00028bfa movs r1, 4                            |     r1 = 4;
    0x00028bfc strd r5, r0, [sp]                     |     __asm ("strd r5, r0, [sp]");
    0x00028c00 ldr r2, [pc, 0x128]                   |     
    0x00028c02 ldr r0, [pc, 0x12c]                   |     
    0x00028c04 add r3, pc                            |     r3 = 0x51930;
    0x00028c06 add r2, pc                            |     r2 = 0x51936;
    0x00028c08 add r0, pc                            |     r0 = 0x5193e;
    0x00028c0a bl 0x2effc                            |     fcn_0002effc ();
    0x00028c0e b 0x2889a                             |     goto label_1;
                                                     | label_29:
    0x00028c10 ldr r3, [pc, 0xb0]                    |     r3 = *(0x28cc4);
    0x00028c12 ldr r7, [r6, r3]                      |     r7 = *((r6 + r3));
    0x00028c14 ldr r3, [r7]                          |     r3 = *(r7);
    0x00028c16 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00028c18 bne 0x28c80                           |         goto label_31;
                                                     |     }
                                                     | label_8:
    0x00028c1a add r6, sp, 0x20                      |     r6 += var_20h;
    0x00028c1c mov r0, r5                            |     r0 = r5;
    0x00028c1e mov r1, r6                            |     r1 = r6;
    0x00028c20 blx 0x1368                            |     r0 = fcn_00001368 ();
    0x00028c24 cmp r0, 0                             |     
    0x00028c26 ldr r3, [r7]                          |     r3 = *(r7);
                                                     |     if (r0 < 0) {
    0x00028c28 blt 0x28c54                           |         goto label_32;
                                                     |     }
    0x00028c2a cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028c2c beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028c30 ldrd r2, r1, [r6, 0x18]               |     __asm ("ldrd r2, r1, [var_18h_3]");
    0x00028c34 ldr r0, [r6, 0x10]                    |     r0 = var_10h;
    0x00028c36 str r5, [sp]                          |     *(sp) = r5;
    0x00028c38 ldr r3, [r4, 0x3c]                    |     r3 = *((r4 + 0x3c));
    0x00028c3a strd r2, r1, [sp, 8]                  |     __asm ("strd r2, r1, [var_8h]");
    0x00028c3e movs r1, 2                            |     r1 = 2;
    0x00028c40 str r0, [sp, 4]                       |     var_4h = r0;
    0x00028c42 ldr r2, [pc, 0xf0]                    |     
    0x00028c44 ldr r0, [pc, 0xf0]                    |     
    0x00028c46 add r2, pc                            |     r2 = 0x51980;
    0x00028c48 add r0, pc                            |     r0 = 0x51984;
    0x00028c4a bl 0x2effc                            |     fcn_0002effc ();
    0x00028c4e b 0x2889a                             |     goto label_1;
                                                     | label_13:
    0x00028c50 blx 0x1264                            |     getrlimit ();
                                                     | label_32:
    0x00028c54 cmp r3, 0                             |     
                                                     |     if (r3 == 0) {
    0x00028c56 beq.w 0x2889a                         |         goto label_1;
                                                     |     }
    0x00028c5a blx 0x139c                            |     r0 = memset (r0, r1, r2);
    0x00028c5e ldr r6, [r0]                          |     r6 = *(r0);
    0x00028c60 ldr r7, [r4, 0x3c]                    |     r7 = *((r4 + 0x3c));
    0x00028c62 mov r0, r6                            |     r0 = r6;
    0x00028c64 blx 0x1344                            |     fcn_00001344 ();
    0x00028c68 ldr r2, [pc, 0xd0]                    |     
    0x00028c6a mov r3, r7                            |     r3 = r7;
    0x00028c6c str r0, [sp, 8]                       |     var_8h = r0;
    0x00028c6e movs r1, 2                            |     r1 = 2;
    0x00028c70 ldr r0, [pc, 0xcc]                    |     
    0x00028c72 add r2, pc                            |     r2 = 0x519b2;
    0x00028c74 strd r5, r6, [sp]                     |     __asm ("strd r5, r6, [sp]");
    0x00028c78 add r0, pc                            |     r0 = 0x519bc;
    0x00028c7a bl 0x2effc                            |     fcn_0002effc ();
    0x00028c7e b 0x2889a                             |     goto label_1;
                                                     | label_31:
    0x00028c80 blx 0x139c                            |     r0 = memset (r0, r1, r2);
    0x00028c84 ldr r6, [r0]                          |     r6 = *(r0);
    0x00028c86 ldr.w r8, [r4, 0x3c]                  |     r8 = *((r4 + 0x3c));
    0x00028c8a mov r0, r6                            |     r0 = r6;
    0x00028c8c blx 0x1344                            |     fcn_00001344 ();
    0x00028c90 ldr r2, [pc, 0xb0]                    |     
    0x00028c92 mov r3, r8                            |     r3 = r8;
    0x00028c94 str r0, [sp, 8]                       |     var_8h = r0;
    0x00028c96 movs r1, 2                            |     r1 = 2;
    0x00028c98 ldr r0, [pc, 0xac]                    |     
    0x00028c9a add r2, pc                            |     r2 = 0x519e2;
    0x00028c9c str r6, [sp, 4]                       |     var_4h = r6;
    0x00028c9e str r5, [sp]                          |     *(sp) = r5;
    0x00028ca0 add r0, pc                            |     r0 = 0x519ec;
    0x00028ca2 bl 0x2effc                            |     fcn_0002effc ();
    0x00028ca6 b 0x28c1a                             |     goto label_8;
                                                     | label_30:
    0x00028ca8 ldr r0, [pc, 0xa0]                    |     
    0x00028caa add r0, pc                            |     r0 = 0x519fa;
    0x00028cac bl 0x26078                            |     fcn_00026078 (r0);
    0x00028cb0 movs r3, 3                            |     r3 = 3;
    0x00028cb2 str r3, [r4, 0x44]                    |     *((r4 + 0x44)) = r3;
    0x00028cb4 b 0x2889e                             |     goto label_0;
                                                     | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x29370 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00029370 ()                  | void fcn_00029370 (int16_t arg1) {
                                             |     int32_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     r0 = arg1;
    0x00029370 push {r4, r5, r6, r7, lr}     |     
    0x00029372 movs r2, 0                    |     r2 = 0;
    0x00029374 ldr r7, [pc, 0xdc]            |     
    0x00029376 sub sp, 0xc                   |     
    0x00029378 movs r1, 3                    |     r1 = 3;
    0x0002937a mov r5, r0                    |     r5 = r0;
    0x0002937c blx 0x13b4                    |     printf_chk ()
    0x00029380 movs r1, 4                    |     r1 = 4;
    0x00029382 orr r2, r0, 0x800             |     r2 = r0 | 0x800;
    0x00029386 mov r0, r5                    |     r0 = r5;
    0x00029388 add r7, pc                    |     r7 = 0x527e0;
    0x0002938a blx 0x13b4                    |     r0 = printf_chk ()
                                             |     if (r0 != 0) {
    0x0002938e cbnz r0, 0x293f2              |         goto label_1;
                                             |     }
    0x00029390 mov r4, r0                    |     r4 = r0;
    0x00029392 movs r1, 0x64                 |     r1 = 0x64;
    0x00029394 mov r0, r5                    |     r0 = r5;
    0x00029396 blx 0x144c                    |     r0 = fcn_0000144c ();
    0x0002939a mov r6, r0                    |     r6 = r0;
                                             |     if (r0 != 0) {
    0x0002939c cbnz r0, 0x293ca              |         goto label_2;
                                             |     }
    0x0002939e ldr r1, [pc, 0xb8]            |     
    0x000293a0 mov r3, r0                    |     r3 = r0;
    0x000293a2 mov r2, r0                    |     r2 = r0;
    0x000293a4 mov r0, r5                    |     r0 = r5;
    0x000293a6 add r1, pc                    |     r1 = 0x52804;
    0x000293a8 bl 0x1ad4                     |     r0 = fcn_00001ad4 (r0, r1, r2);
    0x000293ac cmp r0, 0                     |     
                                             |     if (r0 != 0) {
    0x000293ae bne 0x2942c                   |         goto label_3;
                                             |     }
    0x000293b0 ldr r3, [pc, 0xa8]            |     
    0x000293b2 ldr r3, [r7, r3]              |     r3 = *((r7 + r3));
    0x000293b4 ldr r3, [r3]                  |     r3 = *(0x2945c);
    0x000293b6 cbnz r3, 0x2941a              |     
                                             |     while (1) {
    0x000293b8 ldr r3, [pc, 0xa4]            |         
    0x000293ba movs r0, 1                    |         r0 = 1;
    0x000293bc add r3, pc                    |         
    0x000293be add.w r3, r3, 0x3000          |         r3 = 0x55820;
    0x000293c2 str.w r5, [r3, 0x868]         |         __asm ("str.w r5, aav.0x000000ff");
                                             | label_0:
    0x000293c6 add sp, 0xc                   |         
    0x000293c8 pop {r4, r5, r6, r7, pc}      |         
                                             | label_2:
    0x000293ca blx 0x139c                    |         r0 = memset (r0, r1, r2);
    0x000293ce ldr r5, [r0]                  |         r5 = *(r0);
    0x000293d0 mov r0, r5                    |         r0 = r5;
    0x000293d2 blx 0x1344                    |         fcn_00001344 ();
    0x000293d6 ldr r3, [pc, 0x8c]            |         
    0x000293d8 movs r1, 4                    |         r1 = 4;
    0x000293da strd r5, r0, [sp]             |         __asm ("strd r5, r0, [sp]");
    0x000293de ldr r2, [pc, 0x88]            |         
    0x000293e0 ldr r0, [pc, 0x88]            |         
    0x000293e2 add r3, pc                    |         r3 = 0x5284c;
    0x000293e4 add r2, pc                    |         r2 = 0x52852;
    0x000293e6 add r0, pc                    |         r0 = 0x52856;
    0x000293e8 bl 0x2effc                    |         fcn_0002effc ();
    0x000293ec mov r0, r4                    |         r0 = r4;
    0x000293ee add sp, 0xc                   |         
    0x000293f0 pop {r4, r5, r6, r7, pc}      |         
                                             | label_1:
    0x000293f2 blx 0x139c                    |         r0 = memset (r0, r1, r2);
    0x000293f6 ldr r4, [r0]                  |         r4 = *(r0);
    0x000293f8 mov r0, r4                    |         r0 = r4;
    0x000293fa blx 0x1344                    |         fcn_00001344 ();
    0x000293fe ldr r3, [pc, 0x70]            |         
    0x00029400 movs r1, 4                    |         r1 = 4;
    0x00029402 strd r4, r0, [sp]             |         __asm ("strd r4, r0, [sp]");
    0x00029406 ldr r2, [pc, 0x6c]            |         
    0x00029408 ldr r0, [pc, 0x6c]            |         
    0x0002940a add r3, pc                    |         r3 = 0x52880;
    0x0002940c add r2, pc                    |         r2 = 0x52886;
    0x0002940e add r0, pc                    |         r0 = 0x5288a;
    0x00029410 bl 0x2effc                    |         fcn_0002effc ();
    0x00029414 movs r0, 0                    |         r0 = 0;
    0x00029416 add sp, 0xc                   |         
    0x00029418 pop {r4, r5, r6, r7, pc}      |         
    0x0002941a ldr r2, [pc, 0x60]            |         
    0x0002941c mov r3, r5                    |         r3 = r5;
    0x0002941e ldr r0, [pc, 0x60]            |         
    0x00029420 movs r1, 5                    |         r1 = 5;
    0x00029422 add r2, pc                    |         r2 = 0x528a4;
    0x00029424 add r0, pc                    |         r0 = 0x528aa;
    0x00029426 bl 0x2effc                    |         fcn_0002effc ();
    0x0002942a b 0x293b8                     |         
                                             |     }
                                             | label_3:
    0x0002942c blx 0x139c                    |     r0 = memset (r0, r1, r2);
    0x00029430 ldr r4, [r0]                  |     r4 = *(r0);
    0x00029432 mov r0, r4                    |     r0 = r4;
    0x00029434 blx 0x1344                    |     fcn_00001344 ();
    0x00029438 ldr r3, [pc, 0x48]            |     
    0x0002943a movs r1, 4                    |     r1 = 4;
    0x0002943c strd r4, r0, [sp]             |     __asm ("strd r4, r0, [sp]");
    0x00029440 ldr r2, [pc, 0x44]            |     
    0x00029442 ldr r0, [pc, 0x48]            |     
    0x00029444 add r3, pc                    |     r3 = 0x528cc;
    0x00029446 add r2, pc                    |     r2 = 0x528d2;
    0x00029448 add r0, pc                    |     r0 = 0x528da;
    0x0002944a bl 0x2effc                    |     fcn_0002effc ();
    0x0002944e mov r0, r6                    |     r0 = r6;
    0x00029450 b 0x293c6                     |     goto label_0;
                                             | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/sbin/mdnsd @ 0x2fac0 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.0002fac0 ()                                  | void fcn_0002fac0 (int16_t arg_a0h, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_4h;
                                                             |     int16_t var_8h;
                                                             |     int16_t var_ch;
                                                             |     int16_t var_10h;
                                                             |     int16_t var_14h;
                                                             |     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_2;
                                                             |     int16_t var_7ch;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
                                                             |     r3 = arg4;
    0x0002fac0 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x0002fac4 mov r6, r2                                    |     r6 = r2;
    0x0002fac6 ldr r2, [pc, 0x248]                           |     
    0x0002fac8 mov r7, r3                                    |     r7 = r3;
    0x0002faca sub sp, 0x84                                  |     
    0x0002facc mov r5, r1                                    |     r5 = r1;
    0x0002face ldr r3, [pc, 0x244]                           |     r3 = *(0x2fd16);
    0x0002fad0 add r1, sp, 0x28                              |     r1 += var_28h;
    0x0002fad2 add r2, pc                                    |     r2 = 0x5f7e8;
    0x0002fad4 ldr.w r8, [sp, 0xa0]                          |     r8 = *(arg_a0h);
    0x0002fad8 ldr r3, [r2, r3]                              |     
    0x0002fada movs r2, 0x1c                                 |     r2 = 0x1c;
    0x0002fadc ldr r3, [r3]                                  |     r3 = imp._ITM_deregisterTMCloneTable;
    0x0002fade str r3, [sp, 0x7c]                            |     var_7ch = r3;
    0x0002fae0 mov.w r3, 0                                   |     r3 = 0;
    0x0002fae4 mov.w r3, 0x4000                              |     r3 = 0x4000;
    0x0002fae8 strd r2, r3, [sp, 8]                          |     __asm ("strd r2, r3, [var_8h]");
    0x0002faec add r2, sp, 8                                 |     r2 += var_8h;
    0x0002faee blx 0x12c4                                    |     r0 = getsockopt ();
    0x0002faf2 subs r4, r0, 0                                |     r4 = r0 - 0;
                                                             |     if (r4 < r0) {
    0x0002faf4 blt.w 0x2fc20                                 |         goto label_5;
                                                             |     }
    0x0002faf8 mov.w r2, 0x800                               |     r2 = 0x800;
    0x0002fafc movs r1, 4                                    |     r1 = 4;
    0x0002fafe blx 0x13b4                                    |     r0 = printf_chk ()
    0x0002fb02 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0002fb04 blt.w 0x2fc34                                 |         goto label_6;
                                                             |     }
    0x0002fb08 mov.w sb, 4                                   |     sb = 4;
    0x0002fb0c add r3, sp, 0xc                               |     r3 += var_ch;
    0x0002fb0e movs r2, 0x19                                 |     r2 = 0x19;
    0x0002fb10 movs r1, 6                                    |     r1 = 6;
    0x0002fb12 mov r0, r4                                    |     r0 = r4;
    0x0002fb14 str.w sb, [sp]                                |     __asm ("str.w sb, [sp]");
    0x0002fb18 blx 0x116c                                    |     r0 = fcn_0000116c ();
    0x0002fb1c cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x0002fb1e blt.w 0x2fc80                                 |         goto label_7;
                                                             |     }
    0x0002fb22 ldrh.w r0, [sp, 0x28]                         |     r0 = var_28h;
    0x0002fb26 cmp r0, 0xa                                   |     
                                                             |     if (r0 != 0xa) {
    0x0002fb28 beq 0x2fbb8                                   |         
    0x0002fb2a cmp r0, 2                                     |         
                                                             |         if (r0 != 2) {
    0x0002fb2c bne 0x2fc06                                   |             goto label_8;
                                                             |         }
    0x0002fb2e ldr r3, [sp, 0x2c]                            |         r3 = offset;
    0x0002fb30 add r5, sp, 0x44                              |         r5 += whence;
    0x0002fb32 mov r2, r5                                    |         r2 = r5;
    0x0002fb34 add r1, sp, 0x2c                              |         r1 += offset;
    0x0002fb36 str.w sb, [sp, 0x14]                          |         __asm ("str.w sb, [var_14h]");
    0x0002fb3a str r3, [sp, 0x18]                            |         var_18h = r3;
    0x0002fb3c ldrh.w r3, [sp, 0x2a]                         |         r3 = var_2ah;
    0x0002fb40 strh.w r3, [sp, 0x10]                         |         var_10h = r3;
    0x0002fb44 movs r3, 0x2f                                 |         r3 = 0x2f;
    0x0002fb46 blx 0x1498                                    |         fseek (r0, r1, r2);
    0x0002fb4a ldrh.w sb, [sp, 0x10]                         |         sb = var_10h;
    0x0002fb4e cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0002fb50 beq 0x2fc52                                   |             goto label_9;
                                                             |         }
                                                             | label_0:
    0x0002fb52 mov r0, r5                                    |         r0 = r5;
    0x0002fb54 blx 0x1390                                    |         fcntl ();
    0x0002fb58 ldr r3, [pc, 0x1bc]                           |         
    0x0002fb5a rev16.w r1, sb                                |         __asm ("rev16.w r1, sb");
    0x0002fb5e uxth r1, r1                                   |         r1 = (int16_t) r1;
    0x0002fb60 mov ip, r0                                    |         
    0x0002fb62 adds r0, r5, r0                               |         r0 = r5 + r0;
    0x0002fb64 str r1, [sp, 4]                               |         var_4h = r1;
    0x0002fb66 add r3, pc                                    |         r3 = 0x5f882;
    0x0002fb68 movs r1, 0x25                                 |         r1 = 0x25;
    0x0002fb6a str r3, [sp]                                  |         *(sp) = r3;
    0x0002fb6c movs r2, 1                                    |         r2 = 1;
    0x0002fb6e strb.w r1, [r5, ip]                           |         *((r5 + ip)) = r1;
    0x0002fb72 mov.w r3, -1                                  |         r3 = -1;
    0x0002fb76 movs r1, 6                                    |         r1 = 6;
    0x0002fb78 adds r0, 1                                    |         r0++;
    0x0002fb7a blx 0x1520                                    |         fcn_00001520 ();
    0x0002fb7e mov r0, r6                                    |         r0 = r6;
    0x0002fb80 mov r1, r4                                    |         r1 = r4;
    0x0002fb82 bl 0x317c                                     |         r0 = fcn_0000317c (r0, r1);
    0x0002fb86 mov r6, r0                                    |         r6 = r0;
    0x0002fb88 cmp r0, 0                                     |         
                                                             |         if (r0 == 0) {
    0x0002fb8a beq.w 0x2fcd6                                 |             goto label_10;
                                                             |         }
    0x0002fb8e mov r3, r5                                    |         r3 = r5;
    0x0002fb90 add r2, sp, 0x10                              |         r2 += var_10h;
    0x0002fb92 add r1, sp, 0x14                              |         r1 += var_14h;
    0x0002fb94 str.w r8, [sp]                                |         __asm ("str.w r8, [sp]");
    0x0002fb98 blx r7                                        |         uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r1, r2, r3);
                                                             | label_1:
    0x0002fb9a ldr r2, [pc, 0x180]                           |         
    0x0002fb9c ldr r3, [pc, 0x174]                           |         r3 = *(0x2fd14);
    0x0002fb9e add r2, pc                                    |         r2 = 0x5f8c0;
    0x0002fba0 ldr r3, [r2, r3]                              |         r3 = imp._ITM_deregisterTMCloneTable;
    0x0002fba2 ldr r2, [r3]                                  |         r2 = imp._ITM_deregisterTMCloneTable;
    0x0002fba4 ldr r3, [sp, 0x7c]                            |         r3 = var_7ch;
    0x0002fba6 eors r2, r3                                   |         r2 ^= r3;
    0x0002fba8 mov.w r3, 0                                   |         r3 = 0;
                                                             |         if (r2 != r3) {
    0x0002fbac bne.w 0x2fd0a                                 |             goto label_11;
                                                             |         }
    0x0002fbb0 mov r0, r6                                    |         r0 = r6;
    0x0002fbb2 add sp, 0x84                                  |         
    0x0002fbb4 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             |     }
    0x0002fbb8 add.w ip, sp, 0x2f                            |     
    0x0002fbbc add.w r2, sp, 0x39                            |     r2 += var_39h;
                                                             |     do {
    0x0002fbc0 ldrb r3, [ip, 1]!                             |         r3 = var_30h;
                                                             |         if (r3 != 0) {
    0x0002fbc4 cbnz r3, 0x2fbd6                              |             goto label_12;
                                                             |         }
    0x0002fbc6 cmp r2, ip                                    |         
    0x0002fbc8 bne 0x2fbc0                                   |         
                                                             |     } while (r2 != ip);
    0x0002fbca ldrh.w r2, [sp, 0x3a]                         |     r2 = var_3ah;
    0x0002fbce movw r3, 0xffff                               |     r3 = 0xffff;
    0x0002fbd2 cmp r2, r3                                    |     
                                                             |     if (r2 == r3) {
    0x0002fbd4 beq 0x2fc64                                   |         goto label_13;
                                                             |     }
                                                             | label_12:
    0x0002fbd6 movs r3, 6                                    |     r3 = 6;
    0x0002fbd8 add r5, sp, 0x44                              |     r5 += whence;
    0x0002fbda add.w sb, sp, 0x30                            |     sb += var_30h;
    0x0002fbde str r3, [sp, 0x14]                            |     var_14h = r3;
    0x0002fbe0 mov r2, r5                                    |     r2 = r5;
    0x0002fbe2 movs r3, 0x2f                                 |     r3 = 0x2f;
    0x0002fbe4 mov r1, sb                                    |     r1 = sb;
    0x0002fbe6 movs r0, 0xa                                  |     r0 = 0xa;
    0x0002fbe8 blx 0x1498                                    |     r0 = fseek (r0, r1, r2);
    0x0002fbec cmp r0, 0                                     |     
                                                             |     if (r0 == 0) {
    0x0002fbee beq 0x2fcee                                   |         goto label_14;
                                                             |     }
                                                             | label_3:
    0x0002fbf0 ldm.w sb, {r0, r1, r2, r3}                    |     r0 = *(sb);
                                                             |     r1 = *((sb + 4));
                                                             |     r2 = *((sb + 8));
                                                             |     r3 = *((sb + 12));
    0x0002fbf4 add.w ip, sp, 0x18                            |     
    0x0002fbf8 stm.w ip, {r0, r1, r2, r3}                    |     *(ip) = r0;
                                                             |     *((ip + 4)) = r1;
                                                             |     *((ip + 8)) = r2;
                                                             |     *((ip + 12)) = r3;
                                                             |     do {
    0x0002fbfc ldrh.w sb, [sp, 0x2a]                         |         sb = var_2ah;
    0x0002fc00 strh.w sb, [sp, 0x10]                         |         var_10h = sb;
    0x0002fc04 b 0x2fb52                                     |         goto label_0;
                                                             | label_8:
    0x0002fc06 mov r3, r0                                    |         r3 = r0;
    0x0002fc08 ldr r2, [pc, 0x114]                           |         
    0x0002fc0a ldr r0, [pc, 0x118]                           |         
    0x0002fc0c mov r1, sb                                    |         r1 = sb;
    0x0002fc0e movs r6, 0                                    |         r6 = 0;
    0x0002fc10 add r2, pc                                    |         r2 = 0x5f934;
    0x0002fc12 add r0, pc                                    |         r0 = 0x5f93c;
    0x0002fc14 bl 0x2effc                                    |         fcn_0002effc ();
    0x0002fc18 mov r0, r4                                    |         r0 = r4;
    0x0002fc1a blx 0x14fc                                    |         fcn_000014fc ();
    0x0002fc1e b 0x2fb9a                                     |         goto label_1;
                                                             | label_5:
    0x0002fc20 ldr r2, [pc, 0x104]                           |         
    0x0002fc22 mov r3, r4                                    |         r3 = r4;
    0x0002fc24 ldr r0, [pc, 0x104]                           |         
    0x0002fc26 movs r1, 4                                    |         r1 = 4;
    0x0002fc28 movs r6, 0                                    |         r6 = 0;
    0x0002fc2a add r2, pc                                    |         r2 = 0x5f956;
    0x0002fc2c add r0, pc                                    |         r0 = 0x5f95c;
    0x0002fc2e bl 0x2effc                                    |         fcn_0002effc ();
    0x0002fc32 b 0x2fb9a                                     |         goto label_1;
                                                             | label_6:
    0x0002fc34 mov r0, r4                                    |         r0 = r4;
    0x0002fc36 movs r6, 0                                    |         r6 = 0;
    0x0002fc38 blx 0x14fc                                    |         fcn_000014fc ();
    0x0002fc3c blx 0x139c                                    |         memset (r0, r1, r2);
    0x0002fc40 ldr r2, [pc, 0xec]                            |         
    0x0002fc42 movs r1, 4                                    |         r1 = 4;
    0x0002fc44 ldr r3, [r0]                                  |         r3 = *(r0);
    0x0002fc46 ldr r0, [pc, 0xec]                            |         
    0x0002fc48 add r2, pc                                    |         r2 = 0x5f97c;
    0x0002fc4a add r0, pc                                    |         r0 = 0x5f984;
    0x0002fc4c bl 0x2effc                                    |         fcn_0002effc ();
    0x0002fc50 b 0x2fb9a                                     |         goto label_1;
                                                             | label_9:
    0x0002fc52 ldr r2, [pc, 0xe4]                            |         
    0x0002fc54 mov r3, r5                                    |         r3 = r5;
    0x0002fc56 ldrh.w sb, [sp, 0x10]                         |         sb = var_10h;
    0x0002fc5a add r2, pc                                    |         r2 = 0x5f998;
    0x0002fc5c ldm r2, {r0, r1, r2}                          |         r0 = *(r2);
                                                             |         r1 = *((r2 + 4));
                                                             |         r2 = *((r2 + 8));
    0x0002fc5e stm r3!, {r0, r1}                             |         *(r3!) = r0;
                                                             |         *((r3! + 4)) = r1;
    0x0002fc60 strh r2, [r3]                                 |         *(r3) = r2;
    0x0002fc62 b 0x2fb52                                     |         goto label_0;
                                                             |         if (r5 != 0) {
                                                             | label_13:
    0x0002fc64 cbnz r5, 0x2fc9e                              |             goto label_15;
                                                             |         }
    0x0002fc66 movs r3, 4                                    |         r3 = 4;
    0x0002fc68 add r5, sp, 0x44                              |         r5 += whence;
    0x0002fc6a str r3, [sp, 0x14]                            |         var_14h = r3;
    0x0002fc6c mov r2, r5                                    |         r2 = r5;
    0x0002fc6e movs r3, 0x2f                                 |         r3 = 0x2f;
    0x0002fc70 add r1, sp, 0x3c                              |         r1 += var_3ch;
    0x0002fc72 movs r0, 2                                    |         r0 = 2;
    0x0002fc74 blx 0x1498                                    |         r0 = fseek (r0, r1, r2);
                                                             |         if (r0 == 0) {
    0x0002fc78 cbz r0, 0x2fcc8                               |             goto label_16;
                                                             |         }
                                                             | label_2:
    0x0002fc7a ldr r3, [sp, 0x3c]                            |         r3 = var_3ch;
    0x0002fc7c str r3, [sp, 0x18]                            |         var_18h = r3;
    0x0002fc7e b 0x2fbfc                                     |         
                                                             |     } while (1);
                                                             | label_7:
    0x0002fc80 mov r0, r4                                    |     r0 = r4;
    0x0002fc82 movs r6, 0                                    |     r6 = 0;
    0x0002fc84 blx 0x14fc                                    |     fcn_000014fc ();
    0x0002fc88 blx 0x139c                                    |     memset (r0, r1, r2);
    0x0002fc8c ldr r2, [pc, 0xac]                            |     
    0x0002fc8e mov r1, sb                                    |     r1 = sb;
    0x0002fc90 ldr r3, [r0]                                  |     r3 = *(r0);
    0x0002fc92 ldr r0, [pc, 0xac]                            |     
    0x0002fc94 add r2, pc                                    |     r2 = 0x5f9d4;
    0x0002fc96 add r0, pc                                    |     r0 = 0x5f9dc;
    0x0002fc98 bl 0x2effc                                    |     fcn_0002effc ();
    0x0002fc9c b 0x2fb9a                                     |     goto label_1;
                                                             | label_15:
    0x0002fc9e add r5, sp, 0x44                              |     r5 += whence;
    0x0002fca0 movs r3, 0x2f                                 |     r3 = 0x2f;
    0x0002fca2 mov r2, r5                                    |     r2 = r5;
    0x0002fca4 add r1, sp, 0x3c                              |     r1 += var_3ch;
    0x0002fca6 movs r0, 2                                    |     r0 = 2;
    0x0002fca8 blx 0x1498                                    |     r0 = fseek (r0, r1, r2);
    0x0002fcac cbz r0, 0x2fcfc                               |     
                                                             |     while (1) {
    0x0002fcae ldr r2, [pc, 0x94]                            |         
    0x0002fcb0 mov r3, r5                                    |         r3 = r5;
    0x0002fcb2 ldr r0, [pc, 0x94]                            |         
    0x0002fcb4 movs r1, 4                                    |         r1 = 4;
    0x0002fcb6 movs r6, 0                                    |         r6 = 0;
    0x0002fcb8 add r2, pc                                    |         r2 = 0x5fa02;
    0x0002fcba add r0, pc                                    |         r0 = 0x5fa08;
    0x0002fcbc bl 0x2effc                                    |         fcn_0002effc ();
                                                             | label_4:
    0x0002fcc0 mov r0, r4                                    |         r0 = r4;
    0x0002fcc2 blx 0x14fc                                    |         fcn_000014fc ();
    0x0002fcc6 b 0x2fb9a                                     |         goto label_1;
                                                             | label_16:
    0x0002fcc8 ldr r2, [pc, 0x80]                            |         
    0x0002fcca mov r3, r5                                    |         r3 = r5;
    0x0002fccc add r2, pc                                    |         r2 = 0x5fa1c;
    0x0002fcce ldm r2, {r0, r1, r2}                          |         r0 = *(r2);
                                                             |         r1 = *((r2 + 4));
                                                             |         r2 = *((r2 + 8));
    0x0002fcd0 stm r3!, {r0, r1}                             |         *(r3!) = r0;
                                                             |         *((r3! + 4)) = r1;
    0x0002fcd2 strh r2, [r3]                                 |         *(r3) = r2;
    0x0002fcd4 b 0x2fc7a                                     |         goto label_2;
                                                             | label_10:
    0x0002fcd6 ldr r2, [pc, 0x78]                            |         
    0x0002fcd8 mov r3, r5                                    |         r3 = r5;
    0x0002fcda ldr r0, [pc, 0x78]                            |         
    0x0002fcdc movs r1, 4                                    |         r1 = 4;
    0x0002fcde add r2, pc                                    |         r2 = 0x5fa34;
    0x0002fce0 add r0, pc                                    |         r0 = 0x5fa3a;
    0x0002fce2 bl 0x2effc                                    |         fcn_0002effc ();
    0x0002fce6 mov r0, r4                                    |         r0 = r4;
    0x0002fce8 blx 0x14fc                                    |         fcn_000014fc ();
    0x0002fcec b 0x2fb9a                                     |         goto label_1;
                                                             | label_14:
    0x0002fcee ldr r2, [pc, 0x68]                            |         
    0x0002fcf0 mov r3, r5                                    |         r3 = r5;
    0x0002fcf2 add r2, pc                                    |         r2 = 0x5fa50;
    0x0002fcf4 ldm r2, {r0, r1, r2}                          |         r0 = *(r2);
                                                             |         r1 = *((r2 + 4));
                                                             |         r2 = *((r2 + 8));
    0x0002fcf6 stm r3!, {r0, r1}                             |         *(r3!) = r0;
                                                             |         *((r3! + 4)) = r1;
    0x0002fcf8 strh r2, [r3]                                 |         *(r3) = r2;
    0x0002fcfa b 0x2fbf0                                     |         goto label_3;
    0x0002fcfc ldr r2, [pc, 0x5c]                            |         
    0x0002fcfe mov r3, r5                                    |         r3 = r5;
    0x0002fd00 add r2, pc                                    |         r2 = 0x5fa60;
    0x0002fd02 ldm r2, {r0, r1, r2}                          |         r0 = *(r2);
                                                             |         r1 = *((r2 + 4));
                                                             |         r2 = *((r2 + 8));
    0x0002fd04 stm r3!, {r0, r1}                             |         *(r3!) = r0;
                                                             |         *((r3! + 4)) = r1;
    0x0002fd06 strh r2, [r3]                                 |         *(r3) = r2;
    0x0002fd08 b 0x2fcae                                     |         
                                                             |     }
                                                             | label_11:
    0x0002fd0a blx 0x1264                                    |     getrlimit ();
    0x0002fd0e nop                                           |     
    0x0002fd10 strh r6, [r0, r4]                             |     *((r0 + r4)) = r6;
    0x0002fd12 movs r2, r0                                   |     r2 = r0;
    0x0002fd14 lsls r0, r7, 5                                |     r0 = r7 << 5;
    0x0002fd16 movs r0, r0                                   |     
                                                             |     if (r0 < r0) {
    0x0002fd18 blt 0x2fcc0                                   |         goto label_4;
                                                             |     }
    0x0002fd1a movs r0, r0                                   |     
    0x0002fd1c strh r2, [r7, r0]                             |     *((r7 + r0)) = r2;
    0x0002fd1e movs r2, r0                                   |     r2 = r0;
    0x0002fd20 adds r3, 0xac                                 |     r3 += 0xac;
    0x0002fd22 movs r1, r0                                   |     r1 = r0;
    0x0002fd24 invalid                                       |     
                                                             | }

[*] Function printf used 11 times mdnsd