[*] Binary protection state of mod_cgid.so

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


[*] Function printf tear down of mod_cgid.so

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_cgid.so @ 0x3610 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00003610 ()                                      | void fcn_00003610 (int16_t arg_88h, int16_t arg_c8h, char * s1, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     size_t var_28h;
                                                                 |     size_t n;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_4h;
                                                                 |     int32_t var_8h_2;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_34h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x00003610 invalid                                           |     
    0x00003614 ldr r1, [pc, 0x8c]                                |     
    0x00003616 sub sp, 0x3c                                      |     
    0x00003618 add r4, sp, 4                                     |     r4 += var_4h;
    0x0000361a mov r5, r0                                        |     r5 = r0;
    0x0000361c ldr r3, [pc, 0x88]                                |     r3 = *(0x36a8);
    0x0000361e mov r7, r2                                        |     r7 = r2;
    0x00003620 add r1, pc                                        |     r1 = 0x6cc8;
    0x00003622 movs r2, 0x30                                     |     r2 = 0x30;
    0x00003624 mov r0, r4                                        |     r0 = r4;
    0x00003626 ldr r3, [r1, r3]                                  |     
    0x00003628 movs r1, 0                                        |     r1 = 0;
    0x0000362a ldr r3, [r3]                                      |     r3 = *(0x6cc8);
    0x0000362c str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000362e mov.w r3, 0                                       |     r3 = 0;
    0x00003632 blx 0x1ca8                                        |     fcn_00001ca8 ();
    0x00003636 mov r2, r6                                        |     r2 = r6;
    0x00003638 mov r1, r5                                        |     r1 = r5;
    0x0000363a mov r0, sp                                        |     r0 = sp;
    0x0000363c bl 0x21d8                                         |     r0 = fcn_000021d8 (r0, r1, r2, r3);
                                                                 |     if (r0 != 0) {
    0x00003640 cbnz r0, 0x3692                                   |         goto label_27;
                                                                 |     }
    0x00003642 ldr r3, [pc, 0x68]                                |     
    0x00003644 movs r2, 3                                        |     r2 = 3;
    0x00003646 ldr r1, [r5, 4]                                   |     r1 = *((r5 + 4));
    0x00003648 str r2, [sp, 4]                                   |     var_4h = r2;
    0x0000364a add r3, pc                                        |     r3 = 0x6cfc;
    0x0000364c ldr r5, [sp]                                      |     r5 = *(sp);
    0x0000364e ldr r2, [r3, 0x14]                                |     r2 = *(0x6d10);
    0x00003650 ldr r3, [r1, 0x28]                                |     r3 = *((r1 + 0x28));
    0x00003652 strd r3, r2, [sp, 8]                              |     __asm ("strd r3, r2, [var_3ch]");
    0x00003656 b 0x3662                                          |     
                                                                 |     while (r0 < 0) {
    0x00003658 blx 0x1c84                                        |         r0 = fcn_00001c84 ();
    0x0000365c ldr r0, [r0]                                      |         r0 = *(r0);
    0x0000365e cmp r0, 4                                         |         
                                                                 |         if (r0 != 4) {
    0x00003660 bne 0x3698                                        |             goto label_28;
                                                                 |         }
    0x00003662 movs r2, 0x30                                     |         r2 = 0x30;
    0x00003664 mov r1, r4                                        |         r1 = r4;
    0x00003666 mov r0, r5                                        |         r0 = r5;
    0x00003668 blx 0x1ce4                                        |         r0 = fcn_00001ce4 ();
    0x0000366c cmp r0, 0                                         |         
    0x0000366e blt 0x3658                                        |         
                                                                 |     }
                                                                 | label_1:
    0x00003670 movs r2, 4                                        |     r2 = 4;
    0x00003672 mov r1, r7                                        |     r1 = r7;
    0x00003674 mov r0, r5                                        |     r0 = r5;
    0x00003676 bl 0x2498                                         |     fcn_00002498 (r0, r1, r2);
                                                                 |     do {
                                                                 | label_0:
    0x0000367a ldr r2, [pc, 0x34]                                |         
    0x0000367c ldr r3, [pc, 0x28]                                |         r3 = *(0x36a8);
    0x0000367e add r2, pc                                        |         r2 = 0x6d34;
    0x00003680 ldr r3, [r2, r3]                                  |         r3 = *(0x6d34);
    0x00003682 ldr r2, [r3]                                      |         r2 = *(0x6d34);
    0x00003684 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x00003686 eors r2, r3                                       |         r2 ^= r3;
    0x00003688 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000368c bne 0x369e                                        |             goto label_29;
                                                                 |         }
    0x0000368e add sp, 0x3c                                      |         
    0x00003690 pop {r4, r5, r6, r7, pc}                          |         
                                                                 | label_27:
    0x00003692 movw r0, 0x4e2e                                   |         r0 = 0x4e2e;
    0x00003696 b 0x367a                                          |         
                                                                 |     } while (1);
                                                                 | label_28:
    0x00003698 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000369a bne 0x367a                                        |         goto label_0;
                                                                 |     }
    0x0000369c b 0x3670                                          |     goto label_1;
                                                                 | label_29:
    0x0000369e blx 0x1a74                                        |     fcn_00001a74 ();
    0x000036a2 nop                                               |     
    0x000036a4 movs r7, 0xb4                                     |     r7 = 0xb4;
    0x000036a6 movs r1, r0                                       |     r1 = r0;
    0x000036a8 lsls r4, r0, 8                                    |     r4 = r0 << 8;
    0x000036aa movs r0, r0                                       |     
    0x000036ac cmp r2, 2                                         |     
    0x000036ae movs r1, r0                                       |     r1 = r0;
    0x000036b0 movs r7, 0x56                                     |     r7 = 0x56;
    0x000036b2 movs r1, r0                                       |     r1 = r0;
    0x000036b4 ldr.w r2, [pc, 0x488]                             |     r2 = *(0x00003b40);
    0x000036b8 ldr.w r3, [pc, 0x488]                             |     
    0x000036bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000036c0 mov r8, r0                                        |     r8 = r0;
    0x000036c2 vpush {d8}                                        |     __asm ("vpush {d8}");
    0x000036c6 add r2, pc                                        |     r2 += pc;
    0x000036c8 sub.w sp, sp, 0x20c0                              |     
    0x000036cc sub sp, 0xc                                       |     
    0x000036ce ldr.w r1, [pc, 0x478]                             |     
    0x000036d2 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000036d4 add.w r0, sp, 0x20c0                              |     r0 += s1;
    0x000036d8 ldr.w r4, [r8, 0xc8]                              |     r4 = *((r8 + 0xc8));
    0x000036dc adds r0, 4                                        |     r0 += 4;
    0x000036de ldr.w sb, [pc, 0x46c]                             |     sb = *(0x00003b4c);
    0x000036e2 add r1, pc                                        |     r1 = 0x7230;
    0x000036e4 ldr r3, [r3]                                      |     r3 = *(0x3b44);
    0x000036e6 str r3, [r0]                                      |     *(r0) = r3;
    0x000036e8 mov.w r3, 0                                       |     r3 = 0;
    0x000036ec mov r0, r4                                        |     r0 = r4;
    0x000036ee add sb, pc                                        |     sb += pc;
    0x000036f0 blx 0x1950                                        |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 != 0) {
    0x000036f4 cbz r0, 0x3708                                    |         
    0x000036f6 ldr.w r1, [pc, 0x458]                             |         
    0x000036fa mov r0, r4                                        |         r0 = r4;
    0x000036fc add r1, pc                                        |         r1 = 0x7252;
    0x000036fe blx 0x1950                                        |         r0 = strcmp (r0, r1);
    0x00003702 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00003704 bne.w 0x3b32                                      |             goto label_30;
                                                                 |         }
                                                                 |     }
    0x00003708 ldr.w r3, [pc, 0x448]                             |     
    0x0000370c ldr.w r1, [r8, 8]                                 |     r1 = *((r8 + 8));
    0x00003710 ldr.w r2, [r8, 0x100]                             |     r2 = *((r8 + 0x100));
    0x00003714 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00003716 adds r0, 3                                        |     r0 += 3;
    0x00003718 ldr r1, [r1, 0x18]                                |     r1 = *((r1 + 0x18));
    0x0000371a ldr.w r0, [r8, 0x2c]                              |     r0 = *((r8 + 0x2c));
    0x0000371e str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00003720 ldr r3, [r3, 8]                                   |     r3 = *(0x3b5c);
    0x00003722 ldr.w sl, [r1, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     sl = *((r1 + offset_0));
    0x00003726 ldr.w r1, [pc, 0x430]                             |     
    0x0000372a ldr.w r4, [r2, r3, lsl 2]                         |     offset_1 = r3 << 2;
                                                                 |     r4 = *((r2 + offset_1));
    0x0000372e add r1, pc                                        |     r1 = 0x728c;
    0x00003730 blx 0x1950                                        |     strcmp (r0, r1);
    0x00003734 ldr.w r6, [r8, 0xe8]                              |     r6 = *((r8 + 0xe8));
    0x00003738 mov r5, r0                                        |     r5 = r0;
    0x0000373a movs r1, 0x2f                                     |     r1 = 0x2f;
    0x0000373c mov r0, r6                                        |     r0 = r6;
    0x0000373e blx 0x1d9c                                        |     r0 = fcn_00001d9c ();
    0x00003742 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003744 beq.w 0x389a                                      |         goto label_31;
                                                                 |     }
    0x00003748 adds r0, 1                                        |     r0++;
                                                                 | label_2:
    0x0000374a ldr.w r1, [pc, 0x410]                             |     
    0x0000374e movs r2, 4                                        |     r2 = 4;
    0x00003750 add r1, pc                                        |     r1 = 0x72b2;
    0x00003752 blx 0x1e90                                        |     close (r0);
    0x00003756 str r0, [sp, 0x30]                                |     var_30h = r0;
    0x00003758 mov r0, r8                                        |     r0 = r8;
    0x0000375a blx 0x19cc                                        |     r0 = fcn_000019cc ();
    0x0000375e lsls r3, r0, 0x1c                                 |     r3 = r0 << 0x1c;
    0x00003760 bpl 0x383e                                        |     
                                                                 |     while (r0 == 0) {
    0x00003762 ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00003764 orrs r3, r5                                       |         r3 |= r5;
                                                                 |         if (r3 == r5) {
    0x00003766 beq.w 0x3ac8                                      |             goto label_32;
                                                                 |         }
    0x0000376a ldr.w r3, [r8, 0x16c]                             |         r3 = *((r8 + 0x16c));
    0x0000376e cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00003770 beq.w 0x3ace                                      |             goto label_33;
                                                                 |         }
    0x00003774 cmp r3, 2                                         |         
                                                                 |         if (r3 == 2) {
    0x00003776 beq.w 0x3b08                                      |             goto label_34;
                                                                 |         }
    0x0000377a ldr.w r3, [r8, 0xf8]                              |         r3 = *((r8 + 0xf8));
    0x0000377e cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x00003780 bne 0x3790                                        |             
    0x00003782 ldr.w r3, [r8, 0xf0]                              |             r3 = *((r8 + 0xf0));
                                                                 |             if (r3 == 0) {
    0x00003786 cbz r3, 0x3790                                    |                 goto label_35;
                                                                 |             }
    0x00003788 ldrb r3, [r3]                                     |             r3 = *(r3);
    0x0000378a cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x0000378c bne.w 0x3b10                                      |                 goto label_36;
                                                                 |             }
                                                                 |         }
                                                                 | label_35:
    0x00003790 mov r0, r8                                        |         r0 = r8;
    0x00003792 add r5, sp, 0x48                                  |         r5 += var_48h;
    0x00003794 blx 0x1a5c                                        |         fcn_00001a5c ();
    0x00003798 mov r0, r8                                        |         r0 = r8;
    0x0000379a blx 0x1d6c                                        |         fcn_00001d6c ();
    0x0000379e ldr.w r1, [r8, 0xbc]                              |         r1 = *((r8 + 0xbc));
    0x000037a2 str r5, [sp, 0x34]                                |         var_4h = r5;
    0x000037a4 add r5, sp, 0x3c                                  |         r5 += var_3ch;
    0x000037a6 ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x000037aa blx 0x1e3c                                        |         loc_imp_ap_hook_get_suexec_identity ();
    0x000037ae mov r2, sl                                        |         r2 = sl;
    0x000037b0 mov r7, r0                                        |         r7 = r0;
    0x000037b2 mov r1, r8                                        |         r1 = r8;
    0x000037b4 mov r0, r5                                        |         r0 = r5;
    0x000037b6 bl 0x21d8                                         |         r0 = fcn_000021d8 (r0, r1, r2, r3);
    0x000037ba mov fp, r0                                        |         
    0x000037bc cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000037be bne 0x386e                                        |             goto label_9;
                                                                 |         }
    0x000037c0 mov r2, r6                                        |         r2 = r6;
    0x000037c2 movs r1, 1                                        |         r1 = 1;
    0x000037c4 add r6, sp, 0xc8                                  |         r6 += arg_c8h;
    0x000037c6 str r1, [sp]                                      |         *(sp) = r1;
    0x000037c8 mov r3, r7                                        |         r3 = r7;
    0x000037ca ldr r0, [r6, -0x8c]                               |         r0 = *((r6 - 0x8c));
    0x000037ce mov r1, r8                                        |         r1 = r8;
    0x000037d0 bl 0x2664                                         |         r0 = fcn_00002664 (r0, r1, r2, r3, r4);
    0x000037d4 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000037d6 bne.w 0x3a04                                      |             goto label_37;
                                                                 |         }
                                                                 | label_6:
    0x000037da movs r1, 0xc                                      |         r1 = 0xc;
    0x000037dc ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x000037e0 blx 0x1b4c                                        |         r0 = fcn_00001b4c ();
    0x000037e4 mov r2, r0                                        |         r2 = r0;
    0x000037e6 str.w sl, [r0, 4]                                 |         __asm ("str.w sl, [r0, 4]");
    0x000037ea mov r7, r0                                        |         r7 = r0;
    0x000037ec mov r1, sl                                        |         r1 = sl;
    0x000037ee mov r0, r8                                        |         r0 = r8;
    0x000037f0 str r8, [r2], 8                                   |         *(r2) = r8;
                                                                 |         r2 += 8;
    0x000037f4 bl 0x3610                                         |         r0 = fcn_00003610 (r0, r1, r2, r3, r4, r5);
    0x000037f8 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x000037fa beq 0x389e                                        |             goto label_38;
                                                                 |         }
    0x000037fc ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x000037fe ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x00003800 ldr.w r3, [r8, 0x108]                             |         r3 = *((r8 + 0x108));
    0x00003804 cmp r2, 0                                         |         
                                                                 |         if (r2 < 0) {
    0x00003806 blt.w 0x3a22                                      |             goto label_39;
                                                                 |         }
    0x0000380a cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000380c beq.w 0x3dc8                                      |             goto label_40;
                                                                 |         }
    0x00003810 ldr r1, [r3]                                      |         r1 = *(r3);
    0x00003812 cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x00003814 beq.w 0x3a26                                      |             goto label_14;
                                                                 |         }
    0x00003816 strh r7, [r0, 8]                                  |         *((r0 + 8)) = r7;
    0x00003818 ldrsb r1, [r1, r2]                                |         r1 = *((r1 + r2));
    0x0000381a cmp r1, 0                                         |         
                                                                 |         if (r1 < 0) {
    0x0000381c blt.w 0x3a26                                      |             goto label_14;
                                                                 |         }
                                                                 | label_16:
    0x00003820 cmp r1, 6                                         |         
                                                                 |         if (r1 <= 6) {
    0x00003822 ble 0x38b2                                        |             goto label_7;
                                                                 |         }
                                                                 | label_8:
    0x00003824 ldr r3, [pc, 0x338]                               |         
    0x00003826 movw r1, 0x5db                                    |         r1 = 0x5db;
    0x0000382a strd r0, r8, [sp]                                 |         __asm ("strd r0, r8, [sp]");
    0x0000382e ldr r0, [pc, 0x334]                               |         
    0x00003830 add r3, pc                                        |         r3 = 0x7394;
    0x00003832 str r3, [sp, 8]                                   |         var_8h = r3;
    0x00003834 movs r3, 7                                        |         r3 = 7;
    0x00003836 add r0, pc                                        |         r0 = 0x73a0;
    0x00003838 blx 0x1db4                                        |         fcn_00001db4 ();
    0x0000383c b 0x38b2                                          |         goto label_7;
    0x0000383e ldr r1, [pc, 0x328]                               |         
    0x00003840 ldr.w r0, [r8, 0xc0]                              |         r0 = *((r8 + 0xc0));
    0x00003844 add r1, pc                                        |         r1 = 0x73b2;
    0x00003846 blx 0x1a08                                        |         r0 = fcn_00001a08 ();
                                                                 |         if (r0 == 0) {
    0x0000384a cbz r0, 0x3858                                    |             goto label_41;
                                                                 |         }
    0x0000384c ldr r1, [pc, 0x31c]                               |         
    0x0000384e add r1, pc                                        |         r1 = 0x73be;
    0x00003850 blx 0x1b04                                        |         r0 = fcn_00001b04 ();
    0x00003854 cmp r0, 0                                         |         
    0x00003856 beq 0x3762                                        |         
                                                                 |     }
                                                                 | label_41:
    0x00003858 ldr r4, [pc, 0x314]                               |     
    0x0000385a movs r3, 0                                        |     r3 = 0;
    0x0000385c add r4, pc                                        |     r4 = 0x73d0;
                                                                 | label_12:
    0x0000385e movw r2, 0x193                                    |     r2 = 0x193;
                                                                 | label_13:
    0x00003862 mov r1, sl                                        |     r1 = sl;
    0x00003864 mov r0, r8                                        |     r0 = r8;
    0x00003866 str r4, [sp]                                      |     *(sp) = r4;
    0x00003868 bl 0x20b4                                         |     r0 = fcn_000020b4 (r0, r1, r2, r3, r4);
    0x0000386c mov fp, r0                                        |     
                                                                 | label_9:
    0x0000386e ldr r2, [pc, 0x304]                               |     
    0x00003870 add.w r1, sp, 0x20c0                              |     r1 += s1;
    0x00003874 ldr r3, [pc, 0x2cc]                               |     r3 = *(0x3b44);
    0x00003876 adds r1, 4                                        |     r1 += 4;
    0x00003878 add r2, pc                                        |     r2 = 0x73f2;
    0x0000387a ldr r3, [r2, r3]                                  |     r3 = *(0x73f2);
    0x0000387c ldr r2, [r3]                                      |     r2 = *(0x73f2);
    0x0000387e ldr r3, [r1]                                      |     r3 = *(r1);
    0x00003880 eors r2, r3                                       |     r2 ^= r3;
    0x00003882 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00003886 bne.w 0x3f3c                                      |         goto label_42;
                                                                 |     }
    0x0000388a mov r0, fp                                        |     r0 = fp;
    0x0000388c add.w sp, sp, 0x20c0                              |     
    0x00003890 add sp, 0xc                                       |     
    0x00003892 vpop {d8}                                         |     __asm ("vpop {d8}");
    0x00003896 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_31:
    0x0000389a mov r0, r6                                        |     r0 = r6;
    0x0000389c b 0x374a                                          |     goto label_2;
                                                                 | label_38:
    0x0000389e ldr r3, [pc, 0x2d8]                               |     r3 = *(0x3b7a);
    0x000038a0 mov r1, r7                                        |     r1 = r7;
    0x000038a2 ldr r2, [pc, 0x2d8]                               |     
    0x000038a4 ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x000038a8 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000038ac add r2, pc                                        |     r2 = 0x742e;
    0x000038ae blx 0x1b1c                                        |     fcn_00001b1c ();
                                                                 | label_7:
    0x000038b2 ldr r0, [sp, 0x34]                                |     r0 = var_4h;
    0x000038b4 mov r1, r5                                        |     r1 = r5;
    0x000038b6 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x000038ba movs r2, 1                                        |     r2 = 1;
    0x000038bc subs r0, 8                                        |     r0 -= 8;
    0x000038be blx 0x19d8                                        |     fcn_000019d8 ();
    0x000038c2 ldrd r2, r3, [r4]                                 |     __asm ("ldrd r2, r3, [r4]");
    0x000038c6 cmp r2, 1                                         |     
    0x000038c8 sbcs r1, r3, 0                                    |     __asm ("sbcs r1, r3, 0");
    0x000038cc itett lt                                          |     
                                                                 |     if (r2 >= 1) {
    0x000038ce ldrlt r3, [r8, 8]                                 |         r3 = *((r8 + 8));
                                                                 |     }
                                                                 |     if (r2 >= 1) {
    0x000038d2 ldrlt r0, [r6, -0x88]                             |         r0 = *((r6 - 0x88));
                                                                 |     }
                                                                 |     if (r2 < 1) {
    0x000038d6 ldr r0, [r6, -0x88]                               |         r0 = *((r6 - 0x88));
                                                                 |     }
                                                                 |     if (r2 < 1) {
    0x000038da ldrd r2, r3, [r3, 0x40]                           |         __asm ("ldrd r2, r3, [r3, 0x40]");
                                                                 |     }
    0x000038de blx 0x1c78                                        |     fcn_00001c78 ();
    0x000038e2 ldr r2, [pc, 0x29c]                               |     
    0x000038e4 ldr r1, [r6, -0x8c]                               |     r1 = *((r6 - 0x8c));
    0x000038e8 ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x000038ec add r2, pc                                        |     r2 = 0x7472;
    0x000038ee blx 0x1a68                                        |     fcn_00001a68 ();
    0x000038f2 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x000038f6 ldr.w r0, [r8]                                    |     r0 = *(r8);
    0x000038fa ldr r1, [r3, 0x40]                                |     r1 = *((r3 + 0x40));
    0x000038fc blx 0x1b7c                                        |     fcn_00001b7c ();
    0x00003900 ldr.w r3, [sl]                                    |     r3 = *(sl);
    0x00003904 str r0, [sp, 0x20]                                |     var_20h = r0;
    0x00003906 str r3, [sp, 0x28]                                |     var_28h = r3;
                                                                 |     if (r3 != 0) {
    0x00003908 cbz r3, 0x391a                                    |         
    0x0000390a ldr.w r1, [sl, 8]                                 |         r1 = *((sl + 8));
    0x0000390e ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x00003912 adds r1, 1                                        |         r1++;
    0x00003914 blx 0x1b4c                                        |         fcn_00001b4c ();
    0x00003916 ldmdb sl, {r1, r3, ip, pc}                        |         __asm ("ldmdb sl, {r1, r3, ip, pc}");
                                                                 |     }
    0x0000391a ldr r3, [pc, 0x268]                               |     
    0x0000391c movs r5, 0                                        |     r5 = 0;
    0x0000391e vldr d8, [pc, 0x218]                              |     __asm ("vldr d8, [0x00003b3c]");
    0x00003922 str.w r8, [sp, 0x1c]                              |     __asm ("str.w r8, [var_1ch]");
    0x00003926 add r3, pc                                        |     r3 = 0x74b0;
    0x00003928 str r3, [sp, 0x2c]                                |     n = r3;
    0x0000392a add r3, sp, 0x88                                  |     r3 += arg_88h;
    0x0000392c str r3, [sp, 0x14]                                |     var_14h = r3;
    0x0000392e add r3, sp, 0x50                                  |     r3 += var_50h;
    0x00003930 str r3, [sp, 0x18]                                |     var_18h = r3;
                                                                 | label_5:
    0x00003932 ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x00003934 movs r3, 0                                        |     r3 = 0;
    0x00003936 vstr d8, [sp]                                     |     __asm ("vstr d8, [sp]");
    0x0000393a ldr r1, [sp, 0x20]                                |     r1 = var_20h;
    0x0000393c ldr.w r0, [r2, 0x118]                             |     r0 = *((r2 + 0x118));
    0x00003940 mov r2, r3                                        |     r2 = r3;
    0x00003942 blx 0x1b40                                        |     r0 = fcn_00001b40 ();
    0x00003946 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003948 bne.w 0x3ad8                                      |         goto label_43;
                                                                 |     }
    0x0000394c ldr r7, [sp, 0x20]                                |     r7 = var_20h;
    0x0000394e ldr r4, [r7, 4]!                                  |     r4 = *((r7 += 4));
    0x00003952 cmp r4, r7                                        |     
                                                                 |     if (r4 == r7) {
    0x00003954 beq 0x39fc                                        |         goto label_44;
                                                                 |     }
    0x00003956 ldr r3, [pc, 0x230]                               |     r3 = *(0x3b8a);
    0x00003958 ldr.w r8, [sb, r3]                                |     r8 = *((sb + r3));
    0x0000395c b 0x3964                                          |     
                                                                 |     while (r3 != 0) {
                                                                 | label_3:
    0x0000395e ldr r4, [r4]                                      |         r4 = *(r4);
    0x00003960 cmp r4, r7                                        |         
                                                                 |         if (r4 == r7) {
    0x00003962 beq 0x39fc                                        |             goto label_44;
                                                                 |         }
                                                                 | label_4:
    0x00003964 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00003966 cmp r2, r8                                        |         
                                                                 |         if (r2 == r8) {
    0x00003968 beq 0x3a30                                        |             goto label_45;
                                                                 |         }
    0x0000396a ldr r3, [pc, 0x220]                               |         r3 = *(0x3b8e);
    0x0000396c ldr.w r1, [sb, r3]                                |         r1 = *((sb + r3));
    0x00003970 and r3, r5, 1                                     |         r3 = r5 & 1;
    0x00003974 cmp r2, r1                                        |         
    0x00003976 it eq                                             |         
                                                                 |         if (r2 != r1) {
    0x00003978 orreq r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x0000397c cmp r3, 0                                         |         
    0x0000397e bne 0x395e                                        |         
                                                                 |     }
    0x00003980 ldr r5, [r2, 0x10]                                |     r5 = *((r2 + 0x10));
    0x00003982 mov r0, r4                                        |     r0 = r4;
    0x00003984 ldrd r1, r2, [sp, 0x14]                           |     __asm ("ldrd r1, r2, [var_14h]");
    0x00003988 subs r1, 0x3c                                     |     r1 -= 0x3c;
    0x0000398a blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
    0x0000398c ldr.w r3, [sl]                                    |     r3 = *(sl);
                                                                 |     if (r3 != 0) {
    0x00003990 cbz r3, 0x39be                                    |         
    0x00003992 ldr.w r3, [sl, 8]                                 |         r3 = *((sl + 8));
    0x00003996 cmp r3, fp                                        |         
                                                                 |         if (r3 <= fp) {
    0x00003998 ble 0x39be                                        |             goto label_46;
                                                                 |         }
    0x0000399a ldr r2, [r6, -0x78]                               |         r2 = *((r6 - 0x78));
    0x0000399e mov r0, fp                                        |         r0 = fp;
    0x000039a0 add.w r1, fp, r2                                  |         r1 = fp + r2;
    0x000039a4 cmp r1, r3                                        |         
    0x000039a6 itt hi                                            |         
                                                                 |         if (r1 <= r3) {
    0x000039a8 subhi r2, r3, fp                                  |             r2 = r3 - fp;
                                                                 |         }
                                                                 |         if (r1 > r3) {
    0x000039ac mov fp, r3                                        |             
                                                                 |         }
    0x000039ae ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000039b0 it ls                                             |         
                                                                 |         if (r1 > r3) {
    0x000039b2 movls fp, r1                                      |             
                                                                 |         }
    0x000039b4 ldr r1, [r6, -0x7c]                               |         r1 = *((r6 - 0x7c));
    0x000039b8 add r0, r3                                        |         r0 += r3;
    0x000039ba blx 0x19f0                                        |         fcn_000019f0 ();
                                                                 |     }
                                                                 | label_46:
    0x000039be ldrd r1, r2, [r6, -0x7c]                          |     __asm ("ldrd r1, r2, [r6, -0x7c]");
    0x000039c2 movs r3, 0                                        |     r3 = 0;
    0x000039c4 ldr r0, [r6, -0x88]                               |     r0 = *((r6 - 0x88));
    0x000039c8 blx 0x1ad4                                        |     r0 = fcn_00001ad4 ();
    0x000039cc mov r5, r0                                        |     r5 = r0;
    0x000039ce cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000039d0 beq 0x395e                                        |         goto label_3;
                                                                 |     }
    0x000039d2 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000039d4 movw r1, 0x632                                    |     r1 = 0x632;
    0x000039d8 str r0, [sp]                                      |     *(sp) = r0;
    0x000039da movs r5, 1                                        |     r5 = 1;
    0x000039dc ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x000039de str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000039e0 ldr.w r3, [r3, 0xe8]                              |     r3 = *((r3 + 0xe8));
    0x000039e4 ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x000039e6 ldr r0, [sp, 0x2c]                                |     r0 = n;
    0x000039e8 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000039ea ldr r3, [pc, 0x1a4]                               |     
    0x000039ec add r3, pc                                        |     r3 = 0x7582;
    0x000039ee str r3, [sp, 8]                                   |     var_8h = r3;
    0x000039f0 movs r3, 3                                        |     r3 = 3;
    0x000039f2 blx 0x1db4                                        |     fcn_00001db4 ();
    0x000039f6 ldr r4, [r4]                                      |     r4 = *(r4);
    0x000039f8 cmp r4, r7                                        |     
                                                                 |     if (r4 != r7) {
    0x000039fa bne 0x3964                                        |         goto label_4;
                                                                 |     }
                                                                 | label_44:
    0x000039fc ldr r0, [sp, 0x20]                                |     r0 = var_20h;
    0x000039fe blx 0x1d08                                        |     fcn_00001d08 ();
    0x00003a02 b 0x3932                                          |     goto label_5;
                                                                 | label_37:
    0x00003a04 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003a06 movw r1, 0x5cc                                    |     r1 = 0x5cc;
    0x00003a0a strd r0, r8, [sp]                                 |     __asm ("strd r0, r8, [sp]");
    0x00003a0e ldr r0, [pc, 0x184]                               |     
    0x00003a10 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00003a12 ldr r3, [pc, 0x184]                               |     
    0x00003a14 add r0, pc                                        |     r0 = 0x75ae;
    0x00003a16 add r3, pc                                        |     r3 = 0x75b4;
    0x00003a18 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00003a1a movs r3, 3                                        |     r3 = 3;
    0x00003a1c blx 0x1db4                                        |     fcn_00001db4 ();
    0x00003a20 b 0x37da                                          |     goto label_6;
                                                                 | label_39:
    0x00003a22 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003a24 beq 0x3b1c                                        |         goto label_47;
                                                                 |     }
                                                                 | label_14:
    0x00003a26 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00003a28 cmp r3, 6                                         |     
                                                                 |     if (r3 <= 6) {
    0x00003a2a ble.w 0x38b2                                      |         goto label_7;
                                                                 |     }
    0x00003a2e b 0x3824                                          |     goto label_8;
                                                                 | label_45:
    0x00003a30 str.w r8, [sp, 0x14]                              |     __asm ("str.w r8, [var_14h]");
    0x00003a34 ldrd r8, r0, [sp, 0x1c]                           |     __asm ("ldrd r8, r0, [var_1ch]");
    0x00003a38 blx 0x1d08                                        |     fcn_00001d08 ();
    0x00003a3c ldr.w r3, [sl]                                    |     r3 = *(sl);
                                                                 |     if (r3 != 0) {
    0x00003a40 cbz r3, 0x3a4a                                    |         
    0x00003a42 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x00003a44 movs r3, 0                                        |         r3 = 0;
    0x00003a46 strb.w r3, [r2, fp]                               |         *((r2 + fp)) = r3;
                                                                 |     }
    0x00003a4a ldr r0, [r6, -0x8c]                               |     r0 = *((r6 - 0x8c));
    0x00003a4e movs r1, 1                                        |     r1 = 1;
    0x00003a50 blx 0x1d60                                        |     fcn_00001d60 ();
    0x00003a54 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00003a56 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003a58 bne.w 0x3bb4                                      |         goto label_48;
                                                                 |     }
    0x00003a5c ldr.w r3, [r8, 0x11c]                             |     r3 = *((r8 + 0x11c));
    0x00003a60 ldr.w r5, [r8, 4]                                 |     r5 = *((r8 + 4));
                                                                 |     if (r3 != 0) {
    0x00003a64 cbnz r3, 0x3abe                                   |         goto label_49;
                                                                 |     }
                                                                 |     do {
                                                                 | label_11:
    0x00003a66 ldr r1, [r5, 0x40]                                |         r1 = *((r5 + 0x40));
    0x00003a68 mov.w fp, 0                                       |         
    0x00003a6c str.w r3, [r8, 0x11c]                             |         __asm ("str.w r3, [r8, 0x11c]");
    0x00003a70 str.w r3, [r8, 0x114]                             |         __asm ("str.w r3, [r8, 0x114]");
    0x00003a74 ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x00003a78 blx 0x1b7c                                        |         fcn_00001b7c ();
    0x00003a7c ldr r1, [r5, 0x40]                                |         r1 = *((r5 + 0x40));
    0x00003a7e mov r4, r0                                        |         r4 = r0;
    0x00003a80 ldr r0, [r6, -0x88]                               |         r0 = *((r6 - 0x88));
    0x00003a84 adds r6, r4, 4                                    |         r6 = r4 + 4;
    0x00003a86 blx 0x1a80                                        |         r0 = fcn_00001a80 ();
    0x00003a8a mov r3, r0                                        |         r3 = r0;
    0x00003a8c ldr r0, [r5, 0x40]                                |         r0 = *((r5 + 0x40));
    0x00003a8e str r6, [r3]                                      |         *(r3) = r6;
    0x00003a90 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00003a92 str r2, [r3, 4]                                   |         *((r3 + 4)) = r2;
    0x00003a94 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00003a96 str r3, [r2]                                      |         *(r2) = r3;
    0x00003a98 str r3, [r4, 8]                                   |         *((r4 + 8)) = r3;
    0x00003a9a blx 0x1e0c                                        |         r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
    0x00003a9e mov r3, r0                                        |         r3 = r0;
    0x00003aa0 ldr.w r0, [r8, 0x114]                             |         r0 = *((r8 + 0x114));
    0x00003aa4 str r6, [r3]                                      |         *(r3) = r6;
    0x00003aa6 mov r1, r4                                        |         r1 = r4;
    0x00003aa8 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00003aaa str r2, [r3, 4]                                   |         *((r3 + 4)) = r2;
    0x00003aac ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00003aae str r3, [r2]                                      |         *(r2) = r3;
    0x00003ab0 str r3, [r4, 8]                                   |         *((r4 + 8)) = r3;
    0x00003ab2 blx 0x1e78                                        |         loc_imp_apr_file_printf ()
    0x00003ab6 b 0x386e                                          |         goto label_9;
                                                                 | label_10:
    0x00003ab8 ldr r3, [r3, 8]                                   |         r3 = *((r3 + 8));
    0x00003aba cmp r3, 0                                         |         
    0x00003abc beq 0x3a66                                        |         
                                                                 |     } while (r3 == 0);
                                                                 | label_49:
    0x00003abe ldr r2, [r3]                                      |     r2 = *(r3);
    0x00003ac0 ldr r2, [r2, 0x14]                                |     r2 = *((r2 + 0x14));
    0x00003ac2 cmp r2, 0x31                                      |     
                                                                 |     if (r2 < 0x31) {
    0x00003ac4 bls 0x3ab8                                        |         goto label_10;
                                                                 |     }
    0x00003ac6 b 0x3a66                                          |     goto label_11;
                                                                 | label_32:
    0x00003ac8 ldr r4, [pc, 0xd0]                                |     
    0x00003aca add r4, pc                                        |     r4 = 0x766a;
    0x00003acc b 0x385e                                          |     goto label_12;
                                                                 | label_33:
    0x00003ace ldr r4, [pc, 0xd0]                                |     
    0x00003ad0 mov.w r2, 0x194                                   |     r2 = 0x194;
    0x00003ad4 add r4, pc                                        |     r4 = 0x767a;
    0x00003ad6 b 0x3862                                          |     goto label_13;
                                                                 | label_43:
    0x00003ad8 ldr r1, [pc, 0xc8]                                |     
    0x00003ada mov r4, r0                                        |     r4 = r0;
    0x00003adc ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003ade ldr.w r8, [sp, 0x1c]                              |     r8 = var_1ch;
    0x00003ae2 ldr r0, [pc, 0xc4]                                |     
    0x00003ae4 add r1, pc                                        |     r1 = 0x768c;
    0x00003ae6 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00003ae8 movs r3, 3                                        |     r3 = 3;
    0x00003aea str r1, [sp, 8]                                   |     var_8h = r1;
    0x00003aec movw r1, 0x5ff                                    |     r1 = 0x5ff;
    0x00003af0 add r0, pc                                        |     r0 = 0x769e;
    0x00003af2 strd r4, r8, [sp]                                 |     __asm ("strd r4, r8, [sp]");
    0x00003af6 blx 0x1db4                                        |     fcn_00001db4 ();
    0x00003afa mov.w r1, 0x190                                   |     r1 = 0x190;
    0x00003afe mov r0, r4                                        |     r0 = r4;
    0x00003b00 blx 0x1de4                                        |     r0 = fcn_00001de4 ();
    0x00003b04 mov fp, r0                                        |     
    0x00003b06 b 0x386e                                          |     goto label_9;
                                                                 | label_34:
    0x00003b08 ldr r4, [pc, 0xa0]                                |     
    0x00003b0a movs r3, 0                                        |     r3 = 0;
    0x00003b0c add r4, pc                                        |     r4 = 0x76bc;
    0x00003b0e b 0x385e                                          |     goto label_12;
                                                                 | label_36:
    0x00003b10 ldr r4, [pc, 0x9c]                                |     
    0x00003b12 movs r3, 0                                        |     r3 = 0;
    0x00003b14 mov.w r2, 0x194                                   |     r2 = 0x194;
    0x00003b16 strb r2, [r1, 0xb]                                |     *((r1 + 0xb)) = r2;
    0x00003b18 add r4, pc                                        |     r4 = 0x76cc;
    0x00003b1a b 0x3862                                          |     goto label_13;
                                                                 | label_47:
    0x00003b1c ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00003b20 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x00003b22 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003b24 bne.w 0x3a26                                      |         goto label_14;
                                                                 |     }
    0x00003b28 ldr.w r1, [r8, 8]                                 |     r1 = *((r8 + 8));
                                                                 | label_17:
    0x00003b2c add.w r3, r1, 0x10                                |     r3 = r1 + 0x10;
    0x00003b30 b 0x3a26                                          |     goto label_14;
                                                                 | label_30:
    0x00003b32 mov.w fp, -1                                      |     
    0x00003b36 b 0x386e                                          |     goto label_9;
                                                                 | label_48:
    0x00003bb4 ldrd r0, r5, [r8]                                 |     __asm ("ldrd r0, r5, [r8]");
    0x00003bb8 subs r7, r6, 4                                    |     r7 = r6 - 4;
    0x00003bba str r7, [sp, 0x2c]                                |     n = r7;
    0x00003bbc ldr r1, [r5, 0x40]                                |     r1 = *((r5 + 0x40));
    0x00003bbe blx 0x1b7c                                        |     fcn_00001b7c ();
    0x00003bc2 ldr r1, [r5, 0x40]                                |     r1 = *((r5 + 0x40));
    0x00003bc4 mov r4, r0                                        |     r4 = r0;
    0x00003bc6 ldr r0, [r6, -0x88]                               |     r0 = *((r6 - 0x88));
    0x00003bca blx 0x1a80                                        |     r0 = fcn_00001a80 ();
    0x00003bce mov r3, r0                                        |     r3 = r0;
    0x00003bd0 ldr r0, [r5, 0x40]                                |     r0 = *((r5 + 0x40));
    0x00003bd2 adds r5, r4, 4                                    |     r5 = r4 + 4;
    0x00003bd4 str r5, [r3]                                      |     *(r3) = r5;
    0x00003bd6 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bd8 str r5, [sp, 0x18]                                |     var_18h = r5;
    0x00003bda str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x00003bdc ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bde str r3, [r2]                                      |     *(r2) = r3;
    0x00003be0 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00003be2 blx 0x1e0c                                        |     r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
    0x00003be6 str r5, [r0]                                      |     *(r0) = r5;
    0x00003be8 mov r1, r4                                        |     r1 = r4;
    0x00003bea ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bec ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003bee str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00003bf0 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bf2 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00003bf4 str r0, [r2]                                      |     *(r2) = r0;
    0x00003bf6 mov r2, r7                                        |     r2 = r7;
    0x00003bf8 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x00003bfa mov r0, r8                                        |     r0 = r8;
    0x00003bfc blx 0x1e18                                        |     r0 = loc_imp_apr_signal ();
    0x00003c00 mov fp, r0                                        |     
    0x00003c02 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003c04 beq.w 0x3de6                                      |         goto label_50;
                                                                 |     }
    0x00003c08 ldr.w r0, [r8, 0xb0]                              |     r0 = *((r8 + 0xb0));
    0x00003c0c blx 0x1a44                                        |     r0 = fcn_00001a44 ();
    0x00003c10 mov r2, r0                                        |     r2 = r0;
    0x00003c12 str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x00003c14 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00003c16 movs r0, r0                                       |     
    0x00003c18 movs r3, 0                                        |     r3 = 0;
    0x00003c1a ldr r7, [r2, 0x10]                                |     r7 = *((r2 + 0x10));
    0x00003c1c str r3, [r6, -0x84]                               |     *((r6 - 0x84)) = r3;
    0x00003c20 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003c22 beq.w 0x3e5a                                      |         goto label_51;
                                                                 |     }
    0x00003c26 add r3, sp, 0x88                                  |     r3 += arg_88h;
    0x00003c28 add r1, sp, 0x50                                  |     r1 += var_50h;
    0x00003c2a str r3, [sp, 0x20]                                |     var_20h = r3;
    0x00003c2c blx 0x1bb8                                        |     r0 = fcn_00001bb8 ();
                                                                 |     if (r0 == 0) {
    0x00003c30 cbnz r0, 0x3c40                                   |         
    0x00003c32 ldr r2, [r6, -0x4c]                               |         r2 = *((r6 - 0x4c));
    0x00003c36 ldr.w r3, [sl, 4]                                 |         r3 = *((sl + 4));
    0x00003c3a cmp r2, r3                                        |         
                                                                 |         if (r2 > r3) {
    0x00003c3c bgt.w 0x3e5a                                      |             goto label_51;
                                                                 |         }
                                                                 |     }
    0x00003c40 ldr.w r3, [r8]                                    |     r3 = *(r8);
    0x00003c44 movs r2, 0xe                                      |     r2 = 0xe;
    0x00003c46 ldr r0, [sp, 0x34]                                |     r0 = var_4h;
    0x00003c48 ldr.w r1, [sl]                                    |     r1 = *(sl);
    0x00003c4c str r3, [sp]                                      |     *(sp) = r3;
    0x00003c4e movw r3, 0xfff                                    |     r3 = 0xfff;
    0x00003c52 subs r0, 4                                        |     r0 -= 4;
    0x00003c54 blx 0x1d54                                        |     r0 = fcn_00001d54 ();
    0x00003c58 mov sb, r0                                        |     sb = r0;
    0x00003c5a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003c5c bne.w 0x3e5a                                      |         goto label_51;
                                                                 |     }
    0x00003c60 sub.w r5, r6, 0x20                                |     r5 = r6 - 0x20;
    0x00003c64 blx 0x1980                                        |     loc_imp_apr_time_now ();
    0x00003c68 mov r3, r1                                        |     r3 = r1;
    0x00003c6a mov r2, r0                                        |     r2 = r0;
    0x00003c6c mov r0, r5                                        |     r0 = r5;
    0x00003c6e blx 0x1974                                        |     loc_imp_apr_ctime ();
    0x00003c72 ldr.w r1, [r8, 0xf4]                              |     r1 = *((r8 + 0xf4));
    0x00003c76 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003c7a ldr.w r3, [r8, 0x4c]                              |     r3 = *((r8 + 0x4c));
    0x00003c7e ldr.w ip, [r8, 0xe4]                              |     ip = *((r8 + 0xe4));
    0x00003c82 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00003c84 beq.w 0x3f34                                      |         goto label_52;
                                                                 |     }
    0x00003c88 ldr r2, [pc, 0x2c8]                               |     
    0x00003c8a add r2, pc                                        |     r2 = 0x7be2;
                                                                 | label_25:
    0x00003c8c str.w ip, [sp]                                    |     __asm ("str.w ip, [sp]");
    0x00003c90 strd r2, r1, [sp, 4]                              |     __asm ("strd r2, r1, [sp, 4]");
    0x00003c94 mov r2, r5                                        |     r2 = r5;
    0x00003c96 ldr.w r1, [r8, 0x2c]                              |     r1 = *((r8 + 0x2c));
    0x00003c9a str r1, [sp, 0xc]                                 |     var_ch = r1;
    0x00003c9c ldr r1, [pc, 0x2b8]                               |     
    0x00003c9e add r1, pc                                        |     r1 = 0x7bfa;
    0x00003ca0 blx 0x1e84                                        |     strncmp (r0, r1, r2);
    0x00003ca4 ldr r1, [pc, 0x2b4]                               |     
    0x00003ca6 mov r2, fp                                        |     r2 = fp;
    0x00003ca8 ldr.w r3, [r8, 0xe8]                              |     r3 = *((r8 + 0xe8));
    0x00003cac ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003cb0 add r1, pc                                        |     r1 = 0x7c10;
    0x00003cb2 blx 0x1e84                                        |     strncmp (r0, r1, r2);
    0x00003cb6 ldr r0, [pc, 0x2a8]                               |     
    0x00003cb8 ldr r1, [r6, -0x84]                               |     r1 = *((r6 - 0x84));
    0x00003cbc add r0, pc                                        |     r0 = 0x7c22;
    0x00003cbe blx 0x1d78                                        |     fcn_00001d78 ();
    0x00003cc2 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00003cc4 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00003cc6 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00003cc8 ble 0x3cf2                                        |         goto label_53;
                                                                 |     }
    0x00003cca ldr.w sl, [pc, 0x298]                             |     
    0x00003cce adds r5, r7, 4                                    |     r5 = r7 + 4;
    0x00003cd0 movs r7, 0                                        |     r7 = 0;
    0x00003cd2 add sl, pc                                        |     sl = 0x7c3c;
                                                                 |     do {
    0x00003cd4 ldr r2, [r5, -0x4]                                |         r2 = *((r5 - 0x4));
                                                                 |         if (r2 != 0) {
    0x00003cd8 cbz r2, 0x3cea                                    |             
    0x00003cda ldr r3, [r5]                                      |             r3 = *(r5);
    0x00003cdc mov r1, sl                                        |             r1 = sl;
    0x00003cde ldr r0, [r6, -0x84]                               |             r0 = *((r6 - 0x84));
    0x00003ce2 blx 0x1e84                                        |             strncmp (r0, r1, r2);
    0x00003ce6 ldr r3, [sp, 0x1c]                                |             r3 = var_1ch;
    0x00003ce8 ldr r3, [r3, 8]                                   |             r3 = *((r3 + 8));
                                                                 |         }
    0x00003cea adds r7, 1                                        |         r7++;
    0x00003cec adds r5, 0xc                                      |         r5 += 0xc;
    0x00003cee cmp r7, r3                                        |         
    0x00003cf0 blt 0x3cd4                                        |         
                                                                 |     } while (r7 < r3);
                                                                 | label_53:
    0x00003cf2 ldr.w r3, [r8, 0x48]                              |     r3 = *((r8 + 0x48));
    0x00003cf6 subs r3, 1                                        |     r3--;
    0x00003cf8 cmp r3, 1                                         |     
                                                                 |     if (r3 < 1) {
    0x00003cfa bls.w 0x3f1a                                      |         goto label_54;
                                                                 |     }
                                                                 | label_24:
    0x00003cfe ldr r0, [pc, 0x268]                               |     
    0x00003d00 ldr r1, [r6, -0x84]                               |     r1 = *((r6 - 0x84));
    0x00003d04 add r0, pc                                        |     r0 = 0x7c72;
    0x00003d06 blx 0x1d78                                        |     fcn_00001d78 ();
    0x00003d0a ldr.w r0, [r8, 0xb8]                              |     r0 = *((r8 + 0xb8));
    0x00003d0e blx 0x1a44                                        |     fcn_00001a44 ();
    0x00003d12 ldr r3, [r0, 8]                                   |     r3 = *(0x7c7a);
    0x00003d14 mov r7, r0                                        |     r7 = r0;
    0x00003d16 ldr r5, [r0, 0x10]                                |     r5 = *(0x7c82);
    0x00003d18 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00003d1a ble 0x3d42                                        |         goto label_55;
                                                                 |     }
    0x00003d1c ldr.w sl, [pc, 0x24c]                             |     
    0x00003d20 adds r5, 4                                        |     r5 += 4;
    0x00003d22 add sl, pc                                        |     sl = 0x7c92;
                                                                 |     do {
    0x00003d24 ldr r2, [r5, -0x4]                                |         r2 = *((r5 - 0x4));
                                                                 |         if (r2 != 0) {
    0x00003d28 cbz r2, 0x3d38                                    |             
    0x00003d2a ldr r3, [r5]                                      |             r3 = *(r5);
    0x00003d2c mov r1, sl                                        |             r1 = sl;
    0x00003d2e ldr r0, [r6, -0x84]                               |             r0 = *((r6 - 0x84));
    0x00003d32 blx 0x1e84                                        |             strncmp (r0, r1, r2);
    0x00003d36 ldr r3, [r7, 8]                                   |             r3 = *((r7 + 8));
                                                                 |         }
    0x00003d38 add.w sb, sb, 1                                   |         sb++;
    0x00003d3c adds r5, 0xc                                      |         r5 += 0xc;
    0x00003d3e cmp sb, r3                                        |         
    0x00003d40 blt 0x3d24                                        |         
                                                                 |     } while (sb < r3);
                                                                 | label_55:
    0x00003d42 ldrb r3, [r6, -0x4]                               |     r3 = *((r6 - 0x4));
    0x00003d46 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003d48 bne.w 0x3f0a                                      |         goto label_56;
                                                                 |     }
    0x00003d4c ldr r4, [r4, 4]                                   |     r4 = *((r4 + 4));
    0x00003d4e ldr r3, [sp, 0x18]                                |     r3 = var_18h;
    0x00003d50 cmp r3, r4                                        |     
                                                                 |     if (r3 == r4) {
    0x00003d52 beq.w 0x3ea6                                      |         goto label_57;
                                                                 |     }
    0x00003d56 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x00003d58 movs r7, 1                                        |     r7 = 1;
    0x00003d5a ldr.w sl, [pc, 0x214]                             |     
    0x00003d5e sub.w r5, r3, 0x3c                                |     r5 = r3 - 0x3c;
    0x00003d62 ldr r3, [pc, 0x210]                               |     
    0x00003d64 add sl, pc                                        |     sl = 0x7cda;
    0x00003d66 mov sb, r5                                        |     sb = r5;
    0x00003d68 add r3, pc                                        |     r3 = 0x7ce2;
    0x00003d6a str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00003d6c b 0x3d92                                          |     
                                                                 |     while (r7 == 0) {
                                                                 | label_15:
    0x00003d6e movs r3, 0                                        |         r3 = 0;
    0x00003d70 ldr r1, [r6, -0x80]                               |         r1 = *((r6 - 0x80));
    0x00003d74 ldr r0, [r6, -0x84]                               |         r0 = *((r6 - 0x84));
    0x00003d78 blx 0x1ad4                                        |         fcn_00001ad4 ();
    0x00003d7c ldr r1, [r6, -0x84]                               |         r1 = *((r6 - 0x84));
    0x00003d80 mov r0, sl                                        |         r0 = sl;
    0x00003d82 blx 0x1d78                                        |         fcn_00001d78 ();
    0x00003d86 ldr r4, [r4]                                      |         r4 = *(r4);
    0x00003d88 ldr r3, [sp, 0x18]                                |         r3 = var_18h;
    0x00003d8a cmp r3, r4                                        |         
                                                                 |         if (r3 == r4) {
    0x00003d8c beq.w 0x3ea6                                      |             goto label_57;
                                                                 |         }
    0x00003d90 movs r7, 0                                        |         r7 = 0;
    0x00003d92 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00003d94 ldr r2, [sp, 0x14]                                |         r2 = var_14h;
    0x00003d96 cmp r3, r2                                        |         
                                                                 |         if (r3 == r2) {
    0x00003d98 beq.w 0x3ea6                                      |             goto label_57;
                                                                 |         }
    0x00003d9c ldr r5, [r3, 0x10]                                |         r5 = *((r3 + 0x10));
    0x00003d9e mov r2, sb                                        |         r2 = sb;
    0x00003da0 ldr r1, [sp, 0x34]                                |         r1 = var_4h;
    0x00003da2 movs r3, 0                                        |         r3 = 0;
    0x00003da4 mov r0, r4                                        |         r0 = r4;
    0x00003da6 blx r5                                            |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00003da8 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00003daa bne 0x3ea6                                        |             goto label_57;
                                                                 |         }
    0x00003dac ldr r2, [r6, -0x7c]                               |         r2 = *((r6 - 0x7c));
    0x00003db0 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00003db2 beq 0x3ea6                                        |             goto label_57;
                                                                 |         }
    0x00003db4 cmp r7, 0                                         |         
    0x00003db6 beq 0x3d6e                                        |         
                                                                 |     }
    0x00003db8 ldr r1, [r6, -0x84]                               |     r1 = *((r6 - 0x84));
    0x00003dbc ldr r0, [sp, 0x1c]                                |     r0 = var_1ch;
    0x00003dbe blx 0x1d78                                        |     fcn_00001d78 ();
    0x00003dc2 ldr r2, [r6, -0x7c]                               |     r2 = *((r6 - 0x7c));
    0x00003dc6 b 0x3d6e                                          |     goto label_15;
                                                                 | label_40:
    0x00003dc8 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00003dcc ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x00003dce cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003dd0 beq 0x3e70                                        |         goto label_58;
                                                                 |     }
    0x00003dd2 ldr r1, [r3]                                      |     r1 = *(r3);
    0x00003dd4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00003dd6 beq.w 0x3a26                                      |         goto label_14;
                                                                 |     }
    0x00003dda ldrsb r7, [r1, r2]                                |     r7 = *((r1 + r2));
    0x00003ddc cmp r7, 0                                         |     
                                                                 |     if (r7 < 0) {
    0x00003dde blt.w 0x3a26                                      |         goto label_14;
                                                                 |     }
    0x00003de2 ldrsb r1, [r1, r2]                                |     r1 = *((r1 + r2));
    0x00003de4 b 0x3820                                          |     goto label_16;
                                                                 | label_50:
    0x00003de6 ldr r1, [pc, 0x190]                               |     
    0x00003de8 ldr.w r0, [r8, 0xb4]                              |     r0 = *((r8 + 0xb4));
    0x00003dec add r1, pc                                        |     r1 = 0x7d6a;
    0x00003dee blx 0x1a08                                        |     r0 = fcn_00001a08 ();
    0x00003df2 mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00003df4 cbz r0, 0x3e04                                    |         
    0x00003df6 ldrb r2, [r0]                                     |         r2 = *(r0);
    0x00003df8 ldr.w r3, [r8, 0x44]                              |         r3 = *((r8 + 0x44));
    0x00003dfc cmp r2, 0x2f                                      |         
                                                                 |         if (r2 == 0x2f) {
    0x00003dfe beq 0x3eb0                                        |             goto label_59;
                                                                 |         }
    0x00003e00 cmp r3, 0xc8                                      |         
                                                                 |         if (r3 == 0xc8) {
    0x00003e02 beq 0x3ee2                                        |             goto label_60;
                                                                 |         }
                                                                 |     }
                                                                 | label_20:
    0x00003e04 ldr.w r0, [r8, 0x114]                             |     r0 = *((r8 + 0x114));
    0x00003e08 mov r1, r4                                        |     r1 = r4;
    0x00003e0a blx 0x1e78                                        |     r0 = loc_imp_apr_file_printf ()
    0x00003e0e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003e10 beq.w 0x386e                                      |         goto label_9;
                                                                 |     }
    0x00003e14 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003e16 ldr.w r1, [r8, 0x108]                             |     r1 = *((r8 + 0x108));
    0x00003e1a ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00003e1c cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00003e1e blt 0x3e8a                                        |         goto label_61;
                                                                 |     }
    0x00003e20 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00003e22 beq 0x3ef4                                        |         goto label_62;
                                                                 |     }
    0x00003e24 ldr r3, [r1]                                      |     r3 = *(r1);
    0x00003e26 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003e28 beq 0x3e9a                                        |         goto label_23;
                                                                 |     }
    0x00003e2a ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00003e2c cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00003e2e blt 0x3e9a                                        |         goto label_23;
                                                                 |     }
                                                                 | label_22:
    0x00003e30 cmp r3, 7                                         |     
    0x00003e32 ite le                                            |     
                                                                 |     if (r3 > 7) {
    0x00003e34 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 7) {
    0x00003e36 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_18:
    0x00003e38 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003e3a beq.w 0x386e                                      |         goto label_9;
                                                                 |     }
    0x00003e3e ldr r1, [pc, 0x13c]                               |     
    0x00003e40 movs r3, 8                                        |     r3 = 8;
    0x00003e42 str r0, [sp]                                      |     *(sp) = r0;
    0x00003e44 ldr r0, [pc, 0x138]                               |     
    0x00003e46 add r1, pc                                        |     r1 = 0x7dc8;
    0x00003e48 str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_4h_2]");
    0x00003e4c str r1, [sp, 8]                                   |     var_8h = r1;
    0x00003e4e movw r1, 0x695                                    |     r1 = 0x695;
    0x00003e52 add r0, pc                                        |     r0 = 0x7dd6;
    0x00003e54 blx 0x1db4                                        |     fcn_00001db4 ();
    0x00003e58 b 0x386e                                          |     goto label_9;
                                                                 | label_51:
    0x00003e5a mov r0, r4                                        |     r0 = r4;
    0x00003e5c bl 0x1fd0                                         |     fcn_00001fd0 (r0);
                                                                 | label_19:
    0x00003e60 cmp.w fp, 0x130                                   |     
    0x00003e64 itt eq                                            |     
                                                                 |     if (fp != 0x130) {
    0x00003e66 streq fp, [r8, 0x44]                              |         *((r8 + 0x44)) = fp;
                                                                 |     }
                                                                 |     if (fp == 0x130) {
    0x00003e6a mov.w fp, 0                                       |         
                                                                 |     }
    0x00003e6e b 0x386e                                          |     goto label_9;
                                                                 | label_58:
    0x00003e70 ldr.w r1, [r8, 8]                                 |     r1 = *((r8 + 8));
    0x00003e74 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00003e76 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003e78 beq.w 0x3b2c                                      |         goto label_17;
                                                                 |     }
    0x00003e7c ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00003e7e cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00003e80 blt.w 0x3b2c                                      |         goto label_17;
                                                                 |     }
    0x00003e84 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00003e86 ldrsb r1, [r3, r2]                                |     r1 = *((r3 + r2));
    0x00003e88 b 0x3820                                          |     goto label_16;
                                                                 |     if (r1 == 0) {
                                                                 | label_61:
    0x00003e8a cbnz r1, 0x3e9a                                   |         
    0x00003e8c ldr.w r3, [r8, 4]                                 |         r3 = *((r8 + 4));
                                                                 | label_21:
    0x00003e90 ldr r1, [r3, 0x60]                                |         r1 = *((r3 + 0x60));
                                                                 |         if (r1 != 0) {
    0x00003e92 cbnz r1, 0x3e9a                                   |             goto label_23;
                                                                 |         }
    0x00003e94 ldr.w r1, [r8, 8]                                 |         r1 = *((r8 + 8));
                                                                 | label_26:
    0x00003e98 adds r1, 0x10                                     |         r1 += 0x10;
                                                                 |     }
                                                                 | label_23:
    0x00003e9a ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00003e9c cmp r3, 7                                         |     
    0x00003e9e ite le                                            |     
                                                                 |     if (r3 > 7) {
    0x00003ea0 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 7) {
    0x00003ea2 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00003ea4 b 0x3e38                                          |     goto label_18;
                                                                 | label_57:
    0x00003ea6 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003eaa blx 0x1bd0                                        |     fcn_00001bd0 ();
    0x00003eae b 0x3e60                                          |     goto label_19;
                                                                 | label_59:
    0x00003eb0 cmp r3, 0xc8                                      |     
                                                                 |     if (r3 != 0xc8) {
    0x00003eb2 bne 0x3e04                                        |         goto label_20;
                                                                 |     }
    0x00003eb4 mov r0, r4                                        |     r0 = r4;
    0x00003eb6 bl 0x1fd0                                         |     fcn_00001fd0 (r0);
    0x00003eba mov r0, r4                                        |     r0 = r4;
    0x00003ebc blx 0x1b58                                        |     fcn_00001b58 ();
    0x00003ec0 ldr r3, [pc, 0xc0]                                |     
    0x00003ec2 ldr r1, [pc, 0xc4]                                |     
    0x00003ec4 ldr.w r0, [r8, 0xb0]                              |     r0 = *((r8 + 0xb0));
    0x00003ec8 add r3, pc                                        |     r3 = 0x7e50;
    0x00003eca str.w fp, [r8, 0x48]                              |     __asm ("str.w fp, [r8, 0x48]");
    0x00003ece add r1, pc                                        |     r1 = 0x7e5c;
    0x00003ed0 str.w r3, [r8, 0x4c]                              |     __asm ("str.w r3, [r8, 0x4c]");
    0x00003ed4 blx 0x1af8                                        |     fcn_00001af8 ();
    0x00003ed8 mov r1, r8                                        |     r1 = r8;
    0x00003eda mov r0, r5                                        |     r0 = r5;
    0x00003edc blx 0x1aa4                                        |     fcn_00001aa4 ();
    0x00003ee0 b 0x386e                                          |     goto label_9;
                                                                 | label_60:
    0x00003ee2 mov r0, r4                                        |     r0 = r4;
    0x00003ee4 mov.w fp, 0x12e                                   |     
    0x00003ee8 bl 0x1fd0                                         |     fcn_00001fd0 (r0);
    0x00003eec mov r0, r4                                        |     r0 = r4;
    0x00003eee blx 0x1b58                                        |     fcn_00001b58 ();
    0x00003ef2 b 0x386e                                          |     goto label_9;
                                                                 | label_62:
    0x00003ef4 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x00003ef8 ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
                                                                 |     if (r1 == 0) {
    0x00003efa cbz r1, 0x3f40                                    |         goto label_63;
                                                                 |     }
    0x00003efc ldr r4, [r1]                                      |     r4 = *(r1);
    0x00003efe cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00003f00 beq 0x3e90                                        |         goto label_21;
                                                                 |     }
    0x00003f02 ldrsb r3, [r4, r2]                                |     r3 = *((r4 + r2));
    0x00003f04 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00003f06 bge 0x3e30                                        |         goto label_22;
                                                                 |     }
    0x00003f08 b 0x3e9a                                          |     goto label_23;
                                                                 | label_56:
    0x00003f0a ldr r1, [pc, 0x80]                                |     
    0x00003f0c ldr r2, [sp, 0x2c]                                |     r2 = n;
    0x00003f0e ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003f12 add r1, pc                                        |     r1 = 0x7ea4;
    0x00003f14 blx 0x1e84                                        |     strncmp (r0, r1, r2);
    0x00003f16 vqshl.s32 d14, d8, 0x16                           |     __asm ("vqshl.s32 d14, d8, 0x16");
                                                                 | label_54:
    0x00003f1a ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00003f1c ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00003f1e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003f20 beq.w 0x3cfe                                      |         goto label_24;
                                                                 |     }
    0x00003f24 ldr r1, [pc, 0x68]                                |     
    0x00003f26 ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00003f28 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003f2c add r1, pc                                        |     r1 = 0x7ec0;
    0x00003f2e blx 0x1e84                                        |     strncmp (r0, r1, r2);
    0x00003f32 b 0x3cfe                                          |     goto label_24;
                                                                 | label_52:
    0x00003f34 ldr r2, [pc, 0x5c]                                |     
    0x00003f36 add r2, pc                                        |     r2 = 0x7ece;
    0x00003f38 mov r1, r2                                        |     r1 = r2;
    0x00003f3a b 0x3c8c                                          |     goto label_25;
                                                                 | label_42:
    0x00003f3c blx 0x1a74                                        |     fcn_00001a74 ();
                                                                 | label_63:
    0x00003f40 ldr.w r1, [r8, 8]                                 |     r1 = *((r8 + 8));
    0x00003f44 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00003f46 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003f48 beq 0x3e98                                        |         goto label_26;
                                                                 |     }
    0x00003f4a ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00003f4c cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00003f4e bge.w 0x3e30                                      |         goto label_22;
                                                                 |     }
    0x00003f52 b 0x3e98                                          |     goto label_26;
                                                                 | }

[*] Function printf used 3 times mod_cgid.so