[*] 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-50593792.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_proxy_scgi.so @ 0x14a4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) fcn.000014a4 ()                                      | void fcn_000014a4 (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;
    0x000014a4 svcmi 0xf0e92d                                    |     __asm ("svcmi 0xf0e92d");
    0x000014a8 mov fp, r1                                        |     
    0x000014aa ldr r1, [pc, 0xa0]                                |     
    0x000014ac mov r8, r3                                        |     r8 = r3;
    0x000014ae sub sp, 0x24                                      |     
    0x000014b0 ldr r3, [pc, 0x9c]                                |     r3 = *(0x1550);
    0x000014b2 add r1, pc                                        |     r1 = 0x2a04;
    0x000014b4 ldr.w sb, [pc, 0x9c]                              |     sb = *(0x00001554);
    0x000014b8 ldr r3, [r1, r3]                                  |     
    0x000014ba add sb, pc                                        |     sb += pc;
    0x000014bc ldr r3, [r3]                                      |     r3 = *(0x2a04);
    0x000014be str r3, [sp, 0x1c]                                |     var_1ch = r3;
    0x000014c0 mov.w r3, 0                                       |     r3 = 0;
    0x000014c4 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x000014c6 beq 0x152a                                        |         goto label_19;
                                                                 |     }
    0x000014c8 mov r7, r0                                        |     r7 = r0;
    0x000014ca mov r6, r2                                        |     r6 = r2;
    0x000014cc add.w sl, sp, 0x18                                |     sl += var_18h_2;
    0x000014d0 b 0x14ec                                          |     
                                                                 |     while (r0 == 0) {
    0x000014d2 ldr r3, [r7, 8]                                   |         r3 = *((r7 + 8));
    0x000014d4 ldr r4, [sp, 0x18]                                |         r4 = var_18h_2;
    0x000014d6 ldr r3, [r3, 0x10]                                |         r3 = *((r3 + 0x10));
    0x000014d8 add fp, r4                                        |         
    0x000014da ldrd r5, r2, [r3, 0x230]                          |         __asm ("ldrd r5, r2, [r3, 0x230]");
    0x000014de adds r5, r5, r4                                   |         r5 += r4;
    0x000014e0 adc r2, r2, 0                                     |         __asm ("adc r2, r2, 0");
    0x000014e4 subs r6, r6, r4                                   |         r6 -= r4;
    0x000014e6 strd r5, r2, [r3, 0x230]                          |         __asm ("strd r5, r2, [r3, 0x230]");
                                                                 |         if (r6 == r6) {
    0x000014ea beq 0x152a                                        |             goto label_19;
                                                                 |         }
    0x000014ec ldr r0, [r7, 0x1c]                                |         r0 = *((r7 + 0x1c));
    0x000014ee mov r2, sl                                        |         r2 = sl;
    0x000014f0 mov r1, fp                                        |         r1 = fp;
    0x000014f2 str r6, [sp, 0x18]                                |         var_18h_2 = r6;
    0x000014f4 blx 0xe30                                         |         r0 = loc_imp_apr_socket_send ();
    0x000014f8 cmp r0, 0                                         |         
    0x000014fa beq 0x14d2                                        |         
                                                                 |     }
    0x000014fc ldr r3, [pc, 0x58]                                |     r3 = *(0x1558);
    0x000014fe ldr r4, [pc, 0x5c]                                |     
    0x00001500 ldrh r1, [r7, 0x2c]                               |     r1 = *((r7 + 0x2c));
    0x00001502 ldr.w r2, [sb, r3]                                |     r2 = *((sb + r3));
    0x00001506 movs r3, 3                                        |     r3 = 3;
    0x00001508 ldr r5, [r7, 0x10]                                |     r5 = *((r7 + 0x10));
    0x0000150a add r4, pc                                        |     r4 = 0x2a6c;
    0x0000150c str r0, [sp]                                      |     *(sp) = r0;
    0x0000150e ldr r0, [pc, 0x50]                                |     
    0x00001510 str.w r8, [sp, 4]                                 |     __asm ("str.w r8, [var_7ch]");
    0x00001514 ldr r2, [r2, 8]                                   |     r2 = *((r2 + 8));
    0x00001516 add r0, pc                                        |     r0 = 0x2a7c;
    0x00001518 str r1, [sp, 0x10]                                |     var_10h_2 = r1;
    0x0000151a strd r4, r5, [sp, 8]                              |     __asm ("strd r4, r5, [var_8h_2]");
    0x0000151e movs r1, 0xed                                     |     r1 = 0xed;
    0x00001520 blx 0xf50                                         |     loc_imp_ap_log_rerror_ ();
    0x00001524 movw r0, 0x1f7                                    |     r0 = 0x1f7;
    0x00001528 b 0x152c                                          |     goto label_20;
                                                                 | label_19:
    0x0000152a movs r0, 0                                        |     r0 = 0;
                                                                 | label_20:
    0x0000152c ldr r2, [pc, 0x34]                                |     
    0x0000152e ldr r3, [pc, 0x20]                                |     r3 = *(0x1552);
    0x00001530 add r2, pc                                        |     r2 = 0x2a98;
    0x00001532 ldr r3, [r2, r3]                                  |     r3 = *(0x2a98);
    0x00001534 ldr r2, [r3]                                      |     r2 = *(0x2a98);
    0x00001536 ldr r3, [sp, 0x1c]                                |     r3 = var_1ch;
    0x00001538 eors r2, r3                                       |     r2 ^= r3;
    0x0000153a mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 == r3) {
    0x0000153e bne 0x1546                                        |         
    0x00001540 add sp, 0x24                                      |         
    0x00001542 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x00001546 blx 0xe00                                         |     stack_chk_fail ();
    0x0000154a nop                                               |     
    0x0000154c subs r2, r2, r1                                   |     r2 -= r1;
    0x0000154e movs r1, r0                                       |     r1 = r0;
    0x00001550 lsls r0, r3, 3                                    |     r0 = r3 << 3;
    0x00001552 movs r0, r0                                       |     
    0x00001554 subs r2, r1, r1                                   |     r2 = r1 - r1;
    0x00001556 movs r1, r0                                       |     r1 = r0;
    0x00001558 lsls r0, r5, 3                                    |     r0 = r5 << 3;
    0x0000155a movs r0, r0                                       |     
    0x0000155c lsrs r6, r6, 0xe                                  |     r6 >>= 0xe;
    0x0000155e movs r0, r0                                       |     
    0x00001560 lsrs r6, r1, 9                                    |     r6 = r1 >> 9;
    0x00001562 movs r0, r0                                       |     
    0x00001564 adds r4, r2, r7                                   |     r4 = r2 + r7;
    0x00001566 movs r1, r0                                       |     r1 = r0;
    0x00001568 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000156c mov r5, r1                                        |     r5 = r1;
    0x0000156e ldr.w r1, [pc, 0x6b4]                             |     r1 = *(0x00001c24);
    0x00001572 mov r6, r2                                        |     r6 = r2;
    0x00001574 sub sp, 0x54                                      |     
    0x00001576 mov sl, r0                                        |     sl = r0;
    0x00001578 ldr.w r2, [pc, 0x6ac]                             |     
    0x0000157c mov r0, r3                                        |     r0 = r3;
    0x0000157e add r1, pc                                        |     r1 += pc;
    0x00001580 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00001582 movs r3, 0                                        |     r3 = 0;
    0x00001584 ldr.w sb, [sp, 0x78]                              |     sb = var_78h;
    0x00001588 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x0000158a ldr.w r1, [pc, 0x6a0]                             |     
    0x0000158e ldrh.w fp, [sp, 0x7c]                             |     fp = var_7ch;
    0x00001592 ldr r2, [r2]                                      |     r2 = *(0x1c28);
    0x00001594 str r2, [sp, 0x4c]                                |     var_4ch = r2;
    0x00001596 mov.w r2, 0                                       |     r2 = 0;
    0x0000159a movs r2, 7                                        |     r2 = 7;
    0x0000159c add r1, pc                                        |     r1 = 0x31ce;
    0x0000159e str r3, [sp, 0x48]                                |     var_48h = r3;
    0x000015a0 ldr.w r8, [sl]                                    |     r8 = *(sl);
    0x000015a4 blx 0xf20                                         |     loc_imp_ap_cstr_casecmpn ();
    0x000015a8 ldr.w r3, [pc, 0x684]                             |     r3 = *(0x00001c30);
    0x000015ac add r3, pc                                        |     r3 += pc;
    0x000015ae str r3, [sp, 0x24]                                |     var_24h = r3;
    0x000015b0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000015b2 bne.w 0x19ac                                      |         goto label_21;
                                                                 |     }
    0x000015b6 ldr.w r7, [pc, 0x67c]                             |     
    0x000015ba mov r2, r5                                        |     r2 = r5;
    0x000015bc ldr.w r3, [sl, 8]                                 |     r3 = *((sl + 8));
    0x000015c0 add r1, sp, 0x48                                  |     r1 += var_48h;
    0x000015c2 add r7, pc                                        |     r7 = 0x31fc;
    0x000015c4 mov r0, r7                                        |     r0 = r7;
    0x000015c6 blx 0xfb0                                         |     r0 = loc_imp_ap_proxy_acquire_connection ();
    0x000015ca mov r4, r0                                        |     r4 = r0;
    0x000015cc cbz r0, 0x160e                                    |     
                                                                 |     while (r0 != 0) {
                                                                 | label_0:
    0x000015ce ldr r1, [sp, 0x48]                                |         r1 = var_48h;
                                                                 |         if (r1 != 0) {
    0x000015d0 cbz r1, 0x15ec                                    |             
    0x000015d2 ldrb.w r3, [r1, 0x2e]                             |             r3 = *((r1 + 0x2e));
    0x000015d6 ldr.w r0, [pc, 0x660]                             |             
    0x000015da orr r3, r3, 2                                     |             r3 |= 2;
    0x000015de strb.w r3, [r1, 0x2e]                             |             *((r1 + 0x2e)) = r3;
    0x000015e2 add r0, pc                                        |             r0 = 0x3220;
    0x000015e4 ldr.w r2, [sl, 8]                                 |             r2 = *((sl + 8));
    0x000015e8 blx 0xe54                                         |             loc_imp_ap_proxy_release_connection ();
                                                                 |         }
                                                                 | label_1:
    0x000015ec ldr.w r2, [pc, 0x64c]                             |         r2 = *(0x00001c3c);
    0x000015f0 ldr.w r3, [pc, 0x634]                             |         r3 = *(0x1c28);
    0x000015f4 add r2, pc                                        |         r2 += pc;
    0x000015f6 ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x000015f8 ldr r2, [r3]                                      |         r2 = *(0x1c28);
    0x000015fa ldr r3, [sp, 0x4c]                                |         r3 = var_4ch;
    0x000015fc eors r2, r3                                       |         r2 ^= r3;
    0x000015fe mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x00001602 bne.w 0x1c02                                      |             goto label_22;
                                                                 |         }
    0x00001606 mov r0, r4                                        |         r0 = r4;
    0x00001608 add sp, 0x54                                      |         
    0x0000160a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
    0x0000160e ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x00001610 movs r1, 0x2c                                     |         r1 = 0x2c;
    0x00001612 mov r0, r8                                        |         r0 = r8;
    0x00001614 ldrb.w r2, [r3, 0x2e]                             |         r2 = *((r3 + 0x2e));
    0x00001616 movs r0, 0x2e                                     |         r0 = 0x2e;
    0x00001618 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;
    0x0000161c strb.w r2, [r3, 0x2e]                             |         *((r3 + 0x2e)) = r2;
    0x00001620 blx 0xe6c                                         |         loc_imp_apr_palloc ();
    0x00001624 movs r3, 1                                        |         r3 = 1;
    0x00001626 str r0, [sp, 4]                                   |         var_4h = r0;
    0x00001628 str r3, [sp, 0x18]                                |         var_18h = r3;
    0x0000162a mov r2, r6                                        |         r2 = r6;
    0x0000162c ldr r3, [sp, 0x48]                                |         r3 = var_48h;
    0x0000162e mov r0, r8                                        |         r0 = r8;
    0x00001630 mov r1, sl                                        |         r1 = sl;
    0x00001632 strd sb, fp, [sp, 0xc]                            |         __asm ("strd sb, fp, [var_0hxc]");
    0x00001636 str r3, [sp]                                      |         *(sp) = r3;
    0x00001638 add.w r3, sp, 0x47                                |         r3 += var_47h;
    0x0000163c str r3, [sp, 0x14]                                |         var_14h = r3;
    0x0000163e add r3, sp, 0x3c                                  |         r3 += var_3ch;
    0x00001640 str r3, [sp, 8]                                   |         var_8h = r3;
    0x00001642 mov r3, r5                                        |         r3 = r5;
    0x00001644 blx 0xfc8                                         |         r0 = loc_imp_ap_proxy_determine_connection ();
    0x00001648 mov r4, r0                                        |         r4 = r0;
    0x0000164a cmp r0, 0                                         |         
    0x0000164c bne 0x15ce                                        |         
                                                                 |     }
    0x0000164e ldr.w r3, [sl, 8]                                 |     r3 = *((sl + 8));
    0x00001652 mov r2, r5                                        |     r2 = r5;
    0x00001654 ldr r1, [sp, 0x48]                                |     r1 = var_48h;
    0x00001656 mov r0, r7                                        |     r0 = r7;
    0x00001658 blx 0xec0                                         |     r0 = loc_imp_ap_proxy_connect_backend ();
    0x0000165c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000165e bne.w 0x197a                                      |         goto label_23;
                                                                 |     }
    0x00001662 movs r1, 1                                        |     r1 = 1;
    0x00001664 mov r0, sl                                        |     r0 = sl;
    0x00001666 blx 0xfa4                                         |     r0 = loc_imp_ap_setup_client_block ();
    0x0000166a mov r4, r0                                        |     r4 = r0;
    0x0000166c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000166e bne 0x15ce                                        |         goto label_0;
                                                                 |     }
    0x00001670 ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x00001672 mov r0, sl                                        |     r0 = sl;
    0x00001674 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x00001676 blx 0xdf4                                         |     loc_imp_ap_add_common_vars ();
    0x0000167a mov r0, sl                                        |     r0 = sl;
    0x0000167c blx 0xf44                                         |     loc_imp_ap_add_cgi_vars ();
    0x00001680 ldr.w r0, [sl, 0xbc]                              |     r0 = *((sl + 0xbc));
    0x00001684 blx 0xde8                                         |     loc_imp_apr_table_elts ();
    0x00001688 ldr r7, [r0, 8]                                   |     r7 = *((r0 + 8));
    0x0000168a ldr r3, [r0, 0x10]                                |     r3 = *((r0 + 0x10));
    0x0000168c str r0, [sp, 0x28]                                |     var_28h = r0;
    0x0000168e cmp r7, 0                                         |     
    0x00001690 str r3, [sp, 0x38]                                |     var_38h = r3;
                                                                 |     if (r7 <= 0) {
    0x00001692 ble.w 0x1adc                                      |         goto label_24;
                                                                 |     }
    0x00001696 ldr.w r8, [pc, 0x5a8]                             |     
    0x0000169a add.w r7, r7, r7, lsl 1                           |     r7 += (r7 << 1);
    0x0000169e ldr.w sb, [pc, 0x5a4]                             |     
    0x000016a2 mov r5, r3                                        |     r5 = r3;
    0x000016a4 ldr.w fp, [pc, 0x5a0]                             |     
    0x000016a8 add.w r7, r3, r7, lsl 2                           |     r7 = r3 + (r7 << 2);
    0x000016ac add r8, pc                                        |     r8 = 0x32f2;
    0x000016ae str r4, [sp, 0x30]                                |     var_30h = r4;
    0x000016b0 add sb, pc                                        |     sb = 0x32fa;
    0x000016b2 movs r6, 0x16                                     |     r6 = 0x16;
    0x000016b4 add fp, pc                                        |     fp = 0x3300;
                                                                 |     do {
    0x000016b6 ldr r4, [r5]                                      |         r4 = *(r5);
    0x000016b8 mov r1, r8                                        |         r1 = r8;
    0x000016ba mov r0, r4                                        |         r0 = r4;
    0x000016bc blx 0xd94                                         |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 != 0) {
    0x000016c0 cbz r0, 0x16ea                                    |             
    0x000016c2 mov r1, sb                                        |             r1 = sb;
    0x000016c4 mov r0, r4                                        |             r0 = r4;
    0x000016c6 blx 0xd94                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x000016ca cbz r0, 0x16ea                                    |                 goto label_25;
                                                                 |             }
    0x000016cc mov r1, fp                                        |             r1 = fp;
    0x000016ce mov r0, r4                                        |             r0 = r4;
    0x000016d0 blx 0xd94                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x000016d4 cbz r0, 0x16ea                                    |                 goto label_25;
                                                                 |             }
    0x000016d6 mov r0, r4                                        |             r0 = r4;
    0x000016d8 adds r6, 2                                        |             r6 += 2;
    0x000016da blx 0xecc                                         |             r0 = strlen (r0);
    0x000016de mov r4, r0                                        |             r4 = r0;
    0x000016e0 ldr r0, [r5, 4]                                   |             r0 = *((r5 + 4));
    0x000016e2 add r6, r4                                        |             r6 += r4;
    0x000016e4 blx 0xecc                                         |             r0 = strlen (r0);
    0x000016e8 add r6, r0                                        |             r6 += r0;
                                                                 |         }
                                                                 | label_25:
    0x000016ea adds r5, 0xc                                      |         r5 += 0xc;
    0x000016ec cmp r5, r7                                        |         
    0x000016ee bne 0x16b6                                        |         
                                                                 |     } while (r5 != r7);
    0x000016f0 ldr r4, [sp, 0x30]                                |     r4 = var_30h;
                                                                 | label_5:
    0x000016f2 ldr.w r1, [pc, 0x558]                             |     
    0x000016f6 ldrd r2, r3, [sl, 0xa0]                           |     __asm ("ldrd r2, r3, [sl, 0xa0]");
    0x000016fa ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x000016fe add r1, pc                                        |     r1 = 0x3350;
    0x00001700 blx 0xf08                                         |     loc_imp_apr_psprintf ()
    0x00001702 invalid                                           |     
    0x00001706 blx 0xecc                                         |     strlen (r0);
    0x0000170a ldr.w r1, [pc, 0x544]                             |     
    0x0000170e adds r5, r0, 1                                    |     r5 = r0 + 1;
    0x00001710 add r6, r5                                        |     r6 += r5;
    0x00001712 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00001716 mov r2, r6                                        |     r2 = r6;
    0x00001718 add r1, pc                                        |     r1 = 0x336e;
    0x0000171a blx 0xf08                                         |     r0 = loc_imp_apr_psprintf ()
    0x0000171e mov sb, r0                                        |     sb = r0;
    0x00001720 blx 0xecc                                         |     r0 = strlen (r0);
    0x00001724 mov r8, r0                                        |     r8 = r0;
    0x00001726 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x0000172a add.w r3, r8, 1                                   |     r3 = r8 + 1;
    0x0000172e add r3, r6                                        |     r3 += r6;
    0x00001730 mov r1, r3                                        |     r1 = r3;
    0x00001732 str r3, [sp, 0x30]                                |     var_30h = r3;
    0x00001734 blx 0xe6c                                         |     loc_imp_apr_palloc ();
    0x00001738 mov r1, sb                                        |     r1 = sb;
    0x0000173a mov r2, r8                                        |     r2 = r8;
    0x0000173c mov r6, r0                                        |     r6 = r0;
    0x0000173e str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00001740 blx 0xdc4                                         |     memcpy (r0, r1, r2);
    0x00001744 ldr.w r3, [pc, 0x50c]                             |     
    0x00001748 add.w ip, r6, r8                                  |     
    0x0000174c mov r7, r6                                        |     r7 = r6;
    0x0000174e add.w r6, ip, 0xf                                 |     r6 = ip + 0xf;
    0x00001752 add r3, pc                                        |     r3 = 0x33aa;
    0x00001754 ldm r3!, {r0, r1, r2}                             |     r0 = *(r3!);
                                                                 |     r1 = *((r3! + 4));
                                                                 |     r2 = *((r3! + 8));
    0x00001756 str.w r0, [r7, r8]                                |     __asm ("str.w r0, [r7, r8]");
    0x0000175a mov r0, r6                                        |     r0 = r6;
    0x0000175c str.w r2, [ip, 8]                                 |     __asm ("str.w r2, [ip, 8]");
    0x00001760 ldrh r2, [r3]                                     |     r2 = *(r3);
    0x00001762 ldrb r3, [r3, 2]                                  |     r3 = *((r3 + 2));
    0x00001764 str.w r1, [ip, 4]                                 |     __asm ("str.w r1, [ip, 4]");
    0x00001768 mov r1, fp                                        |     r1 = fp;
    0x0000176a strh.w r2, [ip, 0xc]                              |     *((ip + 0xc)) = r2;
    0x0000176e mov r2, r5                                        |     r2 = r5;
    0x00001770 strb.w r3, [ip, 0xe]                              |     *((ip + 0xe)) = r3;
    0x00001774 blx 0xdc4                                         |     memcpy (r0, r1, r2);
    0x00001778 ldr.w r3, [pc, 0x4dc]                             |     
    0x0000177c ldr.w r2, [pc, 0x4dc]                             |     
    0x00001780 add r3, pc                                        |     r3 = 0x33dc;
    0x00001782 ldr r0, [r3]                                      |     r0 = *(0x33dc);
    0x00001784 add r2, pc                                        |     r2 = 0x33e4;
    0x00001786 ldrb r3, [r3, 4]                                  |     r3 = *((r3 + 4));
    0x00001788 ldrh r2, [r2]                                     |     r2 = *(r2);
    0x0000178a str r0, [r6, r5]                                  |     *((r6 + r5)) = r0;
    0x0000178c add r6, r5                                        |     r6 += r5;
    0x0000178e strb r3, [r6, 4]                                  |     *((r6 + 4)) = r3;
    0x00001790 adds r6, 7                                        |     r6 += 7;
    0x00001792 ldr r3, [sp, 0x28]                                |     r3 = var_28h;
    0x00001794 strh r2, [r6, -0x2]                               |     *((r6 - 0x2)) = r2;
    0x00001798 ldr r7, [r3, 8]                                   |     r7 = *(0x33e4);
    0x0000179a cmp r7, 0                                         |     
                                                                 |     if (r7 <= 0) {
    0x0000179c ble 0x1810                                        |         goto label_26;
                                                                 |     }
    0x0000179e ldr.w r3, [pc, 0x4c0]                             |     
    0x000017a2 ldr.w r8, [pc, 0x4c0]                             |     
    0x000017a6 ldr.w sb, [pc, 0x4c0]                             |     
    0x000017aa add r3, pc                                        |     r3 = 0x3410;
    0x000017ac ldr r5, [sp, 0x38]                                |     r5 = var_38h;
    0x000017ae add r8, pc                                        |     r8 = 0x3418;
    0x000017b0 mov fp, r3                                        |     
    0x000017b2 add sb, pc                                        |     sb = 0x3420;
    0x000017b4 str.w sl, [sp, 0x38]                              |     __asm ("str.w sl, [var_38h]");
                                                                 |     do {
    0x000017b8 ldr.w sl, [r5]                                    |         sl = *(r5);
    0x000017bc mov r1, r8                                        |         r1 = r8;
    0x000017be mov r0, sl                                        |         r0 = sl;
    0x000017c0 blx 0xd94                                         |         r0 = strcmp (r0, r1);
                                                                 |         if (r0 != 0) {
    0x000017c4 cbz r0, 0x1804                                    |             
    0x000017c6 mov r1, sb                                        |             r1 = sb;
    0x000017c8 mov r0, sl                                        |             r0 = sl;
    0x000017ca blx 0xd94                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x000017ce cbz r0, 0x1804                                    |                 goto label_27;
                                                                 |             }
    0x000017d0 mov r1, fp                                        |             r1 = fp;
    0x000017d2 mov r0, sl                                        |             r0 = sl;
    0x000017d4 blx 0xd94                                         |             r0 = strcmp (r0, r1);
                                                                 |             if (r0 == 0) {
    0x000017d8 cbz r0, 0x1804                                    |                 goto label_27;
                                                                 |             }
    0x000017da mov r0, sl                                        |             r0 = sl;
    0x000017dc blx 0xecc                                         |             strlen (r0);
    0x000017e0 mov r1, sl                                        |             r1 = sl;
    0x000017e2 adds r2, r0, 1                                    |             r2 = r0 + 1;
    0x000017e4 mov r0, r6                                        |             r0 = r6;
    0x000017e6 adds r7, r6, r2                                   |             r7 = r6 + r2;
    0x000017e8 blx 0xdc4                                         |             memcpy (r0, r1, r2);
    0x000017ec ldr r6, [r5, 4]                                   |             r6 = *((r5 + 4));
    0x000017ee mov r0, r6                                        |             r0 = r6;
    0x000017f0 blx 0xecc                                         |             strlen (r0);
    0x000017f4 mov r1, r6                                        |             r1 = r6;
    0x000017f6 adds r2, r0, 1                                    |             r2 = r0 + 1;
    0x000017f8 mov r0, r7                                        |             r0 = r7;
    0x000017fa adds r6, r7, r2                                   |             r6 = r7 + r2;
    0x000017fc blx 0xdc4                                         |             memcpy (r0, r1, r2);
    0x00001800 ldr r3, [sp, 0x28]                                |             r3 = var_28h;
    0x00001802 ldr r7, [r3, 8]                                   |             r7 = *((r3 + 8));
                                                                 |         }
                                                                 | label_27:
    0x00001804 adds r4, 1                                        |         r4++;
    0x00001806 adds r5, 0xc                                      |         r5 += 0xc;
    0x00001808 cmp r4, r7                                        |         
    0x0000180a blt 0x17b8                                        |         
                                                                 |     } while (r4 < r7);
    0x0000180c ldr.w sl, [sp, 0x38]                              |     sl = var_38h;
                                                                 | label_26:
    0x00001810 movs r3, 0x2c                                     |     r3 = 0x2c;
    0x00001812 ldrd r2, r1, [sp, 0x30]                           |     __asm ("ldrd r2, r1, [var_30h]");
    0x00001816 strb r3, [r6]                                     |     *(r6) = r3;
    0x00001818 mov r3, sl                                        |     r3 = sl;
    0x0000181a ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0000181c bl 0x14a4                                         |     r0 = fcn_000014a4 (r0, r1, r2, r3);
    0x00001820 mov r4, r0                                        |     r4 = r0;
    0x00001822 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001824 bne.w 0x15ce                                      |         goto label_0;
                                                                 |     }
    0x00001828 mov r0, sl                                        |     r0 = sl;
    0x0000182a ldr r5, [sp, 0x48]                                |     r5 = var_48h;
    0x0000182c blx 0xf80                                         |     r0 = loc_imp_ap_should_client_block ();
    0x00001830 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001832 bne.w 0x1a82                                      |         goto label_28;
                                                                 |     }
                                                                 | label_4:
    0x00001836 ldr r7, [sp, 0x48]                                |     r7 = var_48h;
    0x00001838 movs r1, 8                                        |     r1 = 8;
    0x0000183a ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x0000183e blx 0xe6c                                         |     loc_imp_apr_palloc ();
    0x00001842 ldr r3, [r7, 0x1c]                                |     r3 = *((r7 + 0x1c));
    0x00001844 mov r6, r0                                        |     r6 = r0;
    0x00001846 str r3, [r0]                                      |     *(r0) = r3;
    0x00001848 ldr r3, [r7, 8]                                   |     r3 = *((r7 + 8));
    0x0000184a ldr r3, [r3, 0x10]                                |     r3 = *((r3 + 0x10));
    0x0000184c add.w r3, r3, 0x238                               |     r3 += 0x238;
    0x00001850 str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x00001852 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00001856 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x0000185a ldr r1, [r3, 0x40]                                |     r1 = *((r3 + 0x40));
    0x0000185c blx 0xea8                                         |     loc_imp_apr_brigade_create ();
    0x00001860 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00001864 mov r5, r0                                        |     r5 = r0;
    0x00001866 movs r0, 0x28                                     |     r0 = 0x28;
    0x00001868 adds r4, r5, 4                                    |     r4 = r5 + 4;
    0x0000186a ldr.w r8, [r3, 0x40]                              |     r8 = *((r3 + 0x40));
    0x0000186e mov r1, r8                                        |     r1 = r8;
    0x00001870 blx 0xf38                                         |     loc_imp_apr_bucket_alloc ();
    0x00001874 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x00001876 mov r3, r0                                        |     r3 = r0;
    0x00001878 ldr r2, [pc, 0x3f0]                               |     r2 = *(0x1c6c);
    0x0000187a str r0, [r0]                                      |     *(r0) = r0;
    0x0000187c str r0, [r0, 4]                                   |     *((r0 + 4)) = r0;
    0x0000187e ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00001880 str r4, [r0]                                      |     *(r0) = r4;
    0x00001882 vmov.i8 d16, 0xff                                 |     __asm ("vmov.i8 d16, 0xff");
    0x00001886 strd r6, r2, [r0, 0x18]                           |     __asm ("strd r6, r2, [r0, 0x18]");
    0x0000188a ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x0000188c ldr r1, [pc, 0x3e0]                               |     
    0x0000188e vstr d16, [r0, 0x10]                              |     __asm ("vstr d16, [r0, 0x10]");
    0x00001892 str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x00001894 ldr.w r2, [sl, 4]                                 |     r2 = *((sl + 4));
    0x00001898 add r1, pc                                        |     r1 = 0x350c;
    0x0000189a str.w r8, [r0, 0x20]                              |     __asm ("str.w r8, [r0, 0x20]");
    0x0000189e ldr r0, [r2, 0x40]                                |     r0 = *(0x1cac);
    0x000018a0 ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x000018a2 str r1, [r3, 8]                                   |     *((r3 + 8)) = r1;
    0x000018a4 mov.w r1, -1                                      |     r1 = -1;
    0x000018a8 str r1, [r3, 0xc]                                 |     *((r3 + 0xc)) = r1;
    0x000018aa str r3, [r2]                                      |     *(r2) = r3;
    0x000018ac str r3, [r5, 8]                                   |     *((r5 + 8)) = r3;
    0x000018ae blx 0xf68                                         |     r0 = loc_imp_apr_bucket_eos_create ();
    0x000018b2 str r4, [r0]                                      |     *(r0) = r4;
    0x000018b4 ldr r3, [r5, 8]                                   |     r3 = *((r5 + 8));
    0x000018b6 ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x000018b8 str r3, [r0, 4]                                   |     *((r0 + 4)) = r3;
    0x000018ba ldr r3, [pc, 0x3b8]                               |     r3 = *(0x1c76);
    0x000018bc ldr r2, [r5, 8]                                   |     r2 = *((r5 + 8));
    0x000018be str r0, [r2]                                      |     *(r2) = r0;
    0x000018c0 movs r2, 0                                        |     r2 = 0;
    0x000018c2 str r0, [r5, 8]                                   |     *((r5 + 8)) = r0;
    0x000018c4 mov r0, sl                                        |     r0 = sl;
    0x000018c6 ldr r6, [r1, r3]                                  |     r6 = *((r1 + r3));
    0x000018c8 mov r1, r5                                        |     r1 = r5;
    0x000018ca ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x000018cc blx 0xf8c                                         |     loc_imp_ap_scan_script_header_err_brigade_ex ();
    0x000018d0 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x000018d2 mov r4, r0                                        |     r4 = r0;
    0x000018d4 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000018d6 bne.w 0x1b08                                      |         goto label_29;
                                                                 |     }
    0x000018da ldr.w r3, [sl, 0x100]                             |     r3 = *((sl + 0x100));
    0x000018de ldr.w r7, [r3, r2, lsl 2]                         |     offset_2 = r2 << 2;
                                                                 |     r7 = *((r3 + offset_2));
    0x000018e2 ldr r1, [r7]                                      |     r1 = *(r7);
    0x000018e4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000018e6 beq.w 0x1a32                                      |         goto label_30;
                                                                 |     }
    0x000018ea ldr r3, [pc, 0x38c]                               |     
    0x000018ec ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x000018ee ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000018f0 ldr r3, [r3]                                      |     r3 = *(0x1c7a);
    0x000018f2 cmp r1, r3                                        |     
                                                                 |     if (r1 == r3) {
    0x000018f4 beq.w 0x1a32                                      |         goto label_30;
                                                                 |     }
    0x000018f8 ldr.w r0, [sl, 0xb8]                              |     r0 = *((sl + 0xb8));
    0x000018fc mov.w fp, 1                                       |     
    0x00001900 blx 0xdd0                                         |     r0 = loc_imp_apr_table_get ();
    0x00001904 mov r8, r0                                        |     r8 = r0;
    0x00001906 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001908 beq.w 0x1a1e                                      |         goto label_31;
                                                                 |     }
                                                                 | label_3:
    0x0000190c movs r1, 8                                        |     r1 = 8;
    0x0000190e ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00001912 blx 0xe6c                                         |     loc_imp_apr_palloc ();
    0x00001916 ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00001918 mov sb, r0                                        |     sb = r0;
    0x0000191a ldr.w r1, [sl, 0x108]                             |     r1 = *((sl + 0x108));
    0x0000191e cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x00001920 blt.w 0x1b38                                      |         goto label_32;
                                                                 |     }
    0x00001924 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x00001926 beq.w 0x1ba6                                      |         goto label_33;
                                                                 |     }
    0x0000192a ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000192c cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000192e beq.w 0x1b48                                      |         goto label_15;
                                                                 |     }
    0x00001932 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001934 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00001936 blt.w 0x1b48                                      |         goto label_15;
                                                                 |     }
                                                                 | label_16:
    0x0000193a ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000193c ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x0000193e cmp r3, 6                                         |     
    0x00001940 ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x00001942 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x00001944 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_9:
    0x00001946 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00001948 bne.w 0x1b80                                      |         goto label_34;
                                                                 |     }
                                                                 | label_14:
    0x0000194c ldr r1, [r7]                                      |     r1 = *(r7);
    0x0000194e cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x00001952 beq.w 0x1b76                                      |         goto label_35;
                                                                 |     }
    0x00001956 ldr.w r0, [sl, 0xb8]                              |     r0 = *((sl + 0xb8));
    0x0000195a blx 0xe3c                                         |     loc_imp_apr_table_unset ();
                                                                 | label_13:
    0x0000195e ldr r2, [r6, 8]                                   |     r2 = *((r6 + 8));
    0x00001960 movs r1, 1                                        |     r1 = 1;
    0x00001962 ldr.w r3, [sl, 0x104]                             |     r3 = *((sl + 0x104));
    0x00001966 mov r0, r5                                        |     r0 = r5;
    0x00001968 str.w r8, [sb]                                    |     __asm ("str.w r8, [sb]");
    0x0000196c str.w r1, [sb, 4]                                 |     __asm ("str.w r1, [sb, 4]");
    0x00001970 str.w sb, [r3, r2, lsl 2]                         |     __asm ("str.w sb, [r3, r2, lsl 2]");
    0x00001974 blx 0xe78                                         |     loc_imp_apr_brigade_destroy ();
    0x00001978 b 0x15ce                                          |     goto label_0;
                                                                 | label_23:
    0x0000197a ldr r3, [sp, 0x48]                                |     r3 = var_48h;
    0x0000197c ldr r1, [sp, 0x24]                                |     r1 = var_24h;
    0x0000197e ldr r2, [pc, 0x2f4]                               |     
    0x00001980 ldr r2, [r1, r2]                                  |     r2 = *((r1 + r2));
    0x00001982 ldrh r1, [r3, 0x2c]                               |     r1 = *((r3 + 0x2c));
    0x00001984 ldr r2, [r2, 8]                                   |     r2 = *(0x1c7e);
    0x00001986 str r1, [sp, 0x10]                                |     var_10h = r1;
    0x00001988 ldr r1, [pc, 0x2f0]                               |     
    0x0000198a ldr r0, [r3, 0x10]                                |     r0 = *((r3 + 0x10));
    0x0000198c movs r3, 3                                        |     r3 = 3;
    0x0000198e str r4, [sp]                                      |     *(sp) = r4;
    0x00001990 movw r4, 0x1f7                                    |     r4 = 0x1f7;
    0x00001994 add r1, pc                                        |     r1 = 0x3614;
    0x00001996 str.w sl, [sp, 4]                                 |     __asm ("str.w sl, [var_4h]");
    0x0000199a strd r1, r0, [sp, 8]                              |     __asm ("strd r1, r0, [var_8h]");
    0x0000199e movw r1, 0x231                                    |     r1 = 0x231;
    0x000019a2 ldr r0, [pc, 0x2dc]                               |     
    0x000019a4 add r0, pc                                        |     r0 = 0x362a;
    0x000019a6 blx 0xf50                                         |     loc_imp_ap_log_rerror_ ();
    0x000019aa b 0x15ce                                          |     goto label_0;
                                                                 | label_21:
    0x000019ac ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x000019ae ldr r3, [pc, 0x2c4]                               |     r3 = *(0x1c76);
    0x000019b0 ldr.w r1, [sl, 0x108]                             |     r1 = *((sl + 0x108));
    0x000019b4 ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x000019b6 ldr r2, [r3, 8]                                   |     r2 = *(0x1c7e);
    0x000019b8 cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x000019ba blt 0x1a02                                        |         goto label_36;
                                                                 |     }
    0x000019bc cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x000019be beq.w 0x1ae8                                      |         goto label_37;
                                                                 |     }
                                                                 | label_6:
    0x000019c2 ldr r3, [r1]                                      |     r3 = *(r1);
                                                                 |     if (r3 == 0) {
    0x000019c4 cbz r3, 0x1a12                                    |         goto label_38;
                                                                 |     }
    0x000019c6 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x000019c8 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x000019ca blt 0x1a12                                        |         goto label_38;
                                                                 |     }
                                                                 | label_8:
    0x000019cc cmp r3, 6                                         |     
    0x000019ce ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x000019d0 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x000019d2 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_2:
    0x000019d4 mov.w r4, -1                                      |     r4 = -1;
    0x000019d8 cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x000019da beq.w 0x15ec                                      |         goto label_1;
                                                                 |     }
    0x000019de ldr r0, [pc, 0x2a4]                               |     
    0x000019e0 movs r3, 0                                        |     r3 = 0;
    0x000019e2 ldr r4, [sp, 0x3c]                                |     r4 = var_3ch;
    0x000019e4 movw r1, 0x219                                    |     r1 = 0x219;
    0x000019e8 strd r3, sl, [sp]                                 |     __asm ("strd r3, sl, [sp]");
    0x000019ec movs r3, 7                                        |     r3 = 7;
    0x000019ee add r0, pc                                        |     r0 = 0x3678;
    0x000019f0 strd r0, r4, [sp, 8]                              |     __asm ("strd r0, r4, [var_8h]");
    0x000019f4 mov.w r4, -1                                      |     r4 = -1;
    0x000019f8 ldr r0, [pc, 0x28c]                               |     
    0x000019fa add r0, pc                                        |     r0 = 0x3686;
    0x000019fc blx 0xf50                                         |     loc_imp_ap_log_rerror_ ();
    0x00001a00 b 0x15ec                                          |     goto label_1;
                                                                 |     if (r1 == 0) {
                                                                 | label_36:
    0x00001a02 cbnz r1, 0x1a12                                   |         
    0x00001a04 ldr.w r3, [sl, 4]                                 |         r3 = *((sl + 4));
    0x00001a08 ldr r1, [r3, 0x60]                                |         r1 = *((r3 + 0x60));
                                                                 |         if (r1 != 0) {
    0x00001a0a cbnz r1, 0x1a12                                   |             goto label_38;
                                                                 |         }
    0x00001a0c ldr.w r1, [sl, 8]                                 |         r1 = *((sl + 8));
                                                                 | label_7:
    0x00001a10 adds r1, 0x10                                     |         r1 += 0x10;
                                                                 |     }
                                                                 | label_38:
    0x00001a12 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00001a14 cmp r3, 6                                         |     
    0x00001a16 ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x00001a18 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x00001a1a movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00001a1c b 0x19d4                                          |     goto label_2;
                                                                 | label_31:
    0x00001a1e ldr r1, [r7]                                      |     r1 = *(r7);
    0x00001a20 mov fp, r4                                        |     
    0x00001a22 ldr.w r0, [sl, 0xb4]                              |     r0 = *((sl + 0xb4));
    0x00001a26 blx 0xdd0                                         |     r0 = loc_imp_apr_table_get ();
    0x00001a2a mov r8, r0                                        |     r8 = r0;
    0x00001a2c cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00001a2e bne.w 0x190c                                      |         goto label_3;
                                                                 |     }
                                                                 | label_30:
    0x00001a32 ldr.w r3, [sl, 0x44]                              |     r3 = *((sl + 0x44));
    0x00001a36 cmp r3, 0xc8                                      |     
                                                                 |     if (r3 == 0xc8) {
    0x00001a38 bne 0x1a6e                                        |         
    0x00001a3a ldr.w r8, [r7, 4]                                 |         r8 = *((r7 + 4));
    0x00001a3e cmp.w r8, 0                                       |         
                                                                 |         if (r8 == 0) {
    0x00001a42 beq.w 0x1b6a                                      |             goto label_39;
                                                                 |         }
    0x00001a46 ldr r3, [pc, 0x244]                               |         
    0x00001a48 ldr r2, [sp, 0x24]                                |         r2 = var_24h;
    0x00001a4a ldr r3, [r2, r3]                                  |         r3 = *((r2 + r3));
    0x00001a4c ldr r3, [r3]                                      |         r3 = *(0x1c8e);
    0x00001a4e cmp r8, r3                                        |         
                                                                 |         if (r8 == r3) {
    0x00001a50 beq 0x1a6e                                        |             goto label_10;
                                                                 |         }
                                                                 | label_12:
    0x00001a52 ldr.w r0, [sl, 0xb8]                              |         r0 = *((sl + 0xb8));
    0x00001a56 mov r1, r8                                        |         r1 = r8;
    0x00001a58 blx 0xdd0                                         |         loc_imp_apr_table_get ();
    0x00001a5c mov.w fp, 1                                       |         
    0x00001a60 mov r7, r0                                        |         r7 = r0;
    0x00001a62 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x00001a64 beq 0x1b54                                        |             goto label_40;
                                                                 |         }
                                                                 | label_11:
    0x00001a66 ldrb r3, [r7]                                     |         r3 = *(r7);
    0x00001a68 cmp r3, 0x2f                                      |         
                                                                 |         if (r3 == 0x2f) {
    0x00001a6a beq.w 0x1bbe                                      |             goto label_41;
                                                                 |         }
                                                                 |     }
                                                                 | label_10:
    0x00001a6e ldr.w r0, [sl, 0x114]                             |     r0 = *((sl + 0x114));
    0x00001a72 mov r1, r5                                        |     r1 = r5;
    0x00001a74 blx 0xf98                                         |     r0 = loc_imp_ap_pass_brigade ();
    0x00001a78 subs r4, r0, 0                                    |     r4 = r0 - 0;
    0x00001a7a it ne                                             |     
                                                                 |     if (r4 == r0) {
    0x00001a7c mvnne r4, 0x65                                    |         r4 = ~0x65;
                                                                 |     }
    0x00001a80 b 0x15ce                                          |     goto label_0;
                                                                 | label_28:
    0x00001a82 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00001a86 mov.w r1, 0x2000                                  |     r1 = 0x2000;
    0x00001a8a blx 0xe6c                                         |     r0 = loc_imp_apr_palloc ();
    0x00001a8e mov r4, r0                                        |     r4 = r0;
    0x00001a90 b 0x1a9e                                          |     
                                                                 |     while (r2 > r0) {
    0x00001a92 mov r3, sl                                        |         r3 = sl;
    0x00001a94 mov r1, r4                                        |         r1 = r4;
    0x00001a96 mov r0, r5                                        |         r0 = r5;
    0x00001a98 bl 0x14a4                                         |         r0 = fcn_000014a4 (r0, r1, r2, r3);
                                                                 |         if (r0 != 0) {
    0x00001a9c cbnz r0, 0x1ae2                                   |             goto label_42;
                                                                 |         }
    0x00001a9e mov.w r2, 0x2000                                  |         r2 = 0x2000;
    0x00001aa2 mov r1, r4                                        |         r1 = r4;
    0x00001aa4 mov r0, sl                                        |         r0 = sl;
    0x00001aa6 blx 0xe84                                         |         r0 = loc_imp_ap_get_client_block ();
    0x00001aaa subs r2, r0, 0                                    |         r2 = r0 - 0;
    0x00001aac bgt 0x1a92                                        |         
                                                                 |     }
    0x00001aae adds r2, 1                                        |     r2++;
                                                                 |     if (r2 != 1) {
    0x00001ab0 bne.w 0x1836                                      |         goto label_4;
                                                                 |     }
    0x00001ab4 ldr r0, [sp, 0x24]                                |     r0 = var_24h;
    0x00001ab6 movs r1, 0                                        |     r1 = 0;
    0x00001ab8 ldr r2, [pc, 0x1b8]                               |     
    0x00001aba mov.w r4, 0x1f4                                   |     r4 = 0x1f4;
    0x00001abe ldr r3, [pc, 0x1d0]                               |     
    0x00001ac0 ldr r2, [r0, r2]                                  |     r2 = *((r0 + r2));
    0x00001ac2 ldr r0, [pc, 0x1d0]                               |     
    0x00001ac4 add r3, pc                                        |     r3 = 0x375a;
    0x00001ac6 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00001ac8 movs r3, 3                                        |     r3 = 3;
    0x00001aca strd r1, sl, [sp]                                 |     __asm ("strd r1, sl, [sp]");
    0x00001ace mov.w r1, 0x15c                                   |     r1 = 0x15c;
    0x00001ad2 ldr r2, [r2, 8]                                   |     r2 = *(0x1c7c);
    0x00001ad4 add r0, pc                                        |     r0 = 0x376e;
    0x00001ad6 blx 0xf50                                         |     loc_imp_ap_log_rerror_ ();
    0x00001ada b 0x15ce                                          |     goto label_0;
                                                                 | label_24:
    0x00001adc movs r3, 0x16                                     |     r3 = 0x16;
    0x00001ade mov r6, r3                                        |     r6 = r3;
    0x00001ae0 b 0x16f2                                          |     goto label_5;
                                                                 | label_42:
    0x00001ae2 movw r4, 0x1f7                                    |     r4 = 0x1f7;
    0x00001ae6 b 0x15ce                                          |     goto label_0;
                                                                 | label_37:
    0x00001ae8 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00001aec ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
    0x00001aee cmp r1, 0                                         |     
                                                                 |     if (r1 != 0) {
    0x00001af0 bne.w 0x19c2                                      |         goto label_6;
                                                                 |     }
    0x00001af4 ldr.w r1, [sl, 8]                                 |     r1 = *((sl + 8));
    0x00001af8 ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
    0x00001afa cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x00001afc beq 0x1a10                                        |         goto label_7;
                                                                 |     }
    0x00001afe ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00001b00 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00001b02 bge.w 0x19cc                                      |         goto label_8;
                                                                 |     }
    0x00001b06 b 0x1a10                                          |     goto label_7;
                                                                 | label_29:
    0x00001b08 ldrh r3, [r7, 0x2c]                               |     r3 = *((r7 + 0x2c));
    0x00001b0a movs r6, 0                                        |     r6 = 0;
    0x00001b0c ldr r0, [pc, 0x188]                               |     
    0x00001b0e movw r1, 0x17f                                    |     r1 = 0x17f;
    0x00001b12 str r3, [sp, 0x10]                                |     var_10h = r3;
    0x00001b14 ldr r3, [r7, 0x10]                                |     r3 = *((r7 + 0x10));
    0x00001b16 add r0, pc                                        |     r0 = 0x37b2;
    0x00001b18 str.w sl, [sp, 4]                                 |     __asm ("str.w sl, [var_4h]");
    0x00001b1c str r6, [sp]                                      |     *(sp) = r6;
    0x00001b1e str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00001b20 ldr r3, [pc, 0x178]                               |     
    0x00001b22 add r3, pc                                        |     r3 = 0x37c2;
    0x00001b24 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00001b26 movs r3, 3                                        |     r3 = 3;
    0x00001b28 blx 0xf50                                         |     loc_imp_ap_log_rerror_ ();
    0x00001b2c mov r0, r5                                        |     r0 = r5;
    0x00001b2e str.w r6, [sl, 0x40]                              |     __asm ("str.w r6, [sl, 0x40]");
    0x00001b32 blx 0xe78                                         |     loc_imp_apr_brigade_destroy ();
    0x00001b36 b 0x15ce                                          |     goto label_0;
                                                                 |     if (r1 == 0) {
                                                                 | label_32:
    0x00001b38 cbnz r1, 0x1b48                                   |         
    0x00001b3a ldr.w r3, [sl, 4]                                 |         r3 = *((sl + 4));
                                                                 | label_17:
    0x00001b3e ldr r1, [r3, 0x60]                                |         r1 = *((r3 + 0x60));
                                                                 |         if (r1 != 0) {
    0x00001b40 cbnz r1, 0x1b48                                   |             goto label_15;
                                                                 |         }
    0x00001b42 ldr.w r1, [sl, 8]                                 |         r1 = *((sl + 8));
                                                                 | label_18:
    0x00001b46 adds r1, 0x10                                     |         r1 += 0x10;
                                                                 |     }
                                                                 | label_15:
    0x00001b48 ldr r3, [r1, 4]                                   |     r3 = *((r1 + 4));
    0x00001b4a cmp r3, 6                                         |     
    0x00001b4c ite le                                            |     
                                                                 |     if (r3 > 6) {
    0x00001b4e movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 6) {
    0x00001b50 movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x00001b52 b 0x1946                                          |     goto label_9;
                                                                 | label_40:
    0x00001b54 ldr.w r0, [sl, 0xb4]                              |     r0 = *((sl + 0xb4));
    0x00001b58 mov r1, r8                                        |     r1 = r8;
    0x00001b5a blx 0xdd0                                         |     loc_imp_apr_table_get ();
    0x00001b5e mov.w fp, 0                                       |     
    0x00001b62 mov r7, r0                                        |     r7 = r0;
    0x00001b64 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001b66 beq 0x1a6e                                        |         goto label_10;
                                                                 |     }
    0x00001b68 b 0x1a66                                          |     goto label_11;
                                                                 | label_39:
    0x00001b6a ldr r3, [pc, 0x134]                               |     r3 = *(0x1ca2);
    0x00001b6c ldr r2, [sp, 0x24]                                |     r2 = var_24h;
    0x00001b6e ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x00001b70 ldr.w r8, [r3]                                    |     r8 = *(0x1ca2);
    0x00001b74 b 0x1a52                                          |     goto label_12;
                                                                 | label_35:
    0x00001b76 ldr.w r0, [sl, 0xb4]                              |     r0 = *((sl + 0xb4));
    0x00001b7a blx 0xe3c                                         |     loc_imp_apr_table_unset ();
    0x00001b7e b 0x195e                                          |     goto label_13;
                                                                 | label_34:
    0x00001b80 str.w r8, [sp, 0x10]                              |     __asm ("str.w r8, [var_10h]");
    0x00001b84 movw r1, 0x193                                    |     r1 = 0x193;
    0x00001b88 ldr r3, [r7]                                      |     r3 = *(r7);
    0x00001b8a ldr r0, [pc, 0x118]                               |     
    0x00001b8c str.w sl, [sp, 4]                                 |     __asm ("str.w sl, [var_4h]");
    0x00001b90 str r3, [sp, 0xc]                                 |     var_ch = r3;
    0x00001b92 ldr r3, [pc, 0x114]                               |     
    0x00001b94 add r0, pc                                        |     r0 = 0x383e;
    0x00001b96 add r3, pc                                        |     r3 = 0x3844;
    0x00001b98 str r3, [sp, 8]                                   |     var_8h = r3;
    0x00001b9a movs r3, 0                                        |     r3 = 0;
    0x00001b9c str r3, [sp]                                      |     *(sp) = r3;
    0x00001b9e movs r3, 7                                        |     r3 = 7;
    0x00001ba0 blx 0xf50                                         |     loc_imp_ap_log_rerror_ ();
    0x00001ba4 b 0x194c                                          |     goto label_14;
                                                                 | label_33:
    0x00001ba6 ldr.w r3, [sl, 4]                                 |     r3 = *((sl + 4));
    0x00001baa ldr r1, [r3, 0x60]                                |     r1 = *((r3 + 0x60));
                                                                 |     if (r1 == 0) {
    0x00001bac cbz r1, 0x1c10                                    |         goto label_43;
                                                                 |     }
    0x00001bae ldr r0, [r1]                                      |     r0 = *(r1);
    0x00001bb0 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001bb2 beq 0x1b48                                        |         goto label_15;
                                                                 |     }
    0x00001bb4 ldrsb r0, [r0, r2]                                |     r0 = *((r0 + r2));
    0x00001bb6 cmp r0, 0                                         |     
                                                                 |     if (r0 >= 0) {
    0x00001bb8 bge.w 0x193a                                      |         goto label_16;
                                                                 |     }
    0x00001bbc b 0x1b3e                                          |     goto label_17;
                                                                 | label_41:
    0x00001bbe movs r1, 8                                        |     r1 = 8;
    0x00001bc0 ldr.w r0, [sl]                                    |     r0 = *(sl);
    0x00001bc4 blx 0xe6c                                         |     loc_imp_apr_palloc ();
    0x00001bc8 ldr r1, [pc, 0xe0]                                |     
    0x00001bca mov sb, r0                                        |     sb = r0;
    0x00001bcc mov r0, r8                                        |     r0 = r8;
    0x00001bce add r1, pc                                        |     r1 = 0x387e;
    0x00001bd0 blx 0xfbc                                         |     r0 = loc_imp_ap_cstr_casecmp ();
                                                                 |     if (r0 == 0) {
    0x00001bd4 cbz r0, 0x1be6                                    |         goto label_44;
                                                                 |     }
    0x00001bd6 mov r1, r8                                        |     r1 = r8;
    0x00001bd8 cmp.w fp, 0                                       |     
                                                                 |     if (fp == 0) {
    0x00001bdc beq 0x1c06                                        |         goto label_45;
                                                                 |     }
    0x00001bde ldr.w r0, [sl, 0xb8]                              |     r0 = *((sl + 0xb8));
    0x00001be2 blx 0xe3c                                         |     loc_imp_apr_table_unset ();
                                                                 |     do {
                                                                 | label_44:
    0x00001be6 ldr r2, [r6, 8]                                   |         r2 = *((r6 + 8));
    0x00001be8 movs r1, 0                                        |         r1 = 0;
    0x00001bea ldr.w r3, [sl, 0x104]                             |         r3 = *((sl + 0x104));
    0x00001bee mov r0, r5                                        |         r0 = r5;
    0x00001bf0 str.w r7, [sb]                                    |         __asm ("str.w r7, [sb]");
    0x00001bf4 str.w r1, [sb, 4]                                 |         __asm ("str.w r1, [sb, 4]");
    0x00001bf8 str.w sb, [r3, r2, lsl 2]                         |         __asm ("str.w sb, [r3, r2, lsl 2]");
    0x00001bfc blx 0xe78                                         |         loc_imp_apr_brigade_destroy ();
    0x00001c00 b 0x15ce                                          |         goto label_0;
                                                                 | label_22:
    0x00001c02 blx 0xe00                                         |         stack_chk_fail ();
                                                                 | label_45:
    0x00001c06 ldr.w r0, [sl, 0xb4]                              |         r0 = *((sl + 0xb4));
    0x00001c0a blx 0xe3c                                         |         loc_imp_apr_table_unset ();
    0x00001c0e b 0x1be6                                          |         
                                                                 |     } while (1);
                                                                 | label_43:
    0x00001c10 ldr.w r1, [sl, 8]                                 |     r1 = *((sl + 8));
    0x00001c14 ldr r0, [r1, 0x10]                                |     r0 = *((r1 + 0x10));
    0x00001c16 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00001c18 beq 0x1b46                                        |         goto label_18;
                                                                 |     }
    0x00001c1a ldrsb r0, [r0, r2]                                |     r0 = *((r0 + r2));
    0x00001c1c cmp r0, 0                                         |     
                                                                 |     if (r0 < 0) {
    0x00001c1e blt 0x1b3e                                        |         goto label_17;
                                                                 |     }
    0x00001c20 adds r1, 0x10                                     |     r1 += 0x10;
    0x00001c22 b 0x193a                                          |     goto label_16;
                                                                 | }

[*] Function sprintf used 3 times mod_proxy_scgi.so