[*] Binary protection state of libc.so.6

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


[*] Function sprintf tear down of libc.so.6

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x27eac */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00027eac ()                  | void fcn_00027eac (int16_t arg_28h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                             |     int16_t var_0h;
                                             |     int32_t var_4h;
                                             |     int32_t var_4h_2;
                                             |     int32_t var_ch;
                                             |     int32_t var_ch_2;
                                             |     int16_t var_14h;
                                             |     char * src;
                                             |     char * dest;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
                                             |     r2 = arg3;
                                             |     r3 = arg4;
    0x00027eac push {r7, lr}                 |     
    0x00027eae mov r6, r0                    |     r6 = r0;
    0x00027eb0 sub sp, 0x20                  |     
    0x00027eb2 ldr r4, [pc, 0xdc]            |     
    0x00027eb4 mov r8, r1                    |     r8 = r1;
    0x00027eb6 movs r0, 1                    |     r0 = 1;
    0x00027eb8 movs r1, 0                    |     r1 = 0;
    0x00027eba mov r5, r2                    |     r5 = r2;
    0x00027ebc mov r7, r3                    |     r7 = r3;
    0x00027ebe ldr.w sb, [sp, 0x28]          |     sb = *(arg_28h);
    0x00027ec2 bl 0x5f740                    |     pthread_setcancelstate ();
    0x00027ec6 ldr r3, [pc, 0xcc]            |     r3 = *(0x27f96);
    0x00027ec8 add r4, pc                    |     r4 = 0x4fe5e;
    0x00027eca ldr r3, [r4, r3]              |     r3 = *(0x4fe5e);
    0x00027ecc ldr r2, [r3]                  |     r2 = *(0x4fe5e);
    0x00027ece ldrb r3, [r2]                 |     r3 = *(r2);
    0x00027ed0 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x00027ed2 beq 0x27f6c                   |         goto label_3;
                                             |     }
    0x00027ed4 ldr r3, [pc, 0xc0]            |     
    0x00027ed6 add r3, pc                    |     r3 = 0x4fe72;
    0x00027ed8 cmp.w sb, 0                   |     
                                             |     if (sb == 0) {
    0x00027edc beq 0x27f76                   |         goto label_4;
                                             |     }
                                             | label_0:
    0x00027ede ldr r1, [pc, 0xbc]            |     
    0x00027ee0 add r1, pc                    |     r1 = 0x4fe82;
                                             | label_1:
    0x00027ee2 str r5, [sp]                  |     *(sp) = r5;
    0x00027ee4 add r5, sp, 0x1c              |     r5 += dest;
    0x00027ee6 strd r1, r8, [sp, 0xc]        |     __asm ("strd r1, r8, [var_ch]");
    0x00027eea add r0, sp, 0x18              |     r0 += src;
    0x00027eec mov r1, r6                    |     r1 = r6;
    0x00027eee strd r7, sb, [sp, 4]          |     __asm ("strd r7, sb, [var_4h]");
    0x00027ef2 str r5, [sp, 0x14]            |     var_14h = r5;
    0x00027ef4 bl 0x38ce0                    |     r0 = asprintf ()
    0x00027ef8 cmp r0, 0                     |     
                                             |     if (r0 < 0) {
    0x00027efa blt 0x27f80                   |         goto label_5;
                                             |     }
    0x00027efc ldr r1, [pc, 0xa0]            |     
    0x00027efe movs r0, 0                    |     r0 = 0;
    0x00027f00 ldr r2, [sp, 0x18]            |     r2 = src;
    0x00027f02 add r1, pc                    |     r1 = 0x4fea6;
    0x00027f04 bl 0x4bb90                    |     fcn_0004bb90 (r0);
    0x00027f08 ldr r3, [pc, 0x98]            |     r3 = *(0x27fa4);
    0x00027f0a ldr r3, [r4, r3]              |     r3 = *((r4 + r3));
    0x00027f0c ldr r0, [r3]                  |     r0 = *(0x27fa4);
    0x00027f0e bl 0x4cbcc                    |     fflush ();
    0x00027f12 ldr r3, [pc, 0x94]            |     r3 = *(0x27faa);
    0x00027f14 movs r0, 0                    |     r0 = 0;
    0x00027f16 ldr r1, [sp, 0x1c]            |     r1 = dest;
    0x00027f18 mov.w r2, -1                  |     r2 = -1;
    0x00027f1c ldr r4, [r4, r3]              |     r4 = *((r4 + r3));
    0x00027f1e movs r3, 0x22                 |     r3 = 0x22;
    0x00027f20 strd r2, r0, [sp]             |     __asm ("strd r2, r0, [sp]");
    0x00027f24 movs r2, 3                    |     r2 = 3;
    0x00027f26 ldr r4, [r4, 0xc]             |     r4 = *((r4 + 0xc));
    0x00027f28 add r1, r4                    |     r1 += r4;
    0x00027f2a rsbs r4, r4, 0                |     r4 -= ;
    0x00027f2c ands r1, r4                   |     r1 &= r4;
    0x00027f2e str r1, [sp, 0x1c]            |     dest = r1;
    0x00027f30 bl 0xa9000                    |     r0 = mmap ();
    0x00027f34 adds r3, r0, 1                |     r3 = r0 + 1;
    0x00027f36 mov r4, r0                    |     r4 = r0;
                                             |     if (r3 == r0) {
    0x00027f38 beq 0x27f62                   |         goto label_6;
                                             |     }
    0x00027f3a ldr r3, [sp, 0x1c]            |     r3 = dest;
    0x00027f3c ldr r1, [sp, 0x18]            |     r1 = src;
    0x00027f3e str r3, [r0], 4               |     *(r0) = r3;
                                             |     r0 += 4;
    0x00027f42 bl 0x6a5a0                    |     strcpy (r0, r1);
    0x00027f46 ldr r3, [pc, 0x64]            |     
    0x00027f48 add r3, pc                    |     r3 = 0x4fefa;
                                             |     do {
    0x00027f4a ldrex r0, [r3]                |         __asm ("ldrex r0, [r3]");
    0x00027f4e strex r2, r4, [r3]            |         __asm ("strex r2, r4, [r3]");
    0x00027f52 cmp r2, 0                     |         
    0x00027f54 bne 0x27f4a                   |         
                                             |     } while (r2 != 0);
    0x00027f56 dmb ish                       |     __asm ("dmb ish");
                                             |     if (r0 != 0) {
    0x00027f5a cbz r0, 0x27f62               |         
    0x00027f5c ldr r1, [r0]                  |         r1 = *(r0);
    0x00027f5e bl 0xa90c0                    |         munmap ();
                                             |     }
                                             | label_6:
    0x00027f62 ldr r0, [sp, 0x18]            |     r0 = src;
    0x00027f64 blx 0x1ded4                   |     fcn_0001ded4 ();
                                             | label_2:
    0x00027f68 bl 0x1df88                    |     abort ();
                                             | label_3:
    0x00027f6c ldr r3, [pc, 0x40]            |     
    0x00027f6e add r3, pc                    |     r3 = 0x4ff22;
    0x00027f70 cmp.w sb, 0                   |     
                                             |     if (sb != 0) {
    0x00027f74 bne 0x27ede                   |         goto label_0;
                                             |     }
                                             | label_4:
    0x00027f76 ldr.w sb, [pc, 0x3c]          |     sb = *(0x00027fb4);
    0x00027f7a add sb, pc                    |     sb += pc;
    0x00027f7c mov r1, sb                    |     r1 = sb;
    0x00027f7e b 0x27ee2                     |     goto label_1;
                                             | label_5:
    0x00027f80 ldr r1, [pc, 0x34]            |     
    0x00027f82 movs r2, 0x12                 |     r2 = 0x12;
    0x00027f84 movs r0, 2                    |     r0 = 2;
    0x00027f86 add r1, pc                    |     r1 = 0x4ff42;
    0x00027f88 bl 0x9e6c0                    |     write (r0, r1, r2);
    0x00027f8c b 0x27f68                     |     goto label_2;
                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x28e64 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00028e64 ()                                      | void fcn_00028e64 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_0h_3;
                                                                 |     int32_t var_8h_2;
                                                                 |     char * src;
                                                                 |     int32_t var_10h;
                                                                 |     size_t n;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_1ch;
                                                                 |     int32_t var_20h;
                                                                 |     int32_t var_20h_2;
                                                                 |     int32_t var_28h;
                                                                 |     int32_t var_2ch;
                                                                 |     char * s2;
                                                                 |     int32_t var_34h;
                                                                 |     int32_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int32_t var_40h;
                                                                 |     int32_t var_44h;
                                                                 |     int32_t var_48h;
                                                                 |     int32_t var_50h;
                                                                 |     int32_t var_5ch;
                                                                 |     int16_t var_0h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00028e64 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00028e68 sub sp, 0x6c                                      |     
    0x00028e6a ldr.w fp, [pc, 0x308]                             |     fp = *(0x00029174);
    0x00028e6e movs r4, 0                                        |     r4 = 0;
    0x00028e70 add r7, sp, 8                                     |     r7 += var_8h;
    0x00028e72 mov sl, r1                                        |     sl = r1;
    0x00028e74 str r4, [r7, 0x38]                                |     var_38h = r4;
    0x00028e76 add fp, pc                                        |     
    0x00028e78 strd r2, r3, [r7, 0x20]                           |     __asm ("strd r2, r3, [var_20h]");
                                                                 |     if (r1 != 0) {
    0x00028e7c cbz r1, 0x28ea8                                   |         
    0x00028e7e ldr.w r2, [r7, 0x8c]                              |         r2 = *((r7 + 0x8c));
    0x00028e82 mov sb, r0                                        |         sb = r0;
    0x00028e84 mov r0, r3                                        |         r0 = r3;
    0x00028e86 sub.w r3, r2, 6                                   |         r3 = r2 - 6;
    0x00028e8a clz r3, r3                                        |         r3 &= r3;
    0x00028e8e lsrs r3, r3, 5                                    |         r3 >>= 5;
    0x00028e90 cmp r2, 0xc                                       |         
    0x00028e92 it hi                                             |         
                                                                 |         if (r2 <= 0xc) {
    0x00028e94 orrhi r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
                                                                 |         if (r3 == 0) {
    0x00028e98 cbz r3, 0x28eb4                                   |             goto label_13;
                                                                 |         }
    0x00028e9a ldr.w r2, [r7, 0x88]                              |         r2 = *((r7 + 0x88));
    0x00028e9e cmp r2, 1                                         |         
    0x00028ea0 it ne                                             |         
                                                                 |         if (r2 != 1) {
    0x00028ea2 cmpne r0, r4                                      |             __asm ("cmpne r0, r4");
                                                                 |         }
                                                                 |         if (r2 != 1) {
    0x00028ea4 bne.w 0x2911e                                     |             goto label_14;
                                                                 |         }
                                                                 |     }
                                                                 | label_2:
    0x00028ea8 mov r3, sl                                        |     r3 = sl;
                                                                 | label_0:
    0x00028eaa mov r0, r3                                        |     r0 = r3;
    0x00028eac adds r7, 0x64                                     |     r7 += 0x64;
    0x00028eae mov sp, r7                                        |     
    0x00028eb0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_13:
    0x00028eb4 ldr r3, [pc, 0x2b0]                               |     
    0x00028eb6 mrc p15, 0, r2, c13, c0, 3                        |     __asm ("mrc p15, 0, r2, c13, c0, 3");
    0x00028eba ldr r0, [pc, 0x2bc]                               |     
    0x00028ebc add r3, pc                                        |     
    0x00028ebe ldr r3, [r3]                                      |     r3 = *(0x52028);
    0x00028ec0 str r2, [r7, 0x18]                                |     var_18h = r2;
    0x00028ec2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00028ec4 add r0, pc                                        |     r0 = 0x52042;
    0x00028ec6 str r3, [r7, 0x1c]                                |     var_1ch = r3;
    0x00028ec8 bl 0x5e7c4                                        |     pthread_rwlock_rdlock ();
    0x00028ecc ldr r0, [pc, 0x2ac]                               |     
    0x00028ece add r0, pc                                        |     r0 = 0x5204e;
    0x00028ed0 adds r0, 0x1c                                     |     r0 += 0x1c;
    0x00028ed2 bl 0x5e7c4                                        |     pthread_rwlock_rdlock ();
    0x00028ed6 cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00028eda beq.w 0x291f4                                     |         goto label_15;
                                                                 |     }
                                                                 | label_8:
    0x00028ede ldr r5, [pc, 0x2a0]                               |     
    0x00028ee0 ldr.w r3, [r7, 0x8c]                              |     r3 = *((r7 + 0x8c));
    0x00028ee4 ldr.w r0, [r7, 0x8c]                              |     r0 = *((r7 + 0x8c));
    0x00028ee8 add r5, pc                                        |     r5 = 0x5206e;
    0x00028eea str.w sl, [r7, 0x5c]                              |     __asm ("str.w sl, [var_5ch]");
    0x00028eee add.w r4, r5, 0x3c                                |     r4 = r5 + 0x3c;
    0x00028ef2 str r3, [r7, 0x44]                                |     var_44h = r3;
    0x00028ef4 movs r3, 0                                        |     r3 = 0;
    0x00028ef6 str.w sb, [r7, 0x40]                              |     __asm ("str.w sb, [var_40h]");
    0x00028efa str r3, [r7, 0x50]                                |     var_50h = r3;
    0x00028efc bl 0x27e0c                                        |     fcn_00027e0c (r0);
    0x00028f00 str r0, [r7, 0xc]                                 |     src = r0;
    0x00028f02 str r0, [r7, 0x48]                                |     var_48h = r0;
    0x00028f04 mov r0, r4                                        |     r0 = r4;
    0x00028f06 bl 0x5e7c4                                        |     pthread_rwlock_rdlock ();
    0x00028f0a ldr r2, [pc, 0x278]                               |     
    0x00028f0c mov r1, r5                                        |     r1 = r5;
    0x00028f0e add.w r0, r7, 0x40                                |     r0 += var_40h;
    0x00028f12 add r2, pc                                        |     r2 = 0x5209c;
    0x00028f14 bl 0xa9f78                                        |     r0 = tfind ();
    0x00028f18 mov r5, r0                                        |     r5 = r0;
    0x00028f1a str r0, [r7, 0x10]                                |     var_10h = r0;
    0x00028f1c mov r0, r4                                        |     r0 = r4;
    0x00028f1e bl 0x5f0ac                                        |     pthread_rwlock_unlock ();
                                                                 |     if (r5 != 0) {
    0x00028f22 cbz r5, 0x28f36                                   |         
    0x00028f24 ldr r3, [pc, 0x260]                               |         
    0x00028f26 ldr r4, [r5]                                      |         r4 = *(r5);
    0x00028f28 ldr.w r3, [fp, r3]                                |         r3 = *((fp + r3));
    0x00028f2c ldr r2, [r4, 0xc]                                 |         r2 = *((r4 + 0xc));
    0x00028f2e ldr r3, [r3]                                      |         r3 = *(0x29188);
    0x00028f30 cmp r2, r3                                        |         
                                                                 |         if (r2 == r3) {
    0x00028f32 beq.w 0x29210                                     |             goto label_16;
                                                                 |         }
                                                                 |     }
    0x00028f36 ldr r3, [pc, 0x254]                               |     r3 = *(0x2918e);
    0x00028f38 ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x00028f3c ldr r4, [r3]                                      |     r4 = *(0x2918e);
                                                                 |     if (r4 != 0) {
    0x00028f3e cbnz r4, 0x28f4e                                  |         goto label_17;
                                                                 |     }
    0x00028f40 b 0x2932c                                         |     goto label_18;
                                                                 |     if (r4 < 0) {
                                                                 |         do {
    0x00028f42 blt.w 0x291fe                                     |             goto label_19;
                                                                 |         }
    0x00028f46 ldr r4, [r4]                                      |         r4 = *(r4);
    0x00028f48 cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x00028f4a beq.w 0x29208                                     |             goto label_20;
                                                                 |         }
                                                                 | label_17:
    0x00028f4e add.w r1, r4, 0xc                                 |         r1 = r4 + 0xc;
    0x00028f52 mov r0, sb                                        |         r0 = sb;
    0x00028f54 bl 0x69790                                        |         r0 = strcmp (r0, r1);
    0x00028f58 subs r1, r0, 0                                    |         r1 = r0 - 0;
    0x00028f5a bne 0x28f42                                       |         
                                                                 |     } while (r1 != r0);
    0x00028f5c ldr r6, [r4, 4]                                   |     r6 = *((r4 + 4));
    0x00028f5e ldrb r3, [r6]                                     |     r3 = *(r6);
    0x00028f60 str r6, [r7, 0x34]                                |     var_34h = r6;
    0x00028f62 cmp r3, 0x2f                                      |     
                                                                 |     if (r3 != 0x2f) {
    0x00028f64 bne.w 0x2912a                                     |         goto label_21;
                                                                 |     }
                                                                 | label_4:
    0x00028f68 ldr r3, [pc, 0x224]                               |     
    0x00028f6a ldr.w r2, [r7, 0x8c]                              |     r2 = *((r7 + 0x8c));
    0x00028f6e add r3, pc                                        |     r3 = 0x52102;
    0x00028f70 ldrb r6, [r3, r2]                                 |     r6 = *((r3 + r2));
    0x00028f72 mov r0, r2                                        |     r0 = r2;
    0x00028f74 ldr r3, [pc, 0x21c]                               |     
    0x00028f76 add r3, pc                                        |     r3 = 0x5210e;
    0x00028f78 add r6, r3                                        |     r6 += r3;
    0x00028f7a bl 0x27e0c                                        |     r0 = fcn_00027e0c (r0);
    0x00028f7e ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00028f80 mov r8, r0                                        |     r8 = r0;
    0x00028f82 cmp r3, 0x43                                      |     
                                                                 |     if (r3 == 0x43) {
    0x00028f84 beq.w 0x29156                                     |         goto label_22;
                                                                 |     }
                                                                 | label_5:
    0x00028f88 ldr r0, [pc, 0x20c]                               |     
    0x00028f8a add r0, pc                                        |     r0 = 0x52126;
    0x00028f8c bl 0x2e8f0                                        |     r0 = getenv (r0);
    0x00028f90 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00028f92 cbz r0, 0x28f98                                   |         
    0x00028f94 ldrb r3, [r0]                                     |         r3 = *(r0);
                                                                 |         if (r3 != 0) {
    0x00028f96 cbnz r3, 0x28f9a                                  |             goto label_6;
                                                                 |         }
                                                                 |     }
    0x00028f98 mov r5, r8                                        |     r5 = r8;
                                                                 | label_6:
    0x00028f9a mov r0, sb                                        |     r0 = sb;
    0x00028f9c bl 0x6ae40                                        |     r0 = strlen ();
    0x00028fa0 mov r8, r0                                        |     r8 = r0;
    0x00028fa2 mov r0, r6                                        |     r0 = r6;
    0x00028fa4 bl 0x6ae40                                        |     strlen ();
    0x00028fa8 mov r3, r8                                        |     r3 = r8;
    0x00028faa ldr r2, [pc, 0x1f0]                               |     
    0x00028fac adds r3, r0, r3                                   |     r3 = r0 + r3;
    0x00028fae mov r1, r6                                        |     r1 = r6;
    0x00028fb0 adds r3, 0xc                                      |     r3 += 0xc;
    0x00028fb2 str.w r8, [r7, 0x14]                              |     __asm ("str.w r8, [n]");
    0x00028fb6 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00028fba add r2, pc                                        |     r2 = 0x5215c;
    0x00028fbc sub.w sp, sp, r3                                  |     
    0x00028fc0 str r2, [r7, 0x30]                                |     s2 = r2;
    0x00028fc2 add r0, sp, 8                                     |     r0 += var_8h;
    0x00028fc4 add.w r2, r7, 0x3c                                |     r2 += var_3ch;
    0x00028fc8 str r2, [r7, 0x28]                                |     var_28h = r2;
    0x00028fca str r0, [r7, 0x2c]                                |     var_2ch = r0;
    0x00028fcc bl 0x6a590                                        |     stpcpy ();
    0x00028fd0 ldr r6, [r7, 0x14]                                |     r6 = n;
    0x00028fd2 movs r3, 0x2f                                     |     r3 = 0x2f;
    0x00028fd4 mov r1, sb                                        |     r1 = sb;
    0x00028fd6 strb r3, [r0], 1                                  |     *(r0) = r3;
                                                                 |     r0++;
    0x00028fda mov r2, r6                                        |     r2 = r6;
    0x00028fdc blx 0x6d540                                       |     memcpy (r0, r1, r2);
    0x00028fe0 ldr r2, [pc, 0x1bc]                               |     
    0x00028fe2 mov r3, r0                                        |     r3 = r0;
    0x00028fe4 add r2, pc                                        |     r2 = 0x52188;
    0x00028fe6 ldr r0, [r2]                                      |     r0 = *(0x52188);
    0x00028fe8 str r0, [r3, r6]                                  |     *((r3 + r6)) = r0;
    0x00028fea mov r0, r5                                        |     r0 = r5;
    0x00028fec bl 0x6ae40                                        |     r0 = strlen ();
    0x00028ff0 add.w r3, r0, 8                                   |     r3 = r0 + 8;
    0x00028ff4 bic r3, r3, 7                                     |     r3 = BIT_MASK (r3, 7);
    0x00028ff8 sub.w sp, sp, r3                                  |     
    0x00028ffc add r6, sp, 8                                     |     r6 += var_8h;
                                                                 |     do {
                                                                 | label_1:
    0x00028ffe ldrb r3, [r5]                                     |         r3 = *(r5);
    0x00029000 cmp r3, 0x3a                                      |         
                                                                 |         if (r3 == 0x3a) {
    0x00029002 beq.w 0x29162                                     |             goto label_23;
                                                                 |         }
    0x00029006 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00029008 bne.w 0x291b8                                     |             goto label_24;
                                                                 |         }
    0x0002900c movs r3, 0x43                                     |         r3 = 0x43;
    0x0002900e strh r3, [r6]                                     |         *(r6) = r3;
                                                                 | label_7:
    0x00029010 ldrb r3, [r6]                                     |         r3 = *(r6);
    0x00029012 cmp r3, 0x43                                      |         
                                                                 |         if (r3 == 0x43) {
    0x00029014 bne 0x2901c                                       |             
    0x00029016 ldrb r3, [r6, 1]                                  |             r3 = *((r6 + 1));
    0x00029018 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x0002901a beq 0x290ea                                       |                 goto label_3;
                                                                 |             }
                                                                 |         }
    0x0002901c ldr r1, [r7, 0x30]                                |         r1 = s2;
    0x0002901e mov r0, r6                                        |         r0 = r6;
    0x00029020 bl 0x69790                                        |         r0 = strcmp (r0, r1);
    0x00029024 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00029026 beq 0x290ea                                       |             goto label_3;
                                                                 |         }
    0x00029028 ldr r2, [r7, 0x2c]                                |         r2 = var_2ch;
    0x0002902a mov r3, r4                                        |         r3 = r4;
    0x0002902c ldr r0, [r7, 0x34]                                |         r0 = var_34h;
    0x0002902e mov r1, r6                                        |         r1 = r6;
    0x00029030 bl 0x293e0                                        |         r0 = fcn_000293e0 (r0, r1, r2, r3, r4);
    0x00029034 mov r8, r0                                        |         r8 = r0;
    0x00029036 cmp r0, 0                                         |         
    0x00029038 beq 0x28ffe                                       |         
                                                                 |     } while (r0 == 0);
    0x0002903a ldr r3, [r7, 0x28]                                |     r3 = var_28h;
    0x0002903c mov r2, sl                                        |     r2 = sl;
    0x0002903e mov r1, r4                                        |     r1 = r4;
    0x00029040 str r3, [sp]                                      |     *(sp) = r3;
    0x00029042 movs r3, 1                                        |     r3 = 1;
    0x00029044 bl 0x287f4                                        |     r0 = fcn_000287f4 (r0, r1, r2, r3);
    0x00029048 mov r3, r0                                        |     r3 = r0;
    0x0002904a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0002904c beq 0x290a6                                       |         
    0x0002904e adds r2, r0, 1                                    |         r2 = r0 + 1;
                                                                 |         if (r2 == r0) {
    0x00029050 beq 0x290ea                                       |             goto label_3;
                                                                 |         }
                                                                 | label_11:
    0x00029052 ldr r0, [r7, 0x38]                                |         r0 = var_38h;
    0x00029054 str r3, [r7, 0x34]                                |         var_34h = r3;
    0x00029056 blx 0x1ded4                                       |         fcn_0001ded4 ();
    0x0002905a ldr r2, [r7, 0x10]                                |         r2 = var_10h;
    0x0002905c ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x0002905e cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00029060 beq.w 0x29274                                     |             goto label_25;
                                                                 |         }
    0x00029064 ldr r1, [pc, 0x120]                               |         
    0x00029066 ldr r2, [r7, 0x10]                                |         r2 = var_10h;
    0x00029068 ldr.w r1, [fp, r1]                                |         r1 = *((fp + r1));
    0x0002906c ldr r2, [r2]                                      |         r2 = *(r2);
    0x0002906e ldr r1, [r1]                                      |         r1 = *(0x29188);
    0x00029070 strd r8, r3, [r2, 0x10]                           |         __asm ("strd r8, r3, [r2, 0x10]");
    0x00029074 str r1, [r2, 0xc]                                 |         *((r2 + 0xc)) = r1;
    0x00029076 ldr r1, [r7, 0x3c]                                |         r1 = var_3ch;
    0x00029078 str r1, [r2, 0x18]                                |         *((r2 + 0x18)) = r1;
                                                                 | label_10:
    0x0002907a ldr r2, [pc, 0xf0]                                |         
    0x0002907c ldrd r1, r0, [r7, 0x18]                           |         __asm ("ldrd r1, r0, [var_18h]");
    0x00029080 add r2, pc                                        |         
    0x00029082 ldr r2, [r2]                                      |         r2 = *(0x521f2);
    0x00029084 str r0, [r1, r2]                                  |         *((r1 + r2)) = r0;
    0x00029086 ldr r2, [r7, 0x24]                                |         r2 = var_20h_2;
    0x00029088 cmp r2, 0                                         |         
                                                                 |         if (r2 != 0) {
    0x0002908a bne.w 0x29334                                     |             goto label_26;
                                                                 |         }
                                                                 | label_12:
    0x0002908e ldr r0, [pc, 0x114]                               |         
    0x00029090 str r3, [r7, 0x34]                                |         var_34h = r3;
    0x00029092 add r0, pc                                        |         r0 = 0x5223c;
    0x00029094 adds r0, 0x1c                                     |         r0 += 0x1c;
    0x00029096 bl 0x5f0ac                                        |         pthread_rwlock_unlock ();
    0x0002909a ldr r0, [pc, 0x10c]                               |         
    0x0002909c add r0, pc                                        |         r0 = 0x5224a;
    0x0002909e bl 0x5f0ac                                        |         pthread_rwlock_unlock ();
    0x000290a2 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x000290a4 b 0x28eaa                                         |         goto label_0;
                                                                 |     }
    0x000290a6 ldr.w r0, [r8, 0x10]                              |     r0 = *((r8 + 0x10));
    0x000290aa cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000290ac beq 0x28ffe                                       |         goto label_1;
                                                                 |     }
    0x000290ae mov r2, r3                                        |     r2 = r3;
    0x000290b0 add.w r3, r8, 0x10                                |     r3 = r8 + 0x10;
    0x000290b4 strd r6, r5, [r7]                                 |     __asm ("strd r6, r5, [r7]");
    0x000290b8 mov r5, r3                                        |     r5 = r3;
    0x000290ba str.w r8, [r7, 8]                                 |     __asm ("str.w r8, [var_8h_2]");
    0x000290be mov r6, r2                                        |     r6 = r2;
    0x000290c0 ldr.w r8, [r7, 0x28]                              |     r8 = var_28h;
    0x000290c4 b 0x290d8                                         |     
                                                                 |     while (r3 != r0) {
    0x000290c6 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000290c8 bne.w 0x29316                                     |             goto label_27;
                                                                 |         }
    0x000290cc ldr r0, [r5, 4]!                                  |         r0 = *((r5 += 4));
    0x000290d0 adds r6, 1                                        |         r6++;
    0x000290d2 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000290d4 beq.w 0x29326                                     |             goto label_28;
                                                                 |         }
    0x000290d8 movs r3, 1                                        |         r3 = 1;
    0x000290da mov r2, sl                                        |         r2 = sl;
    0x000290dc mov r1, r4                                        |         r1 = r4;
    0x000290de str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x000290e2 bl 0x287f4                                        |         r0 = fcn_000287f4 (r0, r1, r2, r3);
    0x000290e6 adds r3, r0, 1                                    |         r3 = r0 + 1;
    0x000290e8 bne 0x290c6                                       |         
                                                                 |     }
                                                                 | label_3:
    0x000290ea ldr r0, [r7, 0x38]                                |     r0 = var_38h;
    0x000290ec blx 0x1ded4                                       |     fcn_0001ded4 ();
    0x000290f0 ldr r0, [pc, 0xb8]                                |     
    0x000290f2 add r0, pc                                        |     r0 = 0x522a2;
    0x000290f4 adds r0, 0x1c                                     |     r0 += 0x1c;
    0x000290f6 bl 0x5f0ac                                        |     pthread_rwlock_unlock ();
    0x000290fa ldr r0, [pc, 0xb4]                                |     
    0x000290fc add r0, pc                                        |     r0 = 0x522b2;
    0x000290fe bl 0x5f0ac                                        |     pthread_rwlock_unlock ();
    0x00029102 ldr r3, [pc, 0x6c]                                |     
    0x00029104 ldrd r2, r1, [r7, 0x18]                           |     __asm ("ldrd r2, r1, [var_18h]");
    0x00029108 add r3, pc                                        |     
    0x0002910a ldr r3, [r3]                                      |     r3 = *(0x5227e);
    0x0002910c str r1, [r2, r3]                                  |     *((r2 + r3)) = r1;
    0x0002910e ldr r3, [r7, 0x24]                                |     r3 = var_20h_2;
    0x00029110 ldr.w r2, [r7, 0x88]                              |     r2 = *((r7 + 0x88));
    0x00029114 cmp r2, 1                                         |     
    0x00029116 it ne                                             |     
                                                                 |     if (r2 == 1) {
    0x00029118 cmpne r3, 0                                       |         __asm ("cmpne r3, 0");
                                                                 |         goto label_29;
                                                                 |     }
                                                                 |     if (r2 == 1) {
                                                                 | label_29:
    0x0002911a beq.w 0x28ea8                                     |         goto label_2;
                                                                 |     }
                                                                 | label_14:
    0x0002911e ldr r3, [r7, 0x20]                                |     r3 = var_20h;
    0x00029120 adds r7, 0x64                                     |     r7 += 0x64;
    0x00029122 mov r0, r3                                        |     r0 = r3;
    0x00029124 mov sp, r7                                        |     
    0x00029126 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_21:
    0x0002912a bl 0x9efc8                                        |     r0 = getcwd ();
    0x0002912e mov r5, r0                                        |     r5 = r0;
    0x00029130 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00029132 beq 0x290ea                                       |         goto label_3;
                                                                 |     }
    0x00029134 ldr r1, [pc, 0x7c]                                |     
    0x00029136 mov r3, r6                                        |     r3 = r6;
    0x00029138 mov r2, r0                                        |     r2 = r0;
    0x0002913a add.w r0, r7, 0x38                                |     r0 += var_38h;
    0x0002913e add r1, pc                                        |     r1 = 0x522f6;
    0x00029140 bl 0x38ce0                                        |     r0 = asprintf ()
    0x00029144 mov r6, r0                                        |     r6 = r0;
    0x00029146 mov r0, r5                                        |     r0 = r5;
    0x00029148 blx 0x1ded4                                       |     fcn_0001ded4 ();
    0x0002914c cmp r6, 0                                         |     
                                                                 |     if (r6 < 0) {
    0x0002914e blt 0x290ea                                       |         goto label_3;
                                                                 |     }
    0x00029150 ldr r3, [r7, 0x38]                                |     r3 = var_38h;
    0x00029152 str r3, [r7, 0x34]                                |     var_34h = r3;
    0x00029154 b 0x28f68                                         |     goto label_4;
                                                                 | label_22:
    0x00029156 ldrb r3, [r0, 1]                                  |     r3 = *((r0 + 1));
    0x00029158 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0002915a bne.w 0x28f88                                     |         goto label_5;
                                                                 |     }
    0x0002915e mov r5, r8                                        |     r5 = r8;
    0x00029160 b 0x28f9a                                         |     goto label_6;
                                                                 | label_23:
    0x00029162 adds r5, 1                                        |     r5++;
    0x00029164 b 0x28ffe                                         |     goto label_1;
                                                                 | label_24:
    0x000291b8 adds r2, r5, 1                                    |     r2 = r5 + 1;
    0x000291ba mov r1, r6                                        |     r1 = r6;
                                                                 |     do {
    0x000291bc strb r3, [r1], 1                                  |         *(r1) = r3;
                                                                 |         r1++;
    0x000291c0 mov r5, r2                                        |         r5 = r2;
    0x000291c2 ldrb r3, [r2]                                     |         r3 = *(r2);
    0x000291c4 adds r2, 1                                        |         r2++;
    0x000291c6 cmp r3, 0                                         |         
    0x000291c8 it ne                                             |         
                                                                 |         if (r3 != 0) {
    0x000291ca cmpne r3, 0x3a                                    |             __asm ("cmpne r3, 0x3a");
                                                                 |         }
    0x000291cc ite ne                                            |         
                                                                 |         if (r3 == 0) {
    0x000291ce movne r0, 1                                       |             r0 = 1;
                                                                 |         }
                                                                 |         if (r3 != 0) {
    0x000291d0 moveq r0, 0                                       |             r0 = 0;
                                                                 |         }
    0x000291d2 bne 0x291bc                                       |         
                                                                 |     } while (r3 != 0);
    0x000291d4 ldr r3, [pc, 0x1a4]                               |     
    0x000291d6 strb r0, [r1]                                     |     *(r1) = r0;
    0x000291d8 ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x000291dc ldr r3, [r3]                                      |     r3 = *(0x2937c);
    0x000291de cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000291e0 beq.w 0x29010                                     |         goto label_7;
                                                                 |     }
    0x000291e4 movs r1, 0x2f                                     |     r1 = 0x2f;
    0x000291e6 mov r0, r6                                        |     r0 = r6;
    0x000291e8 bl 0x69630                                        |     r0 = strchr ();
    0x000291ec cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000291ee bne.w 0x28ffe                                     |         goto label_1;
                                                                 |     }
    0x000291f2 b 0x29010                                         |     goto label_7;
                                                                 | label_15:
    0x000291f4 ldr r3, [pc, 0x188]                               |     
    0x000291f6 add r3, pc                                        |     r3 = 0x5257a;
    0x000291f8 ldr.w sb, [r3]                                    |     sb = *(0x5257a);
    0x000291fc b 0x28ede                                         |     goto label_8;
                                                                 | label_19:
    0x000291fe ldr r3, [pc, 0x184]                               |     
    0x00029200 movs r4, 0                                        |     r4 = 0;
    0x00029202 add r3, pc                                        |     r3 = 0x5258c;
    0x00029204 str r3, [r7, 0x34]                                |     var_34h = r3;
    0x00029206 b 0x28f68                                         |     goto label_4;
                                                                 | label_20:
    0x00029208 ldr r3, [pc, 0x17c]                               |     
    0x0002920a add r3, pc                                        |     r3 = 0x52596;
    0x0002920c str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0002920e b 0x28f68                                         |     goto label_4;
                                                                 | label_16:
    0x00029210 ldr r2, [r7, 0x24]                                |     r2 = var_20h_2;
    0x00029212 ldr r3, [r4, 0x14]                                |     r3 = *((r4 + 0x14));
    0x00029214 cbnz r2, 0x2923a                                  |     
                                                                 |     while (r0 >= r2) {
                                                                 | label_9:
    0x00029216 ldr r0, [pc, 0x174]                               |         
    0x00029218 str r3, [r7, 0x34]                                |         var_34h = r3;
    0x0002921a add r0, pc                                        |         r0 = 0x525ac;
    0x0002921c adds r0, 0x1c                                     |         r0 += 0x1c;
    0x0002921e bl 0x5f0ac                                        |         pthread_rwlock_unlock ();
    0x00029222 ldr r0, [pc, 0x16c]                               |         
    0x00029224 add r0, pc                                        |         r0 = 0x525ba;
    0x00029226 bl 0x5f0ac                                        |         pthread_rwlock_unlock ();
    0x0002922a ldr r2, [pc, 0x14c]                               |         
    0x0002922c ldrd r3, r1, [r7, 0x18]                           |         __asm ("ldrd r3, r1, [var_18h]");
    0x00029230 add r2, pc                                        |         
    0x00029232 ldr r2, [r2]                                      |         r2 = *(0x525ae);
    0x00029234 str r1, [r3, r2]                                  |         *((r3 + r2)) = r1;
    0x00029236 ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x00029238 b 0x28eaa                                         |         goto label_0;
    0x0002923a ldr r2, [r4, 0x10]                                |         r2 = *((r4 + 0x10));
    0x0002923c ldr.w r1, [r7, 0x88]                              |         r1 = *((r7 + 0x88));
    0x00029240 str r3, [r7, 0x34]                                |         var_34h = r3;
    0x00029242 ldr r6, [r2, 8]                                   |         r6 = *((r2 + 8));
    0x00029244 ldr r0, [r6, 0x60]                                |         r0 = *((r6 + 0x60));
    0x00029246 bl 0x286b4                                        |         fcn_000286b4 (r0, r1);
    0x0002924a ldr r2, [r6, 0x64]                                |         r2 = *((r6 + 0x64));
    0x0002924c mov r5, r0                                        |         r5 = r0;
    0x0002924e ldr r3, [r7, 0x34]                                |         r3 = var_34h;
    0x00029250 cmp r0, r2                                        |         
    0x00029252 bhs 0x29216                                       |         
                                                                 |     }
    0x00029254 ldr r4, [r4, 0x18]                                |     r4 = *((r4 + 0x18));
    0x00029256 mov r0, r3                                        |     r0 = r3;
    0x00029258 mov r6, r3                                        |     r6 = r3;
    0x0002925a add r4, r3                                        |     r4 += r3;
                                                                 |     do {
    0x0002925c subs r5, 1                                        |         r5--;
    0x0002925e mov.w r1, 0                                       |         r1 = 0;
                                                                 |         if (r5 <= 1) {
    0x00029262 blo.w 0x2936e                                     |             goto label_30;
                                                                 |         }
    0x00029266 bl 0x68ed0                                        |         rawmemchr ();
    0x0002926a adds r0, 1                                        |         r0++;
    0x0002926c cmp r0, r4                                        |         
    0x0002926e blo 0x2925c                                       |         
                                                                 |     } while (r0 <= r4);
    0x00029270 mov r3, r6                                        |     r3 = r6;
    0x00029272 b 0x29216                                         |     goto label_9;
                                                                 | label_25:
    0x00029274 mov r0, sl                                        |     r0 = sl;
    0x00029276 bl 0x6ae40                                        |     r0 = strlen ();
    0x0002927a adds r5, r0, 1                                    |     r5 = r0 + 1;
    0x0002927c ldr r0, [r7, 0xc]                                 |     r0 = src;
    0x0002927e bl 0x6ae40                                        |     strlen ();
    0x00029282 ldr r6, [r7, 0x14]                                |     r6 = n;
    0x00029284 add.w r2, r6, 0x1e                                |     r2 = r6 + 0x1e;
    0x00029288 add r0, r2                                        |     r0 += r2;
    0x0002928a add r0, r5                                        |     r0 += r5;
    0x0002928c blx 0x1df60                                       |     fcn_0001df60 ();
    0x00029290 ldr r3, [r7, 0x34]                                |     r3 = var_34h;
    0x00029292 mov r4, r0                                        |     r4 = r0;
    0x00029294 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00029296 beq.w 0x2907a                                     |         goto label_10;
                                                                 |     }
    0x0002929a mov r2, r5                                        |     r2 = r5;
    0x0002929c mov r1, sl                                        |     r1 = sl;
    0x0002929e adds r0, 0x1c                                     |     r0 += 0x1c;
    0x000292a0 adds r6, 1                                        |     r6++;
    0x000292a2 blx 0x6d540                                       |     r0 = memcpy (r0, r1, r2);
    0x000292a6 add r5, r0                                        |     r5 += r0;
    0x000292a8 mov r2, r6                                        |     r2 = r6;
    0x000292aa mov r1, sb                                        |     r1 = sb;
    0x000292ac adds r6, r5, r6                                   |     r6 = r5 + r6;
    0x000292ae mov r0, r5                                        |     r0 = r5;
    0x000292b0 blx 0x6d540                                       |     memcpy (r0, r1, r2);
    0x000292b4 ldr r1, [r7, 0xc]                                 |     r1 = src;
    0x000292b6 mov r0, r6                                        |     r0 = r6;
    0x000292b8 bl 0x6a5a0                                        |     strcpy (r0, r1);
    0x000292bc ldr.w r3, [r7, 0x8c]                              |     r3 = *((r7 + 0x8c));
    0x000292c0 ldr r2, [pc, 0xd0]                                |     
    0x000292c2 str r5, [r4]                                      |     *(r4) = r5;
    0x000292c4 strd r3, r6, [r4, 4]                              |     __asm ("strd r3, r6, [r4, 4]");
    0x000292c8 ldr.w r2, [fp, r2]                                |     r2 = *((fp + r2));
    0x000292cc ldr r5, [pc, 0xc8]                                |     
    0x000292ce ldr r3, [r7, 0x34]                                |     r3 = var_34h;
    0x000292d0 ldr r2, [r2]                                      |     r2 = *(0x29394);
    0x000292d2 add r5, pc                                        |     r5 = 0x5266e;
    0x000292d4 str.w r8, [r4, 0x10]                              |     __asm ("str.w r8, [r4, 0x10]");
    0x000292d8 add.w r6, r5, 0x3c                                |     r6 = r5 + 0x3c;
    0x000292dc str r3, [r4, 0x14]                                |     *((r4 + 0x14)) = r3;
    0x000292de str r2, [r4, 0xc]                                 |     *((r4 + 0xc)) = r2;
    0x000292e0 mov r0, r6                                        |     r0 = r6;
    0x000292e2 ldr r2, [r7, 0x3c]                                |     r2 = var_3ch;
    0x000292e4 str r2, [r4, 0x18]                                |     *((r4 + 0x18)) = r2;
    0x000292e6 bl 0x5f248                                        |     pthread_rwlock_wrlock ();
    0x000292ea ldr r2, [pc, 0xb0]                                |     
    0x000292ec mov r1, r5                                        |     r1 = r5;
    0x000292ee mov r0, r4                                        |     r0 = r4;
    0x000292f0 add r2, pc                                        |     r2 = 0x52692;
    0x000292f2 bl 0xa9e70                                        |     r0 = tsearch ();
    0x000292f6 mov r5, r0                                        |     r5 = r0;
    0x000292f8 mov r0, r6                                        |     r0 = r6;
    0x000292fa bl 0x5f0ac                                        |     pthread_rwlock_unlock ();
    0x000292fe ldr r3, [r7, 0x34]                                |     r3 = var_34h;
                                                                 |     if (r5 == 0) {
    0x00029300 cbz r5, 0x2930a                                   |         goto label_31;
                                                                 |     }
    0x00029302 ldr r2, [r5]                                      |     r2 = *(r5);
    0x00029304 cmp r2, r4                                        |     
                                                                 |     if (r2 == r4) {
    0x00029306 beq.w 0x2907a                                     |         goto label_10;
                                                                 |     }
                                                                 | label_31:
    0x0002930a mov r0, r4                                        |     r0 = r4;
    0x0002930c str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0002930e blx 0x1ded4                                       |     fcn_0001ded4 ();
    0x00029312 ldr r3, [r7, 0x34]                                |     r3 = var_34h;
    0x00029314 b 0x2907a                                         |     goto label_10;
                                                                 | label_27:
    0x00029316 ldr.w r8, [r7, 8]                                 |     r8 = var_8h_2;
    0x0002931a mov r2, r6                                        |     r2 = r6;
    0x0002931c adds r2, 4                                        |     r2 += 4;
    0x0002931e mov r3, r0                                        |     r3 = r0;
    0x00029320 ldr.w r8, [r8, r2, lsl 2]                         |     offset_0 = r2 << 2;
                                                                 |     r8 = *((r8 + offset_0));
    0x00029324 b 0x29052                                         |     goto label_11;
                                                                 | label_28:
    0x00029326 ldrd r6, r5, [r7]                                 |     __asm ("ldrd r6, r5, [r7]");
    0x0002932a b 0x28ffe                                         |     goto label_1;
                                                                 | label_18:
    0x0002932c ldr r3, [pc, 0x70]                                |     
    0x0002932e add r3, pc                                        |     r3 = 0x526d2;
    0x00029330 str r3, [r7, 0x34]                                |     var_34h = r3;
    0x00029332 b 0x28f68                                         |     goto label_4;
                                                                 | label_26:
    0x00029334 ldr.w r4, [r8, 8]                                 |     r4 = *((r8 + 8));
    0x00029338 ldr.w r1, [r7, 0x88]                              |     r1 = *((r7 + 0x88));
    0x0002933c str r3, [r7, 0x34]                                |     var_34h = r3;
    0x0002933e ldr r0, [r4, 0x60]                                |     r0 = *((r4 + 0x60));
    0x00029340 bl 0x286b4                                        |     fcn_000286b4 (r0, r1);
    0x00029344 ldr r2, [r4, 0x64]                                |     r2 = *((r4 + 0x64));
    0x00029346 mov r4, r0                                        |     r4 = r0;
    0x00029348 ldr r3, [r7, 0x34]                                |     r3 = var_34h;
    0x0002934a cmp r0, r2                                        |     
                                                                 |     if (r0 >= r2) {
    0x0002934c bhs.w 0x2908e                                     |         goto label_12;
                                                                 |     }
    0x00029350 ldr r5, [r7, 0x3c]                                |     r5 = var_3ch;
    0x00029352 mov r0, r3                                        |     r0 = r3;
    0x00029354 mov r6, r3                                        |     r6 = r3;
    0x00029356 add r5, r3                                        |     r5 += r3;
                                                                 |     do {
    0x00029358 subs r4, 1                                        |         r4--;
    0x0002935a mov.w r1, 0                                       |         r1 = 0;
                                                                 |         if (r4 <= 1) {
    0x0002935e blo 0x29372                                       |             goto label_32;
                                                                 |         }
    0x00029360 bl 0x68ed0                                        |         rawmemchr ();
    0x00029364 adds r0, 1                                        |         r0++;
    0x00029366 cmp r0, r5                                        |         
    0x00029368 blo 0x29358                                       |         
                                                                 |     } while (r0 <= r5);
    0x0002936a mov r3, r6                                        |     r3 = r6;
    0x0002936c b 0x2908e                                         |     goto label_12;
                                                                 | label_30:
    0x0002936e mov r3, r0                                        |     r3 = r0;
    0x00029370 b 0x29216                                         |     goto label_9;
                                                                 | label_32:
    0x00029372 mov r3, r0                                        |     r3 = r0;
    0x00029374 b 0x2908e                                         |     goto label_12;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x78ad0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                 | #define SWAP64(val) ((uint64_t) (((val & 0x00000000000000ffull) << 56) | \
                                                                 |                                  ((val & 0x000000000000ff00ull) << 40) | \
                                                                 |                                  ((val & 0x0000000000ff0000ull) << 24) | \
                                                                 |                                  ((val & 0x00000000ff000000ull) <<  8) | \
                                                                 |                                  ((val & 0x000000ff00000000ull) >>  8) | \
                                                                 |                                  ((val & 0x0000ff0000000000ull) >> 24) | \
                                                                 |                                  ((val & 0x00ff000000000000ull) >> 40) | \
                                                                 |                                  ((val & 0xff00000000000000ull) >> 56)))
                                                                 |  
    ; (fcn) fcn.00078ad0 ()                                      | void fcn_00078ad0 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t whence;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int32_t var_2ch_2;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_50h;
                                                                 |     int32_t var_50h_2;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int32_t var_68h_2;
                                                                 |     int16_t var_70h;
                                                                 |     int32_t var_70h_2;
                                                                 |     int16_t var_90h;
                                                                 |     int16_t var_b8h;
                                                                 |     int32_t var_b8h_2;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00078ad0 ldr.w r3, [pc, 0x840]                             |     r3 = *(0x00079314);
    0x00078ad4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00078ad8 mov.w sb, 0                                       |     sb = 0;
    0x00078adc ldr.w r7, [pc, 0x838]                             |     
    0x00078ae0 sub sp, 0xdc                                      |     
    0x00078ae2 add r3, pc                                        |     r3 += pc;
    0x00078ae4 mov r5, r1                                        |     r5 = r1;
    0x00078ae6 ldr.w r8, [r3]                                    |     r8 = *(r3);
    0x00078aea mov r6, r2                                        |     r6 = r2;
    0x00078aec add r7, pc                                        |     r7 = 0xf1e08;
    0x00078aee str.w sb, [sp, 0x28]                              |     __asm ("str.w sb, [var_28h]");
    0x00078af2 str.w sb, [r3]                                    |     __asm ("str.w sb, [r3]");
                                                                 |     if (r0 == 0) {
    0x00078af6 cbz r0, 0x78b5c                                   |         goto label_33;
                                                                 |     }
    0x00078af8 ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00078afa mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r3 != 0) {
    0x00078afc cbz r3, 0x78b40                                   |         
    0x00078afe ldr.w r2, [pc, 0x81c]                             |         
    0x00078b02 ldr r2, [r7, r2]                                  |         r2 = *((r7 + r2));
    0x00078b04 ldr r2, [r2]                                      |         r2 = *(0x7931e);
    0x00078b06 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00078b08 beq 0x78b9e                                       |             goto label_34;
                                                                 |         }
    0x00078b0a cmp r3, 0x2f                                      |         
                                                                 |         if (r3 != 0x2f) {
    0x00078b0c beq 0x78b20                                       |             
    0x00078b0e ldr.w r1, [pc, 0x810]                             |             r1 = *(0x00079320);
    0x00078b12 add r1, pc                                        |             r1 += pc;
    0x00078b14 bl 0x6b668                                        |             r0 = strstr ();
    0x00078b18 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00078b1a beq 0x78ba2                                       |                 goto label_35;
                                                                 |             }
                                                                 | label_8:
    0x00078b1c mov r0, sb                                        |             r0 = sb;
    0x00078b1e b 0x78b42                                         |             goto label_36;
                                                                 |         }
    0x00078b20 ldr.w r1, [pc, 0x800]                             |         r1 = *(0x00079324);
    0x00078b24 movs r2, 0xf                                      |         r2 = 0xf;
    0x00078b26 add r1, pc                                        |         r1 += pc;
    0x00078b28 bl 0x68404                                        |         r0 = memcmpeq ();
    0x00078b2c cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00078b2e bne.w 0x78e98                                     |             goto label_37;
                                                                 |         }
                                                                 | label_7:
    0x00078b32 ldr.w r1, [pc, 0x7f4]                             |         
    0x00078b36 mov r0, r4                                        |         r0 = r4;
    0x00078b38 add r1, pc                                        |         r1 = 0xf1e66;
    0x00078b3a bl 0x6b668                                        |         r0 = strstr ();
                                                                 |         if (r0 == 0) {
    0x00078b3e cbz r0, 0x78b62                                   |             goto label_0;
                                                                 |         }
                                                                 |     }
    0x00078b40 movs r0, 0                                        |     r0 = 0;
                                                                 |     do {
                                                                 | label_36:
    0x00078b42 ldr.w r4, [pc, 0x7e8]                             |         r4 = *(0x0007932c);
    0x00078b46 blx 0x1ded4                                       |         fcn_0001ded4 ();
    0x00078b4a add r4, pc                                        |         r4 += pc;
    0x00078b4c ldr r0, [r4]                                      |         r0 = *(r4);
    0x00078b4e blx 0x1ded4                                       |         fcn_0001ded4 ();
    0x00078b52 movs r3, 0                                        |         r3 = 0;
    0x00078b54 str r3, [r4]                                      |         *(r4) = r3;
                                                                 | label_4:
    0x00078b56 add sp, 0xdc                                      |         
    0x00078b58 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_33:
    0x00078b5c ldr.w r4, [pc, 0x7d0]                             |         
    0x00078b60 add r4, pc                                        |         r4 = 0xf1e94;
                                                                 | label_0:
    0x00078b62 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x00078b66 beq 0x78b76                                       |             
    0x00078b68 add r1, sp, 0x68                                  |             r1 += var_68h;
    0x00078b6a mov r0, r4                                        |             r0 = r4;
    0x00078b6c bl 0x9db38                                        |             r0 = stat64_time64 ();
    0x00078b70 cmp r0, 0                                         |             
                                                                 |             if (r0 == 0) {
    0x00078b72 beq.w 0x78e06                                     |                 goto label_38;
                                                                 |             }
                                                                 |         }
                                                                 | label_3:
    0x00078b76 ldr.w r1, [pc, 0x7bc]                             |         
    0x00078b7a mov r0, r4                                        |         r0 = r4;
    0x00078b7c add r1, pc                                        |         r1 = 0xf1eb6;
    0x00078b7e bl 0x4cff4                                        |         r0 = fopen (r0, r1);
    0x00078b82 mov r4, r0                                        |         r4 = r0;
                                                                 |         if (r0 != 0) {
    0x00078b84 cbz r0, 0x78b9a                                   |             
    0x00078b86 bl 0x520ec                                        |             fileno_unlocked ();
    0x00078b8a add r1, sp, 0x68                                  |             r1 += var_68h;
    0x00078b8c bl 0x9db70                                        |             r0 = fstat64_time64 ();
    0x00078b90 mov r8, r0                                        |             r8 = r0;
                                                                 |             if (r0 == 0) {
    0x00078b92 cbz r0, 0x78bd6                                   |                 goto label_39;
                                                                 |             }
                                                                 | label_2:
    0x00078b94 mov r0, r4                                        |             r0 = r4;
    0x00078b96 bl 0x4c878                                        |             IO_fclose ();
                                                                 |         }
                                                                 | label_1:
    0x00078b9a ldr r0, [sp, 0x28]                                |         r0 = var_28h;
    0x00078b9c b 0x78b42                                         |         
                                                                 |     } while (1);
                                                                 | label_34:
    0x00078b9e cmp r3, 0x2f                                      |     
                                                                 |     if (r3 == 0x2f) {
    0x00078ba0 beq 0x78b62                                       |         goto label_0;
                                                                 |     }
                                                                 | label_35:
    0x00078ba2 ldr.w r0, [pc, 0x794]                             |     r0 = *(0x00079338);
    0x00078ba6 add r0, pc                                        |     r0 += pc;
    0x00078ba8 bl 0x2e8f0                                        |     r0 = getenv (r0);
    0x00078bac mov r2, r0                                        |     r2 = r0;
    0x00078bae cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00078bb0 beq.w 0x78e90                                     |         goto label_40;
                                                                 |     }
    0x00078bb4 ldrb r3, [r0]                                     |     r3 = *(r0);
                                                                 |     if (r3 == 0) {
    0x00078bb6 cbnz r3, 0x78bbe                                  |         
    0x00078bb8 ldr.w r2, [pc, 0x780]                             |         
    0x00078bbc add r2, pc                                        |         r2 = "+45 3325-6543";
                                                                 |     }
                                                                 | label_6:
    0x00078bbe ldr.w r1, [pc, 0x780]                             |     r1 = *(0x00079340);
    0x00078bc2 mov r3, r4                                        |     r3 = r4;
    0x00078bc4 add r0, sp, 0x28                                  |     r0 += var_28h;
    0x00078bc6 add r1, pc                                        |     r1 += pc;
    0x00078bc8 bl 0x38ce0                                        |     asprintf ()
    0x00078bcc adds r0, 1                                        |     r0++;
    0x00078bce it ne                                             |     
                                                                 |     if (r0 != 1) {
    0x00078bd0 ldrne r4, [sp, 0x28]                              |         r4 = var_28h;
                                                                 |         goto label_41;
                                                                 |     }
                                                                 |     if (r0 != 1) {
                                                                 | label_41:
    0x00078bd2 bne 0x78b62                                       |         goto label_0;
                                                                 |     }
    0x00078bd4 b 0x78b9a                                         |     goto label_1;
                                                                 | label_39:
    0x00078bd6 ldr.w fp, [pc, 0x76c]                             |     fp = *(0x00079344);
    0x00078bda movs r3, 2                                        |     r3 = 2;
    0x00078bdc str r3, [sp, 8]                                   |     var_8h = r3;
    0x00078bde movw sl, 0x5a54                                   |     
    0x00078be2 ldr.w sb, [pc, 0x764]                             |     
    0x00078be6 movt sl, 0x6669                                   |     sl = 0x66695a54;
    0x00078bea add fp, pc                                        |     
    0x00078bec ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00078bf0 blx 0x1ded4                                       |     fcn_0001ded4 ();
    0x00078bf4 ldr.w r3, [pc, 0x754]                             |     r3 = *(0x0007934c);
    0x00078bf8 add sb, pc                                        |     sb = 0xf1f46;
    0x00078bfa vldr d16, [sp, 0x68]                              |     __asm ("vldr d16, [sp, 0x68]");
    0x00078bfe add r1, sp, 0x3c                                  |     r1 += var_3ch;
    0x00078c00 ldr r2, [r4]                                      |     r2 = *(r4);
    0x00078c02 add r3, pc                                        |     r3 += pc;
    0x00078c04 ldr r0, [sp, 0xb8]                                |     r0 = var_b8h;
    0x00078c06 vstr d16, [r3, 0x10]                              |     __asm ("vstr d16, [r3, 0x10]");
    0x00078c0a vldr d16, [sp, 0x70]                              |     __asm ("vldr d16, [sp, 0x70]");
    0x00078c0e orr r2, r2, 0x8000                                |     r2 |= 0x8000;
    0x00078c12 str.w r8, [fp]                                    |     __asm ("str.w r8, [fp]");
    0x00078c16 str r0, [r3, 0x18]                                |     *((r3 + 0x18)) = r0;
    0x00078c18 str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00078c1a vstr d16, [r3, 8]                                 |     __asm ("vstr d16, [r3, 8]");
    0x00078c1e str r2, [r4]                                      |     *(r4) = r2;
    0x00078c20 strd r5, r6, [sp, 0x10]                           |     __asm ("strd r5, r6, [var_10h]");
                                                                 | label_5:
    0x00078c24 ldr r0, [sp, 0xc]                                 |     r0 = var_ch;
    0x00078c26 mov r3, r4                                        |     r3 = r4;
    0x00078c28 movs r2, 1                                        |     r2 = 1;
    0x00078c2a movs r1, 0x2c                                     |     r1 = 0x2c;
    0x00078c2c bl 0x53d7c                                        |     r0 = fread_unlocked ();
    0x00078c30 cmp r0, 1                                         |     
    0x00078c32 mov fp, r0                                        |     
                                                                 |     if (r0 != 1) {
    0x00078c34 bne 0x78b94                                       |         goto label_2;
                                                                 |     }
    0x00078c36 ldr r3, [sp, 0x3c]                                |     r3 = var_3ch;
    0x00078c38 cmp r3, sl                                        |     
                                                                 |     if (r3 != sl) {
    0x00078c3a bne 0x78b94                                       |         goto label_2;
                                                                 |     }
    0x00078c3c ldr r2, [sp, 0x58]                                |     r2 = var_58h;
    0x00078c3e ldrd r3, r5, [sp, 0x50]                           |     __asm ("ldrd r3, r5, [var_50h]");
    0x00078c42 ldr r1, [sp, 0x5c]                                |     r1 = var_5ch;
    0x00078c44 rev r0, r2                                        |     r2 = SWAP32 (r0);
    0x00078c46 ldr r2, [sp, 0x64]                                |     r2 = var_64h;
    0x00078c48 rev.w ip, r3                                      |     r3 = SWAPundefined (ip);
    0x00078c4c ldr r3, [sp, 0x60]                                |     r3 = var_60h;
    0x00078c4e rev r1, r1                                        |     r1 = SWAP32 (r1);
    0x00078c50 str.w r0, [sb, 0x24]                              |     __asm ("str.w r0, [sb, 0x24]");
    0x00078c54 rev r2, r2                                        |     r2 = SWAP32 (r2);
    0x00078c56 str.w r1, [sb, 0x1c]                              |     __asm ("str.w r1, [sb, 0x1c]");
    0x00078c5a str r2, [sp, 4]                                   |     whence = r2;
    0x00078c5c rev r2, r5                                        |     r5 = SWAP32 (r2);
    0x00078c5e cmp r2, ip                                        |     
    0x00078c60 rev r3, r3                                        |     r3 = SWAP32 (r3);
    0x00078c62 mov lr, r2                                        |     lr = r2;
    0x00078c64 it lo                                             |     
                                                                 |     if (r2 >= ip) {
    0x00078c66 movlo lr, ip                                      |         lr = ip;
                                                                 |     }
    0x00078c68 cmp lr, r3                                        |     
    0x00078c6a str.w r3, [sb, 0x20]                              |     __asm ("str.w r3, [sb, 0x20]");
                                                                 |     if (lr > r3) {
    0x00078c6e bhi 0x78b94                                       |         goto label_2;
                                                                 |     }
    0x00078c70 ldr r6, [sp, 8]                                   |     r6 = var_8h;
    0x00078c72 cmp r6, 1                                         |     
                                                                 |     if (r6 != 1) {
    0x00078c74 bne.w 0x78e56                                     |         goto label_42;
                                                                 |     }
    0x00078c78 ldr.w sl, [sp, 0x90]                              |     sl = var_90h;
    0x00078c7c mov r0, r4                                        |     r0 = r4;
    0x00078c7e strd ip, r5, [sp, 0x18]                           |     __asm ("strd ip, r5, [var_18h]");
    0x00078c82 mov fp, r2                                        |     
    0x00078c84 ldrd r5, r6, [sp, 0x10]                           |     __asm ("ldrd r5, r6, [var_10h]");
    0x00078c88 bl 0x52e74                                        |     r0 = ftello ();
    0x00078c8c subs.w sl, sl, r0                                 |     sl -= r0;
                                                                 |     if (sl < sl) {
    0x00078c90 bmi 0x78b94                                       |         goto label_2;
                                                                 |     }
    0x00078c92 ldrd r3, ip, [sb, 0x1c]                           |     __asm ("ldrd r3, ip, [sb, 0x1c]");
    0x00078c96 add.w r1, ip, ip, lsl 1                           |     r1 = ip + (ip << 1);
    0x00078c9a add.w r2, r3, r3, lsl 3                           |     r2 = r3 + (r3 << 3);
    0x00078c9e add.w r2, r2, r1, lsl 1                           |     r2 += (r1 << 1);
    0x00078ca2 ldr r1, [sp, 4]                                   |     r1 = whence;
    0x00078ca4 add r2, r1                                        |     r2 += r1;
    0x00078ca6 cmp sl, r2                                        |     
                                                                 |     if (sl <= r2) {
    0x00078ca8 blo.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078cac ldr.w r0, [sb, 0x24]                              |     r0 = *((sb + 0x24));
    0x00078cb0 sub.w sl, sl, r2                                  |     sl -= r2;
    0x00078cb4 movw r2, 0x5555                                   |     
    0x00078cb8 movt r2, 0x1555                                   |     r2 = 0x15555555;
    0x00078cbc cmp r0, r2                                        |     
                                                                 |     if (r0 > r2) {
    0x00078cbe bhi.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078cc2 lsls r2, r0, 1                                    |     r2 = r0 << 1;
    0x00078cc4 add r0, r2                                        |     r0 += r2;
    0x00078cc6 lsls r0, r0, 2                                    |     r0 <<= 2;
    0x00078cc8 cmp r0, sl                                        |     
                                                                 |     if (r0 > sl) {
    0x00078cca bhi.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078cce sub.w r1, sl, r0                                  |     r1 = sl - r0;
    0x00078cd2 cmp r1, fp                                        |     
                                                                 |     if (r1 <= fp) {
    0x00078cd4 blo.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078cd8 subs.w lr, r1, fp                                 |     lr = r1 - fp;
                                                                 |     if (lr == r1) {
    0x00078cdc beq.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078ce0 ldr r1, [sp, 0x18]                                |     r1 = var_18h;
    0x00078ce2 add.w r0, lr, -1                                  |     r0 = lr + -1;
    0x00078ce6 cmp r0, r1                                        |     
                                                                 |     if (r0 <= r1) {
    0x00078ce8 blo.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078cec sub.w r1, lr, r1                                  |     r1 = lr - r1;
    0x00078cf0 subs r1, 1                                        |     r1--;
    0x00078cf2 str r1, [sp, 0x10]                                |     var_10h = r1;
                                                                 |     if (r1 == 1) {
    0x00078cf4 beq.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078cf8 movs r1, 8                                        |     r1 = 8;
    0x00078cfa str r1, [sp, 0xc]                                 |     var_ch = r1;
                                                                 | label_17:
    0x00078cfc add ip, r3                                        |     
    0x00078cfe str r3, [sp, 8]                                   |     var_8h = r3;
    0x00078d00 add ip, r2                                        |     
    0x00078d02 ldr r2, [sp, 4]                                   |     r2 = whence;
    0x00078d04 add.w sl, r5, r2                                  |     sl = r5 + r2;
    0x00078d08 ldr r2, [sp, 0x10]                                |     r2 = var_10h;
    0x00078d0a add sl, r2                                        |     sl += r2;
    0x00078d0c add sl, r3                                        |     sl += r3;
    0x00078d0e add.w sl, sl, ip, lsl 3                           |     sl += (ip << 3);
    0x00078d12 mov r0, sl                                        |     r0 = sl;
    0x00078d14 blx 0x1df60                                       |     fcn_0001df60 ();
    0x00078d18 ldr.w r1, [pc, 0x634]                             |     r1 = *(0x00079350);
    0x00078d1c mov r2, r0                                        |     r2 = r0;
    0x00078d1e add r1, pc                                        |     r1 += pc;
    0x00078d20 str r0, [r1]                                      |     *(r1) = r0;
    0x00078d22 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00078d24 beq.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078d28 adds.w sb, sl, r0                                 |     sb = sl + r0;
    0x00078d2c ldr r3, [sp, 8]                                   |     r3 = var_8h;
                                                                 |     if (sb >= sl) {
    0x00078d2e bhs.w 0x790f6                                     |         goto label_43;
                                                                 |     }
                                                                 | label_20:
    0x00078d32 strd r2, sb, [sp, 0x2c]                           |     __asm ("strd r2, sb, [var_2ch]");
    0x00078d36 add.w sl, sp, 0x2c                                |     sl += var_2ch;
    0x00078d3a ldr.w sb, [pc, 0x618]                             |     
    0x00078d3e movs r2, 8                                        |     r2 = 8;
    0x00078d40 mov r1, r2                                        |     r1 = r2;
    0x00078d42 mov r0, sl                                        |     r0 = sl;
    0x00078d44 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078d48 add sb, pc                                        |     sb = 0xf20a2;
    0x00078d4a movs r2, 8                                        |     r2 = 8;
    0x00078d4c ldr.w r3, [sb, 0x24]                              |     r3 = *(0xf20c6);
    0x00078d50 movs r1, 0x10                                     |     r1 = 0x10;
    0x00078d52 mov r0, sl                                        |     r0 = sl;
    0x00078d54 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078d58 ldr.w r3, [sb, 0x20]                              |     r3 = *(0xf20c2);
    0x00078d5c movs r2, 4                                        |     r2 = 4;
    0x00078d5e movs r1, 8                                        |     r1 = 8;
    0x00078d60 str.w r0, [sb, 0x28]                              |     __asm ("str.w r0, [sb, 0x28]");
    0x00078d64 mov r0, sl                                        |     r0 = sl;
    0x00078d66 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078d6a movs r2, 1                                        |     r2 = 1;
    0x00078d6c ldr.w r3, [sb, 0x1c]                              |     r3 = *(0xf20be);
    0x00078d70 mov r1, r2                                        |     r1 = r2;
    0x00078d72 str.w r0, [sb, 0x2c]                              |     __asm ("str.w r0, [sb, 0x2c]");
    0x00078d76 mov r0, sl                                        |     r0 = sl;
    0x00078d78 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078d7c movs r2, 1                                        |     r2 = 1;
    0x00078d7e ldr r3, [sp, 4]                                   |     r3 = whence;
    0x00078d80 str.w r0, [sb, 0x30]                              |     __asm ("str.w r0, [sb, 0x30]");
    0x00078d84 mov r1, r2                                        |     r1 = r2;
    0x00078d86 mov r0, sl                                        |     r0 = sl;
    0x00078d88 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078d8c ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00078d8e str.w r0, [sb, 0x34]                              |     __asm ("str.w r0, [sb, 0x34]");
    0x00078d92 cmp r3, 8                                         |     
    0x00078d94 it ne                                             |     
                                                                 |     if (r3 == 8) {
    0x00078d96 movne r0, 0                                       |         r0 = 0;
                                                                 |     }
                                                                 |     if (r3 == 8) {
    0x00078d98 beq.w 0x78ebe                                     |         goto label_44;
                                                                 |     }
                                                                 | label_10:
    0x00078d9c ldr.w r3, [pc, 0x5b8]                             |     
    0x00078da0 add r3, pc                                        |     r3 = "func != NULL";
    0x00078da2 str r0, [r3, 0x38]                                |     *((r3 + 0x38)) = r0;
    0x00078da4 cmp r5, 0                                         |     
                                                                 |     if (r5 != 0) {
    0x00078da6 bne.w 0x78eae                                     |         goto label_45;
                                                                 |     }
                                                                 | label_9:
    0x00078daa ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00078dac lsls r3, r4, 7                                    |     r3 = r4 << 7;
                                                                 |     if (r3 <= r4) {
    0x00078dae bgt 0x78db2                                       |         
    0x00078db0 lsls r3, r4, 7                                    |         r3 = r4 << 7;
                                                                 |     }
                                                                 |     if (r3 <= r4) {
    0x00078db2 bgt 0x78db6                                       |         
    0x00078db4 strb r0, [r5, r6]                                 |         *((r5 + r6)) = r0;
                                                                 |     }
    0x00078db6 ldr.w r3, [pc, 0x5a8]                             |     r3 = *(0x00079360);
    0x00078dba ldr r1, [sp, 0xc]                                 |     r1 = var_ch;
    0x00078dbc add r5, pc                                        |     r5 += pc;
    0x00078dbe add r3, pc                                        |     r3 += pc;
    0x00078dc0 ldr r2, [r5, 0x1c]                                |     r2 = *((r5 + 0x1c));
    0x00078dc2 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00078dc4 mov r3, r4                                        |     r3 = r4;
    0x00078dc6 bl 0x53d7c                                        |     fread_unlocked ();
    0x00078dca ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x00078dcc mov r2, r0                                        |     r2 = r0;
    0x00078dce cmp r0, r3                                        |     
                                                                 |     if (r0 != r3) {
    0x00078dd0 bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078dd4 movs r1, 1                                        |     r1 = 1;
    0x00078dd6 ldr r0, [r5, 0x30]                                |     r0 = *((r5 + 0x30));
    0x00078dd8 mov r3, r4                                        |     r3 = r4;
    0x00078dda bl 0x53d7c                                        |     fread_unlocked ();
    0x00078dde ldr r1, [r5, 0x1c]                                |     r1 = *((r5 + 0x1c));
    0x00078de0 cmp r0, r1                                        |     
                                                                 |     if (r0 != r1) {
    0x00078de2 bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078de6 ldr r6, [r5, 0x20]                                |     r6 = *((r5 + 0x20));
    0x00078de8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00078dea beq.w 0x7909c                                     |         goto label_46;
                                                                 |     }
    0x00078dee ldr r3, [r5, 0x30]                                |     r3 = *((r5 + 0x30));
    0x00078df0 subs r0, r1, 1                                    |     r0 = r1 - 1;
    0x00078df2 add r0, r3                                        |     r0 += r3;
    0x00078df4 subs r3, 1                                        |     r3--;
    0x00078df6 b 0x78dfc                                         |     
                                                                 |     while (r2 <= r6) {
    0x00078df8 cmp r0, r3                                        |         
                                                                 |         if (r0 == r3) {
    0x00078dfa beq 0x78ecc                                       |             goto label_47;
                                                                 |         }
    0x00078dfc ldrb r2, [r3, 1]!                                 |         r2 = *((r3 += 1));
    0x00078e00 cmp r2, r6                                        |         
    0x00078e02 blo 0x78df8                                       |         
                                                                 |     }
    0x00078e04 b 0x78b94                                         |     goto label_2;
                                                                 | label_38:
    0x00078e06 ldr.w ip, [pc, 0x55c]                             |     ip = *(0x00079364);
    0x00078e0a ldrd r0, r2, [sp, 0x70]                           |     __asm ("ldrd r0, r2, [var_70h]");
    0x00078e0c lsls r4, r3, 8                                    |     r4 = r3 << 8;
    0x00078e0e add ip, pc                                        |     
    0x00078e10 ldrd r1, r3, [ip, 8]                              |     __asm ("ldrd r1, r3, [ip, 8]");
    0x00078e14 cmp r2, r3                                        |     
    0x00078e16 it eq                                             |     
                                                                 |     if (r2 != r3) {
    0x00078e18 cmpeq r0, r1                                      |         __asm ("cmpeq r0, r1");
                                                                 |         goto label_48;
                                                                 |     }
                                                                 |     if (r2 != r3) {
                                                                 | label_48:
    0x00078e1a bne.w 0x78b76                                     |         goto label_3;
                                                                 |     }
    0x00078e1e ldrd r0, r2, [sp, 0x68]                           |     __asm ("ldrd r0, r2, [var_68h]");
    0x00078e22 ldrd r1, r3, [ip, 0x10]                           |     __asm ("ldrd r1, r3, [ip, 0x10]");
    0x00078e26 cmp r2, r3                                        |     
    0x00078e28 it eq                                             |     
                                                                 |     if (r2 != r3) {
    0x00078e2a cmpeq r0, r1                                      |         __asm ("cmpeq r0, r1");
                                                                 |         goto label_49;
                                                                 |     }
                                                                 |     if (r2 != r3) {
                                                                 | label_49:
    0x00078e2c bne.w 0x78b76                                     |         goto label_3;
                                                                 |     }
    0x00078e30 ldr.w r3, [ip, 0x18]                              |     r3 = *((ip + 0x18));
    0x00078e34 ldrd r1, r2, [sp, 0xb8]                           |     __asm ("ldrd r1, r2, [var_b8h]");
    0x00078e38 asrs r0, r3, 0x1f                                 |     r0 = r3 >> 0x1f;
    0x00078e3a cmp r0, r2                                        |     
    0x00078e3c it eq                                             |     
                                                                 |     if (r0 != r2) {
    0x00078e3e cmpeq r3, r1                                      |         __asm ("cmpeq r3, r1");
                                                                 |         goto label_50;
                                                                 |     }
                                                                 |     if (r0 != r2) {
                                                                 | label_50:
    0x00078e40 bne.w 0x78b76                                     |         goto label_3;
                                                                 |     }
                                                                 | label_23:
    0x00078e44 ldr.w r3, [pc, 0x520]                             |     
    0x00078e48 movs r2, 1                                        |     r2 = 1;
    0x00078e4a ldr r0, [sp, 0x28]                                |     r0 = var_28h;
    0x00078e4c add r3, pc                                        |     r3 = 0xf21b8;
    0x00078e4e str r2, [r3]                                      |     *(r3) = r2;
    0x00078e50 blx 0x1ded4                                       |     fcn_0001ded4 ();
    0x00078e54 b 0x78b56                                         |     goto label_4;
                                                                 | label_42:
    0x00078e56 ldrb.w lr, [sp, 0x40]                             |     lr = var_40h;
    0x00078e5a cmp.w lr, 0                                       |     
                                                                 |     if (lr == 0) {
    0x00078e5e beq.w 0x79080                                     |         goto label_51;
                                                                 |     }
    0x00078e62 ldr r5, [sp, 4]                                   |     r5 = whence;
    0x00078e64 add.w r1, r1, r1, lsl 2                           |     r1 += (r1 << 2);
    0x00078e68 add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x00078e6c add r5, r2                                        |     r5 += r2;
    0x00078e6e mov r2, r5                                        |     r2 = r5;
    0x00078e70 add r2, ip                                        |     r2 += ip;
    0x00078e72 add r1, r2                                        |     r1 += r2;
    0x00078e74 mov r2, fp                                        |     r2 = fp;
    0x00078e76 add.w r1, r1, r3, lsl 1                           |     r1 += (r3 << 1);
    0x00078e7a add.w r1, r1, r0, lsl 3                           |     r1 += (r0 << 3);
    0x00078e7e mov r0, r4                                        |     r0 = r4;
    0x00078e80 bl 0x5239c                                        |     r0 = fseek ();
    0x00078e84 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00078e86 bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078e8a str.w fp, [sp, 8]                                 |     __asm ("str.w fp, [var_8h]");
    0x00078e8e b 0x78c24                                         |     goto label_5;
                                                                 | label_40:
    0x00078e90 ldr.w r2, [pc, 0x4d8]                             |     
    0x00078e94 add r2, pc                                        |     r2 = 0xf2204;
    0x00078e96 b 0x78bbe                                         |     goto label_6;
                                                                 | label_37:
    0x00078e98 ldr.w r1, [pc, 0x4d4]                             |     
    0x00078e9c movs r2, 0x13                                     |     r2 = 0x13;
    0x00078e9e mov r0, r4                                        |     r0 = r4;
    0x00078ea0 add r1, pc                                        |     r1 = "inity";
    0x00078ea2 bl 0x68404                                        |     r0 = memcmpeq ();
    0x00078ea6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00078ea8 beq.w 0x78b32                                     |         goto label_7;
                                                                 |     }
    0x00078eac b 0x78b1c                                         |     goto label_8;
                                                                 | label_45:
    0x00078eae movs r2, 1                                        |     r2 = 1;
    0x00078eb0 mov r3, r5                                        |     r3 = r5;
    0x00078eb2 mov r0, sl                                        |     r0 = sl;
    0x00078eb4 mov r1, r2                                        |     r1 = r2;
    0x00078eb6 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078eba str r0, [r6]                                      |     *(r6) = r0;
    0x00078ebc b 0x78daa                                         |     goto label_9;
                                                                 | label_44:
    0x00078ebe movs r2, 1                                        |     r2 = 1;
    0x00078ec0 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00078ec2 mov r1, r2                                        |     r1 = r2;
    0x00078ec4 mov r0, sl                                        |     r0 = sl;
    0x00078ec6 bl 0x67a8c                                        |     libc_alloc_buffer_alloc_array ();
    0x00078eca b 0x78d9c                                         |     goto label_10;
                                                                 | label_47:
    0x00078ecc ldr.w r3, [pc, 0x4a4]                             |     
    0x00078ed0 add r3, pc                                        |     r3 = 0xf2248;
    0x00078ed2 ldr r0, [r3]                                      |     r0 = *(0xf2248);
    0x00078ed4 ldr r3, [sp, 0xc]                                 |     r3 = var_ch;
    0x00078ed6 cmp r3, 4                                         |     
    0x00078ed8 it ne                                             |     
                                                                 |     if (r3 == 4) {
    0x00078eda addne r1, r0, r1, lsl 3                           |         r1 = r0 + (r1 << 3);
                                                                 |     }
                                                                 |     if (r3 == 4) {
    0x00078ede beq.w 0x79056                                     |         goto label_52;
                                                                 |     }
                                                                 |     do {
    0x00078ee2 ldr r2, [r0, 4]                                   |         r2 = *((r0 + 4));
    0x00078ee4 ldr r3, [r0]                                      |         r3 = *(r0);
    0x00078ee6 rev r2, r2                                        |         r2 = SWAP32 (r2);
    0x00078ee8 str r2, [r0], 8                                   |         *(r0) = r2;
                                                                 |         r0 += 8;
    0x00078eec cmp r1, r0                                        |         
    0x00078eee rev r3, r3                                        |         r3 = SWAP32 (r3);
    0x00078ef0 str r3, [r0, -0x4]                                |         *((r0 - 0x4)) = r3;
    0x00078ef4 bne 0x78ee2                                       |         
                                                                 |     } while (r1 != r0);
                                                                 | label_15:
    0x00078ef6 ldr.w sb, [pc, 0x480]                             |     
    0x00078efa movs r6, 0                                        |     r6 = 0;
    0x00078efc ldr.w r5, [pc, 0x47c]                             |     r5 = *(0x0007937c);
    0x00078f00 add.w sl, sp, 0x34                                |     sl += var_34h;
    0x00078f04 str r7, [sp, 8]                                   |     var_8h = r7;
    0x00078f06 ldr r7, [sp, 4]                                   |     r7 = whence;
    0x00078f08 add sb, pc                                        |     sb = 0xf2286;
    0x00078f0a add r5, pc                                        |     r5 += pc;
                                                                 | label_11:
    0x00078f0c mov r3, r4                                        |     r3 = r4;
    0x00078f0e movs r2, 4                                        |     r2 = 4;
    0x00078f10 movs r1, 1                                        |     r1 = 1;
    0x00078f12 mov r0, sl                                        |     r0 = sl;
    0x00078f14 bl 0x53d7c                                        |     r0 = fread_unlocked ();
    0x00078f18 cmp r0, 4                                         |     
                                                                 |     if (r0 != 4) {
    0x00078f1a bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078f1e ldrd r2, r1, [r4, 4]                              |     __asm ("ldrd r2, r1, [r4, 4]");
    0x00078f22 cmp r2, r1                                        |     
                                                                 |     if (r2 >= r1) {
    0x00078f24 bhs.w 0x7904e                                     |         goto label_53;
                                                                 |     }
    0x00078f28 adds r1, r2, 1                                    |     r1 = r2 + 1;
    0x00078f2a str r1, [r4, 4]                                   |     *((r4 + 4)) = r1;
    0x00078f2c ldrb r0, [r2]                                     |     r0 = *(r2);
                                                                 | label_14:
    0x00078f2e cmp r0, 1                                         |     
                                                                 |     if (r0 > 1) {
    0x00078f30 bhi.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078f34 ldr.w r2, [sb, 0x2c]                              |     r2 = *((sb + 0x2c));
    0x00078f38 lsls r1, r6, 3                                    |     r1 = r6 << 3;
    0x00078f3a add r2, r1                                        |     r2 += r1;
    0x00078f3c strb r0, [r2, 4]                                  |     *((r2 + 4)) = r0;
    0x00078f3e ldrd r2, r0, [r4, 4]                              |     __asm ("ldrd r2, r0, [r4, 4]");
    0x00078f42 cmp r2, r0                                        |     
                                                                 |     if (r2 >= r0) {
    0x00078f44 bhs.w 0x79072                                     |         goto label_54;
                                                                 |     }
    0x00078f48 adds r0, r2, 1                                    |     r0 = r2 + 1;
    0x00078f4a str r0, [r4, 4]                                   |     *((r4 + 4)) = r0;
    0x00078f4c ldrb r2, [r2]                                     |     r2 = *(r2);
                                                                 | label_16:
    0x00078f4e cmp r2, r7                                        |     
                                                                 |     if (r2 > r7) {
    0x00078f50 bhi.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078f54 ldr r0, [r5, 0x2c]                                |     r0 = *((r5 + 0x2c));
    0x00078f56 adds r6, 1                                        |     r6++;
    0x00078f58 ldr r3, [r5, 0x20]                                |     r3 = *((r5 + 0x20));
    0x00078f5a add.w ip, r0, r1                                  |     
    0x00078f5e strb.w r2, [ip, 5]                                |     *((ip + 5)) = r2;
    0x00078f62 cmp r3, r6                                        |     
    0x00078f64 ldr r2, [sp, 0x34]                                |     r2 = var_34h;
    0x00078f66 rev r2, r2                                        |     r2 = SWAP32 (r2);
    0x00078f68 str r2, [r0, r1]                                  |     *((r0 + r1)) = r2;
                                                                 |     if (r3 > r6) {
    0x00078f6a bhi 0x78f0c                                       |         goto label_11;
                                                                 |     }
    0x00078f6c ldr r7, [sp, 8]                                   |     r7 = var_8h;
                                                                 | label_18:
    0x00078f6e ldr.w r5, [pc, 0x410]                             |     
    0x00078f72 mov r3, r4                                        |     r3 = r4;
    0x00078f74 ldr r6, [sp, 4]                                   |     r6 = whence;
    0x00078f76 movs r1, 1                                        |     r1 = 1;
    0x00078f78 add r5, pc                                        |     r5 = 0xf22fe;
    0x00078f7a ldr r0, [r5, 0x34]                                |     r0 = *(0xf2332);
    0x00078f7c mov r2, r6                                        |     r2 = r6;
    0x00078f7e bl 0x53d7c                                        |     r0 = fread_unlocked ();
    0x00078f82 cmp r0, r6                                        |     
                                                                 |     if (r0 != r6) {
    0x00078f84 bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078f88 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00078f8a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00078f8c beq 0x7900c                                       |         goto label_55;
                                                                 |     }
    0x00078f8e ldr r6, [pc, 0x3f4]                               |     
    0x00078f90 mov.w sb, 0                                       |     sb = 0;
    0x00078f94 ldr r3, [pc, 0x3f0]                               |     
    0x00078f96 add.w sl, sp, 0x34                                |     sl += var_34h;
    0x00078f9a str.w r8, [sp, 8]                                 |     __asm ("str.w r8, [var_8h]");
    0x00078f9e ldr.w r8, [sp, 0xc]                               |     r8 = var_ch;
    0x00078fa2 add r6, pc                                        |     r6 = 0xf232c;
    0x00078fa4 add r3, pc                                        |     r3 = "int_no <= (uintmax_t) (exponent < 0 ? (INTMAX_MAX - bits + 1) / 4 : (INTMAX_MAX - exponent - bits + 1) / 4)";
    0x00078fa6 str r3, [sp, 4]                                   |     whence = r3;
                                                                 | label_12:
    0x00078fa8 mov r3, r4                                        |     r3 = r4;
    0x00078faa mov r2, r8                                        |     r2 = r8;
    0x00078fac movs r1, 1                                        |     r1 = 1;
    0x00078fae mov r0, sl                                        |     r0 = sl;
    0x00078fb0 bl 0x53d7c                                        |     r0 = fread_unlocked ();
    0x00078fb4 cmp r8, r0                                        |     
                                                                 |     if (r8 != r0) {
    0x00078fb6 bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078fb8 add r5, sp, 0x3b4                                 |     r5 = sp + 0x3b4;
    0x00078fba ldr r3, [sp, 4]                                   |     r3 = whence;
    0x00078fbc cmp.w r8, 4                                       |     
    0x00078fc0 it ne                                             |     
                                                                 |     if (r8 == 4) {
    0x00078fc2 ldrne r0, [sp, 0x34]                              |         r0 = var_34h;
                                                                 |     }
    0x00078fc4 lsl.w r5, sb, 4                                   |     r5 = sb << 4;
    0x00078fc8 ldr r2, [r3, 0x28]                                |     r2 = *((r3 + 0x28));
    0x00078fca itee eq                                           |     
                                                                 |     if (r8 != 4) {
    0x00078fcc ldreq r3, [sp, 0x34]                              |         r3 = var_34h;
                                                                 |     }
                                                                 |     if (r8 != 4) {
    0x00078fce revne r0, r0                                      |         __asm ("revne r0, r0");
                                                                 |     }
                                                                 |     if (r8 == 4) {
    0x00078fd0 ldrne r3, [sp, 0x38]                              |         r3 = var_38h;
                                                                 |     }
    0x00078fd2 add.w r1, r2, r5                                  |     r1 = r2 + r5;
    0x00078fd6 itte eq                                           |     
                                                                 |     if (r8 == 4) {
    0x00078fd8 reveq r3, r3                                      |         __asm ("reveq r3, r3");
                                                                 |     }
                                                                 |     if (r8 == 4) {
    0x00078fda asreq r0, r3, 0x1f                                |         __asm ("asreq r0, r3, 0x1f");
                                                                 |     }
                                                                 |     if (r8 != 4) {
    0x00078fdc revne r3, r3                                      |         __asm ("revne r3, r3");
                                                                 |     }
    0x00078fde str r3, [r2, r5]                                  |     *((r2 + r5)) = r3;
    0x00078fe0 mov r3, r4                                        |     r3 = r4;
    0x00078fe2 str r0, [r1, 4]                                   |     *((r1 + 4)) = r0;
    0x00078fe4 movs r2, 4                                        |     r2 = 4;
    0x00078fe6 movs r1, 1                                        |     r1 = 1;
    0x00078fe8 mov r0, sl                                        |     r0 = sl;
    0x00078fea bl 0x53d7c                                        |     r0 = fread_unlocked ();
    0x00078fee cmp r0, 4                                         |     
                                                                 |     if (r0 != 4) {
    0x00078ff0 bne.w 0x78b94                                     |         goto label_2;
                                                                 |     }
    0x00078ff4 ldr r3, [sp, 0x34]                                |     r3 = var_34h;
    0x00078ff6 add.w sb, sb, 1                                   |     sb++;
    0x00078ffa rev r2, r3                                        |     r3 = SWAP32 (r2);
    0x00078ffc ldr r3, [r6, 0x28]                                |     r3 = *((r6 + 0x28));
    0x00078ffe add r3, r5                                        |     r3 += r5;
    0x00079000 str r2, [r3, 8]                                   |     *((r3 + 8)) = r2;
    0x00079002 ldr r3, [r6, 0x24]                                |     r3 = *((r6 + 0x24));
    0x00079004 cmp r3, sb                                        |     
                                                                 |     if (r3 > sb) {
    0x00079006 bhi 0x78fa8                                       |         goto label_12;
                                                                 |     }
    0x00079008 ldr.w r8, [sp, 8]                                 |     r8 = var_8h;
                                                                 | label_55:
    0x0007900c ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x0007900e mov r5, r3                                        |     r5 = r3;
    0x00079010 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00079012 beq 0x790a4                                       |         goto label_56;
                                                                 |     }
    0x00079014 ldr r6, [pc, 0x374]                               |     
    0x00079016 movs r5, 0                                        |     r5 = 0;
    0x00079018 add r6, pc                                        |     r6 = "numsize < RETURN_LIMB_SIZE";
    0x0007901a b 0x79030                                         |     
                                                                 |     while (r3 <= r2) {
                                                                 | label_13:
    0x0007901c ldr r2, [r6, 0x2c]                                |         r2 = *((r6 + 0x2c));
    0x0007901e subs r3, 0                                        |         
    0x00079020 it ne                                             |         
                                                                 |         if (r3 == 0) {
    0x00079022 movne r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x00079024 add.w r2, r2, r5, lsl 3                           |         r2 += (r5 << 3);
    0x00079028 adds r5, 1                                        |         r5++;
    0x0007902a cmp r5, fp                                        |         
    0x0007902c strb r3, [r2, 6]                                  |         *((r2 + 6)) = r3;
                                                                 |         if (r5 >= fp) {
    0x0007902e bhs 0x790a4                                       |             goto label_56;
                                                                 |         }
    0x00079030 ldrd r3, r2, [r4, 4]                              |         __asm ("ldrd r3, r2, [r4, 4]");
    0x00079034 cmp r3, r2                                        |         
    0x00079036 ittt lo                                           |         
                                                                 |         if (r3 >= r2) {
    0x00079038 addlo r2, r3, 1                                   |             r2 = r3 + 1;
                                                                 |         }
                                                                 |         if (r3 >= r2) {
    0x0007903a strlo r2, [r4, 4]                                 |             *((r4 + 4)) = r2;
                                                                 |         }
                                                                 |         if (r3 >= r2) {
    0x0007903c ldrblo r3, [r3]                                   |             r3 = *(r3);
                                                                 |         }
    0x0007903e blo 0x7901c                                       |         
                                                                 |     }
    0x00079040 mov r0, r4                                        |     r0 = r4;
    0x00079042 bl 0x55e5c                                        |     r0 = uflow ();
    0x00079046 adds r1, r0, 1                                    |     r1 = r0 + 1;
    0x00079048 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r1 != r0) {
    0x0007904a bne 0x7901c                                       |         goto label_13;
                                                                 |     }
    0x0007904c b 0x78b94                                         |     goto label_2;
                                                                 | label_53:
    0x0007904e mov r0, r4                                        |     r0 = r4;
    0x00079050 bl 0x55e5c                                        |     uflow ();
    0x00079054 b 0x78f2e                                         |     goto label_14;
                                                                 | label_52:
    0x00079056 lsls r2, r1, 2                                    |     r2 = r1 << 2;
    0x00079058 adds r5, r0, r2                                   |     r5 = r0 + r2;
    0x0007905a add r2, r5                                        |     r2 += r5;
                                                                 |     do {
    0x0007905c ldr r3, [r5, -0x4]!                               |         r3 = *((r5 -= 0x4));
    0x00079060 rev r3, r3                                        |         r3 = SWAP32 (r3);
    0x00079062 cmp r0, r5                                        |         
    0x00079064 str r3, [r2, -0x8]!                               |         *((r2 -= 0x8)) = r3;
    0x00079068 asr.w r3, r3, 0x1f                                |         r3 >>= 0x1f;
    0x0007906c str r3, [r2, 4]                                   |         *((r2 + 4)) = r3;
    0x0007906e bne 0x7905c                                       |         
                                                                 |     } while (r0 != r5);
    0x00079070 b 0x78ef6                                         |     goto label_15;
                                                                 | label_54:
    0x00079072 mov r0, r4                                        |     r0 = r4;
    0x00079074 str r1, [sp, 0x14]                                |     var_14h = r1;
    0x00079076 bl 0x55e5c                                        |     uflow ();
    0x0007907a ldr r1, [sp, 0x14]                                |     r1 = var_14h;
    0x0007907c mov r2, r0                                        |     r2 = r0;
    0x0007907e b 0x78f4e                                         |     goto label_16;
                                                                 | label_51:
    0x00079080 str.w ip, [sp, 0x18]                              |     __asm ("str.w ip, [var_18h]");
    0x00079084 mov ip, r3                                        |     
    0x00079086 mov r3, r1                                        |     r3 = r1;
    0x00079088 movs r1, 4                                        |     r1 = 4;
    0x0007908a mov fp, r2                                        |     
    0x0007908c str r5, [sp, 0x1c]                                |     var_1ch = r5;
    0x0007908e lsls r2, r0, 1                                    |     r2 = r0 << 1;
    0x00079090 ldrd r5, r6, [sp, 0x10]                           |     __asm ("ldrd r5, r6, [var_10h]");
    0x00079094 str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00079096 str.w lr, [sp, 0x10]                              |     __asm ("str.w lr, [var_10h]");
    0x0007909a b 0x78cfc                                         |     goto label_17;
                                                                 | label_46:
    0x0007909c cmp r6, 0                                         |     
                                                                 |     if (r6 != 0) {
    0x0007909e bne.w 0x78ef6                                     |         goto label_15;
                                                                 |     }
    0x000790a2 b 0x78f6e                                         |     goto label_18;
                                                                 | label_56:
    0x000790a4 ldr r3, [pc, 0x2e8]                               |     
    0x000790a6 movs r0, 0                                        |     r0 = 0;
    0x000790a8 add r3, pc                                        |     r3 = 0xf243c;
    0x000790aa ldr r2, [r3, 0x2c]                                |     r2 = *(0xf2468);
    0x000790ac ldr r1, [r3, 0x20]                                |     r1 = *(0xf245c);
    0x000790ae subs r3, r2, 2                                    |     r3 = r2 - 2;
    0x000790b0 b 0x790b8                                         |     
                                                                 |     while (r1 > r5) {
    0x000790b2 adds r5, 1                                        |         r5++;
    0x000790b4 strb.w r0, [r3, r5, lsl 3]                        |         offset_0 = r5 << 3;
                                                                 |         *((r3 + offset_0)) = r0;
    0x000790b8 cmp r1, r5                                        |         
    0x000790ba bhi 0x790b2                                       |         
                                                                 |     }
    0x000790bc ldr r6, [pc, 0x2d4]                               |     
    0x000790be movs r5, 0                                        |     r5 = 0;
    0x000790c0 add r6, pc                                        |     r6 = 0xf2458;
    0x000790c2 b 0x790da                                         |     
                                                                 |     while (r3 <= r2) {
    0x000790c4 adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x000790c6 str r2, [r4, 4]                                   |         *((r4 + 4)) = r2;
    0x000790c8 ldrb r3, [r3]                                     |         r3 = *(r3);
                                                                 | label_19:
    0x000790ca ldr r2, [r6, 0x2c]                                |         r2 = *((r6 + 0x2c));
    0x000790cc subs r3, 0                                        |         
    0x000790ce it ne                                             |         
                                                                 |         if (r3 == 0) {
    0x000790d0 movne r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x000790d2 add.w r2, r2, r5, lsl 3                           |         r2 += (r5 << 3);
    0x000790d6 adds r5, 1                                        |         r5++;
    0x000790d8 strb r3, [r2, 7]                                  |         *((r2 + 7)) = r3;
    0x000790da ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x000790dc cmp r5, r3                                        |         
                                                                 |         if (r5 == r3) {
    0x000790de beq 0x79108                                       |             goto label_57;
                                                                 |         }
    0x000790e0 ldrd r3, r2, [r4, 4]                              |         __asm ("ldrd r3, r2, [r4, 4]");
    0x000790e4 cmp r3, r2                                        |         
    0x000790e6 blo 0x790c4                                       |         
                                                                 |     }
    0x000790e8 mov r0, r4                                        |     r0 = r4;
    0x000790ea bl 0x55e5c                                        |     r0 = uflow ();
    0x000790ee adds r2, r0, 1                                    |     r2 = r0 + 1;
    0x000790f0 mov r3, r0                                        |     r3 = r0;
                                                                 |     if (r2 != r0) {
    0x000790f2 bne 0x790ca                                       |         goto label_19;
                                                                 |     }
    0x000790f4 b 0x78b94                                         |     goto label_2;
                                                                 | label_43:
    0x000790f6 mov r1, sl                                        |     r1 = sl;
    0x000790f8 str r0, [sp, 8]                                   |     var_8h = r0;
    0x000790fa bl 0x67b88                                        |     libc_alloc_buffer_create_failure ();
    0x000790fe ldr r3, [pc, 0x298]                               |     
    0x00079100 ldr r2, [sp, 8]                                   |     r2 = var_8h;
    0x00079102 add r3, pc                                        |     
    0x00079104 ldr r3, [r3, 0x1c]                                |     r3 = "____strtof_l_internal";
    0x00079106 b 0x78d32                                         |     goto label_20;
                                                                 | label_57:
    0x00079108 ldr r3, [pc, 0x290]                               |     
    0x0007910a movs r0, 0                                        |     r0 = 0;
    0x0007910c add r3, pc                                        |     r3 = 0xf24ac;
    0x0007910e ldr r2, [r3, 0x2c]                                |     r2 = *(0xf24d8);
    0x00079110 ldr r1, [r3, 0x20]                                |     r1 = *(0xf24cc);
    0x00079112 subs r3, r2, 1                                    |     r3 = r2 - 1;
    0x00079114 ldr r2, [sp, 0x18]                                |     r2 = var_18h;
    0x00079116 b 0x7911e                                         |     
                                                                 |     while (r1 > r2) {
    0x00079118 adds r2, 1                                        |         r2++;
    0x0007911a strb.w r0, [r3, r2, lsl 3]                        |         offset_1 = r2 << 3;
                                                                 |         *((r3 + offset_1)) = r0;
    0x0007911e cmp r1, r2                                        |         
    0x00079120 bhi 0x79118                                       |         
                                                                 |     }
    0x00079122 ldr r3, [pc, 0x27c]                               |     
    0x00079124 add r3, pc                                        |     
    0x00079126 ldr r3, [r3, 0x38]                                |     r3 = *(0xf2502);
                                                                 |     if (r3 != 0) {
    0x00079128 cbz r3, 0x7914c                                   |         
    0x0007912a ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0007912c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0007912e beq.w 0x79238                                     |             goto label_58;
                                                                 |         }
    0x00079132 ldrd r3, r2, [r4, 4]                              |         __asm ("ldrd r3, r2, [r4, 4]");
    0x00079136 cmp r3, r2                                        |         
                                                                 |         if (r3 >= r2) {
    0x00079138 bhs 0x7922e                                       |             goto label_59;
                                                                 |         }
    0x0007913a adds r2, r3, 1                                    |         r2 = r3 + 1;
    0x0007913c str r2, [r4, 4]                                   |         *((r4 + 4)) = r2;
    0x0007913e ldrb r3, [r3]                                     |         r3 = *(r3);
                                                                 | label_26:
    0x00079140 cmp r3, 0xa                                       |         
                                                                 |         if (r3 == 0xa) {
    0x00079142 beq 0x79202                                       |             goto label_60;
                                                                 |         }
                                                                 | label_24:
    0x00079144 ldr r3, [pc, 0x25c]                               |         
    0x00079146 movs r2, 0                                        |         r2 = 0;
    0x00079148 add r3, pc                                        |         r3 = 0xf24f0;
    0x0007914a str r2, [r3, 0x38]                                |         *((r3 + 0x38)) = r2;
                                                                 |     }
                                                                 | label_25:
    0x0007914c mov r0, r4                                        |     r0 = r4;
    0x0007914e ldr r4, [pc, 0x258]                               |     
    0x00079150 movs r5, 0                                        |     r5 = 0;
    0x00079152 add r4, pc                                        |     r4 = 0xf2500;
    0x00079154 bl 0x4c878                                        |     IO_fclose ();
    0x00079158 b 0x79172                                         |     goto label_61;
                                                                 | label_21:
    0x0007915a ldr r3, [r4, 0x2c]                                |     r3 = *((r4 + 0x2c));
    0x0007915c ldr r0, [r4, 0x34]                                |     r0 = *((r4 + 0x34));
    0x0007915e add.w r3, r3, r5, lsl 3                           |     r3 += (r5 << 3);
    0x00079162 ldrb r3, [r3, 5]                                  |     r3 = *((r3 + 5));
    0x00079164 add r0, r3                                        |     r0 += r3;
    0x00079166 bl 0x7863c                                        |     r0 = fcn_0007863c (r0);
    0x0007916a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0007916c beq.w 0x78b9a                                     |         goto label_1;
                                                                 |     }
    0x00079170 adds r5, 1                                        |     r5++;
                                                                 | label_61:
    0x00079172 ldr r3, [r4, 0x20]                                |     r3 = *((r4 + 0x20));
    0x00079174 cmp r3, r5                                        |     
                                                                 |     if (r3 > r5) {
    0x00079176 bhi 0x7915a                                       |         goto label_21;
                                                                 |     }
    0x00079178 ldr r3, [pc, 0x230]                               |     r3 = *(0x793ac);
    0x0007917a ldr.w sb, [pc, 0x234]                             |     sb = *(0x000793b0);
    0x0007917e ldr r6, [r4, 0x1c]                                |     r6 = *((r4 + 0x1c));
    0x00079180 ldr r4, [r7, r3]                                  |     r4 = *((r7 + r3));
    0x00079182 vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00079186 add sb, pc                                        |     sb += pc;
    0x00079188 vst1.32 {d16}, [r4]                               |     __asm ("vst1.32 {d16}, [r4]");
                                                                 |     do {
                                                                 |         if (r6 == 0) {
                                                                 | label_22:
    0x0007918c cbz r6, 0x791c4                                   |             goto label_62;
                                                                 |         }
    0x0007918e ldr.w r3, [sb, 0x30]                              |         r3 = *((sb + 0x30));
    0x00079192 subs r6, 1                                        |         r6--;
    0x00079194 ldrb r2, [r3, r6]                                 |         r2 = *((r3 + r6));
    0x00079196 ldr.w r3, [sb, 0x2c]                              |         r3 = *((sb + 0x2c));
    0x0007919a add.w r3, r3, r2, lsl 3                           |         r3 += (r2 << 3);
    0x0007919e ldrb r5, [r3, 4]                                  |         r5 = *((r3 + 4));
    0x000791a0 ldr.w r2, [r4, r5, lsl 2]                         |         offset_2 = r5 << 2;
                                                                 |         r2 = *((r4 + offset_2));
    0x000791a4 cmp r2, 0                                         |         
    0x000791a6 bne 0x7918c                                       |         
                                                                 |     } while (r2 != 0);
    0x000791a8 ldrb r3, [r3, 5]                                  |     r3 = *((r3 + 5));
    0x000791aa ldr.w r0, [sb, 0x34]                              |     r0 = *((sb + 0x34));
    0x000791ae add r0, r3                                        |     r0 += r3;
    0x000791b0 bl 0x7863c                                        |     fcn_0007863c (r0);
    0x000791b4 str.w r0, [r4, r5, lsl 2]                         |     __asm ("str.w r0, [r4, r5, lsl 2]");
    0x000791b8 rsb.w r5, r5, 1                                   |     r5 = 1 - r5;
    0x000791bc ldr.w r3, [r4, r5, lsl 2]                         |     offset_3 = r5 << 2;
                                                                 |     r3 = *((r4 + offset_3));
    0x000791c0 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000791c2 beq 0x7918c                                       |         goto label_22;
                                                                 |     }
                                                                 | label_62:
    0x000791c4 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000791c6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000791c8 beq 0x7924c                                       |         goto label_63;
                                                                 |     }
                                                                 | label_27:
    0x000791ca ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x000791cc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000791ce beq 0x792b8                                       |         goto label_64;
                                                                 |     }
                                                                 | label_29:
    0x000791d0 ldr r2, [pc, 0x1e0]                               |     
    0x000791d2 add r2, pc                                        |     r2 = 0xf258a;
    0x000791d4 ldr r4, [r2, 0x1c]                                |     r4 = *(0xf25a6);
    0x000791d6 ldr r5, [r2, 0x2c]                                |     r5 = *(0xf25b6);
    0x000791d8 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x000791da bne 0x7925a                                       |         goto label_65;
                                                                 |     }
    0x000791dc ldr r3, [r5]                                      |     r3 = *(r5);
    0x000791de strd r3, r3, [r2, 0x3c]                           |     __asm ("strd r3, r3, [r2, 0x3c]");
                                                                 | label_28:
    0x000791e2 ldr r2, [pc, 0x1d4]                               |     
    0x000791e4 ldr r0, [pc, 0x1d4]                               |     r0 = *(0x793bc);
    0x000791e6 ldr r1, [pc, 0x1d8]                               |     r1 = *(0x793c2);
    0x000791e8 add r2, pc                                        |     r2 = 0xf25a6;
    0x000791ea ldrd r2, r3, [r2, 0x3c]                           |     __asm ("ldrd r2, r3, [r2, 0x3c]");
    0x000791ee ldr r0, [r7, r0]                                  |     r0 = *((r7 + r0));
    0x000791f0 subs r2, r2, r3                                   |     r2 -= r3;
    0x000791f2 rsb.w r3, r3, 0                                   |     r3 -= ;
    0x000791f6 it ne                                             |     
                                                                 |     if (r2 == r2) {
    0x000791f8 movne r2, 1                                       |         r2 = 1;
                                                                 |     }
    0x000791fa str r2, [r0]                                      |     *(r0) = r2;
    0x000791fc ldr r2, [r7, r1]                                  |     r2 = *((r7 + r1));
    0x000791fe str r3, [r2]                                      |     *(r2) = r3;
    0x00079200 b 0x78e44                                         |     goto label_23;
                                                                 | label_60:
    0x00079202 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00079204 movs r1, 1                                        |     r1 = 1;
    0x00079206 ldr r5, [pc, 0x1bc]                               |     
    0x00079208 subs r6, r3, 1                                    |     r6 = r3 - 1;
    0x0007920a mov r3, r4                                        |     r3 = r4;
    0x0007920c add r5, pc                                        |     r5 = 0xf25d6;
    0x0007920e mov r2, r6                                        |     r2 = r6;
    0x00079210 ldr r0, [r5, 0x38]                                |     r0 = *(0xf260e);
    0x00079212 bl 0x53d7c                                        |     r0 = fread_unlocked ();
    0x00079216 cmp r6, r0                                        |     
                                                                 |     if (r6 != r0) {
    0x00079218 bne 0x79144                                       |         goto label_24;
                                                                 |     }
    0x0007921a ldr r3, [r5, 0x38]                                |     r3 = *((r5 + 0x38));
    0x0007921c movs r2, 0                                        |     r2 = 0;
    0x0007921e strb r2, [r3, r6]                                 |     *((r3 + r6)) = r2;
    0x00079220 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00079222 beq 0x7914c                                       |         goto label_25;
                                                                 |     }
    0x00079224 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00079226 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00079228 bne 0x7914c                                       |         goto label_25;
                                                                 |     }
    0x0007922a str r3, [r5, 0x38]                                |     *((r5 + 0x38)) = r3;
    0x0007922c b 0x7914c                                         |     goto label_25;
                                                                 | label_59:
    0x0007922e mov r0, r4                                        |     r0 = r4;
    0x00079230 bl 0x55e5c                                        |     r0 = uflow ();
    0x00079234 mov r3, r0                                        |     r3 = r0;
    0x00079236 b 0x79140                                         |     goto label_26;
                                                                 | label_58:
    0x00079238 ldr r3, [pc, 0x18c]                               |     
    0x0007923a mov.w r2, 0x186                                   |     r2 = 0x186;
    0x0007923e ldr r1, [pc, 0x18c]                               |     
    0x00079240 ldr r0, [pc, 0x18c]                               |     
    0x00079242 add r3, pc                                        |     r3 = 0xf260e;
    0x00079244 add r1, pc                                        |     r1 = 0xf2616;
    0x00079246 add r0, pc                                        |     r0 = 0xf261a;
    0x00079248 bl 0x27fbc                                        |     assert_fail ();
                                                                 | label_63:
    0x0007924c ldr r3, [pc, 0x184]                               |     
    0x0007924e add r3, pc                                        |     r3 = 0xf2626;
    0x00079250 ldr r0, [r3, 0x34]                                |     r0 = *(0xf265a);
    0x00079252 bl 0x7863c                                        |     fcn_0007863c (r0);
    0x00079256 str r0, [r4]                                      |     *(r4) = r0;
    0x00079258 b 0x791ca                                         |     goto label_27;
                                                                 | label_65:
    0x0007925a ldr r6, [r2, 0x30]                                |     r6 = *((r2 + 0x30));
    0x0007925c movs r3, 0                                        |     r3 = 0;
    0x0007925e mov r0, r3                                        |     r0 = r3;
    0x00079260 mov r1, r3                                        |     r1 = r3;
    0x00079262 strd r3, r3, [r2, 0x3c]                           |     __asm ("strd r3, r3, [r2, 0x3c]");
    0x00079266 add r4, r6                                        |     r4 += r6;
                                                                 |     do {
    0x00079268 cmp.w r8, 0                                       |         
                                                                 |         if (r8 != 0) {
    0x0007926c bne 0x792e4                                       |             goto label_66;
                                                                 |         }
    0x0007926e ldrb ip, [r4, -0x1]                               |         ip = *((r4 - 0x1));
    0x00079272 add.w r2, r5, ip, lsl 3                           |         r2 = r5 + (ip << 3);
    0x00079276 ldrb.w lr, [r2, 4]                                |         
    0x0007927a cmp.w lr, 0                                       |         
                                                                 |         if (lr != 0) {
    0x0007927e bne 0x792d6                                       |             goto label_67;
                                                                 |         }
    0x00079280 ldr.w r2, [r5, ip, lsl 3]                         |         offset_4 = ip << 3;
                                                                 |         r2 = *((r5 + offset_4));
    0x00079284 movs r1, 1                                        |         r1 = 1;
    0x00079286 mov r8, r1                                        |         r8 = r1;
    0x00079288 str r2, [sp, 0x20]                                |         var_20h = r2;
                                                                 | label_31:
    0x0007928a tst.w r8, r3                                      |         
                                                                 |         if ((r8 & r3) != 0) {
    0x0007928e bne 0x792be                                       |             goto label_68;
                                                                 |         }
                                                                 | label_30:
    0x00079290 subs r4, 1                                        |         r4--;
    0x00079292 cmp r4, r6                                        |         
    0x00079294 bne 0x79268                                       |         
                                                                 |     } while (r4 != r6);
                                                                 |     if (r0 != 0) {
    0x00079296 cbz r0, 0x792a0                                   |         
    0x00079298 ldr r2, [pc, 0x13c]                               |         
    0x0007929a ldr r0, [sp, 0x24]                                |         r0 = var_24h;
    0x0007929c add r2, pc                                        |         r2 = 0xf2678;
    0x0007929e str r0, [r2, 0x3c]                                |         *((r2 + 0x3c)) = r0;
                                                                 |     }
                                                                 |     if (r1 != 0) {
    0x000792a0 cbz r1, 0x792aa                                   |         
    0x000792a2 ldr r2, [pc, 0x138]                               |         
    0x000792a4 ldr r1, [sp, 0x20]                                |         r1 = var_20h;
    0x000792a6 add r2, pc                                        |         r2 = "Signal generated by the completion of an asynchronous I/O request";
    0x000792a8 str r1, [r2, 0x40]                                |         *((r2 + 0x40)) = r1;
                                                                 |     }
    0x000792aa cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000792ac bne 0x791e2                                       |         goto label_28;
                                                                 |     }
    0x000792ae ldr r3, [pc, 0x130]                               |     
    0x000792b0 add r3, pc                                        |     r3 = 0xf2696;
    0x000792b2 ldr r2, [r3, 0x40]                                |     r2 = *(0xf26d6);
    0x000792b4 str r2, [r3, 0x3c]                                |     *((r3 + 0x3c)) = r2;
    0x000792b6 b 0x791e2                                         |     goto label_28;
                                                                 | label_64:
    0x000792b8 ldr r3, [r4]                                      |     r3 = *(r4);
    0x000792ba str r3, [r4, 4]                                   |     *((r4 + 4)) = r3;
    0x000792bc b 0x791d0                                         |     goto label_29;
                                                                 |     if (r0 != 0) {
                                                                 | label_68:
    0x000792be cbz r0, 0x792c8                                   |         
    0x000792c0 ldr r3, [pc, 0x120]                               |         
    0x000792c2 ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x000792c4 add r3, pc                                        |         r3 = 0xf26ac;
    0x000792c6 str r2, [r3, 0x3c]                                |         *((r3 + 0x3c)) = r2;
                                                                 |     }
    0x000792c8 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000792ca beq 0x791e2                                       |         goto label_28;
                                                                 |     }
    0x000792cc ldr r3, [pc, 0x118]                               |     
    0x000792ce ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000792d0 add r3, pc                                        |     r3 = 0xf26bc;
    0x000792d2 str r2, [r3, 0x40]                                |     *((r3 + 0x40)) = r2;
    0x000792d4 b 0x791e2                                         |     goto label_28;
                                                                 | label_67:
    0x000792d6 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000792d8 bne 0x79290                                       |         goto label_30;
                                                                 |     }
                                                                 | label_32:
    0x000792da ldr r3, [r2]                                      |     r3 = *(r2);
    0x000792dc movs r0, 1                                        |     r0 = 1;
    0x000792de str r3, [sp, 0x24]                                |     var_24h = r3;
    0x000792e0 mov r3, r0                                        |     r3 = r0;
    0x000792e2 b 0x7928a                                         |     goto label_31;
                                                                 |     if (r3 == 0) {
                                                                 | label_66:
    0x000792e4 cbz r3, 0x79300                                   |         goto label_69;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x000792e6 cbz r0, 0x792f0                                   |         
    0x000792e8 ldr r3, [pc, 0x100]                               |         
    0x000792ea ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x000792ec add r3, pc                                        |         r3 = 0xf26dc;
    0x000792ee str r2, [r3, 0x3c]                                |         *((r3 + 0x3c)) = r2;
                                                                 |     }
    0x000792f0 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000792f2 beq.w 0x791e2                                     |         goto label_28;
                                                                 |     }
    0x000792f6 ldr r3, [pc, 0xf8]                                |     
    0x000792f8 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x000792fa add r3, pc                                        |     r3 = 0xf26f0;
    0x000792fc str r2, [r3, 0x40]                                |     *((r3 + 0x40)) = r2;
    0x000792fe b 0x791e2                                         |     goto label_28;
                                                                 | label_69:
    0x00079300 ldrb r2, [r4, -0x1]                               |     r2 = *((r4 - 0x1));
    0x00079304 add.w r2, r5, r2, lsl 3                           |     r2 = r5 + (r2 << 3);
    0x00079308 ldrb.w ip, [r2, 4]                                |     ip = *((r2 + 4));
    0x0007930c cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x00079310 beq 0x79290                                       |         goto label_30;
                                                                 |     }
    0x00079312 b 0x792da                                         |     goto label_32;
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xc28b8 */
                                                         | #include <stdint.h>
                                                         |  
                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                         |  
    ; (fcn) fcn.000c28b8 ()                              | void fcn_000c28b8 (int16_t arg1, int16_t arg2, int16_t arg4, char * s1) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r3 = arg4;
                                                         |     r2 = s1;
    0x000c28b8 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x000c28bc mov r6, r1                                |     r6 = r1;
    0x000c28be ldr r1, [pc, 0x84]                        |     
    0x000c28c0 mov r4, r2                                |     r4 = r2;
    0x000c28c2 sub sp, 0x10                              |     
    0x000c28c4 mov r8, r0                                |     r8 = r0;
    0x000c28c6 ldr r7, [pc, 0x80]                        |     
    0x000c28c8 movs r2, 2                                |     r2 = 2;
    0x000c28ca add r1, pc                                |     r1 = 0x185214;
    0x000c28cc mov r0, r4                                |     r0 = r4;
    0x000c28ce mov r5, r3                                |     r5 = r3;
    0x000c28d0 add r7, pc                                |     r7 = 0x18521e;
    0x000c28d2 bl 0x6af1c                                |     r0 = strncasecmp ();
                                                         |     if (r0 != 0) {
    0x000c28d6 cbnz r0, 0xc28ea                          |         goto label_1;
                                                         |     }
    0x000c28d8 ldr r2, [pc, 0x70]                        |     r2 = *(0xc294c);
    0x000c28da adds r0, r4, 2                            |     r0 = r4 + 2;
    0x000c28dc ldr r1, [r7, r2]                          |     r1 = *((r7 + r2));
    0x000c28de ldr r2, [r1, 0x2c]                        |     r2 = *((r1 + 0x2c));
    0x000c28e0 orrs r2, r5                               |     r2 |= r5;
    0x000c28e2 str r2, [r1, 0x2c]                        |     *((r1 + 0x2c)) = r2;
                                                         |     do {
    0x000c28e4 add sp, 0x10                              |         
    0x000c28e6 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_1:
    0x000c28ea ldr r1, [pc, 0x64]                        |         
    0x000c28ec movs r2, 3                                |         r2 = 3;
    0x000c28ee mov r0, r4                                |         r0 = r4;
    0x000c28f0 add r1, pc                                |         r1 = 0x185246;
    0x000c28f2 bl 0x6af1c                                |         r0 = strncasecmp ();
                                                         |         if (r0 == 0) {
    0x000c28f6 cbnz r0, 0xc290c                          |             
    0x000c28f8 ldr r3, [pc, 0x50]                        |             r3 = *(0xc294c);
    0x000c28fa adds r0, r4, 3                            |             r0 = r4 + 3;
    0x000c28fc ldr r2, [r7, r3]                          |             r2 = *((r7 + r3));
    0x000c28fe ldr r3, [r2, 0x2c]                        |             r3 = *((r2 + 0x2c));
    0x000c2900 bic.w r3, r3, r5                          |             r3 = BIT_MASK (r3, r5);
    0x000c2904 str r3, [r2, 0x2c]                        |             *((r2 + 0x2c)) = r3;
    0x000c2906 add sp, 0x10                              |             
    0x000c2908 pop.w {r4, r5, r6, r7, r8, pc}            |             
                                                         |         }
    0x000c290c ldr r1, [pc, 0x44]                        |         
    0x000c290e movs r2, 5                                |         r2 = 5;
    0x000c2910 ldr r0, [pc, 0x44]                        |         
    0x000c2912 add r1, pc                                |         r1 = 0x18526a;
    0x000c2914 add r0, pc                                |         r0 = 0x185270;
    0x000c2916 bl 0x28688                                |         dcgettext (r0, r1);
    0x000c291a mov r3, r6                                |         r3 = r6;
    0x000c291c mov r1, r0                                |         r1 = r0;
    0x000c291e mov r2, r8                                |         r2 = r8;
    0x000c2920 add r0, sp, 0xc                           |         r0 += var_ch;
    0x000c2922 str r4, [sp]                              |         *(sp) = r4;
    0x000c2924 bl 0x38ce0                                |         r0 = asprintf ()
    0x000c2928 cmp r0, 0                                 |         
                                                         |         if (r0 >= 0) {
    0x000c292a bge 0xc2930                               |             goto label_2;
                                                         |         }
                                                         | label_0:
    0x000c292c movs r0, 0                                |         r0 = 0;
    0x000c292e b 0xc28e4                                 |         
                                                         |     } while (1);
                                                         | label_2:
    0x000c2930 ldr r1, [pc, 0x28]                        |     
    0x000c2932 movs r0, 0                                |     r0 = 0;
    0x000c2934 ldr r2, [sp, 0xc]                         |     r2 = var_ch;
    0x000c2936 add r1, pc                                |     r1 = 0x185296;
    0x000c2938 bl 0x4bb90                                |     fcn_0004bb90 (r0);
    0x000c293c ldr r0, [sp, 0xc]                         |     r0 = var_ch;
    0x000c293e blx 0x1ded4                               |     fcn_0001ded4 ();
    0x000c2942 b 0xc292c                                 |     goto label_0;
                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xc2960 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) fcn.000c2960 ()                                  | void fcn_000c2960 (int16_t arg1, int16_t arg2, int16_t arg3) {
                                                             |     int16_t var_0h;
                                                             |     int16_t var_ch;
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
                                                             |     r2 = arg3;
    0x000c2960 push.w {r4, r5, r6, r7, r8, sb, lr}           |     
    0x000c2964 mov r4, r0                                    |     r4 = r0;
    0x000c2966 ldrb r3, [r2]                                 |     r3 = *(r2);
    0x000c2968 mov r0, r2                                    |     r0 = r2;
    0x000c296a sub sp, 0x14                                  |     
    0x000c296c mov sb, r1                                    |     sb = r1;
    0x000c296e ldr r2, [pc, 0x138]                           |     
    0x000c2970 add r2, pc                                    |     r2 = 0x18541e;
    0x000c2972 cmp r3, 0                                     |     
                                                             |     if (r3 == 0) {
    0x000c2974 beq.w 0xc2a96                                 |         goto label_4;
                                                             |     }
    0x000c2978 ldr r1, [pc, 0x130]                           |     r1 = *(0xc2aac);
    0x000c297a mrc p15, 0, ip, c13, c0, 3                    |     __asm ("mrc p15, 0, ip, c13, c0, 3");
    0x000c297e ldr r7, [r2, r1]                              |     r7 = *((r2 + r1));
                                                             | label_0:
    0x000c2980 ldr r2, [pc, 0x11c]                           |     
    0x000c2982 mov r6, r0                                    |     r6 = r0;
    0x000c2984 add r2, pc                                    |     
    0x000c2986 ldr r2, [r2]                                  |     r2 = *(0x185428);
    0x000c2988 ldr.w r1, [ip, r2]                            |     r1 = *((ip + r2));
    0x000c298c b 0xc2994                                     |     
                                                             |     while (r3 != r3) {
    0x000c298e ldrb r3, [r6, 1]!                             |         r3 = *((r6 += 1));
                                                             |         if (r3 == 0) {
    0x000c2992 cbz r3, 0xc29ae                               |             goto label_5;
                                                             |         }
    0x000c2994 ldrh.w ip, [r1, r3, lsl 1]                    |         offset_0 = r3 << 1;
                                                             |         ip = *((r1 + offset_0));
    0x000c2998 cmp r3, 0x23                                  |         
    0x000c299a it ne                                         |         
                                                             |         if (r3 != 0x23) {
    0x000c299c cmpne r3, 0x2c                                |             __asm ("cmpne r3, 0x2c");
                                                             |         }
    0x000c299e ite ne                                        |         
                                                             |         if (r3 == 0x23) {
    0x000c29a0 movne r3, 1                                   |             r3 = 1;
                                                             |         }
                                                             |         if (r3 != 0x23) {
    0x000c29a2 moveq r3, 0                                   |             r3 = 0;
                                                             |         }
    0x000c29a4 eor ip, ip, 0x2000                            |         
    0x000c29a8 ands.w r3, r3, ip, lsr 13                     |         r3 &= (ip >> 13);
    0x000c29ac bne 0xc298e                                   |         
                                                             |     }
                                                             | label_5:
    0x000c29ae subs r1, r6, r0                               |     r1 = r6 - r0;
                                                             | label_3:
    0x000c29b0 ldr r5, [r7, 0x18]                            |     r5 = *((r7 + 0x18));
    0x000c29b2 cmp r5, 3                                     |     
                                                             |     if (r5 > 3) {
    0x000c29b4 bgt 0xc2a28                                   |         goto label_6;
                                                             |     }
    0x000c29b6 adds r3, r5, 1                                |     r3 = r5 + 1;
    0x000c29b8 add.w r8, r7, r5, lsl 2                       |     r8 = r7 + (r5 << 2);
    0x000c29bc str r3, [r7, 0x18]                            |     *((r7 + 0x18)) = r3;
    0x000c29be bl 0x6b0b8                                    |     strndup ();
    0x000c29c2 ldr r2, [pc, 0xe0]                            |     
    0x000c29c4 mrc p15, 0, ip, c13, c0, 3                    |     __asm ("mrc p15, 0, ip, c13, c0, 3");
    0x000c29c8 str.w r0, [r8, 0x1c]                          |     __asm ("str.w r0, [r8, 0x1c]");
    0x000c29cc ldrb r3, [r6]                                 |     r3 = *(r6);
    0x000c29ce add r2, pc                                    |     
    0x000c29d0 ldr r2, [r2]                                  |     r2 = *(0x185478);
    0x000c29d2 ldr.w r1, [ip, r2]                            |     r1 = *((ip + r2));
    0x000c29d6 ldrh.w r2, [r1, r3, lsl 1]                    |     offset_1 = r3 << 1;
                                                             |     r2 = *((r1 + offset_1));
    0x000c29da lsls r0, r2, 0x12                             |     r0 = r2 << 0x12;
                                                             |     if (r0 >= r2) {
    0x000c29dc bpl 0xc29ea                                   |         goto label_7;
                                                             |     }
                                                             |     do {
    0x000c29de ldrb r3, [r6, 1]!                             |         r3 = *((r6 += 1));
    0x000c29e2 ldrh.w r2, [r1, r3, lsl 1]                    |         offset_2 = r3 << 1;
                                                             |         r2 = *((r1 + offset_2));
    0x000c29e6 lsls r2, r2, 0x12                             |         r2 <<= 0x12;
    0x000c29e8 bmi 0xc29de                                   |         
                                                             |     } while (r2 < r2);
                                                             | label_7:
    0x000c29ea cmp r3, 0x2c                                  |     
                                                             |     if (r3 != 0x2c) {
    0x000c29ec beq 0xc29f4                                   |         
    0x000c29ee subs r3, 0x3a                                 |         r3 -= 0x3a;
    0x000c29f0 cmp r3, 1                                     |         
                                                             |         if (r3 > 1) {
    0x000c29f2 bhi 0xc2a24                                   |             goto label_8;
                                                             |         }
                                                             |     }
    0x000c29f4 ldrb r3, [r6, 1]                              |     r3 = *((r6 + 1));
    0x000c29f6 adds r0, r6, 1                                |     r0 = r6 + 1;
    0x000c29f8 ldrh.w r2, [r1, r3, lsl 1]                    |     offset_3 = r3 << 1;
                                                             |     r2 = *((r1 + offset_3));
    0x000c29fc lsls r5, r2, 0x12                             |     r5 = r2 << 0x12;
                                                             |     if (r5 >= r2) {
    0x000c29fe bpl 0xc2a0c                                   |         goto label_9;
                                                             |     }
                                                             |     do {
    0x000c2a00 ldrb r3, [r0, 1]!                             |         r3 = *((r0 += 1));
    0x000c2a04 ldrh.w r2, [r1, r3, lsl 1]                    |         offset_4 = r3 << 1;
                                                             |         r2 = *((r1 + offset_4));
    0x000c2a08 lsls r2, r2, 0x12                             |         r2 <<= 0x12;
    0x000c2a0a bmi 0xc2a00                                   |         
                                                             |     } while (r2 < r2);
                                                             | label_9:
    0x000c2a0c cmp r3, 0x23                                  |     
    0x000c2a0e it ne                                         |     
                                                             |     if (r3 != 0x23) {
    0x000c2a10 cmpne r3, 0                                   |         __asm ("cmpne r3, 0");
                                                             |     }
                                                             |     if (r3 == 0x23) {
    0x000c2a12 beq 0xc2a64                                   |         goto label_10;
                                                             |     }
                                                             | label_1:
    0x000c2a14 ldrb r3, [r0]                                 |     r3 = *(r0);
    0x000c2a16 cmp r3, 0                                     |     
    0x000c2a18 it ne                                         |     
                                                             |     if (r3 == 0) {
    0x000c2a1a cmpne r3, 0x23                                |         __asm ("cmpne r3, 0x23");
                                                             |         goto label_11;
                                                             |     }
                                                             |     if (r3 != 0) {
                                                             | label_11:
    0x000c2a1c bne 0xc2980                                   |         goto label_0;
                                                             |     }
    0x000c2a1e add sp, 0x14                                  |     
    0x000c2a20 pop.w {r4, r5, r6, r7, r8, sb, pc}            |     
                                                             | label_8:
    0x000c2a24 mov r0, r6                                    |     r0 = r6;
    0x000c2a26 b 0xc2a14                                     |     goto label_1;
                                                             | label_6:
    0x000c2a28 ldr r1, [pc, 0x84]                            |     
    0x000c2a2a movs r2, 5                                    |     r2 = 5;
    0x000c2a2c ldr r0, [pc, 0x84]                            |     
    0x000c2a2e movs r6, 4                                    |     r6 = 4;
    0x000c2a30 add r1, pc                                    |     r1 = 0x1854e4;
    0x000c2a32 add r0, pc                                    |     r0 = 0x1854ea;
    0x000c2a34 bl 0x28688                                    |     dcgettext (r0, r1);
    0x000c2a38 mov r3, sb                                    |     r3 = sb;
    0x000c2a3a mov r1, r0                                    |     r1 = r0;
    0x000c2a3c mov r2, r4                                    |     r2 = r4;
    0x000c2a3e add r0, sp, 0xc                               |     r0 += var_ch;
    0x000c2a40 str r6, [sp]                                  |     *(sp) = r6;
    0x000c2a42 bl 0x38ce0                                    |     r0 = asprintf ()
    0x000c2a46 cmp r0, 0                                     |     
                                                             |     if (r0 < 0) {
    0x000c2a48 blt 0xc2a5c                                   |         goto label_2;
                                                             |     }
    0x000c2a4a ldr r1, [pc, 0x6c]                            |     
    0x000c2a4c movs r0, 0                                    |     r0 = 0;
    0x000c2a4e ldr r2, [sp, 0xc]                             |     r2 = var_ch;
    0x000c2a50 add r1, pc                                    |     r1 = 0x18550e;
    0x000c2a52 bl 0x4bb90                                    |     fcn_0004bb90 (r0);
    0x000c2a56 ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x000c2a58 blx 0x1ded4                                   |     fcn_0001ded4 ();
                                                             |     do {
                                                             | label_2:
    0x000c2a5c movs r0, 0                                    |         r0 = 0;
    0x000c2a5e add sp, 0x14                                  |         
    0x000c2a60 pop.w {r4, r5, r6, r7, r8, sb, pc}            |         
                                                             | label_10:
    0x000c2a64 ldr r1, [pc, 0x54]                            |         
    0x000c2a66 movs r2, 5                                    |         r2 = 5;
    0x000c2a68 ldr r0, [pc, 0x54]                            |         
    0x000c2a6a add r1, pc                                    |         r1 = 0x18552a;
    0x000c2a6c add r0, pc                                    |         r0 = 0x185530;
    0x000c2a6e bl 0x28688                                    |         dcgettext (r0, r1);
    0x000c2a72 mov r3, sb                                    |         r3 = sb;
    0x000c2a74 mov r1, r0                                    |         r1 = r0;
    0x000c2a76 mov r2, r4                                    |         r2 = r4;
    0x000c2a78 add r0, sp, 0xc                               |         r0 += var_ch;
    0x000c2a7a bl 0x38ce0                                    |         r0 = asprintf ()
    0x000c2a7e cmp r0, 0                                     |         
    0x000c2a80 blt 0xc2a5c                                   |         
                                                             |     } while (r0 < 0);
    0x000c2a82 ldr r1, [pc, 0x40]                            |     
    0x000c2a84 movs r0, 0                                    |     r0 = 0;
    0x000c2a86 ldr r2, [sp, 0xc]                             |     r2 = var_ch;
    0x000c2a88 add r1, pc                                    |     r1 = 0x185552;
    0x000c2a8a bl 0x4bb90                                    |     fcn_0004bb90 (r0);
    0x000c2a8e ldr r0, [sp, 0xc]                             |     r0 = var_ch;
    0x000c2a90 blx 0x1ded4                                   |     fcn_0001ded4 ();
    0x000c2a94 b 0xc2a5c                                     |     goto label_2;
                                                             | label_4:
    0x000c2a96 mov r1, r3                                    |     r1 = r3;
    0x000c2a98 ldr r3, [pc, 0x10]                            |     r3 = *(0xc2aac);
    0x000c2a9a mov r6, r0                                    |     r6 = r0;
    0x000c2a9c ldr r7, [r2, r3]                              |     r7 = *((r2 + r3));
    0x000c2a9e b 0xc29b0                                     |     goto label_3;
                                                             | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xc8a28 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) fcn.000c8a28 ()                                          | void fcn_000c8a28 (char * s1) {
                                                                     |     void * s2;
                                                                     |     char * var_4h;
                                                                     |     int16_t var_5h;
                                                                     |     int32_t var_8h;
                                                                     |     int32_t var_ch;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_11ch;
                                                                     |     r0 = s1;
    0x000c8a28 ldr r1, [pc, 0x264]                                   |     
    0x000c8a2a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x000c8a2e sub sp, 0x11c                                         |     
    0x000c8a30 ldr.w r8, [pc, 0x260]                                 |     
    0x000c8a34 add.w r6, r0, 0x10c                                   |     r6 = r0 + 0x10c;
    0x000c8a38 add r7, sp, 0                                         |     r7 += s2;
    0x000c8a3a str r0, [r7, 4]                                       |     var_4h = r0;
    0x000c8a3c add r1, pc                                            |     r1 = 0x1916d0;
    0x000c8a3e mov r0, r6                                            |     r0 = r6;
    0x000c8a40 add r8, pc                                            |     r8 = 0x1916d8;
    0x000c8a42 bl 0x69790                                            |     r0 = strcmp (r0, r1);
    0x000c8a46 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x000c8a48 beq 0xc8b12                                           |         goto label_7;
                                                                     |     }
    0x000c8a4a ldr r1, [pc, 0x24c]                                   |     
    0x000c8a4c mov r0, r6                                            |     r0 = r6;
    0x000c8a4e add r1, pc                                            |     r1 = 0x1916ec;
    0x000c8a50 bl 0x69790                                            |     r0 = strcmp (r0, r1);
    0x000c8a54 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x000c8a56 beq 0xc8afa                                           |         goto label_8;
                                                                     |     }
    0x000c8a58 ldr r3, [pc, 0x240]                                   |     
    0x000c8a5a add.w r0, r7, 0x18                                    |     r0 += var_18h;
    0x000c8a5e ldr r1, [pc, 0x240]                                   |     
    0x000c8a60 mov r2, r6                                            |     r2 = r6;
    0x000c8a62 mov r5, r0                                            |     r5 = r0;
    0x000c8a64 str r0, [r7]                                          |     *(r7) = r0;
    0x000c8a66 add r3, pc                                            |     r3 = 0x191706;
    0x000c8a68 adds r3, 0xf                                          |     r3 += 0xf;
    0x000c8a6a add r1, pc                                            |     r1 = 0x191710;
    0x000c8a6c bl 0x38ce0                                            |     r0 = asprintf ()
    0x000c8a70 cmp r0, 0                                             |     
                                                                     |     if (r0 < 0) {
    0x000c8a72 blt 0xc8aec                                           |         goto label_9;
                                                                     |     }
    0x000c8a74 movs r1, 2                                            |     r1 = 2;
    0x000c8a76 ldr r0, [r5]                                          |     r0 = *(r5);
    0x000c8a78 movt r1, 0x8000                                       |     r1 = (r1 & 0xFFFF) | 0x80000000;
    0x000c8a7c bl 0xd9f68                                            |     r0 = fcn_000d9f68 (r0, r1);
    0x000c8a80 mov sb, r0                                            |     sb = r0;
    0x000c8a82 str r0, [r7, 0xc]                                     |     var_ch = r0;
    0x000c8a84 ldr r0, [r5]                                          |     r0 = *(r5);
    0x000c8a86 blx 0x1ded4                                           |     fcn_0001ded4 ();
    0x000c8a8a mov r3, sb                                            |     r3 = sb;
    0x000c8a8c cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000c8a8e beq.w 0xc8b9c                                         |         goto label_10;
                                                                     |     }
    0x000c8a92 ldr.w sl, [pc, 0x210]                                 |     sl = *(0x000c8ca4);
    0x000c8a96 add.w r4, r7, 0x14                                    |     r4 += var_14h;
    0x000c8a9a ldr r3, [pc, 0x20c]                                   |     
    0x000c8a9c ldr r5, [r7]                                          |     r5 = *(r7);
    0x000c8a9e add sl, pc                                            |     sl += pc;
    0x000c8aa0 add r3, pc                                            |     r3 = 0x19174e;
    0x000c8aa2 add.w fp, sl, 0x4c0                                   |     
    0x000c8aa6 mov sb, sl                                            |     sb = sl;
    0x000c8aa8 str r3, [r7, 8]                                       |     var_8h = r3;
    0x000c8aaa mov sl, r8                                            |     sl = r8;
    0x000c8aac b 0xc8ad0                                             |     
                                                                     |     while (r2 >= 0) {
    0x000c8aae ldr r1, [r4]                                          |         r1 = *(r4);
    0x000c8ab0 bl 0xd9fb0                                            |         r0 = fcn_000d9fb0 (r0, r1);
    0x000c8ab4 mov r8, r0                                            |         r8 = r0;
    0x000c8ab6 ldr r0, [r4]                                          |         r0 = *(r4);
    0x000c8ab8 blx 0x1ded4                                           |         fcn_0001ded4 ();
    0x000c8abc ldr r2, [pc, 0x1ec]                                   |         r2 = *(0xc8cac);
    0x000c8abe cmp fp, sb                                            |         
    0x000c8ac0 ldr.w r2, [sl, r2]                                    |         r2 = *((sl + r2));
    0x000c8ac4 ldr r0, [r2]                                          |         r0 = *(0xc8cac);
    0x000c8ac6 eor.w r1, r8, r0                                      |         r1 = r8 ^ r0;
    0x000c8aca str r1, [r5], 4                                       |         *(r5) = r1;
                                                                     |         r5 += 4;
                                                                     |         if (fp == sb) {
    0x000c8ace beq 0xc8b44                                           |             goto label_11;
                                                                     |         }
    0x000c8ad0 mov r3, sb                                            |         r3 = sb;
    0x000c8ad2 mov r2, r6                                            |         r2 = r6;
    0x000c8ad4 ldr r1, [r7, 8]                                       |         r1 = var_8h;
    0x000c8ad6 mov r0, r4                                            |         r0 = r4;
    0x000c8ad8 bl 0x38ce0                                            |         r0 = asprintf ()
    0x000c8adc mov r2, r0                                            |         r2 = r0;
    0x000c8ade add.w sb, sb, 0x13                                    |         sb += 0x13;
    0x000c8ae2 cmp r2, 0                                             |         
    0x000c8ae4 ldr r0, [r7, 0xc]                                     |         r0 = var_ch;
    0x000c8ae6 bge 0xc8aae                                           |         
                                                                     |     }
    0x000c8ae8 bl 0xda0b4                                            |     fcn_000da0b4 (r0);
                                                                     | label_9:
    0x000c8aec movs r4, 0                                            |     r4 = 0;
    0x000c8aee add.w r7, r7, 0x11c                                   |     r7 += var_11ch;
    0x000c8af2 mov r0, r4                                            |     r0 = r4;
    0x000c8af4 mov sp, r7                                            |     
    0x000c8af6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_8:
    0x000c8afa ldr r1, [pc, 0x1b4]                                   |     
    0x000c8afc ldr r0, [r7, 4]                                       |     r0 = var_4h;
    0x000c8afe add r1, pc                                            |     r1 = 0x1917b4;
    0x000c8b00 bl 0xc897c                                            |     r0 = fcn_000c897c (r0, r1);
    0x000c8b04 mov r4, r0                                            |     r4 = r0;
                                                                     | label_0:
    0x000c8b06 mov r0, r4                                            |     r0 = r4;
    0x000c8b08 add.w r7, r7, 0x11c                                   |     r7 += var_11ch;
    0x000c8b0c mov sp, r7                                            |     
    0x000c8b0e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_7:
    0x000c8b12 ldr r3, [pc, 0x1a0]                                   |     
    0x000c8b14 add r3, pc                                            |     r3 = 0x1917ce;
    0x000c8b16 ldrb r2, [r3, 4]                                      |     r2 = *((r3 + 4));
    0x000c8b18 cbnz r2, 0xc8b32                                      |     
                                                                     |     while (1) {
    0x000c8b1a ldr r1, [pc, 0x19c]                                   |         
    0x000c8b1c ldr r0, [r7, 4]                                       |         r0 = var_4h;
    0x000c8b1e add r1, pc                                            |         r1 = 0x1917dc;
    0x000c8b20 bl 0xc897c                                            |         r0 = fcn_000c897c (r0, r1);
    0x000c8b24 mov r4, r0                                            |         r4 = r0;
    0x000c8b26 add.w r7, r7, 0x11c                                   |         r7 += var_11ch;
    0x000c8b2a mov r0, r4                                            |         r0 = r4;
    0x000c8b2c mov sp, r7                                            |         
    0x000c8b2e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |         
    0x000c8b32 ldr r2, [pc, 0x178]                                   |         r2 = *(0xc8cae);
    0x000c8b34 ldr r0, [r3, 8]                                       |         r0 = *((r3 + 8));
    0x000c8b36 ldr.w r3, [r8, r2]                                    |         r3 = *((r8 + r2));
    0x000c8b3a ldr r3, [r3]                                          |         r3 = *(r3);
    0x000c8b3c eors r0, r3                                           |         r0 ^= r3;
    0x000c8b3e bl 0xcd228                                            |         nss_files_init ();
    0x000c8b42 b 0xc8b1a                                             |         
                                                                     |     }
                                                                     | label_11:
    0x000c8b44 ldr r4, [pc, 0x174]                                   |     
    0x000c8b46 add r4, pc                                            |     r4 = 0x191806;
    0x000c8b48 ldrb r3, [r4, 4]                                      |     r3 = *((r4 + 4));
    0x000c8b4a cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x000c8b4c bne 0xc8bf8                                           |         goto label_12;
                                                                     |     }
                                                                     | label_2:
    0x000c8b4e ldr r0, [pc, 0x170]                                   |     
    0x000c8b50 movs r3, 1                                            |     r3 = 1;
    0x000c8b52 add r0, pc                                            |     r0 = 0x191818;
                                                                     |     do {
    0x000c8b54 ldrex r2, [r0]                                        |         __asm ("ldrex r2, [r0]");
    0x000c8b58 cmp r2, 0                                             |         
                                                                     |         if (r2 != 0) {
    0x000c8b5a bne 0xc8b68                                           |             goto label_13;
                                                                     |         }
    0x000c8b5c strex r1, r3, [r0]                                    |         __asm ("strex r1, r3, [r0]");
    0x000c8b60 cmp r1, 0                                             |         
    0x000c8b62 bne 0xc8b54                                           |         
                                                                     |     } while (r1 != 0);
    0x000c8b64 dmb ish                                               |     __asm ("dmb ish");
                                                                     |     if (r1 != 0) {
                                                                     | label_13:
    0x000c8b68 bne.w 0xc8c7c                                         |         goto label_14;
                                                                     |     }
                                                                     | label_4:
    0x000c8b6c ldr r3, [r7, 4]                                       |     r3 = var_4h;
    0x000c8b6e ldr r3, [r3]                                          |     r3 = *(r3);
    0x000c8b70 dmb ish                                               |     __asm ("dmb ish");
    0x000c8b74 cmp r3, 1                                             |     
                                                                     |     if (r3 == 1) {
    0x000c8b76 beq 0xc8bf0                                           |         goto label_15;
                                                                     |     }
    0x000c8b78 bics r3, r3, 2                                        |     __asm ("bics r3, r3, 2");
                                                                     |     if (r3 == 1) {
    0x000c8b7c beq 0xc8c5e                                           |         goto label_16;
                                                                     |     }
                                                                     | label_1:
    0x000c8b7e ldr r0, [pc, 0x144]                                   |     
    0x000c8b80 movs r2, 0                                            |     r2 = 0;
    0x000c8b82 dmb ish                                               |     __asm ("dmb ish");
    0x000c8b86 add r0, pc                                            |     r0 = 0x191850;
                                                                     |     do {
    0x000c8b88 ldrex r3, [r0]                                        |         __asm ("ldrex r3, [r0]");
    0x000c8b8c strex r1, r2, [r0]                                    |         __asm ("strex r1, r2, [r0]");
    0x000c8b90 cmp r1, 0                                             |         
    0x000c8b92 bne 0xc8b88                                           |         
                                                                     |     } while (r1 != 0);
    0x000c8b94 cmp r3, 1                                             |     
                                                                     |     if (r3 > 1) {
    0x000c8b96 bgt 0xc8c88                                           |         goto label_17;
                                                                     |     }
                                                                     | label_6:
    0x000c8b98 movs r4, 1                                            |     r4 = 1;
    0x000c8b9a b 0xc8b06                                             |     goto label_0;
                                                                     | label_10:
    0x000c8b9c ldr r0, [pc, 0x128]                                   |     
    0x000c8b9e movs r3, 1                                            |     r3 = 1;
    0x000c8ba0 add r0, pc                                            |     r0 = 0x19186c;
                                                                     |     do {
    0x000c8ba2 ldrex r2, [r0]                                        |         __asm ("ldrex r2, [r0]");
    0x000c8ba6 cmp r2, 0                                             |         
                                                                     |         if (r2 != 0) {
    0x000c8ba8 bne 0xc8bb6                                           |             goto label_18;
                                                                     |         }
    0x000c8baa strex r1, r3, [r0]                                    |         __asm ("strex r1, r3, [r0]");
    0x000c8bae cmp r1, 0                                             |         
    0x000c8bb0 bne 0xc8ba2                                           |         
                                                                     |     } while (r1 != 0);
    0x000c8bb2 dmb ish                                               |     __asm ("dmb ish");
                                                                     |     if (r1 != 0) {
                                                                     | label_18:
    0x000c8bb6 bne 0xc8c82                                           |         goto label_19;
                                                                     |     }
                                                                     | label_5:
    0x000c8bb8 ldr r3, [r7, 4]                                       |     r3 = var_4h;
    0x000c8bba ldr r3, [r3]                                          |     r3 = *(r3);
    0x000c8bbc dmb ish                                               |     __asm ("dmb ish");
    0x000c8bc0 cmp r3, 1                                             |     
    0x000c8bc2 it eq                                                 |     
                                                                     |     if (r3 != 1) {
    0x000c8bc4 moveq r4, r3                                          |         r4 = r3;
                                                                     |     }
                                                                     |     if (r3 != 1) {
    0x000c8bc6 beq 0xc8bd0                                           |         
    0x000c8bc8 cmp r3, 2                                             |         
                                                                     |         if (r3 == 2) {
    0x000c8bca beq 0xc8c5a                                           |             goto label_20;
                                                                     |         }
    0x000c8bcc cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x000c8bce beq 0xc8c50                                           |             goto label_21;
                                                                     |         }
                                                                     |     }
                                                                     | label_3:
    0x000c8bd0 ldr r0, [pc, 0xf8]                                    |     
    0x000c8bd2 movs r2, 0                                            |     r2 = 0;
    0x000c8bd4 dmb ish                                               |     __asm ("dmb ish");
    0x000c8bd8 add r0, pc                                            |     r0 = 0x1918a8;
                                                                     |     do {
    0x000c8bda ldrex r3, [r0]                                        |         __asm ("ldrex r3, [r0]");
    0x000c8bde strex r1, r2, [r0]                                    |         __asm ("strex r1, r2, [r0]");
    0x000c8be2 cmp r1, 0                                             |         
    0x000c8be4 bne 0xc8bda                                           |         
                                                                     |     } while (r1 != 0);
    0x000c8be6 cmp r3, 1                                             |     
                                                                     |     if (r3 <= 1) {
    0x000c8be8 ble 0xc8b06                                           |         goto label_0;
                                                                     |     }
    0x000c8bea bl 0x57f44                                            |     lll_lock_wake_private ();
    0x000c8bee b 0xc8b06                                             |     goto label_0;
                                                                     | label_15:
    0x000c8bf0 ldr r0, [r7, 0xc]                                     |     r0 = var_ch;
    0x000c8bf2 bl 0xda0b4                                            |     fcn_000da0b4 (r0);
    0x000c8bf6 b 0xc8b7e                                             |     goto label_1;
                                                                     | label_12:
    0x000c8bf8 mov r0, r6                                            |     r0 = r6;
    0x000c8bfa str r2, [r7, 8]                                       |     var_8h = r2;
    0x000c8bfc bl 0x6ae40                                            |     r0 = strlen ();
    0x000c8c00 add.w r3, r0, 0x12                                    |     r3 = r0 + 0x12;
    0x000c8c04 ldr r0, [pc, 0xc8]                                    |     
    0x000c8c06 bic r3, r3, 7                                         |     r3 = BIT_MASK (r3, 7);
    0x000c8c0a mov r5, sp                                            |     r5 = sp;
    0x000c8c0c sub.w sp, sp, r3                                      |     
    0x000c8c10 mov r1, r6                                            |     r1 = r6;
    0x000c8c12 add r0, pc                                            |     
    0x000c8c14 ldr r6, [pc, 0xbc]                                    |     
    0x000c8c16 mov r3, r0                                            |     r3 = r0;
    0x000c8c18 ldr r0, [r0]                                          |     r0 = *(0x1918e6);
    0x000c8c1a ldrb r3, [r3, 4]                                      |     r3 = *((r3 + 4));
    0x000c8c1c add r6, pc                                            |     r6 = 0x1918f4;
    0x000c8c1e str r0, [sp]                                          |     *(sp) = r0;
    0x000c8c20 add.w r0, sp, 5                                       |     r0 += var_5h;
    0x000c8c24 strb.w r3, [sp, 4]                                    |     var_4h = r3;
    0x000c8c28 bl 0x6a590                                            |     r0 = stpcpy ();
    0x000c8c2c mov r3, r0                                            |     r3 = r0;
    0x000c8c2e ldr r0, [r6]                                          |     r0 = *(0x1918f4);
    0x000c8c30 mov r1, sp                                            |     r1 = sp;
    0x000c8c32 str r0, [r3]                                          |     *(r3) = r0;
    0x000c8c34 ldrh r0, [r6, 4]                                      |     r0 = *((r6 + 4));
    0x000c8c36 strh r0, [r3, 4]                                      |     *((r3 + 4)) = r0;
    0x000c8c38 ldr r0, [r7, 0xc]                                     |     r0 = var_ch;
    0x000c8c3a bl 0xd9fb0                                            |     r0 = fcn_000d9fb0 (r0, r1);
    0x000c8c3e mov r3, r0                                            |     r3 = r0;
                                                                     |     if (r0 != 0) {
    0x000c8c40 cbz r0, 0xc8c4c                                       |         
    0x000c8c42 ldr r2, [r7, 8]                                       |         r2 = var_8h;
    0x000c8c44 ldr r0, [r4, 8]                                       |         r0 = *((r4 + 8));
    0x000c8c46 ldr r2, [r2]                                          |         r2 = *(r2);
    0x000c8c48 eors r0, r2                                           |         r0 ^= r2;
    0x000c8c4a blx r3                                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
                                                                     |     }
    0x000c8c4c mov sp, r5                                            |     
    0x000c8c4e b 0xc8b4e                                             |     goto label_2;
                                                                     | label_21:
    0x000c8c50 dmb ish                                               |     __asm ("dmb ish");
    0x000c8c54 movs r3, 2                                            |     r3 = 2;
    0x000c8c56 ldr r2, [r7, 4]                                       |     r2 = var_4h;
    0x000c8c58 str r3, [r2]                                          |     *(r2) = r3;
                                                                     | label_20:
    0x000c8c5a movs r4, 0                                            |     r4 = 0;
    0x000c8c5c b 0xc8bd0                                             |     goto label_3;
                                                                     | label_16:
    0x000c8c5e ldrd r1, r4, [r7]                                     |     __asm ("ldrd r1, r4, [r7]");
    0x000c8c62 mov.w r2, 0x100                                       |     r2 = 0x100;
    0x000c8c66 adds r0, r4, 4                                        |     r0 = r4 + 4;
    0x000c8c68 blx 0x6d540                                           |     memcpy (r0, r1, r2);
    0x000c8c6c ldr r1, [r7, 0xc]                                     |     r1 = var_ch;
    0x000c8c6e movs r3, 1                                            |     r3 = 1;
    0x000c8c70 str.w r1, [r4, 0x104]                                 |     __asm ("str.w r1, aav.0x000000ff");
    0x000c8c74 dmb ish                                               |     __asm ("dmb ish");
    0x000c8c78 str r3, [r4]                                          |     *(r4) = r3;
    0x000c8c7a b 0xc8b7e                                             |     goto label_1;
                                                                     | label_14:
    0x000c8c7c bl 0x57ea8                                            |     lll_lock_wait_private ();
    0x000c8c80 b 0xc8b6c                                             |     goto label_4;
                                                                     | label_19:
    0x000c8c82 bl 0x57ea8                                            |     lll_lock_wait_private ();
    0x000c8c86 b 0xc8bb8                                             |     goto label_5;
                                                                     | label_17:
    0x000c8c88 bl 0x57f44                                            |     lll_lock_wake_private ();
    0x000c8c8c b 0xc8b98                                             |     goto label_6;
                                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xd1bd4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.clnt_spcreateerror ()            | void clnt_spcreateerror (int16_t arg1) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_4h;
                                                 |     int16_t var_ch;
                                                 |     int16_t var_10h;
                                                 |     r0 = arg1;
    0x000d1bd4 push {r4, r5, r6, r7, lr}         |     
    0x000d1bd6 subw sp, sp, 0x414                |     __asm ("subw sp, sp, aav.0x000000ff");
    0x000d1bda mov r5, r0                        |     r5 = r0;
    0x000d1bdc bl 0xd3580                        |     r0 = rpc_thread_createerr ();
    0x000d1be0 mov r4, r0                        |     r4 = r0;
    0x000d1be2 ldr r0, [r0]                      |     r0 = *(r0);
    0x000d1be4 cmp r0, 0xc                       |     
                                                 |     if (r0 == 0xc) {
    0x000d1be6 beq 0xd1c40                       |         goto label_1;
                                                 |     }
    0x000d1be8 cmp r0, 0xe                       |     
                                                 |     if (r0 != 0xe) {
    0x000d1bea bne 0xd1c38                       |         goto label_2;
                                                 |     }
    0x000d1bec ldr r7, [pc, 0x68]                |     
    0x000d1bee ldr r0, [r4, 4]                   |     r0 = *((r4 + 4));
    0x000d1bf0 bl 0xd19d0                        |     r0 = clnt_sperrno ();
    0x000d1bf4 mov r3, r0                        |     r3 = r0;
    0x000d1bf6 add r7, pc                        |     r7 = 0x1a3852;
    0x000d1bf8 ldr r0, [r4]                      |     r0 = *(r4);
    0x000d1bfa mov r4, r3                        |     r4 = r3;
                                                 |     do {
                                                 | label_0:
    0x000d1bfc bl 0xd19d0                        |         clnt_sperrno ();
    0x000d1c00 ldr r1, [pc, 0x58]                |         
    0x000d1c02 add r6, sp, 0xc                   |         r6 += var_ch;
    0x000d1c04 mov r3, r0                        |         r3 = r0;
    0x000d1c06 mov r2, r5                        |         r2 = r5;
    0x000d1c08 mov r0, r6                        |         r0 = r6;
    0x000d1c0a str r4, [sp, 4]                   |         var_4h = r4;
    0x000d1c0c add r1, pc                        |         r1 = 0x1a386c;
    0x000d1c0e str r7, [sp]                      |         *(sp) = r7;
    0x000d1c10 bl 0x38ce0                        |         r0 = asprintf ()
    0x000d1c14 cmp r0, 0                         |         
    0x000d1c16 it lt                             |         
                                                 |         if (r0 >= 0) {
    0x000d1c18 movlt r0, 0                       |             r0 = 0;
                                                 |         }
                                                 |         if (r0 >= 0) {
    0x000d1c1a blt 0xd1c32                       |             
    0x000d1c1c bl 0xd34d8                        |             fcn_000d34d8 ();
    0x000d1c20 ldr r2, [sp, 0xc]                 |             r2 = var_ch;
    0x000d1c22 mov r3, r0                        |             r3 = r0;
    0x000d1c24 ldr.w r0, [r0, 0x98]              |             r0 = *((r0 + 0x98));
    0x000d1c28 str.w r2, [r3, 0x98]              |             __asm ("str.w r2, [r3, 0x98]");
    0x000d1c2c blx 0x1ded4                       |             fcn_0001ded4 ();
    0x000d1c30 ldr r0, [sp, 0xc]                 |             r0 = var_ch;
                                                 |         }
    0x000d1c32 addw sp, sp, 0x414                |         __asm ("addw sp, var_0h");
    0x000d1c36 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_2:
    0x000d1c38 ldr r4, [pc, 0x24]                |         
    0x000d1c3a add r4, pc                        |         r4 = 0x1a389e;
    0x000d1c3c mov r7, r4                        |         r7 = r4;
    0x000d1c3e b 0xd1bfc                         |         
                                                 |     } while (1);
                                                 | label_1:
    0x000d1c40 ldr r7, [pc, 0x20]                |     
    0x000d1c42 mov.w r2, 0x400                   |     r2 = 0x400;
    0x000d1c46 ldr r0, [r4, 8]                   |     r0 = *((r4 + 8));
    0x000d1c48 add r1, sp, 0x10                  |     r1 += var_10h;
    0x000d1c4a bl 0x67bc4                        |     r0 = strerror_r ();
    0x000d1c4e mov r3, r0                        |     r3 = r0;
    0x000d1c50 add r7, pc                        |     r7 = 0x1a38b8;
    0x000d1c52 ldr r0, [r4]                      |     r0 = *(r4);
    0x000d1c54 mov r4, r3                        |     r4 = r3;
    0x000d1c56 b 0xd1bfc                         |     goto label_0;
                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xd1a18 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.clnt_sperror ()                          | void clnt_sperror (int16_t arg1, int16_t arg2) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_4h;
                                                         |     int16_t var_8h;
                                                         |     int16_t var_ch;
                                                         |     int32_t var_4h_2;
                                                         |     int32_t var_4h_3;
                                                         |     int16_t var_18h;
                                                         |     int32_t var_98h;
                                                         |     int16_t var_418h;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x000d1a18 ldr r3, [r0, 4]                           |     r3 = *((r0 + 4));
    0x000d1a1a push.w {r4, r5, r6, r7, r8, lr}           |     
    0x000d1a1e sub.w sp, sp, 0x418                       |     
    0x000d1a22 add r4, sp, 0xc                           |     r4 += var_ch;
    0x000d1a24 mov r6, r1                                |     r6 = r1;
    0x000d1a26 mov r1, r4                                |     r1 = r4;
    0x000d1a28 ldr r3, [r3, 8]                           |     r3 = *((r3 + 8));
    0x000d1a2a blx r3                                    |     uint32_t (*r3)(uint32_t) (r3);
    0x000d1a2c ldr r0, [r4]                              |     r0 = *(r4);
    0x000d1a2e bl 0xd19d0                                |     clnt_sperrno ();
    0x000d1a32 ldr r5, [r4]                              |     r5 = *(r4);
    0x000d1a34 mov r7, r0                                |     r7 = r0;
    0x000d1a36 cmp r5, 0x11                              |     
                                                         |     if (r5 > 0x11) {
    0x000d1a38 bhi 0xd1b1a                               |         goto label_1;
                                                         |     }
    0x000d1a3a cmp r5, 4                                 |     
                                                         |     if (r5 < 4) {
    0x000d1a3c bls 0xd1a88                               |         goto label_2;
                                                         |     }
    0x000d1a3e subs r3, r5, 5                            |     r3 = r5 - 5;
    0x000d1a40 mov.w ip, 1                               |     
    0x000d1a44 lsl.w ip, ip, r3                          |     
    0x000d1a48 movw r3, 0x1fe9                           |     r3 = 0x1fe9;
    0x000d1a4c tst.w ip, r3                              |     
                                                         |     if ((ip & r3) == 0) {
    0x000d1a50 beq 0xd1aac                               |         goto label_3;
                                                         |     }
                                                         |     do {
    0x000d1a52 ldr r1, [pc, 0x120]                       |         
    0x000d1a54 add r5, sp, 8                             |         r5 += var_8h;
    0x000d1a56 mov r3, r7                                |         r3 = r7;
    0x000d1a58 mov r2, r6                                |         r2 = r6;
    0x000d1a5a mov r0, r5                                |         r0 = r5;
    0x000d1a5c add r1, pc                                |         r1 = 0x1a35d6;
    0x000d1a5e bl 0x38ce0                                |         r0 = asprintf ()
                                                         | label_0:
    0x000d1a62 cmp r0, 0                                 |         
    0x000d1a64 it lt                                     |         
                                                         |         if (r0 >= 0) {
    0x000d1a66 movlt r0, 0                               |             r0 = 0;
                                                         |         }
                                                         |         if (r0 >= 0) {
    0x000d1a68 blt 0xd1a80                               |             
    0x000d1a6a bl 0xd34d8                                |             fcn_000d34d8 ();
    0x000d1a6e ldr r2, [r5]                              |             r2 = *(r5);
    0x000d1a70 mov r3, r0                                |             r3 = r0;
    0x000d1a72 ldr.w r0, [r0, 0x98]                      |             r0 = var_98h;
    0x000d1a76 str.w r2, [r3, 0x98]                      |             __asm ("str.w r2, [var_98h]");
    0x000d1a7a blx 0x1ded4                               |             fcn_0001ded4 ();
    0x000d1a7e ldr r0, [r5]                              |             r0 = *(r5);
                                                         |         }
    0x000d1a80 add.w sp, sp, 0x418                       |         
    0x000d1a84 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_2:
    0x000d1a88 cmp r5, 2                                 |         
    0x000d1a8a bls 0xd1a52                               |         
                                                         |     } while (r5 < 2);
    0x000d1a8c add r1, sp, 0x18                          |     r1 += var_18h;
    0x000d1a8e ldr r0, [r4, 4]                           |     r0 = var_4h_2;
    0x000d1a90 mov.w r2, 0x400                           |     r2 = 0x400;
    0x000d1a94 add r5, sp, 8                             |     r5 += var_8h;
    0x000d1a96 bl 0x67bc4                                |     strerror_r ();
    0x000d1a9a ldr r1, [pc, 0xdc]                        |     
    0x000d1a9c mov r3, r7                                |     r3 = r7;
    0x000d1a9e str r0, [sp]                              |     *(sp) = r0;
    0x000d1aa0 mov r2, r6                                |     r2 = r6;
    0x000d1aa2 mov r0, r5                                |     r0 = r5;
    0x000d1aa4 add r1, pc                                |     r1 = 0x1a3622;
    0x000d1aa6 bl 0x38ce0                                |     asprintf ()
    0x000d1aaa b 0xd1a62                                 |     goto label_0;
                                                         | label_3:
    0x000d1aac ands ip, ip, 0x12                         |     
                                                         |     if (ip != ip) {
    0x000d1ab0 beq 0xd1ad8                               |         
    0x000d1ab2 ldr r1, [pc, 0xc8]                        |         
    0x000d1ab4 movs r2, 5                                |         r2 = 5;
    0x000d1ab6 ldr r0, [pc, 0xc8]                        |         
    0x000d1ab8 add r5, sp, 8                             |         r5 += var_8h;
    0x000d1aba add r1, pc                                |         r1 = 0x1a363c;
    0x000d1abc add r0, pc                                |         r0 = 0x1a3642;
    0x000d1abe bl 0x28688                                |         r0 = dcgettext (r0, r1);
    0x000d1ac2 mov r1, r0                                |         r1 = r0;
    0x000d1ac4 ldr r0, [r4, 8]                           |         r0 = var_4h_3;
    0x000d1ac6 mov r3, r7                                |         r3 = r7;
    0x000d1ac8 mov r2, r6                                |         r2 = r6;
    0x000d1aca str r0, [sp, 4]                           |         var_4h = r0;
    0x000d1acc ldr r0, [r4, 4]                           |         r0 = var_4h_2;
    0x000d1ace str r0, [sp]                              |         *(sp) = r0;
    0x000d1ad0 mov r0, r5                                |         r0 = r5;
    0x000d1ad2 bl 0x38ce0                                |         asprintf ()
    0x000d1ad6 b 0xd1a62                                 |         goto label_0;
                                                         |     }
    0x000d1ad8 cmp r5, 7                                 |     
                                                         |     if (r5 != 7) {
    0x000d1ada bne 0xd1b1a                               |         goto label_1;
                                                         |     }
    0x000d1adc ldr r1, [pc, 0xa4]                        |     
    0x000d1ade ldr r0, [r4, 4]                           |     r0 = var_4h_2;
    0x000d1ae0 add r1, pc                                |     r1 = 0x1a3668;
    0x000d1ae2 add.w r2, r1, 0x254                       |     r2 = r1 + 0x254;
                                                         |     do {
    0x000d1ae6 ldr.w r3, [r2, ip, lsl 3]                 |         offset_0 = ip << 3;
                                                         |         r3 = *((r2 + offset_0));
    0x000d1aea cmp r0, r3                                |         
                                                         |         if (r0 == r3) {
    0x000d1aec beq 0xd1b34                               |             goto label_4;
                                                         |         }
    0x000d1aee add.w ip, ip, 1                           |         
    0x000d1af2 cmp.w ip, 8                               |         
    0x000d1af6 bne 0xd1ae6                               |         
                                                         |     } while (ip != 8);
                                                         |     do {
    0x000d1af8 ldr r1, [pc, 0x8c]                        |         
    0x000d1afa movs r2, 5                                |         r2 = 5;
    0x000d1afc ldr r0, [pc, 0x8c]                        |         
    0x000d1afe add r5, sp, 8                             |         r5 += var_8h;
    0x000d1b00 add r1, pc                                |         r1 = 0x1a368c;
    0x000d1b02 add r0, pc                                |         r0 = 0x1a3692;
    0x000d1b04 bl 0x28688                                |         dcgettext (r0, r1);
    0x000d1b08 ldr r4, [r4, 4]                           |         r4 = var_4h_2;
    0x000d1b0a mov r1, r0                                |         r1 = r0;
    0x000d1b0c mov r3, r7                                |         r3 = r7;
    0x000d1b0e mov r2, r6                                |         r2 = r6;
    0x000d1b10 mov r0, r5                                |         r0 = r5;
    0x000d1b12 str r4, [sp]                              |         *(sp) = r4;
    0x000d1b14 bl 0x38ce0                                |         asprintf ()
    0x000d1b18 b 0xd1a62                                 |         goto label_0;
                                                         | label_1:
    0x000d1b1a ldrd r0, r1, [r4, 4]                      |         __asm ("ldrd r0, r1, [var_4h_2]");
    0x000d1b1e add r5, sp, 8                             |         r5 += var_8h;
    0x000d1b20 mov r3, r7                                |         r3 = r7;
    0x000d1b22 mov r2, r6                                |         r2 = r6;
    0x000d1b24 str r1, [sp, 4]                           |         var_4h = r1;
    0x000d1b26 ldr r1, [pc, 0x68]                        |         
    0x000d1b28 str r0, [sp]                              |         *(sp) = r0;
    0x000d1b2a mov r0, r5                                |         r0 = r5;
    0x000d1b2c add r1, pc                                |         r1 = 0x1a36c2;
    0x000d1b2e bl 0x38ce0                                |         asprintf ()
    0x000d1b32 b 0xd1a62                                 |         goto label_0;
                                                         | label_4:
    0x000d1b34 add.w ip, r1, ip, lsl 3                   |         
    0x000d1b38 ldr r5, [pc, 0x58]                        |         
    0x000d1b3a add.w r1, r1, 0x298                       |         r1 += 0x298;
    0x000d1b3e ldr.w r3, [ip, 0x258]                     |         r3 = *((ip + 0x258));
    0x000d1b42 movs r2, 5                                |         r2 = 5;
    0x000d1b44 add r5, pc                                |         r5 = 0x1a36dc;
    0x000d1b46 mov r0, r5                                |         r0 = r5;
    0x000d1b48 add r1, r3                                |         r1 += r3;
    0x000d1b4a bl 0x28688                                |         dcgettext (r0, r1);
    0x000d1b4c ldc2 p6, c4, [sp, 0x200]                  |         __asm ("ldc2 p6, c4, aav.0x000000ff");
    0x000d1b50 cmp r0, 0                                 |         
    0x000d1b52 beq 0xd1af8                               |         
                                                         |     } while (r0 == 0);
    0x000d1b54 ldr r1, [pc, 0x40]                        |     
    0x000d1b56 movs r2, 5                                |     r2 = 5;
    0x000d1b58 mov r0, r5                                |     r0 = r5;
    0x000d1b5a add r5, sp, 8                             |     r5 += var_8h;
    0x000d1b5c add r1, pc                                |     r1 = 0x1a36f8;
    0x000d1b5e bl 0x28688                                |     dcgettext (r0, r1);
    0x000d1b62 mov r3, r7                                |     r3 = r7;
    0x000d1b64 mov r1, r0                                |     r1 = r0;
    0x000d1b66 mov r2, r6                                |     r2 = r6;
    0x000d1b68 mov r0, r5                                |     r0 = r5;
    0x000d1b6a str.w r8, [sp]                            |     __asm ("str.w r8, [sp]");
    0x000d1b6c strh r0, [r0]                             |     *(r0) = r0;
    0x000d1b6e bl 0x38ce0                                |     asprintf ()
    0x000d1b72 b 0xd1a62                                 |     goto label_0;
                                                         | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x5725c */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.dlerror ()                           | void dlerror () {
                                                     |     int16_t var_0h;
                                                     |     int16_t var_ch;
    0x0005725c ldr r3, [pc, 0x138]                   |     
    0x0005725e ldr r2, [pc, 0x13c]                   |     r2 = *(0x5739e);
    0x00057260 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x00057264 sub sp, 0x10                          |     
    0x00057266 add r3, pc                            |     r3 = 0xae602;
    0x00057268 ldr r6, [r3, r2]                      |     r6 = *(0xae602);
    0x0005726a ldr.w r5, [r6, 0x1c4]                 |     r5 = *(0xae7c6);
                                                     |     if (r5 != 0) {
    0x0005726e cbz r5, 0x5727a                       |         
    0x00057270 ldr r3, [r5, 0x10]                    |         r3 = *((r5 + 0x10));
    0x00057272 add sp, 0x10                          |         
    0x00057274 pop.w {r4, r5, r6, r7, r8, lr}        |         
    0x00057278 bx r3                                 |         return uint32_t (*r3)() ();
                                                     |     }
    0x0005727a ldr r3, [pc, 0x108]                   |     
    0x0005727c mrc p15, 0, r7, c13, c0, 3            |     __asm ("mrc p15, 0, r7, c13, c0, 3");
    0x00057280 add r3, pc                            |     
    0x00057282 ldr r3, [r3]                          |     r3 = *(0xae60a);
    0x00057284 ldr r4, [r7, r3]                      |     r4 = *((r7 + r3));
                                                     |     if (r4 == 0) {
    0x00057286 cbz r4, 0x572e0                       |         goto label_0;
                                                     |     }
    0x00057288 adds r3, r4, 1                        |     r3 = r4 + 1;
                                                     |     if (r3 == r4) {
    0x0005728a beq 0x57334                           |         goto label_3;
                                                     |     }
    0x0005728c ldr r1, [r4, 0xc]                     |     r1 = *((r4 + 0xc));
                                                     |     if (r1 == 0) {
    0x0005728e cbz r1, 0x572e0                       |         goto label_0;
                                                     |     }
    0x00057290 ldrb r3, [r4, 5]                      |     r3 = *((r4 + 5));
    0x00057292 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x00057294 bne 0x5735a                           |         goto label_4;
                                                     |     }
    0x00057296 ldr r3, [r4]                          |     r3 = *(r4);
    0x00057298 ldr r5, [r4, 8]                       |     r5 = *((r4 + 8));
                                                     |     if (r3 == 0) {
    0x0005729a cbz r3, 0x572e8                       |         goto label_5;
                                                     |     }
    0x0005729c ldr r2, [pc, 0xe8]                    |     
    0x0005729e add r2, pc                            |     
    0x000572a0 ldr r2, [r2]                          |     r2 = *(0xae62a);
    0x000572a2 str r3, [r7, r2]                      |     *((r7 + r2)) = r3;
    0x000572a4 ldrb r3, [r5]                         |     r3 = *(r5);
    0x000572a6 cmp r3, 0                             |     
                                                     |     if (r3 != 0) {
    0x000572a8 bne 0x57342                           |         goto label_6;
                                                     |     }
    0x000572aa ldr.w r8, [pc, 0xf4]                  |     r8 = *(0x000573a0);
    0x000572ae add r8, pc                            |     r8 += pc;
                                                     | label_1:
    0x000572b0 ldr r0, [pc, 0xf0]                    |     
    0x000572b2 movs r2, 5                            |     r2 = 5;
    0x000572b4 add r0, pc                            |     r0 = 0xae65c;
    0x000572b6 bl 0x28688                            |     dcgettext (r0, r1);
    0x000572ba ldr r1, [pc, 0xec]                    |     
    0x000572bc mov r3, r8                            |     r3 = r8;
    0x000572be mov r2, r5                            |     r2 = r5;
    0x000572c0 str r0, [sp]                          |     *(sp) = r0;
    0x000572c2 add r0, sp, 0xc                       |     r0 += var_ch;
    0x000572c4 add r1, pc                            |     r1 = 0xae672;
    0x000572c6 bl 0x38ce0                            |     asprintf ()
    0x000572ca ldr r3, [pc, 0xc0]                    |     
    0x000572cc cmp r0, 0                             |     
    0x000572ce ldr r2, [r4]                          |     r2 = *(r4);
    0x000572d0 add r3, pc                            |     
    0x000572d2 ldr r3, [r3]                          |     r3 = *(0xae662);
    0x000572d4 str r2, [r7, r3]                      |     *((r7 + r3)) = r2;
    0x000572d6 mov.w r3, 1                           |     r3 = 1;
    0x000572da strb r3, [r4, 5]                      |     *((r4 + 5)) = r3;
                                                     |     if (r0 >= 0) {
    0x000572dc bge 0x57314                           |         goto label_7;
                                                     |     }
                                                     |     do {
    0x000572de ldr r5, [r4, 0xc]                     |         r5 = *((r4 + 0xc));
                                                     | label_0:
    0x000572e0 mov r0, r5                            |         r0 = r5;
    0x000572e2 add sp, 0x10                          |         
    0x000572e4 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_5:
    0x000572e8 ldrb r3, [r5]                         |         r3 = *(r5);
                                                     |         if (r3 != 0) {
    0x000572ea cbnz r3, 0x5734a                      |             goto label_8;
                                                     |         }
    0x000572ec ldr r7, [pc, 0xbc]                    |         
    0x000572ee add r7, pc                            |         r7 = 0xae69e;
                                                     | label_2:
    0x000572f0 ldr r0, [pc, 0xbc]                    |         
    0x000572f2 movs r2, 5                            |         r2 = 5;
    0x000572f4 add r0, pc                            |         r0 = 0xae6a8;
    0x000572f6 bl 0x28688                            |         dcgettext (r0, r1);
    0x000572fa ldr r1, [pc, 0xb8]                    |         
    0x000572fc mov r3, r7                            |         r3 = r7;
    0x000572fe str r0, [sp]                          |         *(sp) = r0;
    0x00057300 mov r2, r5                            |         r2 = r5;
    0x00057302 add r0, sp, 0xc                       |         r0 += var_ch;
    0x00057304 add r1, pc                            |         r1 = 0xae6be;
    0x00057306 bl 0x38ce0                            |         r0 = asprintf ()
    0x0005730a cmp r0, 0                             |         
    0x0005730c mov.w r3, 1                           |         r3 = 1;
    0x00057310 strb r3, [r4, 5]                      |         *((r4 + 5)) = r3;
    0x00057312 blt 0x572de                           |         
                                                     |     } while (r0 < 0);
                                                     | label_7:
    0x00057314 ldrb r3, [r4, 4]                      |     r3 = *((r4 + 4));
    0x00057316 cmp r3, 1                             |     
                                                     |     if (r3 == 1) {
    0x00057318 beq 0x57350                           |         goto label_9;
                                                     |     }
    0x0005731a cmp r3, 2                             |     
                                                     |     if (r3 != 2) {
    0x0005731c bne 0x57324                           |         goto label_10;
                                                     |     }
    0x0005731e ldr r0, [r4, 0xc]                     |     r0 = *((r4 + 0xc));
    0x00057320 blx 0x1ded4                           |     fcn_0001ded4 ();
                                                     |     do {
                                                     | label_10:
    0x00057324 ldr r5, [sp, 0xc]                     |         r5 = var_ch;
    0x00057326 movs r3, 2                            |         r3 = 2;
    0x00057328 strb r3, [r4, 4]                      |         *((r4 + 4)) = r3;
    0x0005732a mov r0, r5                            |         r0 = r5;
    0x0005732c str r5, [r4, 0xc]                     |         *((r4 + 0xc)) = r5;
    0x0005732e add sp, 0x10                          |         
    0x00057330 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_3:
    0x00057334 ldr r3, [pc, 0x58]                    |         
    0x00057336 add r3, pc                            |         
    0x00057338 ldr r3, [r3]                          |         r3 = *(0xae6ca);
    0x0005733a str r5, [r7, r3]                      |         *((r7 + r3)) = r5;
    0x0005733c ldr r5, [pc, 0x78]                    |         
    0x0005733e add r5, pc                            |         r5 = 0xae6fa;
    0x00057340 b 0x572e0                             |         goto label_0;
                                                     | label_6:
    0x00057342 ldr.w r8, [pc, 0x78]                  |         r8 = *(0x000573bc);
    0x00057346 add r8, pc                            |         r8 += pc;
    0x00057348 b 0x572b0                             |         goto label_1;
                                                     | label_8:
    0x0005734a ldr r7, [pc, 0x74]                    |         
    0x0005734c add r7, pc                            |         r7 = 0xae712;
    0x0005734e b 0x572f0                             |         goto label_2;
                                                     | label_9:
    0x00057350 ldr.w r3, [r6, 0x1b4]                 |         r3 = *((r6 + 0x1b4));
    0x00057354 ldr r0, [r4, 0xc]                     |         r0 = *((r4 + 0xc));
    0x00057356 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00057358 b 0x57324                             |         
                                                     |     } while (1);
                                                     | label_4:
    0x0005735a ldr r3, [pc, 0x38]                    |     
    0x0005735c add r3, pc                            |     
    0x0005735e ldr r3, [r3]                          |     r3 = *(0xae6f6);
    0x00057360 str r5, [r7, r3]                      |     *((r7 + r3)) = r5;
    0x00057362 ldrb r3, [r4, 4]                      |     r3 = *((r4 + 4));
    0x00057364 cmp r3, 1                             |     
                                                     |     if (r3 == 1) {
    0x00057366 beq 0x5737a                           |         goto label_11;
                                                     |     }
    0x00057368 cmp r3, 2                             |     
                                                     |     if (r3 != 2) {
    0x0005736a bne 0x57372                           |         goto label_12;
                                                     |     }
    0x0005736c mov r0, r1                            |     r0 = r1;
    0x0005736e blx 0x1ded4                           |     fcn_0001ded4 ();
                                                     |     do {
                                                     | label_12:
    0x00057372 mov r0, r4                            |         r0 = r4;
    0x00057374 blx 0x1ded4                           |         fcn_0001ded4 ();
    0x00057378 b 0x572e0                             |         goto label_0;
                                                     | label_11:
    0x0005737a ldr.w r3, [r6, 0x1b4]                 |         r3 = *((r6 + 0x1b4));
    0x0005737e mov r0, r1                            |         r0 = r1;
    0x00057380 blx r3                                |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00057382 b 0x57372                             |         
                                                     |     } while (1);
                                                     | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x3c534 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.psignal ()                       | void psignal (int16_t arg1, uint32_t arg2) {
                                                 |     int16_t var_0h;
                                                 |     int16_t var_ch;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0003c534 push {r4, r5, r6, r7, lr}         |     
    0x0003c536 mov r5, r0                        |     r5 = r0;
    0x0003c538 sub sp, 0x14                      |     
    0x0003c53a cmp r1, 0                         |     
                                                 |     if (r1 == 0) {
    0x0003c53c beq 0x3c5b6                       |         goto label_2;
                                                 |     }
    0x0003c53e mov r4, r1                        |     r4 = r1;
    0x0003c540 ldrb r3, [r1]                     |     r3 = *(r1);
                                                 |     if (r3 == 0) {
    0x0003c542 cbz r3, 0x3c574                   |         goto label_3;
                                                 |     }
    0x0003c544 ldr r6, [pc, 0x88]                |     
    0x0003c546 add r6, pc                        |     r6 = 0x78b1a;
                                                 | label_0:
    0x0003c548 cmp r5, 0x40                      |     
                                                 |     if (r5 > 0x40) {
    0x0003c54a bhi 0x3c57e                       |         goto label_4;
                                                 |     }
                                                 |     do {
    0x0003c54c ldr r3, [pc, 0x84]                |         
    0x0003c54e add r3, pc                        |         r3 = 0x78b26;
    0x0003c550 ldr.w r1, [r3, r5, lsl 2]         |         r1 = *(0x78b26);
                                                 |         if (r1 == 0) {
    0x0003c554 cbz r1, 0x3c57e                   |             goto label_4;
                                                 |         }
    0x0003c556 ldr r0, [pc, 0x80]                |         
    0x0003c558 movs r2, 5                        |         r2 = 5;
    0x0003c55a add r0, pc                        |         r0 = 0x78b38;
    0x0003c55c bl 0x28688                        |         dcgettext (r0, r1);
    0x0003c560 ldr r1, [pc, 0x78]                |         
    0x0003c562 add r1, pc                        |         r1 = 0x78b42;
                                                 | label_1:
    0x0003c564 str r0, [sp]                      |         *(sp) = r0;
    0x0003c566 mov r3, r6                        |         r3 = r6;
    0x0003c568 mov r2, r4                        |         r2 = r4;
    0x0003c56a movs r0, 0                        |         r0 = 0;
    0x0003c56c bl 0x4bb90                        |         fcn_0004bb90 (r0);
    0x0003c570 add sp, 0x14                      |         
    0x0003c572 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_3:
    0x0003c574 ldr r6, [pc, 0x68]                |         
    0x0003c576 cmp r5, 0x40                      |         
    0x0003c578 add r6, pc                        |         r6 = 0x78b5c;
    0x0003c57a mov r4, r6                        |         r4 = r6;
    0x0003c57c bls 0x3c54c                       |         
                                                 |     } while (r5 < 0x40);
                                                 | label_4:
    0x0003c57e ldr r7, [pc, 0x64]                |     
    0x0003c580 movs r2, 5                        |     r2 = 5;
    0x0003c582 ldr r1, [pc, 0x64]                |     
    0x0003c584 add r7, pc                        |     r7 = 0x78b6e;
    0x0003c586 add r1, pc                        |     r1 = 0x78b74;
    0x0003c588 mov r0, r7                        |     r0 = r7;
    0x0003c58a bl 0x28688                        |     dcgettext (r0, r1);
    0x0003c58e mov r3, r6                        |     r3 = r6;
    0x0003c590 mov r1, r0                        |     r1 = r0;
    0x0003c592 mov r2, r4                        |     r2 = r4;
    0x0003c594 add r0, sp, 0xc                   |     r0 += var_ch;
    0x0003c596 str r5, [sp]                      |     *(sp) = r5;
    0x0003c598 bl 0x38ce0                        |     r0 = asprintf ()
    0x0003c59c cmp r0, 0                         |     
                                                 |     if (r0 >= 0) {
    0x0003c59e blt 0x3c5be                       |         
    0x0003c5a0 ldr r1, [pc, 0x48]                |         
    0x0003c5a2 movs r0, 0                        |         r0 = 0;
    0x0003c5a4 ldr r2, [sp, 0xc]                 |         r2 = var_ch;
    0x0003c5a6 add r1, pc                        |         r1 = 0x78b96;
    0x0003c5a8 bl 0x4bb90                        |         fcn_0004bb90 (r0);
    0x0003c5ac ldr r0, [sp, 0xc]                 |         r0 = var_ch;
    0x0003c5ae blx 0x1ded4                       |         fcn_0001ded4 ();
    0x0003c5b2 add sp, 0x14                      |         
    0x0003c5b4 pop {r4, r5, r6, r7, pc}          |         
                                                 | label_2:
    0x0003c5b6 ldr r6, [pc, 0x38]                |         
    0x0003c5b8 add r6, pc                        |         r6 = 0x78bae;
    0x0003c5ba mov r4, r6                        |         r4 = r6;
    0x0003c5bc b 0x3c548                         |         goto label_0;
                                                 |     }
    0x0003c5be ldr r1, [pc, 0x34]                |     
    0x0003c5c0 movs r2, 5                        |     r2 = 5;
    0x0003c5c2 mov r0, r7                        |     r0 = r7;
    0x0003c5c4 add r1, pc                        |     r1 = 0x78bbe;
    0x0003c5c6 bl 0x28688                        |     dcgettext (r0, r1);
    0x0003c5ca ldr r1, [pc, 0x2c]                |     
    0x0003c5cc add r1, pc                        |     r1 = 0x78bca;
    0x0003c5ce b 0x3c564                         |     goto label_1;
                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xba818 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.rcmd_af ()                                           | void rcmd_af (int16_t arg_2b8h, int16_t arg_2bch, int16_t arg_2c0h, int16_t arg1, int16_t arg2, char * arg3, char * arg4) {
                                                                     |     int16_t var_0h;
                                                                     |     int32_t var_0h_2;
                                                                     |     int16_t var_8h;
                                                                     |     int16_t var_14h;
                                                                     |     int16_t var_18h;
                                                                     |     int16_t var_1ch;
                                                                     |     int16_t var_20h;
                                                                     |     int16_t var_24h;
                                                                     |     int16_t var_28h;
                                                                     |     int16_t var_2ch;
                                                                     |     char * var_30h;
                                                                     |     int16_t var_34h;
                                                                     |     int16_t var_38h;
                                                                     |     int16_t fildes;
                                                                     |     int16_t var_1h;
                                                                     |     void * buf;
                                                                     |     int16_t var_44h;
                                                                     |     char * s;
                                                                     |     int16_t var_50h;
                                                                     |     int16_t var_4h;
                                                                     |     int32_t var_8h_3;
                                                                     |     int16_t var_ch;
                                                                     |     int32_t var_eh;
                                                                     |     char * var_60h;
                                                                     |     int16_t var_1h_2;
                                                                     |     int32_t var_4h_2;
                                                                     |     int32_t var_8h_2;
                                                                     |     int32_t var_ch_2;
                                                                     |     int32_t var_10h;
                                                                     |     int32_t var_14h_2;
                                                                     |     int16_t var_78h;
                                                                     |     int16_t var_7ch;
                                                                     |     int16_t var_80h;
                                                                     |     int32_t var_84h;
                                                                     |     int32_t var_84h_2;
                                                                     |     int32_t var_8ch;
                                                                     |     int32_t var_8ch_2;
                                                                     |     int16_t var_94h;
                                                                     |     int16_t var_98h;
                                                                     |     int16_t var_c8h;
                                                                     |     int16_t var_148h;
                                                                     |     int16_t var_1c8h;
                                                                     |     int16_t var_1cah;
                                                                     |     int16_t var_294h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
                                                                     |     r2 = arg3;
                                                                     |     r3 = arg4;
    0x000ba818 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}           |     
    0x000ba81c sub.w sp, sp, 0x294                                   |     
    0x000ba820 ldrh.w r6, [sp, 0x2c0]                                |     r6 = *(arg_2c0h);
    0x000ba824 movw r4, 0xfffd                                       |     r4 = 0xfffd;
    0x000ba828 str r0, [sp, 0x28]                                    |     var_28h = r0;
    0x000ba82a ands r4, r6                                           |     r4 &= r6;
    0x000ba82c strd r2, r3, [sp, 0x30]                               |     __asm ("strd r2, r3, [var_30h]");
    0x000ba830 cmp r4, 0                                             |     
    0x000ba832 it ne                                                 |     
                                                                     |     if (r4 != 0) {
    0x000ba834 cmpne r6, 0xa                                         |         __asm ("cmpne r6, 0xa");
                                                                     |     }
    0x000ba836 ite ne                                                |     
                                                                     |     if (r4 == 0) {
    0x000ba838 movne r4, 1                                           |         r4 = 1;
                                                                     |     }
                                                                     |     if (r4 != 0) {
    0x000ba83a moveq r4, 0                                           |         r4 = 0;
                                                                     |     }
                                                                     |     if (r4 != 0) {
    0x000ba83c bne.w 0xbad68                                         |         goto label_11;
                                                                     |     }
    0x000ba840 mov r5, r1                                            |     r5 = r1;
    0x000ba842 add r7, sp, 0x78                                      |     r7 += var_78h;
    0x000ba844 bl 0x84580                                            |     getpid ();
    0x000ba848 ldr r2, [pc, 0x374]                                   |     
    0x000ba84a rev16 r3, r5                                          |     __asm ("rev16 r3, r5");
    0x000ba84c str r0, [sp, 0x14]                                    |     var_14h = r0;
    0x000ba84e movs r0, 2                                            |     r0 = 2;
    0x000ba850 str r6, [sp, 0x7c]                                    |     var_7ch = r6;
    0x000ba852 add r6, sp, 0x48                                      |     r6 += s;
    0x000ba854 uxth r3, r3                                           |     r3 = (int16_t) r3;
    0x000ba856 add r2, pc                                            |     r2 = 0x17541a;
    0x000ba858 movs r1, 8                                            |     r1 = 8;
    0x000ba85a str r0, [sp, 0x78]                                    |     var_78h = r0;
    0x000ba85c movs r5, 1                                            |     r5 = 1;
    0x000ba85e mov r0, r6                                            |     r0 = r6;
    0x000ba860 strd r4, r4, [sp, 0x84]                               |     __asm ("strd r4, r4, [var_84h]");
    0x000ba864 strd r4, r4, [sp, 0x8c]                               |     __asm ("strd r4, r4, [var_8ch]");
    0x000ba868 str r4, [sp, 0x94]                                    |     var_94h = r4;
    0x000ba86a str r5, [sp, 0x80]                                    |     var_80h = r5;
    0x000ba86c bl 0x3cab0                                            |     snprintf ();
    0x000ba870 ldr r0, [sp, 0x28]                                    |     r0 = var_28h;
    0x000ba872 add r3, sp, 0x38                                      |     r3 += var_38h;
    0x000ba874 mov r2, r7                                            |     r2 = r7;
    0x000ba876 mov r1, r6                                            |     r1 = r6;
    0x000ba878 str r3, [sp, 0x18]                                    |     var_18h = r3;
    0x000ba87a ldr r0, [r0]                                          |     r0 = *(r0);
    0x000ba87c bl 0x975b4                                            |     r0 = getaddrinfo ();
    0x000ba880 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x000ba882 bne.w 0xbad14                                         |         goto label_12;
                                                                     |     }
    0x000ba886 ldr r6, [sp, 0x18]                                    |     r6 = var_18h;
    0x000ba888 add.w sb, sp, 0x50                                    |     sb += var_50h;
    0x000ba88c strh.w r5, [sb, 4]                                    |     var_4h = r5;
    0x000ba890 strh.w r5, [sb, 0xc]                                  |     var_ch = r5;
    0x000ba894 ldr r4, [r6]                                          |     r4 = *(r6);
    0x000ba896 ldr r3, [r4, 0x18]                                    |     r3 = *((r4 + 0x18));
    0x000ba898 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000ba89a beq.w 0xbaa56                                         |         goto label_13;
                                                                     |     }
    0x000ba89e ldr r5, [pc, 0x324]                                   |     
    0x000ba8a0 add r5, pc                                            |     r5 = 0x17546a;
    0x000ba8a2 ldr r0, [r5]                                          |     r0 = *(0x17546a);
    0x000ba8a4 blx 0x1ded4                                           |     fcn_0001ded4 ();
    0x000ba8a8 ldr r3, [r6]                                          |     r3 = *(r6);
    0x000ba8aa ldr r0, [r3, 0x18]                                    |     r0 = *((r3 + 0x18));
    0x000ba8ac bl 0x6a858                                            |     r0 = strdup ();
    0x000ba8b0 mov r4, r0                                            |     r4 = r0;
    0x000ba8b2 str r0, [r5]                                          |     *(r5) = r0;
    0x000ba8b4 cmp r0, 0                                             |     
                                                                     |     if (r0 == 0) {
    0x000ba8b6 beq.w 0xbae36                                         |         goto label_14;
                                                                     |     }
    0x000ba8ba ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x000ba8bc str r0, [r3]                                          |     *(r3) = r0;
    0x000ba8be ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x000ba8c0 ldr r4, [r3]                                          |     r4 = *(r3);
                                                                     | label_1:
    0x000ba8c2 ldr r3, [pc, 0x304]                                   |     
    0x000ba8c4 add r1, sp, 0xc8                                      |     r1 += var_c8h;
    0x000ba8c6 vldr d16, [pc, 0x2d8]                                 |     __asm ("vldr d16, aav.0x000000ff");
    0x000ba8ca movs r0, 0                                            |     r0 = 0;
    0x000ba8cc movs r5, 0                                            |     r5 = 0;
    0x000ba8ce movs r7, 1                                            |     r7 = 1;
    0x000ba8d0 add r3, pc                                            |     r3 = 0x17549e;
    0x000ba8d2 mrc p15, 0, fp, c13, c0, 3                            |     __asm ("mrc p15, 0, fp, c13, c0, 3");
    0x000ba8d6 str r3, [sp, 0x20]                                    |     var_20h = r3;
    0x000ba8d8 mov sl, sb                                            |     sl = sb;
    0x000ba8da ldr r3, [pc, 0x2f0]                                   |     
    0x000ba8dc add.w r8, sp, 0x3c                                    |     r8 += fildes;
    0x000ba8e0 vstr d16, [sp, 0xc8]                                  |     __asm ("vstr d16, [sp, 0xc8]");
    0x000ba8e4 add r3, pc                                            |     r3 = 0x1754b6;
    0x000ba8e6 str r3, [sp, 0x24]                                    |     var_24h = r3;
    0x000ba8e8 add r3, sp, 0x148                                     |     r3 += var_148h;
    0x000ba8ea mov r2, r3                                            |     r2 = r3;
    0x000ba8ec str r3, [sp, 0x2c]                                    |     var_2ch = r3;
    0x000ba8ee bl 0x2ca0c                                            |     sigprocmask ();
    0x000ba8f2 movw r3, 0x3ff                                        |     r3 = 0x3ff;
    0x000ba8f6 str.w r3, [r8]                                        |     __asm ("str.w r3, [r8]");
                                                                     | label_0:
    0x000ba8fa ldrh r1, [r4, 4]                                      |     r1 = *((r4 + 4));
    0x000ba8fc mov r0, r8                                            |     r0 = r8;
    0x000ba8fe bl 0xba728                                            |     rresvport_af ();
    0x000ba902 subs r6, r0, 0                                        |     r6 -= fildes;
                                                                     |     if (r6 < fildes) {
    0x000ba904 blt 0xba968                                           |         goto label_15;
                                                                     |     }
                                                                     |     do {
    0x000ba906 ldr r2, [sp, 0x14]                                    |         r2 = var_14h;
    0x000ba908 movs r1, 8                                            |         r1 = 8;
    0x000ba90a bl 0x9e9f0                                            |         fcntl ();
    0x000ba90e ldrd r2, r1, [r4, 0x10]                               |         __asm ("ldrd r2, r1, [r4, 0x10]");
    0x000ba912 mov r0, r6                                            |         r0 = r6;
    0x000ba914 bl 0xad1e8                                            |         r0 = connect (r0, r1, r2);
    0x000ba918 cmp r0, 0                                             |         
                                                                     |         if (r0 >= 0) {
    0x000ba91a bge.w 0xbaa5c                                         |             goto label_16;
                                                                     |         }
    0x000ba91e mov r0, r6                                            |         r0 = r6;
    0x000ba920 bl 0x9ede0                                            |         close (r0);
    0x000ba924 ldr r3, [pc, 0x280]                                   |         
    0x000ba926 add r3, pc                                            |         
    0x000ba928 ldr r3, [r3]                                          |         r3 = *(0x1754d2);
    0x000ba92a ldr.w r6, [fp, r3]                                    |         r6 = *((fp + r3));
    0x000ba92e cmp r6, 0x62                                          |         
                                                                     |         if (r6 == 0x62) {
    0x000ba930 beq.w 0xbaa4a                                         |             goto label_17;
                                                                     |         }
    0x000ba934 ldr r3, [r4, 0x1c]                                    |         r3 = *((r4 + 0x1c));
    0x000ba936 cmp r6, 0x6f                                          |         
    0x000ba938 it eq                                                 |         
                                                                     |         if (r6 != 0x6f) {
    0x000ba93a moveq r5, 1                                           |             r5 = 1;
                                                                     |         }
                                                                     |         if (r3 != 0) {
    0x000ba93c cbnz r3, 0xba9a4                                      |             goto label_18;
                                                                     |         }
    0x000ba93e cmp r7, 0x10                                          |         
    0x000ba940 ite gt                                                |         
                                                                     |         if (r7 <= 0x10) {
    0x000ba942 movgt r5, 0                                           |             r5 = 0;
                                                                     |         }
                                                                     |         if (r7 > 0x10) {
    0x000ba944 andle r5, r5, 1                                       |             r5 &= 1;
                                                                     |         }
    0x000ba948 cmp r5, 0                                             |         
                                                                     |         if (r5 == 0) {
    0x000ba94a beq.w 0xbac2a                                         |             goto label_19;
                                                                     |         }
    0x000ba94e mov r0, r7                                            |         r0 = r7;
    0x000ba950 mov r5, r3                                            |         r5 = r3;
    0x000ba952 bl 0x835e0                                            |         sleep ();
    0x000ba956 ldr r3, [sp, 0x18]                                    |         r3 = var_18h;
    0x000ba958 mov r0, r8                                            |         r0 = r8;
    0x000ba95a lsls r7, r7, 1                                        |         r7 <<= 1;
    0x000ba95c ldr r4, [r3]                                          |         r4 = *(r3);
    0x000ba95e ldrh r1, [r4, 4]                                      |         r1 = *((r4 + 4));
    0x000ba960 bl 0xba728                                            |         rresvport_af ();
    0x000ba964 subs r6, r0, 0                                        |         r6 -= fildes;
    0x000ba966 bge 0xba906                                           |         
                                                                     |     } while (r6 >= fildes);
                                                                     | label_15:
    0x000ba968 ldr r3, [pc, 0x240]                                   |     
    0x000ba96a mrc p15, 0, r2, c13, c0, 3                            |     __asm ("mrc p15, 0, r2, c13, c0, 3");
    0x000ba96e add r3, pc                                            |     
    0x000ba970 ldr r3, [r3]                                          |     r3 = *(0x17551e);
    0x000ba972 ldr r3, [r2, r3]                                      |     r3 = *((r2 + r3));
    0x000ba974 cmp r3, 0xb                                           |     
                                                                     |     if (r3 == 0xb) {
    0x000ba976 beq.w 0xbace0                                         |         goto label_20;
                                                                     |     }
    0x000ba97a ldr r1, [pc, 0x254]                                   |     
    0x000ba97c movs r0, 0                                            |     r0 = 0;
    0x000ba97e add r1, pc                                            |     r1 = 0x175554;
    0x000ba980 bl 0x4bb90                                            |     fcn_0004bb90 (r0);
                                                                     | label_3:
    0x000ba984 ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x000ba986 movs r2, 0                                            |     r2 = 0;
    0x000ba988 movs r0, 2                                            |     r0 = 2;
    0x000ba98a bl 0x2ca0c                                            |     sigprocmask ();
    0x000ba98e ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x000ba990 ldr r0, [r3]                                          |     r0 = *(r3);
    0x000ba992 bl 0x98b94                                            |     freeaddrinfo ();
                                                                     | label_2:
    0x000ba996 mov.w r6, -1                                          |     r6 = -1;
    0x000ba99a mov r0, r6                                            |     r0 = r6;
    0x000ba99c add.w sp, sp, 0x294                                   |     
    0x000ba9a0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_18:
    0x000ba9a4 movs r3, 0                                            |     r3 = 0;
    0x000ba9a6 ldrd r1, r0, [r4, 0x10]                               |     __asm ("ldrd r1, r0, [r4, 0x10]");
    0x000ba9a8 asrs r4, r0, 0x20                                     |     r4 = r0 >> 0x20;
    0x000ba9aa add.w sb, sp, 0x98                                    |     sb += var_98h;
    0x000ba9ae strd r3, r3, [sp]                                     |     __asm ("strd r3, r3, [sp]");
    0x000ba9b2 str r3, [sp, 0x1c8]                                   |     var_1c8h = r3;
    0x000ba9b4 movs r3, 1                                            |     r3 = 1;
    0x000ba9b6 mov r2, sb                                            |     r2 = sb;
    0x000ba9b8 str r3, [sp, 8]                                       |     var_8h = r3;
    0x000ba9ba movs r3, 0x2e                                         |     r3 = 0x2e;
    0x000ba9bc bl 0xbc824                                            |     r0 = getnameinfo ();
    0x000ba9c0 ldrd r1, r0, [sp, 0x20]                               |     __asm ("ldrd r1, r0, [var_20h]");
    0x000ba9c4 movs r2, 5                                            |     r2 = 5;
    0x000ba9c6 bl 0x28688                                            |     dcgettext (r0, r1);
    0x000ba9ca add r3, sp, 0x1c8                                     |     r3 += var_1c8h;
    0x000ba9cc mov r1, r0                                            |     r1 = r0;
    0x000ba9ce mov r2, sb                                            |     r2 = sb;
    0x000ba9d0 mov r0, r3                                            |     r0 = r3;
    0x000ba9d2 str r3, [sp, 0x1c]                                    |     var_1ch = r3;
    0x000ba9d4 bl 0x38ce0                                            |     r0 = asprintf ()
    0x000ba9d8 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x000ba9da blt 0xba9ee                                           |         
    0x000ba9dc ldr r1, [pc, 0x1f4]                                   |         
    0x000ba9de movs r0, 0                                            |         r0 = 0;
    0x000ba9e0 ldr r2, [sp, 0x1c8]                                   |         r2 = var_1c8h;
    0x000ba9e2 add r1, pc                                            |         r1 = 0x1755ba;
    0x000ba9e4 bl 0x4bb90                                            |         fcn_0004bb90 (r0);
    0x000ba9e8 ldr r0, [sp, 0x1c8]                                   |         r0 = var_1c8h;
    0x000ba9ea blx 0x1ded4                                           |         fcn_0001ded4 ();
                                                                     |     }
    0x000ba9ee ldr r3, [pc, 0x1c0]                                   |     
    0x000ba9f0 movs r0, 0                                            |     r0 = 0;
    0x000ba9f2 add r3, pc                                            |     
    0x000ba9f4 ldr r3, [r3]                                          |     r3 = *(0x1755a8);
    0x000ba9f6 str.w r6, [fp, r3]                                    |     __asm ("str.w r6, [fp, r3]");
    0x000ba9fa movs r6, 0                                            |     r6 = 0;
    0x000ba9fc bl 0x39058                                            |     perror (r0);
    0x000baa00 ldr r4, [r4, 0x1c]                                    |     r4 = *((r4 + 0x1c));
    0x000baa02 mov.w ip, 1                                           |     
    0x000baa06 movs r3, 0x2e                                         |     r3 = 0x2e;
    0x000baa08 mov r2, sb                                            |     r2 = sb;
    0x000baa0a ldrd r1, r0, [r4, 0x10]                               |     __asm ("ldrd r1, r0, [r4, 0x10]");
    0x000baa0e strd r6, ip, [sp, 4]                                  |     __asm ("strd r6, ip, [var_8h]");
    0x000baa12 str r6, [sp]                                          |     *(sp) = r6;
    0x000baa14 bl 0xbc824                                            |     getnameinfo ();
    0x000baa18 ldr r1, [pc, 0x1bc]                                   |     
    0x000baa1a movs r2, 5                                            |     r2 = 5;
    0x000baa1c ldr r0, [pc, 0x1bc]                                   |     
    0x000baa1e add r1, pc                                            |     r1 = 0x1755fa;
    0x000baa20 add r0, pc                                            |     r0 = 0x175600;
    0x000baa22 bl 0x28688                                            |     dcgettext (r0, r1);
    0x000baa26 mov r2, sb                                            |     r2 = sb;
    0x000baa28 mov r1, r0                                            |     r1 = r0;
    0x000baa2a ldr r0, [sp, 0x1c]                                    |     r0 = var_1ch;
    0x000baa2c bl 0x38ce0                                            |     r0 = asprintf ()
    0x000baa30 cmp r0, r6                                            |     
                                                                     |     if (r0 < r6) {
    0x000baa32 blt.w 0xba8fa                                         |         goto label_0;
                                                                     |     }
    0x000baa36 ldr r1, [pc, 0x1a8]                                   |     
    0x000baa38 mov r0, r6                                            |     r0 = r6;
    0x000baa3a ldr r2, [sp, 0x1c8]                                   |     r2 = var_1c8h;
    0x000baa3c add r1, pc                                            |     r1 = 0x175622;
    0x000baa3e bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000baa42 ldr r0, [sp, 0x1c8]                                   |     r0 = var_1c8h;
    0x000baa44 blx 0x1ded4                                           |     fcn_0001ded4 ();
    0x000baa48 b 0xba8fa                                             |     goto label_0;
                                                                     | label_17:
    0x000baa4a ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x000baa4e subs r3, 1                                            |     r3--;
    0x000baa50 str.w r3, [r8]                                        |     __asm ("str.w r3, [r8]");
    0x000baa54 b 0xba8fa                                             |     goto label_0;
                                                                     | label_13:
    0x000baa56 ldr r2, [sp, 0x28]                                    |     r2 = var_28h;
    0x000baa58 str r3, [r2]                                          |     *(r2) = r3;
    0x000baa5a b 0xba8c2                                             |     goto label_1;
                                                                     | label_16:
    0x000baa5c ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x000baa60 mov sb, sl                                            |     sb = sl;
    0x000baa62 subs r3, 1                                            |     r3--;
    0x000baa64 str.w r3, [r8]                                        |     __asm ("str.w r3, [r8]");
    0x000baa68 ldr r3, [sp, 0x2bc]                                   |     r3 = *(arg_2bch);
    0x000baa6a cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x000baa6c beq.w 0xbacfc                                         |         goto label_21;
                                                                     |     }
    0x000baa70 ldrh r1, [r4, 4]                                      |     r1 = *((r4 + 4));
    0x000baa72 mov r0, r8                                            |     r0 = r8;
    0x000baa74 bl 0xba728                                            |     rresvport_af ();
    0x000baa78 ldr r3, [r4, 0x10]                                    |     r3 = *((r4 + 0x10));
    0x000baa7a subs r7, r0, 0                                        |     r7 -= fildes;
    0x000baa7c add r5, sp, 0x40                                      |     r5 += buf;
    0x000baa7e str r3, [r5]                                          |     *(r5) = r3;
                                                                     |     if (r7 < fildes) {
    0x000baa80 blt.w 0xbacd8                                         |         goto label_6;
                                                                     |     }
    0x000baa84 movs r1, 1                                            |     r1 = 1;
    0x000baa86 add r4, sp, 0x60                                      |     r4 += var_60h;
    0x000baa88 bl 0xad3a0                                            |     listen (r0, r1);
    0x000baa8c ldr r2, [pc, 0x154]                                   |     
    0x000baa8e movs r1, 8                                            |     r1 = 8;
    0x000baa90 ldr.w r3, [r8]                                        |     r3 = *(r8);
    0x000baa94 mov r0, r4                                            |     r0 = r4;
    0x000baa96 add r2, pc                                            |     r2 = 0x17567e;
    0x000baa98 mov fp, r3                                            |     
    0x000baa9a bl 0x3cab0                                            |     snprintf ();
    0x000baa9e mov r0, r4                                            |     r0 = r4;
    0x000baaa0 bl 0x6ae40                                            |     strlen ();
    0x000baaa4 mov r1, r4                                            |     r1 = r4;
    0x000baaa6 adds r2, r0, 1                                        |     r2 += var_1h_2;
    0x000baaa8 mov r0, r6                                            |     r0 = r6;
    0x000baaaa bl 0x9e6c0                                            |     r0 = write (r0, r1, r2);
    0x000baaae mov sl, r0                                            |     sl = r0;
    0x000baab0 mov r0, r4                                            |     r0 = r4;
    0x000baab2 bl 0x6ae40                                            |     strlen ();
    0x000baab6 adds r0, 1                                            |     r0++;
    0x000baab8 cmp r0, sl                                            |     
                                                                     |     if (r0 != sl) {
    0x000baaba bne.w 0xbad78                                         |         goto label_22;
                                                                     |     }
    0x000baabe ldr r3, [pc, 0xf4]                                    |     
    0x000baac0 movs r2, 0                                            |     r2 = 0;
    0x000baac2 str.w r6, [sb]                                        |     __asm ("str.w r6, [sb]");
    0x000baac6 mrc p15, 0, sl, c13, c0, 3                            |     __asm ("mrc p15, 0, sl, c13, c0, 3");
    0x000baaca str.w r7, [sb, 8]                                     |     __asm ("str.w r7, [var_8h_3]");
    0x000baace movs r1, 2                                            |     r1 = 2;
    0x000baad0 add r3, pc                                            |     
    0x000baad2 ldr r3, [r3]                                          |     r3 = *(0x17568a);
    0x000baad4 mov r0, sb                                            |     r0 = sb;
    0x000baad6 str.w r2, [sl, r3]                                    |     __asm ("str.w r2, [sl, r3]");
    0x000baada mov.w r2, -1                                          |     r2 = -1;
    0x000baade bl 0xa2d84                                            |     r0 = poll ();
    0x000baae2 cmp r0, 0                                             |     
                                                                     |     if (r0 <= 0) {
    0x000baae4 ble.w 0xbadba                                         |         goto label_23;
                                                                     |     }
    0x000baae8 ldrh.w r3, [sb, 0xe]                                  |     r3 = var_eh;
    0x000baaec lsls r0, r3, 0x1f                                     |     r0 = r3 << 0x1f;
                                                                     |     if (r0 >= r3) {
    0x000baaee bpl.w 0xbadba                                         |         goto label_23;
                                                                     |     }
    0x000baaf2 add.w sb, sp, 0x1c8                                   |     sb += var_1c8h;
    0x000baaf6 b 0xbab04                                             |     
                                                                     |     while (r1 == var_1h) {
    0x000baaf8 add r3, pc                                            |         r3 += pc;
    0x000baafa ldr r3, [r3]                                          |         r3 = *(r3);
    0x000baafc ldr.w r3, [sl, r3]                                    |         r3 = *((sl + r3));
    0x000bab00 cmp r3, 4                                             |         
                                                                     |         if (r3 != 4) {
    0x000bab02 bne 0xbab14                                           |             goto label_24;
                                                                     |         }
    0x000bab04 mov r1, sb                                            |         r1 = sb;
    0x000bab06 mov r2, r5                                            |         r2 = r5;
    0x000bab08 mov r0, r7                                            |         r0 = r7;
    0x000bab0a bl 0xad14c                                            |         accept (r0, r1, r2);
    0x000bab0e adds r1, r0, 1                                        |         r1 += var_1h;
    0x000bab10 ldr r3, [pc, 0xa4]                                    |         r3 = *(0xbabb8);
    0x000bab12 beq 0xbaaf8                                           |         
                                                                     |     }
                                                                     | label_24:
    0x000bab14 ldrh.w r2, [sp, 0x1c8]                                |     r2 = var_1c8h;
    0x000bab18 mov r3, r0                                            |     r3 = r0;
    0x000bab1a cmp r2, 2                                             |     
                                                                     |     if (r2 != 2) {
    0x000bab1c beq 0xbab24                                           |         
    0x000bab1e cmp r2, 0xa                                           |         
                                                                     |         if (r2 != 0xa) {
    0x000bab20 bne.w 0xbac62                                         |             goto label_25;
                                                                     |         }
                                                                     |     }
    0x000bab24 mov r0, r7                                            |     r0 = r7;
    0x000bab26 ldrh.w sb, [sp, 0x1ca]                                |     sb = var_1cah;
    0x000bab2a str r3, [sp, 0x14]                                    |     var_14h = r3;
    0x000bab2c bl 0x9ede0                                            |     close (r0);
    0x000bab30 ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x000bab32 rev16.w sb, sb                                        |     __asm ("rev16.w sb, sb");
    0x000bab36 uxth.w sb, sb                                         |     sb = (int16_t) sb;
    0x000bab3a cmp r3, 0                                             |     
                                                                     |     if (r3 < 0) {
    0x000bab3c blt.w 0xbadfc                                         |         goto label_26;
                                                                     |     }
    0x000bab40 ldr r2, [sp, 0x2bc]                                   |     r2 = *(arg_2bch);
    0x000bab42 sub.w sb, sb, 0x200                                   |     sb -= 0x200;
    0x000bab46 cmp.w sb, 0x200                                       |     
    0x000bab4a str r3, [r2]                                          |     *(r2) = r3;
                                                                     |     if (sb >= 0x200) {
    0x000bab4c bhs.w 0xbac78                                         |         goto label_27;
                                                                     |     }
                                                                     | label_4:
    0x000bab50 ldr r3, [sp, 0x30]                                    |     r3 = var_30h;
    0x000bab52 mrc p15, 0, r7, c13, c0, 3                            |     __asm ("mrc p15, 0, r7, c13, c0, 3");
    0x000bab56 mov r0, r3                                            |     r0 = r3;
    0x000bab58 str r3, [r4]                                          |     *(r4) = r3;
    0x000bab5a bl 0x6ae40                                            |     strlen ();
    0x000bab5e ldr r3, [sp, 0x34]                                    |     r3 = var_34h;
    0x000bab60 adds r0, 1                                            |     r0++;
    0x000bab62 str r0, [r4, 4]                                       |     var_4h_2 = r0;
    0x000bab64 str r3, [r4, 8]                                       |     var_8h_2 = r3;
    0x000bab66 mov r0, r3                                            |     r0 = r3;
    0x000bab68 bl 0x6ae40                                            |     strlen ();
    0x000bab6c ldr r3, [sp, 0x2b8]                                   |     r3 = *(arg_2b8h);
    0x000bab6e adds r0, 1                                            |     r0++;
    0x000bab70 str r0, [r4, 0xc]                                     |     var_ch_2 = r0;
    0x000bab72 str r3, [r4, 0x10]                                    |     var_10h = r3;
    0x000bab74 mov r0, r3                                            |     r0 = r3;
    0x000bab76 bl 0x6ae40                                            |     strlen ();
    0x000bab7a adds r0, 1                                            |     r0++;
    0x000bab7c str r0, [r4, 0x14]                                    |     var_14h_2 = r0;
    0x000bab7e b 0xbab8a                                             |     
                                                                     |     while (r0 == 1) {
    0x000bab80 add r3, pc                                            |         r3 += pc;
    0x000bab82 ldr r3, [r3]                                          |         r3 = *(r3);
    0x000bab84 ldr r3, [r7, r3]                                      |         r3 = *((r7 + r3));
    0x000bab86 cmp r3, 4                                             |         
                                                                     |         if (r3 != 4) {
    0x000bab88 bne 0xbab9a                                           |             goto label_28;
                                                                     |         }
    0x000bab8a movs r2, 3                                            |         r2 = 3;
    0x000bab8c mov r1, r4                                            |         r1 = r4;
    0x000bab8e mov r0, r6                                            |         r0 = r6;
    0x000bab90 bl 0xa62e4                                            |         writev ();
    0x000bab94 adds r0, 1                                            |         r0++;
    0x000bab96 ldr r3, [pc, 0x24]                                    |         r3 = *(0xbabbe);
    0x000bab98 beq 0xbab80                                           |         
                                                                     |     }
                                                                     | label_28:
    0x000bab9a mrc p15, 0, r4, c13, c0, 3                            |     __asm ("mrc p15, 0, r4, c13, c0, 3");
    0x000bab9e b 0xbabf4                                             |     
                                                                     |     while (r2 == var_1h) {
    0x000babe8 add r3, pc                                            |         r3 += pc;
    0x000babea ldr r3, [r3]                                          |         r3 = *(r3);
    0x000babec ldr r3, [r4, r3]                                      |         r3 = *((r4 + r3));
    0x000babee cmp r3, 4                                             |         
                                                                     |         if (r3 != 4) {
    0x000babf0 bne.w 0xbad2a                                         |             goto label_29;
                                                                     |         }
    0x000babf4 movs r2, 1                                            |         r2 = 1;
    0x000babf6 mov r1, r5                                            |         r1 = r5;
    0x000babf8 mov r0, r6                                            |         r0 = r6;
    0x000babfa bl 0x9e640                                            |         read (r0, r1, r2);
    0x000babfe adds r2, r0, 1                                        |         r2 += var_1h;
    0x000bac00 ldr r3, [pc, 0x284]                                   |         r3 = *(0xbae88);
    0x000bac02 beq 0xbabe8                                           |         
                                                                     |     }
    0x000bac04 cmp r0, 1                                             |     
                                                                     |     if (r0 != 1) {
    0x000bac06 bne.w 0xbae5a                                         |         goto label_30;
                                                                     |     }
    0x000bac0a ldrb r2, [r5]                                         |     r2 = *(r5);
    0x000bac0c cmp r2, 0                                             |     
                                                                     |     if (r2 != 0) {
    0x000bac0e bne 0xbacb6                                           |         goto label_31;
                                                                     |     }
    0x000bac10 ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x000bac12 movs r0, 2                                            |     r0 = 2;
    0x000bac14 bl 0x2ca0c                                            |     sigprocmask ();
    0x000bac18 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x000bac1a ldr r0, [r3]                                          |     r0 = *(r3);
    0x000bac1c bl 0x98b94                                            |     freeaddrinfo ();
    0x000bac20 mov r0, r6                                            |     r0 = r6;
    0x000bac22 add.w sp, sp, 0x294                                   |     
    0x000bac26 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}            |     
                                                                     | label_19:
    0x000bac2a ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x000bac2c ldr r0, [r3]                                          |     r0 = *(r3);
    0x000bac2e bl 0x98b94                                            |     freeaddrinfo ();
    0x000bac32 ldr r3, [pc, 0x258]                                   |     
    0x000bac34 add r1, sp, 0x1c8                                     |     r1 += var_1c8h;
    0x000bac36 ldr r2, [sp, 0x28]                                    |     r2 = var_28h;
    0x000bac38 add r3, pc                                            |     
    0x000bac3a ldr r3, [r3]                                          |     r3 = *(0x175aca);
    0x000bac3c ldr r4, [r2]                                          |     r4 = *(r2);
    0x000bac3e movs r2, 0xc8                                         |     r2 = 0xc8;
    0x000bac40 ldr.w r0, [fp, r3]                                    |     r0 = *((fp + r3));
    0x000bac44 bl 0x67bc4                                            |     strerror_r ();
    0x000bac48 ldr r1, [pc, 0x250]                                   |     
    0x000bac4a mov r3, r0                                            |     r3 = r0;
    0x000bac4c mov r2, r4                                            |     r2 = r4;
    0x000bac4e mov r0, r5                                            |     r0 = r5;
    0x000bac50 add r1, pc                                            |     r1 = 0x175af0;
    0x000bac52 bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000bac56 ldr r1, [sp, 0x2c]                                    |     r1 = var_2ch;
    0x000bac58 mov r2, r5                                            |     r2 = r5;
    0x000bac5a movs r0, 2                                            |     r0 = 2;
    0x000bac5c bl 0x2ca0c                                            |     sigprocmask ();
    0x000bac60 b 0xba996                                             |     goto label_2;
                                                                     | label_25:
    0x000bac62 str r0, [sp, 0x14]                                    |     var_14h = r0;
    0x000bac64 mov r0, r7                                            |     r0 = r7;
    0x000bac66 bl 0x9ede0                                            |     close (r0);
    0x000bac6a ldr r3, [sp, 0x14]                                    |     r3 = var_14h;
    0x000bac6c cmp r3, 0                                             |     
    0x000bac6e itt ge                                                |     
                                                                     |     if (r3 < 0) {
    0x000bac70 ldrge r2, [sp, 0x2bc]                                 |         r2 = *(arg_2bch);
                                                                     |     }
                                                                     |     if (r3 < 0) {
    0x000bac72 strge r3, [r2]                                        |         *(r2) = r3;
                                                                     |     }
                                                                     |     if (r3 < 0) {
    0x000bac74 blt.w 0xbadfc                                         |         goto label_26;
                                                                     |     }
                                                                     | label_27:
    0x000bac78 ldr r1, [pc, 0x224]                                   |     
    0x000bac7a movs r2, 5                                            |     r2 = 5;
    0x000bac7c ldr r0, [pc, 0x224]                                   |     
    0x000bac7e movs r5, 0                                            |     r5 = 0;
    0x000bac80 add r4, sp, 0x44                                      |     r4 += var_44h;
    0x000bac82 str r5, [sp, 0x44]                                    |     var_44h = r5;
    0x000bac84 add r1, pc                                            |     r1 = 0x175b28;
    0x000bac86 add r0, pc                                            |     r0 = 0x175b2e;
    0x000bac88 bl 0x28688                                            |     r0 = dcgettext (r0, r1);
    0x000bac8c mov r1, r0                                            |     r1 = r0;
    0x000bac8e mov r0, r4                                            |     r0 = r4;
    0x000bac90 bl 0x38ce0                                            |     r0 = asprintf ()
    0x000bac94 cmp r0, r5                                            |     
                                                                     |     if (r0 < r5) {
    0x000bac96 blt 0xbacd2                                           |         goto label_32;
                                                                     |     }
    0x000bac98 ldr r1, [pc, 0x20c]                                   |     
    0x000bac9a mov r0, r5                                            |     r0 = r5;
    0x000bac9c ldr r2, [sp, 0x44]                                    |     r2 = var_44h;
    0x000bac9e add r1, pc                                            |     r1 = 0x175b4a;
    0x000baca0 bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000baca4 ldr r0, [sp, 0x44]                                    |     r0 = var_44h;
    0x000baca6 blx 0x1ded4                                           |     fcn_0001ded4 ();
    0x000bacaa b 0xbacd2                                             |     goto label_32;
                                                                     |     do {
    0x000bacac bl 0x9e6c0                                            |         write (r0, r1, r2);
    0x000bacb0 ldrb r3, [r5]                                         |         r3 = *(r5);
    0x000bacb2 cmp r3, 0xa                                           |         
                                                                     |         if (r3 == 0xa) {
    0x000bacb4 beq 0xbaccc                                           |             goto label_5;
                                                                     |         }
                                                                     | label_31:
    0x000bacb6 movs r2, 1                                            |         r2 = 1;
    0x000bacb8 mov r1, r5                                            |         r1 = r5;
    0x000bacba mov r0, r6                                            |         r0 = r6;
    0x000bacbc bl 0x9e640                                            |         r0 = read (r0, r1, r2);
    0x000bacc0 mov r2, r0                                            |         r2 = r0;
    0x000bacc2 mov r1, r5                                            |         r1 = r5;
    0x000bacc4 cmp r2, 1                                             |         
    0x000bacc6 mov.w r0, 2                                           |         r0 = 2;
    0x000bacca beq 0xbacac                                           |         
                                                                     |     } while (r2 == 1);
                                                                     |     do {
                                                                     | label_5:
    0x000baccc ldr.w r3, [r8]                                        |         r3 = *(r8);
    0x000bacd0 mov fp, r3                                            |         
                                                                     | label_32:
    0x000bacd2 mov r3, fp                                            |         r3 = fp;
    0x000bacd4 cmp r3, 0                                             |         
                                                                     |         if (r3 != 0) {
    0x000bacd6 bne 0xbadb0                                           |             goto label_33;
                                                                     |         }
                                                                     | label_6:
    0x000bacd8 mov r0, r6                                            |         r0 = r6;
    0x000bacda bl 0x9ede0                                            |         close (r0);
    0x000bacde b 0xba984                                             |         goto label_3;
                                                                     | label_20:
    0x000bace0 ldr r1, [pc, 0x1c8]                                   |         
    0x000bace2 movs r2, 5                                            |         r2 = 5;
    0x000bace4 ldr r0, [pc, 0x1c8]                                   |         
    0x000bace6 add r1, pc                                            |         r1 = 0x175b96;
    0x000bace8 add r0, pc                                            |         r0 = 0x175b9c;
    0x000bacea bl 0x28688                                            |         dcgettext (r0, r1);
    0x000bacee ldr r1, [pc, 0x1c4]                                   |         
    0x000bacf0 mov r2, r0                                            |         r2 = r0;
    0x000bacf2 movs r0, 0                                            |         r0 = 0;
    0x000bacf4 add r1, pc                                            |         r1 = 0x175bae;
    0x000bacf6 bl 0x4bb90                                            |         fcn_0004bb90 (r0);
    0x000bacfa b 0xba984                                             |         goto label_3;
                                                                     | label_21:
    0x000bacfc ldr r1, [pc, 0x1b8]                                   |         
    0x000bacfe movs r2, 1                                            |         r2 = 1;
    0x000bad00 mov r0, r6                                            |         r0 = r6;
    0x000bad02 add r5, sp, 0x40                                      |         r5 += buf;
    0x000bad04 add r4, sp, 0x60                                      |         r4 += var_60h;
    0x000bad06 add r1, pc                                            |         r1 = 0x175bc2;
    0x000bad08 bl 0x9e6c0                                            |         write (r0, r1, r2);
    0x000bad0c ldr r3, [sp, 0x2bc]                                   |         r3 = *(arg_2bch);
    0x000bad0e str.w r3, [r8]                                        |         __asm ("str.w r3, [r8]");
    0x000bad12 b 0xbab50                                             |         goto label_4;
                                                                     | label_12:
    0x000bad14 adds r5, r0, 2                                        |         r5 = r0 + 2;
                                                                     |         if (r5 != r0) {
    0x000bad16 bne 0xbad56                                           |             goto label_34;
                                                                     |         }
    0x000bad18 ldr r3, [sp, 0x28]                                    |         r3 = var_28h;
    0x000bad1a ldr r2, [r3]                                          |         r2 = *(r3);
                                                                     |         if (r2 == 0) {
    0x000bad1c cbz r2, 0xbad56                                       |             goto label_34;
                                                                     |         }
    0x000bad1e ldr r1, [pc, 0x19c]                                   |         
    0x000bad20 mov r0, r4                                            |         r0 = r4;
    0x000bad22 add r1, pc                                            |         r1 = 0x175be4;
    0x000bad24 bl 0x4bb90                                            |         fcn_0004bb90 (r0);
    0x000bad28 b 0xba996                                             |         goto label_2;
                                                                     | label_29:
    0x000bad2a add r4, sp, 0x44                                      |         r4 += var_44h;
    0x000bad2c movs r3, 0                                            |         r3 = 0;
    0x000bad2e str r3, [r4]                                          |         *(r4) = r3;
                                                                     | label_9:
    0x000bad30 ldr r3, [sp, 0x28]                                    |         r3 = var_28h;
    0x000bad32 mov r0, r4                                            |         r0 = r4;
    0x000bad34 ldr r1, [pc, 0x188]                                   |         
    0x000bad36 ldr r2, [r3]                                          |         r2 = *(r3);
    0x000bad38 add r1, pc                                            |         r1 = 0x175bfc;
    0x000bad3a bl 0x38ce0                                            |         r0 = asprintf ()
    0x000bad3e cmp r0, 0                                             |         
    0x000bad40 blt 0xbaccc                                           |         
                                                                     |     } while (r0 < 0);
                                                                     | label_10:
    0x000bad42 ldr r1, [pc, 0x180]                                   |     
    0x000bad44 movs r0, 0                                            |     r0 = 0;
    0x000bad46 ldr r2, [r4]                                          |     r2 = *(r4);
    0x000bad48 add r1, pc                                            |     r1 = 0x175c12;
    0x000bad4a bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000bad4e ldr r0, [r4]                                          |     r0 = *(r4);
    0x000bad50 blx 0x1ded4                                           |     fcn_0001ded4 ();
    0x000bad54 b 0xbaccc                                             |     goto label_5;
                                                                     | label_34:
    0x000bad56 bl 0x98bb4                                            |     gai_strerror ();
    0x000bad5a ldr r1, [pc, 0x16c]                                   |     
    0x000bad5c mov r2, r0                                            |     r2 = r0;
    0x000bad5e movs r0, 0                                            |     r0 = 0;
    0x000bad60 add r1, pc                                            |     r1 = 0x175c2e;
    0x000bad62 bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000bad66 b 0xba996                                             |     goto label_2;
                                                                     | label_11:
    0x000bad68 ldr r3, [pc, 0x124]                                   |     
    0x000bad6a mrc p15, 0, r2, c13, c0, 3                            |     __asm ("mrc p15, 0, r2, c13, c0, 3");
    0x000bad6e movs r1, 0x61                                         |     r1 = 0x61;
    0x000bad70 add r3, pc                                            |     
    0x000bad72 ldr r3, [r3]                                          |     r3 = *(0x175c04);
    0x000bad74 str r1, [r2, r3]                                      |     *((r2 + r3)) = r1;
    0x000bad76 b 0xba996                                             |     goto label_2;
                                                                     | label_22:
    0x000bad78 ldr r1, [pc, 0x150]                                   |     
    0x000bad7a movs r4, 0                                            |     r4 = 0;
    0x000bad7c ldr r0, [pc, 0x150]                                   |     
    0x000bad7e movs r2, 5                                            |     r2 = 5;
    0x000bad80 str r4, [sp, 0x1c8]                                   |     var_1c8h = r4;
    0x000bad82 add r1, pc                                            |     r1 = 0x175c52;
    0x000bad84 add r0, pc                                            |     r0 = 0x175c58;
    0x000bad86 bl 0x28688                                            |     r0 = dcgettext (r0, r1);
    0x000bad8a mov r1, r0                                            |     r1 = r0;
    0x000bad8c add r0, sp, 0x1c8                                     |     r0 += var_1c8h;
    0x000bad8e bl 0x38ce0                                            |     r0 = asprintf ()
    0x000bad92 cmp r0, r4                                            |     
                                                                     |     if (r0 < r4) {
    0x000bad94 blt 0xbada8                                           |         goto label_7;
                                                                     |     }
    0x000bad96 ldr r1, [pc, 0x13c]                                   |     
    0x000bad98 mov r0, r4                                            |     r0 = r4;
    0x000bad9a ldr r2, [sp, 0x1c8]                                   |     r2 = var_1c8h;
    0x000bad9c add r1, pc                                            |     r1 = 0x175c76;
    0x000bad9e bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000bada2 ldr r0, [sp, 0x1c8]                                   |     r0 = var_1c8h;
    0x000bada4 blx 0x1ded4                                           |     fcn_0001ded4 ();
                                                                     |     do {
                                                                     | label_7:
    0x000bada8 mov r0, r7                                            |         r0 = r7;
    0x000badaa bl 0x9ede0                                            |         close (r0);
    0x000badae b 0xbacd8                                             |         goto label_6;
                                                                     | label_33:
    0x000badb0 ldr r3, [sp, 0x2bc]                                   |         r3 = *(arg_2bch);
    0x000badb2 ldr r0, [r3]                                          |         r0 = *(r3);
    0x000badb4 bl 0x9ede0                                            |         close (r0);
    0x000badb8 b 0xbacd8                                             |         goto label_6;
                                                                     | label_23:
    0x000badba ldr r3, [pc, 0xd8]                                    |         
    0x000badbc movs r2, 0                                            |         r2 = 0;
    0x000badbe str r2, [sp, 0x1c8]                                   |         var_1c8h = r2;
    0x000badc0 add r3, pc                                            |         
    0x000badc2 ldr r3, [r3]                                          |         r3 = *(0x175c5a);
    0x000badc4 ldr.w r3, [sl, r3]                                    |         r3 = *((sl + r3));
                                                                     |         if (r3 != 0) {
    0x000badc8 cbnz r3, 0xbae08                                      |             goto label_35;
                                                                     |         }
    0x000badca add.w sb, sp, 0x1c8                                   |         sb += var_1c8h;
                                                                     | label_8:
    0x000badce ldr r1, [pc, 0x108]                                   |         
    0x000badd0 movs r2, 5                                            |         r2 = 5;
    0x000badd2 ldr r0, [pc, 0x108]                                   |         
    0x000badd4 add r1, pc                                            |         r1 = 0x175cb2;
    0x000badd6 add r0, pc                                            |         r0 = 0x175cb8;
    0x000badd8 bl 0x28688                                            |         r0 = dcgettext (r0, r1);
    0x000baddc mov r1, r0                                            |         r1 = r0;
    0x000badde mov r0, sb                                            |         r0 = sb;
    0x000bade0 bl 0x38ce0                                            |         r0 = asprintf ()
    0x000bade4 cmp r0, 0                                             |         
    0x000bade6 blt 0xbada8                                           |         
                                                                     |     } while (r0 < 0);
                                                                     |     do {
    0x000bade8 ldr r1, [pc, 0xf4]                                    |         
    0x000badea movs r0, 0                                            |         r0 = 0;
    0x000badec ldr r2, [sp, 0x1c8]                                   |         r2 = var_1c8h;
    0x000badee add r1, pc                                            |         r1 = 0x175cd2;
    0x000badf0 bl 0x4bb90                                            |         fcn_0004bb90 (r0);
    0x000badf4 ldr r0, [sp, 0x1c8]                                   |         r0 = var_1c8h;
    0x000badf6 blx 0x1ded4                                           |         fcn_0001ded4 ();
    0x000badfa b 0xbada8                                             |         goto label_7;
                                                                     | label_26:
    0x000badfc ldr r1, [pc, 0xe4]                                    |         
    0x000badfe movs r0, 0                                            |         r0 = 0;
    0x000bae00 add r1, pc                                            |         r1 = 0x175ce8;
    0x000bae02 bl 0x4bb90                                            |         fcn_0004bb90 (r0);
    0x000bae06 b 0xbacd8                                             |         goto label_6;
                                                                     | label_35:
    0x000bae08 ldr r1, [pc, 0xdc]                                    |         
    0x000bae0a movs r2, 5                                            |         r2 = 5;
    0x000bae0c ldr r0, [pc, 0xdc]                                    |         
    0x000bae0e add.w sb, sp, 0x1c8                                   |         sb += var_1c8h;
    0x000bae12 add r1, pc                                            |         r1 = 0x175cfe;
    0x000bae14 add r0, pc                                            |         r0 = 0x175d04;
    0x000bae16 bl 0x28688                                            |         r0 = dcgettext (r0, r1);
    0x000bae1a mov r1, r0                                            |         r1 = r0;
    0x000bae1c mov r0, sb                                            |         r0 = sb;
    0x000bae1e bl 0x38ce0                                            |         r0 = asprintf ()
    0x000bae22 cmp r0, 0                                             |         
    0x000bae24 bge 0xbade8                                           |         
                                                                     |     } while (r0 >= 0);
    0x000bae26 ldr r3, [pc, 0x70]                                    |     
    0x000bae28 add r3, pc                                            |     
    0x000bae2a ldr r3, [r3]                                          |     r3 = *(0x175cc6);
    0x000bae2c ldr.w r3, [sl, r3]                                    |     r3 = *((sl + r3));
    0x000bae30 cmp r3, 0                                             |     
                                                                     |     if (r3 != 0) {
    0x000bae32 bne 0xbada8                                           |         goto label_7;
                                                                     |     }
    0x000bae34 b 0xbadce                                             |     goto label_8;
                                                                     | label_14:
    0x000bae36 ldr r3, [sp, 0x18]                                    |     r3 = var_18h;
    0x000bae38 ldr r0, [r3]                                          |     r0 = *(r3);
    0x000bae3a bl 0x98b94                                            |     freeaddrinfo ();
    0x000bae3e ldr r1, [pc, 0xb0]                                    |     
    0x000bae40 movs r2, 5                                            |     r2 = 5;
    0x000bae42 ldr r0, [pc, 0xb0]                                    |     
    0x000bae44 add r1, pc                                            |     r1 = 0x175d3a;
    0x000bae46 add r0, pc                                            |     r0 = 0x175d40;
    0x000bae48 bl 0x28688                                            |     dcgettext (r0, r1);
    0x000bae4c ldr r1, [pc, 0xa8]                                    |     
    0x000bae4e mov r2, r0                                            |     r2 = r0;
    0x000bae50 mov r0, r4                                            |     r0 = r4;
    0x000bae52 add r1, pc                                            |     r1 = 0x175d4e;
    0x000bae54 bl 0x4bb90                                            |     fcn_0004bb90 (r0);
    0x000bae58 b 0xba996                                             |     goto label_2;
                                                                     | label_30:
    0x000bae5a add r4, sp, 0x44                                      |     r4 += var_44h;
    0x000bae5c movs r3, 0                                            |     r3 = 0;
    0x000bae5e str r3, [r4]                                          |     *(r4) = r3;
    0x000bae60 cmp r0, 0                                             |     
                                                                     |     if (r0 != 0) {
    0x000bae62 bne.w 0xbad30                                         |         goto label_9;
                                                                     |     }
    0x000bae66 ldr r1, [pc, 0x94]                                    |     
    0x000bae68 movs r2, 5                                            |     r2 = 5;
    0x000bae6a ldr r0, [pc, 0x94]                                    |     
    0x000bae6c add r1, pc                                            |     r1 = 0x175d6e;
    0x000bae6e add r0, pc                                            |     r0 = 0x175d74;
    0x000bae70 bl 0x28688                                            |     dcgettext (r0, r1);
    0x000bae74 ldr r3, [sp, 0x28]                                    |     r3 = var_28h;
    0x000bae76 mov r1, r0                                            |     r1 = r0;
    0x000bae78 mov r0, r4                                            |     r0 = r4;
    0x000bae7a ldr r2, [r3]                                          |     r2 = *(r3);
    0x000bae7c bl 0x38ce0                                            |     r0 = asprintf ()
    0x000bae80 cmp r0, 0                                             |     
                                                                     |     if (r0 >= 0) {
    0x000bae82 bge.w 0xbad42                                         |         goto label_10;
                                                                     |     }
    0x000bae86 b 0xbaccc                                             |     goto label_5;
                                                                     | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0xceaec */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.registerrpc ()                           | void registerrpc (int16_t arg_28h, int16_t arg_2ch, int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                         |     int16_t var_0h;
                                                         |     int16_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
                                                         |     r2 = arg3;
                                                         |     r3 = arg4;
    0x000ceaec push.w {r4, r5, r6, r7, r8, lr}           |     
    0x000ceaf0 mov r7, r2                                |     r7 = r2;
    0x000ceaf2 sub sp, 0x10                              |     
    0x000ceaf4 cmp r2, 0                                 |     
                                                         |     if (r2 == 0) {
    0x000ceaf6 beq 0xcebb6                               |         goto label_3;
                                                         |     }
    0x000ceaf8 mov r8, r3                                |     r8 = r3;
    0x000ceafa mov r6, r0                                |     r6 = r0;
    0x000ceafc mov r4, r1                                |     r4 = r1;
    0x000ceafe bl 0xd34d8                                |     fcn_000d34d8 ();
    0x000ceb02 ldr.w r3, [r0, 0xc0]                      |     r3 = *((r0 + 0xc0));
    0x000ceb06 mov r5, r0                                |     r5 = r0;
    0x000ceb08 cbz r3, 0xceb58                           |     
                                                         |     while (r0 != 0) {
    0x000ceb0a mov r1, r4                                |         r1 = r4;
    0x000ceb0c mov r0, r6                                |         r0 = r6;
    0x000ceb0e bl 0xcdaa0                                |         pmap_unset ();
    0x000ceb12 movs r3, 0x11                             |         r3 = 0x11;
    0x000ceb14 ldr.w r0, [r5, 0xc0]                      |         r0 = *((r5 + 0xc0));
    0x000ceb18 str r3, [sp]                              |         *(sp) = r3;
    0x000ceb1a mov r2, r4                                |         r2 = r4;
    0x000ceb1c ldr r3, [pc, 0xcc]                        |         
    0x000ceb1e mov r1, r6                                |         r1 = r6;
    0x000ceb20 add r3, pc                                |         r3 = 0x19d710;
    0x000ceb22 bl 0xd37f0                                |         r0 = svc_register ();
    0x000ceb26 cmp r0, 0                                 |         
                                                         |         if (r0 == 0) {
    0x000ceb28 beq 0xceb96                               |             goto label_4;
                                                         |         }
    0x000ceb2a movs r0, 0x18                             |         r0 = 0x18;
    0x000ceb2c blx 0x1df60                               |         r0 = fcn_0001df60 ();
    0x000ceb30 mov r4, r0                                |         r4 = r0;
    0x000ceb32 cmp r0, 0                                 |         
                                                         |         if (r0 == 0) {
    0x000ceb34 beq 0xcebd4                               |             goto label_5;
                                                         |         }
    0x000ceb36 ldr r2, [sp, 0x28]                        |         r2 = *(arg_28h);
    0x000ceb38 str.w r8, [r0]                            |         __asm ("str.w r8, [r0]");
    0x000ceb3c strd r6, r7, [r0, 4]                      |         __asm ("strd r6, r7, [r0, 4]");
    0x000ceb40 movs r0, 0                                |         r0 = 0;
    0x000ceb42 ldr.w r3, [r5, 0xbc]                      |         r3 = *((r5 + 0xbc));
    0x000ceb46 str r2, [r4, 0xc]                         |         *((r4 + 0xc)) = r2;
    0x000ceb48 ldr r2, [sp, 0x2c]                        |         r2 = *(arg_2ch);
    0x000ceb4a str.w r4, [r5, 0xbc]                      |         __asm ("str.w r4, [r5, 0xbc]");
    0x000ceb4e strd r2, r3, [r4, 0x10]                   |         __asm ("strd r2, r3, [r4, 0x10]");
                                                         | label_0:
    0x000ceb52 add sp, 0x10                              |         
    0x000ceb54 pop.w {r4, r5, r6, r7, r8, pc}            |         
    0x000ceb58 mov.w r0, -1                              |         r0 = -1;
    0x000ceb5c bl 0xd4710                                |         svcudp_create ();
    0x000ceb60 str.w r0, [r5, 0xc0]                      |         __asm ("str.w r0, [r5, 0xc0]");
    0x000ceb64 cmp r0, 0                                 |         
    0x000ceb66 bne 0xceb0a                               |         
                                                         |     }
    0x000ceb68 ldr r1, [pc, 0x84]                        |     
    0x000ceb6a movs r2, 5                                |     r2 = 5;
    0x000ceb6c ldr r0, [pc, 0x84]                        |     
    0x000ceb6e add r1, pc                                |     r1 = 0x19d762;
    0x000ceb70 add r0, pc                                |     r0 = 0x19d768;
    0x000ceb72 bl 0x28688                                |     r0 = dcgettext (r0, r1);
    0x000ceb76 bl 0x6a858                                |     strdup ();
    0x000ceb7a str r0, [sp, 0xc]                         |     var_ch = r0;
                                                         |     do {
                                                         | label_2:
    0x000ceb7c ldr r2, [sp, 0xc]                         |         r2 = var_ch;
                                                         |         if (r2 != 0) {
    0x000ceb7e cbz r2, 0xceb90                           |             
    0x000ceb80 ldr r1, [pc, 0x74]                        |             
    0x000ceb82 movs r0, 0                                |             r0 = 0;
    0x000ceb84 add r1, pc                                |             r1 = 0x19d780;
    0x000ceb86 bl 0x4bb90                                |             fcn_0004bb90 (r0);
    0x000ceb8a ldr r0, [sp, 0xc]                         |             r0 = var_ch;
    0x000ceb8c blx 0x1ded4                               |             fcn_0001ded4 ();
                                                         |         }
                                                         | label_1:
    0x000ceb90 mov.w r0, -1                              |         r0 = -1;
    0x000ceb94 b 0xceb52                                 |         goto label_0;
                                                         | label_4:
    0x000ceb96 ldr r1, [pc, 0x64]                        |         
    0x000ceb98 movs r2, 5                                |         r2 = 5;
    0x000ceb9a ldr r0, [pc, 0x64]                        |         
    0x000ceb9c add r1, pc                                |         r1 = 0x19d79e;
    0x000ceb9e add r0, pc                                |         r0 = 0x19d7a4;
    0x000ceba0 bl 0x28688                                |         dcgettext (r0, r1);
    0x000ceba4 mov r3, r4                                |         r3 = r4;
    0x000ceba6 mov r1, r0                                |         r1 = r0;
    0x000ceba8 mov r2, r6                                |         r2 = r6;
    0x000cebaa add r0, sp, 0xc                           |         r0 += var_ch;
    0x000cebac bl 0x38ce0                                |         r0 = asprintf ()
    0x000cebb0 cmp r0, 0                                 |         
    0x000cebb2 bge 0xceb7c                               |         
                                                         |     } while (r0 >= 0);
    0x000cebb4 b 0xceb90                                 |     goto label_1;
                                                         | label_3:
    0x000cebb6 ldr r1, [pc, 0x4c]                        |     
    0x000cebb8 movs r2, 5                                |     r2 = 5;
    0x000cebba ldr r0, [pc, 0x4c]                        |     
    0x000cebbc add r1, pc                                |     r1 = 0x19d7c6;
    0x000cebbe add r0, pc                                |     r0 = 0x19d7cc;
    0x000cebc0 bl 0x28688                                |     dcgettext (r0, r1);
    0x000cebc4 mov r2, r7                                |     r2 = r7;
    0x000cebc6 mov r1, r0                                |     r1 = r0;
    0x000cebc8 add r0, sp, 0xc                           |     r0 += var_ch;
    0x000cebca bl 0x38ce0                                |     r0 = asprintf ()
    0x000cebce cmp r0, 0                                 |     
                                                         |     if (r0 >= 0) {
    0x000cebd0 bge 0xceb7c                               |         goto label_2;
                                                         |     }
    0x000cebd2 b 0xceb90                                 |     goto label_1;
                                                         | label_5:
    0x000cebd4 ldr r1, [pc, 0x34]                        |     
    0x000cebd6 movs r2, 5                                |     r2 = 5;
    0x000cebd8 ldr r0, [pc, 0x34]                        |     
    0x000cebda add r1, pc                                |     r1 = 0x19d7ea;
    0x000cebdc add r0, pc                                |     r0 = 0x19d7f0;
    0x000cebde bl 0x28688                                |     r0 = dcgettext (r0, r1);
    0x000cebe2 bl 0x6a858                                |     strdup ();
    0x000cebe6 str r0, [sp, 0xc]                         |     var_ch = r0;
    0x000cebe8 b 0xceb7c                                 |     goto label_2;
                                                         | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x6a88c */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.strerror_l ()                                    | void strerror_l (int16_t arg1, int16_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0006a88c ldr r2, [pc, 0x88]                                |     
    0x0006a88e push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0006a892 mrc p15, 0, r6, c13, c0, 3                        |     __asm ("mrc p15, 0, r6, c13, c0, 3");
    0x0006a896 mov r8, r0                                        |     r8 = r0;
    0x0006a898 mov r5, r1                                        |     r5 = r1;
    0x0006a89a add r2, pc                                        |     
    0x0006a89c ldr r2, [r2]                                      |     r2 = *(0xd51b6);
    0x0006a89e ldr r7, [r6, r2]                                  |     r7 = *((r6 + r2));
    0x0006a8a0 bl 0x4b9b4                                        |     r0 = fcn_0004b9b4 (r0);
    0x0006a8a4 mov r4, r0                                        |     r4 = r0;
                                                                 |     if (r0 == 0) {
    0x0006a8a6 cbz r0, 0x6a8d2                                   |         goto label_0;
                                                                 |     }
    0x0006a8a8 mov r0, r5                                        |     r0 = r5;
    0x0006a8aa bl 0x27d2c                                        |     r0 = uselocale ();
    0x0006a8ae mov r5, r0                                        |     r5 = r0;
    0x0006a8b0 ldr r0, [pc, 0x6c]                                |     
    0x0006a8b2 mov r1, r4                                        |     r1 = r4;
    0x0006a8b4 movs r2, 5                                        |     r2 = 5;
    0x0006a8b6 add r0, pc                                        |     r0 = 0xd51da;
    0x0006a8b8 bl 0x28688                                        |     r0 = dcgettext (r0, r1);
    0x0006a8bc mov r4, r0                                        |     r4 = r0;
    0x0006a8be mov r0, r5                                        |     r0 = r5;
    0x0006a8c0 bl 0x27d2c                                        |     uselocale ();
                                                                 |     do {
    0x0006a8c4 ldr r3, [pc, 0x54]                                |         
    0x0006a8c6 mov r0, r4                                        |         r0 = r4;
    0x0006a8c8 add r3, pc                                        |         
    0x0006a8ca ldr r3, [r3]                                      |         r3 = *(0xd51e8);
    0x0006a8cc str r7, [r6, r3]                                  |         *((r6 + r3)) = r7;
    0x0006a8ce pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
                                                                 | label_0:
    0x0006a8d2 mov sb, r6                                        |         sb = r6;
    0x0006a8d4 ldr r0, [sb, -0x38]!                              |         r0 = *((sb -= 0x38));
    0x0006a8d8 blx 0x1ded4                                       |         fcn_0001ded4 ();
    0x0006a8dc mov r0, r5                                        |         r0 = r5;
    0x0006a8de bl 0x27d2c                                        |         uselocale ();
    0x0006a8e2 ldr r1, [pc, 0x40]                                |         
    0x0006a8e4 mov sl, r0                                        |         sl = r0;
    0x0006a8e6 ldr r0, [pc, 0x40]                                |         
    0x0006a8e8 movs r2, 5                                        |         r2 = 5;
    0x0006a8ea add r1, pc                                        |         r1 = 0xd5214;
    0x0006a8ec add r0, pc                                        |         r0 = 0xd521a;
    0x0006a8ee bl 0x28688                                        |         r0 = dcgettext (r0, r1);
    0x0006a8f2 mov r5, r0                                        |         r5 = r0;
    0x0006a8f4 mov r0, sl                                        |         r0 = sl;
    0x0006a8f6 bl 0x27d2c                                        |         uselocale ();
    0x0006a8fa ldr r1, [pc, 0x30]                                |         
    0x0006a8fc mov r3, r8                                        |         r3 = r8;
    0x0006a8fe mov r2, r5                                        |         r2 = r5;
    0x0006a900 mov r0, sb                                        |         r0 = sb;
    0x0006a902 add r1, pc                                        |         r1 = 0xd5234;
    0x0006a904 bl 0x38ce0                                        |         asprintf ()
    0x0006a908 adds r0, 1                                        |         r0++;
    0x0006a90a ite ne                                            |         
                                                                 |         if (r0 == 1) {
    0x0006a90c ldrne r4, [r6, -0x38]                             |             r4 = *((r6 - 0x38));
                                                                 |         }
                                                                 |         if (r0 == 1) {
    0x0006a910 str r4, [r6, -0x38]                               |             *((r6 - 0x38)) = r4;
                                                                 |         }
    0x0006a914 b 0x6a8c4                                         |         
                                                                 |     } while (1);
                                                                 | }
    ; assembly                                           | /* r2dec pseudo code output */
                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libc.so.6 @ 0x6b254 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.strsignal ()                             | void strsignal (int16_t arg1) {
                                                         |     r0 = arg1;
    0x0006b254 push.w {r4, r5, r6, r7, r8, lr}           |     
    0x0006b258 mov r5, r0                                |     r5 = r0;
    0x0006b25a bl 0x68f60                                |     r0 = sigdescr_np ();
    0x0006b25e mov r4, r0                                |     r4 = r0;
                                                         |     if (r0 != 0) {
    0x0006b260 cbz r0, 0x6b272                           |         
    0x0006b262 ldr r0, [pc, 0x78]                        |         
    0x0006b264 mov r1, r4                                |         r1 = r4;
    0x0006b266 movs r2, 5                                |         r2 = 5;
    0x0006b268 pop.w {r4, r5, r6, r7, r8, lr}            |         
    0x0006b26c add r0, pc                                |         r0 = 0xd654e;
    0x0006b26e b.w 0x28688                               |         void (*0x28688)() ();
                                                         |     }
    0x0006b272 mrc p15, 0, r7, c13, c0, 3                |     __asm ("mrc p15, 0, r7, c13, c0, 3");
    0x0006b276 mov r6, r7                                |     r6 = r7;
    0x0006b278 ldr r0, [r6, -0x3c]!                      |     r0 = *((r6 -= 0x3c));
    0x0006b27c blx 0x1ded4                               |     fcn_0001ded4 ();
    0x0006b280 bl 0x2cfe8                                |     r0 = libc_current_sigrtmin ();
    0x0006b284 cmp r0, r5                                |     
                                                         |     if (r0 <= r5) {
    0x0006b286 bgt 0x6b290                               |         
    0x0006b288 bl 0x2cff4                                |         r0 = libc_current_sigrtmax ();
    0x0006b28c cmp r0, r5                                |         
                                                         |         if (r0 >= r5) {
    0x0006b28e bge 0x6b2bc                               |             goto label_0;
                                                         |         }
                                                         |     }
    0x0006b290 ldr r1, [pc, 0x4c]                        |     
    0x0006b292 movs r2, 5                                |     r2 = 5;
    0x0006b294 ldr r0, [pc, 0x4c]                        |     
    0x0006b296 add r1, pc                                |     r1 = 0xd657a;
    0x0006b298 add r0, pc                                |     r0 = 0xd6580;
    0x0006b29a bl 0x28688                                |     dcgettext (r0, r1);
    0x0006b29e mov r2, r5                                |     r2 = r5;
    0x0006b2a0 mov r1, r0                                |     r1 = r0;
    0x0006b2a2 mov r0, r6                                |     r0 = r6;
    0x0006b2a4 bl 0x38ce0                                |     asprintf ()
                                                         |     do {
    0x0006b2a8 adds r0, 1                                |         r0++;
    0x0006b2aa itee ne                                   |         
                                                         |         if (r0 == 1) {
    0x0006b2ac ldrne r4, [r7, -0x3c]                     |             r4 = *((r7 - 0x3c));
                                                         |         }
                                                         |         if (r0 != 1) {
    0x0006b2b0 moveq r3, 0                               |             r3 = 0;
                                                         |         }
                                                         |         if (r0 == 1) {
    0x0006b2b2 str r3, [r7, -0x3c]                       |             *((r7 - 0x3c)) = r3;
                                                         |         }
    0x0006b2b6 mov r0, r4                                |         r0 = r4;
    0x0006b2b8 pop.w {r4, r5, r6, r7, r8, pc}            |         
                                                         | label_0:
    0x0006b2bc ldr r1, [pc, 0x28]                        |         
    0x0006b2be movs r2, 5                                |         r2 = 5;
    0x0006b2c0 ldr r0, [pc, 0x28]                        |         
    0x0006b2c2 add r1, pc                                |         r1 = 0xd65ae;
    0x0006b2c4 add r0, pc                                |         r0 = 0xd65b4;
    0x0006b2c6 bl 0x28688                                |         r0 = dcgettext (r0, r1);
    0x0006b2ca mov r8, r0                                |         r8 = r0;
    0x0006b2cc bl 0x2cfe8                                |         libc_current_sigrtmin ();
    0x0006b2d0 mov r1, r8                                |         r1 = r8;
    0x0006b2d2 subs r2, r5, r0                           |         r2 = r5 - r0;
    0x0006b2d4 mov r0, r6                                |         r0 = r6;
    0x0006b2d6 bl 0x38ce0                                |         asprintf ()
    0x0006b2da b 0x6b2a8                                 |         
                                                         |     } while (1);
                                                         | }

[*] Function sprintf used 32 times libc.so.6