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