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