[*] Binary protection state of mod_proxy.so

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


[*] Function strcat tear down of mod_proxy.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.so @ 0xec88 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) sym.ap_proxy_define_balancer ()                      | void ap_proxy_define_balancer (int16_t arg_28h, int16_t arg_80h, int16_t arg_90h, int16_t arg_b5h, int16_t arg_c0h, int16_t arg_115h, int16_t arg_210h, int16_t arg_214h, int16_t arg_218h, int16_t arg_40h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
                                                                 |     r3 = arg4;
                                                                 |     do {
    0x00004674 invalid                                           |         void (*0x4678)() ();
    0x0000ec88 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |         
    0x0000ec8c mov r7, r2                                        |         r7 = r2;
    0x0000ec8e ldr r2, [pc, 0x258]                               |         
    0x0000ec90 mov r6, r1                                        |         r6 = r1;
    0x0000ec92 mov r1, r3                                        |         r1 = r3;
    0x0000ec94 sub sp, 0x1c                                      |         
    0x0000ec96 ldr r3, [pc, 0x254]                               |         r3 = *(0xeeee);
    0x0000ec98 mov r4, r0                                        |         r4 = r0;
    0x0000ec9a add r2, pc                                        |         r2 = 0x1db88;
    0x0000ec9c ldrd sb, r8, [sp, 0x40]                           |         __asm ("ldrd sb, r8, [arg_40h]");
    0x0000eca0 ldr r3, [r2, r3]                                  |         
    0x0000eca2 ldr r3, [r3]                                      |         r3 = *(0x1db88);
    0x0000eca4 str r3, [sp, 0x14]                                |         var_14h = r3;
    0x0000eca6 mov.w r3, 0                                       |         r3 = 0;
    0x0000ecaa blx 0x45e8                                        |         fcn_000045e8 ();
    0x0000ecae movs r1, 0x3a                                     |         r1 = 0x3a;
    0x0000ecb0 mov r5, r0                                        |         r5 = r0;
    0x0000ecb2 blx 0x4600                                        |         r0 = fcn_00004600 ();
                                                                 |         if (r0 != 0) {
    0x0000ecb6 cbz r0, 0xecbe                                    |             
    0x0000ecb8 ldrb r3, [r0, 1]                                  |             r3 = *((r0 + 1));
    0x0000ecba cmp r3, 0x2f                                      |             
                                                                 |             if (r3 == 0x2f) {
    0x0000ecbc beq 0xece6                                        |                 goto label_4;
                                                                 |             }
                                                                 |         }
                                                                 | label_0:
    0x0000ecbe ldr r2, [pc, 0x230]                               |         
    0x0000ecc0 ldr r3, [pc, 0x228]                               |         r3 = *(0xeeec);
    0x0000ecc2 add r2, pc                                        |         r2 = 0x1dbb8;
    0x0000ecc4 ldr r3, [r2, r3]                                  |         r3 = *(0x1dbb8);
    0x0000ecc6 ldr r2, [r3]                                      |         r2 = *(0x1dbb8);
    0x0000ecc8 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0000ecca eors r2, r3                                       |         r2 ^= r3;
    0x0000eccc mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000ecd0 bne.w 0xeee4                                      |             goto label_5;
                                                                 |         }
    0x0000ecd4 ldr r1, [pc, 0x21c]                               |         
    0x0000ecd6 add r1, pc                                        |         r1 = 0x1dbce;
                                                                 | label_1:
    0x0000ecd8 mov r2, r5                                        |         r2 = r5;
    0x0000ecda mov r0, r4                                        |         r0 = r4;
    0x0000ecdc add sp, 0x1c                                      |         
    0x0000ecde pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}        |         
    0x0000ece2 b.w 0x4674                                        |         
                                                                 |     } while (1);
                                                                 | label_4:
    0x0000ece6 ldrb r1, [r0, 2]                                  |     r1 = *((r0 + 2));
    0x0000ece8 cmp r1, 0x2f                                      |     
                                                                 |     if (r1 != 0x2f) {
    0x0000ecea bne 0xecbe                                        |         goto label_0;
                                                                 |     }
    0x0000ecec ldrb r3, [r0, 3]                                  |     r3 = *((r0 + 3));
    0x0000ecee cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000ecf0 beq 0xecbe                                        |         goto label_0;
                                                                 |     }
    0x0000ecf2 adds r0, 3                                        |     r0 += 3;
    0x0000ecf4 blx 0x4600                                        |     r0 = fcn_00004600 ();
                                                                 |     if (r0 != 0) {
    0x0000ecf8 cbz r0, 0xecfe                                    |         
    0x0000ecfa movs r3, 0                                        |         r3 = 0;
    0x0000ecfc strb r3, [r0]                                     |         *(r0) = r3;
                                                                 |     }
    0x0000ecfe mov r0, r5                                        |     r0 = r5;
    0x0000ed00 ldr.w sl, [pc, 0x1f4]                             |     
    0x0000ed04 blx 0x485c                                        |     loc_imp_ap_save_brigade ();
    0x0000ed08 ldr r0, [r7, 0x18]                                |     r0 = *((r7 + 0x18));
    0x0000ed0a blx 0x4838                                        |     loc_imp_ap_str_tolower ();
    0x0000ed0e movs r2, 0x50                                     |     r2 = 0x50;
    0x0000ed10 movs r1, 0                                        |     r1 = 0;
    0x0000ed12 str r0, [r6]                                      |     *(r6) = r0;
    0x0000ed14 add sl, pc                                        |     sl = 0x1dc10;
    0x0000ed16 blx 0x472c                                        |     fcn_0000472c ();
    0x0000ed1a ldr r2, [pc, 0x1e0]                               |     
    0x0000ed1c mov r1, sl                                        |     r1 = sl;
    0x0000ed1e ldr r0, [pc, 0x1e0]                               |     
    0x0000ed20 add r2, pc                                        |     r2 = 0x1dc22;
    0x0000ed22 add r0, pc                                        |     r0 = 0x1dc28;
    0x0000ed24 blx 0x446c                                        |     loc_imp_apr_pstrcatv ()
    0x0000ed28 ldr.w fp, [r6]                                    |     fp = *(r6);
    0x0000ed2c movs r2, 4                                        |     r2 = 4;
    0x0000ed2e movs r1, 5                                        |     r1 = 5;
    0x0000ed30 str.w r0, [fp, 0x28]                              |     __asm ("str.w r0, [arg_28h]");
    0x0000ed34 mov r0, r4                                        |     r0 = r4;
    0x0000ed36 blx 0x4034                                        |     loc_imp_apr_array_make ();
    0x0000ed3a ldr r3, [r6]                                      |     r3 = *(r6);
    0x0000ed3c str.w r0, [fp]                                    |     __asm ("str.w r0, [fp]");
    0x0000ed40 mov.w fp, 0                                       |     
    0x0000ed44 strd fp, fp, [r3, 0x2c]                           |     __asm ("strd fp, fp, [r3, 0x2c]");
    0x0000ed48 cmp.w r8, 0                                       |     
                                                                 |     if (r8 != 0) {
    0x0000ed4c beq 0xee3c                                        |         
    0x0000ed4e mov.w r0, 0x220                                   |         r0 = 0x220;
    0x0000ed52 blx 0x46b4                                        |         fcn_000046b4 ();
    0x0000ed56 mov r1, fp                                        |         r1 = fp;
    0x0000ed58 mov r8, r0                                        |         r8 = r0;
    0x0000ed5a mov.w r2, 0x220                                   |         r2 = 0x220;
    0x0000ed5e mov fp, r8                                        |         
    0x0000ed60 blx 0x472c                                        |         fcn_0000472c ();
    0x0000ed64 ldrb.w r3, [r8, 0x218]                            |         r3 = *((r8 + 0x218));
    0x0000ed68 mov r1, sl                                        |         r1 = sl;
    0x0000ed6a movs r2, 0x10                                     |         r2 = 0x10;
    0x0000ed6c add.w r0, r8, 0x80                                |         r0 = r8 + 0x80;
    0x0000ed70 add.w sl, r8, 0xb5                                |         sl = r8 + 0xb5;
    0x0000ed74 orr r3, r3, 8                                     |         r3 |= 8;
    0x0000ed78 strb.w r3, [r8, 0x218]                            |         *((r8 + 0x218)) = r3;
    0x0000ed7c blx 0x47f0                                        |         loc_imp_ap_hook_fixups ();
    0x0000ed80 movs r2, 0x60                                     |         r2 = 0x60;
    0x0000ed82 mov r1, r5                                        |         r1 = r5;
    0x0000ed84 mov r0, sl                                        |         r0 = sl;
    0x0000ed86 blx 0x47f0                                        |         r0 = loc_imp_ap_hook_fixups ();
    0x0000ed8a cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000ed8c bne 0xee88                                        |             goto label_6;
                                                                 |         }
    0x0000ed8e ldr.w ip, [r6]                                    |         ip = *(r6);
    0x0000ed92 add r2, sp, 0x10                                  |         r2 += var_10h;
    0x0000ed94 add.w r1, r8, 0xc0                                |         r1 = r8 + 0xc0;
    0x0000ed98 str r0, [sp, 0xc]                                 |         var_ch = r0;
    0x0000ed9a mov r0, r4                                        |         r0 = r4;
    0x0000ed9c ldrb.w r5, [ip, 0x44]                             |         r5 = *((ip + 0x44));
    0x0000eda0 orr r5, r5, 4                                     |         r5 |= 4;
    0x0000eda4 strb.w r5, [ip, 0x44]                             |         *((ip + 0x44)) = r5;
    0x0000eda8 blx 0x4874                                        |         loc_imp_ap_get_server_port ();
    0x0000edac ldr r3, [sp, 0xc]                                 |         r3 = var_ch;
    0x0000edae mov r0, r4                                        |         r0 = r4;
    0x0000edb0 ldr r2, [pc, 0x150]                               |         
    0x0000edb2 str r3, [sp]                                      |         *(sp) = r3;
    0x0000edb4 ldr r1, [r7, 0x28]                                |         r1 = *((r7 + 0x28));
    0x0000edb6 add r2, pc                                        |         r2 = 0x1dcbe;
    0x0000edb8 ldr r3, [sp, 0x10]                                |         r3 = var_10h;
    0x0000edba blx 0x4910                                        |         fcn_00004910 ();
    0x0000edbe movs r2, 0x60                                     |         r2 = 0x60;
    0x0000edc0 mov r1, r0                                        |         r1 = r0;
    0x0000edc2 str r0, [sp, 0x10]                                |         var_10h = r0;
    0x0000edc4 addw r0, r8, 0x115                                |         __asm ("addw r0, r8, aav.0x000000ff");
    0x0000edc8 blx 0x47f0                                        |         r0 = loc_imp_ap_hook_fixups ();
    0x0000edcc cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000edce bne.w 0xeedc                                      |             goto label_7;
                                                                 |         }
                                                                 | label_2:
    0x0000edd2 movs r1, 0                                        |         r1 = 0;
    0x0000edd4 mov r0, sl                                        |         r0 = sl;
    0x0000edd6 blx 0x4064                                        |         fcn_00004064 ();
    0x0000edda movs r1, 2                                        |         r1 = 2;
    0x0000eddc str.w r0, [fp, 0x210]                             |         __asm ("str.w r0, [arg_210h]");
    0x0000ede0 mov r0, sl                                        |         r0 = sl;
    0x0000ede2 blx 0x4064                                        |         fcn_00004064 ();
    0x0000ede6 ldr r5, [r6]                                      |         r5 = *(r6);
    0x0000ede8 add.w r3, fp, 0x210                               |         r3 += arg_210h;
    0x0000edec str.w r0, [fp, 0x214]                             |         __asm ("str.w r0, [arg_214h]");
    0x0000edf0 movs r6, 0xa                                      |         r6 = 0xa;
    0x0000edf2 ldm.w r3, {r0, r1}                                |         r0 = *(r3);
                                                                 |         r1 = *((r3 + 4));
    0x0000edf6 mov r2, sb                                        |         r2 = sb;
    0x0000edf8 add.w r3, r5, 0x18                                |         r3 = r5 + 0x18;
    0x0000edfc stm.w r3, {r0, r1}                                |         *(r3) = r0;
                                                                 |         *((r3 + 4)) = r1;
    0x0000ee00 mov r0, r4                                        |         r0 = r4;
    0x0000ee02 ldrh.w r3, [fp, 0x218]                            |         r3 = *(arg_218h);
    0x0000ee06 mov r1, r5                                        |         r1 = r5;
    0x0000ee08 strb.w r6, [fp, 0x90]                             |         *(arg_90h) = r6;
    0x0000ee0c and r3, r3, 0x7f                                  |         r3 &= 0x7f;
    0x0000ee10 orr r3, r3, 0x2e80                                |         r3 |= 0x2e80;
    0x0000ee14 strh.w r3, [fp, 0x218]                            |         *(arg_218h) = r3;
    0x0000ee16 adds r2, 0x18                                     |         r2 += 0x18;
    0x0000ee18 str.w fp, [r5, 0x3c]                              |         __asm ("str.w fp, [r5, 0x3c]");
    0x0000ee1c str r7, [r5, 0x34]                                |         *((r5 + 0x34)) = r7;
    0x0000ee1e blx 0x4a58                                        |         fcn_00004a58 ();
                                                                 | label_3:
    0x0000ee22 ldr r2, [pc, 0xe4]                                |         
    0x0000ee24 ldr r3, [pc, 0xc4]                                |         r3 = *(0xeeec);
    0x0000ee26 add r2, pc                                        |         r2 = 0x1dd34;
    0x0000ee28 ldr r3, [r2, r3]                                  |         r3 = *(0x1dd34);
    0x0000ee2a ldr r2, [r3]                                      |         r2 = *(0x1dd34);
    0x0000ee2c ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0000ee2e eors r2, r3                                       |         r2 ^= r3;
    0x0000ee30 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000ee34 bne 0xeee4                                        |             goto label_5;
                                                                 |         }
    0x0000ee36 add sp, 0x1c                                      |         
    0x0000ee38 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x0000ee3c mov.w r1, 0x220                                   |     r1 = 0x220;
    0x0000ee40 mov r0, r4                                        |     r0 = r4;
    0x0000ee42 blx 0x4418                                        |     loc_imp_apr_poll ();
    0x0000ee46 mov.w r2, 0x220                                   |     r2 = 0x220;
    0x0000ee4a mov fp, r0                                        |     
    0x0000ee4c mov r1, r8                                        |     r1 = r8;
    0x0000ee4e blx 0x472c                                        |     fcn_0000472c ();
    0x0000ee52 mov r1, sl                                        |     r1 = sl;
    0x0000ee54 movs r2, 0x10                                     |     r2 = 0x10;
    0x0000ee56 add.w r0, fp, 0x80                                |     r0 += arg_80h;
    0x0000ee5a add.w sl, fp, 0xb5                                |     sl += arg_b5h;
    0x0000ee5e blx 0x47f0                                        |     loc_imp_ap_hook_fixups ();
    0x0000ee62 movs r2, 0x60                                     |     r2 = 0x60;
    0x0000ee64 mov r1, r5                                        |     r1 = r5;
    0x0000ee66 mov r0, sl                                        |     r0 = sl;
    0x0000ee68 blx 0x47f0                                        |     r0 = loc_imp_ap_hook_fixups ();
                                                                 |     if (r0 == 0) {
    0x0000ee6c cbz r0, 0xee90                                    |         goto label_8;
                                                                 |     }
                                                                 |     do {
    0x0000ee6e ldr r2, [pc, 0x9c]                                |         
    0x0000ee70 ldr r3, [pc, 0x78]                                |         r3 = *(0xeeec);
    0x0000ee72 add r2, pc                                        |         r2 = 0x1dd84;
    0x0000ee74 ldr r3, [r2, r3]                                  |         r3 = *(0x1dd84);
    0x0000ee76 ldr r2, [r3]                                      |         r2 = *(0x1dd84);
    0x0000ee78 ldr r3, [sp, 0x14]                                |         r3 = var_14h;
    0x0000ee7a eors r2, r3                                       |         r2 ^= r3;
    0x0000ee7c mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000ee80 bne 0xeee4                                        |             goto label_5;
                                                                 |         }
    0x0000ee82 ldr r1, [pc, 0x8c]                                |         
    0x0000ee84 add r1, pc                                        |         r1 = 0x1dd9a;
    0x0000ee86 b 0xecd8                                          |         goto label_1;
                                                                 | label_6:
    0x0000ee88 mov r0, r8                                        |         r0 = r8;
    0x0000ee8a blx 0x41f0                                        |         free (r0);
    0x0000ee8e b 0xee6e                                          |         
                                                                 |     } while (1);
                                                                 | label_8:
    0x0000ee90 ldr r5, [r6]                                      |     r5 = *(r6);
    0x0000ee92 add r2, sp, 0x10                                  |     r2 += var_10h;
    0x0000ee94 add.w r1, fp, 0xc0                                |     r1 += arg_c0h;
    0x0000ee98 mov r0, r4                                        |     r0 = r4;
    0x0000ee9a ldrb.w r3, [r5, 0x44]                             |     r3 = *((r5 + 0x44));
    0x0000ee9e orr r3, r3, 4                                     |     r3 |= 4;
    0x0000eea2 strb.w r3, [r5, 0x44]                             |     *((r5 + 0x44)) = r3;
    0x0000eea6 blx 0x4874                                        |     loc_imp_ap_get_server_port ();
    0x0000eeaa ldr r2, [pc, 0x68]                                |     
    0x0000eeac mov r0, r4                                        |     r0 = r4;
    0x0000eeae str.w r8, [sp]                                    |     __asm ("str.w r8, [sp]");
    0x0000eeb2 ldr r1, [r7, 0x28]                                |     r1 = *((r7 + 0x28));
    0x0000eeb4 add r2, pc                                        |     r2 = 0x1ddce;
    0x0000eeb6 ldr r3, [sp, 0x10]                                |     r3 = var_10h;
    0x0000eeb8 blx 0x4910                                        |     fcn_00004910 ();
    0x0000eebc movs r2, 0x60                                     |     r2 = 0x60;
    0x0000eebe mov r1, r0                                        |     r1 = r0;
    0x0000eec0 str r0, [sp, 0x10]                                |     var_10h = r0;
    0x0000eec2 addw r0, fp, 0x115                                |     __asm ("addw r0, arg_115h");
    0x0000eec6 blx 0x47f0                                        |     r0 = loc_imp_ap_hook_fixups ();
    0x0000eeca cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000eecc beq 0xedd2                                        |         goto label_2;
                                                                 |     }
                                                                 |     do {
    0x0000eece ldr r1, [pc, 0x48]                                |         
    0x0000eed0 mov r0, r4                                        |         r0 = r4;
    0x0000eed2 ldr r2, [sp, 0x10]                                |         r2 = var_10h;
    0x0000eed4 add r1, pc                                        |         r1 = 0x1ddf2;
    0x0000eed6 blx 0x4678                                        |         fcn_00004678 ();
    0x0000eeda b 0xee22                                          |         goto label_3;
                                                                 | label_7:
    0x0000eedc mov r0, r8                                        |         r0 = r8;
    0x0000eede blx 0x41f0                                        |         free (r0);
    0x0000eee2 b 0xeece                                          |         
                                                                 |     } while (1);
                                                                 | label_5:
    0x0000eee4 blx 0x42fc                                        |     fcn_000042fc ();
    0x0000eee8 ldrh r6, [r0, 0x3a]                               |     r6 = *((r0 + 0x3a));
    0x0000eeea movs r1, r0                                       |     r1 = r0;
    0x0000eeec lsls r4, r4, 0xf                                  |     r4 <<= 0xf;
    0x0000eeee movs r0, r0                                       |     
    0x0000eef0 ldrh r6, [r3, 0x38]                               |     r6 = *((r3 + 0x38));
    0x0000eef2 movs r1, r0                                       |     r1 = r0;
    0x0000eef4 ldrb r6, [r7, 0xe]                                |     r6 = *((r7 + 0xe));
    0x0000eef6 movs r0, r0                                       |     
    0x0000eef8 ldrb r4, [r4, 0xe]                                |     r4 = *((r4 + 0xe));
    0x0000eefa movs r0, r0                                       |     
    0x0000eefc subs r7, 0x98                                     |     r7 -= 0x98;
    0x0000eefe movs r0, r0                                       |     
    0x0000ef00 ldr r1, [pc, 0x388]                               |     r1 = *(0xf28c);
    0x0000ef02 movs r0, r0                                       |     
    0x0000ef04 ldrb r6, [r1, 0xd]                                |     r6 = *((r1 + 0xd));
    0x0000ef06 movs r0, r0                                       |     
    0x0000ef08 ldrh r2, [r7, 0x2c]                               |     r2 = *((r7 + 0x2c));
    0x0000ef0a movs r1, r0                                       |     r1 = r0;
    0x0000ef0c ldrh r6, [r5, 0x2a]                               |     r6 = *((r5 + 0x2a));
    0x0000ef0e movs r1, r0                                       |     r1 = r0;
    0x0000ef10 ldrb r0, [r0, 9]                                  |     r0 = *((r0 + 9));
    0x0000ef12 movs r0, r0                                       |     
    0x0000ef14 ldrb r0, [r2, 9]                                  |     r0 = *((r2 + 9));
    0x0000ef16 movs r0, r0                                       |     
    0x0000ef18 ldrb r4, [r1, 8]                                  |     r4 = *((r1 + 8));
    0x0000ef1a movs r0, r0                                       |     
                                                                 | }
    ; 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.so @ 0xc6ac */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.ap_proxy_share_balancer ()           | void ap_proxy_share_balancer (int16_t arg_c8h, int16_t arg_e0h, int16_t arg_2a0h, int16_t arg_2b0h, int16_t arg_378h, int16_t arg1, uint32_t arg2, int16_t arg3) {
                                                     |     int16_t var_24h_4;
                                                     |     int16_t var_d8h;
                                                     |     int16_t var_4h_6;
                                                     |     int16_t var_8h_6;
                                                     |     int32_t var_ch;
                                                     |     int32_t var_ch_2;
                                                     |     int16_t var_14h_4;
                                                     |     int16_t var_18h_6;
                                                     |     int16_t var_24h_5;
                                                     |     int16_t var_2ch_3;
                                                     |     int16_t var_160h;
                                                     |     int16_t var_64h;
                                                     |     r0 = arg1;
                                                     |     r1 = arg2;
                                                     |     r2 = arg3;
    0x0000c6ac ssub8mi fp, r6, r0                    |     __asm ("ssub8mi fp, r6, r0");
    0x0000c6b0 ldr r2, [pc, 0x150]                   |     
    0x0000c6b2 sub sp, 0x6c                          |     
    0x0000c6b4 ldr r3, [pc, 0x150]                   |     r3 = *(0xc808);
    0x0000c6b6 add r2, pc                            |     r2 = 0x18ebe;
    0x0000c6b8 ldr r7, [pc, 0x150]                   |     
    0x0000c6ba ldr r3, [r2, r3]                      |     
    0x0000c6bc add r7, pc                            |     r7 = 0x18ecc;
    0x0000c6be ldr r3, [r3]                          |     r3 = *(0x18ebe);
    0x0000c6c0 str r3, [sp, 0x64]                    |     var_64h = r3;
    0x0000c6c2 mov.w r3, 0                           |     r3 = 0;
    0x0000c6c6 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x0000c6c8 beq 0xc7aa                            |         goto label_2;
                                                     |     }
    0x0000c6ca mov r4, r1                            |     r4 = r1;
    0x0000c6cc ldr r1, [r0, 0x3c]                    |     r1 = *((r0 + 0x3c));
    0x0000c6ce mov r5, r0                            |     r5 = r0;
    0x0000c6d0 cmp r1, 0                             |     
                                                     |     if (r1 == 0) {
    0x0000c6d2 beq 0xc7aa                            |         goto label_2;
                                                     |     }
    0x0000c6d4 ldr.w r2, [r1, 0x210]                 |     r2 = *((r1 + 0x210));
    0x0000c6d8 ldr.w r3, [r4, 0x210]                 |     r3 = *((r4 + 0x210));
    0x0000c6dc cmp r2, r3                            |     
                                                     |     if (r2 == r3) {
    0x0000c6de bne 0xc6ec                            |         
    0x0000c6e0 ldr.w r2, [r1, 0x214]                 |         r2 = *((r1 + 0x214));
    0x0000c6e4 ldr.w r3, [r4, 0x214]                 |         r3 = *((r4 + 0x214));
    0x0000c6e8 cmp r2, r3                            |         
                                                     |         if (r2 == r3) {
    0x0000c6ea beq 0xc7ae                            |             goto label_3;
                                                     |         }
                                                     |     }
    0x0000c6ec mov.w r2, 0x220                       |     r2 = 0x220;
    0x0000c6f0 mov r0, r4                            |     r0 = r4;
    0x0000c6f2 blx 0x423c                            |     fcn_0000423c ();
    0x0000c6f6 ldr r0, [r5, 0x3c]                    |     r0 = *((r5 + 0x3c));
    0x0000c6f8 ldrb.w r3, [r0, 0x218]                |     r3 = *((r0 + 0x218));
    0x0000c6fc lsls r3, r3, 0x1c                     |     r3 <<= 0x1c;
                                                     |     if (r3 < r3) {
    0x0000c6fe bmi 0xc72e                            |         goto label_4;
                                                     |     }
    0x0000c700 ldr r0, [pc, 0x10c]                   |     
    0x0000c702 add r0, pc                            |     r0 = 0x18f16;
                                                     |     do {
                                                     | label_0:
    0x0000c704 ldr r3, [pc, 0x10c]                   |         r3 = *(0xc814);
    0x0000c706 str r4, [r5, 0x3c]                    |         *((r5 + 0x3c)) = r4;
    0x0000c708 str.w r6, [r4, 0x20c]                 |         __asm ("str.w r6, aav.0x000000ff");
    0x0000c70c ldr r2, [r7, r3]                      |         r2 = *((r7 + r3));
    0x0000c70e ldr r3, [pc, 0x108]                   |         r3 = *(0xc81a);
    0x0000c710 str r2, [sp, 0x24]                    |         var_24h_5 = r2;
    0x0000c712 ldr r7, [r7, r3]                      |         r7 = *((r7 + r3));
    0x0000c714 ldr r3, [r2]                          |         r3 = *(r2);
    0x0000c716 ldr r2, [r7, 8]                       |         r2 = *((r7 + 8));
                                                     |         if (r3 == 0) {
    0x0000c718 cbz r3, 0xc73e                        |             goto label_5;
                                                     |         }
    0x0000c71a cmp r2, 0                             |         
                                                     |         if (r2 < 0) {
    0x0000c71c blt 0xc738                            |             goto label_6;
                                                     |         }
    0x0000c71e ldr r1, [r3, 0x10]                    |         r1 = *((r3 + 0x10));
                                                     |         if (r1 == 0) {
    0x0000c720 cbz r1, 0xc738                        |             goto label_6;
                                                     |         }
    0x0000c722 ldrsb r1, [r1, r2]                    |         r1 = *((r1 + r2));
    0x0000c724 cmp r1, 0                             |         
                                                     |         if (r1 < 0) {
    0x0000c726 blt 0xc738                            |             goto label_6;
                                                     |         }
    0x0000c728 cmp r1, 6                             |         
                                                     |         if (r1 <= 6) {
    0x0000c72a ble 0xc764                            |             goto label_7;
                                                     |         }
    0x0000c72c b 0xc73e                              |         goto label_5;
                                                     | label_4:
    0x0000c72e blx 0x41f0                            |         free (r0);
    0x0000c732 ldr r0, [pc, 0xe8]                    |         
    0x0000c734 add r0, pc                            |         r0 = 0x18f56;
    0x0000c736 b 0xc704                              |         
                                                     |     } while (1);
                                                     | label_6:
    0x0000c738 ldr r1, [r3, 0x14]                    |     r1 = *((r3 + 0x14));
    0x0000c73a cmp r1, 6                             |     
                                                     |     if (r1 > 6) {
    0x0000c73c ble 0xc764                            |         
                                                     | label_5:
    0x0000c73e str r3, [sp, 4]                       |         var_4h_6 = r3;
    0x0000c740 movw r1, 0x4d7                        |         r1 = 0x4d7;
    0x0000c744 ldr r3, [pc, 0xd8]                    |         
    0x0000c746 strd r0, r6, [sp, 0xc]                |         __asm ("strd r0, r6, [var_ch]");
    0x0000c74a ldr r0, [pc, 0xd8]                    |         
    0x0000c74c add r3, pc                            |         r3 = 0x18f70;
    0x0000c74e str r4, [sp, 0x14]                    |         var_14h_4 = r4;
    0x0000c750 str r3, [sp, 8]                       |         var_8h_6 = r3;
    0x0000c752 adds r4, 0xb5                         |         r4 += 0xb5;
    0x0000c754 movs r3, 0                            |         r3 = 0;
    0x0000c756 str r4, [sp, 0x18]                    |         var_18h_6 = r4;
    0x0000c758 str r3, [sp]                          |         *(sp) = r3;
    0x0000c75a add r0, pc                            |         r0 = 0x18f84;
    0x0000c75c movs r3, 7                            |         r3 = 7;
    0x0000c75e blx 0x456c                            |         fcn_0000456c ();
    0x0000c762 ldr r4, [r5, 0x3c]                    |         r4 = *((r5 + 0x3c));
                                                     |     }
                                                     | label_7:
    0x0000c764 ldr r2, [pc, 0xc0]                    |     
    0x0000c766 add.w r1, r4, 0x80                    |     r1 = r4 + 0x80;
    0x0000c76a ldr r0, [pc, 0xc0]                    |     
    0x0000c76c add r2, pc                            |     r2 = 0x18f98;
    0x0000c76e add r0, pc                            |     r0 = 0x18fa0;
    0x0000c770 blx 0x446c                            |     r0 = loc_imp_apr_pstrcatv ()
                                                     |     if (r0 == 0) {
    0x0000c774 cbz r0, 0xc7d6                        |         goto label_8;
                                                     |     }
    0x0000c776 ldrb.w r3, [r5, 0x44]                 |     r3 = *((r5 + 0x44));
    0x0000c77a ldr r2, [r5, 0x3c]                    |     r2 = *((r5 + 0x3c));
    0x0000c77c str r0, [r5, 0x28]                    |     *((r5 + 0x28)) = r0;
    0x0000c77e orr r3, r3, 4                         |     r3 |= 4;
    0x0000c782 strb.w r3, [r5, 0x44]                 |     *((r5 + 0x44)) = r3;
    0x0000c786 ldrb.w r3, [r2, 0x90]                 |     r3 = *((r2 + 0x90));
    0x0000c78a cmp r3, 0xa                           |     
    0x0000c78c it ne                                 |     
                                                     |     if (r3 == 0xa) {
    0x0000c78e movne r0, 0                           |         r0 = 0;
                                                     |     }
                                                     |     if (r3 == 0xa) {
    0x0000c790 beq 0xc7b4                            |         goto label_9;
                                                     |     }
                                                     |     do {
                                                     | label_1:
    0x0000c792 ldr r2, [pc, 0x9c]                    |         
    0x0000c794 ldr r3, [pc, 0x70]                    |         r3 = *(0xc808);
    0x0000c796 add r2, pc                            |         r2 = 0x18fcc;
    0x0000c798 ldr r3, [r2, r3]                      |         r3 = *(0x18fcc);
    0x0000c79a ldr r2, [r3]                          |         r2 = *(0x18fcc);
    0x0000c79c ldr r3, [sp, 0x64]                    |         r3 = var_64h;
    0x0000c79e eors r2, r3                           |         r2 ^= r3;
    0x0000c7a0 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x0000c7a4 bne 0xc7fe                            |             goto label_10;
                                                     |         }
    0x0000c7a6 add sp, 0x6c                          |         
    0x0000c7a8 pop {r4, r5, r6, r7, pc}              |         
                                                     | label_2:
    0x0000c7aa movs r0, 0x16                         |         r0 = 0x16;
    0x0000c7ac b 0xc792                              |         
                                                     |     } while (1);
                                                     | label_3:
    0x0000c7ae ldr r0, [pc, 0x84]                    |     
    0x0000c7b0 add r0, pc                            |     r0 = 0x18fea;
    0x0000c7b2 b 0xc704                              |     goto label_0;
                                                     | label_9:
    0x0000c7b4 add r4, sp, 0x2c                      |     r4 += var_2ch_3;
    0x0000c7b6 movs r1, 0x10                         |     r1 = 0x10;
    0x0000c7b8 mov r0, r4                            |     r0 = r4;
    0x0000c7ba blx 0x42f0                            |     fcn_000042f0 ();
    0x0000c7be mov r1, r4                            |     r1 = r4;
    0x0000c7c0 add r4, sp, 0x3c                      |     r4 += var_160h;
    0x0000c7c2 mov r0, r4                            |     r0 = r4;
    0x0000c7c4 blx 0x4adc                            |     fcn_00004adc ();
    0x0000c7c8 ldr r0, [r5, 0x3c]                    |     r0 = *((r5 + 0x3c));
    0x0000c7ca movs r2, 0x25                         |     r2 = 0x25;
    0x0000c7cc mov r1, r4                            |     r1 = r4;
    0x0000c7ce adds r0, 0x90                         |     r0 += 0x90;
    0x0000c7d0 blx 0x47f0                            |     loc_imp_ap_hook_fixups ();
    0x0000c7d4 b 0xc792                              |     goto label_1;
                                                     | label_8:
    0x0000c7d6 ldr r3, [sp, 0x24]                    |     r3 = var_24h_5;
    0x0000c7d8 ldr r5, [r5, 0x3c]                    |     r5 = *((r5 + 0x3c));
    0x0000c7da ldr r1, [pc, 0x5c]                    |     
    0x0000c7dc ldr r4, [r3]                          |     r4 = *(r3);
    0x0000c7de movs r3, 2                            |     r3 = 2;
    0x0000c7e0 ldr r2, [r7, 8]                       |     r2 = *((r7 + 8));
    0x0000c7e2 adds r5, 0x80                         |     r5 += 0x80;
    0x0000c7e4 str r0, [sp]                          |     *(sp) = r0;
    0x0000c7e6 add r1, pc                            |     r1 = 0x19024;
    0x0000c7e8 ldr r0, [pc, 0x50]                    |     
    0x0000c7ea strd r1, r5, [sp, 8]                  |     __asm ("strd r1, r5, [var_8h_6]");
    0x0000c7ee mov.w r1, 0x4e0                       |     r1 = 0x4e0;
    0x0000c7f2 str r4, [sp, 4]                       |     var_4h_6 = r4;
    0x0000c7f4 add r0, pc                            |     r0 = 0x19034;
    0x0000c7f6 blx 0x456c                            |     fcn_0000456c ();
    0x0000c7fa movs r0, 0x16                         |     r0 = 0x16;
    0x0000c7fc b 0xc792                              |     goto label_1;
                                                     | label_10:
    0x0000c7fe blx 0x42fc                            |     fcn_000042fc ();
    0x0000c802 nop                                   |     
    0x0000c804 push {r1, r3, r5, lr}                 |     
    0x0000c806 movs r1, r0                           |     r1 = r0;
    0x0000c808 lsls r4, r4, 0xf                      |     r4 <<= 0xf;
    0x0000c80a movs r0, r0                           |     
    0x0000c80c push {r2, r5, lr}                     |     
    0x0000c80e movs r1, r0                           |     r1 = r0;
    0x0000c810 str r6, [sp, 0x378]                   |     *(arg_378h) = r6;
    0x0000c812 movs r0, r0                           |     
    0x0000c814 lsls r4, r2, 0xf                      |     r4 = r2 << 0xf;
    0x0000c816 movs r0, r0                           |     
    0x0000c818 lsls r0, r6, 0xf                      |     r0 = r6 << 0xf;
    0x0000c81a movs r0, r0                           |     
    0x0000c81c str r6, [sp, 0x2b0]                   |     *(arg_2b0h) = r6;
    0x0000c81e movs r0, r0                           |     
    0x0000c820 str r6, [sp, 0x2a0]                   |     *(arg_2a0h) = r6;
    0x0000c822 movs r0, r0                           |     
    0x0000c824 ldrh r6, [r4, 0x34]                   |     r6 = *((r4 + 0x34));
    0x0000c826 movs r0, r0                           |     
    0x0000c828 str r4, [r1, 0x54]                    |     *((r1 + 0x54)) = r4;
    0x0000c82a movs r0, r0                           |     
    0x0000c82c ldr r6, [r2, 0x78]                    |     r6 = *((r2 + 0x78));
    0x0000c82e movs r0, r0                           |     
    0x0000c830 push {r1, r3, r6}                     |     
    0x0000c832 movs r1, r0                           |     r1 = r0;
    0x0000c834 str r6, [sp, 0xe0]                    |     *(arg_e0h) = r6;
    0x0000c836 movs r0, r0                           |     
    0x0000c838 str r6, [sp, 0xc8]                    |     *(arg_c8h) = r6;
    0x0000c83a movs r0, r0                           |     
    0x0000c83c ldrh r4, [r1, 0x30]                   |     r4 = *((r1 + 0x30));
    0x0000c83e movs r0, r0                           |     
                                                     | }
    ; 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.so @ 0xf004 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ap_proxy_sync_balancer ()                        | void ap_proxy_sync_balancer (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3) {
                                                                 |     int16_t var_4h_2;
                                                                 |     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_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_24h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
                                                                 |     r2 = arg3;
    0x0000f004 svcmi 0xf0e92d                                    |     __asm ("svcmi aav.0x000000ff");
    0x0000f008 mov r5, r0                                        |     r5 = r0;
    0x0000f00a ldr r6, [r0, 0x3c]                                |     r6 = *(arg_0hx3c);
    0x0000f00c sub sp, 0x3c                                      |     
    0x0000f00e ldr r0, [pc, 0x2b4]                               |     
    0x0000f010 ldr r3, [pc, 0x2b4]                               |     r3 = *(0xf2c8);
    0x0000f012 ldr r4, [r5, 0x20]                                |     r4 = *((r5 + 0x20));
    0x0000f014 add r0, pc                                        |     r0 = 0x1e2de;
    0x0000f016 ldr.w fp, [pc, 0x2b4]                             |     fp = *(0x0000f2cc);
    0x0000f01a ldr r3, [r0, r3]                                  |     
    0x0000f01c add fp, pc                                        |     
    0x0000f01e ldr r3, [r3]                                      |     r3 = *(0x1e2de);
    0x0000f020 str r3, [sp, 0x34]                                |     var_34h = r3;
    0x0000f022 mov.w r3, 0                                       |     r3 = 0;
    0x0000f026 ldrd r0, r3, [r6, 0x200]                          |     __asm ("ldrd r0, r3, aav.0x000000ff");
    0x0000f02a str r2, [sp, 0x20]                                |     var_20h = r2;
    0x0000f02c ldr r2, [r5, 0x24]                                |     r2 = *((r5 + 0x24));
    0x0000f02e cmp r4, r0                                        |     
    0x0000f030 sbcs.w r3, r2, r3                                 |     __asm ("sbcs.w r3, r2, r3");
    0x0000f034 it ge                                             |     
                                                                 |     if (r4 < r0) {
    0x0000f036 movge r4, 0                                       |         r4 = 0;
                                                                 |     }
                                                                 |     if (r4 >= r0) {
    0x0000f038 blt 0xf058                                        |         
                                                                 | label_3:
    0x0000f03a ldr r2, [pc, 0x294]                               |         
    0x0000f03c ldr r3, [pc, 0x288]                               |         r3 = *(0xf2c8);
    0x0000f03e add r2, pc                                        |         r2 = 0x1e314;
    0x0000f040 ldr r3, [r2, r3]                                  |         r3 = *(0x1e314);
    0x0000f042 ldr r2, [r3]                                      |         r2 = *(0x1e314);
    0x0000f044 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x0000f046 eors r2, r3                                       |         r2 ^= r3;
    0x0000f048 mov.w r3, 0                                       |         r3 = 0;
                                                                 |         if (r2 != r3) {
    0x0000f04c bne.w 0xf2be                                      |             goto label_8;
                                                                 |         }
    0x0000f050 mov r0, r4                                        |         r0 = r4;
    0x0000f052 add sp, 0x3c                                      |         
    0x0000f054 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |         
                                                                 |     }
    0x0000f058 ldr r2, [pc, 0x278]                               |     
    0x0000f05a mov r7, r1                                        |     r7 = r1;
    0x0000f05c ldr r0, [pc, 0x278]                               |     
    0x0000f05e add.w r1, r6, 0x80                                |     r1 = r6 + 0x80;
    0x0000f062 ldr.w r8, [r5, 0xc]                               |     r8 = *((r5 + 0xc));
    0x0000f066 add r2, pc                                        |     r2 = 0x1e33e;
    0x0000f068 add r0, pc                                        |     r0 = 0x1e344;
    0x0000f06a blx 0x446c                                        |     r0 = loc_imp_apr_pstrcatv ()
    0x0000f06e mov r4, r0                                        |     r4 = r0;
    0x0000f070 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000f072 beq.w 0xf280                                      |         goto label_9;
                                                                 |     }
    0x0000f076 ldr r3, [r5, 0x14]                                |     r3 = *((r5 + 0x14));
    0x0000f078 str r0, [r5, 0x28]                                |     *((r5 + 0x28)) = r0;
    0x0000f07a cmp r3, 0                                         |     
                                                                 |     if (r3 <= 0) {
    0x0000f07c ble.w 0xf2ae                                      |         goto label_10;
                                                                 |     }
    0x0000f080 ldr r3, [pc, 0x258]                               |     
    0x0000f082 movs r6, 0                                        |     r6 = 0;
    0x0000f084 add.w sb, sp, 0x30                                |     sb += var_30h;
    0x0000f088 add r3, pc                                        |     r3 = 0x1e368;
    0x0000f08a str r3, [sp, 0x24]                                |     var_24h = r3;
    0x0000f08c ldr r3, [pc, 0x250]                               |     
    0x0000f08e add r3, pc                                        |     r3 = 0x1e372;
    0x0000f090 str r3, [sp, 0x28]                                |     var_28h = r3;
    0x0000f092 ldr r3, [pc, 0x250]                               |     
    0x0000f094 add r3, pc                                        |     r3 = 0x1e37e;
    0x0000f096 str r3, [sp, 0x2c]                                |     var_2ch = r3;
    0x0000f098 b 0xf0a2                                          |     
                                                                 |     while (r3 == 0) {
                                                                 | label_0:
    0x0000f09a ldr r3, [r5, 0x14]                                |         r3 = *((r5 + 0x14));
    0x0000f09c adds r6, 1                                        |         r6++;
    0x0000f09e cmp r3, r6                                        |         
                                                                 |         if (r3 <= r6) {
    0x0000f0a0 ble 0xf14e                                        |             goto label_11;
                                                                 |         }
                                                                 | label_2:
    0x0000f0a2 ldr.w r3, [r8, 0x10]                              |         r3 = *((r8 + 0x10));
    0x0000f0a6 mov r2, sb                                        |         r2 = sb;
    0x0000f0a8 ldr r0, [r5, 8]                                   |         r0 = *((r5 + 8));
    0x0000f0aa mov r1, r6                                        |         r1 = r6;
    0x0000f0ac blx r3                                            |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x0000f0ae mov r4, r0                                        |         r4 = r0;
    0x0000f0b0 cmp r0, 0                                         |         
                                                                 |         if (r0 != 0) {
    0x0000f0b2 bne.w 0xf236                                      |             goto label_12;
                                                                 |         }
    0x0000f0b6 ldr r2, [sp, 0x30]                                |         r2 = var_30h;
    0x0000f0b8 ldr.w r3, [r2, 0x1c4]                             |         r3 = *((r2 + 0x1c4));
    0x0000f0bc cmp r3, 0                                         |         
    0x0000f0be beq 0xf09a                                        |         
                                                                 |     }
    0x0000f0c0 ldr.w lr, [r2, 0x1c8]                             |     
    0x0000f0c4 cmp.w lr, 0                                       |     
                                                                 |     if (lr == 0) {
    0x0000f0c8 beq 0xf09a                                        |         goto label_0;
                                                                 |     }
    0x0000f0ca ldr r1, [r5]                                      |     r1 = *(r5);
    0x0000f0cc ldr.w sl, [r1, 8]                                 |     sl = *((r1 + 8));
    0x0000f0d0 ldr r0, [r1, 0x10]                                |     r0 = *((r1 + 0x10));
    0x0000f0d2 cmp.w sl, 0                                       |     
                                                                 |     if (sl <= 0) {
    0x0000f0d6 ble 0xf18e                                        |         goto label_13;
                                                                 |     }
    0x0000f0d8 subs r0, 4                                        |     r0 -= 4;
    0x0000f0da mov ip, r2                                        |     
    0x0000f0dc b 0xf0e4                                          |     
                                                                 |     while (r3 != r2) {
                                                                 | label_1:
    0x0000f0de adds r4, 1                                        |         r4++;
    0x0000f0e0 cmp r4, sl                                        |         
                                                                 |         if (r4 == sl) {
    0x0000f0e2 beq 0xf190                                        |             goto label_14;
                                                                 |         }
    0x0000f0e4 ldr r1, [r0, 4]!                                  |         r1 = *((r0 += 4));
    0x0000f0e8 ldr r2, [r1]                                      |         r2 = *(r1);
    0x0000f0ea cmp r3, r2                                        |         
    0x0000f0ec bne 0xf0de                                        |         
                                                                 |     }
    0x0000f0ee ldr r2, [r1, 4]                                   |     r2 = *((r1 + 4));
    0x0000f0f0 cmp lr, r2                                        |     
                                                                 |     if (lr != r2) {
    0x0000f0f2 bne 0xf0de                                        |         goto label_1;
                                                                 |     }
    0x0000f0f4 ldr r3, [pc, 0x1f0]                               |     r3 = *(0xf2e8);
    0x0000f0f6 mov r2, ip                                        |     r2 = ip;
    0x0000f0f8 ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x0000f0fc ldr.w sl, [r3, 8]                                 |     sl = *(0xf2f0);
                                                                 |     if (r7 == 0) {
    0x0000f100 cbz r7, 0xf11a                                    |         goto label_4;
                                                                 |     }
    0x0000f102 cmp.w sl, 0                                       |     
                                                                 |     if (sl < 0) {
    0x0000f106 blt 0xf186                                        |         goto label_15;
                                                                 |     }
    0x0000f108 ldr r3, [r7, 0x10]                                |     r3 = *((r7 + 0x10));
    0x0000f10a cmp r3, 0                                         |     
                                                                 |     if (r3 == 0) {
    0x0000f10c beq 0xf186                                        |         goto label_15;
                                                                 |     }
    0x0000f10e ldrsb.w r3, [r3, sl]                              |     r3 = *((r3 + sl));
    0x0000f112 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x0000f114 blt 0xf186                                        |         goto label_15;
                                                                 |     }
    0x0000f116 cmp r3, 6                                         |     
                                                                 |     if (r3 <= 6) {
    0x0000f118 ble 0xf09a                                        |         goto label_0;
                                                                 |     }
                                                                 | label_4:
    0x0000f11a ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x0000f11c adds r6, 1                                        |     r6++;
    0x0000f11e str r2, [sp, 0x1c]                                |     var_1ch = r2;
    0x0000f120 ldr r0, [r3, 0x2c]                                |     r0 = *((r3 + 0x2c));
    0x0000f122 blx 0x439c                                        |     fcn_0000439c ();
    0x0000f126 ldr r3, [pc, 0x1c4]                               |     
    0x0000f128 movw r1, 0xe82                                    |     r1 = 0xe82;
    0x0000f12c ldr r2, [sp, 0x1c]                                |     r2 = var_1ch;
    0x0000f12e str r0, [sp, 0x14]                                |     var_14h = r0;
    0x0000f130 add r3, pc                                        |     r3 = 0x1e422;
    0x0000f132 ldr r0, [sp, 0x2c]                                |     r0 = var_2ch;
    0x0000f134 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000f136 movs r3, 0                                        |     r3 = 0;
    0x0000f138 strd r4, r2, [sp, 0xc]                            |     __asm ("strd r4, r2, [var_ch]");
    0x0000f13c mov r2, sl                                        |     r2 = sl;
    0x0000f13e str r3, [sp]                                      |     *(sp) = r3;
    0x0000f140 movs r3, 7                                        |     r3 = 7;
    0x0000f142 str r7, [sp, 4]                                   |     var_4h = r7;
    0x0000f144 blx 0x456c                                        |     fcn_0000456c ();
    0x0000f148 ldr r3, [r5, 0x14]                                |     r3 = *((r5 + 0x14));
    0x0000f14a cmp r3, r6                                        |     
                                                                 |     if (r3 > r6) {
    0x0000f14c bgt 0xf0a2                                        |         goto label_2;
                                                                 |     }
                                                                 | label_11:
    0x0000f14e ldr r2, [r5, 0x3c]                                |     r2 = *((r5 + 0x3c));
    0x0000f150 ldrb.w r1, [r2, 0x218]                            |     r1 = *((r2 + 0x218));
    0x0000f154 mov r3, r2                                        |     r3 = r2;
    0x0000f156 lsls r0, r1, 0x1b                                 |     r0 = r1 << 0x1b;
                                                                 |     if (r0 < r1) {
    0x0000f158 bpl 0xf17a                                        |         
    0x0000f15a ldr r4, [r5, 0x28]                                |         r4 = *((r5 + 0x28));
                                                                 |         if (r4 != 0) {
    0x0000f15c cbz r4, 0xf16e                                    |             
                                                                 | label_6:
    0x0000f15e ldr r3, [r4, 0xc]                                 |             r3 = *((r4 + 0xc));
    0x0000f160 cmp r3, 0                                         |             
                                                                 |             if (r3 == 0) {
    0x0000f162 beq.w 0xf2aa                                      |                 goto label_16;
                                                                 |             }
    0x0000f166 mov r1, r7                                        |             r1 = r7;
    0x0000f168 mov r0, r5                                        |             r0 = r5;
    0x0000f16a blx r3                                            |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
    0x0000f16c ldr r3, [r5, 0x3c]                                |             r3 = *((r5 + 0x3c));
                                                                 |         }
                                                                 | label_5:
    0x0000f16e ldrb.w r2, [r3, 0x218]                            |         r2 = *((r3 + 0x218));
    0x0000f172 bfc r2, 4, 1                                      |         value_0 = BIT_MASK (1, );
                                                                 |         value_0 = ~value_0;
                                                                 |         r2 &= value_0;
    0x0000f176 strb.w r2, [r3, 0x218]                            |         *((r3 + 0x218)) = r2;
                                                                 |     }
                                                                 | label_7:
    0x0000f17a ldrd r2, r3, [r3, 0x200]                          |     __asm ("ldrd r2, r3, aav.0x000000ff");
    0x0000f17e movs r4, 0                                        |     r4 = 0;
    0x0000f180 strd r2, r3, [r5, 0x20]                           |     __asm ("strd r2, r3, [r5, 0x20]");
    0x0000f184 b 0xf03a                                          |     goto label_3;
                                                                 | label_15:
    0x0000f186 ldr r3, [r7, 0x14]                                |     r3 = *((r7 + 0x14));
    0x0000f188 cmp r3, 6                                         |     
                                                                 |     if (r3 > 6) {
    0x0000f18a bgt 0xf11a                                        |         goto label_4;
                                                                 |     }
    0x0000f18c b 0xf09a                                          |     goto label_0;
                                                                 | label_13:
    0x0000f18e mov sl, r4                                        |     sl = r4;
                                                                 | label_14:
    0x0000f190 ldr r3, [pc, 0x15c]                               |     r3 = *(0xf2f0);
    0x0000f192 ldr.w r4, [fp, r3]                                |     r4 = *((fp + r3));
    0x0000f196 ldr r0, [r4]                                      |     r0 = *(r4);
    0x0000f198 blx 0x4130                                        |     loc_imp_apr_global_mutex_lock ();
    0x0000f19c ldr r0, [r5]                                      |     r0 = *(r5);
    0x0000f19e blx 0x4838                                        |     loc_imp_ap_str_tolower ();
    0x0000f1a2 ldr r3, [sp, 0x20]                                |     r3 = var_20h;
    0x0000f1a4 movs r1, 0x24                                     |     r1 = 0x24;
    0x0000f1a6 str r0, [sp, 0x1c]                                |     var_1ch = r0;
    0x0000f1a8 ldr r0, [r3, 0x2c]                                |     r0 = *(0xf31c);
    0x0000f1aa blx 0x4418                                        |     loc_imp_apr_poll ();
    0x0000f1ae movs r2, 0x24                                     |     r2 = 0x24;
    0x0000f1b0 movs r1, 0                                        |     r1 = 0;
    0x0000f1b2 blx 0x472c                                        |     fcn_0000472c ();
    0x0000f1b6 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x0000f1b8 str r0, [r1]                                      |     *(r1) = r0;
    0x0000f1ba ldr r0, [r4]                                      |     r0 = *(r4);
    0x0000f1bc blx 0x4738                                        |     fcn_00004738 ();
    0x0000f1c0 ldr r4, [sp, 0x30]                                |     r4 = var_30h;
    0x0000f1c2 ldr r1, [sp, 0x1c]                                |     r1 = var_1ch;
    0x0000f1c4 ldr r2, [sp, 0x20]                                |     r2 = var_20h;
    0x0000f1c6 ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000f1c8 add.w r1, r4, 0x1c4                               |     r1 = r4 + 0x1c4;
    0x0000f1cc ldm r1, {r0, r1}                                  |     r0 = *(r1);
                                                                 |     r1 = *((r1 + 4));
    0x0000f1ce ldr r2, [r2, 0x2c]                                |     r2 = *((r2 + 0x2c));
    0x0000f1d0 strd r4, r5, [r3, 0x10]                           |     __asm ("strd r4, r5, [r3, 0x10]");
    0x0000f1d4 stm.w r3, {r0, r1}                                |     *(r3) = r0;
                                                                 |     *((r3 + 4)) = r1;
    0x0000f1d8 mov r0, r3                                        |     r0 = r3;
    0x0000f1da mov r1, r7                                        |     r1 = r7;
    0x0000f1dc blx 0x45d0                                        |     r0 = fcn_000045d0 ();
    0x0000f1e0 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x0000f1e2 bne 0xf25c                                        |         goto label_17;
                                                                 |     }
    0x0000f1e4 ldr r3, [pc, 0x100]                               |     r3 = *(0xf2e8);
    0x0000f1e6 ldr.w r3, [fp, r3]                                |     r3 = *((fp + r3));
    0x0000f1ea ldr r2, [r3, 8]                                   |     r2 = *(0xf2f0);
                                                                 |     if (r7 == 0) {
    0x0000f1ec cbz r7, 0xf202                                    |         goto label_18;
                                                                 |     }
    0x0000f1ee cmp r2, 0                                         |     
                                                                 |     if (r2 < 0) {
    0x0000f1f0 blt 0xf22e                                        |         goto label_19;
                                                                 |     }
    0x0000f1f2 ldr r3, [r7, 0x10]                                |     r3 = *((r7 + 0x10));
                                                                 |     if (r3 == 0) {
    0x0000f1f4 cbz r3, 0xf22e                                    |         goto label_19;
                                                                 |     }
    0x0000f1f6 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x0000f1f8 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x0000f1fa blt 0xf22e                                        |         goto label_19;
                                                                 |     }
    0x0000f1fc cmp r3, 6                                         |     
                                                                 |     if (r3 <= 6) {
    0x0000f1fe ble.w 0xf09a                                      |         goto label_0;
                                                                 |     }
                                                                 |     do {
                                                                 | label_18:
    0x0000f202 ldr r3, [sp, 0x1c]                                |         r3 = var_1ch;
    0x0000f204 ldr r1, [sp, 0x28]                                |         r1 = var_28h;
    0x0000f206 ldr r0, [sp, 0x24]                                |         r0 = var_24h;
    0x0000f208 ldr r3, [r3]                                      |         r3 = *(r3);
    0x0000f20a ldr r3, [r3, 0x10]                                |         r3 = *((r3 + 0x10));
    0x0000f20c strd r7, r1, [sp, 4]                              |         __asm ("strd r7, r1, [var_4h]");
    0x0000f210 movw r1, 0xe98                                    |         r1 = 0xe98;
    0x0000f214 str.w sl, [sp, 0xc]                               |         __asm ("str.w sl, [var_ch]");
    0x0000f218 addw r3, r3, 0x40d                                |         __asm ("addw r3, r3, aav.0x000000ff");
    0x0000f21c str r3, [sp, 0x14]                                |         var_14h = r3;
    0x0000f21e ldr r3, [sp, 0x30]                                |         r3 = var_30h;
    0x0000f220 str r3, [sp, 0x10]                                |         var_10h = r3;
    0x0000f222 movs r3, 0                                        |         r3 = 0;
    0x0000f224 str r3, [sp]                                      |         *(sp) = r3;
    0x0000f226 movs r3, 7                                        |         r3 = 7;
    0x0000f228 blx 0x456c                                        |         fcn_0000456c ();
    0x0000f22c b 0xf09a                                          |         goto label_0;
                                                                 | label_19:
    0x0000f22e ldr r3, [r7, 0x14]                                |         r3 = *((r7 + 0x14));
    0x0000f230 cmp r3, 6                                         |         
    0x0000f232 bgt 0xf202                                        |         
                                                                 |     } while (r3 > 6);
    0x0000f234 b 0xf09a                                          |     goto label_0;
                                                                 | label_12:
    0x0000f236 ldr r2, [pc, 0xb0]                                |     
    0x0000f238 movw r1, 0xe74                                    |     r1 = 0xe74;
    0x0000f23c ldr r3, [pc, 0xb4]                                |     
    0x0000f23e ldr r0, [pc, 0xb8]                                |     
    0x0000f240 ldr.w r2, [fp, r2]                                |     r2 = *((fp + r2));
    0x0000f244 add r3, pc                                        |     r3 = 0x1e53c;
    0x0000f246 str r7, [sp, 4]                                   |     var_4h = r7;
    0x0000f248 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000f24a add r0, pc                                        |     r0 = 0x1e548;
    0x0000f24c ldr r2, [r2, 8]                                   |     r2 = *(0xf2f2);
    0x0000f24e movs r3, 0                                        |     r3 = 0;
    0x0000f250 str r4, [sp]                                      |     *(sp) = r4;
    0x0000f252 movw r4, 0x4e2e                                   |     r4 = 0x4e2e;
    0x0000f256 blx 0x456c                                        |     fcn_0000456c ();
    0x0000f25a b 0xf03a                                          |     goto label_3;
                                                                 | label_17:
    0x0000f25c ldr r2, [pc, 0x88]                                |     
    0x0000f25e mov r4, r0                                        |     r4 = r0;
    0x0000f260 ldr r3, [pc, 0x98]                                |     
    0x0000f262 movw r1, 0xe95                                    |     r1 = 0xe95;
    0x0000f266 ldr.w r2, [fp, r2]                                |     r2 = *((fp + r2));
    0x0000f26a strd r0, r7, [sp]                                 |     __asm ("strd r0, r7, [sp]");
    0x0000f26e add r3, pc                                        |     r3 = 0x1e56e;
    0x0000f270 ldr r0, [pc, 0x8c]                                |     
    0x0000f272 str r3, [sp, 8]                                   |     var_8h = r3;
    0x0000f274 movs r3, 0                                        |     r3 = 0;
    0x0000f276 ldr r2, [r2, 8]                                   |     r2 = *(0xf2f0);
    0x0000f278 add r0, pc                                        |     r0 = 0x1e57c;
    0x0000f27a blx 0x456c                                        |     fcn_0000456c ();
    0x0000f27e b 0xf03a                                          |     goto label_3;
                                                                 | label_9:
    0x0000f280 ldr r3, [pc, 0x64]                                |     r3 = *(0xf2e8);
    0x0000f282 ldr r2, [r5, 0x3c]                                |     r2 = *((r5 + 0x3c));
    0x0000f284 ldr r1, [pc, 0x7c]                                |     
    0x0000f286 ldr.w r0, [fp, r3]                                |     r0 = *((fp + r3));
    0x0000f28a movs r3, 2                                        |     r3 = 2;
    0x0000f28c adds r2, 0x80                                     |     r2 += 0x80;
    0x0000f28e str r7, [sp, 4]                                   |     var_4h = r7;
    0x0000f290 str r2, [sp, 0xc]                                 |     var_ch = r2;
    0x0000f292 add r1, pc                                        |     r1 = 0x1e59a;
    0x0000f294 ldr r2, [r0, 8]                                   |     r2 = *((r0 + 8));
    0x0000f296 ldr r0, [pc, 0x70]                                |     
    0x0000f298 str r1, [sp, 8]                                   |     var_8h = r1;
    0x0000f29a movw r1, 0xe62                                    |     r1 = 0xe62;
    0x0000f29e str r4, [sp]                                      |     *(sp) = r4;
    0x0000f2a0 movs r4, 0x16                                     |     r4 = 0x16;
    0x0000f2a2 add r0, pc                                        |     r0 = 0x1e5b0;
    0x0000f2a4 blx 0x456c                                        |     fcn_0000456c ();
    0x0000f2a8 b 0xf03a                                          |     goto label_3;
                                                                 | label_16:
    0x0000f2aa mov r3, r2                                        |     r3 = r2;
    0x0000f2ac b 0xf16e                                          |     goto label_5;
                                                                 | label_10:
    0x0000f2ae ldr r2, [r5, 0x3c]                                |     r2 = *((r5 + 0x3c));
    0x0000f2b0 ldrb.w r1, [r2, 0x218]                            |     r1 = *((r2 + 0x218));
    0x0000f2b4 mov r3, r2                                        |     r3 = r2;
    0x0000f2b6 lsls r1, r1, 0x1b                                 |     r1 <<= 0x1b;
                                                                 |     if (r1 < r1) {
    0x0000f2b8 bmi.w 0xf15e                                      |         goto label_6;
                                                                 |     }
    0x0000f2bc b 0xf17a                                          |     goto label_7;
                                                                 | label_8:
    0x0000f2be blx 0x42fc                                        |     fcn_000042fc ();
    0x0000f2c2 nop                                               |     
    0x0000f2c4 ldrh r4, [r1, 0x1e]                               |     r4 = *((r1 + 0x1e));
    0x0000f2c6 movs r1, r0                                       |     r1 = r0;
    0x0000f2c8 lsls r4, r4, 0xf                                  |     r4 <<= 0xf;
    0x0000f2ca movs r0, r0                                       |     
    0x0000f2cc ldrh r4, [r0, 0x1e]                               |     r4 = *((r0 + 0x1e));
    0x0000f2ce movs r1, r0                                       |     r1 = r0;
    0x0000f2d0 ldrh r2, [r4, 0x1c]                               |     r2 = *((r4 + 0x1c));
    0x0000f2d2 movs r1, r0                                       |     r1 = r0;
    0x0000f2d4 subs r4, 0x52                                     |     r4 -= 0x52;
    0x0000f2d6 movs r0, r0                                       |     
    0x0000f2d8 mov ip, r3                                        |     
    0x0000f2da movs r0, r0                                       |     
    0x0000f2dc str r0, [r7, 0x54]                                |     *((r7 + 0x54)) = r0;
    0x0000f2de movs r0, r0                                       |     
    0x0000f2e0 ldrb r6, [r3, 4]                                  |     r6 = *((r3 + 4));
    0x0000f2e2 movs r0, r0                                       |     
    0x0000f2e4 str r4, [r5, 0x54]                                |     *((r5 + 0x54)) = r4;
    0x0000f2e6 movs r0, r0                                       |     
    0x0000f2e8 lsls r0, r6, 0xf                                  |     r0 = r6 << 0xf;
    0x0000f2ea movs r0, r0                                       |     
    0x0000f2ec ldrb r4, [r5]                                     |     r4 = *(r5);
    0x0000f2ee movs r0, r0                                       |     
    0x0000f2f0 lsls r0, r3, 0x10                                 |     r0 = r3 << 0x10;
    0x0000f2f2 movs r0, r0                                       |     
    0x0000f2f4 strb r4, [r6, 0x1b]                               |     *((r6 + 0x1b)) = r4;
    0x0000f2f6 movs r0, r0                                       |     
    0x0000f2f8 str r6, [r6, 0x38]                                |     *((r6 + 0x38)) = r6;
    0x0000f2fa movs r0, r0                                       |     
    0x0000f2fc strb r2, [r4, 0x1c]                               |     *((r4 + 0x1c)) = r2;
    0x0000f2fe movs r0, r0                                       |     
    0x0000f300 str r0, [r1, 0x38]                                |     *((r1 + 0x38)) = r0;
    0x0000f302 movs r0, r0                                       |     
    0x0000f304 strb r2, [r0, 0x1a]                               |     *((r0 + 0x1a)) = r2;
    0x0000f306 movs r0, r0                                       |     
    0x0000f308 str r6, [r3, 0x34]                                |     *((r3 + 0x34)) = r6;
    0x0000f30a movs r0, r0                                       |     
                                                                 | }

[*] Function strcat used 4 times mod_proxy.so