[*] 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-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_setenvif.so @ 0xeb4 */
| #include <stdint.h>
|
; (fcn) fcn.00000eb4 () | void fcn_00000eb4 (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 (? >= ?) {
0x00000eb4 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x00000eb8 mov r6, r2 | r6 = r2;
0x00000eba ldr r2, [pc, 0x98] |
0x00000ebc sub sp, 0x10 |
0x00000ebe mov r4, r0 | r4 = r0;
0x00000ec0 movs r5, 0 | r5 = 0;
0x00000ec2 ldr r3, [pc, 0x94] | r3 = *(0xf5a);
0x00000ec4 add r7, sp, 4 | r7 += var_4h;
0x00000ec6 add r2, pc | r2 = 0x1e20;
0x00000ec8 str r1, [sp, 4] | var_4h = r1;
0x00000eca ldr.w sb, [pc, 0x90] |
0x00000ece add.w r8, sp, 8 | r8 += var_8h;
0x00000ed2 ldr r3, [r2, r3] |
0x00000ed4 ldr.w sl, [pc, 0x88] |
0x00000ed8 add sb, pc | sb = 0x1e3a;
0x00000eda ldr r3, [r3] | r3 = *(0x1e20);
0x00000edc str r3, [sp, 0xc] | var_ch = r3;
0x00000ede mov.w r3, 0 | r3 = 0;
0x00000ee2 add sl, pc | sl = 0x1e46;
| do {
0x00000ee4 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000ee6 mov r1, r7 | r1 = r7;
0x00000ee8 blx 0x9b8 | loc_imp_ap_getword_conf ();
0x00000eec str r0, [sp, 8] | var_8h = r0;
0x00000eee ldrb r0, [r0] | r0 = *(r0);
| if (r0 == 0) {
0x00000ef0 cbz r0, 0xf22 | goto label_2;
| }
0x00000ef2 movs r2, 0x3d | r2 = 0x3d;
0x00000ef4 mov r1, r8 | r1 = r8;
0x00000ef6 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000ef8 adds r5, 1 | r5++;
0x00000efa blx 0xa24 | loc_imp_ap_getword ();
0x00000efe ldr r2, [sp, 8] | r2 = var_8h;
0x00000f00 mov r1, r0 | r1 = r0;
0x00000f02 ldrb r3, [r2] | r3 = *(r2);
| if (r3 == 0) {
0x00000f04 cbnz r3, 0xf1a |
0x00000f06 ldrb r3, [r0] | r3 = *(r0);
0x00000f08 ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x00000f0a cmp r3, 0x21 |
0x00000f0c itte eq |
| if (r3 != 0x21) {
0x00000f0e addeq r1, 1 | r1++;
| }
| if (r3 != 0x21) {
0x00000f10 moveq r2, sl | r2 = sl;
| }
| if (r3 == 0x21) {
0x00000f12 movne r2, sb | r2 = sb;
| }
0x00000f14 blx 0x9e8 | loc_imp_apr_table_setn ();
0x00000f16 stcl p7, c14, [r8, -0x390]! | __asm ("stcl p7, c14, [r8, -0x390]!");
| }
0x00000f1a ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x00000f1c blx 0x9e8 | loc_imp_apr_table_setn ();
0x00000f20 b 0xee4 |
| } while (1);
| if (r5 == 0) {
| label_2:
0x00000f22 cbnz r5, 0xf34 |
0x00000f24 ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x00000f26 mov r3, r5 | r3 = r5;
0x00000f28 ldr r1, [pc, 0x38] |
0x00000f2a ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000f2c ldr r2, [r2] | r2 = *(r2);
0x00000f2e add r1, pc | r1 = 0x1e96;
0x00000f30 blx 0xa54 | loc_imp_apr_pstrcat ()
| }
0x00000f34 ldr r2, [pc, 0x30] |
0x00000f36 ldr r3, [pc, 0x20] | r3 = *(0xf5a);
0x00000f38 add r2, pc | r2 = 0x1ea4;
0x00000f3a ldr r3, [r2, r3] | r3 = *(0x1ea4);
0x00000f3c ldr r2, [r3] | r2 = *(0x1ea4);
0x00000f3e ldr r3, [sp, 0xc] | r3 = var_ch;
0x00000f40 eors r2, r3 | r2 ^= r3;
0x00000f42 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00000f46 bne 0xf4e |
0x00000f48 add sp, 0x10 |
0x00000f4a pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
0x00000f4e blx 0x97c | stack_chk_fail ();
0x00000f52 nop |
0x00000f54 movs r0, 0x9a | r0 = 0x9a;
0x00000f56 movs r0, r0 |
0x00000f58 lsls r0, r2, 2 | r0 = r2 << 2;
0x00000f5a movs r0, r0 |
0x00000f5c lsls r4, r0, 0x1b | r4 = r0 << 0x1b;
0x00000f5e movs r0, r0 |
0x00000f60 lsls r6, r6, 0x1a | r6 <<= 0x1a;
0x00000f62 movs r0, r0 |
0x00000f64 lsls r2, r6, 0x19 | r2 = r6 << 0x19;
0x00000f66 movs r0, r0 |
0x00000f68 movs r0, 0x28 | r0 = 0x28;
0x00000f6a movs r0, r0 |
0x00000f6c push {r4, r5, r6, r7, lr} |
0x00000f6e mov r5, r1 | r5 = r1;
0x00000f70 sub sp, 0x1c |
0x00000f72 ldr r1, [pc, 0xc0] |
0x00000f74 mov r4, r0 | r4 = r0;
0x00000f76 str r2, [sp, 0xc] | var_ch_2 = r2;
0x00000f78 ldr r2, [pc, 0xbc] | r2 = *(0x1038);
0x00000f7a add r1, pc | r1 = 0x1fb4;
0x00000f7c ldr r3, [r0, 0x34] | r3 = *((r0 + 0x34));
0x00000f7e ldr r7, [pc, 0xbc] |
0x00000f80 ldr r2, [r1, r2] |
0x00000f82 add r7, pc | r7 = 0x1fc4;
0x00000f84 ldr r2, [r2] | r2 = *(0x1fb4);
0x00000f86 str r2, [sp, 0x14] | var_14h = r2;
0x00000f88 mov.w r2, 0 | r2 = 0;
0x00000f8c cmp r3, 0 |
| if (r3 == 0) {
0x00000f8e beq 0x101e | goto label_3;
| }
| label_1:
0x00000f90 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000f92 add r1, sp, 0xc | r1 += var_ch_2;
0x00000f94 blx 0x9b8 | r0 = loc_imp_ap_getword_conf ();
0x00000f98 ldrb r3, [r0] | r3 = *(r0);
0x00000f9a mov r6, r0 | r6 = r0;
0x00000f9c cmp r3, 0 |
| if (r3 == 0) {
0x00000f9e beq 0x100e | goto label_4;
| }
0x00000fa0 ldr r0, [r5] | r0 = *(r5);
0x00000fa2 blx 0xa30 | loc_imp_apr_array_push ();
0x00000fa6 movs r1, 2 | r1 = 2;
0x00000fa8 mov r5, r0 | r5 = r0;
0x00000faa ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000fac blx 0xa3c | loc_imp_apr_table_make ();
0x00000fb0 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00000fb4 add.w r1, r5, 8 | r1 = r5 + 8;
0x00000fb8 ldr r3, [pc, 0x84] |
0x00000fba movs r2, 0 | r2 = 0;
0x00000fbc str r0, [r5, 0x18] | *((r5 + 0x18)) = r0;
0x00000fbe mov r0, r4 | r0 = r4;
0x00000fc0 str r2, [r5] | *(r5) = r2;
0x00000fc2 str r2, [r5, 0x10] | *((r5 + 0x10)) = r2;
0x00000fc4 vst1.32 {d16}, [r1] | __asm ("vst1.32 {d16}, [r1]");
0x00000fc8 mov r1, r6 | r1 = r6;
0x00000fca ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00000fcc str r2, [sp] | *(sp) = r2;
0x00000fce ldr r3, [r3, 8] | r3 = *(0x1048);
0x00000fd0 str r3, [sp, 4] | var_4h_2 = r3;
0x00000fd2 add r3, sp, 0x10 | r3 += var_10h;
0x00000fd4 blx 0xa60 | loc_imp_ap_expr_parse_cmd_mi ();
0x00000fd8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00000fda str r0, [r5, 0x14] | *((r5 + 0x14)) = r0;
| if (r3 == 0) {
0x00000fdc cbz r3, 0x1002 | goto label_5;
| }
0x00000fde ldr r1, [pc, 0x64] |
0x00000fe0 mov r2, r6 | r2 = r6;
0x00000fe2 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00000fe4 add r1, pc | r1 = 0x202e;
0x00000fe6 blx 0xa0c | loc_imp_apr_psprintf ();
| do {
| label_0:
0x00000fea ldr r2, [pc, 0x5c] |
0x00000fec ldr r3, [pc, 0x48] | r3 = *(0x1038);
0x00000fee add r2, pc | r2 = 0x203c;
0x00000ff0 ldr r3, [r2, r3] | r3 = *(0x203c);
0x00000ff2 ldr r2, [r3] | r2 = *(0x203c);
0x00000ff4 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00000ff6 eors r2, r3 | r2 ^= r3;
0x00000ff8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00000ffc bne 0x102e | goto label_6;
| }
0x00000ffe add sp, 0x1c |
0x00001000 pop {r4, r5, r6, r7, pc} |
| label_5:
0x00001002 ldr r1, [sp, 0xc] | r1 = var_ch_2;
0x00001004 mov r2, r5 | r2 = r5;
0x00001006 mov r0, r4 | r0 = r4;
0x00001008 bl 0xeb4 | fcn_00000eb4 (r0, r1, r2);
0x0000100c b 0xfea |
| } while (1);
| label_4:
0x0000100e ldr r2, [r4, 0x38] | r2 = *((r4 + 0x38));
0x00001010 ldr r1, [pc, 0x38] |
0x00001012 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x00001014 ldr r2, [r2] | r2 = *(r2);
0x00001016 add r1, pc | r1 = 0x2066;
0x00001018 blx 0xa54 | loc_imp_apr_pstrcat ()
0x0000101c b 0xfea | goto label_0;
| label_3:
0x0000101e ldr r3, [pc, 0x20] | r3 = *(0x1042);
0x00001020 ldr r1, [r0, 0x30] | r1 = *((r0 + 0x30));
0x00001022 ldr r2, [r7, r3] | r2 = *((r7 + r3));
0x00001024 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x00001026 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00001028 ldr.w r5, [r3, r2, lsl 2] | r5 = *(0x1042);
0x0000102c b 0xf90 | goto label_1;
| label_6:
0x0000102e blx 0x97c | stack_chk_fail ();
0x00001032 nop |
0x00001034 subs r6, r4, 7 | r6 = r4 - 7;
0x00001036 movs r0, r0 |
0x00001038 lsls r0, r2, 2 | r0 = r2 << 2;
0x0000103a movs r0, r0 |
0x0000103c subs r6, r3, 7 | r6 = r3 - 7;
0x0000103e movs r0, r0 |
0x00001040 lsls r4, r1, 2 | r4 = r1 << 2;
0x00001042 movs r0, r0 |
0x00001044 lsls r0, r7, 0x17 | r0 = r7 << 0x17;
0x00001046 movs r0, r0 |
0x00001048 subs r2, r6, 5 | r2 = r6 - 5;
0x0000104a movs r0, r0 |
0x0000104c lsls r6, r5, 0x16 | r6 = r5 << 0x16;
0x0000104e movs r0, r0 |
0x00001050 push {r3, r4, r5, r6, r7, lr} |
0x00001052 mov r5, r1 | r5 = r1;
0x00001054 movs r1, 4 | r1 = 4;
0x00001056 mov r7, r0 | r7 = r0;
0x00001058 mov r6, r2 | r6 = r2;
0x0000105a blx 0x9ac | loc_imp_apr_palloc ();
0x0000105e movs r3, 0 | r3 = 0;
0x00001060 mov r4, r0 | r4 = r0;
0x00001062 str r3, [r4] | *(r4) = r3;
0x00001064 mov r0, r7 | r0 = r7;
0x00001066 ldr r2, [r6] | r2 = *(r6);
0x00001068 ldr r1, [r5] | r1 = *(r5);
0x0000106a blx 0x9d0 | loc_imp_apr_array_append ();
0x0000106e str r0, [r4] | *(r4) = r0;
0x00001070 mov r0, r4 | r0 = r4;
0x00001072 pop {r3, r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_setenvif.so @ 0x10d0 */
| #include <stdint.h>
|
; (fcn) fcn.000010d0 () | void fcn_000010d0 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000010d0 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000010d4 mov r8, r0 | r8 = r0;
0x000010d6 ldr r0, [r0, 0x34] | r0 = *((r0 + 0x34));
0x000010d8 sub sp, 0x24 |
0x000010da mov r6, r2 | r6 = r2;
0x000010dc mov r4, r1 | r4 = r1;
0x000010de ldr r5, [pc, 0x2b8] |
0x000010e0 str r3, [sp, 0x1c] | var_1ch = r3;
0x000010e2 add r5, pc | r5 = 0x2480;
0x000010e4 cmp r0, 0 |
| if (r0 == 0) {
0x000010e6 beq.w 0x126e | goto label_9;
| }
| label_4:
0x000010ea ldr r3, [r4] | r3 = *(r4);
0x000010ec add r1, sp, 0x1c | r1 += var_1ch;
0x000010ee ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x000010f2 ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
0x000010f4 blx 0x9b8 | r0 = loc_imp_ap_getword_conf ();
0x000010f8 ldrb r3, [r0] | r3 = *(r0);
0x000010fa mov fp, r0 |
0x000010fc cmp r3, 0 |
| if (r3 == 0) {
0x000010fe beq.w 0x12c2 | goto label_10;
| }
0x00001102 ldr r1, [pc, 0x298] | r1 = *(0x139e);
0x00001104 ldr r2, [r4] | r2 = *(r4);
0x00001106 ldr.w sl, [r8] | sl = *(r8);
0x0000110a ldr r3, [r5, r1] | r3 = *((r5 + r1));
0x0000110c ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x0000110e str r3, [sp, 0x18] | var_18h = r3;
0x00001110 sub.w r3, sl, r3 | r3 = sl - r3;
0x00001114 clz r3, r3 | r3 &= r3;
0x00001116 usat sb, 0, r3, lsl 8 | __asm ("usat sb, 0, r3, lsl 8");
0x0000111a lsr.w r3, r3, 5 | r3 >>= 5;
0x0000111e str r3, [sp, 0xc] | var_ch = r3;
| if (r3 <= 0) {
0x00001120 ble 0x1164 | goto label_6;
| }
0x00001122 add.w sb, r1, r1, lsl 3 | sb = r1 + (r1 << 3);
0x00001126 movs r4, 0 | r4 = 0;
0x00001128 strd r1, r2, [sp, 0x10] | __asm ("strd r1, r2, [var_10h]");
| do {
0x0000112c ldr.w r5, [r7, r4, lsl 2] | offset_0 = r4 << 2;
| r5 = *((r7 + offset_0));
0x00001130 mov r1, r6 | r1 = r6;
0x00001132 adds r4, 9 | r4 += 9;
0x00001134 mov r0, r5 | r0 = r5;
| if (r5 != 0) {
0x00001136 cbz r5, 0x1142 |
0x00001138 blx 0x994 | r0 = strcasecmp (r0, r1);
0x0000113c cmp r0, 0 |
| if (r0 == 0) {
0x0000113e beq.w 0x1266 | goto label_11;
| }
| }
0x00001142 cmp sb, r4 |
0x00001144 bne 0x112c |
| } while (sb != r4);
0x00001146 ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [var_10h]");
| label_3:
0x0000114a subs r4, r1, 1 | r4 = r1 - 1;
0x0000114c add.w r4, r4, r4, lsl 3 | r4 += (r4 << 3);
0x00001150 lsls r4, r4, 2 | r4 <<= 2;
0x00001152 ldr r1, [r7, r4] | r1 = *((r7 + r4));
0x00001154 add r4, r7 | r4 += r7;
0x00001156 cmp r1, r6 |
| if (r1 == r6) {
0x00001158 bne 0x1164 |
0x0000115a ldr r1, [r4, 0x20] | r1 = *((r4 + 0x20));
0x0000115c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000115e cmp r1, r3 |
| if (r1 == r3) {
0x00001160 beq.w 0x12e0 | goto label_12;
| }
| }
| label_6:
0x00001164 mov r0, r2 | r0 = r2;
0x00001166 blx 0xa30 | loc_imp_apr_array_push ();
0x0000116a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000116c mov r4, r0 | r4 = r0;
0x0000116e str r6, [r0] | *(r0) = r6;
0x00001170 str.w fp, [r0, 8] | __asm ("str.w fp, [r0, 8]");
0x00001174 str r3, [r0, 0x20] | *((r0 + 0x20)) = r3;
0x00001176 ldrb.w r2, [fp] | r2 = *(fp);
0x0000117a ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
| if (r2 == 0) {
0x0000117e cbz r2, 0x11de | goto label_8;
| }
0x00001180 movs r3, 0 | r3 = 0;
0x00001182 movw r7, 0x4f1 |
0x00001186 movt r7, 0x800 | r7 = 0x80004f1;
0x0000118a mov r1, fp | r1 = fp;
0x0000118c mov r5, r3 | r5 = r3;
| do {
0x0000118e cmp r2, 0x3f |
| if (r2 >= 0x3f) {
0x00001190 bls 0x11ca |
0x00001192 subs r2, 0x5b | r2 -= 0x5b;
0x00001194 uxtb.w ip, r2 | ip = (int8_t) r2;
0x00001198 cmp.w ip, 0x22 |
| if (ip > 0x22) {
0x0000119c bhi 0x11ce | goto label_0;
| }
0x0000119e cmp r2, 0x22 |
| if (r2 > 0x22) {
0x000011a0 bhi 0x11ce | goto label_0;
| }
| /* switch table (35 cases) at 0x11a6 */
0x000011a2 tbb [pc, r2] | __asm ("tbb [0x000011a8]");
| }
0x000011ca cmp r2, 0x23 |
| if (r2 > 0x23) {
0x000011cc bhi 0x1226 | goto label_13;
| }
| label_0:
0x000011ce cmp r5, 0 |
| if (r5 != 0) {
0x000011d0 bne 0x12ac | goto label_14;
| }
| label_1:
0x000011d2 ldrb r2, [r1, 1]! | r2 = *((r1 += 1));
0x000011d6 cmp r2, 0 |
0x000011d8 bne 0x118e |
| } while (r2 != 0);
0x000011da cmp r3, 0 |
| if (r3 != 0) {
0x000011dc bne 0x1280 | goto label_15;
| }
| label_8:
0x000011de ldr r3, [sp, 0x18] | r3 = var_18h;
0x000011e0 mov r1, fp | r1 = fp;
0x000011e2 subs.w r2, sl, r3 | r2 = sl - r3;
0x000011e6 it ne |
| if (r2 == sl) {
0x000011e8 movne r2, 1 | r2 = 1;
| }
0x000011ea blx 0xa78 | r0 = loc_imp_apr_strmatch_precompile ();
0x000011ee mov r3, r0 | r3 = r0;
0x000011f0 str r0, [r4, 0x10] | *((r4 + 0x10)) = r0;
0x000011f2 cmp r0, 0 |
| if (r0 == 0) {
0x000011f4 beq 0x12f2 | goto label_16;
| }
0x000011f6 movs r3, 0 | r3 = 0;
0x000011f8 str r3, [r4, 0xc] | *((r4 + 0xc)) = r3;
| label_5:
0x000011fa movs r1, 2 | r1 = 2;
0x000011fc ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x00001200 blx 0xa3c | loc_imp_apr_table_make ();
0x00001204 ldr r1, [pc, 0x198] |
0x00001206 str r0, [r4, 0x18] | *((r4 + 0x18)) = r0;
0x00001208 mov r0, r6 | r0 = r6;
0x0000120a add r1, pc | r1 = 0x25ae;
0x0000120c blx 0x994 | r0 = strcasecmp (r0, r1);
| if (r0 != 0) {
0x00001210 cbnz r0, 0x1244 | goto label_17;
| }
0x00001212 movs r3, 1 | r3 = 1;
0x00001214 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
| label_2:
0x00001216 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00001218 mov r2, r4 | r2 = r4;
0x0000121a mov r0, r8 | r0 = r8;
0x0000121c bl 0xeb4 | fcn_00000eb4 (r0, r1, r2);
| label_7:
0x00001220 add sp, 0x24 |
0x00001222 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_13:
0x00001226 subs r2, 0x24 | r2 -= 0x24;
0x00001228 uxtb r2, r2 | r2 = (int8_t) r2;
0x0000122a lsr.w r2, r7, r2 | r2 = r7 >> r2;
0x0000122e lsls r2, r2, 0x1f | r2 <<= 0x1f;
| if (r2 >= r2) {
0x00001230 bpl 0x11ce | goto label_0;
| }
0x00001232 cmp r5, 0 |
| if (r5 == 0) {
0x00001234 beq 0x12ac | goto label_14;
| }
| do {
0x00001236 movs r5, 0 | r5 = 0;
0x00001238 b 0x11d2 | goto label_1;
0x0000123a cmp r5, 0 |
0x0000123c bne 0x1236 |
| } while (r5 != 0);
0x0000123e movs r5, 1 | r5 = 1;
0x00001240 mov r3, r5 | r3 = r5;
0x00001242 b 0x11d2 | goto label_1;
| label_17:
0x00001244 ldr r1, [pc, 0x15c] |
0x00001246 mov r0, r6 | r0 = r6;
0x00001248 add r1, pc | r1 = 0x25f0;
0x0000124a blx 0x994 | r0 = strcasecmp (r0, r1);
0x0000124e cmp r0, 0 |
| if (r0 == 0) {
0x00001250 beq 0x12da | goto label_18;
| }
0x00001252 ldr r1, [pc, 0x154] |
0x00001254 mov r0, r6 | r0 = r6;
0x00001256 add r1, pc | r1 = 0x2604;
0x00001258 blx 0x994 | r0 = strcasecmp (r0, r1);
0x0000125c cmp r0, 0 |
| if (r0 != 0) {
0x0000125e bne 0x1306 | goto label_19;
| }
0x00001260 movs r3, 3 | r3 = 3;
0x00001262 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00001264 b 0x1216 | goto label_2;
| label_11:
0x00001266 ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [var_10h]");
0x0000126a mov r6, r5 | r6 = r5;
0x0000126c b 0x114a | goto label_3;
| label_9:
0x0000126e ldr r3, [pc, 0x12c] | r3 = *(0x139e);
0x00001270 ldr.w r1, [r8, 0x30] | r1 = *((r8 + 0x30));
0x00001274 ldr r2, [r5, r3] | r2 = *((r5 + r3));
0x00001276 ldr r3, [r1, 0x18] | r3 = *((r1 + 0x18));
0x00001278 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x0000127a ldr.w r4, [r3, r2, lsl 2] | r4 = *(0x139e);
0x0000127e b 0x10ea | goto label_4;
| label_15:
0x00001280 sub.w r1, r1, fp | r1 -= fp;
0x00001284 adds r1, 1 | r1++;
0x00001286 blx 0x9ac | loc_imp_apr_palloc ();
0x0000128a mov r1, fp | r1 = fp;
0x0000128c mov r7, r0 | r7 = r0;
0x0000128e mov r5, r0 | r5 = r0;
| do {
0x00001290 ldrb r3, [r1] | r3 = *(r1);
0x00001292 cmp r3, 0x5c |
0x00001294 itt eq |
| if (r3 != 0x5c) {
0x00001296 ldrbeq r3, [r1, 1] | r3 = *((r1 + 1));
| }
| if (r3 != 0x5c) {
0x00001298 addeq r1, 1 | r1++;
| }
0x0000129a adds r1, 1 | r1++;
0x0000129c strb r3, [r5], 1 | *(r5) = r3;
| r5++;
0x000012a0 cmp r3, 0 |
0x000012a2 bne 0x1290 |
| } while (r3 != 0);
0x000012a4 ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x000012a8 cmp r7, 0 |
| if (r7 != 0) {
0x000012aa bne 0x132a | goto label_20;
| }
| label_14:
0x000012ac ldr r2, [sp, 0xc] | r2 = var_ch;
0x000012ae mov r1, fp | r1 = fp;
0x000012b0 blx 0xa18 | r0 = loc_imp_ap_pregcomp ();
0x000012b4 mov r3, r0 | r3 = r0;
0x000012b6 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000012b8 cmp r0, 0 |
| if (r0 == 0) {
0x000012ba beq 0x132e | goto label_21;
| }
0x000012bc movs r3, 0 | r3 = 0;
0x000012be str r3, [r4, 0x10] | *((r4 + 0x10)) = r3;
0x000012c0 b 0x11fa | goto label_5;
| label_10:
0x000012c2 ldr.w r4, [r8, 0x38] | r4 = *((r8 + 0x38));
0x000012c6 ldr r1, [pc, 0xe4] |
0x000012c8 ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x000012cc ldr r2, [r4] | r2 = *(r4);
0x000012ce add r1, pc | r1 = 0x2680;
0x000012d0 blx 0xa54 | loc_imp_apr_pstrcat ()
0x000012d4 add sp, 0x24 |
0x000012d6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x000012da movs r3, 2 | r3 = 2;
0x000012dc str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x000012de b 0x1216 | goto label_2;
| label_12:
0x000012e0 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x000012e2 mov r1, fp | r1 = fp;
0x000012e4 str r2, [sp, 0x10] | var_10h = r2;
0x000012e6 blx 0x940 | strcmp (r0, r1);
0x000012ea ldr r2, [sp, 0x10] | r2 = var_10h;
0x000012ec cmp r0, 0 |
| if (r0 == 0) {
0x000012ee beq 0x1216 | goto label_2;
| }
0x000012f0 b 0x1164 | goto label_6;
| label_16:
0x000012f2 ldr.w r1, [r8, 0x38] | r1 = *((r8 + 0x38));
0x000012f6 ldr r2, [pc, 0xb8] |
0x000012f8 ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x000012fc ldr r1, [r1] | r1 = *(r1);
0x000012fe add r2, pc | r2 = 0x26b4;
0x00001300 blx 0xa54 | loc_imp_apr_pstrcat ()
0x00001304 b 0x1220 | goto label_7;
| label_19:
0x00001306 ldr r1, [pc, 0xac] |
0x00001308 mov r0, r6 | r0 = r6;
0x0000130a add r1, pc | r1 = 0x26c4;
0x0000130c blx 0x994 | r0 = strcasecmp (r0, r1);
| if (r0 != 0) {
0x00001310 cbz r0, 0x1324 |
0x00001312 ldr r1, [pc, 0xa4] |
0x00001314 mov r0, r6 | r0 = r6;
0x00001316 add r1, pc | r1 = 0x26d4;
0x00001318 blx 0x994 | r0 = strcasecmp (r0, r1);
| if (r0 != 0) {
0x0000131c cbnz r0, 0x1342 | goto label_22;
| }
0x0000131e movs r3, 5 | r3 = 5;
0x00001320 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00001322 b 0x1216 | goto label_2;
| }
0x00001324 movs r3, 4 | r3 = 4;
0x00001326 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00001328 b 0x1216 | goto label_2;
| label_20:
0x0000132a mov fp, r7 |
0x0000132c b 0x11de | goto label_8;
| label_21:
0x0000132e ldr.w r1, [r8, 0x38] | r1 = *((r8 + 0x38));
0x00001332 ldr r2, [pc, 0x88] |
0x00001334 ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x00001338 ldr r1, [r1] | r1 = *(r1);
0x0000133a add r2, pc | r2 = 0x26fc;
0x0000133c blx 0xa54 | loc_imp_apr_pstrcat ()
0x00001340 b 0x1220 | goto label_7;
| label_22:
0x00001342 ldr r1, [pc, 0x7c] |
0x00001344 mov r0, r6 | r0 = r6;
0x00001346 add r1, pc | r1 = 0x270c;
0x00001348 blx 0x994 | r0 = strcasecmp (r0, r1);
| if (r0 == 0) {
0x0000134c cbnz r0, 0x1354 |
0x0000134e movs r3, 6 | r3 = 6;
0x00001350 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x00001352 b 0x1216 | goto label_2;
| }
0x00001354 ldr r2, [pc, 0x6c] |
0x00001356 movs r3, 0 | r3 = 0;
0x00001358 str r3, [r4, 0x1c] | *((r4 + 0x1c)) = r3;
0x0000135a mov r1, r6 | r1 = r6;
0x0000135c str r3, [sp] | *(sp) = r3;
0x0000135e add r2, pc | r2 = 0x2726;
0x00001360 ldr r0, [r2] | r0 = *(0x2726);
0x00001362 mov r2, r3 | r2 = r3;
0x00001364 blx 0x9a0 | r0 = loc_imp_ap_regexec ();
| if (r0 == 0) {
0x00001368 cbnz r0, 0x136e |
0x0000136a str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000136c b 0x1216 | goto label_2;
| }
0x0000136e ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x00001372 mov r1, r6 | r1 = r6;
0x00001374 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00001376 blx 0xa18 | r0 = loc_imp_ap_pregcomp ();
0x0000137a mov r3, r0 | r3 = r0;
0x0000137c str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000137e cmp r0, 0 |
| if (r0 != 0) {
0x00001380 bne.w 0x1216 | goto label_2;
| }
0x00001384 ldr.w r1, [r8, 0x38] | r1 = *((r8 + 0x38));
0x00001388 ldr r2, [pc, 0x3c] |
0x0000138a ldr.w r0, [r8, 0x28] | r0 = *((r8 + 0x28));
0x0000138e ldr r1, [r1] | r1 = *(r1);
0x00001390 add r2, pc | r2 = 0x275c;
0x00001392 blx 0xa54 | loc_imp_apr_pstrcat ()
0x00001396 b 0x1220 | goto label_7;
| }
[*] Function strcat used 7 times mod_setenvif.so