[*] Binary protection state of httpd

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


[*] Function strcpy tear down of httpd

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x3ecf4 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ap_cookie_read ()                                | void ap_cookie_read (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_18h_3;
                                                                 |     int16_t var_1ch_3;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x0003ecf4 push.w {r4, r5, r6, r7, r8, sb, sl, lr}           |     
    0x0003ecf8 mov r7, r2                                        |     r7 = r2;
    0x0003ecfa ldr r2, [pc, 0xc8]                                |     
    0x0003ecfc mov r8, r3                                        |     r8 = r3;
    0x0003ecfe sub sp, 0x30                                      |     
    0x0003ed00 movs r5, 0                                        |     r5 = 0;
    0x0003ed02 ldr r3, [pc, 0xc4]                                |     r3 = *(0x3edca);
    0x0003ed04 mov r6, r1                                        |     r6 = r1;
    0x0003ed06 add r2, pc                                        |     r2 = 0x7dad0;
    0x0003ed08 mov r4, r0                                        |     r4 = r0;
    0x0003ed0a movs r1, 0xa                                      |     r1 = 0xa;
    0x0003ed0c ldr.w sl, [pc, 0xbc]                              |     sl = *(0x0003edcc);
    0x0003ed10 ldr r3, [r2, r3]                                  |     
    0x0003ed12 ldr.w sb, [pc, 0xbc]                              |     
    0x0003ed16 add sl, pc                                        |     sl += pc;
    0x0003ed18 ldr r3, [r3]                                      |     r3 = *(0x7dad0);
    0x0003ed1a str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0003ed1c mov.w r3, 0                                       |     r3 = 0;
    0x0003ed20 str r0, [sp, 0x18]                                |     var_18h_3 = r0;
    0x0003ed22 ldr r0, [r0]                                      |     r0 = *(r0);
    0x0003ed24 add sb, pc                                        |     sb = 0x7dafa;
    0x0003ed26 str r5, [sp, 0x20]                                |     var_20h = r5;
    0x0003ed28 blx 0x17f40                                       |     fcn_00017f40 ();
    0x0003ed2c str r0, [sp, 0x24]                                |     var_24h = r0;
    0x0003ed2e mov r3, sl                                        |     r3 = sl;
    0x0003ed30 ldr r0, [pc, 0xa0]                                |     
    0x0003ed32 add r1, sp, 0x18                                  |     r1 += var_18h_3;
    0x0003ed34 strd sb, r5, [sp]                                 |     __asm ("strd sb, r5, [sp]");
    0x0003ed38 ldr.w r2, [r4, 0xb0]                              |     r2 = *((r4 + 0xb0));
    0x0003ed3c add r0, pc                                        |     r0 = 0x7db14;
    0x0003ed3e str r6, [sp, 0x1c]                                |     var_1ch_3 = r6;
    0x0003ed40 str r5, [sp, 0x28]                                |     var_28h = r5;
    0x0003ed42 blx 0x17ddc                                       |     fcn_00017ddc ();
    0x0003ed46 ldr r6, [sp, 0x28]                                |     r6 = var_28h;
                                                                 |     if (r6 != 0) {
    0x0003ed48 cbnz r6, 0x3ed96                                  |         goto label_1;
                                                                 |     }
    0x0003ed4a cmp.w r8, 0                                       |     
    0x0003ed4e bne 0x3ed70                                       |     
                                                                 |     while (1) {
    0x0003ed50 ldr r3, [sp, 0x20]                                |         r3 = var_20h;
    0x0003ed52 str r3, [r7]                                      |         *(r7) = r3;
                                                                 | label_0:
    0x0003ed54 ldr r2, [pc, 0x80]                                |         
    0x0003ed56 ldr r3, [pc, 0x70]                                |         r3 = *(0x3edca);
    0x0003ed58 add r2, pc                                        |         r2 = 0x7db34;
    0x0003ed5a ldr r3, [r2, r3]                                  |         r3 = *(0x7db34);
    0x0003ed5c ldr r2, [r3]                                      |         r2 = *(0x7db34);
    0x0003ed5e ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x0003ed60 eors r2, r3                                       |         r2 ^= r3;
    0x0003ed62 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0003ed66 bne 0x3edc0                                       |             goto label_2;
                                                                 |         }
    0x0003ed68 mov r0, r6                                        |         r0 = r6;
    0x0003ed6a add sp, 0x30                                      |         
    0x0003ed6c pop.w {r4, r5, r6, r7, r8, sb, sl, pc}            |         
    0x0003ed70 ldr.w r0, [r4, 0xb0]                              |         r0 = *((r4 + 0xb0));
    0x0003ed74 mov r1, sl                                        |         r1 = sl;
    0x0003ed76 blx 0x17a14                                       |         apr_dynamic_fn_retrieve ();
    0x0003ed7a ldr.w r0, [r4, 0xb0]                              |         r0 = *((r4 + 0xb0));
    0x0003ed7e mov r1, sb                                        |         r1 = sb;
    0x0003ed80 blx 0x17a14                                       |         apr_dynamic_fn_retrieve ();
    0x0003ed84 ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x0003ed86 ldr.w r1, [r4, 0xb0]                              |         r1 = *((r4 + 0xb0));
    0x0003ed8a ldr r0, [r4]                                      |         r0 = *(r4);
    0x0003ed8c blx 0x18140                                       |         strcpy (r0, r1)
    0x0003ed90 str.w r0, [r4, 0xb0]                              |         __asm ("str.w r0, [r4, 0xb0]");
    0x0003ed94 b 0x3ed50                                         |         
                                                                 |     }
                                                                 | label_1:
    0x0003ed96 ldr.w r0, [r4, 0xe4]                              |     r0 = *((r4 + 0xe4));
    0x0003ed9a movs r3, 3                                        |     r3 = 3;
    0x0003ed9c ldr r1, [sp, 0x1c]                                |     r1 = var_1ch_3;
    0x0003ed9e mov r2, r5                                        |     r2 = r5;
    0x0003eda0 ldr r6, [pc, 0x38]                                |     
    0x0003eda2 str r4, [sp, 4]                                   |     var_4h_2 = r4;
    0x0003eda4 strd r1, r0, [sp, 0xc]                            |     __asm ("strd r1, r0, [sp, 0xc]");
    0x0003eda8 movw r1, 0x103                                    |     r1 = 0x103;
    0x0003edac ldr r0, [pc, 0x30]                                |     
    0x0003edae add r6, pc                                        |     r6 = 0x7db8e;
    0x0003edb0 str r6, [sp, 8]                                   |     var_8h_2 = r6;
    0x0003edb2 movw r6, 0x4e2e                                   |     r6 = 0x4e2e;
    0x0003edb6 str r5, [sp]                                      |     *(sp) = r5;
    0x0003edb8 add r0, pc                                        |     r0 = 0x7db9c;
    0x0003edba bl 0x38a7c                                        |     ap_log_rerror_ ();
    0x0003edbe b 0x3ed54                                         |     goto label_0;
                                                                 | label_2:
    0x0003edc0 blx 0x1845c                                       |     fcn_0001845c ();
    0x0003edc4 ldc2 p0, c0, [r2], -4                             |     __asm ("ldc2 p0, c0, [r2], -4");
    0x0003edc8 lsls r0, r5, 0x18                                 |     r0 = r5 << 0x18;
    0x0003edca movs r0, r0                                       |     
    0x0003edcc ldrh r2, [r1, r7]                                 |     r2 = *((r1 + r7));
    0x0003edce movs r1, r0                                       |     r1 = r0;
    0x0003edd0 ldr r4, [r1, 0x68]                                |     r4 = *((r1 + 0x68));
    0x0003edd2 movs r1, r0                                       |     r1 = r0;
    0x0003edd4 invalid                                           |     
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x467d8 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ap_http_filter ()                                | void ap_http_filter (int16_t arg_1h, int16_t arg_4h, int16_t arg_8h, int16_t arg_108h, int16_t arg_10ch, int16_t arg1, int16_t arg2, uint32_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int32_t var_10h;
                                                                 |     int32_t var_10h_2;
                                                                 |     int32_t var_18h;
                                                                 |     int32_t var_18h_2;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_5ch;
                                                                 |     int16_t var_60h;
                                                                 |     int16_t var_64h;
                                                                 |     int16_t var_68h;
                                                                 |     int16_t var_cch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x000467d8 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x000467dc mov r8, r0                                        |     r8 = r0;
    0x000467de ldr.w r5, [pc, 0xb54]                             |     
    0x000467e2 cmp r2, 1                                         |     
    0x000467e4 ldr.w r4, [pc, 0xb50]                             |     r4 = *(0x47338);
    0x000467e8 add r5, pc                                        |     r5 = 0x8db22;
    0x000467ea vpush {d8, d9}                                    |     __asm ("vpush {d8, d9}");
    0x000467ee ldr.w sb, [pc, 0xb4c]                             |     sb = sym.imp.strcpy
    0x000467f2 sub sp, 0xd4                                      |     
    0x000467f4 ldr r4, [r5, r4]                                  |     
    0x000467f6 ldr r0, [r0, 0xc]                                 |     r0 = *((r0 + 0xc));
    0x000467f8 add sb, pc                                        |     sb += pc;
    0x000467fa ldr r6, [sp, 0x108]                               |     r6 = *(arg_108h);
    0x000467fc ldr r4, [r4]                                      |     r4 = *(0x8db22);
    0x000467fe str r4, [sp, 0xcc]                                |     var_cch = r4;
    0x00046800 mov.w r4, 0                                       |     r4 = 0;
    0x00046804 ldr.w r4, [pc, 0xb38]                             |     
    0x00046808 ldr.w sl, [r8, 4]                                 |     sl = *((r8 + 4));
    0x0004680c ldr.w r4, [sb, r4]                                |     r4 = *((sb + r4));
    0x00046810 str r6, [sp, 0x2c]                                |     var_2ch = r6;
    0x00046812 ldr r6, [sp, 0x10c]                               |     r6 = *(arg_10ch);
    0x00046814 ldr r5, [r4, 8]                                   |     r5 = *(0x47348);
    0x00046816 ldr r4, [r0, 8]                                   |     r4 = *((r0 + 8));
    0x00046818 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0004681a str r6, [sp, 0x30]                                |     var_30h = r6;
    0x0004681c ldr r4, [r4, 0x18]                                |     
    0x0004681e ldr.w r4, [r4, r5, lsl 2]                         |     r4 = *(0x47358);
    0x00046822 str r4, [sp, 0x40]                                |     var_40h = r4;
    0x00046824 ldrb.w r4, [r4, 0x41]                             |     r4 = *((r4 + 0x41));
    0x00046828 str r4, [sp, 0x3c]                                |     var_3ch = r4;
                                                                 |     if (r2 > 1) {
    0x0004682a bhi.w 0x46b74                                     |         goto label_68;
                                                                 |     }
    0x0004682e mov fp, r1                                        |     
    0x00046830 mov r5, r2                                        |     r5 = r2;
    0x00046832 cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00046836 beq.w 0x46dec                                     |         goto label_69;
                                                                 |     }
                                                                 | label_15:
    0x0004683a ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x0004683c ldrb.w r6, [sl, 0x28]                             |     r6 = *((sl + 0x28));
    0x00046840 and r1, r6, 1                                     |     r1 = r6 & 1;
    0x00046844 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00046846 beq.w 0x46a48                                     |         goto label_70;
                                                                 |     }
                                                                 | label_0:
    0x0004684a cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x0004684c bne.w 0x46aae                                     |         goto label_71;
                                                                 |     }
                                                                 | label_1:
    0x00046850 add r3, sp, 0x5c                                  |     r3 += var_5ch;
    0x00046852 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x00046854 mov r3, r5                                        |     r3 = r5;
    0x00046856 mov r5, r8                                        |     r5 = r8;
    0x00046858 mov r8, fp                                        |     r8 = fp;
    0x0004685a mov fp, r3                                        |     
                                                                 | label_8:
    0x0004685c mov r0, r8                                        |     r0 = r8;
    0x0004685e blx 0x1825c                                       |     fcn_0001825c ();
    0x00046862 ldr.w r3, [sl, 0x24]                              |     r3 = *((sl + 0x24));
    0x00046864 adds r0, 0x24                                     |     r0 += 0x24;
    0x00046866 cmp r3, 0xa                                       |     
                                                                 |     if (r3 > 0xa) {
    0x00046868 bhi.w 0x4756e                                     |         goto label_72;
                                                                 |     }
                                                                 |     /* switch table (12 cases) at 0x46870 */
    0x0004686c tbh [pc, r3, lsl 1]                               |     __asm ("tbh [pc, r3, lsl 1]");
    0x00046886 ldr r4, [sp, 0x24]                                |     r4 = var_24h;
    0x00046888 movs r2, 1                                        |     r2 = 1;
    0x0004688a vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x0004688e mov r1, r8                                        |     r1 = r8;
    0x00046890 mov r3, r4                                        |     r3 = r4;
    0x00046892 vstr d16, [sp]                                    |     __asm ("vstr d16, [sp]");
    0x00046896 ldr r0, [r5, 8]                                   |     r0 = *((r5 + 8));
    0x00046898 bl 0x20578                                        |     ap_get_brigade ();
    0x0004689c cmp r4, 1                                         |     
                                                                 |     if (r4 != 1) {
    0x0004689e bne.w 0x46bba                                     |         goto label_73;
                                                                 |     }
    0x000468a2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000468a4 bne.w 0x46fca                                     |         goto label_74;
                                                                 |     }
    0x000468a8 mov ip, r8                                        |     
    0x000468aa ldr r3, [ip, 4]!                                  |     r3 = *((ip += 4));
    0x000468ae cmp r3, ip                                        |     
                                                                 |     if (r3 == ip) {
    0x000468b0 beq.w 0x46b70                                     |         goto label_18;
                                                                 |     }
                                                                 | label_3:
    0x000468b4 ldr.w r4, [r8, 4]                                 |     r4 = *((r8 + 4));
    0x000468b8 cmp ip, r4                                        |     
                                                                 |     if (ip == r4) {
    0x000468ba beq.w 0x46c4c                                     |         goto label_75;
                                                                 |     }
    0x000468be vmov.i32 d9, 0                                    |     __asm ("vmov.i32 d9, 0");
    0x000468c2 mov r7, ip                                        |     r7 = ip;
    0x000468c4 mov r6, r8                                        |     r6 = r8;
    0x000468c6 add r3, sp, 0x60                                  |     r3 += var_60h;
    0x000468c8 str r3, [sp, 0x38]                                |     var_38h = r3;
    0x000468ca str.w fp, [sp, 0x54]                              |     __asm ("str.w fp, [var_54h]");
    0x000468ce str.w sb, [sp, 0x34]                              |     __asm ("str.w sb, [var_34h]");
                                                                 | label_7:
    0x000468d2 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
    0x000468d4 ldr.w fp, [r3, 8]                                 |     fp = *((r3 + 8));
    0x000468d8 cmp.w fp, 0                                       |     
                                                                 |     if (fp != 0) {
    0x000468dc bne.w 0x46c22                                     |         goto label_76;
                                                                 |     }
    0x000468e0 ldr.w r8, [r3, 0x10]                              |     r8 = *((r3 + 0x10));
    0x000468e4 mov r0, r4                                        |     r0 = r4;
    0x000468e6 ldr r2, [sp, 0x38]                                |     r2 = var_38h;
    0x000468e8 mov r3, fp                                        |     r3 = fp;
    0x000468ea ldr r1, [sp, 0x28]                                |     r1 = var_28h;
    0x000468ec blx r8                                            |     r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000468ee cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000468f0 bne.w 0x47094                                     |         goto label_77;
                                                                 |     }
    0x000468f4 ldr r2, [r5, 0xc]                                 |     r2 = *((r5 + 0xc));
    0x000468f6 ldr.w sb, [sp, 0x60]                              |     sb = var_60h;
    0x000468fa ldr r3, [r2, 8]                                   |     r3 = *((r2 + 8));
    0x000468fc ldr r0, [r3, 0x6c]                                |     r0 = *((r3 + 0x6c));
    0x000468fe cmp.w sb, 0                                       |     
                                                                 |     if (sb == 0) {
    0x00046902 beq.w 0x46c06                                     |         goto label_78;
                                                                 |     }
    0x00046906 ldrb.w r3, [sl, 0x28]                             |     r3 = *((sl + 0x28));
    0x0004690a mov.w fp, 1                                       |     
    0x0004690e str r6, [sp, 0x50]                                |     var_50h = r6;
    0x00046910 mov r6, sb                                        |     r6 = sb;
    0x00046912 strd r7, r0, [sp, 0x44]                           |     __asm ("strd r7, r0, [sp, 0x44]");
    0x00046916 orr r3, r3, 2                                     |     r3 |= 2;
    0x0004691a str r4, [sp, 0x4c]                                |     var_4ch = r4;
    0x0004691c strb.w r3, [sl, 0x28]                             |     *((sl + 0x28)) = r3;
    0x00046920 ldr r3, [sp, 0x5c]                                |     r3 = var_5ch;
    0x00046922 ldr r4, [sp, 0x3c]                                |     r4 = var_3ch;
    0x00046924 vmov.i32 d8, 0                                    |     __asm ("vmov.i32 d8, 0");
    0x00046928 add.w r8, r3, -1                                  |     r8 = r3 + -1;
    0x0004692c mov sb, r8                                        |     sb = r8;
    0x0004692e mov r8, r2                                        |     r8 = r2;
    0x00046930 ldr.w r2, [sl, 0x24]                              |     r2 = *((sl + 0x24));
    0x00046934 ldrb r7, [sb, 1]!                                 |     r7 = *((sb += 1));
    0x00046938 sub.w r0, r2, 8                                   |     r0 = r2 - 8;
    0x0004693c cmp r0, 1                                         |     
                                                                 |     if (r0 < 1) {
    0x0004693e bls 0x46990                                       |         goto label_79;
                                                                 |     }
                                                                 |     do {
    0x00046940 cmp r2, 2                                         |         
                                                                 |         if (r2 == 2) {
    0x00046942 beq.w 0x46cc0                                     |             goto label_80;
                                                                 |         }
    0x00046946 cmp r7, 0xa                                       |         
                                                                 |         if (r7 == 0xa) {
    0x00046948 beq.w 0x46d24                                     |             goto label_81;
                                                                 |         }
    0x0004694c cmp r2, 6                                         |         
                                                                 |         if (r2 == 6) {
    0x0004694e beq 0x469a0                                       |             goto label_9;
                                                                 |         }
    0x00046950 cmp r7, 0xd                                       |         
                                                                 |         if (r7 == 0xd) {
    0x00046952 beq.w 0x46d3a                                     |             goto label_82;
                                                                 |         }
    0x00046956 cmp r7, 0x3b                                      |         
                                                                 |         if (r7 == 0x3b) {
    0x00046958 beq.w 0x46d56                                     |             goto label_83;
                                                                 |         }
    0x0004695c cmp r2, 4                                         |         
                                                                 |         if (r2 != 4) {
    0x0004695e bne.w 0x46d5e                                     |             goto label_84;
                                                                 |         }
    0x00046962 cmp r7, 9                                         |         
                                                                 |         if (r7 != 9) {
    0x00046964 beq 0x46974                                       |             
    0x00046966 blx 0x183c8                                       |             r0 = stack_chk_fail ();
    0x0004696a ldr r2, [r0]                                      |             r2 = *(r0);
    0x0004696c ldrh.w r3, [r2, r7, lsl 1]                        |             offset_0 = r7 << 1;
                                                                 |             r3 = *((r2 + offset_0));
    0x00046970 lsls r7, r3, 0x1e                                 |             r7 = r3 << 0x1e;
                                                                 |             if (r7 < r3) {
    0x00046972 bmi 0x469a0                                       |                 goto label_9;
                                                                 |             }
                                                                 |         }
                                                                 | label_10:
    0x00046974 cmp r6, fp                                        |         
    0x00046976 add.w r3, fp, 1                                   |         r3 += arg_1h;
                                                                 |         if (r6 < fp) {
    0x0004697a bls.w 0x46bfa                                     |             goto label_85;
                                                                 |         }
    0x0004697e ldr.w r2, [sl, 0x24]                              |         r2 = *((sl + 0x24));
    0x00046982 mov fp, r3                                        |         
    0x00046984 ldrb r7, [sb, 1]!                                 |         r7 = *((sb += 1));
    0x00046988 sub.w r0, r2, 8                                   |         r0 = r2 - 8;
    0x0004698c cmp r0, 1                                         |         
    0x0004698e bhi 0x46940                                       |         
                                                                 |     } while (r0 > 1);
                                                                 | label_79:
    0x00046990 cmp r7, 0xa                                       |     
                                                                 |     if (r7 == 0xa) {
    0x00046992 beq.w 0x46d12                                     |         goto label_86;
                                                                 |     }
    0x00046996 cmp r2, 8                                         |     
    0x00046998 it eq                                             |     
                                                                 |     if (r2 == 8) {
    0x0004699a cmpeq r7, 0xd                                     |         __asm ("cmpeq r7, 0xd");
                                                                 |     }
                                                                 |     if (r2 == 8) {
    0x0004699c beq.w 0x46d42                                     |         goto label_87;
                                                                 |     }
                                                                 | label_9:
    0x000469a0 ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
    0x000469a4 mov r1, r8                                        |     r1 = r8;
    0x000469a6 movs r7, 1                                        |     r7 = 1;
    0x000469a8 mov r8, r5                                        |     r8 = r5;
    0x000469aa movs r6, 0x16                                     |     r6 = 0x16;
                                                                 | label_14:
    0x000469ac ldr.w r3, [pc, 0x994]                             |     r3 = *(0x47344);
    0x000469b0 ldr.w r0, [r1, 0x108]                             |     r0 = *((r1 + 0x108));
    0x000469b4 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000469b8 ldr r2, [r3, 8]                                   |     r2 = *(0x4734c);
    0x000469ba cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x000469bc blt.w 0x470e4                                     |         goto label_88;
                                                                 |     }
    0x000469c0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000469c2 beq.w 0x46bd4                                     |         goto label_89;
                                                                 |     }
                                                                 | label_4:
    0x000469c6 ldr r3, [r0]                                      |     r3 = *(r0);
    0x000469c8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000469ca beq.w 0x46bee                                     |         goto label_22;
                                                                 |     }
    0x000469ce ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x000469d0 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x000469d2 blt.w 0x46bee                                     |         goto label_22;
                                                                 |     }
                                                                 | label_5:
    0x000469d6 cmp r3, 5                                         |     
    0x000469d8 ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x000469da movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x000469dc movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 != 0) {
                                                                 | label_6:
    0x000469de cbz r3, 0x46a0a                                   |         
    0x000469e0 cmp r6, 0x1c                                      |         
                                                                 |         if (r6 == 0x1c) {
    0x000469e2 beq.w 0x470de                                     |             goto label_90;
                                                                 |         }
    0x000469e6 ldr.w r3, [pc, 0x960]                             |         r3 = *(0x00047348);
    0x000469ea add r3, pc                                        |         r3 += pc;
                                                                 | label_21:
    0x000469ec str r3, [sp, 0xc]                                 |         var_ch = r3;
    0x000469ee ldr.w r3, [pc, 0x95c]                             |         r3 = *(0x0004734c);
    0x000469f2 ldr.w r0, [pc, 0x95c]                             |         r0 = *(0x00047350);
    0x000469f6 strd r6, r1, [sp]                                 |         __asm ("strd r6, r1, [sp]");
    0x000469fa movw r1, 0x236                                    |         r1 = 0x236;
    0x000469fe add r3, pc                                        |         r3 += pc;
    0x00046a00 str r3, [sp, 8]                                   |         var_8h = r3;
    0x00046a02 add r0, pc                                        |         r0 += pc;
    0x00046a04 movs r3, 6                                        |         r3 = 6;
    0x00046a06 bl 0x38a7c                                        |         ap_log_rerror_ ();
                                                                 |     }
                                                                 |     if (r7 != 0) {
    0x00046a0a cbz r7, 0x46a22                                   |         
    0x00046a0c cmp r6, 0x1c                                      |         
    0x00046a0e movw r2, 0x19d                                    |         r2 = 0x19d;
    0x00046a12 mov r1, r8                                        |         r1 = r8;
    0x00046a14 it ne                                             |         
                                                                 |         if (r6 == 0x1c) {
    0x00046a16 movne r2, 0x190                                   |             r2 = 0x190;
                                                                 |         }
    0x00046a1a mov r0, sl                                        |         r0 = sl;
    0x00046a1c bl 0x45e48                                        |         r0 = fcn_00045e48 (r0, r1, r2);
    0x00046a20 mov r6, r0                                        |         r6 = r0;
                                                                 |     }
                                                                 | label_2:
    0x00046a22 ldr.w r2, [pc, 0x930]                             |     r2 = *(0x00047354);
    0x00046a26 ldr.w r3, [pc, 0x910]                             |     r3 = *(0x4733a);
    0x00046a2a add r2, pc                                        |     r2 += pc;
    0x00046a2c ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00046a2e ldr r2, [r3]                                      |     r2 = *(0x4733a);
    0x00046a30 ldr r3, [sp, 0xcc]                                |     r3 = var_cch;
    0x00046a32 eors r2, r3                                       |     r2 ^= r3;
    0x00046a34 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00046a38 bne.w 0x47204                                     |         goto label_91;
                                                                 |     }
    0x00046a3c mov r0, r6                                        |     r0 = r6;
    0x00046a3e add sp, 0xd4                                      |     
    0x00046a40 vpop {d8, d9}                                     |     __asm ("vpop {d8, d9}");
    0x00046a44 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_70:
    0x00046a48 ldr.w r3, [sl, 0x24]                              |     r3 = *((sl + 0x24));
    0x00046a4c cmp r3, 2                                         |     
                                                                 |     if (r3 == 2) {
    0x00046a4e beq 0x46a64                                       |         goto label_92;
                                                                 |     }
    0x00046a50 cmp r3, 1                                         |     
                                                                 |     if (r3 != 1) {
    0x00046a52 bne.w 0x4684a                                     |         goto label_0;
                                                                 |     }
    0x00046a56 ldrd r2, r3, [sl]                                 |     __asm ("ldrd r2, r3, [sl]");
    0x00046a5a cmp r2, 1                                         |     
    0x00046a5c sbcs r3, r3, 0                                    |     __asm ("sbcs r3, r3, 0");
                                                                 |     if (r2 < 1) {
    0x00046a60 blt.w 0x4684a                                     |         goto label_0;
                                                                 |     }
                                                                 | label_92:
    0x00046a64 ldr.w r0, [r8, 0xc]                               |     r0 = *((r8 + 0xc));
    0x00046a68 ldr.w r3, [r0, 0x94]                              |     r3 = *((r0 + 0x94));
    0x00046a6c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00046a6e beq.w 0x4684a                                     |         goto label_0;
                                                                 |     }
    0x00046a72 ldr r3, [r0, 0x28]                                |     r3 = *((r0 + 0x28));
    0x00046a74 cmp.w r3, 0x3e8                                   |     
                                                                 |     if (r3 <= 0x3e8) {
    0x00046a78 ble.w 0x4684a                                     |         goto label_0;
                                                                 |     }
                                                                 |     if (r1 != 0) {
    0x00046a7c cbnz r1, 0x46aae                                  |         goto label_71;
                                                                 |     }
    0x00046a7e ldr.w r3, [r0, 0xfc]                              |     r3 = *((r0 + 0xfc));
    0x00046a82 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00046a84 bne.w 0x46850                                     |         goto label_1;
                                                                 |     }
    0x00046a88 ldrd r2, r3, [r0, 0x68]                           |     __asm ("ldrd r2, r3, [r0, 0x68]");
    0x00046a8c orrs r3, r2                                       |     r3 |= r2;
                                                                 |     if (r3 != r2) {
    0x00046a8e bne.w 0x46850                                     |         goto label_1;
                                                                 |     }
    0x00046a92 ldr r4, [r0, 0x44]                                |     r4 = *((r0 + 0x44));
    0x00046a94 sub.w r3, r4, 0xc8                                |     r3 = r4 - 0xc8;
    0x00046a98 cmp r3, 0x63                                      |     
                                                                 |     if (r3 < 0x63) {
    0x00046a9a bls.w 0x472b4                                     |         goto label_93;
                                                                 |     }
    0x00046a9e ldrb.w r3, [sl, 0x28]                             |     r3 = *((sl + 0x28));
    0x00046aa2 str.w r1, [sl, 0x24]                              |     __asm ("str.w r1, [sl, 0x24]");
    0x00046aa6 orr r3, r3, 1                                     |     r3 |= 1;
    0x00046aaa strb.w r3, [sl, 0x28]                             |     *((sl + 0x28)) = r3;
                                                                 | label_71:
    0x00046aae ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x00046ab2 ldr r0, [r3, 0x40]                                |     r0 = *((r3 + 0x40));
    0x00046ab4 blx 0x18410                                       |     apr_brigade_insert_file ();
    0x00046ab8 add.w r3, fp, 4                                   |     r3 += arg_4h;
    0x00046abc str r3, [r0]                                      |     *(r0) = r3;
    0x00046abe ldr.w r3, [fp, 8]                                 |     r3 = *(arg_8h);
    0x00046ac2 str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x00046ac4 ldr.w r3, [fp, 8]                                 |     r3 = *(arg_8h);
    0x00046ac8 str r0, [r3]                                      |     *(r3) = r0;
    0x00046aca str.w r0, [fp, 8]                                 |     __asm ("str.w r0, [arg_8h]");
    0x00046ace b 0x46bb6                                         |     goto label_94;
    0x00046ad0 mov r2, fp                                        |     r2 = fp;
    0x00046ad2 mov fp, r8                                        |     
    0x00046ad4 mov r8, r5                                        |     r8 = r5;
    0x00046ad6 mov r5, r2                                        |     r5 = r2;
    0x00046ad8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00046ada beq 0x46ba8                                       |         goto label_95;
                                                                 |     }
    0x00046adc ldrd r1, r2, [sl]                                 |     __asm ("ldrd r1, r2, [sl]");
    0x00046ae0 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x00046ae2 cmp r1, r0                                        |     
    0x00046ae4 ldr r0, [sp, 0x30]                                |     r0 = var_30h;
    0x00046ae6 sbcs.w r0, r2, r0                                 |     __asm ("sbcs.w r0, r2, r0");
    0x00046ae8 movs r0, r0                                       |     
    0x00046aea it lt                                             |     
                                                                 |     if (r0 < r0) {
    0x00046aec strdlt r1, r2, [sp, 0x2c]                         |         __asm ("strdlt r1, r2, [sp, 0x2c]");
                                                                 |     }
    0x00046af0 ldr r2, [sp, 0x2c]                                |     r2 = var_2ch;
    0x00046af2 cmp r2, 1                                         |     
    0x00046af4 ldr r2, [sp, 0x30]                                |     r2 = var_30h;
    0x00046af6 sbcs r2, r2, 0                                    |     __asm ("sbcs r2, r2, 0");
                                                                 |     if (r2 >= 1) {
    0x00046afa bge.w 0x46f0c                                     |         goto label_96;
                                                                 |     }
                                                                 | label_17:
    0x00046afe cmp r3, 1                                         |     
                                                                 |     if (r3 != 1) {
    0x00046b00 bne 0x46bb6                                       |         goto label_94;
                                                                 |     }
    0x00046b02 ldrd r3, r2, [sl]                                 |     __asm ("ldrd r3, r2, [sl]");
    0x00046b06 orrs r3, r2                                       |     r3 |= r2;
                                                                 |     if (r3 != r2) {
    0x00046b08 bne 0x46bb6                                       |         goto label_94;
                                                                 |     }
                                                                 | label_16:
    0x00046b0a ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x00046b0e ldr r0, [r3, 0x40]                                |     r0 = *((r3 + 0x40));
    0x00046b10 blx 0x18410                                       |     apr_brigade_insert_file ();
    0x00046b14 add.w r3, fp, 4                                   |     r3 += arg_4h;
    0x00046b18 str r3, [r0]                                      |     *(r0) = r3;
    0x00046b1a ldr.w r2, [fp, 8]                                 |     r2 = *(arg_8h);
    0x00046b1e ldrb.w r3, [sl, 0x28]                             |     r3 = *((sl + 0x28));
    0x00046b22 str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00046b24 ldr.w r2, [fp, 8]                                 |     r2 = *(arg_8h);
    0x00046b28 orr r3, r3, 1                                     |     r3 |= 1;
    0x00046b2c str r0, [r2]                                      |     *(r2) = r0;
    0x00046b2e str.w r0, [fp, 8]                                 |     __asm ("str.w r0, [arg_8h]");
    0x00046b32 strb.w r3, [sl, 0x28]                             |     *((sl + 0x28)) = r3;
    0x00046b36 b 0x46bb6                                         |     goto label_94;
    0x00046b38 mov r3, fp                                        |     r3 = fp;
    0x00046b3a mov fp, r8                                        |     
    0x00046b3c mov r8, r5                                        |     r8 = r5;
    0x00046b3e mov r5, r3                                        |     r5 = r3;
    0x00046b40 ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00046b42 mov r2, r5                                        |     r2 = r5;
    0x00046b44 ldr r4, [sp, 0x24]                                |     r4 = var_24h;
    0x00046b46 mov r1, fp                                        |     r1 = fp;
    0x00046b48 str r3, [sp]                                      |     *(sp) = r3;
    0x00046b4a ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00046b4c ldr.w r0, [r8, 8]                                 |     r0 = *((r8 + 8));
    0x00046b50 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00046b52 mov r3, r4                                        |     r3 = r4;
    0x00046b54 bl 0x20578                                        |     ap_get_brigade ();
    0x00046b58 cmp r4, 1                                         |     
    0x00046b5a mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r4 != 1) {
    0x00046b5c bne.w 0x46a22                                     |         goto label_2;
                                                                 |     }
    0x00046b60 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00046b62 bne.w 0x46a22                                     |         goto label_2;
                                                                 |     }
    0x00046b66 mov r3, fp                                        |     r3 = fp;
    0x00046b68 ldr r2, [r3, 4]!                                  |     r2 = *((r3 += 4));
    0x00046b6c cmp r2, r3                                        |     
                                                                 |     if (r2 == r3) {
    0x00046b6e bne 0x46bb6                                       |         
                                                                 | label_18:
    0x00046b70 movs r6, 0xb                                      |         r6 = 0xb;
    0x00046b72 b 0x46a22                                         |         goto label_2;
                                                                 | label_68:
    0x00046b74 ldr.w r4, [pc, 0x7e0]                             |         r4 = sym.imp.apr_atomic_add32;
    0x00046b78 ldr.w r0, [pc, 0x7bc]                             |         r0 = *(0x47338);
    0x00046b7c add r4, pc                                        |         r4 += pc;
    0x00046b7e ldr r0, [r4, r0]                                  |         r0 = *((r4 + r0));
    0x00046b80 ldr r4, [r0]                                      |         r4 = *(0x47338);
    0x00046b82 ldr r0, [sp, 0xcc]                                |         r0 = var_cch;
    0x00046b84 eors r4, r0                                       |         r4 ^= r0;
    0x00046b86 mov.w r0, 0                                       |         r0 = 0;
                                                                 |         if (r4 != r0) {
    0x00046b8a bne.w 0x47204                                     |             goto label_91;
                                                                 |         }
    0x00046b8e ldr r0, [sp, 0x2c]                                |         r0 = var_2ch;
    0x00046b90 ldr r4, [sp, 0x30]                                |         r4 = var_30h;
    0x00046b92 str r0, [sp, 0x108]                               |         *(arg_108h) = r0;
    0x00046b94 ldr.w r0, [r8, 8]                                 |         r0 = *((r8 + 8));
    0x00046b98 str r4, [sp, 0x10c]                               |         *(arg_10ch) = r4;
    0x00046b9a add sp, 0xd4                                      |         
    0x00046b9c vpop {d8, d9}                                     |         __asm ("vpop {d8, d9}");
    0x00046ba0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x00046ba4 b.w 0x20578                                       |         void (*0x20578)() ();
                                                                 | label_95:
    0x00046ba8 ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00046baa cmp r3, 1                                         |         
    0x00046bac ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x00046bae sbcs r3, r3, 0                                    |         __asm ("sbcs r3, r3, 0");
                                                                 |         if (r3 >= 1) {
    0x00046bb2 bge.w 0x46f0c                                     |             goto label_96;
                                                                 |         }
                                                                 |     }
                                                                 | label_94:
    0x00046bb6 movs r6, 0                                        |     r6 = 0;
    0x00046bb8 b 0x46a22                                         |     goto label_2;
                                                                 | label_73:
    0x00046bba movw r3, 0x117e                                   |     
    0x00046bbe movt r3, 1                                        |     r3 = 0x1117e;
    0x00046bc2 cmp r0, r3                                        |     
                                                                 |     if (r0 == r3) {
    0x00046bc4 beq.w 0x472a8                                     |         goto label_97;
                                                                 |     }
    0x00046bc8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00046bca bne.w 0x47460                                     |         goto label_98;
                                                                 |     }
    0x00046bce add.w ip, r8, 4                                   |     
    0x00046bd2 b 0x468b4                                         |     goto label_3;
                                                                 | label_89:
    0x00046bd4 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00046bd6 ldr r0, [r3, 0x60]                                |     r0 = *((r3 + 0x60));
    0x00046bd8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00046bda bne.w 0x469c6                                     |         goto label_4;
                                                                 |     }
    0x00046bde ldr r0, [r1, 8]                                   |     r0 = *((r1 + 8));
    0x00046be0 ldr r3, [r0, 0x10]                                |     r3 = *((r0 + 0x10));
                                                                 |     if (r3 == 0) {
    0x00046be2 cbz r3, 0x46bec                                   |         goto label_23;
                                                                 |     }
    0x00046be4 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00046be6 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00046be8 bge.w 0x469d6                                     |         goto label_5;
                                                                 |     }
                                                                 | label_23:
    0x00046bec adds r0, 0x10                                     |     r0 += 0x10;
                                                                 | label_22:
    0x00046bee ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x00046bf0 cmp r3, 5                                         |     
    0x00046bf2 ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x00046bf4 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x00046bf6 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00046bf8 b 0x469de                                         |     goto label_6;
                                                                 | label_85:
    0x00046bfa mov sb, r6                                        |     sb = r6;
    0x00046bfc ldr r7, [sp, 0x44]                                |     r7 = var_44h;
    0x00046bfe ldrd r0, r4, [sp, 0x48]                           |     __asm ("ldrd r0, r4, [var_48h]");
    0x00046c02 mov r2, r8                                        |     r2 = r8;
    0x00046c04 ldr r6, [sp, 0x50]                                |     r6 = var_50h;
                                                                 | label_78:
    0x00046c06 ldr.w r3, [sl, 0x18]                              |     r3 = *((sl + 0x18));
    0x00046c0a add r3, sb                                        |     r3 += sb;
    0x00046c0c lsrs r1, r3, 0x1f                                 |     r1 = r3 >> 0x1f;
    0x00046c0e str.w r3, [sl, 0x18]                              |     __asm ("str.w r3, [sl, 0x18]");
    0x00046c12 cmp r0, r3                                        |     
    0x00046c14 it lt                                             |     
                                                                 |     if (r0 >= r3) {
    0x00046c16 orrlt r1, r1, 1                                   |         r1 |= 1;
                                                                 |     }
    0x00046c1a cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00046c1c bne.w 0x46dde                                     |         goto label_99;
                                                                 |     }
    0x00046c20 ldr r3, [r4, 8]                                   |     r3 = *((r4 + 8));
                                                                 | label_76:
    0x00046c22 ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00046c24 ldr r1, [r4]                                      |     r1 = *(r4);
    0x00046c26 ldr r3, [r3, 0xc]                                 |     r3 = *((r3 + 0xc));
    0x00046c28 ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x00046c2a str r1, [r2]                                      |     *(r2) = r1;
    0x00046c2c ldr r2, [r4]                                      |     r2 = *(r4);
    0x00046c2e ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x00046c30 str r1, [r2, 4]                                   |     *((r2 + 4)) = r1;
    0x00046c32 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00046c34 ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x00046c36 mov r0, r4                                        |     r0 = r4;
    0x00046c38 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00046c3a ldr r4, [r6, 4]                                   |     r4 = *((r6 + 4));
    0x00046c3c cmp r7, r4                                        |     
                                                                 |     if (r7 != r4) {
    0x00046c3e bne.w 0x468d2                                     |         goto label_7;
                                                                 |     }
    0x00046c42 ldr.w fp, [sp, 0x54]                              |     fp = var_54h;
    0x00046c46 mov r8, r6                                        |     r8 = r6;
    0x00046c48 ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
                                                                 | label_75:
    0x00046c4c ldr.w r3, [sl, 0x24]                              |     r3 = *((sl + 0x24));
    0x00046c50 cmp r3, 0xa                                       |     
                                                                 |     if (r3 != 0xa) {
    0x00046c52 bne.w 0x4685c                                     |         goto label_8;
                                                                 |     }
    0x00046c56 ldr r3, [sp, 0x40]                                |     r3 = var_40h;
    0x00046c58 mov fp, r8                                        |     
    0x00046c5a mov r8, r5                                        |     r8 = r5;
    0x00046c5c ldr r5, [r5, 0xc]                                 |     r5 = *((r5 + 0xc));
    0x00046c5e ldr r3, [r3, 0x34]                                |     r3 = *((r3 + 0x34));
    0x00046c60 ldr.w r0, [r5, 0x1d0]                             |     r0 = *((r5 + 0x1d0));
    0x00046c64 ldr.w r7, [r5, 0xb0]                              |     r7 = *((r5 + 0xb0));
    0x00046c68 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00046c6a movs r3, 0xc8                                     |     r3 = 0xc8;
    0x00046c6c ldr r6, [r5, 0x44]                                |     r6 = *((r5 + 0x44));
    0x00046c6e str.w r0, [r5, 0xb0]                              |     __asm ("str.w r0, [r5, 0xb0]");
    0x00046c72 str r3, [r5, 0x44]                                |     *((r5 + 0x44)) = r3;
    0x00046c74 blx 0x17edc                                       |     apr_sockaddr_info_get ();
    0x00046c78 mov r0, r5                                        |     r0 = r5;
    0x00046c7a bl 0x22f84                                        |     ap_get_mime_headers ();
    0x00046c7e ldr r3, [r5, 0x44]                                |     r3 = *((r5 + 0x44));
    0x00046c80 cmp r3, 0xc8                                      |     
                                                                 |     if (r3 != 0xc8) {
    0x00046c82 bne.w 0x47390                                     |         goto label_100;
                                                                 |     }
    0x00046c86 ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x00046c8a str r6, [r5, 0x44]                                |     *((r5 + 0x44)) = r6;
    0x00046c8c movs r6, 0                                        |     r6 = 0;
    0x00046c8e ldr r0, [r3, 0x40]                                |     r0 = *((r3 + 0x40));
    0x00046c90 blx 0x18410                                       |     r0 = apr_brigade_insert_file ();
    0x00046c94 str r4, [r0]                                      |     *(r0) = r4;
    0x00046c96 ldr.w r2, [fp, 8]                                 |     r2 = *(arg_8h);
    0x00046c9a str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00046c9c ldrb.w r2, [sl, 0x28]                             |     r2 = *((sl + 0x28));
    0x00046ca0 ldr.w r1, [fp, 8]                                 |     r1 = *(arg_8h);
    0x00046ca4 orr r2, r2, 1                                     |     r2 |= 1;
    0x00046ca8 str r0, [r1]                                      |     *(r1) = r0;
    0x00046caa str.w r0, [fp, 8]                                 |     __asm ("str.w r0, [arg_8h]");
    0x00046cae strb.w r2, [sl, 0x28]                             |     *((sl + 0x28)) = r2;
                                                                 | label_46:
    0x00046cb2 ldr r3, [sp, 0x24]                                |     r3 = var_24h;
    0x00046cb4 cmp r3, 1                                         |     
                                                                 |     if (r3 == 1) {
    0x00046cb6 beq.w 0x47428                                     |         goto label_101;
                                                                 |     }
                                                                 | label_49:
    0x00046cba str.w r7, [r5, 0xb0]                              |     __asm ("str.w r7, [r5, 0xb0]");
    0x00046cbe b 0x46a22                                         |     goto label_2;
                                                                 | label_80:
    0x00046cc0 blx 0x183c8                                       |     r0 = stack_chk_fail ();
    0x00046cc4 ldr r2, [r0]                                      |     r2 = *(r0);
    0x00046cc6 ldrh.w r2, [r2, r7, lsl 1]                        |     offset_1 = r7 << 1;
                                                                 |     r2 = *((r2 + offset_1));
    0x00046cca lsls r3, r2, 0x13                                 |     r3 = r2 << 0x13;
                                                                 |     if (r3 >= r2) {
    0x00046ccc bpl.w 0x469a0                                     |         goto label_9;
                                                                 |     }
    0x00046cd0 movs r3, 3                                        |     r3 = 3;
    0x00046cd2 cmp r7, 0xa                                       |     
    0x00046cd4 str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00046cd8 mov.w r3, 0x40                                    |     r3 = 0x40;
    0x00046cdc vstr d9, [sl]                                     |     __asm ("vstr d9, [sl]");
    0x00046ce0 str.w r3, [sl, 0x20]                              |     __asm ("str.w r3, [sl, 0x20]");
    0x00046ce4 vstr d8, [sl, 0x18]                               |     __asm ("vstr d8, [sl, 0x18]");
                                                                 |     if (r7 == 0xa) {
    0x00046ce8 beq 0x46d46                                       |         goto label_102;
                                                                 |     }
    0x00046cea cmp r7, 0xd                                       |     
                                                                 |     if (r7 == 0xd) {
    0x00046cec beq 0x46d3a                                       |         goto label_82;
                                                                 |     }
    0x00046cee cmp r7, 0x3b                                      |     
                                                                 |     if (r7 == 0x3b) {
    0x00046cf0 beq 0x46d56                                       |         goto label_83;
                                                                 |     }
    0x00046cf2 cmp r7, 0x20                                      |     
    0x00046cf4 it ne                                             |     
                                                                 |     if (r7 != 0x20) {
    0x00046cf6 cmpne r7, 9                                       |         __asm ("cmpne r7, 9");
                                                                 |     }
                                                                 |     if (r7 != 0x20) {
    0x00046cf8 bne 0x46d72                                       |         goto label_103;
                                                                 |     }
                                                                 | label_13:
    0x00046cfa ldr.w r3, [sl, 0x1c]                              |     r3 = *((sl + 0x1c));
    0x00046cfe movs r2, 5                                        |     r2 = 5;
    0x00046d00 str.w r2, [sl, 0x24]                              |     __asm ("str.w r2, [sl, 0x24]");
    0x00046d04 adds r3, 1                                        |     r3++;
    0x00046d06 cmp r3, 0xa                                       |     
    0x00046d08 str.w r3, [sl, 0x1c]                              |     __asm ("str.w r3, [sl, 0x1c]");
                                                                 |     if (r3 <= 0xa) {
    0x00046d0c ble.w 0x46974                                     |         goto label_10;
                                                                 |     }
    0x00046d10 b 0x469a0                                         |     goto label_9;
                                                                 | label_86:
    0x00046d12 cmp r4, 1                                         |     
    0x00046d14 it ne                                             |     
                                                                 |     if (r4 == 1) {
    0x00046d16 cmpne r2, 9                                       |         __asm ("cmpne r2, 9");
                                                                 |         goto label_104;
                                                                 |     }
                                                                 |     if (r4 != 1) {
                                                                 | label_104:
    0x00046d18 bne.w 0x469a0                                     |         goto label_9;
                                                                 |     }
    0x00046d1c movs r3, 2                                        |     r3 = 2;
                                                                 | label_11:
    0x00046d1e str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00046d22 b 0x46974                                         |     goto label_10;
                                                                 | label_81:
    0x00046d24 cmp r4, 1                                         |     
                                                                 |     if (r4 == 1) {
    0x00046d26 beq 0x46d2e                                       |         goto label_105;
                                                                 |     }
                                                                 | label_12:
    0x00046d28 cmp r2, 6                                         |     
                                                                 |     if (r2 != 6) {
    0x00046d2a bne.w 0x469a0                                     |         goto label_9;
                                                                 |     }
                                                                 | label_105:
    0x00046d2e ldrd r2, r3, [sl]                                 |     __asm ("ldrd r2, r3, [sl]");
    0x00046d32 orrs r3, r2                                       |     r3 |= r2;
                                                                 |     if (r3 == r2) {
    0x00046d34 beq 0x46d4e                                       |         goto label_106;
                                                                 |     }
    0x00046d36 movs r3, 7                                        |     r3 = 7;
    0x00046d38 b 0x46d1e                                         |     goto label_11;
                                                                 | label_82:
    0x00046d3a movs r3, 6                                        |     r3 = 6;
    0x00046d3c str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00046d40 b 0x46974                                         |     goto label_10;
                                                                 | label_87:
    0x00046d42 movs r3, 9                                        |     r3 = 9;
    0x00046d44 b 0x46d1e                                         |     goto label_11;
                                                                 | label_102:
    0x00046d46 cmp r4, 1                                         |     
    0x00046d48 it ne                                             |     
                                                                 |     if (r4 != 1) {
    0x00046d4a movne r2, 3                                       |         r2 = 3;
                                                                 |         goto label_107;
                                                                 |     }
                                                                 |     if (r4 != 1) {
                                                                 | label_107:
    0x00046d4c bne 0x46d28                                       |         goto label_12;
                                                                 |     }
                                                                 | label_106:
    0x00046d4e movs r3, 0xa                                      |     r3 = 0xa;
    0x00046d50 str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00046d54 b 0x46974                                         |     goto label_10;
                                                                 | label_83:
    0x00046d56 movs r3, 4                                        |     r3 = 4;
    0x00046d58 str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00046d5c b 0x46974                                         |     goto label_10;
                                                                 | label_84:
    0x00046d5e cmp r7, 9                                         |     
    0x00046d60 it ne                                             |     
                                                                 |     if (r7 == 9) {
    0x00046d62 cmpne r7, 0x20                                    |         __asm ("cmpne r7, 0x20");
                                                                 |         goto label_108;
                                                                 |     }
                                                                 |     if (r7 == 9) {
                                                                 | label_108:
    0x00046d64 beq 0x46cfa                                       |         goto label_13;
                                                                 |     }
    0x00046d66 cmp r2, 5                                         |     
                                                                 |     if (r2 == 5) {
    0x00046d68 beq.w 0x469a0                                     |         goto label_9;
                                                                 |     }
    0x00046d6c cmp r2, 3                                         |     
                                                                 |     if (r2 != 3) {
    0x00046d6e bne.w 0x47244                                     |         goto label_109;
                                                                 |     }
                                                                 | label_103:
    0x00046d72 ldrd r3, r0, [sl]                                 |     __asm ("ldrd r3, r0, [sl]");
    0x00046d76 orr.w r2, r3, r0                                  |     r2 = r3 | r0;
    0x00046d7a cmp r7, 0x30                                      |     
    0x00046d7c it eq                                             |     
                                                                 |     if (r7 != 0x30) {
    0x00046d7e cmpeq r2, 0                                       |         __asm ("cmpeq r2, 0");
                                                                 |         goto label_110;
                                                                 |     }
                                                                 |     if (r7 == 0x30) {
                                                                 | label_110:
    0x00046d80 beq.w 0x46974                                     |         goto label_10;
                                                                 |     }
    0x00046d84 ldr.w r2, [sl, 0x20]                              |     r2 = *((sl + 0x20));
    0x00046d88 subs r2, 4                                        |     r2 -= 4;
    0x00046d8a cmp r2, 0                                         |     
    0x00046d8c str.w r2, [sl, 0x20]                              |     __asm ("str.w r2, [sl, 0x20]");
                                                                 |     if (r2 < 0) {
    0x00046d90 blt 0x46dd4                                       |         goto label_111;
                                                                 |     }
    0x00046d92 sub.w r2, r7, 0x30                                |     r2 = r7 - 0x30;
    0x00046d96 uxtb.w lr, r2                                     |     lr = (int8_t) r2;
    0x00046d9a cmp.w lr, 9                                       |     
                                                                 |     if (lr < 9) {
    0x00046d9e bls 0x46dbc                                       |         goto label_112;
                                                                 |     }
    0x00046da0 sub.w r2, r7, 0x41                                |     r2 = r7 - 0x41;
    0x00046da4 cmp r2, 5                                         |     
    0x00046da6 it ls                                             |     
                                                                 |     if (r2 > 5) {
    0x00046da8 subls r2, r7, 0x37                                |         r2 = r7 - 0x37;
                                                                 |     }
                                                                 |     if (r2 < 5) {
    0x00046dac bls 0x46dbc                                       |         goto label_112;
                                                                 |     }
    0x00046dae sub.w r2, r7, 0x61                                |     r2 = r7 - 0x61;
    0x00046db2 cmp r2, 5                                         |     
                                                                 |     if (r2 > 5) {
    0x00046db4 bhi.w 0x469a0                                     |         goto label_9;
                                                                 |     }
    0x00046db8 sub.w r2, r7, 0x57                                |     r2 = r7 - 0x57;
                                                                 | label_112:
    0x00046dbc lsls r0, r0, 4                                    |     r0 <<= 4;
    0x00046dbe orr.w r0, r0, r3, lsr 28                          |     r0 |= (r3 >> 28);
    0x00046dc2 orr.w r3, r2, r3, lsl 4                           |     r3 = r2 | (r3 << 4);
    0x00046dc6 orr.w r0, r0, r2, asr 31                          |     r0 |= (r2 >> 31);
    0x00046dca cmp r0, 0                                         |     
    0x00046dcc strd r3, r0, [sl]                                 |     __asm ("strd r3, r0, [sl]");
                                                                 |     if (r0 >= 0) {
    0x00046dd0 bge.w 0x46974                                     |         goto label_10;
                                                                 |     }
                                                                 | label_111:
    0x00046dd4 mov r1, r8                                        |     r1 = r8;
    0x00046dd6 ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
    0x00046dda mov r8, r5                                        |     r8 = r5;
    0x00046ddc b 0x46de6                                         |     goto label_113;
                                                                 | label_99:
    0x00046dde ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
    0x00046de2 mov r1, r2                                        |     r1 = r2;
    0x00046de4 mov r8, r5                                        |     r8 = r5;
                                                                 | label_113:
    0x00046de6 movs r7, 1                                        |     r7 = 1;
    0x00046de8 movs r6, 0x1c                                     |     r6 = 0x1c;
    0x00046dea b 0x469ac                                         |     goto label_14;
                                                                 | label_69:
    0x00046dec movs r1, 0x30                                     |     r1 = 0x30;
    0x00046dee ldr r0, [r0]                                      |     r0 = *(r0);
    0x00046df0 blx 0x18240                                       |     fcn_00018240 ();
    0x00046df4 mov r1, sl                                        |     r1 = sl;
    0x00046df6 movs r2, 0x30                                     |     r2 = 0x30;
    0x00046df8 blx 0x17c40                                       |     fcn_00017c40 ();
    0x00046dfc ldr.w r3, [r8, 0x10]                              |     r3 = *((r8 + 0x10));
    0x00046e00 mov sl, r0                                        |     sl = r0;
    0x00046e02 str.w r0, [r8, 4]                                 |     __asm ("str.w r0, [r8, 4]");
    0x00046e06 ldr r1, [r3, 0x40]                                |     r1 = *((r3 + 0x40));
    0x00046e08 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x00046e0c ldr r0, [r3]                                      |     r0 = *(r3);
    0x00046e0e movs r3, 0                                        |     r3 = 0;
    0x00046e10 str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00046e14 blx 0x17cac                                       |     fcn_00017cac ();
    0x00046e18 str.w r0, [sl, 0x2c]                              |     __asm ("str.w r0, [sl, 0x2c]");
    0x00046e1c ldr.w r0, [r8, 0xc]                               |     r0 = *((r8 + 0xc));
    0x00046e20 ldr r3, [r0, 0x20]                                |     r3 = *((r0 + 0x20));
    0x00046e22 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00046e24 bne.w 0x46fea                                     |         goto label_114;
                                                                 |     }
    0x00046e28 ldr.w r1, [r0, 0xe8]                              |     r1 = *((r0 + 0xe8));
                                                                 |     if (r1 != 0) {
    0x00046e2c cbz r1, 0x46e44                                   |         
    0x00046e2e ldr r3, [r0]                                      |         r3 = *(r0);
    0x00046e30 mov.w r2, 0x400000                                |         r2 = 0x400000;
    0x00046e34 add r0, sp, 0x60                                  |         r0 += var_60h;
    0x00046e36 blx 0x179b4                                       |         r0 = apr_table_elts ();
    0x00046e3a cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00046e3c beq.w 0x4710a                                     |             goto label_115;
                                                                 |         }
    0x00046e40 ldr.w r0, [r8, 0xc]                               |         r0 = *((r8 + 0xc));
                                                                 |     }
                                                                 | label_26:
    0x00046e44 bl 0x2a1f8                                        |     ap_get_limit_req_body ();
    0x00046e48 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
                                                                 | label_27:
    0x00046e4c strd r0, r1, [sl, 8]                              |     __asm ("strd r0, r1, [sl, 8]");
    0x00046e50 mov r0, r3                                        |     r0 = r3;
                                                                 | label_19:
    0x00046e52 ldr.w r1, [pc, 0x508]                             |     r1 = *(0x0004735c);
    0x00046e56 ldr.w r0, [r0, 0xb0]                              |     r0 = *((r0 + 0xb0));
    0x00046e5a add r1, pc                                        |     r1 += pc;
    0x00046e5c blx 0x185a8                                       |     apr_hash_make ();
    0x00046e60 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x00046e64 mov r4, r0                                        |     r4 = r0;
    0x00046e66 ldr.w r1, [pc, 0x4f8]                             |     r1 = *(0x00047360);
    0x00046e6a ldr.w r0, [r3, 0xb0]                              |     r0 = *((r3 + 0xb0));
    0x00046e6e add r1, pc                                        |     r1 += pc;
    0x00046e70 blx 0x185a8                                       |     apr_hash_make ();
    0x00046e74 cmp r4, 0                                         |     
                                                                 |     if (r4 == 0) {
    0x00046e76 beq.w 0x46ff4                                     |         goto label_116;
                                                                 |     }
    0x00046e7a ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x00046e7e mov r1, r4                                        |     r1 = r4;
    0x00046e80 ldr r0, [r3]                                      |     r0 = *(r3);
    0x00046e82 bl 0x1c728                                        |     r0 = ap_is_chunked ();
    0x00046e86 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00046e88 bne.w 0x470a2                                     |         goto label_117;
                                                                 |     }
    0x00046e8c ldr.w r3, [pc, 0x4b4]                             |     r3 = *(0x47344);
    0x00046e90 ldr.w r1, [r8, 0xc]                               |     r1 = *((r8 + 0xc));
    0x00046e94 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00046e98 ldr.w r0, [r1, 0x108]                             |     r0 = *((r1 + 0x108));
    0x00046e9c ldr r2, [r3, 8]                                   |     r2 = *(0x4734c);
    0x00046e9e ldr r3, [r1, 0x20]                                |     r3 = *((r1 + 0x20));
    0x00046ea0 cmp r3, 3                                         |     
                                                                 |     if (r3 != 3) {
    0x00046ea2 bne.w 0x4713c                                     |         goto label_118;
                                                                 |     }
    0x00046ea6 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00046ea8 blt.w 0x47232                                     |         goto label_119;
                                                                 |     }
    0x00046eac cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00046eae beq.w 0x47194                                     |         goto label_120;
                                                                 |     }
    0x00046eb2 ldr r3, [r0]                                      |     r3 = *(r0);
    0x00046eb4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00046eb6 beq.w 0x471ac                                     |         goto label_36;
                                                                 |     }
    0x00046eba ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00046ebc cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00046ebe blt.w 0x471ac                                     |         goto label_36;
                                                                 |     }
                                                                 | label_31:
    0x00046ec2 cmp r3, 5                                         |     
    0x00046ec4 ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x00046ec6 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x00046ec8 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r3 != 0) {
                                                                 | label_32:
    0x00046eca cbz r3, 0x46eec                                   |         
    0x00046ecc ldr.w r3, [pc, 0x494]                             |         r3 = *(0x00047364);
    0x00046ed0 ldr.w r0, [pc, 0x494]                             |         
    0x00046ed4 str r1, [sp, 4]                                   |         var_4h = r1;
    0x00046ed6 mov.w r1, 0x198                                   |         r1 = 0x198;
    0x00046eda add r3, pc                                        |         r3 += pc;
    0x00046edc str r4, [sp, 0xc]                                 |         var_ch = r4;
    0x00046ede str r3, [sp, 8]                                   |         var_8h = r3;
    0x00046ee0 movs r3, 0                                        |         r3 = 0;
    0x00046ee2 str r3, [sp]                                      |         *(sp) = r3;
    0x00046ee4 add r0, pc                                        |         r0 = 0x8e250;
    0x00046ee6 movs r3, 6                                        |         r3 = 6;
    0x00046ee8 bl 0x38a7c                                        |         ap_log_rerror_ ();
                                                                 |     }
                                                                 | label_20:
    0x00046eec ldr.w r3, [sl, 0x24]                              |     r3 = *((sl + 0x24));
    0x00046ef0 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00046ef2 bne.w 0x4683a                                     |         goto label_15;
                                                                 |     }
    0x00046ef6 ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x00046efa ldr r3, [r3, 0x20]                                |     r3 = *((r3 + 0x20));
    0x00046efc cmp r3, 3                                         |     
                                                                 |     if (r3 != 3) {
    0x00046efe bne.w 0x46b0a                                     |         goto label_16;
                                                                 |     }
                                                                 | label_39:
    0x00046f02 ldrb.w r1, [sl, 0x28]                             |     r1 = *((sl + 0x28));
    0x00046f06 and r1, r1, 1                                     |     r1 &= 1;
    0x00046f0a b 0x4684a                                         |     goto label_0;
                                                                 | label_96:
    0x00046f0c ldr r3, [sp, 0x2c]                                |     r3 = var_2ch;
    0x00046f0e mov r2, r5                                        |     r2 = r5;
    0x00046f10 ldr r4, [sp, 0x24]                                |     r4 = var_24h;
    0x00046f12 mov r1, fp                                        |     r1 = fp;
    0x00046f14 str r3, [sp]                                      |     *(sp) = r3;
    0x00046f16 ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00046f18 str r3, [sp, 4]                                   |     var_4h = r3;
    0x00046f1a mov r3, r4                                        |     r3 = r4;
    0x00046f1c ldr.w r0, [r8, 8]                                 |     r0 = *((r8 + 8));
    0x00046f20 bl 0x20578                                        |     ap_get_brigade ();
    0x00046f24 cmp r4, 1                                         |     
    0x00046f26 mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r4 == 1) {
    0x00046f28 beq.w 0x470f8                                     |         goto label_121;
                                                                 |     }
    0x00046f2c movw r3, 0x117e                                   |     
    0x00046f30 movt r3, 1                                        |     r3 = 0x1117e;
    0x00046f34 cmp r0, r3                                        |     
                                                                 |     if (r0 == r3) {
    0x00046f36 beq.w 0x470c0                                     |         goto label_122;
                                                                 |     }
    0x00046f3a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00046f3c bne.w 0x46a22                                     |         goto label_2;
                                                                 |     }
                                                                 | label_25:
    0x00046f40 movs r1, 0                                        |     r1 = 0;
    0x00046f42 add r2, sp, 0x60                                  |     r2 += var_60h;
    0x00046f44 mov r0, fp                                        |     r0 = fp;
    0x00046f46 blx 0x17e30                                       |     fcn_00017e30 ();
    0x00046f4a ldrd r3, r2, [sp, 0x60]                           |     __asm ("ldrd r3, r2, [var_60h]");
    0x00046f4e ldr.w r4, [sl, 0x24]                              |     r4 = *((sl + 0x24));
    0x00046f52 cmp r3, 1                                         |     
    0x00046f54 sbcs r1, r2, 0                                    |     __asm ("sbcs r1, r2, 0");
    0x00046f58 ittt ge                                           |     
                                                                 |     if (r3 < 1) {
    0x00046f5a ldrbge r1, [sl, 0x28]                             |         r1 = *((sl + 0x28));
                                                                 |     }
                                                                 |     if (r3 < 1) {
    0x00046f5e orrge r1, r1, 2                                   |         r1 |= 2;
                                                                 |     }
                                                                 |     if (r3 >= 1) {
    0x00046f62 strb.w r1, [sl, 0x28]                             |         *((sl + 0x28)) = r1;
                                                                 |     }
                                                                 |     if (r4 != 0) {
    0x00046f66 cbz r4, 0x46f9a                                   |         
    0x00046f68 ldr.w r1, [sl]                                    |         r1 = *(sl);
    0x00046f6c subs r0, r1, r3                                   |         r0 = r1 - r3;
    0x00046f6e ldr.w r1, [sl, 4]                                 |         r1 = *((sl + 4));
    0x00046f72 str.w r0, [sl]                                    |         __asm ("str.w r0, [sl]");
    0x00046f76 sbc.w r1, r1, r2                                  |         __asm ("sbc.w r1, r1, r2");
    0x00046f7a cmp r0, 1                                         |         
    0x00046f7c str.w r1, [sl, 4]                                 |         __asm ("str.w r1, [sl, 4]");
    0x00046f80 sbcs r1, r1, 0                                    |         __asm ("sbcs r1, r1, 0");
                                                                 |         if (r0 < 1) {
    0x00046f84 blt.w 0x4712a                                     |             goto label_123;
                                                                 |         }
    0x00046f88 ldr.w r4, [fp, 8]                                 |         r4 = *(arg_8h);
    0x00046f8c ldr r1, [pc, 0x3dc]                               |         r1 = *(0x4736c);
    0x00046f8e ldr r5, [r4, 8]                                   |         r5 = *((r4 + 8));
    0x00046f90 ldr.w r1, [sb, r1]                                |         r1 = *((sb + r1));
    0x00046f94 cmp r5, r1                                        |         
                                                                 |         if (r5 == r1) {
    0x00046f96 beq.w 0x47290                                     |             goto label_124;
                                                                 |         }
                                                                 |     }
                                                                 | label_28:
    0x00046f9a ldrd r1, r4, [sl, 8]                              |     __asm ("ldrd r1, r4, [sl, 8]");
    0x00046f9e orrs.w r0, r1, r4                                 |     r0 = r1 | r4;
                                                                 |     if (r0 != r1) {
    0x00046fa2 beq 0x46fc4                                       |         
    0x00046fa4 ldr.w r0, [sl, 0x10]                              |         r0 = *((sl + 0x10));
    0x00046fa8 adds r5, r3, r0                                   |         r5 = r3 + r0;
    0x00046faa ldr.w r0, [sl, 0x14]                              |         r0 = *((sl + 0x14));
    0x00046fae str.w r5, [sl, 0x10]                              |         __asm ("str.w r5, [sl, 0x10]");
    0x00046fb2 adc.w r0, r2, r0                                  |         __asm ("adc.w r0, r2, r0");
    0x00046fb6 cmp r1, r5                                        |         
    0x00046fb8 sbcs.w r3, r4, r0                                 |         __asm ("sbcs.w r3, r4, r0");
    0x00046fbc str.w r0, [sl, 0x14]                              |         __asm ("str.w r0, [sl, 0x14]");
                                                                 |         if (r1 < r5) {
    0x00046fc0 blt.w 0x47466                                     |             goto label_125;
                                                                 |         }
                                                                 |     }
    0x00046fc4 ldr.w r3, [sl, 0x24]                              |     r3 = *((sl + 0x24));
    0x00046fc8 b 0x46afe                                         |     goto label_17;
                                                                 | label_74:
    0x00046fca cmp r0, 0xb                                       |     
    0x00046fcc mov r6, r0                                        |     r6 = r0;
                                                                 |     if (r0 == 0xb) {
    0x00046fce beq.w 0x46b70                                     |         goto label_18;
                                                                 |     }
    0x00046fd2 movw r2, 0x117e                                   |     
    0x00046fd6 movw r3, 0x1178                                   |     
    0x00046fda movt r2, 1                                        |     r2 = 0x1117e;
    0x00046fde movt r3, 1                                        |     r3 = 0x11178;
    0x00046fe2 cmp r0, r2                                        |     
    0x00046fe4 it eq                                             |     
                                                                 |     if (r0 != r2) {
    0x00046fe6 moveq r6, r3                                      |         r6 = r3;
                                                                 |     }
    0x00046fe8 b 0x46a22                                         |     goto label_2;
                                                                 | label_114:
    0x00046fea vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x00046fee vstr d16, [sl, 8]                                 |     __asm ("vstr d16, [sl, 8]");
    0x00046ff2 b 0x46e52                                         |     goto label_19;
                                                                 | label_116:
    0x00046ff4 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00046ff6 beq.w 0x46eec                                     |         goto label_20;
                                                                 |     }
    0x00046ffa movs r3, 1                                        |     r3 = 1;
    0x00046ffc mov r1, r0                                        |     r1 = r0;
    0x00046ffe str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x00047002 mov r0, sl                                        |     r0 = sl;
    0x00047004 bl 0x1d4b0                                        |     r0 = ap_parse_strict_length ();
    0x00047008 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004700a beq.w 0x471b8                                     |         goto label_126;
                                                                 |     }
    0x0004700e ldrd r1, r0, [sl, 8]                              |     __asm ("ldrd r1, r0, [sl, 8]");
    0x00047012 orrs.w r3, r1, r0                                 |     r3 = r1 | r0;
                                                                 |     if (r3 == r1) {
    0x00047016 beq.w 0x46eec                                     |         goto label_20;
                                                                 |     }
    0x0004701a ldrd r6, r4, [sl]                                 |     __asm ("ldrd r6, r4, [sl]");
    0x0004701e cmp r1, r6                                        |     
    0x00047020 sbcs.w r3, r0, r4                                 |     __asm ("sbcs.w r3, r0, r4");
                                                                 |     if (r1 >= r6) {
    0x00047024 bge.w 0x46eec                                     |         goto label_20;
                                                                 |     }
    0x00047028 ldr r3, [pc, 0x318]                               |     r3 = *(0x47344);
    0x0004702a ldr.w r5, [r8, 0xc]                               |     r5 = *((r8 + 0xc));
    0x0004702e ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00047032 ldr r2, [r3, 8]                                   |     r2 = *(0x4734c);
    0x00047034 ldr.w r3, [r5, 0x108]                             |     r3 = *((r5 + 0x108));
    0x00047038 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x0004703a blt.w 0x47322                                     |         goto label_127;
                                                                 |     }
    0x0004703e cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00047040 beq.w 0x472d6                                     |         goto label_128;
                                                                 |     }
    0x00047044 ldr r7, [r3]                                      |     r7 = *(r3);
    0x00047046 cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x00047048 beq.w 0x472f8                                     |         goto label_45;
                                                                 |     }
    0x0004704c ldrsb r7, [r7, r2]                                |     r7 = *((r7 + r2));
    0x0004704e cmp r7, 0                                         |     
                                                                 |     if (r7 < 0) {
    0x00047050 blt.w 0x472f8                                     |         goto label_45;
                                                                 |     }
                                                                 | label_40:
    0x00047054 ldr r3, [r3]                                      |     r3 = *(r3);
    0x00047056 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00047058 cmp r3, 5                                         |     
    0x0004705a ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x0004705c movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x0004705e movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_41:
    0x00047060 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047062 bne.w 0x473f8                                     |         goto label_129;
                                                                 |     }
                                                                 | label_47:
    0x00047066 ldr r2, [pc, 0x308]                               |     
    0x00047068 ldr r3, [pc, 0x2cc]                               |     r3 = *(0x47338);
    0x0004706a add r2, pc                                        |     r2 = 0x8e3e0;
    0x0004706c ldr r3, [r2, r3]                                  |     r3 = *(0x8e3e0);
    0x0004706e ldr r2, [r3]                                      |     r2 = *(0x8e3e0);
    0x00047070 ldr r3, [sp, 0xcc]                                |     r3 = var_cch;
    0x00047072 eors r2, r3                                       |     r2 ^= r3;
    0x00047074 mov.w r3, 0                                       |     r3 = 0;
    0x00047078 it eq                                             |     
                                                                 |     if (r2 == r3) {
    0x0004707a movweq r2, 0x19d                                  |         __asm ("movweq r2, aav.0x000000ff");
                                                                 |     }
                                                                 |     if (r2 != r3) {
    0x0004707e bne.w 0x47204                                     |         goto label_91;
                                                                 |     }
                                                                 | label_29:
    0x00047082 mov r1, r8                                        |     r1 = r8;
    0x00047084 mov r0, sl                                        |     r0 = sl;
    0x00047086 add sp, 0xd4                                      |     
    0x00047088 vpop {d8, d9}                                     |     __asm ("vpop {d8, d9}");
    0x0004708c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00047090 b.w 0x45e48                                       |     void (*0x45e48)() ();
                                                                 | label_77:
    0x00047094 ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
    0x00047098 mov r6, r0                                        |     r6 = r0;
    0x0004709a ldr r1, [r5, 0xc]                                 |     r1 = *((r5 + 0xc));
    0x0004709c mov r8, r5                                        |     r8 = r5;
    0x0004709e mov r7, fp                                        |     r7 = fp;
    0x000470a0 b 0x469ac                                         |     goto label_14;
                                                                 | label_117:
    0x000470a2 movs r3, 2                                        |     r3 = 2;
    0x000470a4 str.w r3, [sl, 0x24]                              |     __asm ("str.w r3, [sl, 0x24]");
    0x000470a8 b.w 0x4683a                                       |     goto label_15;
                                                                 | label_24:
    0x000470ac cmp r0, 0xb                                       |     
                                                                 |     if (r0 == 0xb) {
    0x000470ae beq.w 0x46a22                                     |         goto label_2;
                                                                 |     }
    0x000470b2 movw r3, 0x117e                                   |     
    0x000470b6 movt r3, 1                                        |     r3 = 0x1117e;
    0x000470ba cmp r0, r3                                        |     
                                                                 |     if (r0 != r3) {
    0x000470bc bne.w 0x46a22                                     |         goto label_2;
                                                                 |     }
                                                                 | label_122:
    0x000470c0 ldr.w r3, [sl, 0x24]                              |     r3 = *((sl + 0x24));
                                                                 |     if (r3 != 0) {
    0x000470c4 cbz r3, 0x470d4                                   |         
    0x000470c6 ldrd r2, r3, [sl]                                 |         __asm ("ldrd r2, r3, [sl]");
    0x000470ca cmp r2, 1                                         |         
    0x000470cc sbcs r3, r3, 0                                    |         __asm ("sbcs r3, r3, 0");
                                                                 |         if (r2 >= 1) {
    0x000470d0 bge.w 0x472a8                                     |             goto label_97;
                                                                 |         }
                                                                 |     }
    0x000470d4 movw r6, 0x117e                                   |     
    0x000470d8 movt r6, 1                                        |     r6 = 0x1117e;
    0x000470dc b 0x46a22                                         |     goto label_2;
                                                                 | label_90:
    0x000470de ldr r3, [pc, 0x294]                               |     
    0x000470e0 add r3, pc                                        |     r3 = 0x8e45a;
    0x000470e2 b 0x469ec                                         |     goto label_21;
                                                                 | label_88:
    0x000470e4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000470e6 bne.w 0x46bee                                     |         goto label_22;
                                                                 |     }
    0x000470ea ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x000470ec ldr r0, [r3, 0x60]                                |     r0 = *((r3 + 0x60));
    0x000470ee cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000470f0 bne.w 0x46bee                                     |         goto label_22;
                                                                 |     }
    0x000470f4 ldr r0, [r1, 8]                                   |     r0 = *((r1 + 8));
    0x000470f6 b 0x46bec                                         |     goto label_23;
                                                                 | label_121:
    0x000470f8 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000470fa bne 0x470ac                                       |         goto label_24;
                                                                 |     }
    0x000470fc mov r3, fp                                        |     r3 = fp;
    0x000470fe ldr r2, [r3, 4]!                                  |     r2 = *((r3 += 4));
    0x00047102 cmp r2, r3                                        |     
                                                                 |     if (r2 != r3) {
    0x00047104 bne.w 0x46f40                                     |         goto label_25;
                                                                 |     }
    0x00047108 b 0x46b70                                         |     goto label_18;
                                                                 | label_115:
    0x0004710a ldr r2, [sp, 0x64]                                |     r2 = var_64h;
    0x0004710c ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x00047110 lsls r4, r2, 9                                    |     r4 = r2 << 9;
    0x00047112 mov r0, r3                                        |     r0 = r3;
                                                                 |     if (r4 >= r2) {
    0x00047114 bpl.w 0x46e44                                     |         goto label_26;
                                                                 |     }
    0x00047118 ldr r2, [sp, 0x68]                                |     r2 = var_68h;
    0x0004711a lsls r1, r2, 0x1d                                 |     r1 = r2 << 0x1d;
    0x0004711c itt mi                                            |     
                                                                 |     if (r1 >= r2) {
    0x0004711e movmi r0, 0x19000                                 |         r0 = 0x19000;
                                                                 |     }
                                                                 |     if (r1 >= r2) {
    0x00047122 movs r1, 0                                        |         r1 = 0;
                                                                 |         goto label_130;
                                                                 |     }
                                                                 |     if (r1 < 0) {
                                                                 | label_130:
    0x00047124 bmi.w 0x46e4c                                     |         goto label_27;
                                                                 |     }
    0x00047128 b 0x46e44                                         |     goto label_26;
                                                                 | label_123:
    0x0004712a cmp r4, 7                                         |     
    0x0004712c itttt eq                                          |     
                                                                 |     if (r4 != 7) {
    0x0004712e moveq r1, 8                                       |         r1 = 8;
                                                                 |     }
                                                                 |     if (r4 != 7) {
    0x00047130 streq r1, [sl, 0x24]                              |         *((sl + 0x24)) = r1;
                                                                 |     }
                                                                 |     if (r4 != 7) {
    0x00047134 moveq r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (r4 == 7) {
    0x00047136 str.w r1, [sl, 0x18]                              |         __asm ("str.w r1, [sl, 0x18]");
                                                                 |     }
    0x0004713a b 0x46f9a                                         |     goto label_28;
                                                                 | label_118:
    0x0004713c cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x0004713e blt 0x47220                                       |         goto label_131;
                                                                 |     }
                                                                 |     if (r0 == 0) {
    0x00047140 cbz r0, 0x47172                                   |         goto label_132;
                                                                 |     }
    0x00047142 ldr r3, [r0]                                      |     r3 = *(r0);
                                                                 |     if (r3 == 0) {
    0x00047144 cbz r3, 0x47188                                   |         goto label_35;
                                                                 |     }
    0x00047146 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00047148 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x0004714a blt 0x47188                                       |         goto label_35;
                                                                 |     }
                                                                 |     do {
                                                                 | label_51:
    0x0004714c cmp r3, 5                                         |         
    0x0004714e ite le                                            |         
                                                                 |         if (r3 > 5) {
    0x00047150 movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 5) {
    0x00047152 movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 | label_30:
    0x00047154 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00047156 bne 0x47256                                       |             goto label_133;
                                                                 |         }
                                                                 | label_37:
    0x00047158 ldr r2, [pc, 0x21c]                               |         
    0x0004715a ldr r3, [pc, 0x1dc]                               |         r3 = *(0x4733a);
    0x0004715c add r2, pc                                        |         r2 = 0x8e4d8;
    0x0004715e ldr r3, [r2, r3]                                  |         r3 = *(0x8e4d8);
    0x00047160 ldr r2, [r3]                                      |         r2 = *(0x8e4d8);
    0x00047162 ldr r3, [sp, 0xcc]                                |         r3 = var_cch;
    0x00047164 eors r2, r3                                       |         r2 ^= r3;
    0x00047166 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0004716a bne 0x47204                                       |             goto label_91;
                                                                 |         }
                                                                 | label_33:
    0x0004716c mov.w r2, 0x190                                   |         r2 = 0x190;
    0x00047170 b 0x47082                                         |         goto label_29;
                                                                 | label_132:
    0x00047172 ldr r0, [r1, 4]                                   |         r0 = *((r1 + 4));
    0x00047174 ldr r3, [r0, 0x60]                                |         r3 = *((r0 + 0x60));
    0x00047176 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00047178 beq.w 0x47438                                     |             goto label_134;
                                                                 |         }
    0x0004717c ldr r3, [r3]                                      |         r3 = *(r3);
                                                                 |         if (r3 == 0) {
    0x0004717e cbz r3, 0x47186                                   |             goto label_135;
                                                                 |         }
    0x00047180 ldrsb r3, [r3, r2]                                |         r3 = *((r3 + r2));
    0x00047182 cmp r3, 0                                         |         
    0x00047184 bge 0x4714c                                       |         
                                                                 |     } while (r3 >= 0);
                                                                 | label_135:
    0x00047186 ldr r0, [r0, 0x60]                                |     r0 = *((r0 + 0x60));
                                                                 | label_35:
    0x00047188 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x0004718a cmp r3, 5                                         |     
    0x0004718c ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x0004718e movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x00047190 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00047192 b 0x47154                                         |     goto label_30;
                                                                 | label_120:
    0x00047194 ldr r0, [r1, 4]                                   |     r0 = *((r1 + 4));
    0x00047196 ldr r3, [r0, 0x60]                                |     r3 = *((r0 + 0x60));
    0x00047198 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0004719a beq.w 0x4744c                                     |         goto label_136;
                                                                 |     }
    0x0004719e ldr r3, [r3]                                      |     r3 = *(r3);
                                                                 |     if (r3 == 0) {
    0x000471a0 cbz r3, 0x471aa                                   |         goto label_137;
                                                                 |     }
    0x000471a2 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x000471a4 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x000471a6 bge.w 0x46ec2                                     |         goto label_31;
                                                                 |     }
                                                                 | label_137:
    0x000471aa ldr r0, [r0, 0x60]                                |     r0 = *((r0 + 0x60));
                                                                 | label_36:
    0x000471ac ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x000471ae cmp r3, 5                                         |     
    0x000471b0 ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x000471b2 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x000471b4 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x000471b6 b 0x46eca                                         |     goto label_32;
                                                                 | label_126:
    0x000471b8 ldr r3, [pc, 0x188]                               |     r3 = *(0x47344);
    0x000471ba vmov.i32 d16, 0                                   |     __asm ("vmov.i32 d16, 0");
    0x000471be ldr.w r0, [r8, 0xc]                               |     r0 = *((r8 + 0xc));
    0x000471c2 vstr d16, [sl]                                    |     __asm ("vstr d16, [sl]");
    0x000471c6 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000471ca ldr.w r1, [r0, 0x108]                             |     r1 = *((r0 + 0x108));
    0x000471ce ldr r2, [r3, 8]                                   |     r2 = *(0x4734c);
    0x000471d0 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x000471d2 blt 0x47208                                       |         goto label_138;
                                                                 |     }
    0x000471d4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000471d6 beq.w 0x47304                                     |         goto label_139;
                                                                 |     }
                                                                 | label_42:
    0x000471da ldr r3, [r1]                                      |     r3 = *(r1);
                                                                 |     if (r3 == 0) {
    0x000471dc cbz r3, 0x47214                                   |         goto label_140;
                                                                 |     }
    0x000471de ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x000471e0 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x000471e2 blt 0x47214                                       |         goto label_140;
                                                                 |     }
                                                                 | label_44:
    0x000471e4 cmp r3, 5                                         |     
    0x000471e6 ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x000471e8 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x000471ea movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_34:
    0x000471ec cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000471ee bne 0x47274                                       |         goto label_141;
                                                                 |     }
                                                                 | label_38:
    0x000471f0 ldr r2, [pc, 0x188]                               |     
    0x000471f2 ldr r3, [pc, 0x144]                               |     r3 = *(0x4733a);
    0x000471f4 add r2, pc                                        |     r2 = 0x8e574;
    0x000471f6 ldr r3, [r2, r3]                                  |     r3 = *(0x8e574);
    0x000471f8 ldr r2, [r3]                                      |     r2 = *(0x8e574);
    0x000471fa ldr r3, [sp, 0xcc]                                |     r3 = var_cch;
    0x000471fc eors r2, r3                                       |     r2 ^= r3;
    0x000471fe mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x00047202 beq 0x4716c                                       |         goto label_33;
                                                                 |     }
                                                                 | label_91:
    0x00047204 blx 0x1845c                                       |     fcn_0001845c ();
                                                                 |     if (r1 == 0) {
                                                                 | label_138:
    0x00047208 cbnz r1, 0x47214                                  |         
    0x0004720a ldr r3, [r0, 4]                                   |         r3 = *((r0 + 4));
    0x0004720c ldr r1, [r3, 0x60]                                |         r1 = *((r3 + 0x60));
                                                                 |         if (r1 != 0) {
    0x0004720e cbnz r1, 0x47214                                  |             goto label_140;
                                                                 |         }
    0x00047210 ldr r1, [r0, 8]                                   |         r1 = *((r0 + 8));
                                                                 | label_43:
    0x00047212 adds r1, 0x10                                     |         r1 += 0x10;
                                                                 |     }
                                                                 | label_140:
    0x00047214 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00047216 cmp r3, 5                                         |     
    0x00047218 ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x0004721a movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x0004721c movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0004721e b 0x471ec                                         |     goto label_34;
                                                                 | label_131:
    0x00047220 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00047222 bne 0x47188                                       |         goto label_35;
                                                                 |     }
    0x00047224 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00047226 ldr r0, [r3, 0x60]                                |     r0 = *((r3 + 0x60));
    0x00047228 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0004722a bne 0x47188                                       |         goto label_35;
                                                                 |     }
    0x0004722c ldr r0, [r1, 8]                                   |     r0 = *((r1 + 8));
                                                                 | label_50:
    0x0004722e adds r0, 0x10                                     |     r0 += 0x10;
    0x00047230 b 0x47188                                         |     goto label_35;
                                                                 | label_119:
    0x00047232 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00047234 bne 0x471ac                                       |         goto label_36;
                                                                 |     }
    0x00047236 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00047238 ldr r0, [r3, 0x60]                                |     r0 = *((r3 + 0x60));
    0x0004723a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0004723c bne 0x471ac                                       |         goto label_36;
                                                                 |     }
    0x0004723e ldr r0, [r1, 8]                                   |     r0 = *((r1 + 8));
                                                                 | label_52:
    0x00047240 adds r0, 0x10                                     |     r0 += 0x10;
    0x00047242 b 0x471ac                                         |     goto label_36;
                                                                 | label_109:
    0x00047244 mov r1, r8                                        |     r1 = r8;
    0x00047246 ldr.w sb, [sp, 0x34]                              |     sb = var_34h;
    0x0004724a mov r8, r5                                        |     r8 = r5;
    0x0004724c movs r7, 1                                        |     r7 = 1;
    0x0004724e movw r6, 0x4e2e                                   |     r6 = 0x4e2e;
    0x00047252 b.w 0x469ac                                       |     goto label_14;
                                                                 | label_133:
    0x00047256 ldr r0, [pc, 0x128]                               |     
    0x00047258 movs r3, 0                                        |     r3 = 0;
    0x0004725a str r1, [sp, 4]                                   |     var_4h = r1;
    0x0004725c movw r1, 0x1a1                                    |     r1 = 0x1a1;
    0x00047260 str r3, [sp]                                      |     *(sp) = r3;
    0x00047262 movs r3, 6                                        |     r3 = 6;
    0x00047264 add r0, pc                                        |     r0 = 0x8e5ea;
    0x00047266 str r4, [sp, 0xc]                                 |     var_ch = r4;
    0x00047268 str r0, [sp, 8]                                   |     var_8h = r0;
    0x0004726a ldr r0, [pc, 0x118]                               |     
    0x0004726c add r0, pc                                        |     r0 = 0x8e5f6;
    0x0004726e bl 0x38a7c                                        |     ap_log_rerror_ ();
    0x00047272 b 0x47158                                         |     goto label_37;
                                                                 | label_141:
    0x00047274 ldr r1, [pc, 0x110]                               |     
    0x00047276 movs r3, 0                                        |     r3 = 0;
    0x00047278 str r0, [sp, 4]                                   |     var_4h = r0;
    0x0004727a ldr r0, [pc, 0x110]                               |     
    0x0004727c add r1, pc                                        |     r1 = 0x8e608;
    0x0004727e str r3, [sp]                                      |     *(sp) = r3;
    0x00047280 str r1, [sp, 8]                                   |     var_8h = r1;
    0x00047282 movs r3, 6                                        |     r3 = 6;
    0x00047284 add r0, pc                                        |     r0 = 0x8e616;
    0x00047286 mov.w r1, 0x1b0                                   |     r1 = 0x1b0;
    0x0004728a bl 0x38a7c                                        |     ap_log_rerror_ ();
    0x0004728e b 0x471f0                                         |     goto label_38;
                                                                 | label_124:
    0x00047290 ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00047292 ldr r1, [r4]                                      |     r1 = *(r4);
    0x00047294 ldr r0, [r4, 0x18]                                |     r0 = *((r4 + 0x18));
    0x00047296 ldr r3, [r5, 0xc]                                 |     r3 = *((r5 + 0xc));
    0x00047298 str r1, [r2]                                      |     *(r2) = r1;
    0x0004729a ldr r2, [r4]                                      |     r2 = *(r4);
    0x0004729c ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x0004729e str r1, [r2, 4]                                   |     *((r2 + 4)) = r1;
    0x000472a0 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x000472a2 ldr r3, [r4, 0x1c]                                |     r3 = *((r4 + 0x1c));
    0x000472a4 mov r0, r4                                        |     r0 = r4;
    0x000472a6 blx r3                                            |     uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
                                                                 | label_97:
    0x000472a8 movw r6, 0x1178                                   |     
    0x000472ac movt r6, 1                                        |     r6 = 0x11178;
    0x000472b0 b.w 0x46a22                                       |     goto label_2;
                                                                 | label_93:
    0x000472b4 lsls r2, r6, 0x1e                                 |     r2 = r6 << 0x1e;
    0x000472b6 it mi                                             |     
                                                                 |     if (r2 < r6) {
    0x000472b8 strmi r1, [r0, 0x94]                              |         *((r0 + 0x94)) = r1;
                                                                 |         goto label_142;
                                                                 |     }
                                                                 |     if (r2 < r6) {
                                                                 | label_142:
    0x000472bc bmi.w 0x46850                                     |         goto label_1;
                                                                 |     }
    0x000472c0 movs r3, 0x64                                     |     r3 = 0x64;
    0x000472c2 ldr r6, [r0, 0x40]                                |     r6 = *((r0 + 0x40));
    0x000472c4 str r3, [r0, 0x44]                                |     *((r0 + 0x44)) = r3;
    0x000472c6 str r1, [r0, 0x40]                                |     *((r0 + 0x40)) = r1;
    0x000472c8 bl 0x2395c                                        |     ap_send_interim_response ();
    0x000472cc ldr.w r3, [r8, 0xc]                               |     r3 = *((r8 + 0xc));
    0x000472d0 strd r6, r4, [r3, 0x40]                           |     __asm ("strd r6, r4, [r3, 0x40]");
    0x000472d4 b 0x46f02                                         |     goto label_39;
                                                                 | label_128:
    0x000472d6 ldr r7, [r5, 4]                                   |     r7 = *((r5 + 4));
    0x000472d8 ldr r3, [r7, 0x60]                                |     r3 = *((r7 + 0x60));
    0x000472da cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000472dc beq.w 0x47528                                     |         goto label_143;
                                                                 |     }
    0x000472e0 ldr.w ip, [r3]                                    |     ip = *(r3);
    0x000472e4 cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x000472e8 beq 0x472f6                                       |         goto label_144;
                                                                 |     }
    0x000472ea ldrsb.w ip, [ip, r2]                              |     ip = *((ip + r2));
    0x000472ee cmp.w ip, 0                                       |     
                                                                 |     if (ip >= 0) {
    0x000472f2 bge.w 0x47054                                     |         goto label_40;
                                                                 |     }
                                                                 | label_144:
    0x000472f6 ldr r3, [r7, 0x60]                                |     r3 = *((r7 + 0x60));
                                                                 | label_45:
    0x000472f8 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x000472fa cmp r3, 5                                         |     
    0x000472fc ite le                                            |     
                                                                 |     if (r3 > 5) {
    0x000472fe movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 5) {
    0x00047300 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00047302 b 0x47060                                         |     goto label_41;
                                                                 | label_139:
    0x00047304 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x00047306 ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00047308 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x0004730a bne.w 0x471da                                     |         goto label_42;
                                                                 |     }
    0x0004730e ldr r1, [r0, 8]                                   |     r1 = *((r0 + 8));
    0x00047310 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00047312 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00047314 beq.w 0x47212                                     |         goto label_43;
                                                                 |     }
    0x00047318 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x0004731a cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x0004731c bge.w 0x471e4                                     |         goto label_44;
                                                                 |     }
    0x00047320 b 0x47212                                         |     goto label_43;
                                                                 | label_127:
    0x00047322 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047324 bne 0x472f8                                       |         goto label_45;
                                                                 |     }
    0x00047326 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00047328 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x0004732a cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0004732c bne 0x472f8                                       |         goto label_45;
                                                                 |     }
    0x0004732e ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
                                                                 | label_59:
    0x00047330 adds r3, 0x10                                     |     r3 += 0x10;
    0x00047332 b 0x472f8                                         |     goto label_45;
                                                                 | label_100:
    0x00047390 ldr r1, [pc, 0x264]                               |     
    0x00047392 ldr.w r0, [r5, 0xc0]                              |     r0 = *((r5 + 0xc0));
    0x00047396 add r1, pc                                        |     r1 = 0x8e992;
    0x00047398 blx 0x185a8                                       |     apr_hash_make ();
    0x0004739c ldr r3, [pc, 0x25c]                               |     r3 = *(0x475fc);
    0x0004739e mov r1, r0                                        |     r1 = r0;
    0x000473a0 ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x000473a4 ldr r2, [r3, 8]                                   |     r2 = *(0x47604);
    0x000473a6 ldr.w r3, [r5, 0x108]                             |     r3 = *((r5 + 0x108));
    0x000473aa cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x000473ac blt 0x4741c                                       |         goto label_145;
                                                                 |     }
    0x000473ae cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000473b0 beq.w 0x4753e                                     |         goto label_146;
                                                                 |     }
    0x000473b4 ldr r0, [r3]                                      |     r0 = *(r3);
    0x000473b6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000473b8 beq 0x47420                                       |         goto label_55;
                                                                 |     }
    0x000473ba ldrsb r0, [r0, r2]                                |     r0 = *((r0 + r2));
    0x000473bc cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x000473be blt 0x47420                                       |         goto label_55;
                                                                 |     }
                                                                 | label_60:
    0x000473c0 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000473c2 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x000473c4 cmp r3, 5                                         |     
    0x000473c6 ble 0x473f4                                       |     
                                                                 |     while (r3 > 5) {
    0x000473c8 ldr r0, [r5, 0x44]                                |         r0 = *((r5 + 0x44));
    0x000473ca cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x000473cc beq.w 0x47566                                     |             goto label_147;
                                                                 |         }
    0x000473d0 ldr r3, [pc, 0x22c]                               |         
    0x000473d2 add r3, pc                                        |         r3 = 0x8e9d6;
                                                                 | label_62:
    0x000473d4 strd r3, r1, [sp, 0x10]                           |         __asm ("strd r3, r1, [sp, 0x10]");
    0x000473d8 movw r1, 0x13d                                    |         r1 = 0x13d;
    0x000473dc ldr r3, [pc, 0x224]                               |         
    0x000473de str r0, [sp, 0xc]                                 |         var_ch = r0;
    0x000473e0 ldr r0, [pc, 0x224]                               |         
    0x000473e2 add r3, pc                                        |         r3 = 0x8e9ea;
    0x000473e4 strd r5, r3, [sp, 4]                              |         __asm ("strd r5, r3, [sp, 4]");
    0x000473e8 movs r3, 0                                        |         r3 = 0;
    0x000473ea str r3, [sp]                                      |         *(sp) = r3;
    0x000473ec add r0, pc                                        |         r0 = 0x8e9f8;
    0x000473ee movs r3, 6                                        |         r3 = 6;
    0x000473f0 bl 0x38a7c                                        |         ap_log_rerror_ ();
                                                                 | label_48:
    0x000473f4 movs r6, 0x16                                     |         r6 = 0x16;
    0x000473f6 b 0x46cb2                                         |         goto label_46;
                                                                 | label_129:
    0x000473f8 strd r1, r0, [sp, 0x18]                           |         __asm ("strd r1, r0, [var_18h]");
    0x000473fc movs r3, 0                                        |         r3 = 0;
    0x000473fe ldr r1, [pc, 0x20c]                               |         
    0x00047400 ldr r0, [pc, 0x20c]                               |         
    0x00047402 str r3, [sp]                                      |         *(sp) = r3;
    0x00047404 movs r3, 6                                        |         r3 = 6;
    0x00047406 add r1, pc                                        |         r1 = 0x8ea18;
    0x00047408 strd r6, r4, [sp, 0x10]                           |         __asm ("strd r6, r4, [var_10h]");
    0x0004740c str r1, [sp, 8]                                   |         var_8h = r1;
    0x0004740e add r0, pc                                        |         r0 = 0x8ea22;
    0x00047410 mov.w r1, 0x1ba                                   |         r1 = 0x1ba;
    0x00047414 str r5, [sp, 4]                                   |         var_4h = r5;
    0x00047416 bl 0x38a7c                                        |         ap_log_rerror_ ();
    0x0004741a b 0x47066                                         |         goto label_47;
                                                                 | label_145:
    0x0004741c cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x0004741e beq 0x474e4                                       |             goto label_148;
                                                                 |         }
                                                                 | label_55:
    0x00047420 ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x00047422 cmp r3, 5                                         |         
    0x00047424 bgt 0x473c8                                       |         
                                                                 |     }
    0x00047426 b 0x473f4                                         |     goto label_48;
                                                                 | label_101:
    0x00047428 mov r1, r7                                        |     r1 = r7;
    0x0004742a ldr.w r2, [r5, 0x1d0]                             |     r2 = *((r5 + 0x1d0));
    0x0004742e ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047430 blx 0x18140                                       |     r0 = strcpy (r0, r1)
    0x00047434 mov r7, r0                                        |     r7 = r0;
    0x00047436 b 0x46cba                                         |     goto label_49;
                                                                 | label_134:
    0x00047438 ldr r0, [r1, 8]                                   |     r0 = *((r1 + 8));
    0x0004743a ldr r3, [r0, 0x10]                                |     r3 = *((r0 + 0x10));
    0x0004743c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0004743e beq.w 0x4722e                                     |         goto label_50;
                                                                 |     }
    0x00047442 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00047444 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00047446 bge.w 0x4714c                                     |         goto label_51;
                                                                 |     }
    0x0004744a b 0x4722e                                         |     goto label_50;
                                                                 | label_136:
    0x0004744c ldr r0, [r1, 8]                                   |     r0 = *((r1 + 8));
    0x0004744e ldr r3, [r0, 0x10]                                |     r3 = *((r0 + 0x10));
    0x00047450 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00047452 beq.w 0x47240                                     |         goto label_52;
                                                                 |     }
    0x00047456 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00047458 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x0004745a bge.w 0x46ec2                                     |         goto label_31;
                                                                 |     }
    0x0004745e b 0x47240                                         |     goto label_52;
                                                                 | label_98:
    0x00047460 mov r6, r0                                        |     r6 = r0;
    0x00047462 b.w 0x46a22                                       |     goto label_2;
                                                                 | label_125:
    0x00047466 ldr r3, [pc, 0x194]                               |     r3 = *(0x475fe);
    0x00047468 ldr.w r6, [r8, 0xc]                               |     r6 = *((r8 + 0xc));
    0x0004746c ldr.w r3, [sb, r3]                                |     r3 = *((sb + r3));
    0x00047470 ldr r2, [r3, 8]                                   |     r2 = *(0x47606);
    0x00047472 ldr.w r3, [r6, 0x108]                             |     r3 = *((r6 + 0x108));
    0x00047476 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00047478 blt 0x474d2                                       |         goto label_149;
                                                                 |     }
                                                                 |     if (r3 == 0) {
    0x0004747a cbz r3, 0x474a8                                   |         goto label_150;
                                                                 |     }
    0x0004747c ldr r7, [r3]                                      |     r7 = *(r3);
                                                                 |     if (r7 == 0) {
    0x0004747e cbz r7, 0x474c6                                   |         goto label_54;
                                                                 |     }
    0x00047480 ldrsb r7, [r7, r2]                                |     r7 = *((r7 + r2));
    0x00047482 cmp r7, 0                                         |     
                                                                 |     if (r7 < 0) {
    0x00047484 blt 0x474c6                                       |         goto label_54;
                                                                 |     }
                                                                 |     do {
                                                                 | label_58:
    0x00047486 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00047488 ldrsb r3, [r3, r2]                                |         r3 = *((r3 + r2));
    0x0004748a cmp r3, 5                                         |         
    0x0004748c ite le                                            |         
                                                                 |         if (r3 > 5) {
    0x0004748e movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 5) {
    0x00047490 movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 | label_53:
    0x00047492 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00047494 bne 0x474f2                                       |             goto label_151;
                                                                 |         }
                                                                 | label_56:
    0x00047496 movw r2, 0x19d                                    |         r2 = 0x19d;
    0x0004749a mov r1, r8                                        |         r1 = r8;
    0x0004749c mov r0, sl                                        |         r0 = sl;
    0x0004749e bl 0x45e48                                        |         r0 = fcn_00045e48 (r0, r1, r2);
    0x000474a2 mov r6, r0                                        |         r6 = r0;
    0x000474a4 b.w 0x46a22                                       |         goto label_2;
                                                                 | label_150:
    0x000474a8 ldr r7, [r6, 4]                                   |         r7 = *((r6 + 4));
    0x000474aa ldr r3, [r7, 0x60]                                |         r3 = *((r7 + 0x60));
    0x000474ac cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000474ae beq 0x47516                                       |             goto label_152;
                                                                 |         }
    0x000474b0 ldr.w ip, [r3]                                    |         ip = *(r3);
    0x000474b4 cmp.w ip, 0                                       |         
                                                                 |         if (ip == 0) {
    0x000474b8 beq 0x474c4                                       |             goto label_153;
                                                                 |         }
    0x000474ba ldrsb.w ip, [ip, r2]                              |         ip = *((ip + r2));
    0x000474be cmp.w ip, 0                                       |         
    0x000474c2 bge 0x47486                                       |         
                                                                 |     } while (ip >= 0);
                                                                 | label_153:
    0x000474c4 ldr r3, [r7, 0x60]                                |     r3 = *((r7 + 0x60));
                                                                 |     do {
                                                                 | label_54:
    0x000474c6 ldr r3, [r3, 4]                                   |         r3 = *((r3 + 4));
    0x000474c8 cmp r3, 5                                         |         
    0x000474ca ite le                                            |         
                                                                 |         if (r3 > 5) {
    0x000474cc movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 5) {
    0x000474ce movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x000474d0 b 0x47492                                         |         goto label_53;
                                                                 | label_149:
    0x000474d2 cmp r3, 0                                         |         
    0x000474d4 bne 0x474c6                                       |         
                                                                 |     } while (r3 != 0);
    0x000474d6 ldr r3, [r6, 4]                                   |     r3 = *((r6 + 4));
    0x000474d8 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x000474da cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000474dc bne 0x474c6                                       |         goto label_54;
                                                                 |     }
    0x000474de ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
                                                                 | label_57:
    0x000474e0 adds r3, 0x10                                     |     r3 += 0x10;
    0x000474e2 b 0x474c6                                         |     goto label_54;
                                                                 | label_148:
    0x000474e4 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x000474e6 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x000474e8 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000474ea bne 0x47420                                       |         goto label_55;
                                                                 |     }
    0x000474ec ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
                                                                 | label_61:
    0x000474ee adds r3, 0x10                                     |     r3 += 0x10;
    0x000474f0 b 0x47420                                         |     goto label_55;
                                                                 | label_151:
    0x000474f2 strd r1, r4, [sp, 0x18]                           |     __asm ("strd r1, r4, [var_18h]");
    0x000474f6 movs r3, 0                                        |     r3 = 0;
    0x000474f8 ldr r1, [pc, 0x118]                               |     
    0x000474fa strd r5, r0, [sp, 0x10]                           |     __asm ("strd r5, r0, [var_10h]");
    0x000474fe ldr r0, [pc, 0x118]                               |     
    0x00047500 add r1, pc                                        |     r1 = 0x8eb18;
    0x00047502 str r3, [sp]                                      |     *(sp) = r3;
    0x00047504 str r1, [sp, 8]                                   |     var_8h = r1;
    0x00047506 movs r3, 6                                        |     r3 = 6;
    0x00047508 add r0, pc                                        |     r0 = 0x8eb26;
    0x0004750a mov.w r1, 0x290                                   |     r1 = 0x290;
    0x0004750e str r6, [sp, 4]                                   |     var_4h = r6;
    0x00047510 bl 0x38a7c                                        |     ap_log_rerror_ ();
    0x00047514 b 0x47496                                         |     goto label_56;
                                                                 | label_152:
    0x00047516 ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x00047518 ldr r7, [r3, 0x10]                                |     r7 = *((r3 + 0x10));
    0x0004751a cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0004751c beq 0x474e0                                       |         goto label_57;
                                                                 |     }
    0x0004751e ldrsb r7, [r7, r2]                                |     r7 = *((r7 + r2));
    0x00047520 cmp r7, 0                                         |     
                                                                 |     if (r7 < 0) {
    0x00047522 blt 0x474e0                                       |         goto label_57;
                                                                 |     }
    0x00047524 adds r3, 0x10                                     |     r3 += 0x10;
    0x00047526 b 0x47486                                         |     goto label_58;
                                                                 | label_143:
    0x00047528 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x0004752a ldr r7, [r3, 0x10]                                |     r7 = *((r3 + 0x10));
    0x0004752c cmp r7, 0                                         |     
                                                                 |     if (r7 == 0) {
    0x0004752e beq.w 0x47330                                     |         goto label_59;
                                                                 |     }
    0x00047532 ldrsb r7, [r7, r2]                                |     r7 = *((r7 + r2));
    0x00047534 cmp r7, 0                                         |     
                                                                 |     if (r7 < 0) {
    0x00047536 blt.w 0x47330                                     |         goto label_59;
                                                                 |     }
    0x0004753a adds r3, 0x10                                     |     r3 += 0x10;
    0x0004753c b 0x47054                                         |     goto label_40;
                                                                 | label_146:
    0x0004753e ldr r0, [r5, 4]                                   |     r0 = *((r5 + 4));
    0x00047540 ldr r3, [r0, 0x60]                                |     r3 = *((r0 + 0x60));
                                                                 |     if (r3 == 0) {
    0x00047542 cbz r3, 0x47554                                   |         goto label_154;
                                                                 |     }
    0x00047544 ldr r4, [r3]                                      |     r4 = *(r3);
                                                                 |     if (r4 == 0) {
    0x00047546 cbz r4, 0x47550                                   |         goto label_155;
                                                                 |     }
    0x00047548 ldrsb r4, [r4, r2]                                |     r4 = *((r4 + r2));
    0x0004754a cmp r4, 0                                         |     
                                                                 |     if (r4 >= 0) {
    0x0004754c bge.w 0x473c0                                     |         goto label_60;
                                                                 |     }
                                                                 | label_155:
    0x00047550 ldr r3, [r0, 0x60]                                |     r3 = *((r0 + 0x60));
    0x00047552 b 0x47420                                         |     goto label_55;
                                                                 | label_154:
    0x00047554 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00047556 ldr r0, [r3, 0x10]                                |     r0 = *((r3 + 0x10));
    0x00047558 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004755a beq 0x474ee                                       |         goto label_61;
                                                                 |     }
    0x0004755c ldrsb r0, [r0, r2]                                |     r0 = *((r0 + r2));
    0x0004755e cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00047560 blt 0x474ee                                       |         goto label_61;
                                                                 |     }
    0x00047562 adds r3, 0x10                                     |     r3 += 0x10;
    0x00047564 b 0x473c0                                         |     goto label_60;
                                                                 | label_147:
    0x00047566 ldr r1, [pc, 0xb4]                                |     
    0x00047568 add r1, pc                                        |     r1 = 0x8eb8a;
    0x0004756a mov r3, r1                                        |     r3 = r1;
    0x0004756c b 0x473d4                                         |     goto label_62;
                                                                 | label_72:
    0x0004756e ldr r2, [pc, 0x8c]                                |     
    0x00047570 ldr r4, [r5, 0xc]                                 |     r4 = *((r5 + 0xc));
    0x00047572 ldr.w r2, [sb, r2]                                |     r2 = *((sb + r2));
    0x00047576 ldr.w r1, [r4, 0x108]                             |     r1 = *((r4 + 0x108));
    0x0004757a ldr r2, [r2, 8]                                   |     r2 = *(0x47606);
    0x0004757c cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x0004757e blt 0x475a0                                       |         goto label_156;
                                                                 |     }
    0x00047580 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00047582 beq 0x475de                                       |         goto label_157;
                                                                 |     }
                                                                 | label_65:
    0x00047584 ldr r0, [r1]                                      |     r0 = *(r1);
                                                                 |     if (r0 == 0) {
    0x00047586 cbz r0, 0x475a2                                   |         goto label_63;
                                                                 |     }
    0x00047588 ldrsb r0, [r0, r2]                                |     r0 = *((r0 + r2));
    0x0004758a cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x0004758c blt 0x475a2                                       |         goto label_63;
                                                                 |     }
                                                                 | label_67:
    0x0004758e cmp r0, 5                                         |     
    0x00047590 ite le                                            |     
                                                                 |     if (r0 > 5) {
    0x00047592 movle r0, 0                                       |         r0 = 0;
                                                                 |     }
                                                                 |     if (r0 <= 5) {
    0x00047594 movgt r0, 1                                       |         r0 = 1;
                                                                 |     }
                                                                 |     if (r0 != 0) {
    0x00047596 cbnz r0, 0x475c0                                  |         goto label_158;
                                                                 |     }
                                                                 |     do {
                                                                 | label_64:
    0x00047598 movw r6, 0x4e2e                                   |         r6 = 0x4e2e;
    0x0004759c b.w 0x46a22                                       |         goto label_2;
                                                                 |         if (r1 == 0) {
                                                                 | label_156:
    0x000475a0 cbz r1, 0x475b2                                   |             goto label_159;
                                                                 |         }
                                                                 | label_63:
    0x000475a2 ldr r0, [r1, 4]                                   |         r0 = *((r1 + 4));
    0x000475a4 cmp r0, 5                                         |         
    0x000475a6 ite le                                            |         
                                                                 |         if (r0 > 5) {
    0x000475a8 movle r0, 0                                       |             r0 = 0;
                                                                 |         }
                                                                 |         if (r0 <= 5) {
    0x000475aa movgt r0, 1                                       |             r0 = 1;
                                                                 |         }
    0x000475ac cmp r0, 0                                         |         
    0x000475ae beq 0x47598                                       |         
                                                                 |     } while (r0 == 0);
    0x000475b0 b 0x475c0                                         |     goto label_158;
                                                                 | label_159:
    0x000475b2 ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x000475b4 ldr r1, [r1, 0x60]                                |     r1 = *((r1 + 0x60));
    0x000475b6 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000475b8 bne 0x475a2                                       |         goto label_63;
                                                                 |     }
    0x000475ba ldr r1, [r4, 8]                                   |     r1 = *((r4 + 8));
                                                                 | label_66:
    0x000475bc adds r1, 0x10                                     |     r1 += 0x10;
    0x000475be b 0x475a2                                         |     goto label_63;
                                                                 | label_158:
    0x000475c0 ldr r1, [pc, 0x5c]                                |     
    0x000475c2 movs r5, 0                                        |     r5 = 0;
    0x000475c4 ldr r0, [pc, 0x5c]                                |     
    0x000475c6 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x000475c8 movs r3, 6                                        |     r3 = 6;
    0x000475ca add r1, pc                                        |     r1 = 0x8ebee;
    0x000475cc str r4, [sp, 4]                                   |     var_4h = r4;
    0x000475ce str r1, [sp, 8]                                   |     var_8h = r1;
    0x000475d0 add r0, pc                                        |     r0 = 0x8ebf8;
    0x000475d2 movw r1, 0x2b9                                    |     r1 = 0x2b9;
    0x000475d6 str r5, [sp]                                      |     *(sp) = r5;
    0x000475d8 bl 0x38a7c                                        |     ap_log_rerror_ ();
    0x000475dc b 0x47598                                         |     goto label_64;
                                                                 | label_157:
    0x000475de ldr r1, [r4, 4]                                   |     r1 = *((r4 + 4));
    0x000475e0 ldr r1, [r1, 0x60]                                |     r1 = *((r1 + 0x60));
    0x000475e2 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x000475e4 bne 0x47584                                       |         goto label_65;
                                                                 |     }
    0x000475e6 ldr r1, [r4, 8]                                   |     r1 = *((r4 + 8));
    0x000475e8 ldr r0, [r1, 0x10]                                |     r0 = *((r1 + 0x10));
    0x000475ea cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000475ec beq 0x475bc                                       |         goto label_66;
                                                                 |     }
    0x000475ee ldrsb r0, [r0, r2]                                |     r0 = *((r0 + r2));
    0x000475f0 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x000475f2 bge 0x4758e                                       |         goto label_67;
                                                                 |     }
    0x000475f4 b 0x475bc                                         |     goto label_66;
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x47688 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ap_http_header_filter ()                         | void ap_http_header_filter (int16_t arg_4h, int16_t arg_8h, int16_t arg_c8h, int16_t arg1, int16_t arg2) {
                                                                 |     int16_t var_0h;
                                                                 |     int32_t var_4h;
                                                                 |     int32_t var_4h_2;
                                                                 |     int32_t var_ch;
                                                                 |     int32_t var_ch_2;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int32_t var_38h_2;
                                                                 |     int16_t var_44h;
                                                                 |     char * filename;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_50h;
                                                                 |     int16_t var_52h;
                                                                 |     int16_t var_54h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x00047688 ldr.w r2, [pc, 0x848]                             |     r2 = *(0x00047ed4);
    0x0004768c ldr.w r3, [pc, 0x848]                             |     
    0x00047690 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00047694 sub sp, 0x5c                                      |     
    0x00047696 add r2, pc                                        |     r2 += pc;
    0x00047698 ldr r5, [r0, 0xc]                                 |     r5 = *((r0 + 0xc));
    0x0004769a mov r8, r0                                        |     r8 = r0;
    0x0004769c mov fp, r1                                        |     
    0x0004769e ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000476a0 ldr.w r7, [pc, 0x838]                             |     r7 = *(0x00047edc);
    0x000476a4 ldr.w sb, [r5, 4]                                 |     sb = *((r5 + 4));
    0x000476a8 ldr r3, [r3]                                      |     r3 = *(0x47ed8);
    0x000476aa str r3, [sp, 0x54]                                |     var_54h = r3;
    0x000476ac mov.w r3, 0                                       |     r3 = 0;
    0x000476b0 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x000476b2 add r7, pc                                        |     r7 += pc;
    0x000476b4 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 |     if (r3 == 0) {
    0x000476b6 cbnz r3, 0x476c6                                  |         
    0x000476b8 ldr r3, [r5, 0x44]                                |         r3 = *((r5 + 0x44));
    0x000476ba cmp.w r3, 0x130                                   |         
    0x000476be it ne                                             |         
                                                                 |         if (r3 != fcn.00000004) {
    0x000476c0 cmpne r3, 0xcc                                    |             __asm ("cmpne r3, 0xcc");
                                                                 |         }
                                                                 |         if (r3 != fcn.00000004) {
    0x000476c2 bne.w 0x479ac                                     |             goto label_32;
                                                                 |         }
                                                                 |     }
    0x000476c6 ldr.w r3, [r8, 4]                                 |     r3 = *((r8 + 4));
    0x000476ca movs r0, 0                                        |     r0 = 0;
    0x000476cc add.w r6, fp, 4                                   |     r6 += arg_4h;
    0x000476d0 str r0, [sp, 0x44]                                |     var_44h = r0;
    0x000476d2 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x000476d4 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000476d6 beq.w 0x47c28                                     |         goto label_33;
                                                                 |     }
    0x000476da ldr r3, [r3]                                      |     r3 = *(r3);
    0x000476dc cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000476de bne.w 0x47a06                                     |         goto label_34;
                                                                 |     }
    0x000476e2 ldr.w r2, [fp, 4]                                 |     r2 = *(arg_4h);
    0x000476e6 cmp r6, r2                                        |     
    0x000476e8 str r2, [sp, 0x18]                                |     var_18h = r2;
    0x000476ea ittt eq                                           |     
                                                                 |     if (r6 != r2) {
    0x000476ec moveq sl, r3                                      |         sl = r3;
                                                                 |     }
                                                                 |     if (r6 != r2) {
    0x000476ee moveq r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 |     if (r6 != r2) {
    0x000476f0 streq r3, [sp, 0x1c]                              |         var_1ch = r3;
                                                                 |     }
                                                                 |     if (r6 == r2) {
    0x000476f2 beq.w 0x47a52                                     |         goto label_35;
                                                                 |     }
    0x000476f6 movs r3, 1                                        |     r3 = 1;
    0x000476f8 str r3, [sp, 0x1c]                                |     var_1ch = r3;
                                                                 | label_1:
    0x000476fa ldr.w r3, [pc, 0x7e4]                             |     r3 = *(0x47ee2);
    0x000476fe mov.w sl, 0                                       |     sl = 0;
    0x00047702 mov r4, sl                                        |     r4 = sl;
    0x00047704 ldr r1, [r7, r3]                                  |     r1 = *((r7 + r3));
    0x00047706 ldr r3, [sp, 0x18]                                |     r3 = var_18h;
                                                                 |     do {
    0x00047708 ldr r2, [r3, 8]                                   |         r2 = *((r3 + 8));
    0x0004770a cmp r4, 0                                         |         
    0x0004770c it eq                                             |         
                                                                 |         if (r4 == 0) {
    0x0004770e cmpeq r2, r1                                      |             __asm ("cmpeq r2, r1");
                                                                 |         }
    0x00047710 it eq                                             |         
                                                                 |         if (r4 != 0) {
    0x00047712 ldreq r4, [r3, 0x18]                              |             r4 = *((r3 + 0x18));
                                                                 |         }
                                                                 |         if (r4 != 0) {
    0x00047714 beq 0x47722                                       |             
    0x00047716 ldr.w r0, [pc, 0x7cc]                             |             r0 = *(0x47ee6);
    0x0004771a ldr r0, [r7, r0]                                  |             r0 = *((r7 + r0));
    0x0004771c cmp r2, r0                                        |             
                                                                 |             if (r2 == r0) {
    0x0004771e beq.w 0x479d6                                     |                 goto label_36;
                                                                 |             }
                                                                 |         }
    0x00047722 ldr r3, [r3]                                      |         r3 = *(r3);
    0x00047724 cmp r3, r6                                        |         
    0x00047726 bne 0x47708                                       |         
                                                                 |     } while (r3 != r6);
    0x00047728 str r3, [sp, 0x18]                                |     var_18h = r3;
    0x0004772a mov sl, r4                                        |     sl = r4;
    0x0004772c ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x0004772e ldr r3, [r3]                                      |     r3 = *(r3);
    0x00047730 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00047732 beq.w 0x47a52                                     |         goto label_35;
                                                                 |     }
                                                                 | label_24:
    0x00047736 cmp.w sl, 0                                       |     
                                                                 |     if (sl != 0) {
    0x0004773a bne.w 0x47ebc                                     |         goto label_37;
                                                                 |     }
    0x0004773e str.w sl, [sp, 0x28]                              |     __asm ("str.w sl, [var_28h]");
                                                                 | label_2:
    0x00047742 ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x00047744 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047746 bne.w 0x47c40                                     |         goto label_38;
                                                                 |     }
    0x0004774a ldr.w r0, [r5, 0xb8]                              |     r0 = *((r5 + 0xb8));
    0x0004774e blx 0x178d8                                       |     r0 = fcn_000178d8 ();
    0x00047752 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00047754 beq.w 0x47b42                                     |         goto label_39;
                                                                 |     }
                                                                 | label_5:
    0x00047758 ldr.w r1, [pc, 0x78c]                             |     
    0x0004775c ldr.w r0, [r5, 0xbc]                              |     r0 = *((r5 + 0xbc));
    0x00047760 add r1, pc                                        |     r1 = 0x8f64c;
    0x00047762 blx 0x185a8                                       |     r0 = apr_hash_make ();
    0x00047766 mov r6, r0                                        |     r6 = r0;
    0x00047768 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004776a beq.w 0x47d3e                                     |         goto label_40;
                                                                 |     }
    0x0004776e ldr.w r1, [pc, 0x77c]                             |     r1 = *(0x00047eec);
    0x00047772 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047776 add r1, pc                                        |     r1 += pc;
    0x00047778 blx 0x17a14                                       |     apr_dynamic_fn_retrieve ();
    0x0004777c ldr.w r2, [pc, 0x770]                             |     
    0x00047780 mov.w r3, 0x3e8                                   |     r3 = 0x3e8;
    0x00047784 ldr.w r1, [pc, 0x76c]                             |     
    0x00047788 ldr.w r0, [r5, 0xbc]                              |     r0 = *((r5 + 0xbc));
    0x0004778c add r2, pc                                        |     r2 = 0x8f680;
    0x0004778e str r3, [r5, 0x28]                                |     *((r5 + 0x28)) = r3;
    0x00047790 add r1, pc                                        |     r1 = 0x8f688;
    0x00047792 blx 0x18340                                       |     fcn_00018340 ();
                                                                 | label_16:
    0x00047796 ldr.w r1, [pc, 0x760]                             |     r1 = *(0x00047ef8);
    0x0004779a ldr.w r0, [r5, 0xc0]                              |     r0 = *((r5 + 0xc0));
    0x0004779e add r1, pc                                        |     r1 += pc;
    0x000477a0 blx 0x185a8                                       |     r0 = apr_hash_make ();
                                                                 |     if (r0 != 0) {
    0x000477a4 cbz r0, 0x477b4                                   |         
    0x000477a6 ldr.w r1, [pc, 0x754]                             |         r1 = *(0x00047efc);
    0x000477aa ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x000477ae add r1, pc                                        |         r1 += pc;
    0x000477b0 blx 0x17a14                                       |         apr_dynamic_fn_retrieve ();
                                                                 |     }
    0x000477b4 ldr r3, [r5, 0x1c]                                |     r3 = *((r5 + 0x1c));
    0x000477b6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000477b8 beq.w 0x47a46                                     |         goto label_41;
                                                                 |     }
                                                                 | label_3:
    0x000477bc mov r0, r5                                        |     r0 = r5;
    0x000477be bl 0x432bc                                        |     ap_set_keepalive ();
    0x000477c2 ldr r3, [r5, 0x44]                                |     r3 = *((r5 + 0x44));
    0x000477c4 cmp.w r3, 0x130                                   |     
    0x000477c8 it ne                                             |     
                                                                 |     if (r3 != fcn.00000004) {
    0x000477ca cmpne r3, 0xcc                                    |         __asm ("cmpne r3, 0xcc");
                                                                 |     }
                                                                 |     if (r3 == fcn.00000004) {
    0x000477cc beq.w 0x47b06                                     |         goto label_42;
                                                                 |     }
    0x000477d0 ldr.w r3, [r5, 0x88]                              |     r3 = *((r5 + 0x88));
    0x000477d4 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x000477d6 bne.w 0x47d92                                     |         goto label_43;
                                                                 |     }
                                                                 | label_18:
    0x000477da ldr.w r1, [r5, 0xc4]                              |     r1 = *((r5 + 0xc4));
                                                                 | label_4:
    0x000477de mov r0, r5                                        |     r0 = r5;
    0x000477e0 bl 0x21dd8                                        |     r0 = ap_make_content_type ();
    0x000477e4 mov r2, r0                                        |     r2 = r0;
                                                                 |     if (r0 != 0) {
    0x000477e6 cbz r0, 0x477f6                                   |         
    0x000477e8 ldr.w r1, [pc, 0x714]                             |         
    0x000477ec ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x000477f0 add r1, pc                                        |         r1 = 0x8f6f4;
    0x000477f2 blx 0x18340                                       |         fcn_00018340 ();
                                                                 |     }
    0x000477f6 ldr.w r2, [r5, 0xcc]                              |     r2 = *((r5 + 0xcc));
                                                                 |     if (r2 != 0) {
    0x000477fa cbz r2, 0x4780a                                   |         
    0x000477fc ldr.w r1, [pc, 0x704]                             |         
    0x00047800 ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x00047804 add r1, pc                                        |         r1 = 0x8f70c;
    0x00047806 blx 0x18340                                       |         fcn_00018340 ();
                                                                 |     }
    0x0004780a ldr.w r0, [r5, 0xd0]                              |     r0 = *((r5 + 0xd0));
    0x0004780e blx 0x17ba0                                       |     r0 = apr_file_read ();
    0x00047812 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00047814 beq.w 0x47cca                                     |         goto label_44;
                                                                 |     }
                                                                 | label_22:
    0x00047818 ldr.w r3, [r5, 0x124]                             |     r3 = *((r5 + 0x124));
    0x0004781c cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x0004781e bne.w 0x47c96                                     |         goto label_45;
                                                                 |     }
                                                                 | label_14:
    0x00047822 ldr r3, [r5, 0x24]                                |     r3 = *((r5 + 0x24));
    0x00047824 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047826 bne.w 0x47c66                                     |         goto label_46;
                                                                 |     }
                                                                 | label_13:
    0x0004782a ldr.w r1, [sb, 0x40]                              |     r1 = *((sb + 0x40));
    0x0004782e ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047830 blx 0x17cac                                       |     fcn_00017cac ();
    0x00047834 ldr r2, [sp, 0x44]                                |     r2 = var_44h;
    0x00047836 mov r1, r0                                        |     r1 = r0;
    0x00047838 mov r6, r0                                        |     r6 = r0;
    0x0004783a mov r0, r5                                        |     r0 = r5;
    0x0004783c bl 0x45f58                                        |     fcn_00045f58 (r0, r1, r2);
    0x00047840 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047844 ldr.w sb, [r5]                                    |     sb = *(r5);
    0x00047848 blx 0x179c0                                       |     apr_bucket_flush_create ();
    0x0004784c ldr r1, [r0, 8]                                   |     r1 = *((r0 + 8));
    0x0004784e mov r3, r0                                        |     r3 = r0;
    0x00047850 str r0, [sp, 0x24]                                |     var_24h = r0;
    0x00047852 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00047854 beq.w 0x47b80                                     |         goto label_47;
                                                                 |     }
    0x00047858 mov r0, sb                                        |     r0 = sb;
    0x0004785a ldr.w sb, [r3, 0x10]                              |     sb = *((r3 + 0x10));
    0x0004785e add.w r3, r1, r1, lsl 1                           |     r3 = r1 + (r1 << 1);
    0x00047862 ldr.w r4, [pc, 0x6a4]                             |     
    0x00047866 lsls r1, r1, 5                                    |     r1 <<= 5;
    0x00047868 add.w r3, sb, r3, lsl 2                           |     r3 = sb + (r3 << 2);
    0x0004786c add r4, pc                                        |     r4 = 0x8f77a;
    0x0004786e str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00047870 blx 0x18240                                       |     fcn_00018240 ();
    0x00047874 ldr.w r2, [pc, 0x694]                             |     r2 = *(0x00047f0c);
    0x00047878 add.w sl, r0, 0x20                                |     sl = r0 + 0x20;
    0x0004787c str r7, [sp, 0x38]                                |     var_38h = r7;
    0x0004787e mov r7, sl                                        |     r7 = sl;
    0x00047880 mov sl, r6                                        |     sl = r6;
    0x00047882 mov r6, r4                                        |     r6 = r4;
    0x00047884 ldr r4, [sp, 0x2c]                                |     r4 = var_2ch;
    0x00047886 add r2, pc                                        |     r2 += pc;
    0x00047888 strd r0, r8, [sp, 0x30]                           |     __asm ("strd r0, r8, [var_30h]");
    0x0004788c mov r8, sb                                        |     r8 = sb;
    0x0004788e mov sb, r5                                        |     sb = r5;
    0x00047890 mov r5, r2                                        |     r5 = r2;
                                                                 |     do {
    0x00047892 ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x00047896 add.w r8, r8, 0xc                                 |         r8 += 0xc;
    0x0004789a str r0, [r7, -0x20]                               |         *((r7 - 0x20)) = r0;
    0x0004789e blx 0x18048                                       |         fcn_00018048 ();
    0x000478a2 strd r0, r5, [r7, -0x1c]                          |         __asm ("strd r0, r5, [r7, -0x1c]");
    0x000478a6 movs r3, 2                                        |         r3 = 2;
    0x000478a8 ldr r0, [r8, -0x8]                                |         r0 = *((r8 - 0x8));
    0x000478ac str r3, [r7, -0x14]                               |         *((r7 - 0x14)) = r3;
    0x000478b0 str r0, [r7, -0x10]                               |         *((r7 - 0x10)) = r0;
    0x000478b4 blx 0x18048                                       |         fcn_00018048 ();
    0x000478b8 cmp r4, r8                                        |         
    0x000478ba mov.w r3, 2                                       |         r3 = 2;
    0x000478be mov r2, r7                                        |         r2 = r7;
    0x000478c0 strd r0, r6, [r7, -0xc]                           |         __asm ("strd r0, r6, [r7, -0xc]");
    0x000478c4 str r3, [r7, -0x4]                                |         *((r7 - 0x4)) = r3;
    0x000478c8 add.w r7, r7, 0x20                                |         r7 += 0x20;
    0x000478cc bhi 0x47892                                       |         
                                                                 |     } while (r4 > r8);
    0x000478ce ldr r7, [sp, 0x38]                                |     r7 = var_38h;
    0x000478d0 mov r6, sl                                        |     r6 = sl;
    0x000478d2 ldr.w r1, [pc, 0x63c]                             |     r1 = *(0x47f12);
    0x000478d6 mov r5, sb                                        |     r5 = sb;
    0x000478d8 ldr.w r0, [sb, 0x108]                             |     r0 = *((sb + 0x108));
    0x000478dc ldrd r3, r8, [sp, 0x30]                           |     __asm ("ldrd r3, r8, [var_30h]");
    0x000478e0 ldr r1, [r7, r1]                                  |     r1 = *((r7 + r1));
    0x000478e2 mov ip, r0                                        |     
    0x000478e4 ldr.w sl, [r1, 8]                                 |     sl = *(0x47f1a);
    0x000478e8 mov lr, r1                                        |     lr = r1;
    0x000478ea cmp.w sl, 0                                       |     
                                                                 |     if (sl < 0) {
    0x000478ee blt.w 0x47b52                                     |         goto label_48;
                                                                 |     }
    0x000478f2 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000478f4 beq.w 0x47e50                                     |         goto label_49;
                                                                 |     }
    0x000478f8 ldr r1, [r0]                                      |     r1 = *(r0);
    0x000478fa cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000478fc beq.w 0x47b58                                     |         goto label_21;
                                                                 |     }
                                                                 | label_27:
    0x00047900 ldrsb.w r1, [r1, sl]                              |     r1 = *((r1 + sl));
    0x00047904 cmp r1, 0                                         |     
                                                                 |     if (r1 < 0) {
    0x00047906 blt.w 0x47b58                                     |         goto label_21;
                                                                 |     }
                                                                 | label_31:
    0x0004790a cmp r1, 0xa                                       |     
    0x0004790c ite le                                            |     
                                                                 |     if (r1 > 0xa) {
    0x0004790e movle r1, 0                                       |         r1 = 0;
                                                                 |     }
                                                                 |     if (r1 <= 0xa) {
    0x00047910 movgt r1, 1                                       |         r1 = 1;
                                                                 |     }
                                                                 | label_6:
    0x00047912 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00047914 beq.w 0x47b70                                     |         goto label_50;
                                                                 |     }
    0x00047918 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x0004791a ldr r4, [sp, 0x2c]                                |     r4 = var_2ch;
    0x0004791c strd r8, r7, [sp, 0x38]                           |     __asm ("strd r8, r7, [var_38h]");
    0x00047920 mov r7, sl                                        |     r7 = sl;
    0x00047922 ldr r1, [r1, 0x10]                                |     r1 = *((r1 + 0x10));
    0x00047924 mov sl, r2                                        |     sl = r2;
    0x00047926 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00047928 add.w sb, r1, 0xc                                 |     sb = r1 + 0xc;
    0x0004792c ldr.w r1, [pc, 0x5e4]                             |     
    0x00047930 add r1, pc                                        |     r1 = 0x8f848;
    0x00047932 str r1, [sp, 0x24]                                |     var_24h = r1;
    0x00047934 ldr.w r1, [pc, 0x5e0]                             |     
    0x00047938 add r1, pc                                        |     r1 = 0x8f854;
    0x0004793a strd r1, r6, [sp, 0x30]                           |     __asm ("strd r1, r6, [var_30h]");
    0x0004793e mov r6, lr                                        |     r6 = lr;
    0x00047940 b 0x47966                                         |     
                                                                 |     while (r7 >= 0) {
    0x00047942 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00047944 beq.w 0x47c4a                                     |             goto label_51;
                                                                 |         }
                                                                 | label_10:
    0x00047948 ldr r1, [r3]                                      |         r1 = *(r3);
                                                                 |         if (r1 == 0) {
    0x0004794a cbz r1, 0x47972                                   |             goto label_12;
                                                                 |         }
    0x0004794c ldrsb r1, [r1, r7]                                |         r1 = *((r1 + r7));
    0x0004794e cmp r1, 0                                         |         
                                                                 |         if (r1 < 0) {
    0x00047950 blt 0x47972                                       |             goto label_12;
                                                                 |         }
                                                                 | label_11:
    0x00047952 cmp r1, 0xa                                       |         
                                                                 |         if (r1 > 0xa) {
    0x00047954 bgt 0x47978                                       |             goto label_52;
                                                                 |         }
                                                                 | label_0:
    0x00047956 cmp r4, sb                                        |         
                                                                 |         if (r4 < sb) {
    0x00047958 bls.w 0x47b66                                     |             goto label_53;
                                                                 |         }
    0x0004795c ldr r7, [r6, 8]                                   |         r7 = *((r6 + 8));
    0x0004795e add.w sb, sb, 0xc                                 |         sb += 0xc;
    0x00047962 ldr.w r0, [r5, 0x108]                             |         r0 = *((r5 + 0x108));
    0x00047966 cmp r7, 0                                         |         
    0x00047968 mov r3, r0                                        |         r3 = r0;
    0x0004796a bge 0x47942                                       |         
                                                                 |     }
    0x0004796c cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0004796e beq.w 0x47d84                                     |         goto label_54;
                                                                 |     }
                                                                 | label_12:
    0x00047972 ldr r3, [r3, 4]                                   |     r3 = *((r3 + 4));
    0x00047974 cmp r3, 0xa                                       |     
                                                                 |     if (r3 <= 0xa) {
    0x00047976 ble 0x47956                                       |         goto label_0;
                                                                 |     }
                                                                 | label_52:
    0x00047978 ldr r1, [sb, -0xc]                                |     r1 = *((sb - 0xc));
    0x0004797c ldr r0, [r5]                                      |     r0 = *(r5);
    0x0004797e bl 0x1cc00                                        |     ap_escape_logitem ();
    0x00047982 ldr r1, [sb, -0x8]                                |     r1 = *((sb - 0x8));
    0x00047986 mov r8, r0                                        |     r8 = r0;
    0x00047988 ldr r0, [r5]                                      |     r0 = *(r5);
    0x0004798a bl 0x1cc00                                        |     ap_escape_logitem ();
    0x0004798e ldr r3, [sp, 0x30]                                |     r3 = var_30h;
    0x00047990 mov r2, r7                                        |     r2 = r7;
    0x00047992 strd r8, r0, [sp, 0xc]                            |     __asm ("strd r8, r0, [var_ch]");
    0x00047996 mov.w r1, 0x3d0                                   |     r1 = 0x3d0;
    0x0004799a ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x0004799c strd r5, r3, [sp, 4]                              |     __asm ("strd r5, r3, [var_4h]");
    0x000479a0 movs r3, 0                                        |     r3 = 0;
    0x000479a2 str r3, [sp]                                      |     *(sp) = r3;
    0x000479a4 movs r3, 0xb                                      |     r3 = 0xb;
    0x000479a6 bl 0x38a7c                                        |     ap_log_rerror_ ();
    0x000479aa b 0x47956                                         |     goto label_0;
                                                                 | label_32:
    0x000479ac ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000479ae adds r6, r1, 4                                    |     r6 = r1 + 4;
    0x000479b0 str r3, [sp, 0x44]                                |     var_44h = r3;
    0x000479b2 ldr r3, [r0, 4]                                   |     r3 = *((r0 + 4));
    0x000479b4 str r3, [sp, 0x20]                                |     var_20h = r3;
    0x000479b6 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000479b8 beq.w 0x47c2c                                     |         goto label_55;
                                                                 |     }
                                                                 | label_9:
    0x000479bc ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x000479c0 cmp r3, r6                                        |     
    0x000479c2 str r3, [sp, 0x18]                                |     var_18h = r3;
                                                                 |     if (r3 != r6) {
    0x000479c4 bne.w 0x476fa                                     |         goto label_1;
                                                                 |     }
    0x000479c8 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x000479ca ldr r3, [r3]                                      |     r3 = *(r3);
    0x000479cc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000479ce beq 0x47a50                                       |         goto label_56;
                                                                 |     }
    0x000479d0 movs r3, 0                                        |     r3 = 0;
    0x000479d2 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x000479d4 b 0x47742                                         |     goto label_2;
                                                                 | label_36:
    0x000479d6 mov r0, r8                                        |     r0 = r8;
    0x000479d8 bl 0x204bc                                        |     ap_remove_output_filter ();
    0x000479dc ldr.w r2, [pc, 0x53c]                             |     
    0x000479e0 ldr.w r3, [pc, 0x4f4]                             |     r3 = *(0x47ed8);
    0x000479e4 add r2, pc                                        |     r2 = 0x8f904;
    0x000479e6 ldr r3, [r2, r3]                                  |     r3 = *(0x8f904);
    0x000479e8 ldr r2, [r3]                                      |     r2 = *(0x8f904);
    0x000479ea ldr r3, [sp, 0x54]                                |     r3 = var_54h;
    0x000479ec eors r2, r3                                       |     r2 ^= r3;
    0x000479ee mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x000479f2 bne.w 0x47ed0                                     |         goto label_57;
                                                                 |     }
    0x000479f6 ldr.w r0, [r8, 8]                                 |     r0 = *((r8 + 8));
    0x000479fa mov r1, fp                                        |     r1 = fp;
    0x000479fc add sp, 0x5c                                      |     
    0x000479fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |     
    0x00047a02 b.w 0x20594                                       |     void (*0x20594)() ();
                                                                 | label_34:
    0x00047a06 ldr.w r4, [fp, 8]                                 |     r4 = *(arg_8h);
    0x00047a0a cmp r4, r6                                        |     
                                                                 |     if (r4 != r6) {
    0x00047a0c beq 0x47a1c                                       |         
    0x00047a0e ldr.w r3, [pc, 0x510]                             |         r3 = *(0x47f22);
    0x00047a12 ldr r2, [r4, 8]                                   |         r2 = *((r4 + 8));
    0x00047a14 ldr r3, [r7, r3]                                  |         r3 = *((r7 + r3));
    0x00047a16 cmp r2, r3                                        |         
                                                                 |         if (r2 == r3) {
    0x00047a18 beq.w 0x47dc0                                     |             goto label_58;
                                                                 |         }
                                                                 |     }
    0x00047a1c mov r4, r0                                        |     r4 = r0;
                                                                 | label_20:
    0x00047a1e mov r0, fp                                        |     r0 = fp;
    0x00047a20 blx 0x1825c                                       |     fcn_0001825c ();
                                                                 |     do {
                                                                 | label_7:
    0x00047a24 ldr.w r2, [pc, 0x4fc]                             |         
    0x00047a28 ldr.w r3, [pc, 0x4ac]                             |         r3 = *(0x47ed8);
    0x00047a2c add r2, pc                                        |         r2 = 0x8f954;
    0x00047a2e ldr r3, [r2, r3]                                  |         r3 = *(0x8f954);
    0x00047a30 ldr r2, [r3]                                      |         r2 = *(0x8f954);
    0x00047a32 ldr r3, [sp, 0x54]                                |         r3 = var_54h;
    0x00047a34 eors r2, r3                                       |         r2 ^= r3;
    0x00047a36 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00047a3a bne.w 0x47ed0                                     |             goto label_57;
                                                                 |         }
    0x00047a3e mov r0, r4                                        |         r0 = r4;
    0x00047a40 add sp, 0x5c                                      |         
    0x00047a42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 | label_41:
    0x00047a46 add r1, sp, 0x44                                  |         r1 += var_44h;
    0x00047a48 mov r0, r5                                        |         r0 = r5;
    0x00047a4a bl 0x466a8                                        |         fcn_000466a8 (r0, r1);
    0x00047a4e b 0x477bc                                         |         goto label_3;
                                                                 | label_56:
    0x00047a50 mov sl, r3                                        |         sl = r3;
                                                                 | label_35:
    0x00047a52 ldr r3, [r5, 8]                                   |         r3 = *((r5 + 8));
    0x00047a54 add r6, sp, 0x48                                  |         r6 += filename;
    0x00047a56 ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x00047a5a mov r1, r6                                        |         r1 = r6;
    0x00047a5c ldr r3, [r3, 0x18]                                |         r3 = *((r3 + 0x18));
    0x00047a5e ldr r3, [r3]                                      |         r3 = *(r3);
    0x00047a60 str r5, [sp, 0x48]                                |         filename = r5;
    0x00047a62 ldrb.w r3, [r3, 0x41]                             |         r3 = *((r3 + 0x41));
    0x00047a66 subs r3, 1                                        |         r3--;
    0x00047a68 it ne                                             |         
                                                                 |         if (r3 == 1) {
    0x00047a6a movne r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x00047a6c str r3, [sp, 0x4c]                                |         var_4ch = r3;
    0x00047a6e bl 0x46400                                        |         r0 = fcn_00046400 (r0);
    0x00047a72 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x00047a74 bne.w 0x47e30                                     |             goto label_59;
                                                                 |         }
                                                                 | label_23:
    0x00047a78 ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x00047a7c ldr.w sl, [pc, 0x4a8]                             |         sl = *(0x00047f28);
    0x00047a80 blx 0x17edc                                       |         apr_sockaddr_info_get ();
    0x00047a84 ldr.w r0, [r5, 0xb8]                              |         r0 = *((r5 + 0xb8));
    0x00047a88 blx 0x17edc                                       |         apr_sockaddr_info_get ();
    0x00047a8c mov r0, fp                                        |         r0 = fp;
    0x00047a8e add sl, pc                                        |         sl += pc;
    0x00047a90 blx 0x1825c                                       |         fcn_0001825c ();
    0x00047a94 mov r0, r6                                        |         r0 = r6;
    0x00047a96 movs r6, 0                                        |         r6 = 0;
    0x00047a98 str r6, [sp, 0x48]                                |         filename = r6;
    0x00047a9a mov r1, sl                                        |         r1 = sl;
    0x00047a9c ldr r2, [r5]                                      |         r2 = *(r5);
    0x00047a9e blx 0x1814c                                       |         freopen (r0, r1, r2);
    0x00047aa2 ldr r2, [sp, 0x48]                                |         r2 = filename;
    0x00047aa4 cmp r2, 0                                         |         
                                                                 |         if (r2 == 0) {
    0x00047aa6 beq.w 0x47e8c                                     |             goto label_60;
                                                                 |         }
    0x00047aaa mov.w r3, 0x1f4                                   |         r3 = 0x1f4;
    0x00047aae ldr.w r0, [sb, 0x40]                              |         r0 = *((sb + 0x40));
    0x00047ab2 str r3, [r5, 0x44]                                |         *((r5 + 0x44)) = r3;
    0x00047ab4 bl 0x30350                                        |         ap_bucket_eoc_create ();
    0x00047ab8 ldr r4, [sp, 0x18]                                |         r4 = var_18h;
    0x00047aba str r4, [r0]                                      |         *(r0) = r4;
    0x00047abc ldr.w r3, [fp, 8]                                 |         r3 = *(arg_8h);
    0x00047ac0 str r3, [r0, 4]                                   |         *((r0 + 4)) = r3;
    0x00047ac2 ldr.w r3, [fp, 8]                                 |         r3 = *(arg_8h);
    0x00047ac6 str r0, [r3]                                      |         *(r3) = r0;
    0x00047ac8 str.w r0, [fp, 8]                                 |         __asm ("str.w r0, [arg_8h]");
    0x00047acc ldr.w r0, [sb, 0x40]                              |         r0 = *((sb + 0x40));
    0x00047ad0 blx 0x18410                                       |         r0 = apr_brigade_insert_file ();
    0x00047ad4 str r4, [r0]                                      |         *(r0) = r4;
    0x00047ad6 movs r2, 0                                        |         r2 = 0;
    0x00047ad8 ldr.w r3, [fp, 8]                                 |         r3 = *(arg_8h);
    0x00047adc vmov.i32 d16, 0                                   |         __asm ("vmov.i32 d16, 0");
    0x00047ae0 str r3, [r0, 4]                                   |         *((r0 + 4)) = r3;
    0x00047ae2 ldr.w r3, [fp, 8]                                 |         r3 = *(arg_8h);
    0x00047ae6 str r0, [r3]                                      |         *(r3) = r0;
    0x00047ae8 add.w r3, r5, 0xcc                                |         r3 = r5 + 0xcc;
    0x00047aec str.w r0, [fp, 8]                                 |         __asm ("str.w r0, [arg_8h]");
    0x00047af0 mov r0, r5                                        |         r0 = r5;
    0x00047af2 str.w r6, [r5, 0xc4]                              |         __asm ("str.w r6, [r5, 0xc4]");
    0x00047af6 vst1.32 {d16}, [r3]                               |         __asm ("vst1.32 {d16}, [r3]");
    0x00047afa movs r3, 1                                        |         r3 = 1;
    0x00047afc str r3, [sp, 0x28]                                |         var_28h = r3;
    0x00047afe movs r3, 0                                        |         r3 = 0;
    0x00047b00 bl 0x21eb0                                        |         ap_set_content_length ();
    0x00047b04 b 0x47742                                         |         goto label_2;
                                                                 | label_42:
    0x00047b06 ldr.w r1, [pc, 0x424]                             |         r1 = *(0x00047f2c);
    0x00047b0a ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x00047b0e add r1, pc                                        |         r1 += pc;
    0x00047b10 blx 0x17a14                                       |         apr_dynamic_fn_retrieve ();
    0x00047b14 ldr.w r1, [pc, 0x418]                             |         
    0x00047b18 ldr.w r0, [r5, 0xb4]                              |         r0 = *((r5 + 0xb4));
    0x00047b1c add r1, pc                                        |         r1 = 0x8fa50;
    0x00047b1e blx 0x17a14                                       |         apr_dynamic_fn_retrieve ();
    0x00047b22 vmov.i32 d17, 0                                   |         __asm ("vmov.i32 d17, 0");
    0x00047b26 add.w r3, r5, 0xcc                                |         r3 = r5 + 0xcc;
    0x00047b2a vmov.i32 d16, 0                                   |         __asm ("vmov.i32 d16, 0");
    0x00047b2e movs r1, 0                                        |         r1 = 0;
    0x00047b30 str.w r1, [r5, 0xc4]                              |         __asm ("str.w r1, [r5, 0xc4]");
    0x00047b34 vst1.32 {d17}, [r3]                               |         __asm ("vst1.32 {d17}, [r3]");
    0x00047b38 str.w r1, [r5, 0x88]                              |         __asm ("str.w r1, [r5, 0x88]");
    0x00047b3c vstr d16, [r5, 0x80]                              |         __asm ("vstr d16, [r5, 0x80]");
    0x00047b40 b 0x477de                                         |         goto label_4;
                                                                 | label_39:
    0x00047b42 ldrd r2, r1, [r5, 0xb4]                           |         __asm ("ldrd r2, r1, [r5, 0xb4]");
    0x00047b46 ldr r0, [r5]                                      |         r0 = *(r5);
    0x00047b48 blx 0x18140                                       |         strcpy (r0, r1)
    0x00047b4c str.w r0, [r5, 0xb4]                              |         __asm ("str.w r0, [r5, 0xb4]");
    0x00047b50 b 0x47758                                         |         goto label_5;
                                                                 | label_48:
    0x00047b52 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00047b54 beq.w 0x47df8                                     |             goto label_61;
                                                                 |         }
                                                                 | label_21:
    0x00047b58 ldr.w r1, [ip, 4]                                 |         r1 = *((ip + 4));
    0x00047b5c cmp r1, 0xa                                       |         
    0x00047b5e ite le                                            |         
                                                                 |         if (r1 > 0xa) {
    0x00047b60 movle r1, 0                                       |             r1 = 0;
                                                                 |         }
                                                                 |         if (r1 <= 0xa) {
    0x00047b62 movgt r1, 1                                       |             r1 = 1;
                                                                 |         }
    0x00047b64 b 0x47912                                         |         goto label_6;
                                                                 | label_53:
    0x00047b66 ldr r6, [sp, 0x34]                                |         r6 = var_34h;
    0x00047b68 mov r2, sl                                        |         r2 = sl;
    0x00047b6a ldr r3, [sp, 0x2c]                                |         r3 = var_2ch;
    0x00047b6c ldrd r8, r7, [sp, 0x38]                           |         __asm ("ldrd r8, r7, [var_38h]");
                                                                 | label_50:
    0x00047b70 subs r0, r2, r3                                   |         r0 = r2 - r3;
    0x00047b72 movs r2, 0                                        |         r2 = 0;
    0x00047b74 asrs r0, r0, 3                                    |         r0 >>= 3;
    0x00047b76 mov r1, r2                                        |         r1 = r2;
    0x00047b78 str r0, [sp]                                      |         *(sp) = r0;
    0x00047b7a mov r0, r6                                        |         r0 = r6;
    0x00047b7c blx 0x18158                                       |         apr_filepath_root ();
                                                                 | label_47:
    0x00047b80 ldr r3, [pc, 0x3b0]                               |         
    0x00047b82 movs r2, 0                                        |         r2 = 0;
    0x00047b84 mov r1, r2                                        |         r1 = r2;
    0x00047b86 mov r0, r6                                        |         r0 = r6;
    0x00047b88 add r3, pc                                        |         
    0x00047b8a ldr r3, [r3]                                      |         r3 = *(0x8fac0);
    0x00047b8c strh.w r3, [sp, 0x50]                             |         var_50h = r3;
    0x00047b90 lsrs r3, r3, 0x10                                 |         r3 >>= 0x10;
    0x00047b92 strb.w r3, [sp, 0x52]                             |         var_52h = r3;
    0x00047b96 movs r3, 2                                        |         r3 = 2;
    0x00047b98 str r3, [sp]                                      |         *(sp) = r3;
    0x00047b9a add r3, sp, 0x50                                  |         r3 += var_50h;
    0x00047b9c blx 0x179e4                                       |         memcmp (r0, r1, r2);
    0x00047ba0 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
                                                                 |         if (r3 == 0) {
    0x00047ba2 cbz r3, 0x47be6                                   |             goto label_62;
                                                                 |         }
    0x00047ba4 ldr.w r3, [fp, 8]                                 |         r3 = *(arg_8h);
    0x00047ba8 ldr r2, [sp, 0x18]                                |         r2 = var_18h;
    0x00047baa cmp r3, r2                                        |         
                                                                 |         if (r3 != r2) {
    0x00047bac beq 0x47bba                                       |             
    0x00047bae ldr r2, [pc, 0x370]                               |             r2 = *(0x47f22);
    0x00047bb0 ldr r1, [r3, 8]                                   |             r1 = *((r3 + 8));
    0x00047bb2 ldr r2, [r7, r2]                                  |             r2 = *((r7 + r2));
    0x00047bb4 cmp r1, r2                                        |             
                                                                 |             if (r1 == r2) {
    0x00047bb6 beq.w 0x47e6a                                     |                 goto label_63;
                                                                 |             }
                                                                 |         }
                                                                 | label_28:
    0x00047bba mov r0, fp                                        |         r0 = fp;
    0x00047bbc blx 0x1825c                                       |         fcn_0001825c ();
    0x00047bc0 mov r1, r6                                        |         r1 = r6;
    0x00047bc2 ldr.w r0, [r8, 8]                                 |         r0 = *((r8 + 8));
    0x00047bc6 bl 0x20594                                        |         r0 = ap_pass_brigade ();
    0x00047bca mov r4, r0                                        |         r4 = r0;
    0x00047bcc mov r0, r6                                        |         r0 = r6;
    0x00047bce blx 0x1825c                                       |         fcn_0001825c ();
    0x00047bd2 ldr r2, [sp, 0x20]                                |         r2 = var_20h;
    0x00047bd4 movs r3, 1                                        |         r3 = 1;
    0x00047bd6 str r3, [r2]                                      |         *(r2) = r3;
                                                                 | label_8:
    0x00047bd8 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x00047bda cmp r3, 0                                         |         
    0x00047bdc beq.w 0x47a24                                     |         
                                                                 |     } while (r3 == 0);
                                                                 | label_29:
    0x00047be0 mvn r4, 0x65                                      |     r4 = ~0x65;
    0x00047be4 b 0x47a24                                         |     goto label_7;
                                                                 | label_62:
    0x00047be6 mov r1, r6                                        |     r1 = r6;
    0x00047be8 ldr.w r0, [r8, 8]                                 |     r0 = *((r8 + 8));
    0x00047bec bl 0x20594                                        |     r0 = ap_pass_brigade ();
    0x00047bf0 mov r4, r0                                        |     r4 = r0;
    0x00047bf2 mov r0, r6                                        |     r0 = r6;
    0x00047bf4 blx 0x1825c                                       |     fcn_0001825c ();
    0x00047bf8 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x00047bfa movs r3, 1                                        |     r3 = 1;
    0x00047bfc str r3, [r2]                                      |     *(r2) = r3;
    0x00047bfe cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x00047c00 bne 0x47bd8                                       |         goto label_8;
                                                                 |     }
    0x00047c02 ldr.w r3, [r5, 0x88]                              |     r3 = *((r5 + 0x88));
    0x00047c06 movs r0, 1                                        |     r0 = 1;
    0x00047c08 movs r1, 0                                        |     r1 = 0;
    0x00047c0a strd r0, r1, [r5, 0x60]                           |     __asm ("strd r0, r1, [r5, 0x60]");
    0x00047c0e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047c10 bne.w 0x47db0                                     |         goto label_64;
                                                                 |     }
                                                                 |     do {
                                                                 | label_19:
    0x00047c14 mov r0, r8                                        |         r0 = r8;
    0x00047c16 bl 0x204bc                                        |         ap_remove_output_filter ();
    0x00047c1a ldr.w r0, [r8, 8]                                 |         r0 = *((r8 + 8));
    0x00047c1e mov r1, fp                                        |         r1 = fp;
    0x00047c20 bl 0x20594                                        |         r0 = ap_pass_brigade ();
    0x00047c24 mov r4, r0                                        |         r4 = r0;
    0x00047c26 b 0x47bd8                                         |         goto label_8;
                                                                 | label_33:
    0x00047c28 movs r3, 1                                        |         r3 = 1;
    0x00047c2a str r3, [sp, 0x1c]                                |         var_1ch = r3;
                                                                 | label_55:
    0x00047c2c ldr r0, [r5]                                      |         r0 = *(r5);
    0x00047c2e movs r1, 4                                        |         r1 = 4;
    0x00047c30 blx 0x18240                                       |         fcn_00018240 ();
    0x00047c34 movs r3, 0                                        |         r3 = 0;
    0x00047c36 str r0, [sp, 0x20]                                |         var_20h = r0;
    0x00047c38 str r3, [r0]                                      |         *(r0) = r3;
    0x00047c3a str.w r0, [r8, 4]                                 |         __asm ("str.w r0, [r8, 4]");
    0x00047c3e b 0x479bc                                         |         goto label_9;
                                                                 | label_38:
    0x00047c40 movs r2, 1                                        |         r2 = 1;
    0x00047c42 movs r3, 0                                        |         r3 = 0;
    0x00047c44 strd r2, r3, [r5, 0x60]                           |         __asm ("strd r2, r3, [r5, 0x60]");
    0x00047c48 b 0x47c14                                         |         
                                                                 |     } while (1);
                                                                 | label_51:
    0x00047c4a ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00047c4c ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x00047c4e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047c50 bne.w 0x47948                                     |         goto label_10;
                                                                 |     }
    0x00047c54 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00047c56 ldr r1, [r3, 0x10]                                |     r1 = *((r3 + 0x10));
                                                                 |     if (r1 == 0) {
    0x00047c58 cbz r1, 0x47c62                                   |         goto label_17;
                                                                 |     }
    0x00047c5a ldrsb r1, [r1, r7]                                |     r1 = *((r1 + r7));
    0x00047c5c cmp r1, 0                                         |     
                                                                 |     if (r1 >= 0) {
    0x00047c5e bge.w 0x47952                                     |         goto label_11;
                                                                 |     }
                                                                 | label_17:
    0x00047c62 adds r3, 0x10                                     |     r3 += 0x10;
    0x00047c64 b 0x47972                                         |     goto label_12;
                                                                 | label_46:
    0x00047c66 ldr r6, [pc, 0x2d0]                               |     
    0x00047c68 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047c6c add r6, pc                                        |     r6 = 0x8fbaa;
    0x00047c6e mov r1, r6                                        |     r1 = r6;
    0x00047c70 blx 0x185a8                                       |     r0 = apr_hash_make ();
    0x00047c74 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00047c76 beq.w 0x4782a                                     |         goto label_13;
                                                                 |     }
    0x00047c7a ldrb r3, [r0]                                     |     r3 = *(r0);
    0x00047c7c cmp r3, 0x30                                      |     
                                                                 |     if (r3 != 0x30) {
    0x00047c7e bne.w 0x4782a                                     |         goto label_13;
                                                                 |     }
    0x00047c82 ldrb r3, [r0, 1]                                  |     r3 = *((r0 + 1));
    0x00047c84 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047c86 bne.w 0x4782a                                     |         goto label_13;
                                                                 |     }
    0x00047c8a ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047c8e mov r1, r6                                        |     r1 = r6;
    0x00047c90 blx 0x17a14                                       |     apr_dynamic_fn_retrieve ();
    0x00047c94 b 0x4782a                                         |     goto label_13;
                                                                 | label_45:
    0x00047c96 ldr r6, [pc, 0x2a4]                               |     
    0x00047c98 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047c9c add r6, pc                                        |     r6 = 0x8fbde;
    0x00047c9e mov r1, r6                                        |     r1 = r6;
    0x00047ca0 blx 0x185a8                                       |     r0 = apr_hash_make ();
    0x00047ca4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00047ca6 bne.w 0x47822                                     |         goto label_14;
                                                                 |     }
    0x00047caa movs r1, 0x1e                                     |     r1 = 0x1e;
    0x00047cac ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047cae blx 0x18240                                       |     fcn_00018240 ();
    0x00047cb2 ldrd r2, r3, [r5, 0x38]                           |     __asm ("ldrd r2, r3, [r5, 0x38]");
    0x00047cb6 mov sl, r0                                        |     sl = r0;
    0x00047cb8 bl 0x3b010                                        |     ap_recent_rfc822_date ();
    0x00047cbc ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047cc0 mov r2, sl                                        |     r2 = sl;
    0x00047cc2 mov r1, r6                                        |     r1 = r6;
    0x00047cc4 blx 0x18914                                       |     fcn_00018914 ();
    0x00047cc8 b 0x47822                                         |     goto label_14;
                                                                 | label_44:
    0x00047cca ldr r1, [pc, 0x274]                               |     
    0x00047ccc ldr.w r3, [r5, 0xd0]                              |     r3 = *((r5 + 0xd0));
    0x00047cd0 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047cd4 add r1, pc                                        |     r1 = 0x8fc1a;
    0x00047cd6 ldr.w sl, [r3, 0x10]                              |     sl = *((r3 + 0x10));
    0x00047cda blx 0x185a8                                       |     r0 = apr_hash_make ();
    0x00047cde mov r3, r0                                        |     r3 = r0;
    0x00047ce0 add r2, sp, 0x48                                  |     r2 += filename;
    0x00047ce2 str r0, [sp, 0x48]                                |     filename = r0;
    0x00047ce4 str r2, [sp, 0x24]                                |     var_24h = r2;
    0x00047ce6 str r7, [sp, 0x2c]                                |     var_2ch = r7;
                                                                 | label_15:
    0x00047ce8 ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047cea cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00047cec beq.w 0x47e12                                     |         goto label_65;
                                                                 |     }
    0x00047cf0 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00047cf2 bl 0x1c12c                                        |     r0 = ap_get_list_item ();
    0x00047cf6 mov r7, r0                                        |     r7 = r0;
    0x00047cf8 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00047cfa beq.w 0x47e42                                     |         goto label_66;
                                                                 |     }
    0x00047cfe ldr.w r0, [r5, 0xd0]                              |     r0 = *((r5 + 0xd0));
    0x00047d02 ldr r3, [r0, 8]                                   |     r3 = *((r0 + 8));
    0x00047d04 cmp r3, 0                                         |     
    0x00047d06 it le                                             |     
                                                                 |     if (r3 > 0) {
    0x00047d08 movle r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 0) {
    0x00047d0a ble 0x47d34                                       |         goto label_67;
                                                                 |     }
    0x00047d0c sub.w r6, sl, 4                                   |     r6 = sl - 4;
    0x00047d10 movs r4, 0                                        |     r4 = 0;
    0x00047d12 b 0x47d20                                         |     
                                                                 |     while (r0 != 0) {
    0x00047d14 ldr.w r0, [r5, 0xd0]                              |         r0 = *((r5 + 0xd0));
    0x00047d18 adds r4, 1                                        |         r4++;
    0x00047d1a ldr r3, [r0, 8]                                   |         r3 = *((r0 + 8));
    0x00047d1c cmp r3, r4                                        |         
                                                                 |         if (r3 <= r4) {
    0x00047d1e ble 0x47d34                                       |             goto label_67;
                                                                 |         }
    0x00047d20 ldr r1, [r6, 4]!                                  |         r1 = *((r6 += 4));
    0x00047d24 mov r0, r7                                        |         r0 = r7;
    0x00047d26 bl 0x1e764                                        |         r0 = ap_cstr_casecmp ();
    0x00047d2a cmp r0, 0                                         |         
    0x00047d2c bne 0x47d14                                       |         
                                                                 |     }
    0x00047d2e ldr.w r0, [r5, 0xd0]                              |     r0 = *((r5 + 0xd0));
    0x00047d32 ldr r3, [r0, 8]                                   |     r3 = *((r0 + 8));
                                                                 | label_67:
    0x00047d34 cmp r4, r3                                        |     
                                                                 |     if (r4 == r3) {
    0x00047d36 beq.w 0x47e48                                     |         goto label_68;
                                                                 |     }
                                                                 | label_26:
    0x00047d3a ldr r3, [sp, 0x48]                                |     r3 = filename;
    0x00047d3c b 0x47ce8                                         |     goto label_15;
                                                                 | label_40:
    0x00047d3e movs r2, 4                                        |     r2 = 4;
    0x00047d40 movs r1, 5                                        |     r1 = 5;
    0x00047d42 ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047d44 blx 0x188a4                                       |     fcn_000188a4 ();
    0x00047d48 ldr.w r2, [r5, 0xb4]                              |     r2 = *((r5 + 0xb4));
    0x00047d4c mov sl, r0                                        |     sl = r0;
    0x00047d4e str r6, [sp]                                      |     *(sp) = r6;
    0x00047d50 mov r1, sl                                        |     r1 = sl;
    0x00047d52 ldr r6, [pc, 0x1f0]                               |     
    0x00047d54 ldr r0, [pc, 0x1f0]                               |     
    0x00047d56 add r6, pc                                        |     r6 = 0x8fca0;
    0x00047d58 mov r3, r6                                        |     r3 = r6;
    0x00047d5a add r0, pc                                        |     r0 = 0x8fca6;
    0x00047d5c blx 0x17ddc                                       |     fcn_00017ddc ();
    0x00047d60 ldr.w r3, [sl, 8]                                 |     r3 = *((sl + 8));
    0x00047d64 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00047d66 ble.w 0x47796                                     |         goto label_16;
                                                                 |     }
    0x00047d6a mov r1, sl                                        |     r1 = sl;
    0x00047d6c ldr.w sl, [r5, 0xb4]                              |     sl = *((r5 + 0xb4));
    0x00047d70 ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047d72 movs r2, 0x2c                                     |     r2 = 0x2c;
    0x00047d74 blx 0x1846c                                       |     fcn_0001846c ();
    0x00047d78 mov r1, r6                                        |     r1 = r6;
    0x00047d7a mov r2, r0                                        |     r2 = r0;
    0x00047d7c mov r0, sl                                        |     r0 = sl;
    0x00047d7e blx 0x18340                                       |     fcn_00018340 ();
    0x00047d82 b 0x47796                                         |     goto label_16;
                                                                 | label_54:
    0x00047d84 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00047d86 ldr r3, [r3, 0x60]                                |     r3 = *((r3 + 0x60));
    0x00047d88 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00047d8a bne.w 0x47972                                     |         goto label_12;
                                                                 |     }
    0x00047d8e ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00047d90 b 0x47c62                                         |     goto label_17;
                                                                 | label_43:
    0x00047d92 ldr r2, [pc, 0x1b8]                               |     
    0x00047d94 ldr r1, [pc, 0x1b8]                               |     
    0x00047d96 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047d9a add r2, pc                                        |     r2 = 0x8fcec;
    0x00047d9c add r1, pc                                        |     r1 = 0x8fcf0;
    0x00047d9e blx 0x18690                                       |     fcn_00018690 ();
    0x00047da2 ldr r1, [pc, 0x1b0]                               |     
    0x00047da4 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047da8 add r1, pc                                        |     r1 = 0x8fd02;
    0x00047daa blx 0x17a14                                       |     apr_dynamic_fn_retrieve ();
    0x00047dae b 0x477da                                         |     goto label_18;
                                                                 | label_64:
    0x00047db0 ldr r0, [pc, 0x1a4]                               |     
    0x00047db2 mov r2, r5                                        |     r2 = r5;
    0x00047db4 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x00047db6 ldr r3, [r5, 4]                                   |     r3 = *((r5 + 4));
    0x00047db8 add r0, pc                                        |     r0 = 0x8fd14;
    0x00047dba bl 0x2044c                                        |     ap_add_output_filter ();
    0x00047dbe b 0x47c14                                         |     goto label_19;
                                                                 | label_58:
    0x00047dc0 ldr r3, [r4, 4]                                   |     r3 = *((r4 + 4));
    0x00047dc2 mov r0, fp                                        |     r0 = fp;
    0x00047dc4 ldr r2, [r4]                                      |     r2 = *(r4);
    0x00047dc6 str r2, [r3]                                      |     *(r3) = r2;
    0x00047dc8 ldr r3, [r4]                                      |     r3 = *(r4);
    0x00047dca ldr r2, [r4, 4]                                   |     r2 = *((r4 + 4));
    0x00047dcc str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x00047dce blx 0x1825c                                       |     fcn_0001825c ();
    0x00047dd2 str r6, [r4, 4]                                   |     *((r4 + 4)) = r6;
    0x00047dd4 mov r0, r8                                        |     r0 = r8;
    0x00047dd6 ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00047dda str r3, [r4]                                      |     *(r4) = r3;
    0x00047ddc ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00047de0 str r4, [r3, 4]                                   |     *((r3 + 4)) = r4;
    0x00047de2 str.w r4, [fp, 4]                                 |     __asm ("str.w r4, [arg_4h]");
    0x00047de6 bl 0x204bc                                        |     ap_remove_output_filter ();
    0x00047dea ldr.w r0, [r8, 8]                                 |     r0 = *((r8 + 8));
    0x00047dee mov r1, fp                                        |     r1 = fp;
    0x00047df0 bl 0x20594                                        |     r0 = ap_pass_brigade ();
    0x00047df4 mov r4, r0                                        |     r4 = r0;
    0x00047df6 b 0x47a1e                                         |     goto label_20;
                                                                 | label_61:
    0x00047df8 ldr.w r1, [sb, 4]                                 |     r1 = *((sb + 4));
    0x00047dfc ldr.w ip, [r1, 0x60]                              |     ip = *((r1 + 0x60));
    0x00047e00 cmp.w ip, 0                                       |     
                                                                 |     if (ip != 0) {
    0x00047e04 bne.w 0x47b58                                     |         goto label_21;
                                                                 |     }
    0x00047e08 ldr.w ip, [sb, 8]                                 |     ip = *((sb + 8));
                                                                 | label_30:
    0x00047e0c add.w ip, ip, 0x10                                |     
    0x00047e10 b 0x47b58                                         |     goto label_21;
                                                                 | label_65:
    0x00047e12 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
                                                                 | label_25:
    0x00047e14 ldr.w r1, [r5, 0xd0]                              |     r1 = *((r5 + 0xd0));
    0x00047e18 movs r2, 0x2c                                     |     r2 = 0x2c;
    0x00047e1a blx 0x1846c                                       |     fcn_0001846c ();
    0x00047e1e ldr r1, [pc, 0x13c]                               |     
    0x00047e20 mov r2, r0                                        |     r2 = r0;
    0x00047e22 str r0, [sp, 0x48]                                |     filename = r0;
    0x00047e24 ldr.w r0, [r5, 0xb4]                              |     r0 = *((r5 + 0xb4));
    0x00047e28 add r1, pc                                        |     r1 = 0x8fd8a;
    0x00047e2a blx 0x18340                                       |     fcn_00018340 ();
    0x00047e2e b 0x47818                                         |     goto label_22;
                                                                 | label_59:
    0x00047e30 ldr.w r0, [r5, 0xb8]                              |     r0 = *((r5 + 0xb8));
    0x00047e34 mov r1, r6                                        |     r1 = r6;
    0x00047e36 bl 0x46400                                        |     r0 = fcn_00046400 (r0);
    0x00047e3a cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00047e3c beq.w 0x47a78                                     |         goto label_23;
                                                                 |     }
    0x00047e40 b 0x47736                                         |     goto label_24;
                                                                 | label_66:
    0x00047e42 ldr r7, [sp, 0x2c]                                |     r7 = var_2ch;
    0x00047e44 ldr r0, [r5]                                      |     r0 = *(r5);
    0x00047e46 b 0x47e14                                         |     goto label_25;
                                                                 | label_68:
    0x00047e48 blx 0x17c58                                       |     r0 = fcn_00017c58 ();
    0x00047e4c str r7, [r0]                                      |     *(r0) = r7;
    0x00047e4e b 0x47d3a                                         |     goto label_26;
                                                                 | label_49:
    0x00047e50 ldr.w r1, [sb, 4]                                 |     r1 = *((sb + 4));
    0x00047e54 ldr.w ip, [r1, 0x60]                              |     ip = *((r1 + 0x60));
    0x00047e58 cmp.w ip, 0                                       |     
                                                                 |     if (ip == 0) {
    0x00047e5c beq 0x47ea4                                       |         goto label_69;
                                                                 |     }
    0x00047e5e ldr.w r1, [ip]                                    |     r1 = *(ip);
    0x00047e62 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00047e64 bne.w 0x47900                                     |         goto label_27;
                                                                 |     }
    0x00047e68 b 0x47b58                                         |     goto label_21;
                                                                 | label_63:
    0x00047e6a ldr r2, [r3, 4]                                   |     r2 = *((r3 + 4));
    0x00047e6c mov r0, r8                                        |     r0 = r8;
    0x00047e6e ldr r1, [r3]                                      |     r1 = *(r3);
    0x00047e70 str r1, [r2]                                      |     *(r2) = r1;
    0x00047e72 ldr r2, [r3]                                      |     r2 = *(r3);
    0x00047e74 ldr r1, [r3, 4]                                   |     r1 = *((r3 + 4));
    0x00047e76 str r1, [r2, 4]                                   |     *((r2 + 4)) = r1;
    0x00047e78 adds r2, r6, 4                                    |     r2 = r6 + 4;
    0x00047e7a str r2, [r3]                                      |     *(r3) = r2;
    0x00047e7c ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00047e7e str r2, [r3, 4]                                   |     *((r3 + 4)) = r2;
    0x00047e80 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00047e82 str r3, [r2]                                      |     *(r2) = r3;
    0x00047e84 str r3, [r6, 8]                                   |     *((r6 + 8)) = r3;
    0x00047e86 bl 0x204bc                                        |     ap_remove_output_filter ();
    0x00047e8a b 0x47bba                                         |     goto label_28;
                                                                 | label_60:
    0x00047e8c ldr r0, [pc, 0xd0]                                |     
    0x00047e8e mov r1, sl                                        |     r1 = sl;
    0x00047e90 ldr r3, [r5]                                      |     r3 = *(r5);
    0x00047e92 add r0, pc                                        |     r0 = 0x8fdf6;
    0x00047e94 blx 0x18908                                       |     fcn_00018908 ();
    0x00047e98 mov r1, r5                                        |     r1 = r5;
    0x00047e9a mov.w r0, 0x1f4                                   |     r0 = 0x1f4;
    0x00047e9e bl 0x455d0                                        |     ap_die ();
    0x00047ea2 b 0x47be0                                         |     goto label_29;
                                                                 | label_69:
    0x00047ea4 ldr.w ip, [sb, 8]                                 |     ip = *((sb + 8));
    0x00047ea8 ldr.w r1, [ip, 0x10]                              |     r1 = *((ip + 0x10));
    0x00047eac cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00047eae beq 0x47e0c                                       |         goto label_30;
                                                                 |     }
    0x00047eb0 ldrsb.w r1, [r1, sl]                              |     r1 = *((r1 + sl));
    0x00047eb4 cmp r1, 0                                         |     
                                                                 |     if (r1 >= 0) {
    0x00047eb6 bge.w 0x4790a                                     |         goto label_31;
                                                                 |     }
    0x00047eba b 0x47e0c                                         |     goto label_30;
                                                                 | label_37:
    0x00047ebc ldr.w r4, [sl, 4]                                 |     r4 = *((sl + 4));
    0x00047ec0 mov r0, fp                                        |     r0 = fp;
    0x00047ec2 blx 0x1825c                                       |     fcn_0001825c ();
    0x00047ec6 mov r1, r5                                        |     r1 = r5;
    0x00047ec8 mov r0, r4                                        |     r0 = r4;
    0x00047eca bl 0x455d0                                        |     ap_die ();
    0x00047ece b 0x47be0                                         |     goto label_29;
                                                                 | label_57:
    0x00047ed0 blx 0x1845c                                       |     fcn_0001845c ();
    0x00047ed4 strb r2, [r4, 0xa]                                |     *((r4 + 0xa)) = r2;
    0x00047ed6 movs r1, r0                                       |     r1 = r0;
    0x00047ed8 lsls r0, r5, 0x18                                 |     r0 = r5 << 0x18;
    0x00047eda movs r0, r0                                       |     
    0x00047edc strb r6, [r0, 0xa]                                |     *((r0 + 0xa)) = r6;
    0x00047ede movs r1, r0                                       |     r1 = r0;
    0x00047ee0 lsls r4, r2, 0x19                                 |     r4 = r2 << 0x19;
    0x00047ee2 movs r0, r0                                       |     
    0x00047ee4 lsls r0, r0, 0x19                                 |     r0 <<= 0x19;
    0x00047ee6 movs r0, r0                                       |     
    0x00047ee8 movs r6, 0x3c                                     |     r6 = 0x3c;
    0x00047eea movs r1, r0                                       |     r1 = r0;
                                                                 |     if (r6 == 0) {
    0x00047eec cbnz r6, 0x47f20                                  |         
    0x00047eee movs r0, r0                                       |         
    0x00047ef0 asrs r4, r6, 0x10                                 |         r4 = r6 >> 0x10;
    0x00047ef2 movs r1, r0                                       |         r1 = r0;
    0x00047ef4 movs r4, 0x10                                     |         r4 = 0x10;
    0x00047ef6 movs r1, r0                                       |         r1 = r0;
    0x00047ef8 movs r6, 0xe                                      |         r6 = 0xe;
    0x00047efa movs r1, r0                                       |         r1 = r0;
    0x00047efc str r6, [sp, 0xc8]                                |         *(arg_c8h) = r6;
    0x00047efe movs r0, r0                                       |         
    0x00047f00 str r4, [r2, r4]                                  |         *((r2 + r4)) = r4;
    0x00047f02 movs r0, r0                                       |         
    0x00047f04 str r0, [r7, 0x3c]                                |         *((r7 + 0x3c)) = r0;
    0x00047f06 movs r0, r0                                       |         
    0x00047f08 cmp r0, 0x54                                      |         
    0x00047f0a movs r1, r0                                       |         r1 = r0;
    0x00047f0c ldr r6, [r7, r1]                                  |         r6 = *((r7 + r1));
    0x00047f0e movs r0, r0                                       |         
    0x00047f10 lsls r0, r3, 0x18                                 |         r0 = r3 << 0x18;
    0x00047f12 movs r0, r0                                       |         
    0x00047f14 movs r0, 0xf8                                     |         r0 = 0xf8;
    0x00047f16 movs r1, r0                                       |         r1 = r0;
    0x00047f18 movs r0, 0x8c                                     |         r0 = 0x8c;
    0x00047f1a movs r1, r0                                       |         r1 = r0;
    0x00047f1c ldr r4, [r2, 0x74]                                |         r4 = *((r2 + 0x74));
    0x00047f1e movs r1, r0                                       |         r1 = r0;
                                                                 |     }
    0x00047f20 lsls r0, r4, 0x19                                 |     r0 = r4 << 0x19;
    0x00047f22 movs r0, r0                                       |     
    0x00047f24 ldr r4, [r1, 0x70]                                |     r4 = *((r1 + 0x70));
    0x00047f26 movs r1, r0                                       |     r1 = r0;
    0x00047f28 movs r2, 0xf6                                     |     r2 = 0xf6;
    0x00047f2a movs r1, r0                                       |     r1 = r0;
    0x00047f2c ldr r5, [pc, 0x348]                               |     r5 = *(0x48278);
    0x00047f2e movs r0, r0                                       |     
    0x00047f30 ldr r5, [pc, 0x360]                               |     r5 = *(0x48294);
    0x00047f32 movs r0, r0                                       |     
    0x00047f34 movs r5, 0x38                                     |     r5 = 0x38;
    0x00047f36 movs r1, r0                                       |     r1 = r0;
    0x00047f38 ldr r4, [pc, 0x220]                               |     r4 = *(0x4815c);
    0x00047f3a movs r0, r0                                       |     
    0x00047f3c ldrsh r0, [r7, r6]                                |     r0 = *((r7 + r6));
    0x00047f3e movs r0, r0                                       |     
    0x00047f40 ldrsh r4, [r7, r4]                                |     r4 = *((r7 + r4));
    0x00047f42 movs r0, r0                                       |     
                                                                 |     if (r6 == 0) {
    0x00047f44 cbz r6, 0x47fc0                                   |         void (*0x47fc0)() ();
                                                                 |     }
    0x00047f46 movs r0, r0                                       |     
    0x00047f48 invalid                                           |     
                                                                 | }
    ; assembly                                       | /* r2dec pseudo code output */
                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x45164 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.ap_internal_fast_redirect ()         | void ap_internal_fast_redirect (int16_t arg1, int16_t arg2) {
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
    0x00045164 ldr.w r2, [r1, 0x124]                 |     r2 = *((r1 + 0x124));
    0x00045168 push.w {r4, r5, r6, r7, r8, lr}       |     
    0x0004516c mov r4, r1                            |     r4 = r1;
    0x0004516e ldr r3, [r0, 0x20]                    |     r3 = *((r0 + 0x20));
    0x00045170 mov r5, r0                            |     r5 = r0;
    0x00045172 ldr r6, [pc, 0x16c]                   |     
    0x00045174 str r3, [r1, 0x20]                    |     *((r1 + 0x20)) = r3;
    0x00045176 add r6, pc                            |     r6 = 0x8a45c;
                                                     |     if (r2 != 0) {
    0x00045178 cbz r2, 0x45184                       |         
    0x0004517a ldr.w r2, [r0, 0x124]                 |         r2 = *((r0 + 0x124));
    0x0004517e subs r2, 0                            |         
    0x00045180 it ne                                 |         
                                                     |         if (r2 != 0) {
    0x00045182 movne r2, 1                           |             r2 = 1;
                                                     |             goto label_1;
                                                     |         }
                                                     |     }
                                                     | label_1:
    0x00045184 ldr.w r3, [r4, 0x128]                 |     r3 = *((r4 + 0x128));
    0x00045188 str.w r2, [r4, 0x124]                 |     __asm ("str.w r2, aav.0x000000ff");
                                                     |     if (r3 != 0) {
    0x0004518c cbz r3, 0x45198                       |         
    0x0004518e ldr.w r3, [r5, 0x128]                 |         r3 = *((r5 + 0x128));
    0x00045192 subs r3, 0                            |         
    0x00045194 it ne                                 |         
                                                     |         if (r3 != 0) {
    0x00045196 movne r3, 1                           |             r3 = 1;
                                                     |             goto label_2;
                                                     |         }
                                                     |     }
                                                     | label_2:
    0x00045198 str.w r3, [r4, 0x128]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x0004519c add.w r1, r5, 0x160                   |     r1 = r5 + 0x160;
    0x000451a0 ldrd r2, r3, [r5, 0x70]               |     __asm ("ldrd r2, r3, [r5, 0x70]");
    0x000451a4 add.w r0, r4, 0x160                   |     r0 = r4 + 0x160;
    0x000451a8 strd r2, r3, [r4, 0x70]               |     __asm ("strd r2, r3, [r4, 0x70]");
    0x000451ac add.w r2, r5, 0xe4                    |     r2 = r5 + 0xe4;
    0x000451b0 add.w r3, r4, 0xe4                    |     r3 = r4 + 0xe4;
    0x000451b4 vld1.32 {d16, d17}, [r2]              |     __asm ("vld1.32 {d16, d17}, [r2]");
    0x000451b8 movs r2, 0x68                         |     r2 = 0x68;
    0x000451ba vst1.32 {d16, d17}, [r3]              |     __asm ("vst1.32 {d16, d17}, [r3]");
    0x000451be ldr.w r3, [r5, 0xf4]                  |     r3 = *((r5 + 0xf4));
    0x000451c2 str.w r3, [r4, 0xf4]                  |     __asm ("str.w r3, [r4, 0xf4]");
    0x000451c6 blx 0x180a8                           |     fcn_000180a8 ();
    0x000451ca ldrd r1, r3, [r5, 0xc4]               |     __asm ("ldrd r1, r3, [r5, 0xc4]");
    0x000451ce mov r0, r4                            |     r0 = r4;
    0x000451d0 str.w r3, [r4, 0xc8]                  |     __asm ("str.w r3, [r4, 0xc8]");
    0x000451d4 bl 0x44368                            |     ap_set_content_type ();
    0x000451d8 add.w r2, r5, 0xcc                    |     r2 = r5 + 0xcc;
    0x000451dc add.w r3, r4, 0xcc                    |     r3 = r4 + 0xcc;
    0x000451e0 vld1.32 {d16}, [r2]                   |     __asm ("vld1.32 {d16}, [r2]");
    0x000451e4 vst1.32 {d16}, [r3]                   |     __asm ("vst1.32 {d16}, [r3]");
    0x000451e8 ldr.w r3, [r5, 0x100]                 |     r3 = *((r5 + 0x100));
    0x000451ec ldr.w r2, [r4, 0xc0]                  |     r2 = *((r4 + 0xc0));
    0x000451f0 ldr.w r1, [r5, 0xc0]                  |     r1 = *((r5 + 0xc0));
    0x000451f4 str.w r3, [r4, 0x100]                 |     __asm ("str.w r3, aav.0x000000ff");
    0x000451f8 ldr r0, [r4]                          |     r0 = *(r4);
    0x000451fa blx 0x18140                           |     strcpy (r0, r1)
    0x000451fe ldr.w r2, [r4, 0xb4]                  |     r2 = *((r4 + 0xb4));
    0x00045202 ldr.w r1, [r5, 0xb4]                  |     r1 = *((r5 + 0xb4));
    0x00045206 str.w r0, [r4, 0xc0]                  |     __asm ("str.w r0, [r4, 0xc0]");
    0x0004520a ldr r0, [r4]                          |     r0 = *(r4);
    0x0004520c blx 0x18140                           |     strcpy (r0, r1)
    0x00045210 ldr.w r2, [r4, 0xb8]                  |     r2 = *((r4 + 0xb8));
    0x00045214 ldr.w r1, [r5, 0xb8]                  |     r1 = *((r5 + 0xb8));
    0x00045218 str.w r0, [r4, 0xb4]                  |     __asm ("str.w r0, [r4, 0xb4]");
    0x0004521c ldr r0, [r4]                          |     r0 = *(r4);
    0x0004521e blx 0x18140                           |     strcpy (r0, r1)
    0x00045222 ldr.w r2, [r4, 0x1d4]                 |     r2 = *((r4 + 0x1d4));
    0x00045226 ldr.w r1, [r5, 0x1d4]                 |     r1 = *((r5 + 0x1d4));
    0x0004522a str.w r0, [r4, 0xb8]                  |     __asm ("str.w r0, [r4, 0xb8]");
    0x0004522e ldr r0, [r4]                          |     r0 = *(r4);
    0x00045230 blx 0x18140                           |     strcpy (r0, r1)
    0x00045234 ldr.w r2, [r4, 0xbc]                  |     r2 = *((r4 + 0xbc));
    0x00045238 ldr.w r1, [r5, 0xbc]                  |     r1 = *((r5 + 0xbc));
    0x0004523c str.w r0, [r4, 0x1d4]                 |     __asm ("str.w r0, aav.0x000000ff");
    0x00045240 ldr r0, [r4]                          |     r0 = *(r4);
    0x00045242 blx 0x18140                           |     strcpy (r0, r1)
    0x00045246 add.w r3, r5, 0x114                   |     r3 = r5 + 0x114;
    0x0004524a str.w r0, [r4, 0xbc]                  |     __asm ("str.w r0, [r4, 0xbc]");
    0x0004524e vld1.32 {d7}, [r3]                    |     __asm ("vld1.32 {d7}, [r3]");
    0x00045252 add.w r3, r4, 0x114                   |     r3 = r4 + 0x114;
    0x00045256 vmov r2, s14                          |     __asm ("vmov r2, s14");
    0x0004525a vmov.32 r1, d7[1]                     |     __asm ("vmov.32 r1, d7[1]");
    0x0004525e vst1.32 {d7}, [r3]                    |     __asm ("vst1.32 {d7}, [r3]");
    0x00045262 mov r3, r2                            |     r3 = r2;
                                                     |     if (r1 == 0) {
    0x00045264 cbz r1, 0x45274                       |         goto label_3;
                                                     |     }
                                                     |     do {
    0x00045266 ldr r0, [r1, 0xc]                     |         r0 = *((r1 + 0xc));
    0x00045268 cmp r5, r0                            |         
    0x0004526a it eq                                 |         
                                                     |         if (r5 != r0) {
    0x0004526c streq r4, [r1, 0xc]                   |             *((r1 + 0xc)) = r4;
                                                     |         }
    0x0004526e ldr r1, [r1, 8]                       |         r1 = *((r1 + 8));
    0x00045270 cmp r1, 0                             |         
    0x00045272 bne 0x45266                           |         
                                                     |     } while (r1 != 0);
                                                     | label_3:
    0x00045274 ldr r7, [r4, 0x14]                    |     r7 = *((r4 + 0x14));
                                                     |     if (r2 == 0) {
    0x00045276 cbz r2, 0x452d4                       |         goto label_4;
                                                     |     }
                                                     |     do {
    0x00045278 ldr r1, [r2, 0xc]                     |         r1 = *((r2 + 0xc));
    0x0004527a cmp r5, r1                            |         
    0x0004527c it eq                                 |         
                                                     |         if (r5 != r1) {
    0x0004527e streq r4, [r2, 0xc]                   |             *((r2 + 0xc)) = r4;
                                                     |         }
    0x00045280 ldr r2, [r2, 8]                       |         r2 = *((r2 + 8));
    0x00045282 cmp r2, 0                             |         
    0x00045284 bne 0x45278                           |         
                                                     |     } while (r2 != 0);
    0x00045286 ldr r2, [pc, 0x5c]                    |     r2 = *(0x452e6);
    0x00045288 ldr r2, [r6, r2]                      |     r2 = *((r6 + r2));
    0x0004528a ldr r0, [r2]                          |     r0 = *(0x452e6);
                                                     |     if (r7 == 0) {
    0x0004528c cbz r7, 0x452bc                       |         goto label_5;
                                                     |     }
    0x0004528e ldr.w r1, [r4, 0x11c]                 |     r1 = *((r4 + 0x11c));
    0x00045292 b 0x4529e                             |     
                                                     |     while (r1 != r3) {
    0x00045294 ldr r2, [r3]                          |         r2 = *(r3);
    0x00045296 cmp r2, r0                            |         
                                                     |         if (r2 == r0) {
    0x00045298 beq 0x452d0                           |             goto label_6;
                                                     |         }
    0x0004529a ldr r3, [r3, 8]                       |         r3 = *((r3 + 8));
                                                     |         if (r3 == 0) {
    0x0004529c cbz r3, 0x452a2                       |             goto label_0;
                                                     |         }
    0x0004529e cmp r1, r3                            |         
    0x000452a0 bne 0x45294                           |         
                                                     |     }
                                                     | label_0:
    0x000452a2 ldr r3, [r4, 4]                       |     r3 = *((r4 + 4));
    0x000452a4 mov r2, r4                            |     r2 = r4;
    0x000452a6 movs r1, 0                            |     r1 = 0;
    0x000452a8 pop.w {r4, r5, r6, r7, r8, lr}        |     
    0x000452ac b.w 0x20480                           |     void (*0x20480)() ();
                                                     |     do {
    0x000452b0 ldr.w r1, [r4, 0x11c]                 |         r1 = *((r4 + 0x11c));
    0x000452b4 cmp r1, r3                            |         
                                                     |         if (r1 == r3) {
    0x000452b6 beq 0x452cc                           |             goto label_7;
                                                     |         }
    0x000452b8 ldr r3, [r3, 8]                       |         r3 = *((r3 + 8));
                                                     |         if (r3 == 0) {
    0x000452ba cbz r3, 0x452d0                       |             goto label_6;
                                                     |         }
                                                     | label_5:
    0x000452bc ldr r2, [r3]                          |         r2 = *(r3);
    0x000452be cmp r2, r0                            |         
    0x000452c0 bne 0x452b0                           |         
                                                     |     } while (r2 != r0);
                                                     |     do {
    0x000452c2 pop.w {r4, r5, r6, r7, r8, lr}        |         
    0x000452c6 mov r0, r3                            |         r0 = r3;
    0x000452c8 b.w 0x204bc                           |         void (*0x204bc)() ();
                                                     | label_7:
    0x000452cc cmp r2, r0                            |         
    0x000452ce beq 0x452c2                           |         
                                                     |     } while (r2 == r0);
                                                     |     do {
                                                     | label_6:
    0x000452d0 pop.w {r4, r5, r6, r7, r8, pc}        |         
                                                     | label_4:
    0x000452d4 cmp r7, 0                             |         
    0x000452d6 beq 0x452d0                           |         
                                                     |     } while (r7 == 0);
    0x000452d8 ldr r3, [pc, 8]                       |     r3 = "_";
    0x000452da ldr r3, [r6, r3]                      |     r3 = *((r6 + r3));
    0x000452dc ldr r0, [r3]                          |     r0 = "_";
    0x000452de b 0x452a2                             |     goto label_0;
                                                     | }

[*] Function strcpy used 10 times httpd