[*] Binary protection state of mod_proxy_scgi.so

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


[*] Function sprintf tear down of mod_proxy_scgi.so

    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_proxy_scgi.so @ 0x1558 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.00001558 ()                                      | void fcn_00001558 (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_40h, int16_t arg_44h, int16_t arg_a0h, int16_t arg_b4h, int16_t arg_b8h, int16_t arg_bch, int16_t arg_100h, int16_t arg_104h, int16_t arg_108h, int16_t arg_114h, 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;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     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_47h;
                                                                 |     int16_t var_48h;
                                                                 |     int16_t var_4ch;
                                                                 |     int16_t var_78h;
                                                                 |     int16_t var_7ch;
                                                                 |     int32_t var_8h_2;
                                                                 |     int32_t var_8h_3;
                                                                 |     int16_t var_10h_2;
                                                                 |     int16_t var_18h_2;
                                                                 |     int16_t var_1ch;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
    0x00001558 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x0000155c mov fp, r1                                        |     
    0x0000155e ldr r1, [pc, 0xa4]                                |     
    0x00001560 mov r8, r3                                        |     r8 = r3;
    0x00001562 sub sp, 0x24                                      |     
    0x00001564 ldr r3, [pc, 0xa0]                                |     r3 = *(0x1608);
    0x00001566 add r1, pc                                        |     r1 = 0x2b70;
    0x00001568 ldr.w sb, [pc, 0xa0]                              |     sb = *(0x0000160c);
    0x0000156c ldr r3, [r1, r3]                                  |     
    0x0000156e add sb, pc                                        |     sb += pc;
    0x00001570 ldr r3, [r3]                                      |     r3 = *(0x2b70);
    0x00001572 str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x00001574 mov.w r3, 0                                       |     r3 = 0;
    0x00001578 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x0000157a beq 0x15e4                                        |         goto label_22;
                                                                 |     }
    0x0000157c mov sl, r0                                        |     sl = r0;
    0x0000157e mov r6, r2                                        |     r6 = r2;
    0x00001580 add r7, sp, 0x18                                  |     r7 += var_18h_2;
    0x00001582 b 0x15a0                                          |     
                                                                 |     while (r0 == 0) {
    0x00001584 ldr.w r3, [sl, 8]                                 |         r3 = *((sl + 8));
    0x00001588 ldr r4, [sp, 0x18]                                |         r4 = var_18h_2;
    0x0000158a ldr r3, [r3, 0x10]                                |         r3 = *((r3 + 0x10));
    0x0000158c add fp, r4                                        |         
    0x0000158e ldrd r5, r2, [r3, 0x230]                          |         __asm ("ldrd r5, r2, [r3, 0x230]");
    0x00001592 adds r5, r5, r4                                   |         r5 += r4;
    0x00001594 adc r2, r2, 0                                     |         __asm ("adc r2, r2, 0");
    0x00001598 subs r6, r6, r4                                   |         r6 -= r4;
    0x0000159a strd r5, r2, [r3, 0x230]                          |         __asm ("strd r5, r2, [r3, 0x230]");
                                                                 |         if (r6 == r6) {
    0x0000159e beq 0x15e4                                        |             goto label_22;
                                                                 |         }
    0x000015a0 ldr.w r0, [sl, 0x1c]                              |         r0 = *((sl + 0x1c));
    0x000015a4 mov r2, r7                                        |         r2 = r7;
    0x000015a6 mov r1, fp                                        |         r1 = fp;
    0x000015a8 str r6, [sp, 0x18]                                |         var_18h_2 = r6;
    0x000015aa blx 0xedc                                         |         r0 = loc_imp_apr_socket_send ();
    0x000015ae cmp r0, 0                                         |         
    0x000015b0 beq 0x1584                                        |         
                                                                 |     }
    0x000015b2 ldr r3, [pc, 0x5c]                                |     r3 = *(0x1612);
    0x000015b4 ldr r4, [pc, 0x5c]                                |     
    0x000015b6 ldrh.w r1, [sl, 0x2c]                             |     r1 = *((sl + 0x2c));
    0x000015ba ldr.w r2, [sb, r3]                                |     r2 = *((sb + r3));
    0x000015be movs r3, 3                                        |     r3 = 3;
    0x000015c0 ldr.w r5, [sl, 0x10]                              |     r5 = *((sl + 0x10));
    0x000015c4 add r4, pc                                        |     r4 = 0x2bdc;
    0x000015c6 str r0, [sp]                                      |     *(sp) = r0;
    0x000015c8 ldr r0, [pc, 0x4c]                                |     
    0x000015ca str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_7ch]");
    0x000015ce ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x000015d0 add r0, pc                                        |     r0 = 0x2bec;
    0x000015d2 str r1, [sp, 0x10]                                |     var_10h_2 = r1;
    0x000015d4 strd r4, r5, [sp, 8]                              |     __asm ("strd r4, r5, [var_8h_2]");
    0x000015d8 movs r1, 0xef                                     |     r1 = 0xef;
    0x000015da blx 0xffc                                         |     loc_imp_ap_log_rerror_ ();
    0x000015de movw r0, 0x1f7                                    |     r0 = 0x1f7;
    0x000015e2 b 0x15e6                                          |     goto label_23;
                                                                 | label_22:
    0x000015e4 movs r0, 0                                        |     r0 = 0;
                                                                 | label_23:
    0x000015e6 ldr r2, [pc, 0x34]                                |     
    0x000015e8 ldr r3, [pc, 0x1c]                                |     r3 = *(0x1608);
    0x000015ea add r2, pc                                        |     r2 = 0x2c0c;
    0x000015ec ldr r3, [r2, r3]                                  |     r3 = *(0x2c0c);
    0x000015ee ldr r2, [r3]                                      |     r2 = *(0x2c0c);
    0x000015f0 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x000015f2 eors r2, r3                                       |     r2 ^= r3;
    0x000015f4 mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x000015f8 bne 0x1600                                        |         
    0x000015fa add sp, 0x24                                      |         
    0x000015fc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x00001600 blx 0xeac                                         |     stack_chk_fail ();
    0x00001604 cmp r1, 0x9e                                      |     
    0x00001606 movs r0, r0                                       |     
    0x00001608 lsls r0, r3, 3                                    |     r0 = r3 << 3;
    0x0000160a movs r0, r0                                       |     
    0x0000160c cmp r1, 0x96                                      |     
    0x0000160e movs r0, r0                                       |     
    0x00001610 lsls r0, r5, 3                                    |     r0 = r5 << 3;
    0x00001612 movs r0, r0                                       |     
    0x00001614 lsrs r4, r0, 0xf                                  |     r4 = r0 >> 0xf;
    0x00001616 movs r0, r0                                       |     
    0x00001618 lsrs r4, r5, 9                                    |     r4 = r5 >> 9;
    0x0000161a movs r0, r0                                       |     
    0x0000161c cmp r1, 0x1a                                      |     
    0x0000161e movs r0, r0                                       |     
    0x00001620 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x00001624 mov r5, r1                                        |     r5 = r1;
    0x00001626 ldr.w r1, [pc, 0x6dc]                             |     r1 = *(0x00001d04);
    0x0000162a mov r6, r2                                        |     r6 = r2;
    0x0000162c sub sp, 0x54                                      |     
    0x0000162e mov fp, r0                                        |     
    0x00001630 ldr.w r2, [pc, 0x6d4]                             |     
    0x00001634 mov r0, r3                                        |     r0 = r3;
    0x00001636 add r1, pc                                        |     r1 += pc;
    0x00001638 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x0000163a movs r3, 0                                        |     r3 = 0;
    0x0000163c ldr.w sb, [sp, 0x78]                              |     sb = var_78h;
    0x00001640 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00001642 ldr.w r1, [pc, 0x6c8]                             |     
    0x00001646 ldrh.w sl, [sp, 0x7c]                             |     sl = var_7ch;
    0x0000164a ldr r2, [r2]                                      |     r2 = *(0x1d08);
    0x0000164c str r2, [sp, 0x4c]                                |     var_4ch = r2;
    0x0000164e mov.w r2, 0                                       |     r2 = 0;
    0x00001652 movs r2, 7                                        |     r2 = 7;
    0x00001654 add r1, pc                                        |     r1 = 0x3366;
    0x00001656 str r3, [sp, 0x48]                                |     var_48h = r3;
    0x00001658 ldr.w r8, [fp]                                    |     r8 = *(fp);
    0x0000165c blx 0xfcc                                         |     loc_imp_ap_cstr_casecmpn ();
    0x00001660 ldr.w r3, [pc, 0x6ac]                             |     r3 = *(0x00001d10);
    0x00001664 add r3, pc                                        |     r3 += pc;
    0x00001666 str r3, [sp, 0x24]                                |     var_24h = r3;
    0x00001668 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000166a bne.w 0x1a7a                                      |         goto label_24;
                                                                 |     }
    0x0000166e ldr.w r7, [pc, 0x6a4]                             |     
    0x00001672 mov r2, r5                                        |     r2 = r5;
    0x00001674 ldr.w r3, [fp, 8]                                 |     r3 = *(arg_8h);
    0x00001678 add r1, sp, 0x48                                  |     r1 += var_48h;
    0x0000167a add r7, pc                                        |     r7 = 0x3394;
    0x0000167c mov r0, r7                                        |     r0 = r7;
    0x0000167e blx 0x105c                                        |     r0 = loc_imp_ap_proxy_acquire_connection ();
    0x00001682 mov r4, r0                                        |     r4 = r0;
    0x00001684 cbz r0, 0x16c6                                    |     
                                                                 |     while (r0 != 0) {
                                                                 | label_0:
    0x00001686 ldr r1, [sp, 0x48]                                |         r1 = var_48h;
                                                                 |         if (r1 != 0) {
    0x00001688 cbz r1, 0x16a4                                    |             
    0x0000168a ldrb.w r3, [r1, 0x2e]                             |             r3 = *((r1 + 0x2e));
    0x0000168e ldr.w r0, [pc, 0x688]                             |             
    0x00001692 orr r3, r3, 2                                     |             r3 |= 2;
    0x00001696 strb.w r3, [r1, 0x2e]                             |             *((r1 + 0x2e)) = r3;
    0x0000169a add r0, pc                                        |             r0 = 0x33b8;
    0x0000169c ldr.w r2, [fp, 8]                                 |             r2 = *(arg_8h);
    0x000016a0 blx 0xf00                                         |             loc_imp_ap_proxy_release_connection ();
                                                                 |         }
                                                                 | label_1:
    0x000016a4 ldr.w r2, [pc, 0x674]                             |         r2 = *(0x00001d1c);
    0x000016a8 ldr.w r3, [pc, 0x65c]                             |         r3 = *(0x1d08);
    0x000016ac add r2, pc                                        |         r2 += pc;
    0x000016ae ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x000016b0 ldr r2, [r3]                                      |         r2 = *(0x1d08);
    0x000016b2 ldr r3, [sp, 0x4c]                                |         r3 = var_4ch;
    0x000016b4 eors r2, r3                                       |         r2 ^= r3;
    0x000016b6 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x000016ba bne.w 0x1ce2                                      |             goto label_25;
                                                                 |         }
    0x000016be mov r0, r4                                        |         r0 = r4;
    0x000016c0 add sp, 0x54                                      |         
    0x000016c2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x000016c6 ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x000016c8 movs r1, 0x2c                                     |         r1 = 0x2c;
    0x000016ca mov r0, r8                                        |         r0 = r8;
    0x000016cc ldrb.w r2, [r3, 0x2e]                             |         r2 = *((r3 + 0x2e));
    0x000016d0 bfi r2, r4, 0, 1                                  |         value_0 = BIT_MASK (0, 1);
                                                                 |         value_1 = r4 & value_0;
                                                                 |         value_0 = ~value_0;
                                                                 |         r2 &= value_0;
                                                                 |         r2 |= value_1;
    0x000016d4 strb.w r2, [r3, 0x2e]                             |         *((r3 + 0x2e)) = r2;
    0x000016d8 blx 0xf18                                         |         loc_imp_apr_palloc ();
    0x000016dc movs r3, 1                                        |         r3 = 1;
    0x000016de str r0, [sp, 4]                                   |         var_4h = r0;
    0x000016e0 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x000016e2 mov r2, r6                                        |         r2 = r6;
    0x000016e4 ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x000016e6 mov r0, r8                                        |         r0 = r8;
    0x000016e8 mov r1, fp                                        |         r1 = fp;
    0x000016ea strd sb, sl, [sp, 0xc]                            |         __asm ("strd sb, sl, [var_10h]");
    0x000016ee str r3, [sp]                                      |         *(sp) = r3;
    0x000016f0 add.w r3, sp, 0x47                                |         r3 += var_47h;
    0x000016f4 str r3, [sp, 0x14]                                |         var_14h = r3;
    0x000016f6 add r3, sp, 0x3c                                  |         r3 += var_3ch;
    0x000016f8 str r3, [sp, 8]                                   |         var_8h = r3;
    0x000016fa mov r3, r5                                        |         r3 = r5;
    0x000016fc blx 0x1074                                        |         r0 = loc_imp_ap_proxy_determine_connection ();
    0x00001700 mov r4, r0                                        |         r4 = r0;
    0x00001702 cmp r0, 0                                         |         
    0x00001704 bne 0x1686                                        |         
                                                                 |     }
    0x00001706 ldr.w r3, [fp, 8]                                 |     r3 = *(arg_8h);
    0x0000170a mov r2, r5                                        |     r2 = r5;
    0x0000170c ldr r1, [sp, 0x48]                                |     r1 = var_48h;
    0x0000170e mov r0, r7                                        |     r0 = r7;
    0x00001710 blx 0xf6c                                         |     r0 = loc_imp_ap_proxy_connect_backend ();
    0x00001714 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001716 bne.w 0x1a4a                                      |         goto label_26;
                                                                 |     }
    0x0000171a movs r1, 1                                        |     r1 = 1;
    0x0000171c mov r0, fp                                        |     r0 = fp;
    0x0000171e blx 0x1050                                        |     r0 = loc_imp_ap_setup_client_block ();
    0x00001722 mov r4, r0                                        |     r4 = r0;
    0x00001724 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001726 bne 0x1686                                        |         goto label_0;
                                                                 |     }
    0x00001728 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x0000172a mov r0, fp                                        |     r0 = fp;
    0x0000172c str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000172e blx 0xea0                                         |     loc_imp_ap_add_common_vars ();
    0x00001732 mov r0, fp                                        |     r0 = fp;
    0x00001734 blx 0xff0                                         |     loc_imp_ap_add_cgi_vars ();
    0x00001738 ldr.w r0, [fp, 0xbc]                              |     r0 = *(arg_bch);
    0x0000173c blx 0xe94                                         |     loc_imp_apr_table_elts ();
    0x00001740 ldr r3, [r0, 8]                                   |     r3 = *((r0 + 8));
    0x00001742 ldr r6, [r0, 0x10]                                |     r6 = *((r0 + 0x10));
    0x00001744 str r0, [sp, 0x28]                                |     var_28h = r0;
    0x00001746 cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x00001748 ble.w 0x1ba8                                      |         goto label_27;
                                                                 |     }
    0x0000174c add.w r3, r3, r3, lsl 1                           |     r3 += (r3 << 1);
    0x00001750 ldr.w sb, [pc, 0x5cc]                             |     
    0x00001754 ldr.w sl, [pc, 0x5cc]                             |     
    0x00001758 mov r5, r6                                        |     r5 = r6;
    0x0000175a add.w r8, r6, r3, lsl 2                           |     r8 = r6 + (r3 << 2);
    0x0000175e ldr.w r3, [pc, 0x5c8]                             |     
    0x00001762 strd r6, r4, [sp, 0x30]                           |     __asm ("strd r6, r4, [var_30h]");
    0x00001766 add sb, pc                                        |     sb = 0x348a;
    0x00001768 add sl, pc                                        |     sl = 0x3490;
    0x0000176a movs r7, 0x16                                     |     r7 = 0x16;
    0x0000176c add r3, pc                                        |     r3 = 0x349a;
    0x0000176e mov r4, r3                                        |     r4 = r3;
                                                                 |     do {
    0x00001770 ldr r6, [r5]                                      |         r6 = *(r5);
    0x00001772 mov r1, sb                                        |         r1 = sb;
    0x00001774 mov r0, r6                                        |         r0 = r6;
    0x00001776 blx 0xe40                                         |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 != 0) {
    0x0000177a cbz r0, 0x17a4                                    |             
    0x0000177c mov r1, sl                                        |             r1 = sl;
    0x0000177e mov r0, r6                                        |             r0 = r6;
    0x00001780 blx 0xe40                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x00001784 cbz r0, 0x17a4                                    |                 goto label_28;
                                                                 |             }
    0x00001786 mov r1, r4                                        |             r1 = r4;
    0x00001788 mov r0, r6                                        |             r0 = r6;
    0x0000178a blx 0xe40                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x0000178e cbz r0, 0x17a4                                    |                 goto label_28;
                                                                 |             }
    0x00001790 mov r0, r6                                        |             r0 = r6;
    0x00001792 adds r7, 2                                        |             r7 += 2;
    0x00001794 blx 0xf78                                         |             r0 = strlen (r0);
    0x00001798 mov r6, r0                                        |             r6 = r0;
    0x0000179a ldr r0, [r5, 4]                                   |             r0 = *((r5 + 4));
    0x0000179c add r7, r6                                        |             r7 += r6;
    0x0000179e blx 0xf78                                         |             r0 = strlen (r0);
    0x000017a2 add r7, r0                                        |             r7 += r0;
                                                                 |         }
                                                                 | label_28:
    0x000017a4 adds r5, 0xc                                      |         r5 += 0xc;
    0x000017a6 cmp r8, r5                                        |         
    0x000017a8 bne 0x1770                                        |         
                                                                 |     } while (r8 != r5);
    0x000017aa ldrd r6, r4, [sp, 0x30]                           |     __asm ("ldrd r6, r4, [var_30h]");
                                                                 | label_8:
    0x000017ae ldr.w r1, [pc, 0x57c]                             |     
    0x000017b2 ldrd r2, r3, [fp, 0xa0]                           |     __asm ("ldrd r2, r3, [arg_a0h]");
    0x000017b6 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x000017ba add r1, pc                                        |     r1 = 0x34ec;
    0x000017bc blx 0xfb4                                         |     r0 = loc_imp_apr_psprintf ()
    0x000017c0 mov r8, r0                                        |     r8 = r0;
    0x000017c2 blx 0xf78                                         |     strlen (r0);
    0x000017c6 ldr.w r1, [pc, 0x568]                             |     
    0x000017ca adds r5, r0, 1                                    |     r5 = r0 + 1;
    0x000017cc add r7, r5                                        |     r7 += r5;
    0x000017ce ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x000017d2 mov r2, r7                                        |     r2 = r7;
    0x000017d4 add r1, pc                                        |     r1 = 0x350a;
    0x000017d6 blx 0xfb4                                         |     r0 = loc_imp_apr_psprintf ()
    0x000017da mov sb, r0                                        |     sb = r0;
    0x000017dc blx 0xf78                                         |     r0 = strlen (r0);
    0x000017e0 mov sl, r0                                        |     sl = r0;
    0x000017e2 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x000017e6 add.w r3, sl, 1                                   |     r3 = sl + 1;
    0x000017ea add r3, r7                                        |     r3 += r7;
    0x000017ec ldr.w r7, [pc, 0x544]                             |     
    0x000017f0 mov r1, r3                                        |     r1 = r3;
    0x000017f2 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x000017f4 blx 0xf18                                         |     loc_imp_apr_palloc ();
    0x000017f8 add r7, pc                                        |     r7 = 0x3530;
    0x000017fa mov r1, sb                                        |     r1 = sb;
    0x000017fc mov r2, sl                                        |     r2 = sl;
    0x000017fe mov sb, r0                                        |     sb = r0;
    0x00001800 str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00001802 blx 0xe64                                         |     r0 = memcpy (r0, r1, r2);
    0x00001806 ldm r7!, {r0, r1, r2}                             |     r0 = *(r7!);
                                                                 |     r1 = *((r7! + 4));
                                                                 |     r2 = *((r7! + 8));
    0x00001808 add.w ip, sb, sl                                  |     
    0x0000180c add.w lr, ip, 0xf                                 |     lr = ip + 0xf;
    0x00001810 str.w r0, [sb, sl]                                |     __asm ("str.w r0, [sb, sl]");
    0x00001814 mov r0, lr                                        |     r0 = lr;
    0x00001816 str.w r2, [ip, 8]                                 |     __asm ("str.w r2, [ip, 8]");
    0x0000181a ldrh r2, [r7]                                     |     r2 = *(r7);
    0x0000181c str.w r1, [ip, 4]                                 |     __asm ("str.w r1, [ip, 4]");
    0x00001820 mov r1, r8                                        |     r1 = r8;
    0x00001822 strh.w r2, [ip, 0xc]                              |     *((ip + 0xc)) = r2;
    0x00001826 ldrb r2, [r7, 2]                                  |     r2 = *((r7 + 2));
    0x00001828 strb.w r2, [ip, 0xe]                              |     *((ip + 0xe)) = r2;
    0x0000182c mov r2, r5                                        |     r2 = r5;
    0x0000182e blx 0xe64                                         |     memcpy (r0, r1, r2);
    0x00001832 ldr.w r2, [pc, 0x504]                             |     
    0x00001836 mov lr, r0                                        |     lr = r0;
    0x00001838 ldr.w r1, [pc, 0x500]                             |     
    0x0000183c add.w r3, lr, r5                                  |     r3 = lr + r5;
    0x00001840 add.w sl, r3, 7                                   |     sl = r3 + 7;
    0x00001844 add r2, pc                                        |     r2 = 0x3582;
    0x00001846 add r1, pc                                        |     r1 = 0x3586;
    0x00001848 ldr r0, [r2]                                      |     r0 = *(0x3582);
    0x0000184a ldrh r1, [r1]                                     |     r1 = *(r1);
    0x0000184c ldrb r2, [r2, 4]                                  |     r2 = *((r2 + 4));
    0x0000184e str.w r0, [lr, r5]                                |     __asm ("str.w r0, [lr, r5]");
    0x00001852 strh.w r1, [r3, 5]                                |     *((r3 + 5)) = r1;
    0x00001856 strb r2, [r3, 4]                                  |     *((r3 + 4)) = r2;
    0x00001858 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x0000185a ldr.w sb, [r3, 8]                                 |     sb = *((r3 + 8));
    0x0000185e cmp.w sb, 0                                       |     
                                                                 |     if (sb <= 0) {
    0x00001862 ble 0x18dc                                        |         goto label_29;
                                                                 |     }
    0x00001864 ldr.w r7, [pc, 0x4d8]                             |     
    0x00001868 mov r2, sb                                        |     r2 = sb;
    0x0000186a ldr.w r3, [pc, 0x4d8]                             |     
    0x0000186e ldr.w r8, [pc, 0x4d8]                             |     
    0x00001872 add r7, pc                                        |     r7 = 0x35b6;
    0x00001874 str.w fp, [sp, 0x38]                              |     __asm ("str.w fp, [var_38h]");
    0x00001878 add r3, pc                                        |     r3 = 0x35c2;
    0x0000187a mov sb, r7                                        |     sb = r7;
    0x0000187c add r8, pc                                        |     r8 = 0x35ca;
    0x0000187e mov fp, r3                                        |     
    0x00001880 mov r7, r2                                        |     r7 = r2;
                                                                 |     do {
    0x00001882 ldr r5, [r6]                                      |         r5 = *(r6);
    0x00001884 mov r1, sb                                        |         r1 = sb;
    0x00001886 mov r0, r5                                        |         r0 = r5;
    0x00001888 blx 0xe40                                         |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 != 0) {
    0x0000188c cbz r0, 0x18d0                                    |             
    0x0000188e mov r1, r8                                        |             r1 = r8;
    0x00001890 mov r0, r5                                        |             r0 = r5;
    0x00001892 blx 0xe40                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x00001896 cbz r0, 0x18d0                                    |                 goto label_30;
                                                                 |             }
    0x00001898 mov r1, fp                                        |             r1 = fp;
    0x0000189a mov r0, r5                                        |             r0 = r5;
    0x0000189c blx 0xe40                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x000018a0 cbz r0, 0x18d0                                    |                 goto label_30;
                                                                 |             }
    0x000018a2 mov r0, r5                                        |             r0 = r5;
    0x000018a4 blx 0xf78                                         |             strlen (r0);
    0x000018a8 mov r1, r5                                        |             r1 = r5;
    0x000018aa adds r2, r0, 1                                    |             r2 = r0 + 1;
    0x000018ac mov r0, sl                                        |             r0 = sl;
    0x000018ae add.w r5, sl, r2                                  |             r5 = sl + r2;
    0x000018b2 blx 0xe64                                         |             memcpy (r0, r1, r2);
    0x000018b6 ldr r7, [r6, 4]                                   |             r7 = *((r6 + 4));
    0x000018b8 mov r0, r7                                        |             r0 = r7;
    0x000018ba blx 0xf78                                         |             strlen (r0);
    0x000018be mov r1, r7                                        |             r1 = r7;
    0x000018c0 adds r2, r0, 1                                    |             r2 = r0 + 1;
    0x000018c2 mov r0, r5                                        |             r0 = r5;
    0x000018c4 add.w sl, r5, r2                                  |             sl = r5 + r2;
    0x000018c8 blx 0xe64                                         |             memcpy (r0, r1, r2);
    0x000018cc ldr r3, [sp, 0x28]                                |             r3 = var_28h;
    0x000018ce ldr r7, [r3, 8]                                   |             r7 = *((r3 + 8));
                                                                 |         }
                                                                 | label_30:
    0x000018d0 adds r4, 1                                        |         r4++;
    0x000018d2 adds r6, 0xc                                      |         r6 += 0xc;
    0x000018d4 cmp r4, r7                                        |         
    0x000018d6 blt 0x1882                                        |         
                                                                 |     } while (r4 < r7);
    0x000018d8 ldr.w fp, [sp, 0x38]                              |     fp = var_38h;
                                                                 | label_29:
    0x000018dc movs r3, 0x2c                                     |     r3 = 0x2c;
    0x000018de ldrd r2, r1, [sp, 0x30]                           |     __asm ("ldrd r2, r1, [var_30h]");
    0x000018e2 strb.w r3, [sl]                                   |     *(sl) = r3;
    0x000018e6 mov r3, fp                                        |     r3 = fp;
    0x000018e8 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x000018ea bl 0x1558                                         |     r0 = fcn_00001558 (r0, r1, r2, r3, r4, r5, r6);
    0x000018ee mov r4, r0                                        |     r4 = r0;
    0x000018f0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000018f2 bne.w 0x1686                                      |         goto label_0;
                                                                 |     }
    0x000018f6 mov r0, fp                                        |     r0 = fp;
    0x000018f8 ldr r5, [sp, 0x48]                                |     r5 = var_48h;
    0x000018fa blx 0x102c                                        |     r0 = loc_imp_ap_should_client_block ();
    0x000018fe cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001900 bne.w 0x1ad0                                      |         goto label_31;
                                                                 |     }
    0x00001902 strh r6, [r4, 6]                                  |     *((r4 + 6)) = r6;
                                                                 | label_5:
    0x00001904 ldr r7, [sp, 0x48]                                |     r7 = var_48h;
    0x00001906 movs r1, 8                                        |     r1 = 8;
    0x00001908 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x0000190c blx 0xf18                                         |     loc_imp_apr_palloc ();
    0x00001910 ldr r3, [r7, 0x1c]                                |     r3 = *((r7 + 0x1c));
    0x00001912 mov r6, r0                                        |     r6 = r0;
    0x00001914 str r3, [r0]                                      |     *(r0) = r3;
    0x00001916 ldr r3, [r7, 8]                                   |     r3 = *((r7 + 8));
    0x00001918 ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0000191a add.w r3, r3, 0x238                               |     r3 += 0x238;
    0x0000191e str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x00001920 ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00001924 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00001928 ldr r1, [r3, 0x40]                                |     r1 = *((r3 + 0x40));
    0x0000192a blx 0xf54                                         |     loc_imp_apr_brigade_create ();
    0x0000192e ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00001932 mov r5, r0                                        |     r5 = r0;
    0x00001934 movs r0, 0x28                                     |     r0 = 0x28;
    0x00001936 adds r4, r5, 4                                    |     r4 = r5 + 4;
    0x00001938 ldr.w r8, [r3, 0x40]                              |     r8 = *((r3 + 0x40));
    0x0000193c mov r1, r8                                        |     r1 = r8;
    0x0000193e blx 0xfe4                                         |     loc_imp_apr_bucket_alloc ();
    0x00001942 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00001944 mov r3, r0                                        |     r3 = r0;
    0x00001946 ldr.w r2, [pc, 0x404]                             |     r2 = *(0x1d4e);
    0x0000194a str r0, [r0]                                      |     *(r0) = r0;
    0x0000194c str r0, [r0, 4]                                   |     *((r0 + 4)) = r0;
    0x0000194e ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00001950 str r4, [r0]                                      |     *(r0) = r4;
    0x00001952 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x00001956 strd r6, r2, [r0, 0x18]                           |     __asm ("strd r6, r2, [r0, 0x18]");
    0x0000195a ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x0000195c ldr r1, [pc, 0x3f0]                               |     
    0x0000195e vstr d16, [r0, 0x10]                              |     __asm ("vstr d16, [r0, 0x10]");
    0x00001962 str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00001964 ldr.w r2, [fp, 4]                                 |     r2 = *(arg_4h);
    0x00001968 add r1, pc                                        |     r1 = 0x36bc;
    0x0000196a str.w r8, [r0, 0x20]                              |     __asm ("str.w r8, [r0, 0x20]");
    0x0000196e ldr r0, [r2, 0x40]                                |     r0 = *(0x1d8e);
    0x00001970 ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x00001972 str r1, [r3, 8]                                   |     *((r3 + 8)) = r1;
    0x00001974 mov.w r1, -1                                      |     r1 = -1;
    0x00001978 str r1, [r3, 0xc]                                 |     *((r3 + 0xc)) = r1;
    0x0000197a str r3, [r2]                                      |     *(r2) = r3;
    0x0000197c str r3, [r5, 8]                                   |     *((r5 + 8)) = r3;
    0x0000197e blx 0x1014                                        |     r0 = loc_imp_apr_bucket_eos_create ();
    0x00001982 str r4, [r0]                                      |     *(r0) = r4;
    0x00001984 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x00001986 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00001988 str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x0000198a ldr r3, [pc, 0x3c8]                               |     r3 = *(0x1d56);
    0x0000198c ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x0000198e str r0, [r2]                                      |     *(r2) = r0;
    0x00001990 movs r2, 0                                        |     r2 = 0;
    0x00001992 str r0, [r5, 8]                                   |     *((r5 + 8)) = r0;
    0x00001994 mov r0, fp                                        |     r0 = fp;
    0x00001996 ldr r6, [r1, r3]                                  |     r6 = *((r1 + r3));
    0x00001998 mov r1, r5                                        |     r1 = r5;
    0x0000199a ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x0000199c blx 0x1038                                        |     loc_imp_ap_scan_script_header_err_brigade_ex ();
    0x000019a0 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x000019a2 mov r4, r0                                        |     r4 = r0;
    0x000019a4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000019a6 bne.w 0x1bcc                                      |         goto label_32;
                                                                 |     }
    0x000019aa ldr.w r3, [fp, 0x100]                             |     r3 = *(arg_100h);
    0x000019ae ldr.w r7, [r3, r2, lsl 2]                         |     offset_2 = r2 << 2;
                                                                 |     r7 = *((r3 + offset_2));
    0x000019b2 ldr r1, [r7]                                      |     r1 = *(r7);
    0x000019b4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000019b6 beq.w 0x1b40                                      |         goto label_33;
                                                                 |     }
    0x000019ba ldr r3, [pc, 0x39c]                               |     
    0x000019bc ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x000019be ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000019c0 ldr r3, [r3]                                      |     r3 = *(0x1d5a);
    0x000019c2 cmp r1, r3                                        |     
                                                                 |     if (r1 == r3) {
    0x000019c4 beq.w 0x1b40                                      |         goto label_33;
                                                                 |     }
    0x000019c8 ldr.w r0, [fp, 0xb8]                              |     r0 = *(arg_b8h);
    0x000019cc mov.w sl, 1                                       |     sl = 1;
    0x000019d0 blx 0xe70                                         |     r0 = loc_imp_apr_table_get ();
    0x000019d4 mov r8, r0                                        |     r8 = r0;
    0x000019d6 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x000019d8 beq.w 0x1b2c                                      |         goto label_34;
                                                                 |     }
                                                                 | label_6:
    0x000019dc movs r1, 8                                        |     r1 = 8;
    0x000019de ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x000019e2 blx 0xf18                                         |     loc_imp_apr_palloc ();
    0x000019e6 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x000019e8 mov sb, r0                                        |     sb = r0;
    0x000019ea ldr.w r1, [fp, 0x108]                             |     r1 = *(arg_108h);
    0x000019ee cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x000019f0 blt.w 0x1c2a                                      |         goto label_35;
                                                                 |     }
    0x000019f4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000019f6 beq.w 0x1bfc                                      |         goto label_36;
                                                                 |     }
    0x000019fa ldr r3, [r1]                                      |     r3 = *(r1);
    0x000019fc cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000019fe beq.w 0x1c14                                      |         goto label_13;
                                                                 |     }
    0x00001a02 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001a04 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00001a06 blt.w 0x1c14                                      |         goto label_13;
                                                                 |     }
                                                                 | label_10:
    0x00001a0a ldr r3, [r1]                                      |     r3 = *(r1);
    0x00001a0c ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001a0e cmp r3, 6                                         |     
    0x00001a10 ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x00001a12 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x00001a14 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_11:
    0x00001a16 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001a18 bne.w 0x1c40                                      |         goto label_37;
                                                                 |     }
                                                                 | label_14:
    0x00001a1c ldr r1, [r7]                                      |     r1 = *(r7);
    0x00001a1e cmp.w sl, 0                                       |     
                                                                 |     if (sl == 0) {
    0x00001a22 beq.w 0x1c20                                      |         goto label_38;
                                                                 |     }
    0x00001a26 ldr.w r0, [fp, 0xb8]                              |     r0 = *(arg_b8h);
    0x00001a2a blx 0xee8                                         |     loc_imp_apr_table_unset ();
                                                                 | label_12:
    0x00001a2e ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00001a30 movs r1, 1                                        |     r1 = 1;
    0x00001a32 ldr.w r3, [fp, 0x104]                             |     r3 = *(arg_104h);
    0x00001a36 mov r0, r5                                        |     r0 = r5;
    0x00001a38 str.w r8, [sb]                                    |     __asm ("str.w r8, [sb]");
    0x00001a3c str.w r1, [sb, 4]                                 |     __asm ("str.w r1, [sb, 4]");
    0x00001a40 str.w sb, [r3, r2, lsl 2]                         |     __asm ("str.w sb, [r3, r2, lsl 2]");
    0x00001a44 blx 0xf24                                         |     loc_imp_apr_brigade_destroy ();
    0x00001a48 b 0x1686                                          |     goto label_0;
                                                                 | label_26:
    0x00001a4a ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00001a4c ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00001a4e ldr r2, [pc, 0x304]                               |     
    0x00001a50 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00001a52 ldrh r1, [r3, 0x2c]                               |     r1 = *((r3 + 0x2c));
    0x00001a54 ldr r2, [r2, 8]                                   |     r2 = *(0x1d5e);
    0x00001a56 str r1, [sp, 0x10]                                |     var_10h = r1;
    0x00001a58 ldr r1, [pc, 0x300]                               |     
    0x00001a5a ldr r0, [r3, 0x10]                                |     r0 = *((r3 + 0x10));
    0x00001a5c movs r3, 3                                        |     r3 = 3;
    0x00001a5e strd r4, fp, [sp]                                 |     __asm ("strd r4, fp, [sp]");
    0x00001a62 add r1, pc                                        |     r1 = 0x37c2;
    0x00001a64 strd r1, r0, [sp, 8]                              |     __asm ("strd r1, r0, [var_ch]");
    0x00001a68 movw r1, 0x233                                    |     r1 = 0x233;
    0x00001a6c ldr r0, [pc, 0x2f0]                               |     
    0x00001a6e add r0, pc                                        |     r0 = 0x37d2;
    0x00001a70 blx 0xffc                                         |     loc_imp_ap_log_rerror_ ();
                                                                 | label_3:
    0x00001a74 movw r4, 0x1f7                                    |     r4 = 0x1f7;
    0x00001a78 b 0x1686                                          |     goto label_0;
                                                                 | label_24:
    0x00001a7a ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00001a7c ldr r3, [pc, 0x2d4]                               |     r3 = *(0x1d54);
    0x00001a7e ldr.w r1, [fp, 0x108]                             |     r1 = *(arg_108h);
    0x00001a82 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00001a84 ldr r2, [r3, 8]                                   |     r2 = *(0x1d5c);
    0x00001a86 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00001a88 blt.w 0x1b92                                      |         goto label_39;
                                                                 |     }
                                                                 |     if (r1 == 0) {
    0x00001a8c cbz r1, 0x1aac                                    |         goto label_40;
                                                                 |     }
    0x00001a8e ldr r3, [r1]                                      |     r3 = *(r1);
                                                                 |     if (r3 == 0) {
    0x00001a90 cbz r3, 0x1ac4                                    |         goto label_7;
                                                                 |     }
    0x00001a92 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001a94 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00001a96 blt 0x1ac4                                        |         goto label_7;
                                                                 |     }
                                                                 |     do {
                                                                 | label_17:
    0x00001a98 cmp r3, 6                                         |         
    0x00001a9a ite le                                            |         
                                                                 |         if (r3 > 6) {
    0x00001a9c movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 6) {
    0x00001a9e movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 | label_2:
    0x00001aa0 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x00001aa2 bne.w 0x1bac                                      |             goto label_41;
                                                                 |         }
                                                                 | label_9:
    0x00001aa6 mov.w r4, -1                                      |         r4 = -1;
    0x00001aaa b 0x16a4                                          |         goto label_1;
                                                                 | label_40:
    0x00001aac ldr.w r0, [fp, 4]                                 |         r0 = *(arg_4h);
    0x00001ab0 ldr r3, [r0, 0x60]                                |         r3 = *((r0 + 0x60));
    0x00001ab2 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x00001ab4 beq.w 0x1c72                                      |             goto label_42;
                                                                 |         }
    0x00001ab8 ldr r3, [r3]                                      |         r3 = *(r3);
                                                                 |         if (r3 == 0) {
    0x00001aba cbz r3, 0x1ac2                                    |             goto label_43;
                                                                 |         }
    0x00001abc ldrsb r3, [r3, r2]                                |         r3 = *((r3 + r2));
    0x00001abe cmp r3, 0                                         |         
    0x00001ac0 bge 0x1a98                                        |         
                                                                 |     } while (r3 >= 0);
                                                                 | label_43:
    0x00001ac2 ldr r1, [r0, 0x60]                                |     r1 = *((r0 + 0x60));
                                                                 | label_7:
    0x00001ac4 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00001ac6 cmp r3, 6                                         |     
    0x00001ac8 ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x00001aca movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x00001acc movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00001ace b 0x1aa0                                          |     goto label_2;
                                                                 | label_31:
    0x00001ad0 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00001ad4 mov.w r1, 0x2000                                  |     r1 = 0x2000;
    0x00001ad8 blx 0xf18                                         |     r0 = loc_imp_apr_palloc ();
    0x00001adc mov r4, r0                                        |     r4 = r0;
    0x00001ade b 0x1aee                                          |     goto label_44;
                                                                 | label_4:
    0x00001ae0 mov r3, fp                                        |     r3 = fp;
    0x00001ae2 mov r1, r4                                        |     r1 = r4;
    0x00001ae4 mov r0, r5                                        |     r0 = r5;
    0x00001ae6 bl 0x1558                                         |     r0 = fcn_00001558 (r0, r1, r2, r3, r4, r5, r6);
    0x00001aea cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001aec bne 0x1a74                                        |         goto label_3;
                                                                 |     }
                                                                 | label_44:
    0x00001aee mov.w r2, 0x2000                                  |     r2 = 0x2000;
    0x00001af2 mov r1, r4                                        |     r1 = r4;
    0x00001af4 mov r0, fp                                        |     r0 = fp;
    0x00001af6 blx 0xf30                                         |     r0 = loc_imp_ap_get_client_block ();
    0x00001afa subs r2, r0, 0                                    |     r2 = r0 - 0;
                                                                 |     if (r2 > r0) {
    0x00001afc bgt 0x1ae0                                        |         goto label_4;
                                                                 |     }
    0x00001afe adds r2, 1                                        |     r2++;
                                                                 |     if (r2 != 1) {
    0x00001b00 bne.w 0x1904                                      |         goto label_5;
                                                                 |     }
    0x00001b04 ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x00001b06 movs r1, 0                                        |     r1 = 0;
    0x00001b08 ldr r2, [pc, 0x248]                               |     
    0x00001b0a mov.w r4, 0x1f4                                   |     r4 = 0x1f4;
    0x00001b0e ldr r3, [pc, 0x254]                               |     
    0x00001b10 ldr r2, [r0, r2]                                  |     r2 = *((r0 + r2));
    0x00001b12 ldr r0, [pc, 0x254]                               |     
    0x00001b14 add r3, pc                                        |     r3 = 0x387e;
    0x00001b16 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00001b18 movs r3, 3                                        |     r3 = 3;
    0x00001b1a strd r1, fp, [sp]                                 |     __asm ("strd r1, fp, [sp]");
    0x00001b1e mov.w r1, 0x15e                                   |     r1 = 0x15e;
    0x00001b22 ldr r2, [r2, 8]                                   |     r2 = *(0x1d5c);
    0x00001b24 add r0, pc                                        |     r0 = 0x3892;
    0x00001b26 blx 0xffc                                         |     loc_imp_ap_log_rerror_ ();
    0x00001b2a b 0x1686                                          |     goto label_0;
                                                                 | label_34:
    0x00001b2c ldr r1, [r7]                                      |     r1 = *(r7);
    0x00001b2e mov sl, r4                                        |     sl = r4;
    0x00001b30 ldr.w r0, [fp, 0xb4]                              |     r0 = *(arg_b4h);
    0x00001b34 blx 0xe70                                         |     r0 = loc_imp_apr_table_get ();
    0x00001b38 mov r8, r0                                        |     r8 = r0;
    0x00001b3a cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001b3c bne.w 0x19dc                                      |         goto label_6;
                                                                 |     }
                                                                 | label_33:
    0x00001b40 ldr.w r3, [fp, 0x44]                              |     r3 = *(arg_44h);
    0x00001b44 cmp r3, 0xc8                                      |     
                                                                 |     if (r3 == 0xc8) {
    0x00001b46 bne 0x1b7e                                        |         
    0x00001b48 ldr.w r8, [r7, 4]                                 |         r8 = *((r7 + 4));
    0x00001b4c cmp.w r8, 0                                       |         
                                                                 |         if (r8 == 0) {
    0x00001b50 beq.w 0x1c66                                      |             goto label_45;
                                                                 |         }
    0x00001b54 ldr r3, [pc, 0x214]                               |         
    0x00001b56 ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x00001b58 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00001b5a ldr r3, [r3]                                      |         r3 = *(0x1d6c);
    0x00001b5c cmp r8, r3                                        |         
                                                                 |         if (r8 == r3) {
    0x00001b5e beq 0x1b7e                                        |             goto label_18;
                                                                 |         }
                                                                 | label_15:
    0x00001b60 ldr.w r0, [fp, 0xb8]                              |         r0 = *(arg_b8h);
    0x00001b64 mov r1, r8                                        |         r1 = r8;
    0x00001b66 blx 0xe70                                         |         loc_imp_apr_table_get ();
    0x00001b6a mov.w sl, 1                                       |         sl = 1;
    0x00001b6e mov r7, r0                                        |         r7 = r0;
    0x00001b70 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00001b72 beq.w 0x1c86                                      |             goto label_46;
                                                                 |         }
                                                                 | label_19:
    0x00001b76 ldrb r3, [r7]                                     |         r3 = *(r7);
    0x00001b78 cmp r3, 0x2f                                      |         
                                                                 |         if (r3 == 0x2f) {
    0x00001b7a beq.w 0x1c9e                                      |             goto label_47;
                                                                 |         }
                                                                 |     }
                                                                 | label_18:
    0x00001b7e ldr.w r0, [fp, 0x114]                             |     r0 = *(arg_114h);
    0x00001b82 mov r1, r5                                        |     r1 = r5;
    0x00001b84 blx 0x1044                                        |     r0 = loc_imp_ap_pass_brigade ();
    0x00001b88 cmp r0, 0                                         |     
    0x00001b8a it ne                                             |     
                                                                 |     if (r0 == 0) {
    0x00001b8c mvnne r4, 0x65                                    |         r4 = ~0x65;
                                                                 |     }
    0x00001b90 b 0x1686                                          |     goto label_0;
                                                                 | label_39:
    0x00001b92 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00001b94 bne 0x1ac4                                        |         goto label_7;
                                                                 |     }
    0x00001b96 ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00001b9a ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00001b9c cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00001b9e bne 0x1ac4                                        |         goto label_7;
                                                                 |     }
    0x00001ba0 ldr.w r1, [fp, 8]                                 |     r1 = *(arg_8h);
                                                                 | label_16:
    0x00001ba4 adds r1, 0x10                                     |     r1 += 0x10;
    0x00001ba6 b 0x1ac4                                          |     goto label_7;
                                                                 | label_27:
    0x00001ba8 movs r7, 0x16                                     |     r7 = 0x16;
    0x00001baa b 0x17ae                                          |     goto label_8;
                                                                 | label_41:
    0x00001bac ldr r0, [pc, 0x1c0]                               |     
    0x00001bae movs r3, 0                                        |     r3 = 0;
    0x00001bb0 ldr r4, [sp, 0x3c]                                |     r4 = var_3ch;
    0x00001bb2 movw r1, 0x21b                                    |     r1 = 0x21b;
    0x00001bb6 strd r3, fp, [sp]                                 |     __asm ("strd r3, fp, [sp]");
    0x00001bba movs r3, 7                                        |     r3 = 7;
    0x00001bbc add r0, pc                                        |     r0 = 0x3930;
    0x00001bbe strd r0, r4, [sp, 8]                              |     __asm ("strd r0, r4, [var_ch]");
    0x00001bc2 ldr r0, [pc, 0x1b0]                               |     
    0x00001bc4 add r0, pc                                        |     r0 = 0x393e;
    0x00001bc6 blx 0xffc                                         |     loc_imp_ap_log_rerror_ ();
    0x00001bca b 0x1aa6                                          |     goto label_9;
                                                                 | label_32:
    0x00001bcc ldrh r3, [r7, 0x2c]                               |     r3 = *((r7 + 0x2c));
    0x00001bce movs r6, 0                                        |     r6 = 0;
    0x00001bd0 ldr r0, [pc, 0x1a4]                               |     
    0x00001bd2 movw r1, 0x181                                    |     r1 = 0x181;
    0x00001bd6 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00001bd8 ldr r3, [r7, 0x10]                                |     r3 = *((r7 + 0x10));
    0x00001bda add r0, pc                                        |     r0 = 0x3956;
    0x00001bdc str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h]");
    0x00001be0 str r6, [sp]                                      |     *(sp) = r6;
    0x00001be2 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00001be4 ldr r3, [pc, 0x194]                               |     
    0x00001be6 add r3, pc                                        |     r3 = 0x3966;
    0x00001be8 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00001bea movs r3, 3                                        |     r3 = 3;
    0x00001bec blx 0xffc                                         |     loc_imp_ap_log_rerror_ ();
    0x00001bf0 mov r0, r5                                        |     r0 = r5;
    0x00001bf2 str.w r6, [fp, 0x40]                              |     __asm ("str.w r6, [arg_40h]");
    0x00001bf6 blx 0xf24                                         |     loc_imp_apr_brigade_destroy ();
    0x00001bfa b 0x1686                                          |     goto label_0;
                                                                 | label_36:
    0x00001bfc ldr.w r0, [fp, 4]                                 |     r0 = *(arg_4h);
    0x00001c00 ldr r1, [r0, 0x60]                                |     r1 = *((r0 + 0x60));
    0x00001c02 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00001c04 beq 0x1ce6                                        |         goto label_48;
                                                                 |     }
    0x00001c06 ldr r3, [r1]                                      |     r3 = *(r1);
                                                                 |     if (r3 == 0) {
    0x00001c08 cbz r3, 0x1c12                                    |         goto label_49;
                                                                 |     }
    0x00001c0a ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001c0c cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00001c0e bge.w 0x1a0a                                      |         goto label_10;
                                                                 |     }
                                                                 | label_49:
    0x00001c12 ldr r1, [r0, 0x60]                                |     r1 = *((r0 + 0x60));
                                                                 |     do {
                                                                 | label_13:
    0x00001c14 ldr r3, [r1, 4]                                   |         r3 = *((r1 + 4));
    0x00001c16 cmp r3, 6                                         |         
    0x00001c18 ite le                                            |         
                                                                 |         if (r3 > 6) {
    0x00001c1a movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 6) {
    0x00001c1c movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x00001c1e b 0x1a16                                          |         goto label_11;
                                                                 | label_38:
    0x00001c20 ldr.w r0, [fp, 0xb4]                              |         r0 = *(arg_b4h);
    0x00001c24 blx 0xee8                                         |         loc_imp_apr_table_unset ();
    0x00001c28 b 0x1a2e                                          |         goto label_12;
                                                                 | label_35:
    0x00001c2a cmp r1, 0                                         |         
    0x00001c2c bne 0x1c14                                        |         
                                                                 |     } while (r1 != 0);
    0x00001c2e ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00001c32 ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00001c34 cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00001c36 bne 0x1c14                                        |         goto label_13;
                                                                 |     }
    0x00001c38 ldr.w r1, [fp, 8]                                 |     r1 = *(arg_8h);
                                                                 | label_20:
    0x00001c3c adds r1, 0x10                                     |     r1 += 0x10;
    0x00001c3e b 0x1c14                                          |     goto label_13;
                                                                 | label_37:
    0x00001c40 str.w r8, [sp, 0x10]                              |     __asm ("str.w r8, [var_10h]");
    0x00001c44 movw r1, 0x195                                    |     r1 = 0x195;
    0x00001c48 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00001c4a ldr r0, [pc, 0x134]                               |     
    0x00001c4c str.w fp, [sp, 4]                                 |     __asm ("str.w fp, [var_4h]");
    0x00001c50 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00001c52 ldr r3, [pc, 0x130]                               |     
    0x00001c54 add r0, pc                                        |     r0 = 0x39da;
    0x00001c56 add r3, pc                                        |     r3 = 0x39e0;
    0x00001c58 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00001c5a movs r3, 0                                        |     r3 = 0;
    0x00001c5c str r3, [sp]                                      |     *(sp) = r3;
    0x00001c5e movs r3, 7                                        |     r3 = 7;
    0x00001c60 blx 0xffc                                         |     loc_imp_ap_log_rerror_ ();
    0x00001c64 b 0x1a1c                                          |     goto label_14;
                                                                 | label_45:
    0x00001c66 ldr r3, [pc, 0x120]                               |     r3 = *(0x1d8a);
    0x00001c68 ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00001c6a ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00001c6c ldr.w r8, [r3]                                    |     r8 = *(0x1d8a);
    0x00001c70 b 0x1b60                                          |     goto label_15;
                                                                 | label_42:
    0x00001c72 ldr.w r1, [fp, 8]                                 |     r1 = *(arg_8h);
    0x00001c76 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00001c78 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00001c7a beq 0x1ba4                                        |         goto label_16;
                                                                 |     }
    0x00001c7c ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001c7e cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00001c80 bge.w 0x1a98                                      |         goto label_17;
                                                                 |     }
    0x00001c84 b 0x1ba4                                          |     goto label_16;
                                                                 | label_46:
    0x00001c86 ldr.w r0, [fp, 0xb4]                              |     r0 = *(arg_b4h);
    0x00001c8a mov r1, r8                                        |     r1 = r8;
    0x00001c8c blx 0xe70                                         |     r0 = loc_imp_apr_table_get ();
    0x00001c90 mov r7, r0                                        |     r7 = r0;
    0x00001c92 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001c94 beq.w 0x1b7e                                      |         goto label_18;
                                                                 |     }
    0x00001c98 mov.w sl, 0                                       |     sl = 0;
    0x00001c9c b 0x1b76                                          |     goto label_19;
                                                                 | label_47:
    0x00001c9e movs r1, 8                                        |     r1 = 8;
    0x00001ca0 ldr.w r0, [fp]                                    |     r0 = *(fp);
    0x00001ca4 blx 0xf18                                         |     loc_imp_apr_palloc ();
    0x00001ca8 ldr r1, [pc, 0xe0]                                |     
    0x00001caa mov sb, r0                                        |     sb = r0;
    0x00001cac mov r0, r8                                        |     r0 = r8;
    0x00001cae add r1, pc                                        |     r1 = 0x3a3e;
    0x00001cb0 blx 0x1068                                        |     r0 = loc_imp_ap_cstr_casecmp ();
                                                                 |     if (r0 != 0) {
    0x00001cb4 cbz r0, 0x1cc6                                    |         
    0x00001cb6 mov r1, r8                                        |         r1 = r8;
    0x00001cb8 cmp.w sl, 0                                       |         
                                                                 |         if (sl == 0) {
    0x00001cbc beq 0x1cfa                                        |             goto label_50;
                                                                 |         }
    0x00001cbe ldr.w r0, [fp, 0xb8]                              |         r0 = *(arg_b8h);
    0x00001cc2 blx 0xee8                                         |         loc_imp_apr_table_unset ();
                                                                 |     }
                                                                 | label_21:
    0x00001cc6 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00001cc8 movs r1, 0                                        |     r1 = 0;
    0x00001cca ldr.w r3, [fp, 0x104]                             |     r3 = *(arg_104h);
    0x00001cce mov r0, r5                                        |     r0 = r5;
    0x00001cd0 str.w r7, [sb]                                    |     __asm ("str.w r7, [sb]");
    0x00001cd4 str.w r1, [sb, 4]                                 |     __asm ("str.w r1, [sb, 4]");
    0x00001cd8 str.w sb, [r3, r2, lsl 2]                         |     __asm ("str.w sb, [r3, r2, lsl 2]");
    0x00001cdc blx 0xf24                                         |     loc_imp_apr_brigade_destroy ();
    0x00001ce0 b 0x1686                                          |     goto label_0;
                                                                 | label_25:
    0x00001ce2 blx 0xeac                                         |     stack_chk_fail ();
                                                                 | label_48:
    0x00001ce6 ldr.w r1, [fp, 8]                                 |     r1 = *(arg_8h);
    0x00001cea ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00001cec cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00001cee beq 0x1c3c                                        |         goto label_20;
                                                                 |     }
    0x00001cf0 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001cf2 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00001cf4 blt 0x1c3c                                        |         goto label_20;
                                                                 |     }
    0x00001cf6 adds r1, 0x10                                     |     r1 += 0x10;
    0x00001cf8 b 0x1a0a                                          |     goto label_10;
                                                                 | label_50:
    0x00001cfa ldr.w r0, [fp, 0xb4]                              |     r0 = *(arg_b4h);
    0x00001cfe blx 0xee8                                         |     loc_imp_apr_table_unset ();
    0x00001d02 b 0x1cc6                                          |     goto label_21;
                                                                 | }

[*] Function sprintf used 3 times mod_proxy_scgi.so