[*] Binary protection state of mod_http2.so

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function strcpy tear down of mod_http2.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_http2.so @ 0x8284 */
                                                                 | #include <stdint.h>
                                                                 |  
    ; (fcn) fcn.00008284 ()                                      | void fcn_00008284 (int16_t arg_4h, int16_t arg_4000h, int16_t arg1) {
                                                                 |     int16_t var_0h;
                                                                 |     int16_t var_4h;
                                                                 |     int16_t var_8h;
                                                                 |     int16_t var_ch;
                                                                 |     int16_t var_10h;
                                                                 |     int16_t var_14h;
                                                                 |     int16_t var_18h;
                                                                 |     int16_t var_1ch;
                                                                 |     int16_t var_20h;
                                                                 |     int16_t var_28h;
                                                                 |     int16_t var_2ch;
                                                                 |     int16_t var_30h;
                                                                 |     int16_t var_34h;
                                                                 |     int16_t var_38h;
                                                                 |     int16_t var_3ch;
                                                                 |     int16_t var_40h;
                                                                 |     int16_t var_44h;
                                                                 |     int16_t var_ch_2;
                                                                 |     int16_t var_8h_2;
                                                                 |     int16_t var_54h;
                                                                 |     int16_t var_58h;
                                                                 |     char * src;
                                                                 |     int32_t var_0h_2;
                                                                 |     int8_t var_2h;
                                                                 |     r0 = arg1;
    0x00008284 blmi 0xff1dada4                                   |     __asm ("blmi aav.0x0001f8b4");
    0x00008288 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr}       |     
    0x0000828c sub.w sp, sp, 0x1040                              |     
    0x00008290 add r2, pc                                        |     r2 += pc;
    0x00008292 sub sp, 0x1c                                      |     
    0x00008294 add.w r1, sp, 0x1040                              |     r1 += src;
    0x00008296 str r2, [r0, r6]                                  |     *((r0 + r6)) = r2;
    0x00008298 mov r6, r0                                        |     r6 = r0;
    0x0000829a ldr r3, [r2, r3]                                  |     r3 = *((r2 + r3));
    0x0000829c adds r1, 0x14                                     |     r1 += 0x14;
    0x0000829e ldr r2, [r0, 8]                                   |     r2 = *((r0 + 8));
    0x000082a0 ldr r4, [pc, 0x304]                               |     
    0x000082a2 ldr r3, [r3]                                      |     r3 = *(r3);
    0x000082a4 str r3, [r1]                                      |     *(r1) = r3;
    0x000082a6 mov.w r3, 0                                       |     r3 = 0;
    0x000082aa ldr.w r3, [r0, 0x118]                             |     r3 = *((r0 + 0x118));
    0x000082ae ldr r0, [r2, 0x34]                                |     r0 = *((r2 + 0x34));
    0x000082b0 add r4, pc                                        |     r4 = 0x1085c;
    0x000082b2 lsls r3, r3, 2                                    |     r3 <<= 2;
    0x000082b4 cmp.w r3, 0x1f40                                  |     
    0x000082b8 it lo                                             |     
                                                                 |     if (r3 >= 0x1f40) {
    0x000082ba movlo r3, 0x1f40                                  |         r3 = 0x1f40;
                                                                 |     }
    0x000082be asrs r2, r3, 0x1f                                 |     r2 = r3 >> 0x1f;
    0x000082c0 str r3, [sp]                                      |     *(sp) = r3;
    0x000082c2 movs r3, 1                                        |     r3 = 1;
    0x000082c4 str r2, [sp, 4]                                   |     var_4h = r2;
    0x000082c6 movs r2, 0                                        |     r2 = 0;
    0x000082c8 ldr.w r1, [r6, 0x128]                             |     r1 = *((r6 + 0x128));
    0x000082cc blx 0x4c60                                        |     strcpy (r0, r1)
    0x000082ce stcl p6, c4, [r8], {5}                            |     __asm ("stcl p6, c4, [r8], {5}");
    0x000082d2 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x000082d4 bne.w 0x843a                                      |         goto label_15;
                                                                 |     }
    0x000082d8 ldr.w fp, [r6, 0x128]                             |     fp = *((r6 + 0x128));
    0x000082dc mov r1, fp                                        |     r1 = fp;
    0x000082de ldr r3, [r1, 4]!                                  |     r3 = *((r1 += 4));
    0x000082e2 cmp r3, r1                                        |     
    0x000082e4 it eq                                             |     
                                                                 |     if (r3 != r1) {
    0x000082e6 moveq r5, 0xb                                     |         r5 = 0xb;
                                                                 |     }
                                                                 |     if (r3 == r1) {
    0x000082e8 beq.w 0x843a                                      |         goto label_15;
                                                                 |     }
    0x000082ec ldr r3, [pc, 0x2bc]                               |     r3 = *(0x85ac);
    0x000082ee ldr r0, [r6, 8]                                   |     r0 = *((r6 + 8));
    0x000082f0 ldr.w sl, [r4, r3]                                |     sl = *((r4 + r3));
    0x000082f4 ldr r2, [r0, 0x60]                                |     r2 = *((r0 + 0x60));
    0x000082f6 ldr.w r3, [sl, 8]                                 |     r3 = *((sl + 8));
    0x000082fa cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x000082fc blt.w 0x84f0                                      |         goto label_16;
                                                                 |     }
    0x00008300 cmp r2, 0                                         |     
                                                                 |     if (r2 == 0) {
    0x00008302 beq.w 0x8462                                      |         goto label_17;
                                                                 |     }
    0x00008306 ldr r0, [r2]                                      |     r0 = *(r2);
    0x00008308 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x0000830a beq.w 0x8472                                      |         goto label_9;
                                                                 |     }
    0x0000830e ldrsb r3, [r0, r3]                                |     r3 = *((r0 + r3));
    0x00008310 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00008312 blt.w 0x8472                                      |         goto label_9;
                                                                 |     }
                                                                 | label_2:
    0x00008316 cmp r3, 8                                         |     
    0x00008318 ite le                                            |     
                                                                 |     if (r3 > 8) {
    0x0000831a movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 8) {
    0x0000831c movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
                                                                 | label_3:
    0x0000831e cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x00008320 bne.w 0x84f8                                      |         goto label_18;
                                                                 |     }
                                                                 | label_11:
    0x00008324 ldr.w r3, [fp, 4]                                 |     r3 = *(arg_4h);
    0x00008328 cmp r3, r1                                        |     
                                                                 |     if (r3 == r1) {
    0x0000832a beq.w 0x8592                                      |         goto label_19;
                                                                 |     }
    0x0000832e ldr r3, [pc, 0x280]                               |     
    0x00008330 mov.w sb, 0                                       |     sb = 0;
    0x00008334 strd r1, r5, [sp, 0x40]                           |     __asm ("strd r1, r5, [var_40h]");
    0x00008338 add r3, pc                                        |     r3 = 0x108ee;
    0x0000833a str r3, [sp, 0x38]                                |     var_38h = r3;
    0x0000833c ldr r3, [pc, 0x274]                               |     
    0x0000833e add r3, pc                                        |     r3 = 0x108f6;
    0x00008340 str r3, [sp, 0x3c]                                |     var_3ch = r3;
    0x00008342 b 0x8374                                          |     
                                                                 |     while (r3 != 0) {
                                                                 | label_0:
    0x00008344 ldr.w r1, [r8, 4]                                 |         r1 = *((r8 + 4));
    0x00008348 ldr.w r0, [r8]                                    |         r0 = *(r8);
    0x0000834c ldr r3, [r2, 0xc]                                 |         r3 = *((r2 + 0xc));
    0x0000834e str r0, [r1]                                      |         *(r1) = r0;
    0x00008350 ldr.w r2, [r8]                                    |         r2 = *(r8);
    0x00008354 ldr.w r1, [r8, 4]                                 |         r1 = *((r8 + 4));
    0x00008358 ldr.w r0, [r8, 0x18]                              |         r0 = *((r8 + 0x18));
    0x0000835c str r1, [r2, 4]                                   |         *((r2 + 4)) = r1;
    0x0000835e blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x00008360 ldr.w r3, [r8, 0x1c]                              |         r3 = *((r8 + 0x1c));
    0x00008362 adds r0, 0x1c                                     |         r0 += 0x1c;
    0x00008364 mov r0, r8                                        |         r0 = r8;
    0x00008366 blx r3                                            |         uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
    0x00008368 ldr.w r3, [fp, 4]                                 |         r3 = *(arg_4h);
    0x0000836c ldr r2, [sp, 0x40]                                |         r2 = var_40h;
    0x0000836e cmp r3, r2                                        |         
                                                                 |         if (r3 == r2) {
    0x00008370 beq.w 0x84e8                                      |             goto label_20;
                                                                 |         }
    0x00008374 ldr.w r8, [fp, 4]                                 |         r8 = *(arg_4h);
    0x00008378 ldr.w r2, [r8, 8]                                 |         r2 = *((r8 + 8));
    0x0000837c ldr r3, [r2, 8]                                   |         r3 = *((r2 + 8));
    0x0000837e cmp r3, 0                                         |         
    0x00008380 bne 0x8344                                        |         
                                                                 |     }
    0x00008382 add r5, sp, 0x58                                  |     r5 += var_58h;
    0x00008384 ldr r4, [r2, 0x10]                                |     r4 = *((r2 + 0x10));
    0x00008386 mov r0, r8                                        |     r0 = r8;
    0x00008388 sub.w r2, r5, 0xc                                 |     r2 -= var_ch_2;
    0x0000838c sub.w r1, r5, 8                                   |     r1 -= var_8h_2;
    0x00008390 blx r4                                            |     uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
    0x00008392 str r0, [sp, 0x34]                                |     var_34h = r0;
    0x00008394 cmp r0, 0                                         |     
                                                                 |     if (r0 != 0) {
    0x00008396 bne.w 0x858a                                      |         goto label_21;
                                                                 |     }
                                                                 | label_1:
    0x0000839a ldr r2, [r5, -0xc]                                |     r2 = var_ch_2;
                                                                 |     if (r2 == 0) {
    0x0000839e cbz r2, 0x83fa                                    |         goto label_22;
                                                                 |     }
                                                                 |     do {
    0x000083a0 ldr r1, [r5, -0x8]                                |         r1 = *((r5 - 0x8));
    0x000083a4 ldr.w r0, [r6, 0x98]                              |         r0 = *((r6 + 0x98));
    0x000083a6 lsls r0, r3, 2                                    |         r0 = r3 << 2;
    0x000083a8 blx 0x4c04                                        |         fcn_00004c04 ();
    0x000083ac ldr.w r7, [sl, 8]                                 |         r7 = *((sl + 8));
    0x000083b0 mov r4, r0                                        |         r4 = r0;
    0x000083b2 ldr r2, [r6, 8]                                   |         r2 = *((r6 + 8));
    0x000083b4 cmp r7, 0                                         |         
    0x000083b6 ldr r1, [r2, 0x60]                                |         r1 = *((r2 + 0x60));
                                                                 |         if (r7 < 0) {
    0x000083b8 blt 0x847e                                        |             goto label_23;
                                                                 |         }
    0x000083ba cmp r1, 0                                         |         
                                                                 |         if (r1 == 0) {
    0x000083bc beq.w 0x84d6                                      |             goto label_24;
                                                                 |         }
    0x000083c0 ldr r3, [r1]                                      |         r3 = *(r1);
    0x000083c2 cmp r3, 0                                         |         
                                                                 |         if (r3 == 0) {
    0x000083c4 beq 0x8484                                        |             goto label_25;
                                                                 |         }
    0x000083c6 ldrsb r3, [r3, r7]                                |         r3 = *((r3 + r7));
    0x000083c8 cmp r3, 0                                         |         
                                                                 |         if (r3 < 0) {
    0x000083ca blt 0x8484                                        |             goto label_25;
                                                                 |         }
                                                                 | label_6:
    0x000083cc cmp r3, 0xa                                       |         
    0x000083ce ite le                                            |         
                                                                 |         if (r3 > 0xa) {
    0x000083d0 movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 0xa) {
    0x000083d2 movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
                                                                 | label_4:
    0x000083d4 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x000083d6 bne 0x8490                                        |             goto label_26;
                                                                 |         }
                                                                 | label_5:
    0x000083d8 cmp r4, 0                                         |         
                                                                 |         if (r4 < 0) {
    0x000083da blt 0x8400                                        |             goto label_27;
                                                                 |         }
    0x000083dc ldr r2, [r5, -0xc]                                |         r2 = var_ch_2;
    0x000083e0 add sb, r4                                        |         sb += r4;
    0x000083e2 cmp r4, r2                                        |         
                                                                 |         if (r4 >= r2) {
    0x000083e4 bge 0x83fa                                        |             goto label_22;
                                                                 |         }
    0x000083e6 ldr r3, [r5, -0x8]                                |         r3 = *((r5 - 0x8));
    0x000083ea subs r2, r2, r4                                   |         r2 -= r4;
    0x000083ec str r2, [r5, -0xc]                                |         var_ch_2 = r2;
    0x000083f0 add r3, r4                                        |         r3 += r4;
    0x000083f2 str r3, [r5, -0x8]                                |         *((r5 - 0x8)) = r3;
    0x000083f6 cmp r2, 0                                         |         
    0x000083f8 bne 0x83a0                                        |         
                                                                 |     } while (r2 != 0);
                                                                 | label_22:
    0x000083fa ldr.w r2, [r8, 8]                                 |     r2 = *((r8 + 8));
    0x000083fe b 0x8344                                          |     goto label_0;
                                                                 | label_27:
    0x00008400 mov r0, r4                                        |     r0 = r4;
    0x00008402 blx 0x4b48                                        |     r0 = fcn_00004b48 ();
    0x00008406 cmp r0, 0                                         |     
                                                                 |     if (r0 == 0) {
    0x00008408 beq 0x839a                                        |         goto label_1;
                                                                 |     }
    0x0000840a mov r0, r4                                        |     r0 = r4;
    0x0000840c movw r5, 0x4e2e                                   |     r5 = 0x4e2e;
    0x00008410 blx 0x48bc                                        |     fcn_000048bc ();
    0x00008414 mov r2, r4                                        |     r2 = r4;
    0x00008416 asr.w r4, sb, 0x1f                                |     r4 = sb >> 0x1f;
    0x0000841a mov r3, r0                                        |     r3 = r0;
    0x0000841c movs r1, 6                                        |     r1 = 6;
    0x0000841e mov r0, r6                                        |     r0 = r6;
    0x00008420 bl 0x150ac                                        |     fcn_000150ac (r0, r1, r2, r3);
                                                                 | label_8:
    0x00008424 mov r0, fp                                        |     r0 = fp;
    0x00008426 blx 0x4748                                        |     fcn_00004748 ();
    0x0000842a ldr r3, [r6, 0x58]                                |     r3 = *((r6 + 0x58));
    0x0000842c adds.w r3, r3, sb                                 |     r3 += sb;
    0x00008430 str r3, [r6, 0x58]                                |     *((r6 + 0x58)) = r3;
    0x00008432 ldr r3, [r6, 0x5c]                                |     r3 = *((r6 + 0x5c));
    0x00008434 adc.w r4, r4, r3                                  |     __asm ("adc.w r4, r4, r3");
    0x00008438 str r4, [r6, 0x5c]                                |     *((r6 + 0x5c)) = r4;
                                                                 | label_15:
    0x0000843a ldr r2, [pc, 0x17c]                               |     
    0x0000843c add.w r1, sp, 0x1040                              |     r1 += src;
    0x00008440 ldr r3, [pc, 0x160]                               |     r3 = *(0x85a4);
    0x00008442 adds r1, 0x14                                     |     r1 += 0x14;
    0x00008444 add r2, pc                                        |     r2 = 0x10a02;
    0x00008446 ldr r3, [r2, r3]                                  |     r3 = *(0x10a02);
    0x00008448 ldr r2, [r3]                                      |     r2 = *(0x10a02);
    0x0000844a ldr r3, [r1]                                      |     r3 = *(r1);
    0x0000844c eors r2, r3                                       |     r2 ^= r3;
    0x0000844e mov.w r3, 0                                       |     r3 = 0;
                                                                 |     if (r2 != r3) {
    0x00008452 bne.w 0x859a                                      |         goto label_28;
                                                                 |     }
    0x00008456 mov r0, r5                                        |     r0 = r5;
    0x00008458 add.w sp, sp, 0x1040                              |     
    0x0000845c add sp, 0x1c                                      |     
    0x0000845e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc}        |     
                                                                 | label_17:
    0x00008462 ldr r2, [r0, 4]                                   |     r2 = *((r0 + 4));
    0x00008464 ldr r0, [r2, 0x10]                                |     r0 = *((r2 + 0x10));
                                                                 |     if (r0 == 0) {
    0x00008466 cbz r0, 0x8470                                    |         goto label_10;
                                                                 |     }
    0x00008468 ldrsb r3, [r0, r3]                                |     r3 = *((r0 + r3));
    0x0000846a cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x0000846c bge.w 0x8316                                      |         goto label_2;
                                                                 |     }
                                                                 | label_10:
    0x00008470 adds r2, 0x10                                     |     r2 += 0x10;
                                                                 | label_9:
    0x00008472 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x00008474 cmp r3, 8                                         |     
    0x00008476 ite le                                            |     
                                                                 |     if (r3 > 8) {
    0x00008478 movle r3, 0                                       |         r3 = 0;
                                                                 |     }
                                                                 |     if (r3 <= 8) {
    0x0000847a movgt r3, 1                                       |         r3 = 1;
                                                                 |     }
    0x0000847c b 0x831e                                          |     goto label_3;
                                                                 |     if (r1 != 0) {
                                                                 | label_23:
    0x0000847e cbnz r1, 0x8484                                   |         goto label_25;
                                                                 |     }
                                                                 | label_7:
    0x00008480 ldr r1, [r2, 4]                                   |     r1 = *((r2 + 4));
                                                                 |     do {
    0x00008482 adds r1, 0x10                                     |         r1 += 0x10;
                                                                 | label_25:
    0x00008484 ldr r3, [r1, 4]                                   |         r3 = *((r1 + 4));
    0x00008486 cmp r3, 0xa                                       |         
    0x00008488 ite le                                            |         
                                                                 |         if (r3 > 0xa) {
    0x0000848a movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 0xa) {
    0x0000848c movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x0000848e b 0x83d4                                          |         goto label_4;
                                                                 | label_26:
    0x00008490 ldr r1, [r6]                                      |         r1 = *(r6);
    0x00008492 ldr r3, [r6, 4]                                   |         r3 = *((r6 + 4));
    0x00008494 ldr.w r0, [r6, 0x9c]                              |         r0 = *((r6 + 0x9c));
    0x00008498 str r2, [sp, 0x30]                                |         var_30h = r2;
    0x0000849a str r1, [sp, 0x2c]                                |         var_2ch = r1;
    0x0000849c str r3, [sp, 0x28]                                |         var_28h = r3;
    0x0000849e bl 0x13e7c                                        |         fcn_00013e7c (r0);
    0x000084a2 ldr r3, [sp, 0x28]                                |         r3 = var_28h;
    0x000084a4 ldr r2, [sp, 0x30]                                |         r2 = var_30h;
    0x000084a6 ldr r1, [sp, 0x2c]                                |         r1 = var_2ch;
    0x000084a8 str r3, [sp, 0x10]                                |         var_10h = r3;
    0x000084aa ldr r3, [sp, 0x3c]                                |         r3 = var_3ch;
    0x000084ac str r2, [sp, 4]                                   |         var_4h = r2;
    0x000084ae mov r2, r7                                        |         r2 = r7;
    0x000084b0 str r0, [sp, 0x14]                                |         var_14h = r0;
    0x000084b2 str r3, [sp, 8]                                   |         var_8h = r3;
    0x000084b4 ldr r3, [sp, 0x34]                                |         r3 = var_34h;
    0x000084b6 str r1, [sp, 0xc]                                 |         var_ch = r1;
    0x000084b8 mov.w r1, 0x1b4                                   |         r1 = 0x1b4;
    0x000084bc str r4, [sp, 0x20]                                |         var_20h = r4;
    0x000084be str r3, [sp]                                      |         *(sp) = r3;
    0x000084c0 ldr r3, [r5, -0xc]                                |         r3 = var_ch_2;
    0x000084c4 ldr r0, [sp, 0x38]                                |         r0 = var_38h;
    0x000084c6 str r3, [sp, 0x1c]                                |         var_1ch = r3;
    0x000084c8 ldr.w r3, [r6, 0xf0]                              |         r3 = *((r6 + 0xf0));
    0x000084cc str r3, [sp, 0x18]                                |         var_18h = r3;
    0x000084ce movs r3, 0xb                                      |         r3 = 0xb;
    0x000084d0 blx 0x4d50                                        |         loc_imp_apr_dynamic_fn_register ();
    0x000084d4 b 0x83d8                                          |         goto label_5;
                                                                 | label_24:
    0x000084d6 ldr r1, [r2, 4]                                   |         r1 = *((r2 + 4));
    0x000084d8 ldr r3, [r1, 0x10]                                |         r3 = *((r1 + 0x10));
    0x000084da cmp r3, 0                                         |         
    0x000084dc beq 0x8482                                        |         
                                                                 |     } while (r3 == 0);
    0x000084de ldrsb r3, [r3, r7]                                |     r3 = *((r3 + r7));
    0x000084e0 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x000084e2 bge.w 0x83cc                                      |         goto label_6;
                                                                 |     }
    0x000084e6 b 0x8480                                          |     goto label_7;
                                                                 | label_20:
    0x000084e8 ldr r5, [sp, 0x44]                                |     r5 = var_44h;
    0x000084ea asr.w r4, sb, 0x1f                                |     r4 = sb >> 0x1f;
    0x000084ee b 0x8424                                          |     goto label_8;
                                                                 | label_16:
    0x000084f0 cmp r2, 0                                         |     
                                                                 |     if (r2 != 0) {
    0x000084f2 bne 0x8472                                        |         goto label_9;
                                                                 |     }
    0x000084f4 ldr r2, [r0, 4]                                   |     r2 = *((r0 + 4));
    0x000084f6 b 0x8470                                          |     goto label_10;
                                                                 | label_18:
    0x000084f8 ldr r3, [pc, 0xc0]                                |     
    0x000084fa add r4, sp, 0x54                                  |     r4 += var_54h;
    0x000084fc ldr r2, [pc, 0xc0]                                |     
    0x000084fe mov.w r1, 0x1000                                  |     r1 = 0x1000;
    0x00008502 mov r0, r4                                        |     r0 = r4;
    0x00008504 str.w fp, [sp]                                    |     __asm ("str.w fp, [sp]");
    0x00008508 add r3, pc                                        |     r3 = 0x10ac8;
    0x0000850a add r2, pc                                        |     r2 = 0x10ace;
    0x0000850c bl 0x1caac                                        |     fcn_0001caac (r0, r1, r2, r3, r4);
    0x00008510 ldr.w r2, [sl, 8]                                 |     r2 = *((sl + 8));
    0x00008512 movs r0, 8                                        |     r0 = 8;
    0x00008514 ldr r7, [r6, 8]                                   |     r7 = *((r6 + 8));
    0x00008516 cmp r2, 0                                         |     
    0x00008518 ldr r1, [r7, 0x60]                                |     r1 = *((r7 + 0x60));
                                                                 |     if (r2 < 0) {
    0x0000851a blt 0x8566                                        |         goto label_29;
                                                                 |     }
                                                                 |     if (r1 == 0) {
    0x0000851c cbz r1, 0x8578                                    |         goto label_30;
                                                                 |     }
    0x0000851e ldr r3, [r1]                                      |     r3 = *(r1);
                                                                 |     if (r3 == 0) {
    0x00008520 cbz r3, 0x8568                                    |         goto label_14;
                                                                 |     }
    0x00008522 ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00008524 cmp r3, 0                                         |     
                                                                 |     if (r3 < 0) {
    0x00008526 blt 0x8568                                        |         goto label_14;
                                                                 |     }
                                                                 | label_13:
    0x00008528 cmp r3, 8                                         |     
    0x0000852a ite le                                            |     
                                                                 |     if (r3 > 8) {
    0x0000852c movle r3, 0                                       |         r3 = 0;
                                                                 |     }
    0x0000852e movgt r3, 1                                       |     r3 = 1;
                                                                 |     if (r3 != 0) {
                                                                 |         while (1) {
    0x00008530 cbz r3, 0x855c                                    |             
    0x00008532 ldr r3, [r7, 0x6c]                                |             r3 = *((r7 + 0x6c));
                                                                 |             if (r3 == 0) {
    0x00008534 cbz r3, 0x8574                                    |                 goto label_31;
                                                                 |             }
    0x00008536 ldr r3, [r3, 0x28]                                |             r3 = *((r3 + 0x28));
                                                                 |             if (r0 == 0) {
                                                                 | label_12:
    0x00008538 cbnz r0, 0x853e                                   |                 
    0x0000853a ldr r4, [pc, 0x88]                                |                 
    0x0000853c add r4, pc                                        |                 r4 = 0x10b06;
                                                                 |             }
    0x0000853e ldr r1, [pc, 0x88]                                |             
    0x00008540 ldr r0, [pc, 0x88]                                |             
    0x00008542 strd r3, r4, [sp, 0xc]                            |             __asm ("strd r3, r4, [var_10h]");
    0x00008546 movs r3, 0                                        |             r3 = 0;
    0x00008548 add r1, pc                                        |             r1 = 0x10b16;
    0x0000854a str r3, [sp]                                      |             *(sp) = r3;
    0x0000854c str r1, [sp, 8]                                   |             var_8h = r1;
    0x0000854e movs r3, 9                                        |             r3 = 9;
    0x00008550 add r0, pc                                        |             r0 = 0x10b20;
    0x00008552 mov.w r1, 0x1ec                                   |             r1 = 0x1ec;
    0x00008556 str r7, [sp, 4]                                   |             var_4h = r7;
    0x00008558 blx 0x4d50                                        |             loc_imp_apr_dynamic_fn_register ();
                                                                 |         }
    0x0000855c ldr.w fp, [r6, 0x128]                             |         fp = *((r6 + 0x128));
    0x00008560 add.w r1, fp, 4                                   |         r1 += arg_4h;
    0x00008564 b 0x8324                                          |         goto label_11;
                                                                 |         if (r1 == 0) {
                                                                 | label_29:
    0x00008566 cbz r1, 0x8584                                    |             goto label_32;
                                                                 |         }
                                                                 | label_14:
    0x00008568 ldr r3, [r1, 4]                                   |         r3 = *((r1 + 4));
    0x0000856a cmp r3, 8                                         |         
    0x0000856c ite le                                            |         
                                                                 |         if (r3 > 8) {
    0x0000856e movle r3, 0                                       |             r3 = 0;
                                                                 |         }
                                                                 |         if (r3 <= 8) {
    0x00008570 movgt r3, 1                                       |             r3 = 1;
                                                                 |         }
    0x00008572 b 0x8530                                          |         
                                                                 |     }
                                                                 | label_31:
    0x00008574 ldr r3, [r7, 0x28]                                |     r3 = *((r7 + 0x28));
    0x00008576 b 0x8538                                          |     goto label_12;
                                                                 | label_30:
    0x00008578 ldr r1, [r7, 4]                                   |     r1 = *((r7 + 4));
    0x0000857a ldr r3, [r1, 0x10]                                |     r3 = *((r1 + 0x10));
                                                                 |     if (r3 == 0) {
    0x0000857c cbz r3, 0x8586                                    |         goto label_33;
                                                                 |     }
    0x0000857e ldrsb r3, [r3, r2]                                |     r3 = *((r3 + r2));
    0x00008580 cmp r3, 0                                         |     
                                                                 |     if (r3 >= 0) {
    0x00008582 bge 0x8528                                        |         goto label_13;
                                                                 |     }
                                                                 | label_32:
    0x00008584 ldr r1, [r7, 4]                                   |     r1 = *((r7 + 4));
                                                                 | label_33:
    0x00008586 adds r1, 0x10                                     |     r1 += 0x10;
    0x00008588 b 0x8568                                          |     goto label_14;
                                                                 | label_21:
    0x0000858a ldr r5, [sp, 0x34]                                |     r5 = var_34h;
    0x0000858c asr.w r4, sb, 0x1f                                |     r4 = sb >> 0x1f;
    0x00008590 b 0x8424                                          |     goto label_8;
                                                                 | label_19:
    0x00008592 mov.w sb, 0                                       |     sb = 0;
    0x00008596 mov r4, sb                                        |     r4 = sb;
    0x00008598 b 0x8424                                          |     goto label_8;
                                                                 | label_28:
    0x0000859a blx 0x4d80                                        |     loc_imp_apr_file_read ();
    0x0000859e nop                                               |     
    0x000085a0 ldrh.w r0, [r4, 1]                                |     r0 = *((r4 + 1));
    0x000085a4 lsls r4, r6, 0x10                                 |     r4 = r6 << 0x10;
    0x000085a6 movs r0, r0                                       |     
    0x000085a8 ldrb.w r0, [r4, 1]                                |     r0 = *((r4 + 1));
    0x000085ac lsls r0, r1, 0x12                                 |     r0 = r1 << 0x12;
    0x000085ae movs r0, r0                                       |     
    0x000085b0 strb r4, [r1, 2]                                  |     var_2h = r4;
    0x000085b2 movs r1, r0                                       |     r1 = r0;
    0x000085b4 strb r6, [r2, 3]                                  |     *((r2 + 3)) = r6;
    0x000085b6 movs r1, r0                                       |     r1 = r0;
    0x000085b8 ssat r0, 2, r0                                    |     __asm ("ssat r0, 2, r0");
    0x000085bc adr r6, 0x50                                      |     r6 = 0x50;
    0x000085be movs r1, r0                                       |     r1 = r0;
    0x000085c0 ldr r2, [r6, 0x68]                                |     r2 = *((r6 + 0x68));
    0x000085c2 movs r1, r0                                       |     r1 = r0;
    0x000085c4 ldr r0, [r7, 0x64]                                |     r0 = *((r7 + 0x64));
    0x000085c6 movs r1, r0                                       |     r1 = r0;
    0x000085c8 ldr r0, [r7, 0x68]                                |     r0 = *((r7 + 0x68));
    0x000085ca movs r1, r0                                       |     r1 = r0;
    0x000085cc ldr r4, [r6, 0x64]                                |     r4 = *((r6 + 0x64));
    0x000085ce movs r1, r0                                       |     r1 = r0;
                                                                 | }

[*] Function strcpy used 2 times mod_http2.so