[*] 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-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_cgid.so @ 0x35e4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.000035e4 ()                                      | void fcn_000035e4 (int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_c8h, int16_t arg_2040h, char * s1, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h_3;
                                                                 |     int16_t var_4h_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     char * s2;
                                                                 |     int16_t var_24h_2;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch_2;
                                                                 |     int16_t var_30h_2;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     char * var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_0h_2;
                                                                 |     int16_t var_4ch_2;
                                                                 |     int16_t var_50h_2;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     size_t var_60h;
                                                                 |     int16_t var_1ch_2;
                                                                 |     int16_t var_20h_2;
                                                                 |     int16_t var_24h;
                                                                 |     size_t n;
                                                                 |     int16_t var_2ch_3;
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int32_t var_ch_3;
                                                                 |     int32_t var_ch_4;
                                                                 |     int32_t var_14h_2;
                                                                 |     int16_t var_48h_2;
                                                                 |     int32_t var_18h_2;
                                                                 |     int16_t var_50h_3;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h_2;
                                                                 |     int16_t var_38h_2;
                                                                 |     int16_t var_3ch_2;
                                                                 |     int16_t var_44h_2;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_6ch;
                                                                 |     int32_t var_70h;
                                                                 |     int32_t var_70h_2;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_7ch;
                                                                 |     int16_t var_84h;
                                                                 |     int16_t var_88h;
                                                                 |     int16_t var_90h;
                                                                 |     int16_t var_94h;
                                                                 |     int16_t var_c8h;
                                                                 |     int16_t var_9ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000035e4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x000035e8 mov r8, r2                                        |     r8 = r2;
    0x000035ea ldr r2, [pc, 0x1e4]                               |     
    0x000035ec mov r4, r3                                        |     r4 = r3;
    0x000035ee sub sp, 0xa4                                      |     
    0x000035f0 mov r5, r1                                        |     r5 = r1;
    0x000035f2 ldr r3, [pc, 0x1e0]                               |     r3 = *(0x37d6);
    0x000035f4 add.w sl, sp, 0x48                                |     sl += var_48h;
    0x000035f8 add r2, pc                                        |     r2 = 0x6dce;
    0x000035fa movs r1, 0                                        |     r1 = 0;
    0x000035fc mov r6, r0                                        |     r6 = r0;
    0x000035fe mov r0, sl                                        |     r0 = sl;
    0x00003600 ldr r3, [r2, r3]                                  |     
    0x00003602 movs r2, 0x54                                     |     r2 = 0x54;
    0x00003604 ldr r7, [sp, 0xc8]                                |     r7 = *(arg_c8h);
    0x00003606 ldr r3, [r3]                                      |     r3 = imp.__aeabi_unwind_cpp_pr0;
    0x00003608 str r3, [sp, 0x9c]                                |     var_9ch = r3;
    0x0000360a mov.w r3, 0                                       |     r3 = 0;
    0x0000360e blx 0x1d60                                        |     fcn_00001d60 ();
    0x00003612 mov r0, r5                                        |     r0 = r5;
    0x00003614 blx 0x1ba4                                        |     fcn_00001ba4 ();
    0x00003616 invalid                                           |     
    0x0000361a adds r1, 0                                        |     r1 += 0;
    0x0000361c ldr r3, [r3]                                      |     r3 = *(r3);
    0x0000361e str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00003620 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003622 beq.w 0x375a                                      |         goto label_38;
                                                                 |     }
    0x00003626 mov r3, r0                                        |     r3 = r0;
    0x00003628 ldr r0, [r0]                                      |     r0 = *(r0);
    0x0000362a ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x0000362c ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x0000362e add r3, sp, 0x58                                  |     r3 += var_58h;
    0x00003630 stm r3!, {r0, r1, r2}                             |     *(r3!) = r0;
                                                                 |     *((r3! + 4)) = r1;
                                                                 |     *((r3! + 8)) = r2;
                                                                 | label_1:
    0x00003632 ldr r3, [pc, 0x1a4]                               |     
    0x00003634 movs r2, 0                                        |     r2 = 0;
    0x00003636 str r7, [sp, 0x48]                                |     var_48h = r7;
    0x00003638 add r3, pc                                        |     
    0x0000363a str r2, [sp, 0x54]                                |     var_54h = r2;
    0x0000363c ldr r3, [r3, 0x18]                                |     
    0x0000363e str r3, [sp, 0x50]                                |     var_50h = r3;
    0x00003640 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00003642 ldr r3, [r3, 0x28]                                |     r3 = *(0x6e56);
    0x00003644 str r3, [sp, 0x4c]                                |     var_4ch = r3;
    0x00003646 ldr r3, [r4]                                      |     r3 = *(r4);
                                                                 |     if (r3 == 0) {
    0x00003648 cbz r3, 0x365c                                    |         goto label_39;
                                                                 |     }
    0x0000364a mov r2, r4                                        |     r2 = r4;
    0x0000364c movs r3, 1                                        |     r3 = 1;
                                                                 |     do {
    0x0000364e ldr r1, [r2, 4]!                                  |         r1 = *((r2 += 4));
    0x00003652 mov r0, r3                                        |         r0 = r3;
    0x00003654 adds r3, 1                                        |         r3++;
    0x00003656 cmp r1, 0                                         |         
    0x00003658 bne 0x364e                                        |         
                                                                 |     } while (r1 != 0);
    0x0000365a str r0, [sp, 0x54]                                |     var_54h = r0;
                                                                 | label_39:
    0x0000365c ldr.w r3, [r5, 0xe8]                              |     r3 = *((r5 + 0xe8));
    0x00003660 mov r0, r3                                        |     r0 = r3;
    0x00003662 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00003664 blx 0x1cd0                                        |     fcn_00001cd0 ();
    0x00003668 str r0, [sp, 0x64]                                |     var_64h = r0;
    0x0000366a mov r7, r0                                        |     r7 = r0;
    0x0000366c mov r0, r8                                        |     r0 = r8;
    0x0000366e blx 0x1cd0                                        |     fcn_00001cd0 ();
    0x00003672 ldr.w fp, [r5, 0xe4]                              |     fp = *((r5 + 0xe4));
    0x00003676 mov sb, r0                                        |     sb = r0;
    0x00003678 str r0, [sp, 0x68]                                |     var_68h = r0;
    0x0000367a mov r0, fp                                        |     r0 = fp;
    0x0000367c blx 0x1cd0                                        |     fcn_00001cd0 ();
    0x00003680 ldr.w r2, [r5, 0xf4]                              |     r2 = *((r5 + 0xf4));
    0x00003684 mov r3, r0                                        |     r3 = r0;
    0x00003686 ldr r1, [r5, 8]                                   |     r1 = *((r5 + 8));
    0x00003688 str r0, [sp, 0x6c]                                |     var_6ch = r0;
    0x0000368a ldr r1, [r1, 0x14]                                |     r1 = *((r1 + 0x14));
    0x0000368c cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0000368e beq 0x3734                                        |         goto label_40;
                                                                 |     }
    0x00003690 strd r0, r1, [sp, 0x34]                           |     __asm ("strd r0, r1, [var_38h_2]");
    0x00003694 mov r0, r2                                        |     r0 = r2;
    0x00003696 str r2, [sp, 0x3c]                                |     var_3ch_2 = r2;
    0x00003698 blx 0x1cd0                                        |     fcn_00001cd0 ();
    0x0000369c ldr r1, [sp, 0x38]                                |     r1 = var_38h_2;
    0x0000369e ldr r3, [sp, 0x34]                                |     r3 = var_34h_2;
    0x000036a0 strd r0, r1, [sp, 0x70]                           |     __asm ("strd r0, r1, [var_70h]");
    0x000036a4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000036a6 beq 0x3738                                        |         goto label_41;
                                                                 |     }
    0x000036a8 ldr r2, [sp, 0x3c]                                |     r2 = var_3ch_2;
    0x000036aa mov r1, r5                                        |     r1 = r5;
    0x000036ac str r0, [sp, 0x20]                                |     var_50h_3 = r0;
    0x000036ae mov r0, r6                                        |     r0 = r6;
    0x000036b0 strd sb, fp, [sp, 0x10]                           |     __asm ("strd sb, fp, [var_0hx10]");
    0x000036b4 strd r3, r2, [sp, 0x18]                           |     __asm ("strd r3, r2, [var_48h_2]");
    0x000036b8 movs r2, 0x54                                     |     r2 = 0x54;
    0x000036ba ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x000036bc str r2, [sp]                                      |     *(sp) = r2;
    0x000036be movs r2, 5                                        |     r2 = 5;
    0x000036c0 strd r7, r8, [sp, 8]                              |     __asm ("strd r7, r8, [var_8h]");
    0x000036c4 str r3, [sp, 4]                                   |     var_4h = r3;
    0x000036c6 mov r3, sl                                        |     r3 = sl;
    0x000036c8 bl 0x2450                                         |     r0 = fcn_00002450 (r0, r1);
    0x000036cc mov sl, r0                                        |     sl = r0;
                                                                 | label_0:
    0x000036ce cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x000036d2 bne 0x3718                                        |         goto label_2;
                                                                 |     }
    0x000036d4 ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x000036d6 cmp r3, 0                                         |     
    0x000036d8 itttt gt                                          |     
                                                                 |     if (r3 <= 0) {
    0x000036da subgt r4, 4                                       |         r4 -= 4;
                                                                 |     }
                                                                 |     if (r3 <= 0) {
    0x000036dc movgt r7, sl                                      |         r7 = sl;
                                                                 |     }
                                                                 |     if (r3 <= 0) {
    0x000036de addgt sb, sp, 0x44                                |         sb += var_44h_2;
                                                                 |     }
                                                                 |     if (r3 > 0) {
    0x000036e2 mov.w r8, 4                                       |         r8 = 4;
                                                                 |     }
                                                                 |     if (r3 > 0) {
    0x000036e6 bgt 0x36f2                                        |         goto label_42;
                                                                 |     }
    0x000036e8 b 0x376a                                          |     goto label_43;
                                                                 |     do {
    0x000036ea ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x000036ec adds r7, 1                                        |         r7++;
    0x000036ee cmp r3, r7                                        |         
                                                                 |         if (r3 <= r7) {
    0x000036f0 ble 0x376a                                        |             goto label_43;
                                                                 |         }
                                                                 | label_42:
    0x000036f2 ldr fp, [r4, 4]!                                  |         fp = *((r4 += 4));
    0x000036f6 mov r0, fp                                        |         r0 = fp;
    0x000036f8 blx 0x1cd0                                        |         fcn_00001cd0 ();
    0x000036fc mov r3, sb                                        |         r3 = sb;
    0x000036fe strd fp, r0, [sp, 4]                              |         __asm ("strd fp, r0, [var_4h]");
    0x00003702 str r0, [sp, 0x44]                                |         var_44h_2 = r0;
    0x00003704 movs r2, 2                                        |         r2 = 2;
    0x00003706 mov r1, r5                                        |         r1 = r5;
    0x00003708 mov r0, r6                                        |         r0 = r6;
    0x0000370a str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x0000370e bl 0x2450                                         |         r0 = fcn_00002450 (r0, r1);
    0x00003712 cmp r0, 0                                         |         
    0x00003714 beq 0x36ea                                        |         
                                                                 |     } while (r0 == 0);
    0x00003716 mov sl, r0                                        |     sl = r0;
                                                                 | label_2:
    0x00003718 ldr r2, [pc, 0xc0]                                |     
    0x0000371a ldr r3, [pc, 0xb8]                                |     r3 = *(0x37d6);
    0x0000371c add r2, pc                                        |     r2 = 0x6efc;
    0x0000371e ldr r3, [r2, r3]                                  |     r3 = *(0x6efc);
    0x00003720 ldr r2, [r3]                                      |     r2 = *(0x6efc);
    0x00003722 ldr r3, [sp, 0x9c]                                |     r3 = var_9ch;
    0x00003724 eors r2, r3                                       |     r2 ^= r3;
    0x00003726 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x0000372a bne 0x37ca                                        |         goto label_44;
                                                                 |     }
    0x0000372c mov r0, sl                                        |     r0 = sl;
    0x0000372e add sp, 0xa4                                      |     
    0x00003730 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_40:
    0x00003734 strd r2, r1, [sp, 0x70]                           |     __asm ("strd r2, r1, [var_70h]");
                                                                 | label_41:
    0x00003738 strd fp, r3, [sp, 0x14]                           |     __asm ("strd fp, r3, [var_48h_2]");
    0x0000373c movs r2, 0x54                                     |     r2 = 0x54;
    0x0000373e ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00003740 mov r1, r5                                        |     r1 = r5;
    0x00003742 str r2, [sp]                                      |     *(sp) = r2;
    0x00003744 mov r0, r6                                        |     r0 = r6;
    0x00003746 movs r2, 4                                        |     r2 = 4;
    0x00003748 strd r8, sb, [sp, 0xc]                            |     __asm ("strd r8, sb, [var_ch_3]");
    0x0000374c str r3, [sp, 4]                                   |     var_4h = r3;
    0x0000374e mov r3, sl                                        |     r3 = sl;
    0x00003750 str r7, [sp, 8]                                   |     var_8h = r7;
    0x00003752 bl 0x2450                                         |     r0 = fcn_00002450 (r0, r1);
    0x00003756 mov sl, r0                                        |     sl = r0;
    0x00003758 b 0x36ce                                          |     goto label_0;
                                                                 | label_38:
    0x0000375a ldr r3, [pc, 0x84]                                |     
    0x0000375c add r3, pc                                        |     r3 = 0x6f42;
    0x0000375e ldm.w r3, {r0, r1, r2}                            |     r0 = *(r3);
                                                                 |     r1 = *((r3 + 4));
                                                                 |     r2 = *((r3 + 8));
    0x00003762 add r3, sp, 0x58                                  |     r3 += var_58h;
    0x00003764 stm.w r3, {r0, r1, r2}                            |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
                                                                 |     *((r3 + 8)) = r2;
    0x00003768 b 0x3632                                          |     goto label_1;
                                                                 | label_43:
    0x0000376a ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000376c ldr r2, [r3, 0x20]                                |     r2 = *((r3 + 0x20));
                                                                 |     if (r2 != 0) {
    0x0000376e cbz r2, 0x377c                                    |         
    0x00003770 ldm.w r2, {r0, r1}                                |         r0 = *(r2);
                                                                 |         r1 = *((r2 + 4));
    0x00003774 movs r2, 1                                        |         r2 = 1;
    0x00003776 add r3, sp, 0x7c                                  |         r3 += var_7ch;
    0x00003778 stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
                                                                 |     }
    0x0000377c ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x0000377e ldr r3, [r3, 0x24]                                |     r3 = *((r3 + 0x24));
    0x00003780 str r2, [sp, 0x78]                                |     var_78h = r2;
    0x00003782 mov r2, r3                                        |     r2 = r3;
                                                                 |     if (r3 != 0) {
    0x00003784 cbz r3, 0x3792                                    |         
    0x00003786 ldm.w r3, {r0, r1}                                |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
    0x0000378a movs r2, 1                                        |         r2 = 1;
    0x0000378c add r3, sp, 0x88                                  |         r3 += var_88h;
    0x0000378e stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
                                                                 |     }
    0x00003792 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00003794 ldr r3, [r3, 0x28]                                |     r3 = *((r3 + 0x28));
    0x00003796 str r2, [sp, 0x84]                                |     var_84h = r2;
                                                                 |     if (r3 != 0) {
    0x00003798 cbz r3, 0x37a6                                    |         
    0x0000379a ldm.w r3, {r0, r1}                                |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
    0x0000379e add r3, sp, 0x94                                  |         r3 += var_94h;
    0x000037a0 stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
    0x000037a4 movs r3, 1                                        |         r3 = 1;
                                                                 |     }
    0x000037a6 add r4, sp, 0x78                                  |     r4 += var_78h;
    0x000037a8 str r3, [sp, 0x90]                                |     var_90h = r3;
    0x000037aa b 0x37b6                                          |     
                                                                 |     while (r0 < 0) {
    0x000037ac blx 0x1d3c                                        |         r0 = fcn_00001d3c ();
    0x000037b0 ldr r3, [r0]                                      |         r3 = *(r0);
    0x000037b2 cmp r3, 4                                         |         
                                                                 |         if (r3 != 4) {
    0x000037b4 bne 0x37c6                                        |             goto label_45;
                                                                 |         }
    0x000037b6 movs r2, 0x24                                     |         r2 = 0x24;
    0x000037b8 mov r1, r4                                        |         r1 = r4;
    0x000037ba mov r0, r6                                        |         r0 = r6;
    0x000037bc blx 0x1d9c                                        |         r0 = fcn_00001d9c ();
    0x000037c0 cmp r0, 0                                         |         
    0x000037c2 blt 0x37ac                                        |         
                                                                 |     }
    0x000037c4 b 0x3718                                          |     goto label_2;
                                                                 | label_45:
    0x000037c6 mov sl, r3                                        |     sl = r3;
    0x000037c8 b 0x3718                                          |     goto label_2;
                                                                 | label_44:
    0x000037ca blx 0x1b20                                        |     fcn_00001b20 ();
    0x000037ce nop                                               |     
    0x000037d0 adds r7, 0xdc                                     |     r7 += 0xdc;
    0x000037d2 movs r0, r0                                       |     
    0x000037d4 lsls r0, r1, 8                                    |     r0 = r1 << 8;
    0x000037d6 movs r0, r0                                       |     
    0x000037d8 subs r2, 0x14                                     |     r2 -= 0x14;
    0x000037da movs r0, r0                                       |     
    0x000037dc adds r6, 0xb8                                     |     r6 += 0xb8;
    0x000037de movs r0, r0                                       |     
    0x000037e0 subs r0, 0xa4                                     |     r0 -= 0xa4;
    0x000037e2 movs r0, r0                                       |     
    0x000037e4 ldr.w r2, [pc, 0x478]                             |     
    0x000037e8 ldr.w r3, [pc, 0x478]                             |     r3 = *(0x3c64);
    0x000037ec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000037f0 mov r7, r0                                        |     r7 = r0;
    0x000037f2 vpush {d8}                                        |     __asm ("vpush {d8}");
    0x000037f6 add r2, pc                                        |     r2 = 0x745a;
    0x000037f8 sub.w sp, sp, 0x20c0                              |     
    0x000037fc sub sp, 0xc                                       |     
    0x000037fe ldr.w r1, [pc, 0x468]                             |     
    0x00003802 ldr r3, [r2, r3]                                  |     
    0x00003804 add.w r0, sp, 0x20c0                              |     r0 += s1;
    0x00003808 ldr.w r4, [r7, 0xc8]                              |     r4 = *((r7 + 0xc8));
    0x0000380c adds r0, 4                                        |     r0 += 4;
    0x0000380e ldr.w sb, [pc, 0x45c]                             |     
    0x00003812 add r1, pc                                        |     r1 = 0x7480;
    0x00003814 ldr r3, [r3]                                      |     r3 = *(0x745a);
    0x00003816 str r3, [r0]                                      |     *(r0) = r3;
    0x00003818 mov.w r3, 0                                       |     r3 = 0;
    0x0000381c mov r0, r4                                        |     r0 = r4;
    0x0000381e add sb, pc                                        |     sb = 0x7490;
    0x00003820 blx 0x19fc                                        |     r0 = strcmp (r0, r1);
                                                                 |     if (r0 != 0) {
    0x00003824 cbz r0, 0x3838                                    |         
    0x00003826 ldr.w r1, [pc, 0x448]                             |         
    0x0000382a mov r0, r4                                        |         r0 = r4;
    0x0000382c add r1, pc                                        |         r1 = 0x74a2;
    0x0000382e blx 0x19fc                                        |         r0 = strcmp (r0, r1);
    0x00003832 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00003834 bne.w 0x3c4e                                      |             goto label_46;
                                                                 |         }
                                                                 |     }
    0x00003838 ldr.w r3, [pc, 0x438]                             |     
    0x0000383c ldr r1, [r7, 8]                                   |     r1 = *((r7 + 8));
    0x0000383e ldr.w r2, [r7, 0x100]                             |     r2 = *((r7 + 0x100));
    0x00003842 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00003846 ldr r1, [r1, 0x18]                                |     r1 = *((r1 + 0x18));
    0x00003848 ldr r0, [r7, 0x2c]                                |     r0 = *((r7 + 0x2c));
    0x0000384a str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0000384c ldr r3, [r3, 8]                                   |     r3 = *(0x3c7c);
    0x0000384e ldr.w fp, [r1, r3, lsl 2]                         |     offset_0 = r3 << 2;
                                                                 |     fp = *((r1 + offset_0));
    0x00003852 ldr.w r1, [pc, 0x424]                             |     
    0x00003856 ldr.w r5, [r2, r3, lsl 2]                         |     offset_1 = r3 << 2;
                                                                 |     r5 = *((r2 + offset_1));
    0x0000385a add r1, pc                                        |     r1 = 0x74d8;
    0x0000385c blx 0x19fc                                        |     strcmp (r0, r1);
    0x00003860 ldr.w r4, [r7, 0xe8]                              |     r4 = *((r7 + 0xe8));
    0x00003864 mov r6, r0                                        |     r6 = r0;
    0x00003866 movs r1, 0x2f                                     |     r1 = 0x2f;
    0x00003868 mov r0, r4                                        |     r0 = r4;
    0x0000386a blx 0x1e54                                        |     r0 = fcn_00001e54 ();
    0x0000386e cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003870 beq.w 0x39ce                                      |         goto label_47;
                                                                 |     }
    0x00003874 adds r0, 1                                        |     r0++;
                                                                 | label_3:
    0x00003876 ldr.w r1, [pc, 0x404]                             |     
    0x0000387a movs r2, 4                                        |     r2 = 4;
    0x0000387c add r1, pc                                        |     r1 = 0x74fe;
    0x0000387e blx 0x1f48                                        |     close (r0);
    0x00003882 str r0, [sp, 0x30]                                |     var_0h = r0;
    0x00003884 mov r0, r7                                        |     r0 = r7;
    0x00003886 blx 0x1a78                                        |     r0 = fcn_00001a78 ();
    0x0000388a lsls r3, r0, 0x1c                                 |     r3 = r0 << 0x1c;
    0x0000388c bpl 0x3972                                        |     
                                                                 |     while (r0 == 0) {
    0x0000388e ldr r3, [sp, 0x30]                                |         r3 = var_0h;
    0x00003890 orrs r3, r6                                       |         r3 |= r6;
                                                                 |         if (r3 == r6) {
    0x00003892 beq.w 0x3bee                                      |             goto label_48;
                                                                 |         }
    0x00003896 ldr.w r3, [r7, 0x16c]                             |         r3 = *((r7 + 0x16c));
    0x0000389a cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000389c beq.w 0x3bf4                                      |             goto label_49;
                                                                 |         }
    0x000038a0 cmp r3, 2                                         |         
                                                                 |         if (r3 == 2) {
    0x000038a2 beq.w 0x3c2c                                      |             goto label_50;
                                                                 |         }
    0x000038a4 strh r3, [r0, 0xe]                                |         *((r0 + 0xe)) = r3;
    0x000038a6 ldr.w r3, [r7, 0xf8]                              |         r3 = *((r7 + 0xf8));
    0x000038aa cmp r3, 1                                         |         
                                                                 |         if (r3 == 1) {
    0x000038ac bne 0x38bc                                        |             
    0x000038ae ldr.w r3, [r7, 0xf0]                              |             r3 = *((r7 + 0xf0));
                                                                 |             if (r3 == 0) {
    0x000038b2 cbz r3, 0x38bc                                    |                 goto label_51;
                                                                 |             }
    0x000038b4 ldrb r3, [r3]                                     |             r3 = *(r3);
    0x000038b6 cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x000038b8 bne.w 0x3c34                                      |                 goto label_52;
                                                                 |             }
                                                                 |         }
                                                                 | label_51:
    0x000038bc mov r0, r7                                        |         r0 = r7;
    0x000038be blx 0x1b08                                        |         fcn_00001b08 ();
    0x000038c2 mov r0, r7                                        |         r0 = r7;
    0x000038c4 blx 0x1e24                                        |         fcn_00001e24 ();
    0x000038c8 add r3, sp, 0x48                                  |         r3 += var_48h_2;
    0x000038ca ldr.w r1, [r7, 0xbc]                              |         r1 = *((r7 + 0xbc));
    0x000038ce ldr r0, [r7]                                      |         r0 = *(r7);
    0x000038d0 str r3, [sp, 0x34]                                |         var_4h = r3;
    0x000038d2 blx 0x1ef4                                        |         loc_imp_ap_hook_get_suexec_identity ();
    0x000038d6 ldr r3, [sp, 0x34]                                |         r3 = var_4h;
    0x000038d8 mov r6, r0                                        |         r6 = r0;
    0x000038da mov r2, fp                                        |         r2 = fp;
    0x000038dc mov r1, r7                                        |         r1 = r7;
    0x000038de sub.w sl, r3, 0xc                                 |         sl = r3 - 0xc;
    0x000038e2 mov r0, sl                                        |         r0 = sl;
    0x000038e4 bl 0x2290                                         |         r0 = fcn_00002290 (r0, r1, r2, r3);
    0x000038e8 mov r8, r0                                        |         r8 = r0;
    0x000038ea cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x000038ec bne 0x39a2                                        |             goto label_9;
                                                                 |         }
    0x000038ee mov r3, r6                                        |         r3 = r6;
    0x000038f0 movs r1, 1                                        |         r1 = 1;
    0x000038f2 add r6, sp, 0xc8                                  |         r6 += var_c8h;
    0x000038f4 str r1, [sp]                                      |         *(sp) = r1;
    0x000038f6 mov r2, r4                                        |         r2 = r4;
    0x000038f8 ldr r0, [r6, -0x8c]                               |         r0 = *((r6 - 0x8c));
    0x000038fc mov r1, r7                                        |         r1 = r7;
    0x000038fe bl 0x35e4                                         |         r0 = fcn_000035e4 (r0, r1, r2, r3, r4, r5, r6);
    0x00003902 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00003904 bne.w 0x3b2e                                      |             goto label_53;
                                                                 |         }
                                                                 | label_7:
    0x00003908 movs r1, 0xc                                      |         r1 = 0xc;
    0x0000390a ldr r0, [r7]                                      |         r0 = *(r7);
    0x0000390c blx 0x1c04                                        |         r0 = fcn_00001c04 ();
    0x00003910 mov r2, r0                                        |         r2 = r0;
    0x00003912 str.w fp, [r0, 4]                                 |         __asm ("str.w fp, [r0, 4]");
    0x00003916 mov r4, r0                                        |         r4 = r0;
    0x00003918 mov r1, fp                                        |         r1 = fp;
    0x0000391a mov r0, r7                                        |         r0 = r7;
    0x0000391c str r7, [r2], 8                                   |         *(r2) = r7;
                                                                 |         r2 += 8;
    0x00003920 bl 0x3540                                         |         r0 = fcn_00003540 (r0, r1, r2);
    0x00003924 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00003926 beq 0x39d2                                        |             goto label_54;
                                                                 |         }
    0x00003928 ldr r3, [sp, 0x24]                                |         r3 = var_24h;
    0x0000392a ldr.w r1, [r7, 0x108]                             |         r1 = *((r7 + 0x108));
    0x0000392e ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x00003930 cmp r2, 0                                         |         
                                                                 |         if (r2 < 0) {
    0x00003932 blt.w 0x3b50                                      |             goto label_55;
                                                                 |         }
    0x00003936 cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x00003938 beq.w 0x3ef2                                      |             goto label_56;
                                                                 |         }
                                                                 | label_14:
    0x0000393c ldr r3, [r1]                                      |         r3 = *(r1);
    0x0000393e cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00003940 beq.w 0x3b54                                      |             goto label_12;
                                                                 |         }
    0x00003944 ldrsb r3, [r3, r2]                                |         r3 = *((r3 + r2));
    0x00003946 cmp r3, 0                                         |         
                                                                 |         if (r3 < 0) {
    0x00003948 blt.w 0x3b54                                      |             goto label_12;
                                                                 |         }
                                                                 | label_16:
    0x0000394c cmp r3, 6                                         |         
    0x0000394e ite le                                            |         
                                                                 |         if (r3 > 6) {
    0x00003950 movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 6) {
    0x00003952 movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 | label_8:
    0x00003954 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00003956 beq 0x39e6                                        |             goto label_57;
                                                                 |         }
    0x00003958 ldr r3, [pc, 0x324]                               |         
    0x0000395a movw r1, 0x5cd                                    |         r1 = 0x5cd;
    0x0000395e strd r0, r7, [sp]                                 |         __asm ("strd r0, r7, [sp]");
    0x00003962 ldr r0, [pc, 0x320]                               |         
    0x00003964 add r3, pc                                        |         r3 = 0x75e8;
    0x00003966 str r3, [sp, 8]                                   |         var_50h_2 = r3;
    0x00003968 movs r3, 7                                        |         r3 = 7;
    0x0000396a add r0, pc                                        |         r0 = 0x75f4;
    0x0000396c blx 0x1e6c                                        |         fcn_00001e6c ();
    0x00003970 b 0x39e6                                          |         goto label_57;
    0x00003972 ldr r1, [pc, 0x314]                               |         
    0x00003974 ldr.w r0, [r7, 0xc0]                              |         r0 = *((r7 + 0xc0));
    0x00003978 add r1, pc                                        |         r1 = 0x7606;
    0x0000397a blx 0x1ab4                                        |         r0 = fcn_00001ab4 ();
                                                                 |         if (r0 == 0) {
    0x0000397e cbz r0, 0x398c                                    |             goto label_58;
                                                                 |         }
    0x00003980 ldr r1, [pc, 0x308]                               |         
    0x00003982 add r1, pc                                        |         r1 = 0x7612;
    0x00003984 blx 0x1bbc                                        |         r0 = fcn_00001bbc ();
    0x00003988 cmp r0, 0                                         |         
    0x0000398a beq 0x388e                                        |         
                                                                 |     }
                                                                 | label_58:
    0x0000398c ldr r4, [pc, 0x300]                               |     
    0x0000398e movs r3, 0                                        |     r3 = 0;
    0x00003990 add r4, pc                                        |     r4 = 0x7624;
                                                                 | label_10:
    0x00003992 movw r2, 0x193                                    |     r2 = 0x193;
                                                                 | label_11:
    0x00003996 mov r1, fp                                        |     r1 = fp;
    0x00003998 mov r0, r7                                        |     r0 = r7;
    0x0000399a str r4, [sp]                                      |     *(sp) = r4;
    0x0000399c bl 0x216c                                         |     r0 = fcn_0000216c (r0, r1, r2, r3, r4);
    0x000039a0 mov r8, r0                                        |     r8 = r0;
                                                                 | label_9:
    0x000039a2 ldr r2, [pc, 0x2f0]                               |     
    0x000039a4 add.w r1, sp, 0x20c0                              |     r1 += s1;
    0x000039a8 ldr r3, [pc, 0x2b8]                               |     r3 = *(0x3c64);
    0x000039aa adds r1, 4                                        |     r1 += 4;
    0x000039ac add r2, pc                                        |     r2 = 0x7646;
    0x000039ae ldr r3, [r2, r3]                                  |     r3 = *(0x7646);
    0x000039b0 ldr r2, [r3]                                      |     r2 = *(0x7646);
    0x000039b2 ldr r3, [r1]                                      |     r3 = *(r1);
    0x000039b4 eors r2, r3                                       |     r2 ^= r3;
    0x000039b6 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000039ba bne.w 0x4056                                      |         goto label_59;
                                                                 |     }
    0x000039be mov r0, r8                                        |     r0 = r8;
    0x000039c0 add.w sp, sp, 0x20c0                              |     
    0x000039c4 add sp, 0xc                                       |     
    0x000039c6 vpop {d8}                                         |     __asm ("vpop {d8}");
    0x000039ca pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_47:
    0x000039ce mov r0, r4                                        |     r0 = r4;
    0x000039d0 b 0x3876                                          |     goto label_3;
                                                                 | label_54:
    0x000039d2 ldr r3, [pc, 0x2c4]                               |     r3 = *(0x3c9a);
    0x000039d4 mov r1, r4                                        |     r1 = r4;
    0x000039d6 ldr r2, [pc, 0x2c4]                               |     
    0x000039d8 ldr r0, [r7]                                      |     r0 = *(r7);
    0x000039da ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000039de add r2, pc                                        |     r2 = 0x7680;
    0x000039e0 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x000039e2 blx 0x1bd4                                        |     fcn_00001bd4 ();
                                                                 | label_57:
    0x000039e6 ldr r0, [sp, 0x34]                                |     r0 = var_4h;
    0x000039e8 mov r1, sl                                        |     r1 = sl;
    0x000039ea ldr r3, [r7]                                      |     r3 = *(r7);
    0x000039ec movs r2, 1                                        |     r2 = 1;
    0x000039ee subs r0, 8                                        |     r0 -= 8;
    0x000039f0 blx 0x1a84                                        |     fcn_00001a84 ();
    0x000039f4 ldrd r2, r3, [r5]                                 |     __asm ("ldrd r2, r3, [r5]");
    0x000039f8 cmp r2, 1                                         |     
    0x000039fa sbcs r1, r3, 0                                    |     __asm ("sbcs r1, r3, 0");
    0x000039fe itett lt                                          |     
                                                                 |     if (r2 >= 1) {
    0x00003a00 ldrlt r3, [r7, 8]                                 |         r3 = *((r7 + 8));
                                                                 |     }
                                                                 |     if (r2 < 1) {
    0x00003a02 ldrge r0, [r6, -0x88]                             |         r0 = *((r6 - 0x88));
                                                                 |     }
                                                                 |     if (r2 >= 1) {
    0x00003a06 ldrlt r0, [r6, -0x88]                             |         r0 = *((r6 - 0x88));
                                                                 |     }
                                                                 |     if (r2 < 1) {
    0x00003a0a ldrd r2, r3, [r3, 0x40]                           |         __asm ("ldrd r2, r3, [r3, 0x40]");
                                                                 |     }
    0x00003a0e blx 0x1d30                                        |     fcn_00001d30 ();
    0x00003a12 ldr r2, [pc, 0x28c]                               |     
    0x00003a14 ldr r1, [r6, -0x8c]                               |     r1 = *((r6 - 0x8c));
    0x00003a16 adds r4, r1, 2                                    |     r4 = r1 + 2;
    0x00003a18 ldr r0, [r7]                                      |     r0 = *(r7);
    0x00003a1a add r2, pc                                        |     r2 = 0x76c0;
    0x00003a1c blx 0x1b14                                        |     fcn_00001b14 ();
    0x00003a20 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x00003a22 ldr r0, [r7]                                      |     r0 = *(r7);
    0x00003a24 ldr r1, [r3, 0x40]                                |     r1 = *((r3 + 0x40));
    0x00003a26 blx 0x1c34                                        |     fcn_00001c34 ();
    0x00003a2a ldr.w r3, [fp]                                    |     r3 = *(fp);
    0x00003a2e str r0, [sp, 0x1c]                                |     var_1ch_2 = r0;
    0x00003a30 str r3, [sp, 0x28]                                |     n = r3;
                                                                 |     if (r3 != 0) {
    0x00003a32 cbz r3, 0x3a42                                    |         
    0x00003a34 ldr.w r1, [fp, 8]                                 |         r1 = *(arg_8h);
    0x00003a38 ldr r0, [r7]                                      |         r0 = *(r7);
    0x00003a3a adds r1, 1                                        |         r1++;
    0x00003a3c blx 0x1c04                                        |         fcn_00001c04 ();
    0x00003a40 str r0, [sp, 0x28]                                |         n = r0;
                                                                 |     }
    0x00003a42 ldr r3, [pc, 0x260]                               |     
    0x00003a44 movs r5, 0                                        |     r5 = 0;
    0x00003a46 vldr d8, [pc, 0x210]                              |     __asm ("vldr d8, [0x00003c5c]");
    0x00003a4a str r7, [sp, 0x18]                                |     var_60h = r7;
    0x00003a4c add r3, pc                                        |     r3 = 0x76f6;
    0x00003a4e str r3, [sp, 0x2c]                                |     var_2ch_3 = r3;
    0x00003a50 add r3, sp, 0x88                                  |     r3 += var_58h;
    0x00003a52 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00003a54 add r3, sp, 0x50                                  |     r3 += var_50h_3;
    0x00003a56 str r3, [sp, 0x14]                                |     var_14h = r3;
                                                                 | label_6:
    0x00003a58 ldr r2, [sp, 0x18]                                |     r2 = var_60h;
    0x00003a5a movs r3, 0                                        |     r3 = 0;
    0x00003a5c vstr d8, [sp]                                     |     __asm ("vstr d8, [sp]");
    0x00003a60 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch_2;
    0x00003a62 ldr.w r0, [r2, 0x118]                             |     r0 = *((r2 + 0x118));
    0x00003a66 mov r2, r3                                        |     r2 = r3;
    0x00003a68 blx 0x1bf8                                        |     r0 = fcn_00001bf8 ();
    0x00003a6c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003a6e bne.w 0x3bfe                                      |         goto label_60;
                                                                 |     }
    0x00003a72 ldr r7, [sp, 0x1c]                                |     r7 = var_1ch_2;
    0x00003a74 ldr r4, [r7, 4]!                                  |     r4 = *((r7 += 4));
    0x00003a78 cmp r4, r7                                        |     
                                                                 |     if (r4 == r7) {
    0x00003a7a beq 0x3b26                                        |         goto label_61;
                                                                 |     }
    0x00003a7c ldr r3, [pc, 0x228]                               |     r3 = *(0x3ca8);
    0x00003a7e ldr.w sl, [sb, r3]                                |     sl = *((sb + r3));
    0x00003a82 b 0x3a8a                                          |     
                                                                 |     while (r3 != 0) {
                                                                 | label_4:
    0x00003a84 ldr r4, [r4]                                      |         r4 = *(r4);
    0x00003a86 cmp r4, r7                                        |         
                                                                 |         if (r4 == r7) {
    0x00003a88 beq 0x3b26                                        |             goto label_61;
                                                                 |         }
                                                                 | label_5:
    0x00003a8a ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00003a8c cmp r2, sl                                        |         
                                                                 |         if (r2 == sl) {
    0x00003a8e beq 0x3b60                                        |             goto label_62;
                                                                 |         }
    0x00003a90 ldr r3, [pc, 0x218]                               |         r3 = *(0x3cac);
    0x00003a92 ldr.w r1, [sb, r3]                                |         r1 = *((sb + r3));
    0x00003a96 subs r3, r5, 0                                    |         r3 = r5 - 0;
    0x00003a98 it ne                                             |         
                                                                 |         if (r3 == r5) {
    0x00003a9a movne r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x00003a9c cmp r2, r1                                        |         
    0x00003a9e it eq                                             |         
                                                                 |         if (r2 != r1) {
    0x00003aa0 orreq r3, r3, 1                                   |             r3 |= 1;
                                                                 |         }
    0x00003aa4 cmp r3, 0                                         |         
    0x00003aa6 bne 0x3a84                                        |         
                                                                 |     }
    0x00003aa8 ldr r5, [r2, 0x10]                                |     r5 = *((r2 + 0x10));
    0x00003aaa mov r0, r4                                        |     r0 = r4;
    0x00003aac ldrd r1, r2, [sp, 0x10]                           |     __asm ("ldrd r1, r2, [var_10h]");
    0x00003ab0 subs r1, 0x3c                                     |     r1 -= 0x3c;
    0x00003ab2 blx r5                                            |     uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
    0x00003ab4 ldr.w r3, [fp]                                    |     r3 = *(fp);
                                                                 |     if (r3 != 0) {
    0x00003ab8 cbz r3, 0x3ae6                                    |         
    0x00003aba ldr.w r3, [fp, 8]                                 |         r3 = *(arg_8h);
    0x00003abe cmp r3, r8                                        |         
                                                                 |         if (r3 <= r8) {
    0x00003ac0 ble 0x3ae6                                        |             goto label_63;
                                                                 |         }
    0x00003ac2 ldr r2, [r6, -0x78]                               |         r2 = *((r6 - 0x78));
    0x00003ac6 mov r0, r8                                        |         r0 = r8;
    0x00003ac8 add.w r1, r8, r2                                  |         r1 = r8 + r2;
    0x00003acc cmp r1, r3                                        |         
    0x00003ace itt hi                                            |         
                                                                 |         if (r1 <= r3) {
    0x00003ad0 subhi r2, r3, r8                                  |             r2 = r3 - r8;
                                                                 |         }
                                                                 |         if (r1 <= r3) {
    0x00003ad2 lslhi r0, r1, 8                                   |             r0 = r1 << 8;
                                                                 |         }
    0x00003ad4 mov r8, r3                                        |         r8 = r3;
    0x00003ad6 ldr r3, [sp, 0x28]                                |         r3 = n;
    0x00003ad8 it ls                                             |         
                                                                 |         if (r1 > r3) {
    0x00003ada movls r8, r1                                      |             r8 = r1;
                                                                 |         }
    0x00003adc ldr r1, [r6, -0x7c]                               |         r1 = *((r6 - 0x7c));
    0x00003ae0 add r0, r3                                        |         r0 += r3;
    0x00003ae2 blx 0x1a9c                                        |         fcn_00001a9c ();
                                                                 |     }
                                                                 | label_63:
    0x00003ae6 ldrd r1, r2, [r6, -0x7c]                          |     __asm ("ldrd r1, r2, [r6, -0x7c]");
    0x00003aea movs r3, 0                                        |     r3 = 0;
    0x00003aec ldr r0, [r6, -0x88]                               |     r0 = *((r6 - 0x88));
    0x00003af0 blx 0x1b8c                                        |     r0 = fcn_00001b8c ();
    0x00003af4 mov r5, r0                                        |     r5 = r0;
    0x00003af6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003af8 beq 0x3a84                                        |         goto label_4;
                                                                 |     }
    0x00003afa ldr r3, [sp, 0x18]                                |     r3 = var_60h;
    0x00003afc movw r1, 0x624                                    |     r1 = 0x624;
    0x00003b00 str r0, [sp]                                      |     *(sp) = r0;
    0x00003b02 movs r5, 1                                        |     r5 = 1;
    0x00003b04 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00003b06 str r3, [sp, 4]                                   |     var_4ch_2 = r3;
    0x00003b08 ldr.w r3, [r3, 0xe8]                              |     r3 = *((r3 + 0xe8));
    0x00003b0c ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x00003b0e ldr r0, [sp, 0x2c]                                |     r0 = var_2ch_3;
    0x00003b10 str r3, [sp, 0xc]                                 |     var_ch_2 = r3;
    0x00003b12 ldr r3, [pc, 0x19c]                               |     
    0x00003b14 str r2, [sp, 0x20]                                |     var_20h_2 = r2;
    0x00003b16 add r3, pc                                        |     r3 = 0x77cc;
    0x00003b18 str r3, [sp, 8]                                   |     var_50h_2 = r3;
    0x00003b1a movs r3, 3                                        |     r3 = 3;
    0x00003b1c blx 0x1e6c                                        |     fcn_00001e6c ();
    0x00003b20 ldr r4, [r4]                                      |     r4 = *(r4);
    0x00003b22 cmp r4, r7                                        |     
                                                                 |     if (r4 != r7) {
    0x00003b24 bne 0x3a8a                                        |         goto label_5;
                                                                 |     }
                                                                 | label_61:
    0x00003b26 ldr r0, [sp, 0x1c]                                |     r0 = var_1ch_2;
    0x00003b28 blx 0x1dc0                                        |     fcn_00001dc0 ();
    0x00003b2c b 0x3a58                                          |     goto label_6;
                                                                 | label_53:
    0x00003b2e ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003b30 movw r1, 0x5be                                    |     r1 = 0x5be;
    0x00003b34 strd r0, r7, [sp]                                 |     __asm ("strd r0, r7, [sp]");
    0x00003b38 ldr r0, [pc, 0x178]                               |     
    0x00003b3a ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00003b3c add r0, pc                                        |     r0 = 0x77f4;
    0x00003b3e mov r2, r3                                        |     r2 = r3;
    0x00003b40 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00003b42 ldr r3, [pc, 0x174]                               |     
    0x00003b44 add r3, pc                                        |     r3 = 0x7802;
    0x00003b46 str r3, [sp, 8]                                   |     var_50h_2 = r3;
    0x00003b48 movs r3, 3                                        |     r3 = 3;
    0x00003b4a blx 0x1e6c                                        |     fcn_00001e6c ();
    0x00003b4e b 0x3908                                          |     goto label_7;
                                                                 | label_55:
    0x00003b50 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00003b52 beq 0x3c40                                        |         goto label_64;
                                                                 |     }
                                                                 | label_12:
    0x00003b54 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00003b56 cmp r3, 6                                         |     
    0x00003b58 ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x00003b5a movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x00003b5c movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00003b5e b 0x3954                                          |     goto label_8;
                                                                 | label_62:
    0x00003b60 ldrd r7, r0, [sp, 0x18]                           |     __asm ("ldrd r7, r0, [var_60h]");
    0x00003b64 blx 0x1dc0                                        |     fcn_00001dc0 ();
    0x00003b68 ldr.w r3, [fp]                                    |     r3 = *(fp);
                                                                 |     if (r3 != 0) {
    0x00003b6c cbz r3, 0x3b76                                    |         
    0x00003b6e ldr r2, [sp, 0x28]                                |         r2 = n;
    0x00003b70 movs r3, 0                                        |         r3 = 0;
    0x00003b72 strb.w r3, [r2, r8]                               |         *((r2 + r8)) = r3;
                                                                 |     }
    0x00003b76 ldr r0, [r6, -0x8c]                               |     r0 = *((r6 - 0x8c));
    0x00003b7a movs r1, 1                                        |     r1 = 1;
    0x00003b7c blx 0x1e18                                        |     fcn_00001e18 ();
    0x00003b80 ldr r3, [sp, 0x30]                                |     r3 = var_0h;
    0x00003b82 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003b84 bne.w 0x3cd4                                      |         goto label_65;
                                                                 |     }
    0x00003b88 ldr.w r3, [r7, 0x11c]                             |     r3 = *((r7 + 0x11c));
    0x00003b8c ldr r5, [r7, 4]                                   |     r5 = *((r7 + 4));
                                                                 |     if (r3 != 0) {
    0x00003b8e cbnz r3, 0x3b96                                   |         goto label_66;
                                                                 |     }
    0x00003b90 b 0x3b9e                                          |     goto label_67;
                                                                 |     do {
    0x00003b92 ldr r3, [r3, 8]                                   |         r3 = *((r3 + 8));
                                                                 |         if (r3 == 0) {
    0x00003b94 cbz r3, 0x3b9e                                    |             goto label_67;
                                                                 |         }
                                                                 | label_66:
    0x00003b96 ldr r2, [r3]                                      |         r2 = *(r3);
    0x00003b98 ldr r2, [r2, 0x14]                                |         r2 = *((r2 + 0x14));
    0x00003b9a cmp r2, 0x31                                      |         
    0x00003b9c bls 0x3b92                                        |         
                                                                 |     } while (r2 < 0x31);
                                                                 | label_67:
    0x00003b9e ldr r1, [r5, 0x40]                                |     r1 = *((r5 + 0x40));
    0x00003ba0 ldr r0, [r7]                                      |     r0 = *(r7);
    0x00003ba2 str.w r3, [r7, 0x11c]                             |     __asm ("str.w r3, [r7, 0x11c]");
    0x00003ba6 str.w r3, [r7, 0x114]                             |     __asm ("str.w r3, [r7, 0x114]");
    0x00003baa blx 0x1c34                                        |     fcn_00001c34 ();
    0x00003bae ldr r1, [r5, 0x40]                                |     r1 = *((r5 + 0x40));
    0x00003bb0 mov r4, r0                                        |     r4 = r0;
    0x00003bb2 ldr r0, [r6, -0x88]                               |     r0 = *((r6 - 0x88));
    0x00003bb6 adds r6, r4, 4                                    |     r6 = r4 + 4;
    0x00003bb8 blx 0x1b2c                                        |     r0 = fcn_00001b2c ();
    0x00003bbc mov r3, r0                                        |     r3 = r0;
    0x00003bbe ldr r0, [r5, 0x40]                                |     r0 = *((r5 + 0x40));
    0x00003bc0 str r6, [r3]                                      |     *(r3) = r6;
    0x00003bc2 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bc4 str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x00003bc6 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bc8 str r3, [r2]                                      |     *(r2) = r3;
    0x00003bca str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00003bcc blx 0x1ec4                                        |     r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
    0x00003bd0 mov r3, r0                                        |     r3 = r0;
    0x00003bd2 ldr.w r0, [r7, 0x114]                             |     r0 = *((r7 + 0x114));
    0x00003bd6 str r6, [r3]                                      |     *(r3) = r6;
    0x00003bd8 mov r1, r4                                        |     r1 = r4;
    0x00003bda ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003bdc str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x00003bde ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003be0 str r3, [r2]                                      |     *(r2) = r3;
    0x00003be2 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00003be4 blx 0x1f30                                        |     loc_imp_apr_file_printf ()
                                                                 | label_17:
    0x00003be8 mov.w r8, 0                                       |     r8 = 0;
    0x00003bec b 0x39a2                                          |     goto label_9;
                                                                 | label_48:
    0x00003bee ldr r4, [pc, 0xcc]                                |     
    0x00003bf0 add r4, pc                                        |     r4 = 0x78b2;
    0x00003bf2 b 0x3992                                          |     goto label_10;
                                                                 | label_49:
    0x00003bf4 ldr r4, [pc, 0xc8]                                |     
    0x00003bf6 mov.w r2, 0x194                                   |     r2 = 0x194;
    0x00003bfa add r4, pc                                        |     r4 = 0x78be;
    0x00003bfc b 0x3996                                          |     goto label_11;
                                                                 | label_60:
    0x00003bfe ldr r1, [pc, 0xc4]                                |     
    0x00003c00 mov r4, r0                                        |     r4 = r0;
    0x00003c02 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003c04 ldr r7, [sp, 0x18]                                |     r7 = var_60h;
    0x00003c06 ldr r0, [pc, 0xc0]                                |     
    0x00003c08 add r1, pc                                        |     r1 = 0x78d2;
    0x00003c0a ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00003c0c movs r3, 3                                        |     r3 = 3;
    0x00003c0e str r1, [sp, 8]                                   |     var_50h_2 = r1;
    0x00003c10 movw r1, 0x5f1                                    |     r1 = 0x5f1;
    0x00003c14 add r0, pc                                        |     r0 = 0x78e2;
    0x00003c16 strd r4, r7, [sp]                                 |     __asm ("strd r4, r7, [sp]");
    0x00003c1a blx 0x1e6c                                        |     fcn_00001e6c ();
    0x00003c1e mov.w r1, 0x190                                   |     r1 = 0x190;
    0x00003c22 mov r0, r4                                        |     r0 = r4;
    0x00003c24 blx 0x1e9c                                        |     r0 = fcn_00001e9c ();
    0x00003c28 mov r8, r0                                        |     r8 = r0;
    0x00003c2a b 0x39a2                                          |     goto label_9;
                                                                 | label_50:
    0x00003c2c ldr r4, [pc, 0x9c]                                |     
    0x00003c2e movs r3, 0                                        |     r3 = 0;
    0x00003c30 add r4, pc                                        |     r4 = 0x7900;
    0x00003c32 b 0x3992                                          |     goto label_10;
                                                                 | label_52:
    0x00003c34 ldr r4, [pc, 0x98]                                |     
    0x00003c36 movs r3, 0                                        |     r3 = 0;
    0x00003c38 mov.w r2, 0x194                                   |     r2 = 0x194;
    0x00003c3c add r4, pc                                        |     r4 = 0x7910;
    0x00003c3e b 0x3996                                          |     goto label_11;
                                                                 | label_64:
    0x00003c40 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x00003c42 ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00003c44 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00003c46 bne 0x3b54                                        |         goto label_12;
                                                                 |     }
    0x00003c48 ldr r1, [r7, 8]                                   |     r1 = *((r7 + 8));
                                                                 | label_15:
    0x00003c4a adds r1, 0x10                                     |     r1 += 0x10;
    0x00003c4c b 0x3b54                                          |     goto label_12;
                                                                 | label_46:
    0x00003c4e mov.w r8, -1                                      |     r8 = -1;
    0x00003c52 b 0x39a2                                          |     goto label_9;
                                                                 | label_65:
    0x00003cd4 ldrd r0, r5, [r7]                                 |     __asm ("ldrd r0, r5, [r7]");
    0x00003cd8 subs r3, r6, 4                                    |     r3 = r6 - 4;
    0x00003cda str r3, [sp, 0x18]                                |     var_60h = r3;
    0x00003cdc ldr r1, [r5, 0x40]                                |     r1 = *((r5 + 0x40));
    0x00003cde blx 0x1c34                                        |     fcn_00001c34 ();
    0x00003ce2 ldr r1, [r5, 0x40]                                |     r1 = *((r5 + 0x40));
    0x00003ce4 mov r4, r0                                        |     r4 = r0;
    0x00003ce6 ldr r0, [r6, -0x88]                               |     r0 = *((r6 - 0x88));
    0x00003cea blx 0x1b2c                                        |     r0 = fcn_00001b2c ();
    0x00003cee mov r3, r0                                        |     r3 = r0;
    0x00003cf0 ldr r0, [r5, 0x40]                                |     r0 = *((r5 + 0x40));
    0x00003cf2 adds r5, r4, 4                                    |     r5 = r4 + 4;
    0x00003cf4 str r5, [r3]                                      |     *(r3) = r5;
    0x00003cf6 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003cf8 str r5, [sp, 0x10]                                |     var_10h = r5;
    0x00003cfa str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x00003cfc ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003cfe str r3, [r2]                                      |     *(r2) = r3;
    0x00003d00 str r3, [r4, 8]                                   |     *((r4 + 8)) = r3;
    0x00003d02 blx 0x1ec4                                        |     r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
    0x00003d06 str r5, [r0]                                      |     *(r0) = r5;
    0x00003d08 ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003d0a ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00003d0c str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00003d0e ldr r2, [r4, 8]                                   |     r2 = *((r4 + 8));
    0x00003d10 ldr r3, [r1, 8]                                   |     r3 = *((r1 + 8));
    0x00003d12 mov r1, r4                                        |     r1 = r4;
    0x00003d14 str r0, [r2]                                      |     *(r2) = r0;
    0x00003d16 str r0, [r4, 8]                                   |     *((r4 + 8)) = r0;
    0x00003d18 mov r0, r7                                        |     r0 = r7;
    0x00003d1a ldr r2, [sp, 0x18]                                |     r2 = var_60h;
    0x00003d1c blx 0x1ed0                                        |     r0 = loc_imp_apr_signal ();
    0x00003d20 mov r8, r0                                        |     r8 = r0;
    0x00003d22 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003d24 beq.w 0x3f10                                      |         goto label_68;
                                                                 |     }
    0x00003d28 ldr.w r0, [r7, 0xb0]                              |     r0 = *((r7 + 0xb0));
    0x00003d2c blx 0x1af0                                        |     r0 = fcn_00001af0 ();
    0x00003d30 mov r2, r0                                        |     r2 = r0;
    0x00003d32 str r0, [sp, 0x14]                                |     var_14h = r0;
    0x00003d34 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00003d38 movs r3, 0                                        |     r3 = 0;
    0x00003d3a ldr.w sb, [r2, 0x10]                              |     sb = *((r2 + 0x10));
    0x00003d3e str r3, [r6, -0x84]                               |     *((r6 - 0x84)) = r3;
    0x00003d42 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003d44 beq.w 0x3f80                                      |         goto label_69;
                                                                 |     }
    0x00003d48 add r3, sp, 0x88                                  |     r3 += var_58h;
    0x00003d4a add r1, sp, 0x50                                  |     r1 += var_50h_3;
    0x00003d4c str r3, [sp, 0x1c]                                |     var_1ch_2 = r3;
    0x00003d4e blx 0x1c70                                        |     r0 = fcn_00001c70 ();
                                                                 |     if (r0 == 0) {
    0x00003d52 cbnz r0, 0x3d62                                   |         
    0x00003d54 ldr r2, [r6, -0x4c]                               |         r2 = *((r6 - 0x4c));
    0x00003d58 ldr.w r3, [fp, 4]                                 |         r3 = *(arg_4h);
    0x00003d5c cmp r2, r3                                        |         
                                                                 |         if (r2 > r3) {
    0x00003d5e bgt.w 0x3f80                                      |             goto label_69;
                                                                 |         }
                                                                 |     }
    0x00003d62 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00003d64 movs r2, 0xe                                      |     r2 = 0xe;
    0x00003d66 ldr r0, [sp, 0x34]                                |     r0 = var_4h;
    0x00003d68 ldr.w r1, [fp]                                    |     r1 = *(fp);
    0x00003d6c str r3, [sp]                                      |     *(sp) = r3;
    0x00003d6e movw r3, 0xfff                                    |     r3 = 0xfff;
    0x00003d72 subs r0, 4                                        |     r0 -= 4;
    0x00003d74 blx 0x1e0c                                        |     r0 = fcn_00001e0c ();
    0x00003d78 mov fp, r0                                        |     
    0x00003d7a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00003d7c bne.w 0x3f80                                      |         goto label_69;
                                                                 |     }
    0x00003d80 sub.w r5, r6, 0x20                                |     r5 = r6 - 0x20;
    0x00003d84 blx 0x1a2c                                        |     loc_imp_apr_time_now ();
    0x00003d88 mov r3, r1                                        |     r3 = r1;
    0x00003d8a mov r2, r0                                        |     r2 = r0;
    0x00003d8c mov r0, r5                                        |     r0 = r5;
    0x00003d8e blx 0x1a20                                        |     loc_imp_apr_ctime ();
    0x00003d92 ldr.w r1, [r7, 0xf4]                              |     r1 = *((r7 + 0xf4));
    0x00003d96 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003d9a ldr r3, [r7, 0x4c]                                |     r3 = *((r7 + 0x4c));
    0x00003d9c ldr.w ip, [r7, 0xe4]                              |     ip = *((r7 + 0xe4));
    0x00003da0 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00003da2 beq.w 0x401c                                      |         goto label_70;
                                                                 |     }
    0x00003da6 ldr r2, [pc, 0x2b4]                               |     
    0x00003da8 add r2, pc                                        |     r2 = 0x7e0a;
                                                                 | label_24:
    0x00003daa str.w ip, [sp]                                    |     __asm ("str.w ip, [sp]");
    0x00003dae strd r2, r1, [sp, 4]                              |     __asm ("strd r2, r1, [sp, 4]");
    0x00003db2 mov r2, r5                                        |     r2 = r5;
    0x00003db4 ldr r1, [r7, 0x2c]                                |     r1 = *((r7 + 0x2c));
    0x00003db6 str r1, [sp, 0xc]                                 |     var_ch_2 = r1;
    0x00003db8 ldr r1, [pc, 0x2a4]                               |     
    0x00003dba add r1, pc                                        |     r1 = 0x7e1e;
    0x00003dbc blx 0x1f3c                                        |     strncmp (r0, r1, r2);
    0x00003dc0 ldr r1, [pc, 0x2a0]                               |     
    0x00003dc2 mov r2, r8                                        |     r2 = r8;
    0x00003dc4 ldr.w r3, [r7, 0xe8]                              |     r3 = *((r7 + 0xe8));
    0x00003dc8 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003dcc add r1, pc                                        |     r1 = 0x7e34;
    0x00003dce blx 0x1f3c                                        |     strncmp (r0, r1, r2);
    0x00003dd2 ldr r0, [pc, 0x294]                               |     
    0x00003dd4 ldr r1, [r6, -0x84]                               |     r1 = *((r6 - 0x84));
    0x00003dd8 add r0, pc                                        |     r0 = 0x7e46;
    0x00003dda blx 0x1e30                                        |     fcn_00001e30 ();
    0x00003dde ldr r3, [sp, 0x14]                                |     r3 = var_14h;
    0x00003de0 ldr r3, [r3, 8]                                   |     r3 = *((r3 + 8));
    0x00003de2 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00003de4 ble 0x3e14                                        |         goto label_71;
                                                                 |     }
    0x00003de6 ldr r1, [pc, 0x284]                               |     
    0x00003de8 add.w r5, sb, 4                                   |     r5 = sb + 4;
    0x00003dec mov.w sb, 0                                       |     sb = 0;
    0x00003df0 add r1, pc                                        |     r1 = 0x7e62;
                                                                 |     do {
    0x00003df2 ldr r2, [r5, -0x4]                                |         r2 = *((r5 - 0x4));
                                                                 |         if (r2 != 0) {
    0x00003df6 cbz r2, 0x3e0a                                    |             
    0x00003df8 ldr r3, [r5]                                      |             r3 = *(r5);
    0x00003dfa ldr r0, [r6, -0x84]                               |             r0 = *((r6 - 0x84));
    0x00003dfe str r1, [sp, 0x20]                                |             var_20h_2 = r1;
    0x00003e00 blx 0x1f3c                                        |             strncmp (r0, r1, r2);
    0x00003e04 ldr r3, [sp, 0x14]                                |             r3 = var_14h;
    0x00003e06 ldr r1, [sp, 0x20]                                |             r1 = var_20h_2;
    0x00003e08 ldr r3, [r3, 8]                                   |             r3 = *((r3 + 8));
                                                                 |         }
    0x00003e0a add.w sb, sb, 1                                   |         sb++;
    0x00003e0e adds r5, 0xc                                      |         r5 += 0xc;
    0x00003e10 cmp sb, r3                                        |         
    0x00003e12 blt 0x3df2                                        |         
                                                                 |     } while (sb < r3);
                                                                 | label_71:
    0x00003e14 ldr r3, [r7, 0x48]                                |     r3 = *((r7 + 0x48));
    0x00003e16 subs r3, 1                                        |     r3--;
    0x00003e18 cmp r3, 1                                         |     
                                                                 |     if (r3 < 1) {
    0x00003e1a bls.w 0x4002                                      |         goto label_72;
                                                                 |     }
                                                                 | label_23:
    0x00003e1e ldr r0, [pc, 0x250]                               |     
    0x00003e20 ldr r1, [r6, -0x84]                               |     r1 = *((r6 - 0x84));
    0x00003e22 adds r4, r0, 2                                    |     r4 = r0 + 2;
    0x00003e24 add r0, pc                                        |     r0 = 0x7e9a;
    0x00003e26 blx 0x1e30                                        |     fcn_00001e30 ();
    0x00003e2a ldr.w r0, [r7, 0xb8]                              |     r0 = *((r7 + 0xb8));
    0x00003e2e blx 0x1af0                                        |     fcn_00001af0 ();
    0x00003e32 ldr r3, [r0, 8]                                   |     r3 = *(0x7ea2);
    0x00003e34 mov sb, r0                                        |     sb = r0;
    0x00003e36 ldr r5, [r0, 0x10]                                |     r5 = *(0x7eaa);
    0x00003e38 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00003e3a ble 0x3e64                                        |         goto label_73;
                                                                 |     }
    0x00003e3c ldr r1, [pc, 0x234]                               |     
    0x00003e3e adds r5, 4                                        |     r5 += 4;
    0x00003e40 add r1, pc                                        |     r1 = 0x7eb8;
                                                                 |     do {
    0x00003e42 ldr r2, [r5, -0x4]                                |         r2 = *((r5 - 0x4));
                                                                 |         if (r2 != 0) {
    0x00003e46 cbz r2, 0x3e5a                                    |             
    0x00003e48 ldr r3, [r5]                                      |             r3 = *(r5);
    0x00003e4a ldr r0, [r6, -0x84]                               |             r0 = *((r6 - 0x84));
    0x00003e4e str r1, [sp, 0x14]                                |             var_14h = r1;
    0x00003e50 blx 0x1f3c                                        |             strncmp (r0, r1, r2);
    0x00003e54 ldr.w r3, [sb, 8]                                 |             r3 = *((sb + 8));
    0x00003e58 ldr r1, [sp, 0x14]                                |             r1 = var_14h;
                                                                 |         }
    0x00003e5a add.w fp, fp, 1                                   |         
    0x00003e5e adds r5, 0xc                                      |         r5 += 0xc;
    0x00003e60 cmp fp, r3                                        |         
    0x00003e62 blt 0x3e42                                        |         
                                                                 |     } while (fp < r3);
                                                                 | label_73:
    0x00003e64 ldrb r3, [r6, -0x4]                               |     r3 = *((r6 - 0x4));
    0x00003e68 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00003e6a bne.w 0x4024                                      |         goto label_74;
                                                                 |     }
                                                                 | label_25:
    0x00003e6e ldr r4, [r4, 4]                                   |     r4 = *((r4 + 4));
    0x00003e70 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x00003e72 cmp r3, r4                                        |     
                                                                 |     if (r3 == r4) {
    0x00003e74 beq.w 0x3fe6                                      |         goto label_75;
                                                                 |     }
    0x00003e78 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch_2;
    0x00003e7a mov.w sb, 1                                       |     sb = 1;
    0x00003e7e sub.w r5, r3, 0x3c                                |     r5 = r3 - 0x3c;
    0x00003e82 ldr r3, [pc, 0x1f4]                               |     
    0x00003e84 mov fp, r5                                        |     
    0x00003e86 add r3, pc                                        |     r3 = 0x7f04;
    0x00003e88 str r3, [sp, 0x18]                                |     var_60h = r3;
    0x00003e8a ldr r3, [pc, 0x1f0]                               |     
    0x00003e8c add r3, pc                                        |     r3 = 0x7f0e;
    0x00003e8e str r3, [sp, 0x14]                                |     var_14h = r3;
    0x00003e90 b 0x3eb8                                          |     
                                                                 |     while (sb == 0) {
                                                                 | label_13:
    0x00003e92 movs r3, 0                                        |         r3 = 0;
    0x00003e94 ldr r1, [r6, -0x80]                               |         r1 = *((r6 - 0x80));
    0x00003e98 ldr r0, [r6, -0x84]                               |         r0 = *((r6 - 0x84));
    0x00003e9c blx 0x1b8c                                        |         fcn_00001b8c ();
    0x00003ea0 ldr r1, [r6, -0x84]                               |         r1 = *((r6 - 0x84));
    0x00003ea4 ldr r0, [sp, 0x14]                                |         r0 = var_14h;
    0x00003ea6 blx 0x1e30                                        |         fcn_00001e30 ();
    0x00003eaa ldr r4, [r4]                                      |         r4 = *(r4);
    0x00003eac ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x00003eae cmp r3, r4                                        |         
                                                                 |         if (r3 == r4) {
    0x00003eb0 beq.w 0x3fe6                                      |             goto label_75;
                                                                 |         }
    0x00003eb4 mov.w sb, 0                                       |         sb = 0;
    0x00003eb8 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x00003eba cmp r3, sl                                        |         
                                                                 |         if (r3 == sl) {
    0x00003ebc beq.w 0x3fe6                                      |             goto label_75;
                                                                 |         }
    0x00003ec0 ldr r5, [r3, 0x10]                                |         r5 = *((r3 + 0x10));
    0x00003ec2 mov r2, fp                                        |         r2 = fp;
    0x00003ec4 ldr r1, [sp, 0x34]                                |         r1 = var_4h;
    0x00003ec6 movs r3, 0                                        |         r3 = 0;
    0x00003ec8 mov r0, r4                                        |         r0 = r4;
    0x00003eca blx r5                                            |         r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00003ecc cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00003ece bne.w 0x3fe6                                      |             goto label_75;
                                                                 |         }
    0x00003ed2 ldr r2, [r6, -0x7c]                               |         r2 = *((r6 - 0x7c));
    0x00003ed6 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00003ed8 beq.w 0x3fe6                                      |             goto label_75;
                                                                 |         }
    0x00003edc cmp.w sb, 0                                       |         
    0x00003ee0 beq 0x3e92                                        |         
                                                                 |     }
    0x00003ee2 ldr r1, [r6, -0x84]                               |     r1 = *((r6 - 0x84));
    0x00003ee6 ldr r0, [sp, 0x18]                                |     r0 = var_60h;
    0x00003ee8 blx 0x1e30                                        |     fcn_00001e30 ();
    0x00003eec ldr r2, [r6, -0x7c]                               |     r2 = *((r6 - 0x7c));
    0x00003ef0 b 0x3e92                                          |     goto label_13;
                                                                 | label_56:
    0x00003ef2 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x00003ef4 ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00003ef6 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00003ef8 bne.w 0x393c                                      |         goto label_14;
                                                                 |     }
    0x00003efc ldr r1, [r7, 8]                                   |     r1 = *((r7 + 8));
    0x00003efe ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00003f00 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003f02 beq.w 0x3c4a                                      |         goto label_15;
                                                                 |     }
    0x00003f06 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00003f08 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00003f0a bge.w 0x394c                                      |         goto label_16;
                                                                 |     }
    0x00003f0e b 0x3c4a                                          |     goto label_15;
                                                                 | label_68:
    0x00003f10 ldr r1, [pc, 0x16c]                               |     
    0x00003f12 ldr.w r0, [r7, 0xb4]                              |     r0 = *((r7 + 0xb4));
    0x00003f16 add r1, pc                                        |     r1 = 0x7f9a;
    0x00003f18 blx 0x1ab4                                        |     r0 = fcn_00001ab4 ();
    0x00003f1c mov r5, r0                                        |     r5 = r0;
                                                                 |     if (r0 != 0) {
    0x00003f1e cbz r0, 0x3f2e                                    |         
    0x00003f20 ldrb r2, [r0]                                     |         r2 = *(r0);
    0x00003f22 ldr r3, [r7, 0x44]                                |         r3 = *((r7 + 0x44));
    0x00003f24 cmp r2, 0x2f                                      |         
                                                                 |         if (r2 == 0x2f) {
    0x00003f26 beq 0x3fb6                                        |             goto label_76;
                                                                 |         }
    0x00003f28 cmp r3, 0xc8                                      |         
                                                                 |         if (r3 == 0xc8) {
    0x00003f2a beq.w 0x4034                                      |             goto label_77;
                                                                 |         }
                                                                 |     }
                                                                 | label_20:
    0x00003f2e mov r1, r4                                        |     r1 = r4;
    0x00003f30 ldr.w r0, [r7, 0x114]                             |     r0 = *((r7 + 0x114));
    0x00003f34 blx 0x1f30                                        |     r0 = loc_imp_apr_file_printf ()
    0x00003f38 mov r4, r0                                        |     r4 = r0;
    0x00003f3a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00003f3c beq.w 0x3be8                                      |         goto label_17;
                                                                 |     }
    0x00003f40 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00003f42 ldr.w r1, [r7, 0x108]                             |     r1 = *((r7 + 0x108));
    0x00003f46 ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00003f48 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00003f4a blt 0x3ff0                                        |         goto label_78;
                                                                 |     }
                                                                 |     if (r1 == 0) {
    0x00003f4c cbz r1, 0x3f96                                    |         goto label_79;
                                                                 |     }
    0x00003f4e ldr r3, [r1]                                      |     r3 = *(r1);
                                                                 |     if (r3 == 0) {
    0x00003f50 cbz r3, 0x3faa                                    |         goto label_22;
                                                                 |     }
    0x00003f52 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00003f54 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00003f56 blt 0x3faa                                        |         goto label_22;
                                                                 |     }
                                                                 | label_18:
    0x00003f58 cmp r3, 7                                         |     
    0x00003f5a ite le                                            |     
                                                                 |     if (r3 > 7) {
    0x00003f5c movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 7) {
    0x00003f5e movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_19:
    0x00003f60 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003f62 beq.w 0x3be8                                      |         goto label_17;
                                                                 |     }
    0x00003f66 ldr r5, [pc, 0x11c]                               |     
    0x00003f68 movs r3, 8                                        |     r3 = 8;
    0x00003f6a ldr r0, [pc, 0x11c]                               |     
    0x00003f6c movw r1, 0x687                                    |     r1 = 0x687;
    0x00003f6e str r7, [r0, 0x18]                                |     *((r0 + 0x18)) = r7;
    0x00003f70 strd r4, r7, [sp]                                 |     __asm ("strd r4, r7, [sp]");
    0x00003f74 add r5, pc                                        |     r5 = 0x7ffe;
    0x00003f76 add r0, pc                                        |     r0 = 0x8004;
    0x00003f78 str r5, [sp, 8]                                   |     var_50h_2 = r5;
    0x00003f7a blx 0x1e6c                                        |     fcn_00001e6c ();
    0x00003f7e b 0x3be8                                          |     goto label_17;
                                                                 | label_69:
    0x00003f80 mov r0, r4                                        |     r0 = r4;
    0x00003f82 bl 0x2088                                         |     fcn_00002088 (r0);
                                                                 | label_21:
    0x00003f86 cmp.w r8, 0x130                                   |     
    0x00003f8a it eq                                             |     
                                                                 |     if (r8 == 0x130) {
    0x00003f8c streq r8, [r7, 0x44]                              |         *((r7 + 0x44)) = r8;
                                                                 |         goto label_80;
                                                                 |     }
                                                                 |     if (r8 != 0x130) {
                                                                 | label_80:
    0x00003f90 bne.w 0x39a2                                      |         goto label_9;
                                                                 |     }
    0x00003f94 b 0x3be8                                          |     goto label_17;
                                                                 | label_79:
    0x00003f96 ldr r1, [r7, 4]                                   |     r1 = *((r7 + 4));
    0x00003f98 ldr r3, [r1, 0x60]                                |     r3 = *((r1 + 0x60));
    0x00003f9a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00003f9c beq 0x4046                                        |         goto label_81;
                                                                 |     }
    0x00003f9e ldr r3, [r3]                                      |     r3 = *(r3);
                                                                 |     if (r3 == 0) {
    0x00003fa0 cbz r3, 0x3fa8                                    |         goto label_82;
                                                                 |     }
    0x00003fa2 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00003fa4 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00003fa6 bge 0x3f58                                        |         goto label_18;
                                                                 |     }
                                                                 | label_82:
    0x00003fa8 ldr r1, [r1, 0x60]                                |     r1 = *((r1 + 0x60));
                                                                 | label_22:
    0x00003faa ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00003fac cmp r3, 7                                         |     
    0x00003fae ite le                                            |     
                                                                 |     if (r3 > 7) {
    0x00003fb0 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 7) {
    0x00003fb2 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00003fb4 b 0x3f60                                          |     goto label_19;
                                                                 | label_76:
    0x00003fb6 cmp r3, 0xc8                                      |     
                                                                 |     if (r3 != 0xc8) {
    0x00003fb8 bne 0x3f2e                                        |         goto label_20;
                                                                 |     }
    0x00003fba mov r0, r4                                        |     r0 = r4;
    0x00003fbc bl 0x2088                                         |     fcn_00002088 (r0);
    0x00003fc0 mov r0, r4                                        |     r0 = r4;
    0x00003fc2 blx 0x1c10                                        |     fcn_00001c10 ();
    0x00003fc6 ldr r3, [pc, 0xc4]                                |     
    0x00003fc8 ldr r1, [pc, 0xc4]                                |     
    0x00003fca ldr.w r0, [r7, 0xb0]                              |     r0 = *((r7 + 0xb0));
    0x00003fce add r3, pc                                        |     r3 = 0x8060;
    0x00003fd0 str.w r8, [r7, 0x48]                              |     __asm ("str.w r8, [r7, 0x48]");
    0x00003fd4 add r1, pc                                        |     r1 = 0x8068;
    0x00003fd6 str r3, [r7, 0x4c]                                |     *((r7 + 0x4c)) = r3;
    0x00003fd8 blx 0x1bb0                                        |     fcn_00001bb0 ();
    0x00003fdc mov r1, r7                                        |     r1 = r7;
    0x00003fde mov r0, r5                                        |     r0 = r5;
    0x00003fe0 blx 0x1b50                                        |     fcn_00001b50 ();
    0x00003fe4 b 0x3be8                                          |     goto label_17;
                                                                 | label_75:
    0x00003fe6 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00003fea blx 0x1c88                                        |     fcn_00001c88 ();
    0x00003fee b 0x3f86                                          |     goto label_21;
                                                                 | label_78:
    0x00003ff0 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00003ff2 bne 0x3faa                                        |         goto label_22;
                                                                 |     }
    0x00003ff4 ldr r3, [r7, 4]                                   |     r3 = *((r7 + 4));
    0x00003ff6 ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00003ff8 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00003ffa bne 0x3faa                                        |         goto label_22;
                                                                 |     }
    0x00003ffc ldr r1, [r7, 8]                                   |     r1 = *((r7 + 8));
                                                                 | label_26:
    0x00003ffe adds r1, 0x10                                     |     r1 += 0x10;
    0x00004000 b 0x3faa                                          |     goto label_22;
                                                                 | label_72:
    0x00004002 ldr r3, [sp, 0x28]                                |     r3 = n;
    0x00004004 ldrb r3, [r3]                                     |     r3 = *(r3);
    0x00004006 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004008 beq.w 0x3e1e                                      |         goto label_23;
                                                                 |     }
    0x0000400c ldr r1, [pc, 0x84]                                |     
    0x0000400e ldr r2, [sp, 0x28]                                |     r2 = n;
    0x00004010 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x00004014 add r1, pc                                        |     r1 = 0x80ac;
    0x00004016 blx 0x1f3c                                        |     strncmp (r0, r1, r2);
    0x0000401a b 0x3e1e                                          |     goto label_23;
                                                                 | label_70:
    0x0000401c ldr r2, [pc, 0x78]                                |     
    0x0000401e add r2, pc                                        |     r2 = 0x80ba;
    0x00004020 mov r1, r2                                        |     r1 = r2;
    0x00004022 b 0x3daa                                          |     goto label_24;
                                                                 | label_74:
    0x00004024 ldr r1, [pc, 0x74]                                |     
    0x00004026 ldr r2, [sp, 0x18]                                |     r2 = var_60h;
    0x00004028 ldr r0, [r6, -0x84]                               |     r0 = *((r6 - 0x84));
    0x0000402c add r1, pc                                        |     r1 = 0x80cc;
    0x0000402e blx 0x1f3c                                        |     strncmp (r0, r1, r2);
    0x00004032 b 0x3e6e                                          |     goto label_25;
                                                                 | label_77:
    0x00004034 mov r0, r4                                        |     r0 = r4;
    0x00004036 mov.w r8, 0x12e                                   |     r8 = 0x12e;
    0x0000403a bl 0x2088                                         |     fcn_00002088 (r0);
    0x0000403e mov r0, r4                                        |     r0 = r4;
    0x00004040 blx 0x1c10                                        |     fcn_00001c10 ();
    0x00004044 b 0x39a2                                          |     goto label_9;
                                                                 | label_81:
    0x00004046 ldr r1, [r7, 8]                                   |     r1 = *((r7 + 8));
    0x00004048 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x0000404a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000404c beq 0x3ffe                                        |         goto label_26;
                                                                 |     }
    0x0000404e ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00004050 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00004052 bge 0x3f58                                        |         goto label_18;
                                                                 |     }
    0x00004054 b 0x3ffe                                          |     goto label_26;
                                                                 | label_59:
    0x00004056 blx 0x1b20                                        |     fcn_00001b20 ();
    0x0000405a nop                                               |     
    0x0000405c lsrs r4, r1, 5                                    |     r4 = r1 >> 5;
    0x0000405e movs r0, r0                                       |     
    0x00004060 lsrs r6, r0, 6                                    |     r6 = r0 >> 6;
    0x00004062 movs r0, r0                                       |     
    0x00004064 lsrs r4, r1, 6                                    |     r4 = r1 >> 6;
    0x00004066 movs r0, r0                                       |     
    0x00004068 asrs r4, r3, 4                                    |     r4 = r3 >> 4;
    0x0000406a movs r0, r0                                       |     
    0x0000406c asrs r0, r2, 4                                    |     r0 = r2 >> 4;
    0x0000406e movs r0, r0                                       |     
    0x00004070 asrs r4, r5, 3                                    |     r4 = r5 >> 3;
    0x00004072 movs r0, r0                                       |     
    0x00004074 asrs r0, r0, 3                                    |     r0 >>= 3;
    0x00004076 movs r0, r0                                       |     
    0x00004078 asrs r6, r2, 2                                    |     r6 = r2 >> 2;
    0x0000407a movs r0, r0                                       |     
    0x0000407c asrs r0, r6, 1                                    |     r0 = r6 >> 1;
    0x0000407e movs r0, r0                                       |     
    0x00004080 asrs r2, r2, 0x20                                 |     r2 >>= 0x20;
    0x00004082 movs r0, r0                                       |     
    0x00004084 lsrs r4, r2, 0x1f                                 |     r4 = r2 >> 0x1f;
    0x00004086 movs r0, r0                                       |     
    0x00004088 lsls r2, r0, 0x1e                                 |     r2 = r0 << 0x1e;
    0x0000408a movs r0, r0                                       |     
    0x0000408c lsrs r6, r4, 0x1d                                 |     r6 = r4 >> 0x1d;
    0x0000408e movs r0, r0                                       |     
    0x00004090 lsrs r4, r4, 0x1d                                 |     r4 >>= 0x1d;
    0x00004092 movs r0, r0                                       |     
    0x00004094 lsrs r4, r6, 0x1b                                 |     r4 = r6 >> 0x1b;
    0x00004096 movs r0, r0                                       |     
    0x00004098 lsrs r6, r5, 0x1b                                 |     r6 = r5 >> 0x1b;
    0x0000409a movs r0, r0                                       |     
    0x0000409c lsls r0, r0, 0x1d                                 |     r0 <<= 0x1d;
    0x0000409e movs r0, r0                                       |     
    0x000040a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x000040a4 mov fp, r1                                        |     
    0x000040a6 ldr.w r1, [pc, 0x534]                             |     
    0x000040aa sub.w sp, sp, 0x2040                              |     
    0x000040ae sub sp, 0x24                                      |     
    0x000040b0 mov r8, r2                                        |     r8 = r2;
    0x000040b2 ldr.w r2, [pc, 0x52c]                             |     r2 = *(0x45e2);
    0x000040b6 mov r6, r0                                        |     r6 = r0;
    0x000040b8 add r1, pc                                        |     r1 = 0x869a;
    0x000040ba add.w r0, sp, 0x2040                              |     r0 += arg_2040h;
    0x000040be str r1, [sp, 0x24]                                |     var_24h_2 = r1;
    0x000040c0 mov r4, r1                                        |     r4 = r1;
    0x000040c2 ldr.w r1, [pc, 0x520]                             |     
    0x000040c6 adds r0, 0x1c                                     |     r0 += 0x1c;
    0x000040c8 movs r3, 0                                        |     r3 = 0;
    0x000040ca add r5, sp, 0x60                                  |     r5 += var_60h;
    0x000040cc add r1, pc                                        |     r1 = 0x86b6;
    0x000040ce ldr r2, [r1, r2]                                  |     
    0x000040d0 ldr r1, [r6, 0x14]                                |     r1 = *((r6 + 0x14));
    0x000040d2 ldr r2, [r2]                                      |     r2 = *(0x86b6);
    0x000040d4 str r2, [r0]                                      |     *(r0) = r2;
    0x000040d6 mov.w r2, 0                                       |     r2 = 0;
    0x000040da ldr.w r0, [fp, 0xc]                               |     r0 = *(arg_ch);
    0x000040de ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x000040e0 strd r3, r3, [r5, -0x14]                          |     __asm ("strd r3, r3, [r5, -0x14]");
    0x000040e4 ldr.w r7, [r0, 0xe8]                              |     r7 = *((r0 + 0xe8));
    0x000040e8 and r3, r2, 1                                     |     r3 = r2 & 1;
    0x000040ec str r0, [sp, 0x40]                                |     var_40h = r0;
    0x000040ee cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000040f0 bne.w 0x439c                                      |         goto label_83;
                                                                 |     }
    0x000040f4 ldr.w r2, [pc, 0x4f0]                             |     
    0x000040f8 rsb.w r3, r3, 4                                   |     r3 = 4 - r3;
    0x000040fc ldr r2, [r4, r2]                                  |     r2 = *((r4 + r2));
    0x000040fe str r1, [sp]                                      |     *(sp) = r1;
    0x00004100 ldr.w r1, [pc, 0x4e8]                             |     
    0x00004104 str r0, [sp, 4]                                   |     var_4h_2 = r0;
    0x00004106 ldr.w r0, [pc, 0x4e8]                             |     
    0x0000410a add r1, pc                                        |     r1 = 0x86fa;
    0x0000410c str r7, [sp, 0xc]                                 |     var_ch = r7;
    0x0000410e ldr r2, [r2, 8]                                   |     r2 = *(0x45f0);
    0x00004110 add r0, pc                                        |     r0 = 0x8706;
    0x00004112 str r1, [sp, 8]                                   |     var_8h_2 = r1;
    0x00004114 movw r1, 0x74f                                    |     r1 = 0x74f;
    0x00004116 strb r7, [r1, 5]                                  |     *((r1 + 5)) = r7;
    0x00004118 blx 0x1e6c                                        |     fcn_00001e6c ();
    0x0000411c ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x0000411e lsls r1, r2, 0x1f                                 |     r1 = r2 << 0x1f;
                                                                 |     if (r1 >= r2) {
    0x00004120 bpl.w 0x4374                                      |         goto label_84;
                                                                 |     }
    0x00004124 ldr r3, [r6, 0x14]                                |     r3 = *((r6 + 0x14));
    0x00004126 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00004128 beq.w 0x433e                                      |         goto label_35;
                                                                 |     }
    0x0000412c lsls r3, r2, 0x1c                                 |     r3 = r2 << 0x1c;
                                                                 |     if (r3 < r2) {
    0x0000412e bmi.w 0x455e                                      |         goto label_85;
                                                                 |     }
                                                                 | label_27:
    0x00004132 ldr.w r3, [pc, 0x4c0]                             |     
    0x00004136 mov sb, r6                                        |     sb = r6;
    0x00004138 ldr.w sl, [pc, 0x4bc]                             |     
    0x0000413c str r7, [sp, 0x44]                                |     var_44h = r7;
    0x0000413e add r3, pc                                        |     r3 = 0x8738;
    0x00004140 str.w r8, [sp, 0x28]                              |     __asm ("str.w r8, [var_28h]");
    0x00004144 str r3, [sp, 0x20]                                |     s2 = r3;
    0x00004146 add sl, pc                                        |     sl = 0x8742;
    0x00004148 ldr.w r3, [pc, 0x4b0]                             |     
    0x0000414c add r3, pc                                        |     r3 = 0x874c;
    0x0000414e str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00004150 add r3, sp, 0x50                                  |     r3 += var_50h_2;
    0x00004152 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x00004154 add r3, sp, 0x4c                                  |     r3 += var_4ch_2;
    0x00004156 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 |     do {
                                                                 | label_29:
    0x00004158 ldr.w r4, [sl, 0x28]                              |         r4 = *((sl + 0x28));
    0x0000415c movs r3, 1                                        |         r3 = 1;
    0x0000415e ldrd r2, r1, [sp, 0x18]                           |         __asm ("ldrd r2, r1, [var_18h]");
    0x00004162 mov r0, sb                                        |         r0 = sb;
    0x00004164 blx r4                                            |         uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
    0x00004166 ldr r7, [r5, -0x14]                               |         r7 = *((r5 - 0x14));
    0x0000416a cmp r7, 0                                         |         
                                                                 |         if (r7 == 0) {
    0x0000416c beq.w 0x4374                                      |             goto label_84;
                                                                 |         }
    0x00004170 ldr r4, [r5, -0x10]                               |         r4 = *((r5 - 0x10));
    0x00004174 cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x00004176 beq.w 0x4374                                      |             goto label_84;
                                                                 |         }
    0x0000417a ldr r1, [sp, 0x20]                                |         r1 = s2;
    0x0000417c mov r0, r7                                        |         r0 = r7;
    0x0000417e blx 0x19fc                                        |         r0 = strcmp (r0, r1);
    0x00004182 mov r6, r0                                        |         r6 = r0;
    0x00004184 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00004186 bne.w 0x43d0                                      |             goto label_86;
                                                                 |         }
    0x0000418a subs r3, r5, 4                                    |         r3 = r5 - 4;
    0x0000418c mov.w r8, 1                                       |         r8 = 1;
    0x00004190 mov r1, r4                                        |         r1 = r4;
    0x00004192 mov r2, r3                                        |         r2 = r3;
    0x00004194 str r3, [sp, 0x38]                                |         var_38h = r3;
    0x00004196 mov r0, sb                                        |         r0 = sb;
    0x00004198 mov.w r3, 0x2000                                  |         r3 = 0x2000;
    0x0000419c str.w r8, [sp]                                    |         __asm ("str.w r8, [sp]");
    0x000041a0 ldr.w r4, [sl, 0x2c]                              |         r4 = *((sl + 0x2c));
    0x000041a4 blx r4                                            |         uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000041a6 ldr.w r4, [fp, 0xc]                               |         r4 = *(arg_ch);
    0x000041aa ldr.w r3, [pc, 0x43c]                             |         r3 = *(0x45ea);
    0x000041ae ldr r2, [sp, 0x24]                                |         r2 = var_24h_2;
    0x000041b0 str r6, [r5, -0x8]                                |         *((r5 - 0x8)) = r6;
    0x000041b4 ldr.w r1, [r4, 0xf0]                              |         r1 = *((r4 + 0xf0));
    0x000041b8 ldr r0, [r2, r3]                                  |         r0 = *((r2 + r3));
    0x000041ba ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x000041bc str r0, [sp, 0x30]                                |         var_30h_2 = r0;
    0x000041be ldr r2, [r3, 0x18]                                |         r2 = *(0x4602);
    0x000041c0 ldr r3, [r0, 8]                                   |         r3 = *((r0 + 8));
    0x000041c2 ldr.w r7, [r2, r3, lsl 2]                         |         r7 = *(0x4602);
    0x000041c6 ldr.w r2, [r4, 0x100]                             |         r2 = *((r4 + 0x100));
    0x000041ca ldr.w r3, [r2, r3, lsl 2]                         |         r3 = *(0x4602);
    0x000041ce str r3, [sp, 0x34]                                |         var_34h = r3;
    0x000041d0 ldr.w r3, [r4, 0xbc]                              |         r3 = *((r4 + 0xbc));
    0x000041d4 str r3, [sp, 0x2c]                                |         var_2ch_2 = r3;
                                                                 |         if (r1 != 0) {
    0x000041d6 cbz r1, 0x41e0                                    |             
    0x000041d8 ldrb r3, [r1]                                     |             r3 = *(r1);
    0x000041da cmp r3, 0                                         |             
                                                                 |             if (r3 != 0) {
    0x000041dc bne.w 0x447e                                      |                 goto label_87;
                                                                 |             }
                                                                 |         }
                                                                 | label_31:
    0x000041e0 ldr.w r1, [r4, 0xf4]                              |         r1 = *((r4 + 0xf4));
                                                                 |         if (r1 != 0) {
    0x000041e4 cbz r1, 0x421c                                    |             
    0x000041e6 ldr r0, [r4]                                      |             r0 = *(r4);
    0x000041e8 blx 0x1cdc                                        |             fcn_00001cdc ();
    0x000041ec ldr.w r8, [sp, 0x2c]                              |             r8 = var_2ch_2;
    0x000041f0 mov r6, r0                                        |             r6 = r0;
    0x000041f2 ldr.w r1, [pc, 0x40c]                             |             
    0x000041f6 ldr.w r2, [r4, 0xf4]                              |             r2 = *((r4 + 0xf4));
    0x000041fa mov r0, r8                                        |             r0 = r8;
    0x000041fc add r1, pc                                        |             r1 = 0x8802;
    0x000041fe blx 0x1c7c                                        |             fcn_00001c7c ();
    0x00004202 mov r0, r6                                        |             r0 = r6;
    0x00004204 blx 0x1c4c                                        |             fcn_00001c4c ();
    0x00004208 mov r1, r6                                        |             r1 = r6;
    0x0000420a ldr r0, [r4]                                      |             r0 = *(r4);
    0x0000420c blx 0x1b38                                        |             fcn_00001b38 ();
    0x00004210 ldr r1, [pc, 0x3f0]                               |             
    0x00004212 mov r2, r0                                        |             r2 = r0;
    0x00004214 mov r0, r8                                        |             r0 = r8;
    0x00004216 add r1, pc                                        |             r1 = 0x881e;
    0x00004218 blx 0x1c7c                                        |             fcn_00001c7c ();
                                                                 |         }
    0x0000421c ldr.w r1, [r4, 0xbc]                              |         r1 = *((r4 + 0xbc));
    0x00004220 sub.w r8, r5, 0xc                                 |         r8 = r5 - 0xc;
    0x00004224 ldr r0, [r4]                                      |         r0 = *(r4);
    0x00004226 blx 0x1ef4                                        |         loc_imp_ap_hook_get_suexec_identity ();
    0x0000422a mov r2, r7                                        |         r2 = r7;
    0x0000422c mov r6, r0                                        |         r6 = r0;
    0x0000422e mov r1, r4                                        |         r1 = r4;
    0x00004230 mov r0, r8                                        |         r0 = r8;
    0x00004232 bl 0x2290                                         |         r0 = fcn_00002290 (r0, r1, r2, r3);
    0x00004236 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00004238 bne 0x430c                                        |             goto label_88;
                                                                 |         }
    0x0000423a movs r1, 2                                        |         r1 = 2;
    0x0000423c ldr r2, [sp, 0x38]                                |         r2 = var_38h;
    0x0000423e mov r3, r6                                        |         r3 = r6;
    0x00004240 str r1, [sp]                                      |         *(sp) = r1;
    0x00004242 mov r1, r4                                        |         r1 = r4;
    0x00004244 ldr r0, [r5, -0xc]                                |         r0 = *((r5 - 0xc));
    0x00004248 bl 0x35e4                                         |         fcn_000035e4 (r0, r1, r2, r3, r4, r5, r6);
    0x0000424c movs r1, 0xc                                      |         r1 = 0xc;
    0x0000424e ldr r0, [r4]                                      |         r0 = *(r4);
    0x00004250 blx 0x1c04                                        |         r0 = fcn_00001c04 ();
    0x00004254 mov r2, r0                                        |         r2 = r0;
    0x00004256 str r7, [r0, 4]                                   |         *((r0 + 4)) = r7;
    0x00004258 mov r6, r0                                        |         r6 = r0;
    0x0000425a mov r1, r7                                        |         r1 = r7;
    0x0000425c mov r0, r4                                        |         r0 = r4;
    0x0000425e str r4, [r2], 8                                   |         *(r2) = r4;
                                                                 |         r2 += 8;
    0x00004262 bl 0x3540                                         |         r0 = fcn_00003540 (r0, r1, r2);
    0x00004266 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00004268 beq.w 0x44da                                      |             goto label_89;
                                                                 |         }
    0x0000426c ldr r3, [sp, 0x30]                                |         r3 = var_30h_2;
    0x0000426e ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x00004270 ldr.w r3, [r4, 0x108]                             |         r3 = *((r4 + 0x108));
    0x00004274 cmp r2, 0                                         |         
                                                                 |         if (r2 < 0) {
    0x00004276 blt.w 0x43a8                                      |             goto label_90;
                                                                 |         }
    0x0000427a cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0000427c beq.w 0x458a                                      |             goto label_91;
                                                                 |         }
                                                                 | label_36:
    0x00004280 ldr r1, [r3]                                      |         r1 = *(r3);
    0x00004282 cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x00004284 beq.w 0x43ae                                      |             goto label_34;
                                                                 |         }
    0x00004288 ldrsb r1, [r1, r2]                                |         r1 = *((r1 + r2));
    0x0000428a cmp r1, 0                                         |         
                                                                 |         if (r1 < 0) {
    0x0000428c blt.w 0x43ae                                      |             goto label_34;
                                                                 |         }
                                                                 | label_37:
    0x00004290 cmp r1, 6                                         |         
                                                                 |         if (r1 > 6) {
    0x00004292 bgt.w 0x43b6                                      |             goto label_92;
                                                                 |         }
                                                                 | label_28:
    0x00004296 ldr r3, [pc, 0x370]                               |         r3 = *(0x460a);
    0x00004298 ldr r2, [sp, 0x24]                                |         r2 = var_24h_2;
    0x0000429a ldr r7, [r2, r3]                                  |         r7 = *((r2 + r3));
                                                                 | label_32:
    0x0000429c ldr r2, [pc, 0x36c]                               |         
    0x0000429e mov r3, r7                                        |         r3 = r7;
    0x000042a0 ldr r0, [r4]                                      |         r0 = *(r4);
    0x000042a2 mov r1, r6                                        |         r1 = r6;
    0x000042a4 add r2, pc                                        |         r2 = 0x88b4;
    0x000042a6 blx 0x1bd4                                        |         fcn_00001bd4 ();
    0x000042aa mov r1, r8                                        |         r1 = r8;
    0x000042ac ldr r3, [r4]                                      |         r3 = *(r4);
    0x000042ae movs r2, 1                                        |         r2 = 1;
    0x000042b0 sub.w r0, r5, 8                                   |         r0 = r5 - 8;
    0x000042b4 blx 0x1a84                                        |         fcn_00001a84 ();
    0x000042b8 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x000042ba ldrd r2, r3, [r3]                                 |         __asm ("ldrd r2, r3, [r3]");
    0x000042be cmp r2, 1                                         |         
    0x000042c0 sbcs r1, r3, 0                                    |         __asm ("sbcs r1, r3, 0");
    0x000042c4 itett lt                                          |         
                                                                 |         if (r2 >= 1) {
    0x000042c6 ldrlt r3, [r4, 8]                                 |             r3 = *((r4 + 8));
                                                                 |         }
                                                                 |         if (r2 < 1) {
    0x000042c8 ldrge r0, [r5, -0x8]                              |             r0 = *((r5 - 0x8));
                                                                 |         }
                                                                 |         if (r2 >= 1) {
    0x000042cc ldrlt r0, [r5, -0x8]                              |             r0 = *((r5 - 0x8));
                                                                 |         }
                                                                 |         if (r2 < 1) {
    0x000042d0 ldrd r2, r3, [r3, 0x40]                           |             __asm ("ldrd r2, r3, [r3, 0x40]");
                                                                 |         }
    0x000042d4 blx 0x1d30                                        |         fcn_00001d30 ();
    0x000042d8 ldr r2, [pc, 0x334]                               |         
    0x000042da ldr r0, [r4]                                      |         r0 = *(r4);
    0x000042dc ldr r1, [r5, -0xc]                                |         r1 = *((r5 - 0xc));
    0x000042e0 add r2, pc                                        |         r2 = 0x88f4;
    0x000042e2 blx 0x1b14                                        |         fcn_00001b14 ();
    0x000042e6 ldr.w r3, [fp, 0x10]                              |         r3 = *(arg_10h);
    0x000042ea ldr r0, [r5, -0x8]                                |         r0 = *((r5 - 0x8));
    0x000042ee ldr r1, [r3, 0x40]                                |         r1 = *((r3 + 0x40));
    0x000042f0 blx 0x1b2c                                        |         fcn_00001b2c ();
    0x000042f4 ldr r2, [sp, 0x28]                                |         r2 = var_28h;
    0x000042f6 adds r3, r2, 4                                    |         r3 = r2 + 4;
    0x000042f8 str r3, [r0]                                      |         *(r0) = r3;
    0x000042fa ldr r3, [r2, 8]                                   |         r3 = *(0x88fc);
    0x000042fc str r3, [r0, 4]                                   |         *((r0 + 4)) = r3;
    0x000042fe ldr r3, [r2, 8]                                   |         r3 = *(0x88fc);
    0x00004300 str r0, [r3]                                      |         *(r3) = r0;
    0x00004302 movs r3, 1                                        |         r3 = 1;
    0x00004304 str r0, [r2, 8]                                   |         *((r2 + 8)) = r0;
    0x00004306 str.w r3, [sb, 0x10]                              |         __asm ("str.w r3, [sb, 0x10]");
    0x0000430a b 0x4158                                          |         
                                                                 |     } while (1);
                                                                 | label_88:
    0x0000430c ldr r0, [pc, 0x304]                               |     
    0x0000430e mov r6, sb                                        |     r6 = sb;
    0x00004310 ldr r4, [sp, 0x40]                                |     r4 = var_40h;
    0x00004312 ldr r3, [sp, 0x30]                                |     r3 = var_30h_2;
    0x00004314 add r0, pc                                        |     r0 = 0x892c;
    0x00004316 ldr.w r8, [sp, 0x28]                              |     r8 = var_28h;
    0x0000431a ldr.w r1, [r4, 0xe8]                              |     r1 = *((r4 + 0xe8));
    0x0000431e ldr r2, [r3, 8]                                   |     r2 = *((r3 + 8));
    0x00004320 ldr r3, [r5, -0x14]                               |     r3 = *((r5 - 0x14));
    0x00004324 str r0, [sp, 8]                                   |     var_8h_2 = r0;
    0x00004326 ldr r0, [pc, 0x2f0]                               |     
    0x00004328 strd r3, r1, [sp, 0xc]                            |     __asm ("strd r3, r1, [sp, 0xc]");
    0x0000432c movs r3, 3                                        |     r3 = 3;
    0x0000432e movw r1, 0x774                                    |     r1 = 0x774;
    0x00004332 str r4, [sp, 4]                                   |     var_4h_2 = r4;
    0x00004334 add r0, pc                                        |     r0 = 0x8952;
    0x00004336 movs r4, 0                                        |     r4 = 0;
    0x00004338 str r4, [sp]                                      |     *(sp) = r4;
                                                                 | label_30:
    0x0000433a blx 0x1e6c                                        |     fcn_00001e6c ();
                                                                 | label_35:
    0x0000433e ldr r1, [r6, 0x18]                                |     r1 = *((r6 + 0x18));
    0x00004340 ldr r0, [r6]                                      |     r0 = *(r6);
    0x00004342 blx 0x1cdc                                        |     r0 = fcn_00001cdc ();
    0x00004346 mov r4, r0                                        |     r4 = r0;
    0x00004348 ldr r0, [r6, 0x18]                                |     r0 = *((r6 + 0x18));
    0x0000434a blx 0x1cd0                                        |     fcn_00001cd0 ();
    0x0000434e ldr.w r3, [fp, 0x10]                              |     r3 = *(arg_10h);
    0x00004352 mov r1, r0                                        |     r1 = r0;
    0x00004354 ldr r2, [r6]                                      |     r2 = *(r6);
    0x00004356 mov r0, r4                                        |     r0 = r4;
    0x00004358 ldr r3, [r3, 0x40]                                |     r3 = *((r3 + 0x40));
    0x0000435a blx 0x19cc                                        |     loc_imp_apr_bucket_pool_create ();
    0x0000435e add.w r3, r8, 4                                   |     r3 = r8 + 4;
    0x00004362 str r3, [r0]                                      |     *(r0) = r3;
    0x00004364 ldr.w r3, [r8, 8]                                 |     r3 = *((r8 + 8));
    0x00004368 str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x0000436a ldr.w r3, [r8, 8]                                 |     r3 = *((r8 + 8));
    0x0000436e str r0, [r3]                                      |     *(r3) = r0;
    0x00004370 str.w r0, [r8, 8]                                 |     __asm ("str.w r0, [r8, 8]");
                                                                 |     do {
                                                                 | label_84:
    0x00004374 ldr r2, [pc, 0x2a4]                               |         
    0x00004376 add.w r1, sp, 0x2040                              |         r1 += arg_2040h;
    0x0000437a ldr r3, [pc, 0x264]                               |         r3 = *(0x45e2);
    0x0000437c adds r1, 0x1c                                     |         r1 += 0x1c;
    0x0000437e add r2, pc                                        |         r2 = 0x899e;
    0x00004380 ldr r3, [r2, r3]                                  |         r3 = *(0x899e);
    0x00004382 ldr r2, [r3]                                      |         r2 = *(0x899e);
    0x00004384 ldr r3, [r1]                                      |         r3 = *(r1);
    0x00004386 eors r2, r3                                       |         r2 ^= r3;
    0x00004388 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000438c bne.w 0x45d6                                      |             goto label_93;
                                                                 |         }
    0x00004390 movs r0, 0                                        |         r0 = 0;
    0x00004392 add.w sp, sp, 0x2040                              |         
    0x00004396 add sp, 0x24                                      |         
    0x00004398 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_83:
    0x0000439c cmp r3, 0                                         |         
    0x0000439e beq 0x4374                                        |         
                                                                 |     } while (r3 == 0);
    0x000043a0 lsls r3, r2, 0x1c                                 |     r3 = r2 << 0x1c;
                                                                 |     if (r3 < r2) {
    0x000043a2 bmi.w 0x455e                                      |         goto label_85;
                                                                 |     }
    0x000043a6 b 0x4132                                          |     goto label_27;
                                                                 | label_90:
    0x000043a8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000043aa beq.w 0x4550                                      |         goto label_94;
                                                                 |     }
                                                                 | label_34:
    0x000043ae ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000043b0 cmp r3, 6                                         |     
                                                                 |     if (r3 <= 6) {
    0x000043b2 ble.w 0x4296                                      |         goto label_28;
                                                                 |     }
                                                                 | label_92:
    0x000043b6 ldr r3, [pc, 0x268]                               |     
    0x000043b8 mov.w r1, 0x728                                   |     r1 = 0x728;
    0x000043bc strd r0, r4, [sp]                                 |     __asm ("strd r0, r4, [sp]");
    0x000043c0 ldr r0, [pc, 0x260]                               |     
    0x000043c2 add r3, pc                                        |     r3 = 0x89e8;
    0x000043c4 str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x000043c6 movs r3, 7                                        |     r3 = 7;
    0x000043c8 add r0, pc                                        |     r0 = 0x89f0;
    0x000043ca blx 0x1e6c                                        |     fcn_00001e6c ();
    0x000043ce b 0x4296                                          |     goto label_28;
                                                                 | label_86:
    0x000043d0 ldr r1, [sp, 0x3c]                                |     r1 = var_3ch;
    0x000043d2 mov r0, r7                                        |     r0 = r7;
    0x000043d4 blx 0x19fc                                        |     r0 = strcmp (r0, r1);
    0x000043d8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000043da bne.w 0x45a6                                      |         goto label_95;
                                                                 |     }
    0x000043de subs r6, r5, 4                                    |     r6 = r5 - 4;
    0x000043e0 mov r1, r4                                        |     r1 = r4;
    0x000043e2 mov.w r3, 0x2000                                  |     r3 = 0x2000;
    0x000043e6 str r0, [sp]                                      |     *(sp) = r0;
    0x000043e8 mov r2, r6                                        |     r2 = r6;
    0x000043ea ldr.w r4, [sl, 0x2c]                              |     r4 = *((sl + 0x2c));
    0x000043ee mov r0, sb                                        |     r0 = sb;
    0x000043f0 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000043f2 mov r0, r6                                        |     r0 = r6;
    0x000043f4 ldrd r2, r6, [fp, 8]                              |     __asm ("ldrd r2, r6, [arg_8h]");
    0x000043f8 mov r1, r6                                        |     r1 = r6;
    0x000043fa blx 0x1d00                                        |     fcn_00001d00 ();
    0x000043fe ldr r3, [r0, 0x44]                                |     r3 = *((r0 + 0x44));
    0x00004400 mov r4, r0                                        |     r4 = r0;
    0x00004402 cmp r3, 0xc8                                      |     
                                                                 |     if (r3 != 0xc8) {
    0x00004404 bne 0x44cc                                        |         goto label_96;
                                                                 |     }
    0x00004406 ldr.w r3, [r0, 0xf0]                              |     r3 = *((r0 + 0xf0));
                                                                 |     if (r3 != 0) {
    0x0000440a cbz r3, 0x4410                                    |         
    0x0000440c ldrb r3, [r3]                                     |         r3 = *(r3);
                                                                 |         if (r3 != 0) {
    0x0000440e cbnz r3, 0x4446                                   |             goto label_97;
                                                                 |         }
                                                                 |     }
    0x00004410 ldr.w r7, [r4, 0xf4]                              |     r7 = *((r4 + 0xf4));
                                                                 |     if (r7 == 0) {
    0x00004414 cbnz r7, 0x4446                                   |         
    0x00004416 ldr.w r3, [r4, 0x16c]                             |         r3 = *((r4 + 0x16c));
    0x0000441a cmp r3, 1                                         |         
                                                                 |         if (r3 != 1) {
    0x0000441c bne 0x4446                                        |             goto label_97;
                                                                 |         }
    0x0000441e ldr r1, [pc, 0x208]                               |         
    0x00004420 mov r0, r4                                        |         r0 = r4;
    0x00004422 vldr d16, [r6, 0xf0]                              |         __asm ("vldr d16, [r6, 0xf0]");
    0x00004426 add r1, pc                                        |         r1 = 0x8a54;
    0x00004428 vstr d16, [r4, 0xf0]                              |         __asm ("vstr d16, [r4, 0xf0]");
    0x0000442c blx 0x1b44                                        |         fcn_00001b44 ();
    0x00004430 mov r0, r4                                        |         r0 = r4;
    0x00004432 blx 0x1b68                                        |         r0 = fcn_00001b68 ();
    0x00004436 sub.w r0, r0, 0x12c                               |         r0 -= 0x12c;
    0x0000443a cmp r0, 0x63                                      |         
                                                                 |         if (r0 < 0x63) {
    0x0000443c bls 0x44f0                                        |             goto label_98;
                                                                 |         }
                                                                 | label_33:
    0x0000443e mov r0, r4                                        |         r0 = r4;
    0x00004440 blx 0x1dcc                                        |         fcn_00001dcc ();
    0x00004444 b 0x4158                                          |         goto label_29;
                                                                 |     }
                                                                 | label_97:
    0x00004446 mov r0, r4                                        |     r0 = r4;
    0x00004448 ldr r7, [sp, 0x44]                                |     r7 = var_44h;
    0x0000444a ldr.w r8, [sp, 0x28]                              |     r8 = var_28h;
    0x0000444e mov r6, sb                                        |     r6 = sb;
    0x00004450 blx 0x1dcc                                        |     fcn_00001dcc ();
                                                                 |     do {
    0x00004454 ldr r3, [r5, -0x10]                               |         r3 = *((r5 - 0x10));
    0x00004458 ldr r1, [sp, 0x24]                                |         r1 = var_24h_2;
    0x0000445a ldr r2, [pc, 0x18c]                               |         
    0x0000445c ldr r0, [pc, 0x1cc]                               |         
    0x0000445e ldr r2, [r1, r2]                                  |         r2 = *((r1 + r2));
    0x00004460 strd r3, r7, [sp, 0xc]                            |         __asm ("strd r3, r7, [sp, 0xc]");
    0x00004464 add r0, pc                                        |         r0 = 0x8a94;
    0x00004466 ldr r3, [sp, 0x40]                                |         r3 = var_40h;
    0x00004468 ldr r1, [pc, 0x1c4]                               |         
    0x0000446a str r3, [sp, 4]                                   |         var_4h_2 = r3;
    0x0000446c movs r3, 0                                        |         r3 = 0;
    0x0000446e add r1, pc                                        |         r1 = 0x8aa2;
    0x00004470 ldr r2, [r2, 8]                                   |         r2 = *(0x45f2);
    0x00004472 str r3, [sp]                                      |         *(sp) = r3;
    0x00004474 movs r3, 3                                        |         r3 = 3;
    0x00004476 str r1, [sp, 8]                                   |         var_8h_2 = r1;
    0x00004478 movw r1, 0x783                                    |         r1 = 0x783;
    0x0000447c b 0x433a                                          |         goto label_30;
                                                                 | label_87:
    0x0000447e ldr r0, [r4]                                      |         r0 = *(r4);
    0x00004480 blx 0x1b38                                        |         fcn_00001b38 ();
    0x00004484 ldr r1, [pc, 0x1ac]                               |         
    0x00004486 mov r2, r0                                        |         r2 = r0;
    0x00004488 ldr r0, [sp, 0x2c]                                |         r0 = var_2ch_2;
    0x0000448a add r1, pc                                        |         r1 = 0x8ac2;
    0x0000448c blx 0x1c7c                                        |         fcn_00001c7c ();
    0x00004490 mov r2, r8                                        |         r2 = r8;
    0x00004492 ldr.w r1, [r4, 0xf0]                              |         r1 = *((r4 + 0xf0));
    0x00004496 ldr r0, [r4]                                      |         r0 = *(r4);
    0x00004498 blx 0x1db4                                        |         fcn_00001db4 ();
    0x0000449c mov r1, r4                                        |         r1 = r4;
    0x0000449e mov r2, r6                                        |         r2 = r6;
    0x000044a0 blx 0x1d00                                        |         fcn_00001d00 ();
    0x000044a4 ldr.w r1, [r0, 0xe8]                              |         r1 = *((r0 + 0xe8));
    0x000044a8 mov r8, r0                                        |         r8 = r0;
                                                                 |         if (r1 != 0) {
    0x000044aa cbz r1, 0x44c4                                    |             
    0x000044ac ldr.w r2, [r0, 0xf0]                              |             r2 = *((r0 + 0xf0));
    0x000044b0 mov r3, r6                                        |             r3 = r6;
    0x000044b2 ldr r0, [r4]                                      |             r0 = *(r4);
    0x000044b4 blx 0x1eb8                                        |             loc_imp_apr_bucket_eos_create ();
    0x000044b8 ldr r1, [pc, 0x17c]                               |             
    0x000044ba mov r2, r0                                        |             r2 = r0;
    0x000044bc ldr r0, [sp, 0x2c]                                |             r0 = var_2ch_2;
    0x000044be add r1, pc                                        |             r1 = 0x8afa;
    0x000044c0 blx 0x1c7c                                        |             fcn_00001c7c ();
                                                                 |         }
    0x000044c4 mov r0, r8                                        |         r0 = r8;
    0x000044c6 blx 0x1dcc                                        |         fcn_00001dcc ();
    0x000044ca b 0x41e0                                          |         goto label_31;
                                                                 | label_96:
    0x000044cc ldr r7, [sp, 0x44]                                |         r7 = var_44h;
    0x000044ce mov r6, sb                                        |         r6 = sb;
    0x000044d0 ldr.w r8, [sp, 0x28]                              |         r8 = var_28h;
    0x000044d4 blx 0x1dcc                                        |         fcn_00001dcc ();
    0x000044d8 b 0x4454                                          |         
                                                                 |     } while (1);
                                                                 | label_89:
    0x000044da ldr r2, [sp, 0x24]                                |     r2 = var_24h_2;
    0x000044dc mov r1, r6                                        |     r1 = r6;
    0x000044de ldr r3, [pc, 0x128]                               |     r3 = *(0x460a);
    0x000044e0 ldr r0, [r4]                                      |     r0 = *(r4);
    0x000044e2 ldr r7, [r2, r3]                                  |     r7 = *((r2 + r3));
    0x000044e4 ldr r2, [pc, 0x154]                               |     
    0x000044e6 mov r3, r7                                        |     r3 = r7;
    0x000044e8 add r2, pc                                        |     r2 = 0x8b28;
    0x000044ea blx 0x1bd4                                        |     fcn_00001bd4 ();
    0x000044ee b 0x429c                                          |     goto label_32;
                                                                 | label_98:
    0x000044f0 ldr r1, [pc, 0x14c]                               |     
    0x000044f2 ldr.w r0, [r4, 0xb4]                              |     r0 = *((r4 + 0xb4));
    0x000044f6 add r1, pc                                        |     r1 = 0x8b3a;
    0x000044f8 blx 0x1ab4                                        |     r0 = fcn_00001ab4 ();
    0x000044fc mov r1, r0                                        |     r1 = r0;
    0x000044fe cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00004500 beq 0x443e                                        |         goto label_33;
                                                                 |     }
    0x00004502 mov r2, r7                                        |     r2 = r7;
    0x00004504 ldr r0, [r4]                                      |     r0 = *(r4);
    0x00004506 blx 0x1d0c                                        |     fcn_00001d0c ();
    0x0000450a ldr r3, [pc, 0x138]                               |     
    0x0000450c mov r2, r0                                        |     r2 = r0;
    0x0000450e ldr r1, [pc, 0x138]                               |     
    0x00004510 str r7, [sp, 8]                                   |     var_8h_2 = r7;
    0x00004512 add r3, pc                                        |     r3 = 0x8b5c;
    0x00004514 str r0, [sp]                                      |     *(sp) = r0;
    0x00004516 str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x00004518 add r1, pc                                        |     r1 = 0x8b66;
    0x0000451a ldr r3, [pc, 0x130]                               |     
    0x0000451c ldr.w r0, [sb]                                    |     r0 = *(sb);
    0x00004520 add r3, pc                                        |     
    0x00004522 blx 0x1eb8                                        |     r0 = loc_imp_apr_bucket_eos_create ();
    0x00004526 mov r6, r0                                        |     r6 = r0;
    0x00004528 blx 0x1cd0                                        |     fcn_00001cd0 ();
    0x0000452c ldr.w r3, [fp, 0x10]                              |     r3 = *(arg_10h);
    0x00004530 mov r1, r0                                        |     r1 = r0;
    0x00004532 ldr.w r2, [sb]                                    |     r2 = *(sb);
    0x00004536 mov r0, r6                                        |     r0 = r6;
    0x00004538 ldr r3, [r3, 0x40]                                |     r3 = *(0x8bb2);
    0x0000453a blx 0x19cc                                        |     loc_imp_apr_bucket_pool_create ();
    0x0000453e ldr r2, [sp, 0x28]                                |     r2 = var_28h;
    0x00004540 adds r3, r2, 4                                    |     r3 = r2 + 4;
    0x00004542 str r3, [r0]                                      |     *(r0) = r3;
    0x00004544 ldr r3, [r2, 8]                                   |     r3 = *((r2 + 8));
    0x00004546 str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x00004548 ldr r3, [r2, 8]                                   |     r3 = *((r2 + 8));
    0x0000454a str r0, [r3]                                      |     *(r3) = r0;
    0x0000454c str r0, [r2, 8]                                   |     *((r2 + 8)) = r0;
    0x0000454e b 0x443e                                          |     goto label_33;
                                                                 | label_94:
    0x00004550 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x00004552 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x00004554 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004556 bne.w 0x43ae                                      |         goto label_34;
                                                                 |     }
    0x0000455a ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x0000455c b 0x45a2                                          |     goto label_99;
                                                                 | label_85:
    0x0000455e ldr r2, [sp, 0x24]                                |     r2 = var_24h_2;
    0x00004560 ldr r3, [pc, 0x84]                                |     r3 = *(0x45e8);
    0x00004562 ldr r1, [sp, 0x40]                                |     r1 = var_40h;
    0x00004564 ldr r0, [pc, 0xe8]                                |     
    0x00004566 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00004568 add r0, pc                                        |     r0 = 0x8bbc;
    0x0000456a ldr r2, [r3, 8]                                   |     r2 = *(0x45f0);
    0x0000456c ldr.w r3, [r1, 0xe8]                              |     r3 = *((r1 + 0xe8));
    0x00004570 str r1, [sp, 4]                                   |     var_4h_2 = r1;
    0x00004572 mov.w r1, 0x760                                   |     r1 = 0x760;
    0x00004576 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00004578 ldr r3, [pc, 0xd8]                                |     
    0x0000457a add r3, pc                                        |     r3 = 0x8bd2;
    0x0000457c str r3, [sp, 8]                                   |     var_8h_2 = r3;
    0x0000457e movs r3, 0                                        |     r3 = 0;
    0x00004580 str r3, [sp]                                      |     *(sp) = r3;
    0x00004582 movs r3, 3                                        |     r3 = 3;
    0x00004584 blx 0x1e6c                                        |     fcn_00001e6c ();
    0x00004588 b 0x433e                                          |     goto label_35;
                                                                 | label_91:
    0x0000458a ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x0000458c ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x0000458e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00004590 bne.w 0x4280                                      |         goto label_36;
                                                                 |     }
    0x00004594 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x00004596 ldr r1, [r3, 0x10]                                |     r1 = *((r3 + 0x10));
                                                                 |     if (r1 == 0) {
    0x00004598 cbz r1, 0x45a2                                    |         goto label_99;
                                                                 |     }
    0x0000459a ldrsb r1, [r1, r2]                                |     r1 = *((r1 + r2));
    0x0000459c cmp r1, 0                                         |     
                                                                 |     if (r1 >= 0) {
    0x0000459e bge.w 0x4290                                      |         goto label_37;
                                                                 |     }
                                                                 | label_99:
    0x000045a2 adds r3, 0x10                                     |     r3 += 0x10;
    0x000045a4 b 0x43ae                                          |     goto label_34;
                                                                 | label_95:
    0x000045a6 ldr r3, [pc, 0x40]                                |     r3 = *(0x45ea);
    0x000045a8 mov r6, sb                                        |     r6 = sb;
    0x000045aa ldr r2, [sp, 0x24]                                |     r2 = var_24h_2;
    0x000045ac mov sb, r7                                        |     sb = r7;
    0x000045ae ldr r1, [pc, 0xa8]                                |     
    0x000045b0 ldr r7, [sp, 0x44]                                |     r7 = var_44h;
    0x000045b2 ldr r2, [r2, r3]                                  |     r2 = *((r2 + r3));
    0x000045b4 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x000045b6 add r1, pc                                        |     r1 = 0x8c14;
    0x000045b8 ldr r0, [pc, 0xa0]                                |     
    0x000045ba strd sb, r7, [sp, 0xc]                            |     __asm ("strd sb, r7, [sp, 0xc]");
    0x000045be str r3, [sp, 4]                                   |     var_4h_2 = r3;
    0x000045c0 movs r3, 0                                        |     r3 = 0;
    0x000045c2 ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x000045c4 add r0, pc                                        |     r0 = 0x8c24;
    0x000045c6 str r3, [sp]                                      |     *(sp) = r3;
    0x000045c8 movs r3, 3                                        |     r3 = 3;
    0x000045ca str r1, [sp, 8]                                   |     var_8h_2 = r1;
    0x000045cc movw r1, 0x78a                                    |     r1 = 0x78a;
    0x000045d0 ldr.w r8, [sp, 0x28]                              |     r8 = var_28h;
    0x000045d4 b 0x433a                                          |     goto label_30;
                                                                 | label_93:
    0x000045d6 blx 0x1b20                                        |     fcn_00001b20 ();
    0x000045da nop                                               |     
    0x000045dc cmp r5, 0x1c                                      |     
    0x000045de movs r0, r0                                       |     
    0x000045e0 lsls r0, r1, 8                                    |     r0 = r1 << 8;
    0x000045e2 movs r0, r0                                       |     
    0x000045e4 cmp r5, 8                                         |     
    0x000045e6 movs r0, r0                                       |     
    0x000045e8 lsls r0, r2, 8                                    |     r0 = r2 << 8;
    0x000045ea movs r0, r0                                       |     
    0x000045ec lsrs r6, r4, 0x19                                 |     r6 = r4 >> 0x19;
    0x000045ee movs r0, r0                                       |     
    0x000045f0 lsls r0, r5, 0x17                                 |     r0 = r5 << 0x17;
    0x000045f2 movs r0, r0                                       |     
    0x000045f4 lsrs r2, r2, 0x1a                                 |     r2 >>= 0x1a;
    0x000045f6 movs r0, r0                                       |     
    0x000045f8 cmp r7, 6                                         |     
    0x000045fa movs r0, r0                                       |     
    0x000045fc lsrs r4, r3, 0xf                                  |     r4 = r3 >> 0xf;
    0x000045fe movs r0, r0                                       |     
    0x00004600 lsrs r4, r6, 0x17                                 |     r4 = r6 >> 0x17;
    0x00004602 movs r0, r0                                       |     
    0x00004604 lsrs r2, r5, 0x17                                 |     r2 = r5 >> 0x17;
    0x00004606 movs r0, r0                                       |     
    0x00004608 lsls r4, r3, 8                                    |     r4 = r3 << 8;
    0x0000460a movs r0, r0                                       |     
    0x0000460c bl 0x14260e                                       |     void (*0x14260e)(uint32_t, uint32_t) (r0, r2);
    0x00004610 udf 0x85                                          |     __asm ("udf 0x85");
                                                                 | }

[*] Function printf used 3 times mod_cgid.so