[*] 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