[*] Binary protection state of mod_setenvif.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function strcat tear down of mod_setenvif.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_setenvif.so @ 0xe14 */
| #include <stdint.h>
|
; (fcn) fcn.00000e14 () | void fcn_00000e14 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| if (? >= ?) {
0x00000e14 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00000e18 mov r6, r2 | r6 = r2;
0x00000e1a ldr r2, [pc, 0x98] |
0x00000e1c sub sp, 0x10 |
0x00000e1e mov r4, r0 | r4 = r0;
0x00000e20 movs r5, 0 | r5 = 0;
0x00000e22 ldr r3, [pc, 0x94] | r3 = *(0xeba);
0x00000e24 add r7, sp, 4 | r7 += var_4h;
0x00000e26 add r2, pc | r2 = 0x1ce0;
0x00000e28 str r1, [sp, 4] | var_4h = r1;
0x00000e2a ldr.w sb, [pc, 0x90] |
0x00000e2e add.w r8, sp, 8 | r8 += var_8h;
0x00000e32 ldr r3, [r2, r3] |
0x00000e34 ldr.w sl, [pc, 0x88] |
0x00000e38 add sb, pc | sb = 0x1cfa;
0x00000e3a ldr r3, [r3] | r3 = *(0x1ce0);
0x00000e3c str r3, [sp, 0xc] | var_ch = r3;
0x00000e3e mov.w r3, 0 | r3 = 0;
0x00000e42 add sl, pc | sl = 0x1d06;
| do {
| label_0:
0x00000e44 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000e46 mov r1, r7 | r1 = r7;
0x00000e48 blx 0x910 | loc_imp_ap_getword_conf ();
0x00000e4c str r0, [sp, 8] | var_8h = r0;
0x00000e4e ldrb r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x00000e50 cbz r0, 0xe82 | goto label_3;
| }
0x00000e52 movs r2, 0x3d | r2 = 0x3d;
0x00000e54 mov r1, r8 | r1 = r8;
0x00000e56 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000e58 adds r5, 1 | r5++;
0x00000e5a blx 0x97c | loc_imp_ap_getword ();
0x00000e5e ldr r2, [sp, 8] | r2 = var_8h;
0x00000e60 mov r1, r0 | r1 = r0;
0x00000e62 ldrb r3, [r2] | r3 = *(r2);
| if (r3 != 0) {
0x00000e64 cbnz r3, 0xe7a | goto label_4;
| }
0x00000e66 ldrb r3, [r0] | r3 = *(r0);
0x00000e68 ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x00000e6a cmp r3, 0x21 |
0x00000e6c itte eq |
| if (r3 != 0x21) {
0x00000e6e addeq r1, 1 | r1++;
| }
| if (r3 != 0x21) {
0x00000e70 moveq r2, sl | r2 = sl;
| }
| if (r3 == 0x21) {
0x00000e72 movne r2, sb | r2 = sb;
| }
0x00000e74 blx 0x940 | loc_imp_apr_table_setn ();
0x00000e78 b 0xe44 |
| } while (1);
| label_4:
0x00000e7a ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x00000e7c blx 0x940 | loc_imp_apr_table_setn ();
0x00000e80 b 0xe44 | goto label_0;
| if (r5 == 0) {
| label_3:
0x00000e82 cbnz r5, 0xe94 |
0x00000e84 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x00000e86 mov r3, r5 | r3 = r5;
0x00000e88 ldr r1, [pc, 0x38] |
0x00000e8a ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000e8c ldr r2, [r2] | r2 = *(r2);
0x00000e8e add r1, pc | r1 = 0x1d56;
0x00000e90 blx 0x9ac | loc_imp_apr_pstrcat ()
| }
0x00000e94 ldr r2, [pc, 0x30] |
0x00000e96 ldr r3, [pc, 0x20] | r3 = *(0xeba);
0x00000e98 add r2, pc | r2 = 0x1d64;
0x00000e9a ldr r3, [r2, r3] | r3 = *(0x1d64);
0x00000e9c ldr r2, [r3] | r2 = *(0x1d64);
0x00000e9e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00000ea0 eors r2, r3 | r2 ^= r3;
0x00000ea2 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00000ea6 bne 0xeae |
0x00000ea8 add sp, 0x10 |
0x00000eaa pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x00000eae blx 0x8d4 | stack_chk_fail ();
0x00000eb2 nop |
0x00000eb4 asrs r2, r7, 4 | r2 = r7 >> 4;
0x00000eb6 movs r1, r0 | r1 = r0;
0x00000eb8 lsls r0, r2, 2 | r0 = r2 << 2;
0x00000eba movs r0, r0 |
0x00000ebc lsls r0, r2, 0x1b | r0 = r2 << 0x1b;
0x00000ebe movs r0, r0 |
0x00000ec0 lsls r2, r0, 0x1b | r2 = r0 << 0x1b;
0x00000ec2 movs r0, r0 |
0x00000ec4 lsls r6, r7, 0x19 | r6 = r7 << 0x19;
0x00000ec6 movs r0, r0 |
0x00000ec8 asrs r0, r1, 3 | r0 = r1 >> 3;
0x00000eca movs r1, r0 | r1 = r0;
0x00000ecc push {r4, r5, r6, r7, lr} |
0x00000ece mov r5, r1 | r5 = r1;
0x00000ed0 sub sp, 0x1c |
0x00000ed2 ldr r1, [pc, 0xb8] |
0x00000ed4 mov r4, r0 | r4 = r0;
0x00000ed6 str r2, [sp, 0xc] | var_ch_2 = r2;
0x00000ed8 ldr r2, [pc, 0xb4] | r2 = *(0xf90);
0x00000eda add r1, pc | r1 = 0x1e6c;
0x00000edc ldr r3, [r0, 0x34] | r3 = *((r0 + 0x34));
0x00000ede ldr r7, [pc, 0xb4] |
0x00000ee0 ldr r2, [r1, r2] |
0x00000ee2 add r7, pc | r7 = 0x1e7c;
0x00000ee4 ldr r2, [r2] | r2 = *(0x1e6c);
0x00000ee6 str r2, [sp, 0x14] | var_14h = r2;
0x00000ee8 mov.w r2, 0 | r2 = 0;
0x00000eec cmp r3, 0 |
| if (r3 == 0) {
0x00000eee beq 0xf76 | goto label_5;
| }
| label_2:
0x00000ef0 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000ef2 add r1, sp, 0xc | r1 += var_ch_2;
0x00000ef4 blx 0x910 | r0 = loc_imp_ap_getword_conf ();
0x00000ef8 ldrb r3, [r0] | r3 = *(r0);
0x00000efa mov r6, r0 | r6 = r0;
0x00000efc cmp r3, 0 |
| if (r3 == 0) {
0x00000efe beq 0xf66 | goto label_6;
| }
0x00000f00 ldr r0, [r5] | r0 = *(r5);
0x00000f02 blx 0x988 | loc_imp_apr_array_push ();
0x00000f06 movs r1, 2 | r1 = 2;
0x00000f08 mov r5, r0 | r5 = r0;
0x00000f0a ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000f0c blx 0x994 | loc_imp_apr_table_make ();
0x00000f10 ldr r3, [pc, 0x84] |
0x00000f12 movs r2, 0 | r2 = 0;
0x00000f14 str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x00000f16 mov r1, r6 | r1 = r6;
0x00000f18 str r2, [r5] | *(r5) = r2;
0x00000f1a mov r0, r4 | r0 = r4;
0x00000f1c str r2, [r5, 8] | *((r5 + 8)) = r2;
0x00000f1e strd r2, r2, [r5, 0xc] | __asm ("strd r2, r2, [r5, 0xc]");
0x00000f22 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00000f24 str r2, [sp] | *(sp) = r2;
0x00000f26 ldr r3, [r3, 8] | r3 = *(0xfa0);
0x00000f28 str r3, [sp, 4] | var_4h_2 = r3;
0x00000f2a add r3, sp, 0x10 | r3 += var_10h;
0x00000f2c blx 0x9b8 | loc_imp_ap_expr_parse_cmd_mi ();
0x00000f30 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00000f32 str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
| if (r3 == 0) {
0x00000f34 cbz r3, 0xf5a | goto label_7;
| }
0x00000f36 ldr r1, [pc, 0x64] |
0x00000f38 mov r2, r6 | r2 = r6;
0x00000f3a ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000f3c add r1, pc | r1 = 0x1ede;
0x00000f3e blx 0x964 | loc_imp_apr_psprintf ();
| do {
| label_1:
0x00000f42 ldr r2, [pc, 0x5c] |
0x00000f44 ldr r3, [pc, 0x48] | r3 = *(0xf90);
0x00000f46 add r2, pc | r2 = 0x1eec;
0x00000f48 ldr r3, [r2, r3] | r3 = *(0x1eec);
0x00000f4a ldr r2, [r3] | r2 = *(0x1eec);
0x00000f4c ldr r3, [sp, 0x14] | r3 = var_14h;
0x00000f4e eors r2, r3 | r2 ^= r3;
0x00000f50 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00000f54 bne 0xf86 | goto label_8;
| }
0x00000f56 add sp, 0x1c |
0x00000f58 pop {r4, r5, r6, r7, pc} |
| label_7:
0x00000f5a ldr r1, [sp, 0xc] | r1 = var_ch_2;
0x00000f5c mov r2, r5 | r2 = r5;
0x00000f5e mov r0, r4 | r0 = r4;
0x00000f60 bl 0xe14 | fcn_00000e14 (r0, r1, r2);
0x00000f64 b 0xf42 |
| } while (1);
| label_6:
0x00000f66 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x00000f68 ldr r1, [pc, 0x38] |
0x00000f6a ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000f6c ldr r2, [r2] | r2 = *(r2);
0x00000f6e add r1, pc | r1 = 0x1f16;
0x00000f70 blx 0x9ac | loc_imp_apr_pstrcat ()
0x00000f74 b 0xf42 | goto label_1;
| label_5:
0x00000f76 ldr r3, [pc, 0x20] | r3 = *(0xf9a);
0x00000f78 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x00000f7a ldr r2, [r7, r3] | r2 = *((r7 + r3));
0x00000f7c ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x00000f7e ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00000f80 ldr.w r5, [r3, r2, lsl 2] | r5 = *(0xf9a);
0x00000f84 b 0xef0 | goto label_2;
| label_8:
0x00000f86 blx 0x8d4 | stack_chk_fail ();
0x00000f8a nop |
0x00000f8c asrs r6, r0, 2 | r6 = r0 >> 2;
0x00000f8e movs r1, r0 | r1 = r0;
0x00000f90 lsls r0, r2, 2 | r0 = r2 << 2;
0x00000f92 movs r0, r0 |
0x00000f94 asrs r6, r7, 1 | r6 = r7 >> 1;
0x00000f96 movs r1, r0 | r1 = r0;
0x00000f98 lsls r4, r1, 2 | r4 = r1 << 2;
0x00000f9a movs r0, r0 |
0x00000f9c lsls r4, r1, 0x18 | r4 = r1 << 0x18;
0x00000f9e movs r0, r0 |
0x00000fa0 asrs r2, r3, 0x20 | r2 = r3 >> 0x20;
0x00000fa2 movs r1, r0 | r1 = r0;
0x00000fa4 lsls r2, r0, 0x17 | r2 = r0 << 0x17;
0x00000fa6 movs r0, r0 |
0x00000fa8 push {r3, r4, r5, r6, r7, lr} |
0x00000faa mov r5, r1 | r5 = r1;
0x00000fac movs r1, 4 | r1 = 4;
0x00000fae mov r7, r0 | r7 = r0;
0x00000fb0 mov r6, r2 | r6 = r2;
0x00000fb2 blx 0x904 | loc_imp_apr_palloc ();
0x00000fb6 movs r3, 0 | r3 = 0;
0x00000fb8 mov r4, r0 | r4 = r0;
0x00000fba str r3, [r4] | *(r4) = r3;
0x00000fbc mov r0, r7 | r0 = r7;
0x00000fbe ldr r2, [r6] | r2 = *(r6);
0x00000fc0 ldr r1, [r5] | r1 = *(r5);
0x00000fc2 blx 0x928 | loc_imp_apr_array_append ();
0x00000fc6 str r0, [r4] | *(r4) = r0;
0x00000fc8 mov r0, r4 | r0 = r4;
0x00000fca pop {r3, r4, r5, r6, r7, pc} |
| }
; 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_setenvif.so @ 0x1028 */
| #include <stdint.h>
|
; (fcn) fcn.00001028 () | void fcn_00001028 (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;
0x00001028 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000102c mov r6, r0 | r6 = r0;
0x0000102e ldr r4, [pc, 0x2c8] |
0x00001030 sub sp, 0x1c |
0x00001032 mov r5, r2 | r5 = r2;
0x00001034 mov r7, r1 | r7 = r1;
0x00001036 ldr r0, [r0, 0x34] | r0 = *((r0 + 0x34));
0x00001038 add r4, pc | r4 = 0x2336;
0x0000103a str r3, [sp, 0x14] | var_14h = r3;
0x0000103c str r4, [sp, 0xc] | var_ch = r4;
0x0000103e cmp r0, 0 |
| if (r0 == 0) {
0x00001040 beq.w 0x11bc | goto label_9;
| }
| label_2:
0x00001044 ldr r3, [r7] | r3 = *(r7);
0x00001046 add r1, sp, 0x14 | r1 += var_14h;
0x00001048 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0000104a ldr r4, [r3, 0x10] | r4 = *((r3 + 0x10));
0x0000104c blx 0x910 | r0 = loc_imp_ap_getword_conf ();
0x00001050 ldrb r3, [r0] | r3 = *(r0);
0x00001052 mov sl, r0 | sl = r0;
0x00001054 cmp r3, 0 |
| if (r3 == 0) {
0x00001056 beq.w 0x11e2 | goto label_10;
| }
0x0000105a ldr r3, [r7] | r3 = *(r7);
0x0000105c ldr.w sb, [r3, 8] | sb = *((r3 + 8));
0x00001060 str r3, [sp, 0x10] | var_10h = r3;
0x00001062 cmp.w sb, 0 |
0x00001066 itt gt |
| if (sb <= 0) {
0x00001068 addgt r8, sb, sb, lsl 3 | r8 = sb + (sb << 3);
| }
| if (sb > 0) {
0x0000106c mov.w fp, 0 |
| }
| if (sb <= 0) {
0x00001070 ble.w 0x11f6 | goto label_11;
| }
| do {
0x00001074 ldr.w r7, [r4, fp, lsl 2] | offset_0 = fp << 2;
| r7 = *((r4 + offset_0));
0x00001078 mov r1, r5 | r1 = r5;
0x0000107a add.w fp, fp, 9 |
0x0000107e mov r0, r7 | r0 = r7;
| if (r7 != 0) {
0x00001080 cbz r7, 0x108c |
0x00001082 blx 0x8ec | r0 = strcasecmp (r0, r1);
0x00001086 cmp r0, 0 |
| if (r0 == 0) {
0x00001088 beq.w 0x122c | goto label_12;
| }
| }
0x0000108c cmp r8, fp |
0x0000108e bne 0x1074 |
| } while (r8 != fp);
0x00001090 add.w r3, sb, -1 | r3 = sb + -1;
| label_5:
0x00001094 ldr r2, [pc, 0x264] | r2 = *(0x12fc);
0x00001096 add.w r3, r3, r3, lsl 3 | r3 += (r3 << 3);
0x0000109a ldr r1, [sp, 0xc] | r1 = var_ch;
0x0000109c lsls r3, r3, 2 | r3 <<= 2;
0x0000109e ldr.w sb, [r1, r2] | sb = *((r1 + r2));
0x000010a2 ldr r2, [r6] | r2 = *(r6);
0x000010a4 sub.w r8, r2, sb | r8 = r2 - sb;
0x000010a8 str r2, [sp, 0xc] | var_ch = r2;
0x000010aa ldr r2, [r4, r3] | r2 = *((r4 + r3));
0x000010ac clz r8, r8 | r8 &= r8;
0x000010b0 lsr.w r8, r8, 5 | r8 >>= 5;
0x000010b4 add r4, r3 | r4 += r3;
0x000010b6 cmp r2, r5 |
| if (r2 == r5) {
0x000010b8 beq.w 0x1216 | goto label_13;
| }
| label_4:
0x000010bc ldr r0, [sp, 0x10] | r0 = var_10h;
0x000010be blx 0x988 | r0 = loc_imp_apr_array_push ();
0x000010c2 str r5, [r0] | *(r0) = r5;
0x000010c4 mov r4, r0 | r4 = r0;
0x000010c6 str.w sl, [r0, 8] | __asm ("str.w sl, [r0, 8]");
0x000010ca str.w r8, [r0, 0x20] | __asm ("str.w r8, [r0, 0x20]");
0x000010ce ldrb.w r3, [sl] | r3 = *(sl);
0x000010d2 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x000010d4 cmp r3, 0 |
| if (r3 == 0) {
0x000010d6 beq 0x1142 | goto label_7;
| }
0x000010d8 movs r7, 0 | r7 = 0;
0x000010da movw r1, 0x4f1 |
0x000010de movt r1, 0x800 | r1 = 0x80004f1;
0x000010e2 mov ip, sl |
0x000010e4 mov r2, r7 | r2 = r7;
| do {
0x000010e6 cmp r3, 0x3f |
| if (r3 >= 0x3f) {
0x000010e8 bls 0x1122 |
0x000010ea subs r3, 0x5b | r3 -= 0x5b;
0x000010ec uxtb.w fp, r3 | fp = (int8_t) r3;
0x000010f0 cmp.w fp, 0x22 |
| if (fp > 0x22) {
0x000010f4 bhi 0x1132 | goto label_14;
| }
0x000010f6 cmp r3, 0x22 |
| if (r3 > 0x22) {
0x000010f8 bhi 0x1132 | goto label_14;
| }
| /* switch table (35 cases) at 0x10fe */
0x000010fa tbb [pc, r3] | __asm ("tbb [0x00001100]");
| }
0x00001122 cmp r3, 0x23 |
| if (r3 >= 0x23) {
0x00001124 bls 0x1132 |
0x00001126 subs r3, 0x24 | r3 -= 0x24;
0x00001128 uxtb r3, r3 | r3 = (int8_t) r3;
0x0000112a lsr.w r3, r1, r3 | r3 = r1 >> r3;
0x0000112e lsls r3, r3, 0x1f | r3 <<= 0x1f;
| if (r3 < r3) {
0x00001130 bmi 0x118a | goto label_15;
| }
| }
| label_14:
0x00001132 cmp r2, 0 |
| if (r2 != 0) {
0x00001134 bne 0x11cc | goto label_6;
| }
| label_0:
0x00001136 ldrb r3, [ip, 1]! | r3 = *((ip += 1));
0x0000113a cmp r3, 0 |
0x0000113c bne 0x10e6 |
| } while (r3 != 0);
0x0000113e cmp r7, 0 |
| if (r7 != 0) {
0x00001140 bne 0x1234 | goto label_16;
| }
| label_7:
0x00001142 ldr r3, [sp, 0xc] | r3 = var_ch;
0x00001144 mov r1, sl | r1 = sl;
0x00001146 subs.w r2, r3, sb | r2 = r3 - sb;
0x0000114a it ne |
| if (r2 == r3) {
0x0000114c movne r2, 1 | r2 = 1;
| }
0x0000114e blx 0x9d0 | r0 = loc_imp_apr_strmatch_precompile ();
0x00001152 mov r3, r0 | r3 = r0;
0x00001154 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x00001156 cmp r0, 0 |
| if (r0 == 0) {
0x00001158 beq.w 0x1280 | goto label_17;
| }
0x0000115c movs r3, 0 | r3 = 0;
0x0000115e str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_3:
0x00001160 movs r1, 2 | r1 = 2;
0x00001162 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x00001164 blx 0x994 | loc_imp_apr_table_make ();
0x00001168 ldr r1, [pc, 0x194] |
0x0000116a str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x0000116c mov r0, r5 | r0 = r5;
0x0000116e add r1, pc | r1 = 0x2472;
0x00001170 blx 0x8ec | r0 = strcasecmp (r0, r1);
| if (r0 != 0) {
0x00001174 cbnz r0, 0x119a | goto label_18;
| }
0x00001176 movs r3, 1 | r3 = 1;
0x00001178 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_1:
0x0000117a ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000117c mov r2, r4 | r2 = r4;
0x0000117e mov r0, r6 | r0 = r6;
0x00001180 bl 0xe14 | fcn_00000e14 (r0, r1, r2);
| label_8:
0x00001184 add sp, 0x1c |
0x00001186 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r2 == 0) {
| label_15:
0x0000118a cbz r2, 0x11cc | goto label_6;
| }
| do {
0x0000118c movs r2, 0 | r2 = 0;
0x0000118e b 0x1136 | goto label_0;
0x00001190 cmp r2, 0 |
0x00001192 bne 0x118c |
| } while (r2 != 0);
0x00001194 movs r2, 1 | r2 = 1;
0x00001196 mov r7, r2 | r7 = r2;
0x00001198 b 0x1136 | goto label_0;
| label_18:
0x0000119a ldr r1, [pc, 0x168] |
0x0000119c mov r0, r5 | r0 = r5;
0x0000119e add r1, pc | r1 = 0x24a8;
0x000011a0 blx 0x8ec | r0 = strcasecmp (r0, r1);
0x000011a4 cmp r0, 0 |
| if (r0 != 0) {
0x000011a6 beq 0x1210 |
0x000011a8 ldr r1, [pc, 0x15c] |
0x000011aa mov r0, r5 | r0 = r5;
0x000011ac add r1, pc | r1 = 0x24b8;
0x000011ae blx 0x8ec | r0 = strcasecmp (r0, r1);
0x000011b2 cmp r0, 0 |
| if (r0 != 0) {
0x000011b4 bne 0x1262 | goto label_19;
| }
0x000011b6 movs r3, 3 | r3 = 3;
0x000011b8 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x000011ba b 0x117a | goto label_1;
| label_9:
0x000011bc ldr r3, [pc, 0x13c] | r3 = *(0x12fc);
0x000011be ldr r1, [r6, 0x30] | r1 = *((r6 + 0x30));
0x000011c0 ldr r2, [r4, r3] | r2 = *((r4 + r3));
0x000011c2 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x000011c4 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000011c6 ldr.w r7, [r3, r2, lsl 2] | r7 = *(0x12fc);
0x000011ca b 0x1044 | goto label_2;
| label_6:
0x000011cc mov r1, sl | r1 = sl;
0x000011ce mov r2, r8 | r2 = r8;
0x000011d0 blx 0x970 | r0 = loc_imp_ap_pregcomp ();
0x000011d4 mov r3, r0 | r3 = r0;
0x000011d6 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000011d8 cmp r0, 0 |
| if (r0 == 0) {
0x000011da beq 0x1296 | goto label_20;
| }
0x000011dc movs r3, 0 | r3 = 0;
0x000011de str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x000011e0 b 0x1160 | goto label_3;
| label_10:
0x000011e2 ldr r2, [r6, 0x38] | r2 = *((r6 + 0x38));
0x000011e4 ldr r1, [pc, 0x124] |
0x000011e6 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x000011e8 ldr r2, [r2] | r2 = *(r2);
0x000011ea add r1, pc | r1 = 0x24fa;
0x000011ec blx 0x9ac | loc_imp_apr_pstrcat ()
0x000011f0 add sp, 0x1c |
0x000011f2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_11:
0x000011f6 ldr r3, [pc, 0x104] | r3 = *(0x12fe);
0x000011f8 ldr r2, [sp, 0xc] | r2 = var_ch;
0x000011fa ldr.w sb, [r2, r3] | sb = *((r2 + r3));
0x000011fe ldr r3, [r6] | r3 = *(r6);
0x00001200 sub.w r8, r3, sb | r8 = r3 - sb;
0x00001204 str r3, [sp, 0xc] | var_ch = r3;
0x00001206 clz r8, r8 | r8 &= r8;
0x0000120a lsr.w r8, r8, 5 | r8 >>= 5;
0x0000120e b 0x10bc | goto label_4;
| }
0x00001210 movs r3, 2 | r3 = 2;
0x00001212 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00001214 b 0x117a | goto label_1;
| label_13:
0x00001216 ldr r3, [r4, 0x20] | r3 = *((r4 + 0x20));
0x00001218 cmp r3, r8 |
| if (r3 != r8) {
0x0000121a bne.w 0x10bc | goto label_4;
| }
0x0000121e ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x00001220 mov r1, sl | r1 = sl;
0x00001222 blx 0x898 | r0 = strcmp (r0, r1);
0x00001226 cmp r0, 0 |
| if (r0 == 0) {
0x00001228 beq 0x117a | goto label_1;
| }
0x0000122a b 0x10bc | goto label_4;
| label_12:
0x0000122c add.w r3, sb, -1 | r3 = sb + -1;
0x00001230 mov r5, r7 | r5 = r7;
0x00001232 b 0x1094 | goto label_5;
| label_16:
0x00001234 sub.w r1, ip, sl | r1 = ip - sl;
0x00001238 adds r1, 1 | r1++;
0x0000123a blx 0x904 | loc_imp_apr_palloc ();
0x0000123e mov r2, sl | r2 = sl;
0x00001240 mov r7, r0 | r7 = r0;
0x00001242 mov r1, r0 | r1 = r0;
| do {
0x00001244 ldrb r3, [r2] | r3 = *(r2);
0x00001246 cmp r3, 0x5c |
0x00001248 itt eq |
| if (r3 != 0x5c) {
0x0000124a ldrbeq r3, [r2, 1] | r3 = *((r2 + 1));
| }
| if (r3 != 0x5c) {
0x0000124c addeq r2, 1 | r2++;
| }
0x0000124e adds r2, 1 | r2++;
0x00001250 strb r3, [r1], 1 | *(r1) = r3;
| r1++;
0x00001254 cmp r3, 0 |
0x00001256 bne 0x1244 |
| } while (r3 != 0);
0x00001258 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0000125a cmp r7, 0 |
| if (r7 == 0) {
0x0000125c beq 0x11cc | goto label_6;
| }
0x0000125e mov sl, r7 | sl = r7;
0x00001260 b 0x1142 | goto label_7;
| label_19:
0x00001262 ldr r1, [pc, 0xac] |
0x00001264 mov r0, r5 | r0 = r5;
0x00001266 add r1, pc | r1 = 0x257c;
0x00001268 blx 0x8ec | r0 = strcasecmp (r0, r1);
| if (r0 != 0) {
0x0000126c cbz r0, 0x1290 |
0x0000126e ldr r1, [pc, 0xa4] |
0x00001270 mov r0, r5 | r0 = r5;
0x00001272 add r1, pc | r1 = 0x258c;
0x00001274 blx 0x8ec | r0 = strcasecmp (r0, r1);
| if (r0 != 0) {
0x00001278 cbnz r0, 0x12a6 | goto label_21;
| }
0x0000127a movs r3, 5 | r3 = 5;
0x0000127c str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x0000127e b 0x117a | goto label_1;
| label_17:
0x00001280 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
0x00001282 ldr r2, [pc, 0x94] |
0x00001284 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x00001286 ldr r1, [r1] | r1 = *(r1);
0x00001288 add r2, pc | r2 = 0x25a6;
0x0000128a blx 0x9ac | loc_imp_apr_pstrcat ()
0x0000128e b 0x1184 | goto label_8;
| }
0x00001290 movs r3, 4 | r3 = 4;
0x00001292 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00001294 b 0x117a | goto label_1;
| label_20:
0x00001296 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
0x00001298 ldr r2, [pc, 0x80] |
0x0000129a ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x0000129c ldr r1, [r1] | r1 = *(r1);
0x0000129e add r2, pc | r2 = 0x25be;
0x000012a0 blx 0x9ac | loc_imp_apr_pstrcat ()
0x000012a4 b 0x1184 | goto label_8;
| label_21:
0x000012a6 ldr r1, [pc, 0x78] |
0x000012a8 mov r0, r5 | r0 = r5;
0x000012aa add r1, pc | r1 = 0x25d0;
0x000012ac blx 0x8ec | r0 = strcasecmp (r0, r1);
| if (r0 == 0) {
0x000012b0 cbnz r0, 0x12b8 |
0x000012b2 movs r3, 6 | r3 = 6;
0x000012b4 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x000012b6 b 0x117a | goto label_1;
| }
0x000012b8 ldr r2, [pc, 0x68] |
0x000012ba movs r3, 0 | r3 = 0;
0x000012bc str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x000012be mov r1, r5 | r1 = r5;
0x000012c0 str r3, [sp] | *(sp) = r3;
0x000012c2 add r2, pc | r2 = 0x25ea;
0x000012c4 ldr r0, [r2] | r0 = *(0x25ea);
0x000012c6 mov r2, r3 | r2 = r3;
0x000012c8 blx 0x8f8 | r0 = loc_imp_ap_regexec ();
| if (r0 == 0) {
0x000012cc cbnz r0, 0x12d2 |
0x000012ce str r0, [r4, 4] | *((r4 + 4)) = r0;
0x000012d0 b 0x117a | goto label_1;
| }
0x000012d2 ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x000012d4 mov r2, r8 | r2 = r8;
0x000012d6 mov r1, r5 | r1 = r5;
0x000012d8 blx 0x970 | r0 = loc_imp_ap_pregcomp ();
0x000012dc mov r3, r0 | r3 = r0;
0x000012de str r0, [r4, 4] | *((r4 + 4)) = r0;
0x000012e0 cmp r0, 0 |
| if (r0 != 0) {
0x000012e2 bne.w 0x117a | goto label_1;
| }
0x000012e6 ldr r1, [r6, 0x38] | r1 = *((r6 + 0x38));
0x000012e8 ldr r2, [pc, 0x3c] |
0x000012ea ldr r0, [r6, 0x28] | r0 = *((r6 + 0x28));
0x000012ec ldr r1, [r1] | r1 = *(r1);
0x000012ee add r2, pc | r2 = 0x261a;
0x000012f0 blx 0x9ac | loc_imp_apr_pstrcat ()
0x000012f4 b 0x1184 | goto label_8;
| }
[*] Function strcat used 7 times mod_setenvif.so