[*] Binary protection state of mod_http2.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function mmap 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 @ 0x6160 */
| #include <stdint.h>
|
; (fcn) fcn.00006160 () | void fcn_00006160 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h_2;
| int16_t var_4ch_2;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_1060h;
| int16_t var_1080h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00006160 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00006164 sub.w sp, sp, 0x1060 |
0x00006168 sub sp, 0xc |
0x0000616a mov r4, r0 | r4 = r0;
0x0000616c add.w r0, sp, 0x1080 | r0 += var_1080h;
0x0000616e str r4, [r0, r2] | *((r0 + r2)) = r4;
0x00006170 mov r8, r2 | r8 = r2;
0x00006172 adds r0, 0x10 | r0 += 0x10;
0x00006174 ldr.w r2, [pc, 0x97c] |
0x00006178 str r3, [sp, 0x54] | var_54h = r3;
0x0000617a ldr r0, [r0] | r0 = *(r0);
0x0000617c ldr.w r3, [pc, 0x978] | r3 = *(0x6af8);
0x00006180 add r2, pc | r2 = 0xcc78;
0x00006182 str r1, [sp, 0x38] | var_38h = r1;
0x00006184 add.w r1, sp, 0x1060 | r1 += var_1060h;
0x00006188 str r0, [sp, 0x44] | var_44h = r0;
0x0000618a adds r1, 4 | r1 += 4;
0x0000618c ldr r3, [r2, r3] |
0x0000618e ldr.w sb, [pc, 0x96c] |
0x00006192 ldr r3, [r3] | r3 = *(0xcc78);
0x00006194 str r3, [r1] | *(r1) = r3;
0x00006196 mov.w r3, 0 | r3 = 0;
0x0000619a ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0000619c add sb, pc | sb = 0xcc9e;
0x0000619e cmp r3, 0 |
| if (r3 == 0) {
0x000061a0 beq.w 0x6ae4 | goto label_51;
| }
0x000061a4 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x000061a6 blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x000061aa ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000061ac ldr r2, [sp, 0x38] | r2 = var_38h;
0x000061ae cmp r3, r2 |
| if (r3 != r2) {
0x000061b0 bne.w 0x6ad4 | goto label_52;
| }
0x000061b4 cmp.w r8, 0 |
| if (r8 == 0) {
0x000061b8 beq.w 0x6ac0 | goto label_53;
| }
0x000061bc ldr.w r3, [pc, 0x940] |
0x000061c0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000061c2 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000061c6 ldr r2, [r2, 0x60] | r2 = *((r2 + 0x60));
0x000061c8 str r3, [sp, 0x48] | var_48h_2 = r3;
0x000061ca ldr r3, [r3, 8] | r3 = *(0x6b08);
0x000061cc cmp r3, 0 |
| if (r3 < 0) {
0x000061ce blt.w 0x643a | goto label_54;
| }
0x000061d2 cmp r2, 0 |
| if (r2 == 0) {
0x000061d4 beq.w 0x68a4 | goto label_55;
| }
0x000061d8 ldr r1, [r2] | r1 = *(r2);
0x000061da cmp r1, 0 |
| if (r1 == 0) {
0x000061dc beq.w 0x6440 | goto label_19;
| }
0x000061e0 ldrsb r3, [r1, r3] | r3 = *((r1 + r3));
0x000061e2 cmp r3, 0 |
| if (r3 < 0) {
0x000061e4 blt.w 0x6440 | goto label_19;
| }
| label_18:
0x000061e8 cmp r3, 8 |
0x000061ea ite le |
| if (r3 > 8) {
0x000061ec movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x000061ee movgt r3, 1 | r3 = 1;
| }
| label_5:
0x000061f0 add.w r6, r4, 0x10 | r6 = r4 + 0x10;
0x000061f4 cmp r3, 0 |
| if (r3 != 0) {
0x000061f6 bne.w 0x673c | goto label_56;
| }
| label_16:
0x000061fa mov r0, r4 | r0 = r4;
0x000061fc bl 0x5a6c | fcn_00005a6c (r0);
0x00006200 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006202 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00006206 ldr.w fp, [r4, 0x20] | fp = *((r4 + 0x20));
0x0000620a vstr d16, [r3] | __asm ("vstr d16, [r3]");
0x0000620e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00006210 subs r3, r3, r6 | r3 -= r6;
0x00006212 clz r3, r3 | r3 &= r3;
0x00006216 lsrs r3, r3, 5 | r3 >>= 5;
0x00006218 str r3, [sp, 0x50] | var_50h = r3;
0x0000621a cmp.w fp, 0 |
| if (fp != 0) {
0x0000621e bne.w 0x681e | goto label_57;
| }
0x00006222 mov.w fp, -1 |
| label_17:
0x00006226 add.w r2, r8, 4 | r2 = r8 + 4;
0x0000622a add r3, sp, 0x68 | r3 += var_68h;
0x0000622c mov sl, r2 | sl = r2;
0x0000622e str r3, [sp, 0x4c] | var_4ch_2 = r3;
0x00006230 add r3, sp, 0x60 | r3 += var_60h;
0x00006232 str r3, [sp, 0x40] | var_40h = r3;
| label_12:
0x00006234 ldr r3, [sp, 0x4c] | r3 = var_4ch_2;
0x00006236 str r6, [sp, 0x34] | var_34h = r6;
0x00006238 subs r3, 0xc | r3 -= 0xc;
0x0000623a str r3, [sp, 0x3c] | var_3ch = r3;
| do {
| label_7:
0x0000623c ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00006240 cmp sl, r3 |
| if (sl == r3) {
0x00006242 beq 0x632e | goto label_8;
| }
0x00006244 ldr r7, [r4, 0x30] | r7 = *((r4 + 0x30));
0x00006246 cmp r7, 0 |
| if (r7 != 0) {
0x00006248 bne.w 0x656a | goto label_58;
| }
0x0000624c ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0000624e cmp r1, 0 |
| if (r1 == 0) {
0x00006250 beq.w 0x6ab0 | goto label_59;
| }
0x00006254 ldr.w r5, [r8, 4] | r5 = *((r8 + 4));
0x00006258 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0000625a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0000625c cmp r2, 0 |
| if (r2 != 0) {
0x0000625e bne.w 0x6540 | goto label_60;
| }
0x00006262 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x00006264 adds r0, r2, 1 | r0 = r2 + 1;
| if (r0 == r2) {
0x00006266 beq.w 0x6572 | goto label_61;
| }
| label_11:
0x0000626a ldr.w r1, [pc, 0x898] | r1 = *(0x6b06);
0x0000626e ldr.w r1, [sb, r1] | r1 = *((sb + r1));
0x00006272 cmp r3, r1 |
| if (r3 == r1) {
0x00006274 beq 0x6364 | goto label_62;
| }
0x00006276 ldr.w r1, [pc, 0x890] | r1 = *(0x6b0a);
0x0000627a ldr.w r1, [sb, r1] | r1 = *((sb + r1));
0x0000627e cmp r3, r1 |
| if (r3 == r1) {
0x00006280 beq 0x6336 | goto label_63;
| }
| label_2:
0x00006282 cmp r2, 0 |
| if (r2 == 0) {
0x00006284 beq.w 0x658c | goto label_64;
| }
0x00006288 cmp.w fp, 0 |
| if (fp == 0) {
0x0000628c beq.w 0x65b8 | goto label_65;
| }
0x00006290 ldr.w r2, [pc, 0x878] | r2 = *(0x6b0c);
0x00006294 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00006298 cmp r3, r2 |
| if (r3 == r2) {
0x0000629a beq 0x638c | goto label_66;
| }
| label_0:
0x0000629c ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0000629e mov r0, r5 | r0 = r5;
0x000062a0 ldrd r1, r2, [sp, 0x3c] | __asm ("ldrd r1, r2, [var_3ch]");
0x000062a4 mov r6, r3 | r6 = r3;
0x000062a6 movs r3, 0 | r3 = 0;
0x000062a8 blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x000062aa cmp r0, 0 |
| if (r0 != 0) {
0x000062ac bne 0x6398 | goto label_10;
| }
0x000062ae mov r2, r0 | r2 = r0;
0x000062b0 ldr r0, [sp, 0x4c] | r0 = var_4ch_2;
0x000062b2 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000062b6 ldr r1, [r0, -0x8] | r1 = *((r0 - 0x8));
0x000062ba ldr r0, [r0, -0xc] | r0 = *((r0 - 0xc));
0x000062be blx 0x4fe0 | fcn_00004fe0 ();
0x000062c2 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000062c4 mov r7, r0 | r7 = r0;
0x000062c6 ldr r2, [r5] | r2 = *(r5);
0x000062c8 ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x000062ca str r2, [r3] | *(r3) = r2;
0x000062cc ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x000062ce ldr r2, [r5] | r2 = *(r5);
0x000062d0 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x000062d2 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x000062d4 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x000062d6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000062d8 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000062da mov r0, r5 | r0 = r5;
0x000062dc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000062de str.w sl, [r7, 4] | __asm ("str.w sl, [r7, 4]");
0x000062e2 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000062e6 str r3, [r7] | *(r7) = r3;
0x000062e8 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000062ec str r7, [r3, 4] | *((r3 + 4)) = r7;
0x000062ee str.w r7, [r8, 4] | __asm ("str.w r7, [r8, 4]");
| label_1:
0x000062f2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000062f4 ldr r2, [r7] | r2 = *(r7);
0x000062f6 ldr r5, [sp, 0x44] | r5 = var_44h;
0x000062f8 str r2, [r3] | *(r3) = r2;
0x000062fa ldr r3, [r7] | r3 = *(r7);
0x000062fc ldr r2, [r7, 4] | r2 = *((r7 + 4));
0x000062fe ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00006300 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00006302 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00006304 ldr r2, [r7, 0xc] | r2 = *((r7 + 0xc));
0x00006306 str r3, [r7] | *(r7) = r3;
0x00006308 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x0000630a str r3, [r7, 4] | *((r7 + 4)) = r3;
0x0000630c ldr r3, [r5] | r3 = *(r5);
0x0000630e ldr r0, [r4, 0x14] | r0 = *((r4 + 0x14));
0x00006310 adds r3, r3, r2 | r3 += r2;
0x00006312 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x00006316 cmp r2, fp |
0x00006318 str r7, [r0] | *(r0) = r7;
0x0000631a str r7, [r4, 0x14] | *((r4 + 0x14)) = r7;
0x0000631c strd r3, r1, [r5] | __asm ("strd r3, r1, [r5]");
0x00006320 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
| if (r2 > fp) {
0x00006322 bhi.w 0x65ae | goto label_67;
| }
0x00006326 sub.w fp, fp, r2 |
0x0000632a cmp r3, 0 |
0x0000632c beq 0x623c |
| } while (r3 == 0);
| label_8:
0x0000632e ldr r6, [sp, 0x34] | r6 = var_34h;
0x00006330 mov.w sl, 0 | sl = 0;
0x00006334 b 0x63ae | goto label_9;
| label_63:
0x00006336 cmp r2, 0 |
| if (r2 == 0) {
0x00006338 beq.w 0x658c | goto label_64;
| }
0x0000633c cmp.w fp, 0 |
| if (fp == 0) {
0x00006340 beq.w 0x65b8 | goto label_65;
| }
0x00006344 ldr.w r2, [pc, 0x7c4] | r2 = *(0x6b0c);
0x00006348 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x0000634c cmp r3, r2 |
| if (r3 == r2) {
0x0000634e beq 0x638c | goto label_66;
| }
0x00006350 ldr r2, [r4, 0x3c] | r2 = *((r4 + 0x3c));
0x00006352 cmp r2, 0 |
| if (r2 != 0) {
0x00006354 bne 0x629c | goto label_0;
| }
| label_3:
0x00006356 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00006358 mov r0, r5 | r0 = r5;
0x0000635a ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0000635c blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| if (r0 != 0) {
0x0000635e cbnz r0, 0x6398 | goto label_10;
| }
| label_4:
0x00006360 mov r7, r5 | r7 = r5;
0x00006362 b 0x62f2 | goto label_1;
| label_62:
0x00006364 ldr r1, [r4, 0x3c] | r1 = *((r4 + 0x3c));
0x00006366 cmp r1, 0 |
| if (r1 != 0) {
0x00006368 bne 0x6282 | goto label_2;
| }
0x0000636a ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
0x0000636c ldr r1, [r0] | r1 = *(r0);
0x0000636e cmp r1, 1 |
| if (r1 != 1) {
0x00006370 bne 0x6282 | goto label_2;
| }
0x00006372 cmp r2, 0 |
| if (r2 == 0) {
0x00006374 beq.w 0x658e | goto label_68;
| }
0x00006378 cmp.w fp, 0 |
| if (fp == 0) {
0x0000637c beq.w 0x65b8 | goto label_65;
| }
0x00006380 ldr.w r2, [pc, 0x788] | r2 = *(0x6b0c);
0x00006384 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00006388 cmp r3, r2 |
| if (r3 != r2) {
0x0000638a bne 0x6356 | goto label_3;
| }
| label_66:
0x0000638c ldr r3, [r2, 0x14] | r3 = *((r2 + 0x14));
0x0000638e mov r0, r5 | r0 = r5;
0x00006390 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x00006392 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00006394 cmp r0, 0 |
| if (r0 == 0) {
0x00006396 beq 0x6360 | goto label_4;
| }
| label_10:
0x00006398 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0000639a ldr r6, [sp, 0x34] | r6 = var_34h;
0x0000639c cmp r3, 0 |
| if (r3 != 0) {
0x0000639e bne.w 0x699e | goto label_69;
| }
0x000063a2 cmp r0, 0xb |
| if (r0 == 0xb) {
0x000063a4 beq.w 0x65c2 | goto label_70;
| }
0x000063a8 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000063ac mov sl, r0 | sl = r0;
| label_9:
0x000063ae ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
| if (r3 != 0) {
0x000063b0 cbz r3, 0x63be |
0x000063b2 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000063b4 cmp r2, r6 |
| if (r2 == r6) {
0x000063b6 beq 0x63be | goto label_71;
| }
0x000063b8 ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000063ba mov r1, r4 | r1 = r4;
0x000063bc blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
| label_71:
0x000063be ldr r3, [sp, 0x50] | r3 = var_50h;
| if (r3 != 0) {
0x000063c0 cbz r3, 0x63d2 |
0x000063c2 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
| if (r3 == 0) {
0x000063c4 cbz r3, 0x63d2 | goto label_72;
| }
0x000063c6 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x000063c8 cmp r2, r6 |
| if (r2 == r6) {
0x000063ca beq 0x63d2 | goto label_72;
| }
0x000063cc ldr r0, [r4, 0x4c] | r0 = *((r4 + 0x4c));
0x000063ce mov r1, r4 | r1 = r4;
0x000063d0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
| label_72:
0x000063d2 ldr r0, [r4, 0x44] | r0 = *((r4 + 0x44));
0x000063d4 blx 0x46d8 | loc_imp_apr_thread_cond_broadcast ();
0x000063d8 mov r0, r4 | r0 = r4;
0x000063da bl 0x5ad0 | fcn_00005ad0 (r0, r1);
0x000063de ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x000063e0 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000063e2 cmp r3, 0 |
0x000063e4 ldr r3, [sp, 0x48] | r3 = var_48h_2;
0x000063e6 it ne |
| if (r3 == 0) {
0x000063e8 movne sl, 0x67 | sl = 0x67;
| }
0x000063ec ldr r2, [r2, 0x60] | r2 = *((r2 + 0x60));
0x000063ee ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000063f0 cmp r3, 0 |
| if (r3 < 0) {
0x000063f2 blt 0x644c | goto label_73;
| }
0x000063f4 cmp r2, 0 |
| if (r2 == 0) {
0x000063f6 beq.w 0x6930 | goto label_74;
| }
0x000063fa ldr r1, [r2] | r1 = *(r2);
| if (r1 == 0) {
0x000063fc cbz r1, 0x6452 | goto label_22;
| }
0x000063fe ldrsb r3, [r1, r3] | r3 = *((r1 + r3));
0x00006400 cmp r3, 0 |
| if (r3 < 0) {
0x00006402 blt 0x6452 | goto label_22;
| }
| label_28:
0x00006404 cmp r3, 8 |
| if (r3 > 8) {
0x00006406 bgt 0x6458 | goto label_75;
| }
| do {
| label_6:
0x00006408 ldr r0, [r4, 0x40] | r0 = *((r4 + 0x40));
0x0000640a blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x0000640e ldr.w r2, [pc, 0x700] |
0x00006412 add.w r1, sp, 0x1060 | r1 += var_1060h;
0x00006416 ldr.w r3, [pc, 0x6e0] | r3 = *(0x6afa);
0x0000641a adds r1, 4 | r1 += 4;
0x0000641c add r2, pc | r2 = 0xcf32;
0x0000641e ldr r3, [r2, r3] | r3 = *(0xcf32);
0x00006420 ldr r2, [r3] | r2 = *(0xcf32);
0x00006422 ldr r3, [r1] | r3 = *(r1);
0x00006424 eors r2, r3 | r2 ^= r3;
0x00006426 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000642a bne.w 0x6ad0 | goto label_76;
| }
0x0000642e mov r0, sl | r0 = sl;
0x00006430 add.w sp, sp, 0x1060 |
0x00006434 add sp, 0xc |
0x00006436 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_54:
0x0000643a cmp r2, 0 |
| if (r2 == 0) {
0x0000643c beq.w 0x68e8 | goto label_77;
| }
| label_19:
0x00006440 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00006442 cmp r3, 8 |
0x00006444 ite le |
| if (r3 > 8) {
0x00006446 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00006448 movgt r3, 1 | r3 = 1;
| }
0x0000644a b 0x61f0 | goto label_5;
| label_73:
0x0000644c cmp r2, 0 |
| if (r2 == 0) {
0x0000644e beq.w 0x68de | goto label_78;
| }
| label_22:
0x00006452 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00006454 cmp r3, 8 |
0x00006456 ble 0x6408 |
| } while (r3 <= 8);
| label_75:
0x00006458 ldr.w r3, [pc, 0x6b8] |
0x0000645c add r5, sp, 0x64 | r5 += var_64h;
0x0000645e mov.w r1, 0x1000 | r1 = 0x1000;
0x00006462 mov r0, r5 | r0 = r5;
0x00006464 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x00006466 strh r0, [r0] | *(r0) = r0;
0x00006468 add r3, pc | r3 = 0xcf80;
0x0000646a mov r2, r3 | r2 = r3;
0x0000646c bl 0x1caac | fcn_0001caac (r0, r1, r2, r3, r4);
0x0000646e smlabt fp, lr, r2, sb | __asm ("smlabt fp, lr, r2, sb");
0x00006472 ldr r2, [r3, 8] | r2 = *(0xcf88);
0x00006474 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00006476 cmp r2, 0 |
0x00006478 ldr r1, [r3, 0x60] | r1 = *(0xcfe0);
| if (r2 < 0) {
0x0000647a blt.w 0x68ba | goto label_79;
| }
0x0000647e cmp r1, 0 |
| if (r1 == 0) {
0x00006480 beq.w 0x697a | goto label_80;
| }
0x00006484 ldr r3, [r1] | r3 = *(r1);
0x00006486 cmp r3, 0 |
| if (r3 == 0) {
0x00006488 beq.w 0x68c0 | goto label_34;
| }
0x0000648c ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000648e cmp r3, 0 |
| if (r3 < 0) {
0x00006490 blt.w 0x68c0 | goto label_34;
| }
| label_33:
0x00006494 cmp r3, 8 |
0x00006496 ite le |
| if (r3 > 8) {
0x00006498 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000649a movgt r3, 1 | r3 = 1;
| }
| label_20:
0x0000649c cmp r3, 0 |
| if (r3 == 0) {
0x0000649e beq 0x6408 | goto label_6;
| }
0x000064a0 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x000064a2 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x000064a4 cmp r3, 0 |
| if (r3 == 0) {
0x000064a6 beq.w 0x6972 | goto label_81;
| }
0x000064aa ldr.w lr, [pc, 0x66c] |
0x000064ae add lr, pc | lr = 0xcfcc;
| label_32:
0x000064b0 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000064b2 cmp r3, r6 |
| if (r3 == r6) {
0x000064b4 beq.w 0x69d0 | goto label_82;
| }
0x000064b8 ldr.w ip, [pc, 0x660] |
0x000064bc add ip, pc | ip = 0xcfdc;
| label_42:
0x000064be ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000064c0 cmp r3, r6 |
| if (r3 == r6) {
0x000064c2 beq.w 0x6aa6 | goto label_83;
| }
0x000064c6 mov.w r8, 0 | r8 = 0;
| do {
0x000064ca ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x000064cc ldr r3, [r3] | r3 = *(r3);
0x000064ce adds.w r8, r1, r8 | r8 = r1 + r8;
0x000064d2 cmp r3, r6 |
0x000064d4 bne 0x64ca |
| } while (r3 != r6);
0x000064d6 mov r1, r8 | r1 = r8;
| label_49:
0x000064d8 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000064da mov.w r8, 0 | r8 = 0;
0x000064de cmp r3, r6 |
| if (r3 == r6) {
0x000064e0 beq 0x64ec | goto label_84;
| }
| do {
0x000064e2 ldr r3, [r3] | r3 = *(r3);
0x000064e4 add.w r8, r8, 1 | r8++;
0x000064e8 cmp r3, r6 |
0x000064ea bne 0x64e2 |
| } while (r3 != r6);
| label_84:
0x000064ec mov sb, r4 | sb = r4;
0x000064ee movs r6, 0 | r6 = 0;
0x000064f0 ldr r3, [sb, 0x18]! | r3 = *((sb += 0x18));
0x000064f4 cmp r3, sb |
| if (r3 == sb) {
0x000064f6 beq 0x6500 | goto label_85;
| }
| do {
0x000064f8 ldr r3, [r3] | r3 = *(r3);
0x000064fa adds r6, 1 | r6++;
0x000064fc cmp r3, sb |
0x000064fe bne 0x64f8 |
| } while (r3 != sb);
| if (r0 == 0) {
| label_85:
0x00006500 cbnz r0, 0x6508 |
0x00006502 ldr.w r5, [pc, 0x61c] |
0x00006506 add r5, pc | r5 = 0xd02c;
| }
0x00006508 strd ip, r1, [sp, 0x14] | __asm ("strd ip, r1, [sp, 0x14]");
0x0000650c ldr.w r1, [pc, 0x614] |
0x00006510 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00006512 ldr.w r0, [pc, 0x614] |
0x00006516 add r1, pc | r1 = 0xd03e;
0x00006518 str r5, [sp, 0x28] | var_28h = r5;
0x0000651a str r1, [sp, 8] | var_8h = r1;
0x0000651c ldr.w r1, [pc, 0x60c] |
0x00006520 add r0, pc | r0 = 0xd04e;
0x00006522 str r3, [sp, 4] | var_4h = r3;
0x00006524 movs r3, 9 | r3 = 9;
0x00006526 strd r8, r6, [sp, 0x1c] | __asm ("strd r8, r6, [sp, 0x1c]");
0x0000652a add r1, pc | r1 = 0xd05a;
0x0000652c strd r7, lr, [sp, 0xc] | __asm ("strd r7, lr, [sp, 0xc]");
0x00006530 str r1, [sp, 0x24] | var_24h = r1;
0x00006532 movw r1, 0x237 | r1 = 0x237;
0x00006536 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x0000653a blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000653e b 0x6408 | goto label_6;
| label_60:
0x00006540 ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00006542 ldr r0, [r5] | r0 = *(r5);
0x00006544 ldr r3, [r3, 0x14] | r3 = *((r3 + 0x14));
0x00006546 str r0, [r2] | *(r2) = r0;
0x00006548 ldr r2, [r5] | r2 = *(r5);
0x0000654a ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0000654c str r0, [r2, 4] | *((r2 + 4)) = r0;
0x0000654e mov r0, r5 | r0 = r5;
0x00006550 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00006552 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00006554 str r3, [r5] | *(r5) = r3;
0x00006556 ldr r3, [r4, 0x14] | r3 = *((r4 + 0x14));
0x00006558 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x0000655a ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0000655c ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0000655e str r5, [r2] | *(r2) = r5;
0x00006560 str r5, [r4, 0x14] | *((r4 + 0x14)) = r5;
0x00006562 cmp r3, 0 |
| if (r3 == 0) {
0x00006564 beq.w 0x623c | goto label_7;
| }
0x00006566 add r6, sp, 0x1a8 | r6 = sp + 0x1a8;
0x00006568 b 0x632e | goto label_8;
| label_58:
0x0000656a ldr r6, [sp, 0x34] | r6 = var_34h;
0x0000656c mov.w sl, 0x67 | sl = 0x67;
0x0000656e lsrs r7, r4, 9 | r7 = r4 >> 9;
0x00006570 b 0x63ae | goto label_9;
| label_61:
0x00006572 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x00006574 mov r0, r5 | r0 = r5;
0x00006576 ldrd r1, r2, [sp, 0x3c] | __asm ("ldrd r1, r2, [var_3ch]");
0x0000657a mov r6, r3 | r6 = r3;
0x0000657c mov r3, r7 | r3 = r7;
0x0000657e blx r6 | r0 = uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00006580 cmp r0, 0 |
| if (r0 != 0) {
0x00006582 bne.w 0x6398 | goto label_10;
| }
0x00006586 ldrd r3, r2, [r5, 8] | __asm ("ldrd r3, r2, [r5, 8]");
0x0000658a b 0x626a | goto label_11;
| label_64:
0x0000658c ldr r0, [r5, 0x18] | r0 = *((r5 + 0x18));
| label_68:
0x0000658e ldr r2, [r5, 4] | r2 = *((r5 + 4));
0x00006590 ldr r1, [r5] | r1 = *(r5);
0x00006592 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00006594 str r1, [r2] | *(r2) = r1;
0x00006596 ldr r2, [r5] | r2 = *(r5);
0x00006598 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x0000659a str r1, [r2, 4] | *((r2 + 4)) = r1;
0x0000659c blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x0000659e ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000065a0 mov r0, r5 | r0 = r5;
0x000065a2 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x000065a4 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x000065a6 cmp r3, 0 |
| if (r3 == 0) {
0x000065a8 beq.w 0x623c | goto label_7;
| }
0x000065ac b 0x632e | goto label_8;
| label_67:
0x000065ae cmp r3, 0 |
| if (r3 != 0) {
0x000065b0 bne.w 0x632e | goto label_8;
| }
0x000065b4 mov fp, r3 |
0x000065b6 b 0x623c | goto label_7;
| label_65:
0x000065b8 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x000065ba ldr r6, [sp, 0x34] | r6 = var_34h;
0x000065bc cmp r3, 0 |
| if (r3 != 0) {
0x000065be bne.w 0x69ba | goto label_86;
| }
| label_70:
0x000065c2 mov r0, r4 | r0 = r4;
0x000065c4 bl 0x5a6c | fcn_00005a6c (r0);
0x000065c8 ldr r3, [r4, 0x58] | r3 = *((r4 + 0x58));
| if (r3 != 0) {
0x000065ca cbz r3, 0x65d2 |
0x000065cc ldr r0, [r4, 0x5c] | r0 = *((r4 + 0x5c));
0x000065ce mov r1, r4 | r1 = r4;
0x000065d0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
0x000065d2 ldr r3, [sp, 0x50] | r3 = var_50h;
| if (r3 != 0) {
0x000065d4 cbz r3, 0x65e0 |
0x000065d6 ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
| if (r3 == 0) {
0x000065d8 cbz r3, 0x65e0 | goto label_87;
| }
0x000065da ldr r0, [r4, 0x4c] | r0 = *((r4 + 0x4c));
0x000065dc mov r1, r4 | r1 = r4;
0x000065de blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
| }
| label_87:
0x000065e0 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
| if (r0 == 0) {
| label_14:
0x000065e2 cbnz r0, 0x65fc |
0x000065e4 mov.w fp, -1 |
| label_15:
0x000065e8 cmp r7, 0 |
| if (r7 != 0) {
0x000065ea bne.w 0x6962 | goto label_88;
| }
0x000065ee ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000065f0 subs r3, r3, r6 | r3 -= r6;
0x000065f2 clz r3, r3 | r3 &= r3;
0x000065f6 lsrs r3, r3, 5 | r3 >>= 5;
0x000065f8 str r3, [sp, 0x50] | var_50h = r3;
0x000065fa b 0x6234 | goto label_12;
| }
| label_13:
0x000065fc ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000065fe cmp r3, r6 |
| if (r3 == r6) {
0x00006600 beq.w 0x6966 | goto label_89;
| }
0x00006604 mov.w ip, 0 |
0x00006608 mov lr, r0 | lr = r0;
| do {
0x0000660a ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0000660c adds r1, r2, 1 | r1 = r2 + 1;
| if (r1 != r2) {
0x0000660e beq 0x662e |
0x00006610 ldr.w r1, [pc, 0x4f0] | r1 = *(0x6b04);
0x00006614 ldr.w r1, [sb, r1] | r1 = *((sb + r1));
0x00006616 asrs r1, r0, 0x20 | r1 = r0 >> 0x20;
0x00006618 mov r0, r1 | r0 = r1;
0x0000661a ldr.w r1, [pc, 0x4ec] | r1 = *(0x6b0a);
0x0000661e ldr.w r5, [sb, r1] | r5 = *((sb + r1));
0x00006622 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00006624 cmp r1, r5 |
0x00006626 it ne |
| if (r1 != r5) {
0x00006628 cmpne r1, r0 | __asm ("cmpne r1, r0");
| }
0x0000662a it ne |
| if (r1 != r5) {
0x0000662c addne ip, r2 | goto label_90;
| }
| }
| label_90:
0x0000662e ldr r3, [r3] | r3 = *(r3);
0x00006630 cmp r3, r6 |
0x00006632 bne 0x660a |
| } while (r3 != r6);
0x00006634 cmp ip, lr |
0x00006636 mov r0, lr | r0 = lr;
| if (ip <= lr) {
0x00006638 blo 0x6736 | goto label_91;
| }
0x0000663a cmp r7, 0 |
| if (r7 != 0) {
0x0000663c bne.w 0x6962 | goto label_88;
| }
0x00006640 ldr r1, [r4, 0x30] | r1 = *((r4 + 0x30));
0x00006642 movs r7, 0x67 | r7 = 0x67;
0x00006644 cmp r1, 0 |
| if (r1 != 0) {
0x00006646 bne 0x65fc | goto label_13;
| }
0x00006648 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0000664a movs r7, 0xb | r7 = 0xb;
0x0000664c cmp r3, 0 |
| if (r3 != 0) {
0x0000664e bne 0x65e2 | goto label_14;
| }
0x00006650 ldr r0, [sp, 0x48] | r0 = var_48h_2;
0x00006652 ldrd r2, r3, [r4, 0x28] | __asm ("ldrd r2, r3, [r4, 0x28]");
0x00006656 ldr r5, [r0, 8] | r5 = *((r0 + 8));
0x00006658 ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000665a cmp r2, 1 |
0x0000665c ldr r7, [r0, 0x60] | r7 = *((r0 + 0x60));
0x0000665e sbcs r0, r3, 0 | __asm ("sbcs r0, r3, 0");
| if (r2 < 1) {
0x00006662 blt.w 0x685e | goto label_92;
| }
0x00006666 cmp r5, 0 |
| if (r5 < 0) {
0x00006668 blt.w 0x694e | goto label_93;
| }
0x0000666c cmp r7, 0 |
| if (r7 == 0) {
0x0000666e beq.w 0x6906 | goto label_94;
| }
0x00006672 ldr.w ip, [r7] | ip = *(r7);
0x00006676 cmp.w ip, 0 |
| if (ip == 0) {
0x0000667a beq.w 0x6944 | goto label_30;
| }
0x0000667e ldrsb.w r0, [ip, r5] | r0 = *((ip + r5));
0x00006682 cmp r0, 0 |
| if (r0 < 0) {
0x00006684 blt.w 0x69fe | goto label_95;
| }
0x00006688 cmp r0, 8 |
| if (r0 <= 8) {
0x0000668a ble 0x6728 | goto label_25;
| }
| label_44:
0x0000668c ldrsb.w r0, [ip, r5] | r0 = *((ip + r5));
0x00006690 cmp r0, 0 |
| if (r0 >= 0) {
0x00006692 bge.w 0x6926 | goto label_96;
| }
| label_29:
0x00006696 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00006698 cmp r0, 8 |
0x0000669a ite le |
| if (r0 > 8) {
0x0000669c movle r0, 0 | r0 = 0;
| }
| if (r0 <= 8) {
0x0000669e movgt r0, 1 | r0 = 1;
| }
| label_26:
0x000066a0 cmp r0, 0 |
| if (r0 == 0) {
0x000066a2 beq 0x6728 | goto label_25;
| }
0x000066a4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000066a6 ldr r7, [r4, 4] | r7 = *((r4 + 4));
0x000066a8 cmp r3, r6 |
| if (r3 == r6) {
0x000066aa beq.w 0x69c0 | goto label_97;
| }
0x000066ae ldr.w ip, [pc, 0x480] |
0x000066b2 add ip, pc | ip = 0xd1e8;
| label_40:
0x000066b4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000066b6 movs r0, 0 | r0 = 0;
0x000066b8 cmp r3, r6 |
| if (r3 == r6) {
0x000066ba beq 0x66c6 | goto label_98;
| }
| do {
0x000066bc ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000066be ldr r3, [r3] | r3 = *(r3);
0x000066c0 adds r0, r2, r0 | r0 = r2 + r0;
0x000066c2 cmp r3, r6 |
0x000066c4 bne 0x66bc |
| } while (r3 != r6);
| label_98:
0x000066c6 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x000066c8 movs r2, 0 | r2 = 0;
0x000066ca cmp r3, r6 |
| if (r3 == r6) {
0x000066cc beq 0x66d6 | goto label_99;
| }
| do {
0x000066ce ldr r3, [r3] | r3 = *(r3);
0x000066d0 adds r2, 1 | r2++;
0x000066d2 cmp r3, r6 |
0x000066d4 bne 0x66ce |
| } while (r3 != r6);
| label_99:
0x000066d6 mov lr, r4 | lr = r4;
0x000066d8 ldr r3, [lr, 0x18]! | r3 = *((lr += 0x18));
0x000066dc cmp r3, lr |
| if (r3 == lr) {
0x000066de beq 0x66e8 | goto label_100;
| }
| do {
0x000066e0 ldr r3, [r3] | r3 = *(r3);
0x000066e2 adds r1, 1 | r1++;
0x000066e4 cmp r3, lr |
0x000066e6 bne 0x66e0 |
| } while (r3 != lr);
| label_100:
0x000066e8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000066ea strd ip, r0, [sp, 0x14] | __asm ("strd ip, r0, [sp, 0x14]");
0x000066ee ldr.w r0, [pc, 0x444] |
0x000066f2 str r3, [sp, 4] | var_4h = r3;
0x000066f4 ldr.w r3, [pc, 0x440] |
0x000066f8 strd r2, r1, [sp, 0x1c] | __asm ("strd r2, r1, [sp, 0x1c]");
0x000066fc add r0, pc | r0 = 0xd236;
0x000066fe mov r2, r5 | r2 = r5;
0x00006700 movs r1, 0xdb | r1 = 0xdb;
0x00006702 add r3, pc | r3 = 0xd23e;
0x00006704 str r7, [sp, 0xc] | var_ch = r7;
0x00006706 str r3, [sp, 0x28] | var_28h = r3;
0x00006708 str r3, [sp, 0x10] | var_10h = r3;
0x0000670a ldr.w r3, [pc, 0x430] |
0x0000670e add r3, pc | r3 = 0xd250;
0x00006710 str r3, [sp, 0x24] | var_24h = r3;
0x00006712 ldr.w r3, [pc, 0x42c] |
0x00006716 add r3, pc | r3 = 0xd25c;
0x00006718 str r3, [sp, 8] | var_8h = r3;
0x0000671a movs r3, 0 | r3 = 0;
0x0000671c str r3, [sp] | *(sp) = r3;
0x0000671e movs r3, 9 | r3 = 9;
0x00006720 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x00006724 ldrd r2, r3, [r4, 0x28] | __asm ("ldrd r2, r3, [r4, 0x28]");
| label_25:
0x00006728 ldrd r1, r0, [r4, 0x40] | __asm ("ldrd r1, r0, [r4, 0x40]");
0x0000672c blx 0x5174 | r0 = fcn_00005174 ();
0x00006730 mov r7, r0 | r7 = r0;
0x00006732 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006734 b 0x65e2 | goto label_14;
| label_91:
0x00006736 sub.w fp, lr, ip |
0x0000673a b 0x65e8 | goto label_15;
| label_56:
0x0000673c ldr.w r3, [pc, 0x404] |
0x00006740 add r5, sp, 0x64 | r5 += var_64h;
0x00006742 mov.w r1, 0x1000 | r1 = 0x1000;
0x00006746 mov r0, r5 | r0 = r5;
0x00006748 str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000674c add r3, pc | r3 = 0xd294;
0x0000674e mov r2, r3 | r2 = r3;
0x00006750 bl 0x1caac | fcn_0001caac (r0, r1, r2, r3, r4);
0x00006754 ldr r3, [sp, 0x48] | r3 = var_48h_2;
0x00006756 mov lr, r0 | lr = r0;
0x00006758 ldr r2, [r3, 8] | r2 = *(0xd29c);
0x0000675a ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000675c cmp r2, 0 |
0x0000675e ldr r1, [r3, 0x60] | r1 = *(0xd2f4);
| if (r2 < 0) {
0x00006760 blt.w 0x68cc | goto label_101;
| }
0x00006762 strh r4, [r6, 4] | *((r6 + 4)) = r4;
0x00006764 cmp r1, 0 |
| if (r1 == 0) {
0x00006766 beq.w 0x698c | goto label_102;
| }
0x0000676a ldr r3, [r1] | r3 = *(r1);
0x0000676c cmp r3, 0 |
| if (r3 == 0) {
0x0000676e beq.w 0x68d2 | goto label_36;
| }
0x00006772 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00006774 cmp r3, 0 |
| if (r3 < 0) {
0x00006776 blt.w 0x68d2 | goto label_36;
| }
| label_35:
0x0000677a cmp r3, 8 |
0x0000677c ite le |
| if (r3 > 8) {
0x0000677e movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00006780 movgt r3, 1 | r3 = 1;
| }
| label_21:
0x00006782 cmp r3, 0 |
| if (r3 == 0) {
0x00006784 beq.w 0x61fa | goto label_16;
| }
0x00006788 ldr r3, [r4, 0x30] | r3 = *((r4 + 0x30));
0x0000678a ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0000678c str r1, [sp, 0x34] | var_34h = r1;
0x0000678e cmp r3, 0 |
| if (r3 == 0) {
0x00006790 beq.w 0x696a | goto label_103;
| }
0x00006794 ldr.w fp, [pc, 0x3b0] |
0x00006798 add fp, pc | fp = 0xd2e4;
| label_31:
0x0000679a ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000679c cmp r3, r6 |
| if (r3 == r6) {
0x0000679e beq.w 0x69c8 | goto label_104;
| }
0x000067a2 ldr.w sl, [pc, 0x3a8] |
0x000067a6 add sl, pc | sl = 0xd2f8;
| label_41:
0x000067a8 ldr r0, [r4, 0x10] | r0 = *((r4 + 0x10));
0x000067aa movs r3, 0 | r3 = 0;
0x000067ac cmp r0, r6 |
| if (r0 == r6) {
0x000067ae beq 0x67ba | goto label_105;
| }
| do {
0x000067b0 ldr r1, [r0, 0xc] | r1 = *((r0 + 0xc));
0x000067b2 ldr r0, [r0] | r0 = *(r0);
0x000067b4 adds r3, r1, r3 | r3 = r1 + r3;
0x000067b6 cmp r0, r6 |
0x000067b8 bne 0x67b0 |
| } while (r0 != r6);
| label_105:
0x000067ba ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x000067bc movs r7, 0 | r7 = 0;
0x000067be cmp r1, r6 |
| if (r1 == r6) {
0x000067c0 beq 0x67ca | goto label_106;
| }
| do {
0x000067c2 ldr r1, [r1] | r1 = *(r1);
0x000067c4 adds r7, 1 | r7++;
0x000067c6 cmp r1, r6 |
0x000067c8 bne 0x67c2 |
| } while (r1 != r6);
| label_106:
0x000067ca mov ip, r4 |
0x000067cc movs r0, 0 | r0 = 0;
0x000067ce ldr r1, [ip, 0x18]! | r1 = *((ip += 0x18));
0x000067d2 cmp ip, r1 |
| if (ip == r1) {
0x000067d4 beq 0x67de | goto label_107;
| }
| do {
0x000067d6 ldr r1, [r1] | r1 = *(r1);
0x000067d8 adds r0, 1 | r0++;
0x000067da cmp ip, r1 |
0x000067dc bne 0x67d6 |
| } while (ip != r1);
| label_107:
0x000067de cmp.w lr, 0 |
| if (lr == 0) {
0x000067e2 bne 0x67e8 |
0x000067e4 ldr r5, [pc, 0x368] |
0x000067e6 add r5, pc | r5 = 0xd33a;
| }
0x000067e8 strd sl, r3, [sp, 0x14] | __asm ("strd sl, r3, [sp, 0x14]");
0x000067ec mov.w r1, 0x20c | r1 = 0x20c;
0x000067f0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000067f2 strd r7, r0, [sp, 0x1c] | __asm ("strd r7, r0, [sp, 0x1c]");
0x000067f6 ldr r0, [pc, 0x35c] |
0x000067f8 str r3, [sp, 0xc] | var_ch = r3;
0x000067fa ldr r3, [sp, 0x38] | r3 = var_38h;
0x000067fc add r0, pc | r0 = 0xd356;
0x000067fe str r5, [sp, 0x28] | var_28h = r5;
0x00006800 str.w fp, [sp, 0x10] | __asm ("str.w fp, [var_10h]");
0x00006804 str r3, [sp, 4] | var_4h = r3;
0x00006806 ldr r3, [pc, 0x350] |
0x00006808 add r3, pc | r3 = 0xd366;
0x0000680a str r3, [sp, 0x24] | var_24h = r3;
0x0000680c ldr r3, [pc, 0x34c] |
0x0000680e add r3, pc | r3 = 0xd36e;
0x00006810 str r3, [sp, 8] | var_8h = r3;
0x00006812 movs r3, 0 | r3 = 0;
0x00006814 str r3, [sp] | *(sp) = r3;
0x00006816 movs r3, 9 | r3 = 9;
0x00006818 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000681c b 0x61fa | goto label_16;
| label_57:
0x0000681e ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00006820 cmp r3, r6 |
| if (r3 == r6) {
0x00006822 beq.w 0x6226 | goto label_17;
| }
0x00006826 movs r5, 0 | r5 = 0;
| do {
0x00006828 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0000682a adds r7, r2, 1 | r7 = r2 + 1;
| if (r7 != r2) {
0x0000682c beq 0x6846 |
0x0000682e ldr r1, [pc, 0x2d8] | r1 = *(0x6b0a);
0x00006830 ldr.w r7, [sb, r1] | r7 = *((sb + r1));
0x00006834 ldr r1, [pc, 0x2cc] | r1 = *(0x6b04);
0x00006836 ldr.w r0, [sb, r1] | r0 = *((sb + r1));
0x0000683a ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0000683c cmp r1, r0 |
0x0000683e it ne |
| if (r1 != r0) {
0x00006840 cmpne r1, r7 | __asm ("cmpne r1, r7");
| }
0x00006842 it ne |
| if (r1 != r0) {
0x00006844 addne r5, r5, r2 | r5 += r2;
| goto label_108;
| }
| }
| label_108:
0x00006846 ldr r3, [r3] | r3 = *(r3);
0x00006848 cmp r3, r6 |
0x0000684a bne 0x6828 |
| } while (r3 != r6);
0x0000684c cmp r5, fp |
0x0000684e it lo |
| if (r5 < fp) {
0x00006850 sublo fp, fp, r5 | goto label_109;
| }
| if (r5 <= fp) {
| label_109:
0x00006854 blo.w 0x6226 | goto label_17;
| }
0x00006858 mov.w fp, 0 |
0x0000685c b 0x6226 | goto label_17;
| label_92:
0x0000685e cmp r5, 0 |
| if (r5 < 0) {
0x00006860 blt 0x68ee | goto label_110;
| }
0x00006862 cmp r7, 0 |
| if (r7 == 0) {
0x00006864 beq.w 0x69d8 | goto label_111;
| }
0x00006868 ldr.w ip, [r7] | ip = *(r7);
0x0000686c cmp.w ip, 0 |
| if (ip == 0) {
0x00006870 beq 0x68f4 | goto label_112;
| }
0x00006872 ldrsb.w r3, [ip, r5] | r3 = *((ip + r5));
0x00006876 cmp r3, 0 |
| if (r3 < 0) {
0x00006878 blt.w 0x69a2 | goto label_113;
| }
0x0000687c cmp r3, 8 |
| if (r3 > 8) {
0x0000687e ble 0x6896 |
| label_38:
0x00006880 ldrsb.w r3, [ip, r5] | r3 = *((ip + r5));
0x00006884 cmp r3, 0 |
| if (r3 < 0) {
0x00006886 blt 0x68fa | goto label_37;
| }
| label_43:
0x00006888 cmp r3, 8 |
0x0000688a ite le |
| if (r3 > 8) {
0x0000688c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000688e movgt r3, 1 | r3 = 1;
| }
| label_24:
0x00006890 cmp r3, 0 |
| if (r3 != 0) {
0x00006892 bne.w 0x6a18 | goto label_114;
| }
| }
| label_23:
0x00006896 ldrd r1, r0, [r4, 0x40] | __asm ("ldrd r1, r0, [r4, 0x40]");
0x0000689a blx 0x51f8 | r0 = fcn_000051f8 ();
0x0000689e mov r7, r0 | r7 = r0;
0x000068a0 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x000068a2 b 0x65e2 | goto label_14;
| label_55:
0x000068a4 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000068a6 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x000068a8 ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
| if (r2 == 0) {
0x000068aa cbz r2, 0x68b4 | goto label_115;
| }
0x000068ac ldrsb r3, [r2, r3] | r3 = *((r2 + r3));
0x000068ae cmp r3, 0 |
| if (r3 >= 0) {
0x000068b0 bge.w 0x61e8 | goto label_18;
| }
| do {
| label_115:
0x000068b4 add.w r2, r1, 0x10 | r2 = r1 + 0x10;
0x000068b8 b 0x6440 | goto label_19;
| label_79:
0x000068ba cmp r1, 0 |
| if (r1 == 0) {
0x000068bc beq.w 0x6a14 | goto label_116;
| }
| label_34:
0x000068c0 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000068c2 cmp r3, 8 |
0x000068c4 ite le |
| if (r3 > 8) {
0x000068c6 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x000068c8 movgt r3, 1 | r3 = 1;
| }
0x000068ca b 0x649c | goto label_20;
| label_101:
0x000068cc cmp r1, 0 |
| if (r1 == 0) {
0x000068ce beq.w 0x6a10 | goto label_117;
| }
| label_36:
0x000068d2 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000068d4 cmp r3, 8 |
0x000068d6 ite le |
| if (r3 > 8) {
0x000068d8 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x000068da movgt r3, 1 | r3 = 1;
| }
0x000068dc b 0x6782 | goto label_21;
| label_78:
0x000068de ldr r3, [sp, 0x38] | r3 = var_38h;
0x000068e0 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| label_27:
0x000068e2 add.w r2, r1, 0x10 | r2 = r1 + 0x10;
0x000068e6 b 0x6452 | goto label_22;
| label_77:
0x000068e8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000068ea ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x000068ec b 0x68b4 |
| } while (1);
| label_110:
0x000068ee cmp r7, 0 |
| if (r7 == 0) {
0x000068f0 beq.w 0x6a92 | goto label_118;
| }
| label_112:
0x000068f4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000068f6 cmp r3, 8 |
| if (r3 <= 8) {
0x000068f8 ble 0x6896 | goto label_23;
| }
| label_37:
0x000068fa ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000068fc cmp r3, 8 |
0x000068fe ite le |
| if (r3 > 8) {
0x00006900 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00006902 movgt r3, 1 | r3 = 1;
| }
0x00006904 b 0x6890 | goto label_24;
| label_94:
0x00006906 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00006908 ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x0000690a ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
0x0000690c cmp r0, 0 |
| if (r0 == 0) {
0x0000690e beq 0x69b2 | goto label_119;
| }
0x00006910 ldrsb r0, [r0, r5] | r0 = *((r0 + r5));
0x00006912 cmp r0, 0 |
| if (r0 < 0) {
0x00006914 blt 0x69b2 | goto label_119;
| }
0x00006916 cmp r0, 8 |
| if (r0 <= 8) {
0x00006918 ble.w 0x6728 | goto label_25;
| }
| label_39:
0x0000691c ldr r0, [r7, 0x10] | r0 = *((r7 + 0x10));
| if (r0 == 0) {
0x0000691e cbz r0, 0x695e | goto label_120;
| }
0x00006920 ldrsb r0, [r0, r5] | r0 = *((r0 + r5));
0x00006922 cmp r0, 0 |
| if (r0 < 0) {
0x00006924 blt 0x695e | goto label_120;
| }
| label_96:
0x00006926 cmp r0, 8 |
0x00006928 ite le |
| if (r0 > 8) {
0x0000692a movle r0, 0 | r0 = 0;
| }
| if (r0 <= 8) {
0x0000692c movgt r0, 1 | r0 = 1;
| }
0x0000692e b 0x66a0 | goto label_26;
| label_74:
0x00006930 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00006932 ldr r1, [r2, 4] | r1 = *((r2 + 4));
0x00006934 ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
0x00006936 cmp r2, 0 |
| if (r2 == 0) {
0x00006938 beq 0x68e2 | goto label_27;
| }
0x0000693a ldrsb r3, [r2, r3] | r3 = *((r2 + r3));
0x0000693c cmp r3, 0 |
| if (r3 >= 0) {
0x0000693e bge.w 0x6404 | goto label_28;
| }
0x00006942 b 0x68e2 | goto label_27;
| label_30:
0x00006944 ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00006946 cmp r0, 8 |
| if (r0 > 8) {
0x00006948 bgt.w 0x6696 | goto label_29;
| }
0x0000694c b 0x6728 | goto label_25;
| label_93:
0x0000694e cmp r7, 0 |
| if (r7 != 0) {
0x00006950 bne 0x6944 | goto label_30;
| }
0x00006952 ldr r0, [sp, 0x38] | r0 = var_38h;
0x00006954 ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x00006956 ldr r0, [r7, 0x14] | r0 = *((r7 + 0x14));
0x00006958 cmp r0, 8 |
| if (r0 <= 8) {
0x0000695a ble.w 0x6728 | goto label_25;
| }
| label_120:
0x0000695e adds r7, 0x10 | r7 += 0x10;
0x00006960 b 0x6696 | goto label_29;
| label_88:
0x00006962 mov sl, r7 | sl = r7;
0x00006964 b 0x63ae | goto label_9;
| label_89:
0x00006966 mov fp, r0 |
0x00006968 b 0x65e8 | goto label_15;
| label_103:
0x0000696a ldr.w fp, [pc, 0x1f4] |
0x0000696e add fp, pc | fp = 0xd4d4;
0x00006970 b 0x679a | goto label_31;
| label_81:
0x00006972 ldr.w lr, [pc, 0x1f0] |
0x00006976 add lr, pc | lr = 0xd4e0;
0x00006978 b 0x64b0 | goto label_32;
| label_80:
0x0000697a ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0000697c ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
| if (r3 == 0) {
0x0000697e cbz r3, 0x6988 | goto label_46;
| }
0x00006980 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00006982 cmp r3, 0 |
| if (r3 >= 0) {
0x00006984 bge.w 0x6494 | goto label_33;
| }
| label_46:
0x00006988 adds r1, 0x10 | r1 += 0x10;
0x0000698a b 0x68c0 | goto label_34;
| label_102:
0x0000698c ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0000698e ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
| if (r3 == 0) {
0x00006990 cbz r3, 0x699a | goto label_45;
| }
0x00006992 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00006994 cmp r3, 0 |
| if (r3 >= 0) {
0x00006996 bge.w 0x677a | goto label_35;
| }
| label_45:
0x0000699a adds r1, 0x10 | r1 += 0x10;
0x0000699c b 0x68d2 | goto label_36;
| label_69:
0x0000699e mov sl, r0 | sl = r0;
0x000069a0 b 0x63ae | goto label_9;
| label_113:
0x000069a2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x000069a4 cmp r3, 8 |
| if (r3 <= 8) {
0x000069a6 ble.w 0x6896 | goto label_23;
| }
0x000069aa cmp.w ip, 0 |
| if (ip == 0) {
0x000069ae beq 0x68fa | goto label_37;
| }
0x000069b0 b 0x6880 | goto label_38;
| label_119:
0x000069b2 ldr r0, [r7, 0x14] | r0 = *((r7 + 0x14));
0x000069b4 cmp r0, 8 |
| if (r0 > 8) {
0x000069b6 bgt 0x691c | goto label_39;
| }
0x000069b8 b 0x6728 | goto label_25;
| label_86:
0x000069ba mov.w sl, 0xb | sl = 0xb;
0x000069be b 0x63ae | goto label_9;
| label_97:
0x000069c0 ldr.w ip, [pc, 0x1a4] |
0x000069c4 add ip, pc | ip = 0xd530;
0x000069c6 b 0x66b4 | goto label_40;
| label_104:
0x000069c8 ldr.w sl, [pc, 0x1a0] |
0x000069cc add sl, pc | sl = 0xd53c;
0x000069ce b 0x67a8 | goto label_41;
| label_82:
0x000069d0 ldr.w ip, [pc, 0x19c] |
0x000069d4 add ip, pc | ip = 0xd548;
0x000069d6 b 0x64be | goto label_42;
| label_111:
0x000069d8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x000069da ldr r7, [r3, 4] | r7 = *((r3 + 4));
0x000069dc ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x000069de cmp r3, 0 |
| if (r3 == 0) {
0x000069e0 beq 0x6a9e | goto label_121;
| }
0x000069e2 ldrsb r3, [r3, r5] | r3 = *((r3 + r5));
0x000069e4 cmp r3, 0 |
| if (r3 < 0) {
0x000069e6 blt 0x6a9e | goto label_121;
| }
0x000069e8 cmp r3, 8 |
| if (r3 <= 8) {
0x000069ea ble.w 0x6896 | goto label_23;
| }
| label_48:
0x000069ee ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
| if (r3 == 0) {
0x000069f0 cbz r3, 0x69fa | goto label_47;
| }
0x000069f2 ldrsb r3, [r3, r5] | r3 = *((r3 + r5));
0x000069f4 cmp r3, 0 |
| if (r3 >= 0) {
0x000069f6 bge.w 0x6888 | goto label_43;
| }
| label_47:
0x000069fa adds r7, 0x10 | r7 += 0x10;
0x000069fc b 0x68fa | goto label_37;
| label_95:
0x000069fe ldr r0, [r7, 4] | r0 = *((r7 + 4));
0x00006a00 cmp r0, 8 |
| if (r0 <= 8) {
0x00006a02 ble.w 0x6728 | goto label_25;
| }
0x00006a06 cmp.w ip, 0 |
| if (ip == 0) {
0x00006a0a beq.w 0x6696 | goto label_29;
| }
0x00006a0e b 0x668c | goto label_44;
| label_117:
0x00006a10 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00006a12 b 0x699a | goto label_45;
| label_116:
0x00006a14 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00006a16 b 0x6988 | goto label_46;
| label_114:
0x00006a18 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00006a1a ldr.w ip, [r4, 4] | ip = *((r4 + 4));
0x00006a1e cmp r3, r6 |
| if (r3 == r6) {
0x00006a20 beq 0x6aaa | goto label_122;
| }
0x00006a22 ldr r7, [pc, 0x150] |
0x00006a24 add r7, pc | r7 = 0xd59e;
| label_50:
0x00006a26 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00006a28 movs r0, 0 | r0 = 0;
0x00006a2a cmp r3, r6 |
| if (r3 == r6) {
0x00006a2c beq 0x6a38 | goto label_123;
| }
| do {
0x00006a2e ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x00006a30 ldr r3, [r3] | r3 = *(r3);
0x00006a32 adds r0, r2, r0 | r0 = r2 + r0;
0x00006a34 cmp r3, r6 |
0x00006a36 bne 0x6a2e |
| } while (r3 != r6);
| label_123:
0x00006a38 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00006a3a movs r2, 0 | r2 = 0;
0x00006a3c cmp r3, r6 |
| if (r3 == r6) {
0x00006a3e beq 0x6a48 | goto label_124;
| }
| do {
0x00006a40 ldr r3, [r3] | r3 = *(r3);
0x00006a42 adds r2, 1 | r2++;
0x00006a44 cmp r3, r6 |
0x00006a46 bne 0x6a40 |
| } while (r3 != r6);
| label_124:
0x00006a48 mov lr, r4 | lr = r4;
0x00006a4a ldr r3, [lr, 0x18]! | r3 = *((lr += 0x18));
0x00006a4e cmp r3, lr |
| if (r3 == lr) {
0x00006a50 beq 0x6a5a | goto label_125;
| }
| do {
0x00006a52 ldr r3, [r3] | r3 = *(r3);
0x00006a54 adds r1, 1 | r1++;
0x00006a56 cmp r3, lr |
0x00006a58 bne 0x6a52 |
| } while (r3 != lr);
| label_125:
0x00006a5a ldr r3, [sp, 0x38] | r3 = var_38h;
0x00006a5c strd r7, r0, [sp, 0x14] | __asm ("strd r7, r0, [sp, 0x14]");
0x00006a60 ldr r0, [pc, 0x114] |
0x00006a62 str r3, [sp, 4] | var_4h = r3;
0x00006a64 ldr r3, [pc, 0x114] |
0x00006a66 strd r2, r1, [sp, 0x1c] | __asm ("strd r2, r1, [sp, 0x1c]");
0x00006a6a add r0, pc | r0 = 0xd5e6;
0x00006a6c mov r2, r5 | r2 = r5;
0x00006a6e movs r1, 0xdf | r1 = 0xdf;
0x00006a70 add r3, pc | r3 = 0xd5f0;
0x00006a72 str.w ip, [sp, 0xc] | __asm ("str.w ip, [var_ch]");
0x00006a76 str r3, [sp, 0x28] | var_28h = r3;
0x00006a78 str r3, [sp, 0x10] | var_10h = r3;
0x00006a7a ldr r3, [pc, 0x104] |
0x00006a7c add r3, pc | r3 = 0xd602;
0x00006a7e str r3, [sp, 0x24] | var_24h = r3;
0x00006a80 ldr r3, [pc, 0x100] |
0x00006a82 add r3, pc | r3 = 0xd60a;
0x00006a84 str r3, [sp, 8] | var_8h = r3;
0x00006a86 movs r3, 0 | r3 = 0;
0x00006a88 str r3, [sp] | *(sp) = r3;
0x00006a8a movs r3, 9 | r3 = 9;
0x00006a8c blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x00006a90 b 0x6896 | goto label_23;
| label_118:
0x00006a92 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00006a94 ldr r7, [r3, 4] | r7 = *((r3 + 4));
0x00006a96 ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00006a98 cmp r3, 8 |
| if (r3 > 8) {
0x00006a9a bgt 0x69fa | goto label_47;
| }
0x00006a9c b 0x6896 | goto label_23;
| label_121:
0x00006a9e ldr r3, [r7, 0x14] | r3 = *((r7 + 0x14));
0x00006aa0 cmp r3, 8 |
| if (r3 > 8) {
0x00006aa2 bgt 0x69ee | goto label_48;
| }
0x00006aa4 b 0x6896 | goto label_23;
| label_83:
0x00006aa6 movs r1, 0 | r1 = 0;
0x00006aa8 b 0x64d8 | goto label_49;
| label_122:
0x00006aaa ldr r7, [pc, 0xdc] |
0x00006aac add r7, pc | r7 = 0xd63a;
0x00006aae b 0x6a26 | goto label_50;
| label_59:
0x00006ab0 ldr r1, [pc, 0xd8] |
0x00006ab2 movw r2, 0x1a1 | r2 = 0x1a1;
0x00006ab6 ldr r0, [pc, 0xd8] |
0x00006ab8 add r1, pc | r1 = 0xd648;
0x00006aba add r0, pc | r0 = 0xd650;
0x00006abc blx 0x4e40 | loc_imp_apr_socket_create ();
| label_53:
0x00006ac0 ldr r1, [pc, 0xd0] |
0x00006ac2 movw r2, 0x20b | r2 = 0x20b;
0x00006ac6 ldr r0, [pc, 0xd0] |
0x00006ac8 add r1, pc | r1 = 0xd660;
0x00006aca add r0, pc | r0 = 0xd668;
0x00006acc blx 0x4e40 | loc_imp_apr_socket_create ();
| label_76:
0x00006ad0 blx 0x4d80 | loc_imp_apr_file_read ();
| label_52:
0x00006ad4 ldr r1, [pc, 0xc4] |
0x00006ad6 movw r2, 0x20a | r2 = 0x20a;
0x00006ada ldr r0, [pc, 0xc4] |
0x00006adc add r1, pc | r1 = 0xd67c;
0x00006ade add r0, pc | r0 = 0xd684;
0x00006ae0 blx 0x4e40 | loc_imp_apr_socket_create ();
| label_51:
0x00006ae4 ldr r1, [pc, 0xbc] |
0x00006ae6 movw r2, 0x206 | r2 = 0x206;
0x00006aea ldr r0, [pc, 0xbc] |
0x00006aec add r1, pc | r1 = 0xd694;
0x00006aee add r0, pc | r0 = 0xd69c;
0x00006af0 blx 0x4e40 | r0 = loc_imp_apr_socket_create ();
0x00006af4 adds r4, r0, r7 | r4 = r0 + r7;
0x00006af6 movs r2, r0 | r2 = r0;
0x00006af8 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x00006afa movs r0, r0 |
0x00006afc adds r0, r5, r6 | r0 = r5 + r6;
0x00006afe movs r2, r0 | r2 = r0;
0x00006b00 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
0x00006b02 movs r0, r0 |
0x00006b04 lsls r0, r7, 0x10 | r0 = r7 << 0x10;
0x00006b06 movs r0, r0 |
0x00006b08 lsls r4, r3, 0x11 | r4 = r3 << 0x11;
0x00006b0a movs r0, r0 |
0x00006b0c lsls r4, r2, 0x11 | r4 = r2 << 0x11;
0x00006b0e movs r0, r0 |
0x00006b10 asrs r0, r5, 0x1c | r0 = r5 >> 0x1c;
0x00006b12 movs r2, r0 | r2 = r0;
0x00006b14 stm r6!, {r2, r4, r5, r7} | *(r6!) = r2;
| *((r6! + 4)) = r4;
| *((r6! + 8)) = r5;
| *((r6! + 12)) = r7;
0x00006b16 movs r1, r0 | r1 = r0;
0x00006b18 ldrh r2, [r0, 0x1a] | r2 = *((r0 + 0x1a));
0x00006b1a movs r1, r0 | r1 = r0;
0x00006b1c stm r6!, {r5, r6} | *(r6!) = r5;
| *((r6! + 4)) = r6;
0x00006b1e movs r1, r0 | r1 = r0;
0x00006b20 stm r6!, {r1, r2, r4} | *(r6!) = r1;
| *((r6! + 4)) = r2;
| *((r6! + 8)) = r4;
0x00006b22 movs r1, r0 | r1 = r0;
0x00006b24 ldrh r6, [r6, 0x18] | r6 = *((r6 + 0x18));
0x00006b26 movs r1, r0 | r1 = r0;
0x00006b28 ldrh r4, [r4, 0x16] | r4 = *((r4 + 0x16));
0x00006b2a movs r1, r0 | r1 = r0;
0x00006b2c ldrh r6, [r6, 0x1e] | r6 = *((r6 + 0x1e));
0x00006b2e movs r1, r0 | r1 = r0;
0x00006b30 stm r4!, {r1, r3, r5, r6} | *(r4!) = r1;
| *((r4! + 4)) = r3;
| *((r4! + 8)) = r5;
| *((r4! + 12)) = r6;
0x00006b32 movs r1, r0 | r1 = r0;
0x00006b34 ldrh r0, [r1, 8] | r0 = *((r1 + 8));
0x00006b36 movs r1, r0 | r1 = r0;
0x00006b38 stm r4!, {r1, r3, r4} | *(r4!) = r1;
| *((r4! + 4)) = r3;
| *((r4! + 8)) = r4;
0x00006b3a movs r1, r0 | r1 = r0;
0x00006b3c ldrh r2, [r4, 0xe] | r2 = *((r4 + 0xe));
0x00006b3e movs r1, r0 | r1 = r0;
0x00006b40 ldrh r6, [r6, 8] | r6 = *((r6 + 8));
0x00006b42 movs r1, r0 | r1 = r0;
0x00006b44 stm r3!, {r4, r6, r7} | *(r3!) = r4;
| *((r3! + 4)) = r6;
| *((r3! + 8)) = r7;
0x00006b46 movs r1, r0 | r1 = r0;
0x00006b48 ldrh r0, [r3, 2] | r0 = *((r3 + 2));
0x00006b4a movs r1, r0 | r1 = r0;
0x00006b4c stm r3!, {r1, r2, r4, r5, r6} | *(r3!) = r1;
| *((r3! + 4)) = r2;
| *((r3! + 8)) = r4;
| *((r3! + 12)) = r5;
| *((r3! + 16)) = r6;
0x00006b4e movs r1, r0 | r1 = r0;
0x00006b50 stm r3!, {r1, r2, r4, r5} | *(r3!) = r1;
| *((r3! + 4)) = r2;
| *((r3! + 8)) = r4;
| *((r3! + 12)) = r5;
0x00006b52 movs r1, r0 | r1 = r0;
0x00006b54 ldrh r0, [r1] | r0 = *(r1);
0x00006b56 movs r1, r0 | r1 = r0;
0x00006b58 ldrh r4, [r3, 6] | r4 = *((r3 + 6));
0x00006b5a movs r1, r0 | r1 = r0;
0x00006b5c ldrh r6, [r7] | r6 = *(r7);
0x00006b5e movs r1, r0 | r1 = r0;
0x00006b60 stm r1!, {r1, r2, r3, r5, r7} | *(r1!) = r1;
| *((r1! + 4)) = r2;
| *((r1! + 8)) = r3;
| *((r1! + 12)) = r5;
| *((r1! + 16)) = r7;
0x00006b62 movs r1, r0 | r1 = r0;
0x00006b64 stm r1!, {r1, r2, r5, r7} | *(r1!) = r1;
| *((r1! + 4)) = r2;
| *((r1! + 8)) = r5;
| *((r1! + 12)) = r7;
0x00006b66 movs r1, r0 | r1 = r0;
0x00006b68 strh r0, [r7, 0x30] | *((r7 + 0x30)) = r0;
0x00006b6a movs r1, r0 | r1 = r0;
0x00006b6c strh r0, [r6, 0x30] | *((r6 + 0x30)) = r0;
0x00006b6e movs r1, r0 | r1 = r0;
0x00006b70 strh r0, [r5, 0x30] | *((r5 + 0x30)) = r0;
0x00006b72 movs r1, r0 | r1 = r0;
0x00006b74 stm r0!, {r3, r4, r5, r6, r7} | *(r0!) = r3;
| *((r0! + 4)) = r4;
| *((r0! + 8)) = r5;
| *((r0! + 12)) = r6;
| *((r0! + 16)) = r7;
0x00006b76 movs r1, r0 | r1 = r0;
0x00006b78 strh r2, [r3, 0x2c] | *((r3 + 0x2c)) = r2;
0x00006b7a movs r1, r0 | r1 = r0;
0x00006b7c stm r0!, {r2, r3, r5, r7} | *(r0!) = r2;
| *((r0! + 4)) = r3;
| *((r0! + 8)) = r5;
| *((r0! + 12)) = r7;
0x00006b7e movs r1, r0 | r1 = r0;
0x00006b80 strh r4, [r1, 0x34] | *((r1 + 0x34)) = r4;
0x00006b82 movs r1, r0 | r1 = r0;
0x00006b84 strh r2, [r1, 0x2e] | *((r1 + 0x2e)) = r2;
0x00006b86 movs r1, r0 | r1 = r0;
0x00006b88 strh r0, [r2, 0x2a] | *((r2 + 0x2a)) = r0;
0x00006b8a movs r1, r0 | r1 = r0;
0x00006b8c strh r4, [r1, 0x2a] | *((r1 + 0x2a)) = r4;
0x00006b8e movs r1, r0 | r1 = r0;
0x00006b90 strh r6, [r7, 0x2e] | *((r7 + 0x2e)) = r6;
0x00006b92 movs r1, r0 | r1 = r0;
0x00006b94 strh r4, [r7, 0x28] | *((r7 + 0x28)) = r4;
0x00006b96 movs r1, r0 | r1 = r0;
0x00006b98 strh r6, [r1, 0x30] | *((r1 + 0x30)) = r6;
0x00006b9a movs r1, r0 | r1 = r0;
0x00006b9c strh r0, [r5, 0x28] | *((r5 + 0x28)) = r0;
0x00006b9e movs r1, r0 | r1 = r0;
0x00006ba0 strh r6, [r4, 0x2e] | *((r4 + 0x2e)) = r6;
0x00006ba2 movs r1, r0 | r1 = r0;
0x00006ba4 strh r0, [r3, 0x28] | *((r3 + 0x28)) = r0;
0x00006ba6 movs r1, r0 | r1 = r0;
0x00006ba8 strh r2, [r1, 0x2e] | *((r1 + 0x2e)) = r2;
0x00006baa movs r1, r0 | r1 = r0;
| }
; 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 @ 0x6bac */
| #include <stdint.h>
|
; (fcn) fcn.00006bac () | void fcn_00006bac (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_14h;
| int32_t var_14h_2;
| int32_t var_1ch;
| int32_t var_1ch_2;
| int16_t var_24h;
| int16_t var_28h;
| 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_48h;
| int16_t var_4ch;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_1040h;
| int32_t var_0h_2;
| int16_t var_1060h;
| int16_t var_1080h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00006bac svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x00006bb0 sub.w sp, sp, 0x1060 |
0x00006bb4 sub sp, 4 |
0x00006bb6 mov fp, r2 |
0x00006bb8 mov r4, r1 | r4 = r1;
0x00006bba mov r5, r0 | r5 = r0;
0x00006bbc ldr.w r2, [pc, 0x8d4] |
0x00006bc0 add.w r0, sp, 0x1080 | r0 += var_1080h;
0x00006bc4 str r3, [sp, 0x4c] | var_4ch = r3;
0x00006bc6 adds r0, 8 | r0 += 8;
0x00006bc8 ldr.w r3, [pc, 0x8cc] | r3 = *(0x7498);
0x00006bcc add r2, pc | r2 = 0xe064;
0x00006bce str r1, [sp, 0x44] | var_44h = r1;
0x00006bd0 add.w r1, sp, 0x1040 | r1 += var_1040h;
0x00006bd4 ldr.w sl, [r0] | sl = *(r0);
0x00006bd8 ldr r3, [r2, r3] |
0x00006bda adds r1, 0x1c | r1 += 0x1c;
0x00006bdc ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00006bde ldr.w r8, [pc, 0x8bc] |
0x00006be2 ldr r3, [r3] | r3 = *(0xe064);
0x00006be4 str r3, [r1] | *(r1) = r3;
0x00006be6 mov.w r3, 0 | r3 = 0;
0x00006bea add.w r3, sp, 0x1080 | r3 += var_1080h;
0x00006bee adds r3, 0xc | r3 += 0xc;
0x00006bf0 ldr r6, [r3] | r6 = *(r3);
0x00006bf2 blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x00006bf6 ldr.w r3, [pc, 0x8a8] | r3 = *(0x74a2);
0x00006bfa add r8, pc | r8 = 0xe09c;
0x00006bfc ldr.w r3, [r8, r3] | r3 = *(0xe09c);
0x00006c00 ldr r2, [r3, 8] | r2 = *(0xe0a4);
0x00006c02 str r3, [sp, 0x48] | var_48h = r3;
0x00006c04 cmp r2, 0 |
| if (r2 < 0) {
0x00006c06 blt.w 0x6e5e | goto label_48;
| }
0x00006c0a ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006c0c ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00006c0e mov r1, r3 | r1 = r3;
0x00006c10 cmp r3, 0 |
| if (r3 == 0) {
0x00006c12 beq.w 0x71d4 | goto label_49;
| }
0x00006c16 ldr r0, [r3] | r0 = *(r3);
0x00006c18 cmp r0, 0 |
| if (r0 == 0) {
0x00006c1a beq.w 0x6e68 | goto label_19;
| }
0x00006c1e ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x00006c20 cmp r0, 0 |
| if (r0 < 0) {
0x00006c22 blt.w 0x6e68 | goto label_19;
| }
| label_18:
0x00006c26 cmp r0, 8 |
| if (r0 > 8) {
0x00006c28 bgt.w 0x6d76 | goto label_50;
| }
| label_2:
0x00006c2c cmp.w sl, 1 |
0x00006c30 mov.w sb, 0 | sb = 0;
0x00006c34 sbcs r3, r6, 0 | __asm ("sbcs r3, r6, 0");
0x00006c38 add r3, sp, 0x60 | r3 += var_60h;
0x00006c3a it lt |
| if (sl >= 1) {
0x00006c3c movlt sl, -1 | sl = -1;
| }
0x00006c40 str r3, [sp, 0x3c] | var_3ch = r3;
0x00006c42 add r3, sp, 0x58 | r3 += var_58h;
0x00006c44 it lt |
| if (sl >= 1) {
0x00006c46 movlt r6, 0 | r6 = 0;
| }
0x00006c48 str r3, [sp, 0x40] | var_40h = r3;
0x00006c4a mov r3, sl | r3 = sl;
0x00006c4c mov sl, sb | sl = sb;
0x00006c4e mov sb, r3 | sb = r3;
| label_15:
0x00006c50 ldr r7, [r5, 0x30] | r7 = *((r5 + 0x30));
0x00006c52 cmp r7, 0 |
| if (r7 != 0) {
0x00006c54 bne.w 0x6f88 | goto label_51;
| }
0x00006c58 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00006c5a cmp r3, 0 |
| if (r3 == 0) {
0x00006c5c beq.w 0x7484 | goto label_52;
| }
0x00006c60 cmp r6, 0 |
| if (r6 < 0) {
0x00006c62 blt.w 0x70c8 | goto label_53;
| }
0x00006c66 add.w r3, r5, 0x10 | r3 = r5 + 0x10;
0x00006c6a str r7, [sp, 0x30] | var_30h = r7;
0x00006c6c str r3, [sp, 0x34] | var_34h = r3;
0x00006c6e add.w r3, fp, 4 | r3 += arg_4h;
0x00006c70 lsls r4, r0, 0xc | r4 = r0 << 0xc;
0x00006c72 str r3, [sp, 0x38] | var_38h = r3;
0x00006c74 b 0x6cec |
| while (ip == 0) {
0x00006c76 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00006c78 ldr r2, [r1, 8] | r2 = *((r1 + 8));
| if (r2 != 0) {
0x00006c7a cbz r2, 0x6cb8 |
| label_0:
0x00006c7c ldr.w r3, [pc, 0x824] | r3 = *(0x74a4);
0x00006c80 ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00006c84 cmp r1, r3 |
| if (r1 == r3) {
0x00006c86 beq.w 0x6e96 | goto label_54;
| }
0x00006c8a ldr.w r3, [pc, 0x81c] | r3 = *(0x74aa);
0x00006c8e ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00006c92 cmp r1, r3 |
| if (r1 == r3) {
0x00006c94 beq.w 0x6ed2 | goto label_55;
| }
0x00006c98 ldr.w r3, [pc, 0x810] | r3 = *(0x74ac);
0x00006c9c ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00006ca0 cmp r1, r3 |
| if (r1 == r3) {
0x00006ca2 beq.w 0x6f3a | goto label_56;
| }
0x00006ca6 ldr.w r3, [pc, 0x808] | r3 = *(0x74b2);
0x00006caa ldr.w r3, [r8, r3] | r3 = *((r8 + r3));
0x00006cae cmp r1, r3 |
0x00006cb0 it ne |
| if (r1 == r3) {
0x00006cb2 movne r2, ip | r2 = ip;
| }
| if (r1 == r3) {
0x00006cb4 beq.w 0x7116 | goto label_57;
| }
| }
| label_1:
0x00006cb8 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00006cba add.w sl, sl, 1 | sl++;
0x00006cbe ldr r1, [r4] | r1 = *(r4);
0x00006cc0 str r1, [r3] | *(r3) = r1;
0x00006cc2 ldr r3, [r4] | r3 = *(r4);
0x00006cc4 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00006cc6 str r1, [r3, 4] | *((r3 + 4)) = r1;
0x00006cc8 add.w r3, r5, 0x18 | r3 = r5 + 0x18;
0x00006ccc str r3, [r4] | *(r4) = r3;
0x00006cce ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00006cd0 str r3, [r4, 4] | *((r4 + 4)) = r3;
0x00006cd2 ldr r3, [r5, 0x60] | r3 = *((r5 + 0x60));
0x00006cd4 ldr r1, [r5, 0x1c] | r1 = *((r5 + 0x1c));
0x00006cd6 adds r3, r3, r2 | r3 += r2;
0x00006cd8 ldr r2, [r5, 0x64] | r2 = *((r5 + 0x64));
0x00006cda str r4, [r1] | *(r1) = r4;
0x00006cdc str r4, [r5, 0x1c] | *((r5 + 0x1c)) = r4;
0x00006cde adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00006ce2 cmp r6, 0 |
0x00006ce4 strd r3, r2, [r5, 0x60] | __asm ("strd r3, r2, [r5, 0x60]");
| if (r6 < 0) {
0x00006ce8 blt.w 0x6f4a | goto label_58;
| }
0x00006cec ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00006cee ldr r2, [sp, 0x34] | r2 = var_34h;
0x00006cf0 cmp r3, r2 |
| if (r3 == r2) {
0x00006cf2 beq.w 0x6f4a | goto label_58;
| }
0x00006cf6 ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x00006cf8 ldr.w ip, [r4, 0xc] | ip = *((r4 + 0xc));
0x00006cfc cmp.w ip, 0 |
0x00006d00 beq 0x6c76 |
| }
0x00006d02 orrs.w r3, sb, r6 | r3 = sb | r6;
| if (r3 == sb) {
0x00006d06 beq.w 0x6f4a | goto label_58;
| }
0x00006d0a ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00006d0c ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00006d0e cmp r3, 0 |
| if (r3 != 0) {
0x00006d10 bne 0x6c7c | goto label_0;
| }
0x00006d12 ldr.w r2, [pc, 0x7a0] | r2 = *(0x74b6);
0x00006d16 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00006d1a cmp r1, r2 |
| if (r1 == r2) {
0x00006d1c beq.w 0x712a | goto label_59;
| }
0x00006d20 ldr.w r2, [pc, 0x794] | r2 = *(0x74b8);
0x00006d24 ldr.w r2, [r8, r2] | r2 = *((r8 + r2));
0x00006d28 cmp r1, r2 |
| if (r1 == r2) {
0x00006d2a beq.w 0x6edc | goto label_60;
| }
0x00006d2e ldr r2, [r1, 0x10] | r2 = *((r1 + 0x10));
0x00006d30 mov r0, r4 | r0 = r4;
0x00006d32 mov r7, r2 | r7 = r2;
0x00006d34 ldrd r1, r2, [sp, 0x3c] | __asm ("ldrd r1, r2, [var_3ch]");
0x00006d38 subs r1, 0xc | r1 -= 0xc;
0x00006d3a blx r7 | r0 = uint32_t (*r7)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x00006d3c cmp r0, 0 |
| if (r0 != 0) {
0x00006d3e bne.w 0x715a | goto label_61;
| }
0x00006d42 ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x00006d44 mov r2, r0 | r2 = r0;
0x00006d46 mov r1, r0 | r1 = r0;
0x00006d48 mov r0, fp | r0 = fp;
0x00006d4a ldr r3, [r7, -0x8] | r3 = *((r7 - 0x8));
0x00006d4e str r3, [sp] | *(sp) = r3;
0x00006d50 ldr r3, [r7, -0xc] | r3 = *((r7 - 0xc));
0x00006d54 blx 0x4f18 | r0 = loc_imp_apr_array_push ();
0x00006d58 cmp r0, 0 |
| if (r0 != 0) {
0x00006d5a bne.w 0x715a | goto label_61;
| }
0x00006d5e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00006d60 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00006d62 adds r3, 1 | r3++;
0x00006d64 str r3, [sp, 0x30] | var_30h = r3;
0x00006d66 ldr r3, [r7, -0x8] | r3 = *((r7 - 0x8));
0x00006d6a subs.w r3, sb, r3 | r3 = sb - r3;
0x00006d6e mov sb, r3 | sb = r3;
0x00006d70 sbc r6, r6, 0 | __asm ("sbc r6, r6, 0");
0x00006d74 b 0x6cb8 | goto label_1;
| label_50:
0x00006d76 mov r1, r3 | r1 = r3;
0x00006d78 mov r0, fp | r0 = fp;
0x00006d7a cmp.w fp, 0 |
| if (fp == 0) {
0x00006d7e beq 0x6e7a | goto label_62;
| }
| label_3:
0x00006d80 ldr.w r3, [pc, 0x738] |
0x00006d84 mov.w r1, 0x1000 | r1 = 0x1000;
0x00006d88 add r0, sp, 0x5c | r0 += var_5ch;
0x00006d8a str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00006d8e add r3, pc |
0x00006d90 mov r2, r3 | r2 = r3;
0x00006d92 bl 0x1ccac | void (*0x1ccac)(uint32_t) (r0);
0x00006d96 ldr r3, [sp, 0x3fc] | r3 = *((sp + 0x3fc));
0x00006d98 ldr r2, [r3, 8] | r2 = *(0xe256);
0x00006d9a ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006d9c ldr r3, [r3, 0x60] | r3 = *(0xe2ae);
| label_4:
0x00006d9e cmp r2, 0 |
0x00006da0 mov r1, r3 | r1 = r3;
| if (r2 >= 0) {
0x00006da2 bge 0x6e7a | goto label_62;
| }
0x00006da4 cmp r3, 0 |
| if (r3 == 0) {
0x00006da6 beq.w 0x7226 | goto label_63;
| }
| label_5:
0x00006daa ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00006dac cmp r3, 8 |
0x00006dae ite le |
| if (r3 > 8) {
0x00006db0 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00006db2 movgt r3, 1 | r3 = 1;
| }
| label_6:
0x00006db4 cmp r3, 0 |
| if (r3 == 0) {
0x00006db6 beq.w 0x6c2c | goto label_2;
| }
0x00006dba ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00006dbc ldr.w sb, [r5, 4] | sb = *((r5 + 4));
0x00006dc0 cmp r3, 0 |
| if (r3 != 0) {
0x00006dc2 bne.w 0x71f6 | goto label_64;
| }
0x00006dc6 ldr.w r3, [pc, 0x6f8] |
0x00006dca add r3, pc | r3 = 0xe290;
0x00006dcc str r3, [sp, 0x30] | var_30h = r3;
| label_21:
0x00006dce mov r4, r5 | r4 = r5;
0x00006dd0 ldr r3, [r4, 0x10]! | r3 = *((r4 += 0x10));
0x00006dd4 cmp r3, r4 |
| if (r3 == r4) {
0x00006dd6 beq.w 0x734c | goto label_65;
| }
0x00006dda ldr.w lr, [pc, 0x6e8] |
0x00006dde add lr, pc | lr = 0xe2a8;
| label_34:
0x00006de0 ldr r1, [r5, 0x10] | r1 = *((r5 + 0x10));
0x00006de2 cmp r4, r1 |
| if (r4 == r1) {
0x00006de4 beq.w 0x745e | goto label_66;
| }
0x00006de8 movs r7, 0 | r7 = 0;
| do {
0x00006dea ldr r3, [r1, 0xc] | r3 = *((r1 + 0xc));
0x00006dec ldr r1, [r1] | r1 = *(r1);
0x00006dee adds r7, r3, r7 | r7 = r3 + r7;
0x00006df0 cmp r4, r1 |
0x00006df2 bne 0x6dea |
| } while (r4 != r1);
0x00006df4 mov ip, r7 |
| label_44:
0x00006df6 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00006df8 movs r1, 0 | r1 = 0;
0x00006dfa cmp r4, r3 |
| if (r4 == r3) {
0x00006dfc beq 0x6e06 | goto label_67;
| }
| do {
0x00006dfe ldr r3, [r3] | r3 = *(r3);
0x00006e00 adds r1, 1 | r1++;
0x00006e02 cmp r4, r3 |
0x00006e04 bne 0x6dfe |
| } while (r4 != r3);
| label_67:
0x00006e06 mov r7, r5 | r7 = r5;
0x00006e08 movs r4, 0 | r4 = 0;
0x00006e0a ldr r3, [r7, 0x18]! | r3 = *((r7 += 0x18));
0x00006e0e cmp r3, r7 |
| if (r3 == r7) {
0x00006e10 beq 0x6e1a | goto label_68;
| }
| do {
0x00006e12 ldr r3, [r3] | r3 = *(r3);
0x00006e14 adds r4, 1 | r4++;
0x00006e16 cmp r3, r7 |
0x00006e18 bne 0x6e12 |
| } while (r3 != r7);
| label_68:
0x00006e1a add r3, sp, 0x5c | r3 += var_5ch;
| if (r0 == 0) {
0x00006e1c cbnz r0, 0x6e24 |
0x00006e1e ldr.w r3, [pc, 0x6a8] |
0x00006e22 add r3, pc | r3 = 0xe2f0;
| }
0x00006e24 str r3, [sp, 0x28] | var_28h = r3;
0x00006e26 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00006e28 ldr.w r0, [pc, 0x6a0] |
0x00006e2c strd r1, r4, [sp, 0x1c] | __asm ("strd r1, r4, [var_1ch]");
0x00006e30 movw r1, 0x249 | r1 = 0x249;
0x00006e34 strd sb, r3, [sp, 0xc] | __asm ("strd sb, r3, [var_ch]");
0x00006e38 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006e3a add r0, pc | r0 = 0xe30a;
0x00006e3c strd lr, ip, [sp, 0x14] | __asm ("strd lr, ip, [var_14h]");
0x00006e40 str r3, [sp, 4] | var_4h = r3;
0x00006e42 ldr.w r3, [pc, 0x68c] |
0x00006e46 add r3, pc | r3 = 0xe31c;
0x00006e48 str r3, [sp, 0x24] | var_24h = r3;
0x00006e4a ldr.w r3, [pc, 0x688] |
0x00006e4e add r3, pc | r3 = 0xe328;
0x00006e50 str r3, [sp, 8] | var_8h = r3;
0x00006e52 movs r3, 0 | r3 = 0;
0x00006e54 str r3, [sp] | *(sp) = r3;
0x00006e56 movs r3, 9 | r3 = 9;
0x00006e58 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x00006e5c b 0x6c2c | goto label_2;
| label_48:
0x00006e5e ldr r3, [r4, 0x60] | r3 = *((r4 + 0x60));
0x00006e60 mov r1, r3 | r1 = r3;
0x00006e62 cmp r3, 0 |
| if (r3 == 0) {
0x00006e64 beq.w 0x71f0 | goto label_69;
| }
| label_19:
0x00006e68 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x00006e6a cmp r1, 8 |
| if (r1 <= 8) {
0x00006e6c ble.w 0x6c2c | goto label_2;
| }
0x00006e6e add r6, sp, 0x378 | r6 = sp + 0x378;
0x00006e70 mov r0, fp | r0 = fp;
0x00006e72 cmp.w fp, 0 |
| if (fp != 0) {
0x00006e76 bne 0x6d80 | goto label_3;
| }
0x00006e78 b 0x6d9e | goto label_4;
| label_62:
0x00006e7a cmp r3, 0 |
| if (r3 == 0) {
0x00006e7c beq.w 0x72fe | goto label_70;
| }
0x00006e80 ldr r3, [r3] | r3 = *(r3);
0x00006e82 cmp r3, 0 |
| if (r3 == 0) {
0x00006e84 beq 0x6daa | goto label_5;
| }
0x00006e86 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00006e88 cmp r3, 0 |
| if (r3 < 0) {
0x00006e8a blt 0x6daa | goto label_5;
| }
| label_28:
0x00006e8c cmp r3, 8 |
0x00006e8e ite le |
| if (r3 > 8) {
0x00006e90 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00006e92 movgt r3, 1 | r3 = 1;
| }
0x00006e94 b 0x6db4 | goto label_6;
| label_54:
0x00006e96 movs r3, 1 | r3 = 1;
0x00006e98 ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x00006e9c str r3, [r5, 0x34] | *((r5 + 0x34)) = r3;
0x00006e9e blx 0x4720 | r0 = loc_imp_apr_bucket_eos_create ();
| do {
| label_7:
0x00006ea2 cmp r0, 0 |
| if (r0 == 0) {
0x00006ea4 beq.w 0x7474 | goto label_71;
| }
0x00006ea8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00006eaa ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00006eac str r3, [r0] | *(r0) = r3;
0x00006eae ldr r3, [sp, 0x30] | r3 = var_30h;
0x00006eb0 adds r3, 1 | r3++;
0x00006eb2 str r3, [sp, 0x30] | var_30h = r3;
0x00006eb4 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00006eb8 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00006eba ldr r3, [r0, 0xc] | r3 = *((r0 + 0xc));
0x00006ebc subs.w r3, sb, r3 | r3 = sb - r3;
0x00006ec0 mov sb, r3 | sb = r3;
0x00006ec2 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00006ec6 sbc r6, r6, 0 | __asm ("sbc r6, r6, 0");
0x00006eca str r0, [r3] | *(r3) = r0;
0x00006ecc str.w r0, [fp, 8] | __asm ("str.w r0, [arg_8h]");
0x00006ed0 b 0x6cb8 | goto label_1;
| label_55:
0x00006ed2 ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x00006ed6 blx 0x48e0 | fcn_000048e0 ();
0x00006eda b 0x6ea2 |
| } while (1);
| label_60:
0x00006edc ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x00006ede ldr.w lr, [fp] |
0x00006ee2 ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x00006ee4 ldrd r1, r3, [r3, 4] | __asm ("ldrd r1, r3, [r3, 4]");
0x00006ee8 cmp r3, lr |
0x00006eea str r1, [r7, -0x8] | *((r7 - 0x8)) = r1;
| if (r3 != lr) {
0x00006eee beq 0x6f0c |
0x00006ef0 mov r2, lr | r2 = lr;
0x00006ef2 sub.w r0, r7, 8 | r0 = r7 - 8;
0x00006ef6 blx 0x4ff8 | r0 = fcn_00004ff8 ();
0x00006efa cmp r0, 0 |
| if (r0 != 0) {
0x00006efc bne.w 0x715a | goto label_61;
| }
0x00006f00 ldr r1, [r7, -0x8] | r1 = *((r7 - 0x8));
0x00006f04 ldr.w ip, [r4, 0xc] | ip = *((r4 + 0xc));
0x00006f08 ldr.w lr, [fp] |
| }
0x00006f0c ldr r3, [sp, 0x30] | r3 = var_30h;
0x00006f0e movs r7, 0 | r7 = 0;
0x00006f10 mov r0, fp | r0 = fp;
0x00006f12 adds r3, 1 | r3++;
0x00006f14 str r3, [sp, 0x30] | var_30h = r3;
0x00006f16 ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x00006f1a str.w lr, [sp, 8] | __asm ("str.w lr, [var_8h]");
0x00006f1e str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00006f22 str r7, [sp, 4] | var_4h = r7;
0x00006f24 blx 0x46c0 | loc_imp_apr_brigade_insert_file ();
0x00006f28 mov r1, r7 | r1 = r7;
0x00006f2a blx 0x5020 | nghttp2_submit_window_update ();
0x00006f2e ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00006f30 subs.w sb, sb, r2 | sb -= r2;
0x00006f34 sbc r6, r6, 0 | __asm ("sbc r6, r6, 0");
0x00006f38 b 0x6cb8 | goto label_1;
| label_56:
0x00006f3a ldr.w r2, [fp, 0xc] | r2 = *(arg_ch);
0x00006f3e mov r0, r4 | r0 = r4;
0x00006f40 ldr.w r1, [fp] | r1 = *(fp);
0x00006f44 bl 0xe7c4 | fcn_0000e7c4 (r0, r1, r2);
0x00006f48 b 0x6ea2 | goto label_7;
| label_58:
0x00006f4a ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x00006f4c ldr r7, [sp, 0x30] | r7 = var_30h;
0x00006f4e cmp.w sl, 0 |
0x00006f52 it ne |
| if (sl != 0) {
0x00006f54 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (sl != 0) {
0x00006f56 bne.w 0x70d6 | goto label_72;
| }
| label_9:
0x00006f5a cmp r7, 0 |
| if (r7 != 0) {
0x00006f5c bne.w 0x7326 | goto label_73;
| }
0x00006f60 ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
| if (r3 == 0) {
0x00006f62 cbnz r3, 0x6f88 |
| label_8:
0x00006f64 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x00006f66 cmp r0, 0 |
| if (r0 != 0) {
0x00006f68 bne.w 0x7164 | goto label_74;
| }
0x00006f6c add.w r7, r5, 0x10 | r7 = r5 + 0x10;
| label_17:
0x00006f70 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00006f72 cmp r3, r7 |
| if (r3 != r7) {
0x00006f74 bne.w 0x7154 | goto label_75;
| }
0x00006f78 cmp r0, 0 |
| if (r0 != 0) {
0x00006f7a bne.w 0x715a | goto label_61;
| }
0x00006f7e ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00006f80 cmp r3, 0 |
| if (r3 == 0) {
0x00006f82 beq.w 0x715e | goto label_76;
| }
0x00006f86 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| }
| label_51:
0x00006f88 movs r3, 0x67 | r3 = 0x67;
0x00006f8a mov sb, r3 | sb = r3;
| label_16:
0x00006f8c ldr r2, [sp, 0x48] | r2 = var_48h;
0x00006f8e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006f90 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00006f92 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00006f94 cmp r2, 0 |
0x00006f96 mov r1, r3 | r1 = r3;
| if (r2 < 0) {
0x00006f98 blt.w 0x70de | goto label_77;
| }
0x00006f9c cmp r3, 0 |
| if (r3 == 0) {
0x00006f9e beq.w 0x72e8 | goto label_78;
| }
0x00006fa2 ldr r0, [r3] | r0 = *(r3);
0x00006fa4 cmp r0, 0 |
| if (r0 == 0) {
0x00006fa6 beq.w 0x70e4 | goto label_20;
| }
0x00006faa ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x00006fac cmp r0, 0 |
| if (r0 < 0) {
0x00006fae blt.w 0x70e4 | goto label_20;
| }
| label_26:
0x00006fb2 cmp r0, 8 |
| if (r0 <= 8) {
0x00006fb4 ble 0x7098 | goto label_10;
| }
0x00006fb6 mov r0, fp | r0 = fp;
0x00006fb8 mov r1, r3 | r1 = r3;
0x00006fba cmp.w fp, 0 |
| if (fp == 0) {
0x00006fbe beq.w 0x70f6 | goto label_79;
| }
| label_11:
0x00006fc2 ldr.w r3, [pc, 0x514] |
0x00006fc6 mov.w r1, 0x1000 | r1 = 0x1000;
0x00006fca add r0, sp, 0x5c | r0 += var_5ch;
0x00006fcc str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x00006fd0 add r3, pc |
0x00006fd2 mov r2, r3 | r2 = r3;
0x00006fd4 bl 0x1caac | fcn_0001caac (r0, r1, r2, r3, r4);
0x00006fd8 ldr r3, [sp, 0x48] | r3 = var_48h;
0x00006fda ldr r2, [r3, 8] | r2 = *(0xe4b6);
0x00006fdc ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006fde ldr r3, [r3, 0x60] | r3 = *(0xe50e);
| label_12:
0x00006fe0 cmp r2, 0 |
0x00006fe2 mov r1, r3 | r1 = r3;
| if (r2 >= 0) {
0x00006fe4 bge.w 0x70f6 | goto label_79;
| }
0x00006fe8 cmp r3, 0 |
| if (r3 == 0) {
0x00006fea beq.w 0x721e | goto label_80;
| }
| label_13:
0x00006fee ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00006ff0 cmp r3, 8 |
0x00006ff2 ite le |
| if (r3 > 8) {
0x00006ff4 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00006ff6 movgt r3, 1 | r3 = 1;
| }
| label_14:
0x00006ff8 cmp r3, 0 |
| if (r3 == 0) {
0x00006ffa beq 0x7098 | goto label_10;
| }
0x00006ffc ldr r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x00006ffe ldr r6, [r5, 4] | r6 = *((r5 + 4));
0x00007000 cmp r3, 0 |
| if (r3 == 0) {
0x00007002 beq.w 0x71fe | goto label_81;
| }
0x00007006 ldr.w ip, [pc, 0x4d4] |
0x0000700a add ip, pc | ip = 0xe4ec;
| label_22:
0x0000700c mov lr, r5 | lr = r5;
0x0000700e ldr r3, [lr, 0x10]! | r3 = *((lr += 0x10));
0x00007012 cmp r3, lr |
| if (r3 == lr) {
0x00007014 beq.w 0x7346 | goto label_82;
| }
0x00007016 strh r7, [r2, 0xc] | *((r2 + 0xc)) = r7;
0x00007018 ldr.w r7, [pc, 0x4c4] |
0x0000701c add r7, pc | r7 = 0xe500;
| label_33:
0x0000701e ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00007020 movs r4, 0 | r4 = 0;
0x00007022 cmp lr, r3 |
| if (lr == r3) {
0x00007024 beq 0x7030 | goto label_83;
| }
| do {
0x00007026 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x00007028 ldr r3, [r3] | r3 = *(r3);
0x0000702a adds r4, r1, r4 | r4 = r1 + r4;
0x0000702c cmp lr, r3 |
0x0000702e bne 0x7026 |
| } while (lr != r3);
| label_83:
0x00007030 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00007032 movs r1, 0 | r1 = 0;
0x00007034 cmp lr, r3 |
| if (lr == r3) {
0x00007036 beq 0x7040 | goto label_84;
| }
| do {
0x00007038 ldr r3, [r3] | r3 = *(r3);
0x0000703a adds r1, 1 | r1++;
0x0000703c cmp lr, r3 |
0x0000703e bne 0x7038 |
| } while (lr != r3);
| label_84:
0x00007040 mov r8, r5 | r8 = r5;
0x00007042 mov.w lr, 0 | lr = 0;
0x00007046 ldr r3, [r8, 0x18]! | r3 = *((r8 += 0x18));
0x0000704a cmp r8, r3 |
| if (r8 == r3) {
0x0000704c beq 0x7058 | goto label_85;
| }
| do {
0x0000704e ldr r3, [r3] | r3 = *(r3);
0x00007050 add.w lr, lr, 1 | lr++;
0x00007054 cmp r8, r3 |
0x00007056 bne 0x704e |
| } while (r8 != r3);
| label_85:
0x00007058 add r3, sp, 0x5c | r3 += var_5ch;
| if (r0 == 0) {
0x0000705a cbnz r0, 0x7062 |
0x0000705c ldr.w r3, [pc, 0x484] |
0x00007060 add r3, pc | r3 = 0xe548;
| }
0x00007062 strd r1, lr, [sp, 0x1c] | __asm ("strd r1, lr, [var_1ch]");
0x00007066 ldr.w r1, [pc, 0x480] |
0x0000706a ldr.w r0, [pc, 0x480] |
0x0000706e str r3, [sp, 0x28] | var_28h = r3;
0x00007070 add r1, pc | r1 = 0xe55e;
0x00007072 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007074 str r1, [sp, 8] | var_8h = r1;
0x00007076 add r0, pc | r0 = 0xe568;
0x00007078 ldr.w r1, [pc, 0x474] |
0x0000707c str r3, [sp, 4] | var_4h = r3;
0x0000707e movs r3, 9 | r3 = 9;
0x00007080 strd r7, r4, [sp, 0x14] | __asm ("strd r7, r4, [var_14h]");
0x00007084 add r1, pc | r1 = 0xe578;
0x00007086 strd r6, ip, [sp, 0xc] | __asm ("strd r6, ip, [var_ch]");
0x0000708a str r1, [sp, 0x24] | var_24h = r1;
0x0000708c movw r1, 0x2d6 | r1 = 0x2d6;
0x00007090 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x00007094 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
| label_10:
0x00007098 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x0000709a blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x0000709e ldr.w r2, [pc, 0x454] |
0x000070a2 add.w r1, sp, 0x1040 | r1 += var_1040h;
0x000070a6 ldr r3, [pc, 0x3f0] | r3 = *(0x749a);
0x000070a8 adds r1, 0x1c | r1 += 0x1c;
0x000070aa add r2, pc | r2 = 0xe5a4;
0x000070ac ldr r3, [r2, r3] | r3 = *(0xe5a4);
0x000070ae ldr r2, [r3] | r2 = *(0xe5a4);
0x000070b0 ldr r3, [r1] | r3 = *(r1);
0x000070b2 eors r2, r3 | r2 ^= r3;
0x000070b4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000070b8 bne.w 0x7480 | goto label_86;
| }
0x000070bc mov r0, sb | r0 = sb;
0x000070be add.w sp, sp, 0x1060 |
0x000070c2 add sp, 4 |
0x000070c4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_53:
0x000070c8 ldr r3, [r5, 0x50] | r3 = *((r5 + 0x50));
0x000070ca cmp r3, 0 |
0x000070cc it ne |
| if (r3 == 0) {
0x000070ce cmpne sl, 0 | __asm ("cmpne sl, 0");
| goto label_87;
| }
| if (r3 == 0) {
| label_87:
0x000070d2 beq.w 0x6f64 | goto label_8;
| }
| label_72:
0x000070d6 ldr r0, [r5, 0x54] | r0 = *((r5 + 0x54));
0x000070d8 mov r1, r5 | r1 = r5;
0x000070da blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r1);
0x000070dc b 0x6f5a | goto label_9;
| label_77:
0x000070de cmp r3, 0 |
| if (r3 == 0) {
0x000070e0 beq.w 0x71e8 | goto label_88;
| }
| label_20:
0x000070e4 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000070e6 cmp r1, 8 |
| if (r1 <= 8) {
0x000070e8 ble 0x7098 | goto label_10;
| }
0x000070ea mov r0, fp | r0 = fp;
0x000070ec cmp.w fp, 0 |
| if (fp != 0) {
0x000070f0 bne.w 0x6fc2 | goto label_11;
| }
0x000070f4 b 0x6fe0 | goto label_12;
| label_79:
0x000070f6 cmp r3, 0 |
| if (r3 == 0) {
0x000070f8 beq.w 0x7312 | goto label_89;
| }
0x000070fc ldr r3, [r3] | r3 = *(r3);
0x000070fe cmp r3, 0 |
| if (r3 == 0) {
0x00007100 beq.w 0x6fee | goto label_13;
| }
0x00007104 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00007106 cmp r3, 0 |
| if (r3 < 0) {
0x00007108 blt.w 0x6fee | goto label_13;
| }
| label_30:
0x0000710c cmp r3, 8 |
0x0000710e ite le |
| if (r3 > 8) {
0x00007110 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00007112 movgt r3, 1 | r3 = 1;
| }
0x00007114 b 0x6ff8 | goto label_14;
| label_57:
0x00007116 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00007118 ldr.w r3, [fp, 0xc] | r3 = *(arg_ch);
0x0000711c ldr.w r2, [fp] | r2 = *(fp);
0x00007120 ldrd r0, r1, [r0, 4] | __asm ("ldrd r0, r1, [r0, 4]");
0x00007124 blx 0x47c0 | fcn_000047c0 ();
0x00007128 b 0x6ea2 | goto label_7;
| label_59:
0x0000712a ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x0000712c ldr.w r2, [fp] | r2 = *(fp);
0x00007130 ldr r0, [sp, 0x40] | r0 = var_40h;
0x00007132 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00007134 blx 0x4f58 | r0 = fcn_00004f58 ();
| if (r0 != 0) {
0x00007138 cbnz r0, 0x715a | goto label_61;
| }
0x0000713a ldr.w r1, [fp, 0xc] | r1 = *(arg_ch);
0x0000713e ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00007140 ldr r0, [r3, -0x8] | r0 = *((r3 - 0x8));
0x00007144 ldrd r2, r3, [r4, 0x10] | __asm ("ldrd r2, r3, [r4, 0x10]");
0x00007148 str r1, [sp, 4] | var_4h = r1;
0x0000714a ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x0000714c str r1, [sp] | *(sp) = r1;
0x0000714e blx 0x4bec | fcn_00004bec ();
0x00007152 b 0x6ea2 | goto label_7;
| label_75:
0x00007154 cmp r0, 0 |
| if (r0 == 0) {
0x00007156 beq.w 0x6c50 | goto label_15;
| }
| label_61:
0x0000715a mov sb, r0 | sb = r0;
0x0000715c b 0x6f8c | goto label_16;
| label_76:
0x0000715e ldr r1, [r5, 0x34] | r1 = *((r5 + 0x34));
| if (r1 != 0) {
0x00007160 cbz r1, 0x7170 |
0x00007162 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
| label_74:
0x00007164 movw r3, 0x117e |
0x00007168 movt r3, 1 | r3 = 0x1117e;
0x0000716c mov sb, r3 | sb = r3;
0x0000716e b 0x6f8c | goto label_16;
| }
0x00007170 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x00007172 movs r0, 0xb | r0 = 0xb;
0x00007174 cmp r3, 0 |
| if (r3 != 0) {
0x00007176 bne.w 0x6f70 | goto label_17;
| }
0x0000717a ldrd lr, r3, [r5, 0x28] | __asm ("ldrd lr, r3, [r5, 0x28]");
0x0000717e ldr r2, [sp, 0x48] | r2 = var_48h;
0x00007180 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00007182 cmp.w lr, 1 |
0x00007186 sbcs r4, r3, 0 | __asm ("sbcs r4, r3, 0");
0x0000718a ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x0000718c ldr r0, [r0, 0x60] | r0 = *((r0 + 0x60));
| if (lr < 1) {
0x0000718e blt 0x722e | goto label_90;
| }
0x00007190 cmp r2, 0 |
| if (r2 < 0) {
0x00007192 blt 0x7206 | goto label_91;
| }
0x00007194 cmp r0, 0 |
| if (r0 == 0) {
0x00007196 beq.w 0x738a | goto label_92;
| }
0x0000719a ldr.w ip, [r0] | ip = *(r0);
0x0000719e cmp.w ip, 0 |
| if (ip == 0) {
0x000071a2 beq 0x720c | goto label_93;
| }
0x000071a4 ldrsb.w r4, [ip, r2] | r4 = *((ip + r2));
0x000071a8 cmp r4, 0 |
| if (r4 < 0) {
0x000071aa blt.w 0x7354 | goto label_94;
| }
0x000071ae cmp r4, 8 |
| if (r4 > 8) {
0x000071b0 ble 0x71c8 |
| label_36:
0x000071b2 ldrsb.w r4, [ip, r2] | r4 = *((ip + r2));
0x000071b6 cmp r4, 0 |
| if (r4 < 0) {
0x000071b8 blt 0x7212 | goto label_35;
| }
| label_40:
0x000071ba cmp r4, 8 |
0x000071bc ite le |
| if (r4 > 8) {
0x000071be movle r0, 0 | r0 = 0;
| }
| if (r4 <= 8) {
0x000071c0 movgt r0, 1 | r0 = 1;
| }
| label_24:
0x000071c2 cmp r0, 0 |
| if (r0 != 0) {
0x000071c4 bne.w 0x73e0 | goto label_95;
| }
| }
| label_23:
0x000071c8 ldrd r1, r0, [r5, 0x40] | __asm ("ldrd r1, r0, [r5, 0x40]");
0x000071cc mov r2, lr | r2 = lr;
0x000071ce blx 0x5174 | fcn_00005174 ();
0x000071d2 b 0x6f70 | goto label_17;
| label_49:
0x000071d4 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000071d6 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000071d8 ldr r0, [r1, 0x10] | r0 = *((r1 + 0x10));
| if (r0 == 0) {
0x000071da cbz r0, 0x71e4 | goto label_96;
| }
0x000071dc ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x000071de cmp r0, 0 |
| if (r0 >= 0) {
0x000071e0 bge.w 0x6c26 | goto label_18;
| }
| do {
| label_96:
0x000071e4 adds r1, 0x10 | r1 += 0x10;
0x000071e6 b 0x6e68 | goto label_19;
| label_88:
0x000071e8 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000071ea ldr r1, [r1, 4] | r1 = *((r1 + 4));
| label_25:
0x000071ec adds r1, 0x10 | r1 += 0x10;
0x000071ee b 0x70e4 | goto label_20;
| label_69:
0x000071f0 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000071f2 ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000071f4 b 0x71e4 |
| } while (1);
| label_64:
0x000071f6 ldr r3, [pc, 0x300] |
0x000071f8 add r3, pc | r3 = 0xe6f6;
0x000071fa str r3, [sp, 0x30] | var_30h = r3;
0x000071fc b 0x6dce | goto label_21;
| label_81:
0x000071fe ldr.w ip, [pc, 0x2fc] |
0x00007202 add ip, pc | ip = 0xe704;
0x00007204 b 0x700c | goto label_22;
| label_91:
0x00007206 cmp r0, 0 |
| if (r0 == 0) {
0x00007208 beq.w 0x73d4 | goto label_97;
| }
| label_93:
0x0000720c ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x0000720e cmp r4, 8 |
| if (r4 <= 8) {
0x00007210 ble 0x71c8 | goto label_23;
| }
| label_35:
0x00007212 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x00007214 cmp r0, 8 |
0x00007216 ite le |
| if (r0 > 8) {
0x00007218 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 8) {
0x0000721a movgt r0, 1 | r0 = 1;
| }
0x0000721c b 0x71c2 | goto label_24;
| label_80:
0x0000721e ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007220 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| label_29:
0x00007222 adds r1, 0x10 | r1 += 0x10;
0x00007224 b 0x6fee | goto label_13;
| label_63:
0x00007226 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007228 ldr r1, [r3, 4] | r1 = *((r3 + 4));
| label_27:
0x0000722a adds r1, 0x10 | r1 += 0x10;
0x0000722c b 0x6daa | goto label_5;
| label_90:
0x0000722e cmp r2, 0 |
| if (r2 < 0) {
0x00007230 blt 0x7332 | goto label_98;
| }
0x00007232 cmp r0, 0 |
| if (r0 == 0) {
0x00007234 beq.w 0x73b0 | goto label_99;
| }
0x00007238 ldr.w ip, [r0] | ip = *(r0);
0x0000723c cmp.w ip, 0 |
| if (ip == 0) {
0x00007240 beq 0x7334 | goto label_100;
| }
0x00007242 ldrsb.w r3, [ip, r2] | r3 = *((ip + r2));
0x00007246 cmp r3, 0 |
| if (r3 < 0) {
0x00007248 blt.w 0x7374 | goto label_101;
| }
0x0000724c cmp r3, 8 |
| if (r3 <= 8) {
0x0000724e ble 0x72de | goto label_31;
| }
| label_38:
0x00007250 ldrsb.w r3, [ip, r2] | r3 = *((ip + r2));
0x00007254 cmp r3, 0 |
| if (r3 < 0) {
0x00007256 blt 0x733a | goto label_37;
| }
| label_42:
0x00007258 cmp r3, 8 |
0x0000725a ite le |
| if (r3 > 8) {
0x0000725c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000725e movgt r3, 1 | r3 = 1;
| }
| label_32:
0x00007260 cmp r3, 0 |
| if (r3 == 0) {
0x00007262 beq 0x72de | goto label_31;
| }
0x00007264 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00007266 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00007268 cmp r3, r7 |
0x0000726a str r0, [sp, 0x30] | var_30h = r0;
| if (r3 == r7) {
0x0000726c beq.w 0x7382 | goto label_102;
| }
0x00007270 ldr.w ip, [pc, 0x28c] |
0x00007274 add ip, pc | ip = 0xe778;
| label_39:
0x00007276 ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x00007278 movs r3, 0 | r3 = 0;
0x0000727a cmp r4, r7 |
| if (r4 == r7) {
0x0000727c beq 0x7288 | goto label_103;
| }
| do {
0x0000727e ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00007280 ldr r4, [r4] | r4 = *(r4);
0x00007282 adds r3, r0, r3 | r3 = r0 + r3;
0x00007284 cmp r4, r7 |
0x00007286 bne 0x727e |
| } while (r4 != r7);
| label_103:
0x00007288 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x0000728a movs r4, 0 | r4 = 0;
0x0000728c cmp r0, r7 |
| if (r0 == r7) {
0x0000728e beq 0x7298 | goto label_104;
| }
| do {
0x00007290 ldr r0, [r0] | r0 = *(r0);
0x00007292 adds r4, 1 | r4++;
0x00007294 cmp r0, r7 |
0x00007296 bne 0x7290 |
| } while (r0 != r7);
| label_104:
0x00007298 mov lr, r5 | lr = r5;
0x0000729a ldr r0, [lr, 0x18]! | r0 = *((lr += 0x18));
0x0000729e cmp lr, r0 |
| if (lr == r0) {
0x000072a0 beq 0x72aa | goto label_105;
| }
| do {
0x000072a2 ldr r0, [r0] | r0 = *(r0);
0x000072a4 adds r1, 1 | r1++;
0x000072a6 cmp lr, r0 |
0x000072a8 bne 0x72a2 |
| } while (lr != r0);
| label_105:
0x000072aa strd ip, r3, [sp, 0x14] | __asm ("strd ip, r3, [var_14h]");
0x000072ae ldr r3, [sp, 0x30] | r3 = var_30h;
0x000072b0 ldr r0, [pc, 0x250] |
0x000072b2 strd r4, r1, [sp, 0x1c] | __asm ("strd r4, r1, [var_1ch]");
0x000072b6 movs r1, 0xc4 | r1 = 0xc4;
0x000072b8 str r3, [sp, 0xc] | var_ch = r3;
0x000072ba ldr r3, [sp, 0x44] | r3 = var_44h;
0x000072bc add r0, pc | r0 = 0xe7c4;
0x000072be str r3, [sp, 4] | var_4h = r3;
0x000072c0 ldr r3, [pc, 0x244] |
0x000072c2 add r3, pc | r3 = 0xe7ce;
0x000072c4 str r3, [sp, 0x28] | var_28h = r3;
0x000072c6 str r3, [sp, 0x10] | var_10h = r3;
0x000072c8 ldr r3, [pc, 0x240] |
0x000072ca add r3, pc | r3 = 0xe7da;
0x000072cc str r3, [sp, 0x24] | var_24h = r3;
0x000072ce ldr r3, [pc, 0x240] |
0x000072d0 add r3, pc | r3 = 0xe7e6;
0x000072d2 str r3, [sp, 8] | var_8h = r3;
0x000072d4 movs r3, 0 | r3 = 0;
0x000072d6 str r3, [sp] | *(sp) = r3;
0x000072d8 movs r3, 9 | r3 = 9;
0x000072da blx 0x4d50 | r0 = loc_imp_apr_dynamic_fn_register ();
| label_31:
0x000072de ldrd r1, r0, [r5, 0x40] | __asm ("ldrd r1, r0, [r5, 0x40]");
0x000072e2 blx 0x51f8 | fcn_000051f8 ();
0x000072e6 b 0x6f70 | goto label_17;
| label_78:
0x000072e8 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000072ea ldr r1, [r1, 4] | r1 = *((r1 + 4));
0x000072ec ldr r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x000072ee cmp r0, 0 |
| if (r0 == 0) {
0x000072f0 beq.w 0x71ec | goto label_25;
| }
0x000072f4 ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x000072f6 cmp r0, 0 |
| if (r0 >= 0) {
0x000072f8 bge.w 0x6fb2 | goto label_26;
| }
0x000072fc b 0x71ec | goto label_25;
| label_70:
0x000072fe ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007300 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00007302 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00007304 cmp r3, 0 |
| if (r3 == 0) {
0x00007306 beq 0x722a | goto label_27;
| }
0x00007308 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000730a cmp r3, 0 |
| if (r3 >= 0) {
0x0000730c bge.w 0x6e8c | goto label_28;
| }
0x00007310 b 0x722a | goto label_27;
| label_89:
0x00007312 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007314 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00007316 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00007318 cmp r3, 0 |
| if (r3 == 0) {
0x0000731a beq 0x7222 | goto label_29;
| }
0x0000731c ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000731e cmp r3, 0 |
| if (r3 >= 0) {
0x00007320 bge.w 0x710c | goto label_30;
| }
0x00007324 b 0x7222 | goto label_29;
| label_73:
0x00007326 ldr r0, [r5, 0x44] | r0 = *((r5 + 0x44));
0x00007328 blx 0x46d8 | loc_imp_apr_thread_cond_broadcast ();
0x0000732a ldrd r2, r3, [r6] | __asm ("ldrd r2, r3, [r6]");
0x0000732e mov sb, r3 | sb = r3;
0x00007330 b 0x6f8c | goto label_16;
| if (r0 == 0) {
| label_98:
0x00007332 cbz r0, 0x7366 | goto label_106;
| }
| label_100:
0x00007334 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00007336 cmp r3, 8 |
| if (r3 <= 8) {
0x00007338 ble 0x72de | goto label_31;
| }
| label_37:
0x0000733a ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0000733c cmp r3, 8 |
0x0000733e ite le |
| if (r3 > 8) {
0x00007340 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x00007342 movgt r3, 1 | r3 = 1;
| }
0x00007344 b 0x7260 | goto label_32;
| label_82:
0x00007346 ldr r7, [pc, 0x1cc] |
0x00007348 add r7, pc | r7 = 0xe862;
0x0000734a b 0x701e | goto label_33;
| label_65:
0x0000734c ldr.w lr, [pc, 0x1c8] |
0x00007350 add lr, pc | lr = 0xe86c;
0x00007352 b 0x6de0 | goto label_34;
| label_94:
0x00007354 ldr r4, [r0, 4] | r4 = *((r0 + 4));
0x00007356 cmp r4, 8 |
| if (r4 <= 8) {
0x00007358 ble.w 0x71c8 | goto label_23;
| }
0x0000735c cmp.w ip, 0 |
| if (ip == 0) {
0x00007360 beq.w 0x7212 | goto label_35;
| }
0x00007364 b 0x71b2 | goto label_36;
| label_106:
0x00007366 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007368 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000736a ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x0000736c cmp r3, 8 |
| if (r3 <= 8) {
0x0000736e ble 0x72de | goto label_31;
| }
| label_41:
0x00007370 adds r0, 0x10 | r0 += 0x10;
0x00007372 b 0x733a | goto label_37;
| label_101:
0x00007374 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00007376 cmp r3, 8 |
| if (r3 <= 8) {
0x00007378 ble 0x72de | goto label_31;
| }
0x0000737a cmp.w ip, 0 |
| if (ip == 0) {
0x0000737e beq 0x733a | goto label_37;
| }
0x00007380 b 0x7250 | goto label_38;
| label_102:
0x00007382 ldr.w ip, [pc, 0x198] |
0x00007386 add ip, pc | ip = 0xe8a8;
0x00007388 b 0x7276 | goto label_39;
| label_92:
0x0000738a ldr r0, [sp, 0x44] | r0 = var_44h;
0x0000738c ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x0000738e ldr r4, [r0, 0x10] | r4 = *((r0 + 0x10));
0x00007390 cmp r4, 0 |
| if (r4 == 0) {
0x00007392 beq 0x7464 | goto label_107;
| }
0x00007394 ldrsb r4, [r4, r2] | r4 = *((r4 + r2));
0x00007396 cmp r4, 0 |
| if (r4 < 0) {
0x00007398 blt 0x7464 | goto label_107;
| }
0x0000739a cmp r4, 8 |
| if (r4 <= 8) {
0x0000739c ble.w 0x71c8 | goto label_23;
| }
| label_45:
0x000073a0 ldr r4, [r0, 0x10] | r4 = *((r0 + 0x10));
| if (r4 == 0) {
0x000073a2 cbz r4, 0x73ac | goto label_43;
| }
0x000073a4 ldrsb r4, [r4, r2] | r4 = *((r4 + r2));
0x000073a6 cmp r4, 0 |
| if (r4 >= 0) {
0x000073a8 bge.w 0x71ba | goto label_40;
| }
| label_43:
0x000073ac adds r0, 0x10 | r0 += 0x10;
0x000073ae b 0x7212 | goto label_35;
| label_99:
0x000073b0 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000073b2 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x000073b4 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000073b6 cmp r3, 0 |
| if (r3 == 0) {
0x000073b8 beq 0x746c | goto label_108;
| }
0x000073ba ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x000073bc cmp r3, 0 |
| if (r3 < 0) {
0x000073be blt 0x746c | goto label_108;
| }
0x000073c0 cmp r3, 8 |
| if (r3 <= 8) {
0x000073c2 ble 0x72de | goto label_31;
| }
| label_46:
0x000073c4 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000073c6 cmp r3, 0 |
| if (r3 == 0) {
0x000073c8 beq 0x7370 | goto label_41;
| }
0x000073ca ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x000073cc cmp r3, 0 |
| if (r3 >= 0) {
0x000073ce bge.w 0x7258 | goto label_42;
| }
0x000073d2 b 0x7370 | goto label_41;
| label_97:
0x000073d4 ldr r0, [sp, 0x44] | r0 = var_44h;
0x000073d6 ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x000073d8 ldr r4, [r0, 0x14] | r4 = *((r0 + 0x14));
0x000073da cmp r4, 8 |
| if (r4 > 8) {
0x000073dc bgt 0x73ac | goto label_43;
| }
0x000073de b 0x71c8 | goto label_23;
| label_95:
0x000073e0 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x000073e2 ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x000073e4 cmp r3, r7 |
0x000073e6 str r0, [sp, 0x30] | var_30h = r0;
| if (r3 == r7) {
0x000073e8 beq 0x7478 | goto label_109;
| }
0x000073ea ldr.w ip, [pc, 0x134] |
0x000073ee add ip, pc | ip = 0xe914;
| label_47:
0x000073f0 ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x000073f2 movs r3, 0 | r3 = 0;
0x000073f4 cmp r4, r7 |
| if (r4 == r7) {
0x000073f6 beq 0x7402 | goto label_110;
| }
| do {
0x000073f8 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x000073fa ldr r4, [r4] | r4 = *(r4);
0x000073fc adds r3, r0, r3 | r3 = r0 + r3;
0x000073fe cmp r4, r7 |
0x00007400 bne 0x73f8 |
| } while (r4 != r7);
| label_110:
0x00007402 ldr r0, [r5, 0x10] | r0 = *((r5 + 0x10));
0x00007404 movs r4, 0 | r4 = 0;
0x00007406 cmp r0, r7 |
| if (r0 == r7) {
0x00007408 beq 0x7412 | goto label_111;
| }
| do {
0x0000740a ldr r0, [r0] | r0 = *(r0);
0x0000740c adds r4, 1 | r4++;
0x0000740e cmp r0, r7 |
0x00007410 bne 0x740a |
| } while (r0 != r7);
| label_111:
0x00007412 mov lr, r5 | lr = r5;
0x00007414 ldr r0, [lr, 0x18]! | r0 = *((lr += 0x18));
0x00007416 lsrs r0, r3, 0x1c | r0 = r3 >> 0x1c;
0x00007418 cmp r0, lr |
| if (r0 == lr) {
0x0000741a beq 0x7424 | goto label_112;
| }
| do {
0x0000741c ldr r0, [r0] | r0 = *(r0);
0x0000741e adds r1, 1 | r1++;
0x00007420 cmp r0, lr |
0x00007422 bne 0x741c |
| } while (r0 != lr);
| label_112:
0x00007424 strd ip, r3, [sp, 0x14] | __asm ("strd ip, r3, [var_14h]");
0x00007428 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000742a ldr r0, [pc, 0xf8] |
0x0000742c strd r4, r1, [sp, 0x1c] | __asm ("strd r4, r1, [var_1ch]");
0x00007430 movs r1, 0xc0 | r1 = 0xc0;
0x00007432 str r3, [sp, 0xc] | var_ch = r3;
0x00007434 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007436 add r0, pc | r0 = 0xe960;
0x00007438 str r3, [sp, 4] | var_4h = r3;
0x0000743a ldr r3, [pc, 0xec] |
0x0000743c add r3, pc | r3 = 0xe96a;
0x0000743e str r3, [sp, 0x28] | var_28h = r3;
0x00007440 str r3, [sp, 0x10] | var_10h = r3;
0x00007442 ldr r3, [pc, 0xe8] |
0x00007444 add r3, pc | r3 = 0xe976;
0x00007446 str r3, [sp, 0x24] | var_24h = r3;
0x00007448 ldr r3, [pc, 0xe4] |
0x0000744a add r3, pc | r3 = 0xe97e;
0x0000744c str r3, [sp, 8] | var_8h = r3;
0x0000744e movs r3, 0 | r3 = 0;
0x00007450 str r3, [sp] | *(sp) = r3;
0x00007452 movs r3, 9 | r3 = 9;
0x00007454 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x00007458 ldrd lr, r3, [r5, 0x28] | __asm ("ldrd lr, r3, [r5, 0x28]");
0x0000745c b 0x71c8 | goto label_23;
| label_66:
0x0000745e mov.w ip, 0 |
0x00007462 b 0x6df6 | goto label_44;
| label_107:
0x00007464 ldr r4, [r0, 0x14] | r4 = *((r0 + 0x14));
0x00007466 cmp r4, 8 |
| if (r4 > 8) {
0x00007468 bgt 0x73a0 | goto label_45;
| }
0x0000746a b 0x71c8 | goto label_23;
| label_108:
0x0000746c ldr r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x0000746e cmp r3, 8 |
| if (r3 > 8) {
0x00007470 bgt 0x73c4 | goto label_46;
| }
0x00007472 b 0x72de | goto label_31;
| label_71:
0x00007474 ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x00007476 b 0x6cb8 | goto label_1;
| label_109:
0x00007478 ldr.w ip, [pc, 0xb8] |
0x0000747c add ip, pc | ip = 0xe9b4;
0x0000747e b 0x73f0 | goto label_47;
| label_86:
0x00007480 blx 0x4d80 | loc_imp_apr_file_read ();
| label_52:
0x00007484 ldr r1, [pc, 0xb0] |
0x00007486 movw r2, 0x256 | r2 = 0x256;
0x0000748a ldr r0, [pc, 0xb0] |
0x0000748c add r1, pc | r1 = 0xe9c8;
0x0000748e add r0, pc | r0 = 0xe9d0;
0x00007490 blx 0x4e40 | loc_imp_apr_socket_create ();
0x00007494 lsrs r0, r7, 0x1d | r0 = r7 >> 0x1d;
0x00007496 movs r2, r0 | r2 = r0;
0x00007498 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0000749a movs r0, r0 |
0x0000749c lsrs r2, r1, 0x1d | r2 = r1 >> 0x1d;
0x0000749e movs r2, r0 | r2 = r0;
0x000074a0 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
0x000074a2 movs r0, r0 |
0x000074a4 lsls r4, r5, 0x10 | r4 = r5 << 0x10;
0x000074a6 movs r0, r0 |
0x000074a8 lsls r4, r6, 0x12 | r4 = r6 << 0x12;
0x000074aa movs r0, r0 |
0x000074ac lsls r0, r6, 0x12 | r0 = r6 << 0x12;
0x000074ae movs r0, r0 |
0x000074b0 lsls r4, r0, 0x12 | r4 = r0 << 0x12;
0x000074b2 movs r0, r0 |
0x000074b4 lsls r4, r3, 0x11 | r4 = r3 << 0x11;
0x000074b6 movs r0, r0 |
0x000074b8 lsls r0, r7, 0x10 | r0 = r7 << 0x10;
0x000074ba movs r0, r0 |
0x000074bc pop {r1, r2, r3, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0x75b0 */
| #include <stdint.h>
|
; (fcn) fcn.000075b0 () | void fcn_000075b0 (int16_t arg1) {
| r0 = arg1;
0x000075b0 invalid |
0x000075b4 ldr r0, [r0, 0x40] | r0 = *((r0 + 0x40));
0x000075b6 movs r4, 0 | r4 = 0;
0x000075b8 mov r5, r4 | r5 = r4;
0x000075ba blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x000075be mov r1, r6 | r1 = r6;
0x000075c0 ldr r3, [r1, 0x10]! | r3 = *((r1 += 0x10));
0x000075c4 cmp r3, r1 |
| if (r3 == r1) {
0x000075c6 beq 0x75d6 | goto label_0;
| }
| do {
0x000075c8 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x000075ca ldr r3, [r3] | r3 = *(r3);
0x000075cc adds r4, r2, r4 | r4 = r2 + r4;
0x000075ce adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x000075d2 cmp r3, r1 |
0x000075d4 bne 0x75c8 |
| } while (r3 != r1);
| label_0:
0x000075d6 ldr r0, [r6, 0x40] | r0 = *((r6 + 0x40));
0x000075d8 blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x000075dc mov r0, r4 | r0 = r4;
0x000075de mov r1, r5 | r1 = r5;
0x000075e0 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0x8224 */
| #include <stdint.h>
|
; (fcn) fcn.00008224 () | void fcn_00008224 (int16_t arg1) {
| int16_t var_4h;
| r0 = arg1;
0x00008224 invalid |
0x00008228 ldr r0, [r0, 0x5c] | r0 = *((r0 + 0x5c));
0x0000822a sub sp, 8 |
0x0000822c ldr r2, [pc, 0x4c] |
0x0000822e add r2, pc | r2 = 0x104ae;
| if (r0 != 0) {
0x00008230 cbz r0, 0x8236 |
0x00008232 ldr r1, [r4, 0x64] | r1 = *((r4 + 0x64));
| if (r1 != 0) {
0x00008234 cbnz r1, 0x823a | goto label_0;
| }
| }
0x00008236 add sp, 8 |
0x00008238 pop {r4, r5, r6, pc} |
| label_0:
0x0000823a ldr r3, [r4] | r3 = *(r4);
0x0000823c ldr r5, [pc, 0x40] | r5 = *(0x8280);
0x0000823e ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00008240 ldr r2, [r2, r5] | r2 = *((r2 + r5));
0x00008242 movs r5, 0 | r5 = 0;
0x00008244 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x00008246 str r2, [sp, 4] | var_4h = r2;
0x00008248 blx 0x4fe0 | fcn_00004fe0 ();
0x0000824c ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0000824e ldr r1, [r4, 0x64] | r1 = *((r4 + 0x64));
0x00008250 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00008254 adds r3, r2, 4 | r3 = r2 + 4;
0x00008256 str r3, [r0] | *(r0) = r3;
0x00008258 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0000825a str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0000825c ldr r3, [r4, 0x48] | r3 = *((r4 + 0x48));
0x0000825e ldr r6, [r2, 8] | r6 = *((r2 + 8));
0x00008260 adds r3, r3, r1 | r3 += r1;
0x00008262 ldr r1, [r4, 0x4c] | r1 = *((r4 + 0x4c));
0x00008264 str r0, [r6] | *(r6) = r0;
0x00008266 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x00008268 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0000826c str r5, [r4, 0x5c] | *((r4 + 0x5c)) = r5;
0x0000826e strd r3, r1, [r4, 0x48] | __asm ("strd r3, r1, [r4, 0x48]");
0x00008272 vstr d16, [r4, 0x60] | __asm ("vstr d16, [r4, 0x60]");
0x00008276 add sp, 8 |
0x00008278 pop {r4, r5, r6, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0xb0f4 */
| #include <stdint.h>
|
; (fcn) fcn.0000b0f4 () | void fcn_0000b0f4 (int16_t arg_c8h, int16_t arg_cch, int16_t arg_d0h, int16_t arg_2040h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_8h;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_sp_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_10h_2;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_1ch_2;
| int32_t var_4h_3;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000b0f4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000b0f8 mov r5, r2 | r5 = r2;
0x0000b0fa sub sp, 0xa4 |
0x0000b0fc ldr r2, [pc, 0x11c] |
0x0000b0fe mov sl, r3 | sl = r3;
0x0000b100 add.w fp, sp, 0x1c |
0x0000b104 ldr r6, [sp, 0xc8] | r6 = *(arg_c8h);
0x0000b106 mov sb, r0 | sb = r0;
0x0000b108 ldr r3, [pc, 0x114] | r3 = *(0xb220);
0x0000b10a add r2, pc | r2 = 0x1632a;
0x0000b10c ldr r7, [sp, 0xcc] | r7 = *(arg_cch);
0x0000b10e mov r4, r1 | r4 = r1;
0x0000b110 str r6, [sp] | *(sp) = r6;
0x0000b112 movs r1, 0x80 | r1 = 0x80;
0x0000b114 ldr r3, [r2, r3] |
0x0000b116 mov r0, fp | r0 = fp;
0x0000b118 ldr r2, [pc, 0x108] |
0x0000b11a ldr.w r8, [sp, 0xd0] | r8 = *(arg_d0h);
0x0000b11e ldr r3, [r3] | r3 = *(0x1632a);
0x0000b120 str r3, [sp, 0x9c] | var_9ch = r3;
0x0000b122 mov.w r3, 0 | r3 = 0;
0x0000b126 str r7, [sp, 4] | var_4h = r7;
0x0000b128 add r2, pc | r2 = 0x16350;
0x0000b12a blx 0x5054 | fcn_00005054 ();
0x0000b12e ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x0000b130 mov r1, r0 | r1 = r0;
0x0000b132 movs r2, 0 | r2 = 0;
0x0000b134 mov r0, fp | r0 = fp;
0x0000b136 blx 0x4fe0 | r0 = fcn_00004fe0 ();
0x0000b13a str.w sl, [r0] | __asm ("str.w sl, [r0]");
0x0000b13e movs r1, 2 | r1 = 2;
0x0000b140 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0000b144 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x0000b146 str r3, [r0, 4] | var_4h_3 = r3;
0x0000b148 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x0000b14c str r0, [r3] | *(r3) = r0;
0x0000b14e str.w r0, [sl, 4] | __asm ("str.w r0, [sl, 4]");
0x0000b152 ldr r0, [pc, 0xd4] |
0x0000b154 add r0, pc | r0 = 0x16382;
0x0000b156 blx 0x4e4c | loc_imp_ap_hook_child_stopping ();
0x0000b15a ldr r3, [pc, 0xd0] |
0x0000b15c add r3, pc | r3 = 0x1638e;
0x0000b15e cmp.w r8, 0 |
| if (r8 == 0) {
0x0000b162 beq 0xb1ee | goto label_54;
| }
0x0000b164 str.w r8, [r0] | __asm ("str.w r8, [r0]");
0x0000b168 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x0000b16c str r2, [r0, 4] | *((r0 + 4)) = r2;
0x0000b16e ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x0000b172 str r0, [r2] | *(r2) = r0;
0x0000b174 str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
| label_1:
0x0000b178 ldr r2, [r4, 0x10] | r2 = *((r4 + 0x10));
0x0000b17a adds r1, r6, r2 | r1 = r6 + r2;
0x0000b17c ldr r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0000b17e str r1, [r4, 0x10] | *((r4 + 0x10)) = r1;
0x0000b180 adc.w r7, r7, r2 | __asm ("adc.w r7, r7, r2");
0x0000b184 ldr r2, [pc, 0xa8] | r2 = *(0xb230);
0x0000b186 str r7, [r4, 0x14] | *((r4 + 0x14)) = r7;
0x0000b188 ldr r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b18a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0000b18c ldr.w r3, [sb, 0x60] | r3 = *((sb + 0x60));
0x0000b190 cmp r2, 0 |
| if (r2 < 0) {
0x0000b192 blt 0xb1c0 | goto label_55;
| }
0x0000b194 cmp r3, 0 |
| if (r3 == 0) {
0x0000b196 beq 0xb1fe | goto label_56;
| }
0x0000b198 ldr r0, [r3] | r0 = *(r3);
| if (r0 == 0) {
0x0000b19a cbz r0, 0xb1c2 | goto label_3;
| }
0x0000b19c ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x0000b19e cmp r0, 0 |
| if (r0 < 0) {
0x0000b1a0 blt 0xb1c2 | goto label_3;
| }
| label_2:
0x0000b1a2 cmp r0, 8 |
| if (r0 > 8) {
0x0000b1a4 bgt 0xb1c8 | goto label_57;
| }
| do {
| label_0:
0x0000b1a6 ldr r2, [pc, 0x8c] |
0x0000b1a8 ldr r3, [pc, 0x74] | r3 = *(0xb220);
0x0000b1aa add r2, pc | r2 = 0x163e4;
0x0000b1ac ldr r3, [r2, r3] | r3 = *(0x163e4);
0x0000b1ae ldr r2, [r3] | r2 = *(0x163e4);
0x0000b1b0 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0000b1b2 eors r2, r3 | r2 ^= r3;
0x0000b1b4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b1b8 bne 0xb216 | goto label_58;
| }
0x0000b1ba add sp, 0xa4 |
0x0000b1bc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| if (r3 == 0) {
| label_55:
0x0000b1c0 cbz r3, 0xb210 | goto label_59;
| }
| label_3:
0x0000b1c2 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000b1c4 cmp r3, 8 |
0x0000b1c6 ble 0xb1a6 |
| } while (r3 <= 8);
| label_57:
0x0000b1c8 ldr r0, [r4] | r0 = *(r4);
0x0000b1ca movs r4, 0 | r4 = 0;
0x0000b1cc str r1, [sp, 0x14] | var_4ch = r1;
0x0000b1ce movs r3, 9 | r3 = 9;
0x0000b1d0 ldr r1, [pc, 0x64] |
0x0000b1d2 str r6, [sp, 0x10] | var_10h_2 = r6;
0x0000b1d4 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x0000b1d8 add r1, pc | r1 = 0x16414;
0x0000b1da str r4, [sp] | *(sp) = r4;
0x0000b1dc strd r1, r0, [sp, 8] | __asm ("strd r1, r0, [sp, 8]");
0x0000b1e0 movw r1, 0x319 | r1 = 0x319;
0x0000b1e4 ldr r0, [pc, 0x54] |
0x0000b1e6 add r0, pc | r0 = 0x16426;
0x0000b1e8 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b1ec b 0xb1a6 | goto label_0;
| label_54:
0x0000b1ee adds r2, r5, 4 | r2 = r5 + 4;
0x0000b1f0 str r2, [r0] | *(r0) = r2;
0x0000b1f2 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0000b1f4 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x0000b1f6 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0000b1f8 str r0, [r2] | *(r2) = r0;
0x0000b1fa str r0, [r5, 8] | *((r5 + 8)) = r0;
0x0000b1fc b 0xb178 | goto label_1;
| label_56:
0x0000b1fe ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0000b202 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
| if (r0 == 0) {
0x0000b204 cbz r0, 0xb20c | goto label_60;
| }
0x0000b206 ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x0000b208 cmp r0, 0 |
| if (r0 >= 0) {
0x0000b20a bge 0xb1a2 | goto label_2;
| }
| do {
| label_60:
0x0000b20c adds r3, 0x10 | r3 += 0x10;
0x0000b20e b 0xb1c2 | goto label_3;
| label_59:
0x0000b210 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0000b214 b 0xb20c |
| } while (1);
| label_58:
0x0000b216 blx 0x4d80 | loc_imp_apr_file_read ();
0x0000b21a nop |
0x0000b21c ldm r2!, {r1, r3, r4, r5} | r1 = *(r2!);
| r3 = *((r2! + 4));
| r4 = *((r2! + 8));
| r5 = *((r2! + 12));
0x0000b21e movs r1, r0 | r1 = r0;
0x0000b220 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0000b222 movs r0, r0 |
0x0000b224 ldr r2, [pc, 0x3d0] | r2 = *(0xb5f8);
0x0000b226 movs r1, r0 | r1 = r0;
0x0000b228 ldr r2, [pc, 0x330] | r2 = *(0xb55c);
0x0000b22a movs r1, r0 | r1 = r0;
0x0000b22c ldm r1!, {r3, r5, r6, r7} | r3 = *(r1!);
| r5 = *((r1! + 4));
| r6 = *((r1! + 8));
| r7 = *((r1! + 12));
0x0000b22e movs r1, r0 | r1 = r0;
0x0000b230 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
0x0000b232 movs r0, r0 |
0x0000b234 ldm r1, {r1, r3, r4, r7} | r1 = *(r1);
| r3 = *((r1 + 4));
| r4 = *((r1 + 8));
| r7 = *((r1 + 12));
0x0000b236 movs r1, r0 | r1 = r0;
0x0000b238 ldr r2, [pc, 0x230] | r2 = *(0xb46c);
0x0000b23a movs r1, r0 | r1 = r0;
0x0000b23c ldr r2, [pc, 0xf8] | r2 = *(0xb338);
0x0000b23e movs r1, r0 | r1 = r0;
0x0000b240 ldr.w r2, [pc, 0xa40] |
0x0000b244 ldr.w r3, [pc, 0xa40] | r3 = *(0xbc88);
0x0000b248 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000b24c mov r6, r0 | r6 = r0;
0x0000b24e add r2, pc | r2 = 0x16ed6;
0x0000b250 sub.w sp, sp, 0x2040 |
0x0000b254 sub sp, 0x14 |
0x0000b256 mov r8, r1 | r8 = r1;
0x0000b258 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x0000b25a add.w r1, sp, 0x2040 | r1 += arg_2040h;
0x0000b25e ldr.w r5, [pc, 0xa2c] |
0x0000b262 adds r1, 0xc | r1 += 0xc;
0x0000b264 ldr r3, [r2, r3] |
0x0000b266 add r5, pc | r5 = 0x16ef8;
0x0000b268 ldr r3, [r3] | r3 = *(0x16ed6);
0x0000b26a str r3, [r1] | *(r1) = r3;
0x0000b26c mov.w r3, 0 | r3 = 0;
0x0000b270 cmp r0, 0 |
| if (r0 == 0) {
0x0000b272 beq.w 0xbc6e | goto label_61;
| }
0x0000b276 ldr.w r3, [pc, 0xa18] | r3 = *(0xbc92);
0x0000b27a ldr r2, [r0, 0x2c] | r2 = *((r0 + 0x2c));
0x0000b27c ldr.w fp, [r5, r3] | fp = *((r5 + r3));
0x0000b280 ldr.w r3, [fp, 8] | r3 = var_8h;
0x0000b284 ldr.w r2, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| r2 = *((r2 + offset_0));
0x0000b288 str r2, [sp, 0x28] | var_28h = r2;
0x0000b28a cmp r2, 0 |
| if (r2 == 0) {
0x0000b28c beq.w 0xbc6e | goto label_61;
| }
0x0000b290 cmp r3, 0 |
0x0000b292 ldr r2, [r0, 0x60] | r2 = *((r0 + 0x60));
| if (r3 < 0) {
0x0000b294 blt.w 0xb4dc | goto label_62;
| }
0x0000b296 strh r2, [r4, 8] | *((r4 + 8)) = r2;
0x0000b298 cmp r2, 0 |
| if (r2 == 0) {
0x0000b29a beq.w 0xbab8 | goto label_63;
| }
0x0000b29e ldr r1, [r2] | r1 = *(r2);
0x0000b2a0 cmp r1, 0 |
| if (r1 == 0) {
0x0000b2a2 beq.w 0xb4e2 | goto label_37;
| }
0x0000b2a6 ldrsb r3, [r1, r3] | r3 = *((r1 + r3));
0x0000b2a8 cmp r3, 0 |
| if (r3 < 0) {
0x0000b2aa blt.w 0xb4e2 | goto label_37;
| }
| label_36:
0x0000b2ae cmp r3, 8 |
0x0000b2b0 ite le |
| if (r3 > 8) {
0x0000b2b2 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000b2b4 movgt r3, 1 | r3 = 1;
| }
| label_6:
0x0000b2b6 ldr r4, [r6, 4] | r4 = *((r6 + 4));
0x0000b2b8 cmp r3, 0 |
| if (r3 != 0) {
0x0000b2ba bne.w 0xba22 | goto label_64;
| }
| label_31:
0x0000b2be ldr r3, [r0, 0x54] | r3 = *((r0 + 0x54));
0x0000b2c0 cmp r3, 0 |
| if (r3 != 0) {
0x0000b2c2 bne.w 0xb7cc | goto label_65;
| }
0x0000b2c6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000b2c8 ldr r7, [r3, 0x50] | r7 = *((r3 + 0x50));
0x0000b2ca cmp r7, 0 |
| if (r7 != 0) {
0x0000b2cc bne.w 0xb7cc | goto label_65;
| }
0x0000b2ce strh r6, [r7, 0x12] | *((r7 + 0x12)) = r6;
0x0000b2d0 cmp r4, 0 |
| if (r4 == 0) {
0x0000b2d2 beq.w 0xbba8 | goto label_66;
| }
| label_46:
0x0000b2d6 mov r2, r8 | r2 = r8;
0x0000b2d8 ldr r3, [r2, 4]! | r3 = *((r2 += 4));
0x0000b2dc cmp r3, r2 |
0x0000b2de str r2, [sp, 0x1c] | var_1ch = r2;
| if (r3 != r2) {
0x0000b2e0 beq 0xb2f4 |
0x0000b2e2 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000b2e6 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0000b2e8 ldr.w r3, [pc, 0x9a8] | r3 = *(0xbc94);
0x0000b2ec ldr r3, [r5, r3] | r3 = *((r5 + r3));
0x0000b2ee cmp r2, r3 |
| if (r2 == r3) {
0x0000b2f0 beq.w 0xbc1c | goto label_67;
| }
0x0000b2f2 strh r4, [r2, 0x24] | *((r2 + 0x24)) = r4;
| }
| label_52:
0x0000b2f4 ldr.w r3, [pc, 0x9a0] |
0x0000b2f8 add r7, sp, 0x50 | r7 += var_50h;
0x0000b2fa mov sb, r4 | sb = r4;
0x0000b2fc mov sl, r6 | sl = r6;
0x0000b2fe add r3, pc | r3 = 0x16f9a;
0x0000b300 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000b302 sub.w r3, r7, 0x14 | r3 = r7 - 0x14;
0x0000b306 str r3, [sp, 0x20] | var_20h = r3;
| label_5:
0x0000b308 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b30c ldr r2, [r3, 0x54] | r2 = *((r3 + 0x54));
0x0000b30e cmp r2, 0 |
| if (r2 != 0) {
0x0000b310 bne.w 0xb7ca | goto label_68;
| }
0x0000b314 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000b316 ldr r6, [r2, 0x50] | r6 = *((r2 + 0x50));
0x0000b318 cmp r6, 0 |
| if (r6 != 0) {
0x0000b31a bne.w 0xb7ca | goto label_68;
| }
0x0000b31e ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x0000b322 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000b324 cmp r1, r2 |
0x0000b326 itt eq |
| if (r1 != r2) {
0x0000b328 ldreq r2, [fp, 8] | r2 = var_8h;
| }
| if (r1 == r2) {
0x0000b32c mov r5, r6 | r5 = r6;
| }
| if (r1 == r2) {
0x0000b32e beq.w 0xb506 | goto label_11;
| }
0x0000b332 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0000b336 cmp r3, 1 |
| if (r3 > 1) {
0x0000b338 bhi.w 0xb49c | goto label_69;
| }
| label_4:
0x0000b33c ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b340 mov.w r3, 0x2000 | r3 = 0x2000;
0x0000b344 movs r1, 0 | r1 = 0;
0x0000b346 str r3, [r7, -0x14] | *((r7 - 0x14)) = r3;
0x0000b34a cmp r0, 0 |
| if (r0 == 0) {
0x0000b34c beq.w 0xb6a0 | goto label_70;
| }
0x0000b34e strh r0, [r5, 0xc] | *((r5 + 0xc)) = r0;
| label_14:
0x0000b350 str r1, [sp, 4] | var_4h_2 = r1;
0x0000b352 movs r2, 0 | r2 = 0;
0x0000b354 mov r1, r8 | r1 = r8;
0x0000b356 str r3, [sp] | *(sp) = r3;
0x0000b358 blx 0x4b18 | r0 = fcn_00004b18 ();
0x0000b35c mov r6, r0 | r6 = r0;
0x0000b35e cmp r0, 0 |
| if (r0 != 0) {
0x0000b360 bne.w 0xb4ee | goto label_71;
| }
0x0000b364 ldr r3, [r7, -0x14] | r3 = *((r7 - 0x14));
0x0000b368 subs r4, r7, 4 | r4 = r7 - 4;
0x0000b36a ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b36e mov r1, r4 | r1 = r4;
0x0000b370 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000b372 subs r3, 1 | r3--;
0x0000b374 str r3, [r7, -0x14] | *((r7 - 0x14)) = r3;
0x0000b378 blx 0x479c | r0 = fcn_0000479c ();
0x0000b37c mov r5, r0 | r5 = r0;
0x0000b37e cmp r0, 0 |
| if (r0 != 0) {
0x0000b380 bne.w 0xb5a0 | goto label_72;
| }
0x0000b384 ldr r3, [r7, -0x14] | r3 = *((r7 - 0x14));
0x0000b388 cmp r3, 1 |
0x0000b38a strb r6, [r4, r3] | *((r4 + r3)) = r6;
| if (r3 < 1) {
0x0000b38c bls.w 0xb5f4 | goto label_73;
| }
0x0000b390 subs r3, 2 | r3 -= 2;
0x0000b392 ldrb r1, [r4, r3] | r1 = *((r4 + r3));
0x0000b394 adds r2, r4, r3 | r2 = r4 + r3;
0x0000b396 cmp r1, 0xd |
| if (r1 != 0xd) {
0x0000b398 bne.w 0xb5f4 | goto label_73;
| }
0x0000b39a strh r4, [r5, 8] | *((r5 + 8)) = r4;
0x0000b39c ldrb r1, [r2, 1] | r1 = *((r2 + 1));
0x0000b39e cmp r1, 0xa |
| if (r1 != 0xa) {
0x0000b3a0 bne.w 0xb5f4 | goto label_73;
| }
0x0000b3a4 ldrb r1, [r2, 2] | r1 = *((r2 + 2));
0x0000b3a6 rsbs r6, r1, 0 | r6 = r1 - ;
0x0000b3a8 cmp r1, 0 |
| if (r1 != 0) {
0x0000b3aa bne.w 0xb5f4 | goto label_73;
| }
0x0000b3ae strb r1, [r2] | *(r2) = r1;
0x0000b3b0 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b3b4 str r3, [r7, -0x14] | *((r7 - 0x14)) = r3;
0x0000b3b8 blx 0x4748 | fcn_00004748 ();
0x0000b3bc ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b3c0 ldr.w r0, [sb, 8] | r0 = *((sb + 8));
0x0000b3c2 movs r0, r1 | r0 = r1;
0x0000b3c4 cmp r2, 0 |
0x0000b3c6 ldr r1, [r0, 0x60] | r1 = *((r0 + 0x60));
| if (r2 < 0) {
0x0000b3c8 blt.w 0xb75e | goto label_74;
| }
0x0000b3cc cmp r1, 0 |
| if (r1 == 0) {
0x0000b3ce beq.w 0xbaa4 | goto label_75;
| }
0x0000b3d2 ldr r3, [r1] | r3 = *(r1);
0x0000b3d4 cmp r3, 0 |
| if (r3 == 0) {
0x0000b3d6 beq.w 0xb764 | goto label_76;
| }
0x0000b3da ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b3dc cmp r3, 0 |
| if (r3 < 0) {
0x0000b3de blt.w 0xb764 | goto label_76;
| }
| label_34:
0x0000b3e2 cmp r3, 6 |
0x0000b3e4 ite le |
| if (r3 > 6) {
0x0000b3e6 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x0000b3e8 movgt r3, 1 | r3 = 1;
| }
| label_20:
0x0000b3ea cmp r3, 0 |
| if (r3 != 0) {
0x0000b3ec bne.w 0xb85a | goto label_77;
| }
0x0000b3f0 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b3f4 blx 0x4748 | fcn_00004748 ();
| label_25:
0x0000b3f8 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0000b3fc cmp r3, 0 |
| if (r3 == 0) {
0x0000b3fe beq.w 0xb53a | goto label_78;
| }
0x0000b402 ldrb r5, [r7, -0x4] | r5 = *((r7 - 0x4));
0x0000b406 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x0000b40a ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b40e ldr r0, [r1, 0x60] | r0 = *((r1 + 0x60));
0x0000b410 cmp r5, 0 |
| if (r5 == 0) {
0x0000b412 beq.w 0xb8b6 | goto label_79;
| }
0x0000b416 cmp r2, 0 |
| if (r2 < 0) {
0x0000b418 blt.w 0xb528 | goto label_80;
| }
0x0000b41c cmp r0, 0 |
| if (r0 == 0) {
0x0000b41e beq.w 0xb6ec | goto label_81;
| }
0x0000b422 ldr r3, [r0] | r3 = *(r0);
0x0000b424 cmp r3, 0 |
| if (r3 == 0) {
0x0000b426 beq.w 0xb52e | goto label_82;
| }
0x0000b42a ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b42c cmp r3, 0 |
| if (r3 < 0) {
0x0000b42e blt 0xb52e | goto label_82;
| }
| label_15:
0x0000b430 cmp r3, 7 |
0x0000b432 ite le |
| if (r3 > 7) {
0x0000b434 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x0000b436 movgt r3, 1 | r3 = 1;
| }
| label_10:
0x0000b438 cmp r3, 0 |
| if (r3 != 0) {
0x0000b43a bne.w 0xb5c8 | goto label_83;
| }
| label_13:
0x0000b43e cmp r5, 9 |
0x0000b440 it ne |
| if (r5 != 9) {
0x0000b442 cmpne r5, 0x20 | __asm ("cmpne r5, 0x20");
| }
0x0000b444 ite eq |
| if (r5 != 9) {
0x0000b446 moveq r5, 1 | r5 = 1;
| }
| if (r5 == 9) {
0x0000b448 movne r5, 0 | r5 = 0;
| }
| if (r5 != 9) {
0x0000b44a bne.w 0xb5ba | goto label_84;
| }
| do {
0x0000b44e ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x0000b452 cmp r3, 9 |
0x0000b454 it ne |
| if (r3 != 9) {
0x0000b456 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x0000b458 beq 0xb44e |
| } while (r3 == 9);
0x0000b45a ldr.w r0, [sb, 0x14] | r0 = *((sb + 0x14));
0x0000b45e blx 0x47b4 | r0 = fcn_000047b4 ();
0x0000b462 cmp r0, 0 |
| if (r0 == 0) {
0x0000b464 beq.w 0xb72a | goto label_85;
| }
0x0000b468 ldr.w r1, [pc, 0x830] |
0x0000b46c mov r3, r4 | r3 = r4;
0x0000b46e ldr r2, [r0] | r2 = *(r0);
0x0000b470 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x0000b474 add r1, pc | r1 = 0x17114;
0x0000b476 blx 0x49f8 | r0 = fcn_000049f8 ();
0x0000b47a mov r4, r0 | r4 = r0;
| label_12:
0x0000b47c ldr.w r0, [sb, 0x14] | r0 = *((sb + 0x14));
0x0000b480 blx 0x4f4c | r0 = fcn_00004f4c ();
0x0000b484 str r4, [r0] | *(r0) = r4;
| label_17:
0x0000b486 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000b48a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000b48c cmp r2, r3 |
| if (r2 == r3) {
0x0000b48e beq.w 0xb694 | goto label_86;
| }
0x0000b492 ldr.w r3, [sb, 4] | r3 = *((sb + 4));
0x0000b496 cmp r3, 1 |
| if (r3 < 1) {
0x0000b498 bls.w 0xb33c | goto label_4;
| }
| label_69:
0x0000b49c ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b4a0 movs r6, 0 | r6 = 0;
0x0000b4a2 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b4a6 mov r5, r6 | r5 = r6;
0x0000b4a8 cmp r2, 0 |
0x0000b4aa ldr r0, [r3, 0x60] | r0 = *((r3 + 0x60));
| if (r2 >= 0) {
0x0000b4ac bge 0xb50c | goto label_87;
| }
| if (r0 == 0) {
| label_7:
0x0000b4ae cbnz r0, 0xb4b4 |
0x0000b4b0 ldr r0, [r3, 4] | r0 = *((r3 + 4));
| label_23:
0x0000b4b2 adds r0, 0x10 | r0 += 0x10;
| }
| label_8:
0x0000b4b4 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x0000b4b6 cmp r1, 8 |
0x0000b4b8 ite le |
| if (r1 > 8) {
0x0000b4ba movle r1, 0 | r1 = 0;
| }
| if (r1 <= 8) {
0x0000b4bc movgt r1, 1 | r1 = 1;
| }
| label_9:
0x0000b4be cmp r1, 0 |
| if (r1 != 0) {
0x0000b4c0 bne.w 0xb770 | goto label_88;
| }
| label_21:
0x0000b4c4 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000b4c8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000b4ca cmp r2, r3 |
0x0000b4cc it eq |
| if (r2 != r3) {
0x0000b4ce orreq r5, r5, 1 | r5 |= 1;
| }
0x0000b4d0 lsls r1, r0, 0x14 | r1 = r0 << 0x14;
0x0000b4d2 cmp r5, 0 |
| if (r5 == 0) {
0x0000b4d4 beq.w 0xb308 | goto label_5;
| }
0x0000b4d8 mov r5, r6 | r5 = r6;
0x0000b4da b 0xb7d6 | goto label_89;
| label_62:
0x0000b4dc cmp r2, 0 |
| if (r2 == 0) {
0x0000b4de beq.w 0xbadc | goto label_90;
| }
| label_37:
0x0000b4e2 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x0000b4e4 cmp r3, 8 |
0x0000b4e6 ite le |
| if (r3 > 8) {
0x0000b4e8 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000b4ea movgt r3, 1 | r3 = 1;
| }
0x0000b4ec b 0xb2b6 | goto label_6;
| label_71:
0x0000b4ee ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b4f2 blx 0x4748 | fcn_00004748 ();
0x0000b4f6 cmp r6, 0xb |
| if (r6 == 0xb) {
0x0000b4f8 beq.w 0xba9c | goto label_91;
| }
0x0000b4fc ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b500 movs r5, 1 | r5 = 1;
0x0000b502 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
| label_11:
0x0000b506 cmp r2, 0 |
0x0000b508 ldr r0, [r3, 0x60] | r0 = *((r3 + 0x60));
| if (r2 < 0) {
0x0000b50a blt 0xb4ae | goto label_7;
| }
| label_87:
0x0000b50c cmp r0, 0 |
| if (r0 == 0) {
0x0000b50e beq.w 0xb846 | goto label_92;
| }
0x0000b512 ldr r1, [r0] | r1 = *(r0);
0x0000b514 cmp r1, 0 |
| if (r1 == 0) {
0x0000b516 beq 0xb4b4 | goto label_8;
| }
0x0000b518 ldrsb r1, [r1, r2] | r1 = *((r1 + r2));
0x0000b51a cmp r1, 0 |
| if (r1 < 0) {
0x0000b51c blt 0xb4b4 | goto label_8;
| }
| label_24:
0x0000b51e cmp r1, 8 |
0x0000b520 ite le |
| if (r1 > 8) {
0x0000b522 movle r1, 0 | r1 = 0;
| }
| if (r1 <= 8) {
0x0000b524 movgt r1, 1 | r1 = 1;
| }
0x0000b526 b 0xb4be | goto label_9;
| if (r0 != 0) {
| label_80:
0x0000b528 cbnz r0, 0xb52e | goto label_82;
| }
0x0000b52a ldr r0, [r1, 4] | r0 = *((r1 + 4));
| do {
| label_16:
0x0000b52c adds r0, 0x10 | r0 += 0x10;
| label_82:
0x0000b52e ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0000b530 cmp r3, 7 |
0x0000b532 ite le |
| if (r3 > 7) {
0x0000b534 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x0000b536 movgt r3, 1 | r3 = 1;
| }
0x0000b538 b 0xb438 | goto label_10;
| label_78:
0x0000b53a ldr.w r1, [pc, 0x764] |
0x0000b53e mov r0, r4 | r0 = r4;
0x0000b540 add r1, pc | r1 = 0x171e6;
0x0000b542 blx 0x4cf0 | r0 = loc_imp_ap_log_rerror_ ();
0x0000b546 cmp r0, 0 |
| if (r0 != 0) {
0x0000b548 bne.w 0xb700 | goto label_93;
| }
0x0000b54c ldr.w r1, [pc, 0x754] |
0x0000b550 mov r0, r4 | r0 = r4;
0x0000b552 add r1, pc | r1 = 0x171fa;
0x0000b554 blx 0x4cf0 | r0 = loc_imp_ap_log_rerror_ ();
0x0000b558 cmp r0, 0 |
| if (r0 != 0) {
0x0000b55a bne.w 0xb724 | goto label_94;
| }
0x0000b55e ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b562 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x0000b566 cmp r2, 0 |
0x0000b568 ldr r3, [r1, 0x60] | r3 = *((r1 + 0x60));
| if (r2 < 0) {
0x0000b56a blt.w 0xb73a | goto label_95;
| }
0x0000b56e cmp r3, 0 |
| if (r3 == 0) {
0x0000b570 beq.w 0xb88e | goto label_96;
| }
0x0000b574 ldr r0, [r3] | r0 = *(r3);
0x0000b576 cmp r0, 0 |
| if (r0 == 0) {
0x0000b578 beq.w 0xb740 | goto label_97;
| }
0x0000b57c ldrsb r5, [r0, r2] | r5 = *((r0 + r2));
0x0000b57e cmp r5, 0 |
| if (r5 < 0) {
0x0000b580 blt.w 0xb740 | goto label_97;
| }
| label_27:
0x0000b584 cmp r5, 6 |
0x0000b586 ite le |
| if (r5 > 6) {
0x0000b588 movle r5, 0 | r5 = 0;
| }
| if (r5 <= 6) {
0x0000b58a movgt r5, 1 | r5 = 1;
| }
| label_18:
0x0000b58c cmp r5, 0 |
| if (r5 != 0) {
0x0000b58e bne.w 0xb794 | goto label_98;
| }
0x0000b592 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000b596 movs r5, 1 | r5 = 1;
0x0000b598 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b59c movs r6, 0x16 | r6 = 0x16;
0x0000b59e b 0xb506 | goto label_11;
| label_72:
0x0000b5a0 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b5a4 blx 0x4748 | fcn_00004748 ();
0x0000b5a8 cmp r5, 0xb |
0x0000b5aa ldr.w r2, [fp, 8] | r2 = var_8h;
| if (r5 != 0xb) {
0x0000b5ae beq 0xb698 |
0x0000b5b0 mov r6, r5 | r6 = r5;
0x0000b5b2 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b5b4 adds r0, 0x10 | r0 += 0x10;
0x0000b5b6 movs r5, 1 | r5 = 1;
0x0000b5b8 b 0xb506 | goto label_11;
| label_84:
0x0000b5ba mov r1, r4 | r1 = r4;
0x0000b5bc ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x0000b5c0 blx 0x4d08 | r0 = loc_imp_apr_thread_join ();
0x0000b5c4 mov r4, r0 | r4 = r0;
0x0000b5c6 b 0xb47c | goto label_12;
| label_83:
0x0000b5c8 str r4, [sp, 0x10] | var_10h = r4;
0x0000b5ca ldr.w r3, [sb] | r3 = *(sb);
0x0000b5ce ldr.w r0, [pc, 0x6d8] |
0x0000b5d2 str r1, [sp, 4] | var_4h_2 = r1;
0x0000b5d4 mov.w r1, 0x254 | r1 = 0x254;
0x0000b5d8 str r3, [sp, 0xc] | var_ch = r3;
0x0000b5da ldr.w r3, [pc, 0x6d0] |
0x0000b5de add r0, pc | r0 = 0x1728c;
0x0000b5e0 add r3, pc | r3 = 0x17292;
0x0000b5e2 str r3, [sp, 8] | var_sp_8h = r3;
0x0000b5e4 movs r3, 0 | r3 = 0;
0x0000b5e6 str r3, [sp] | *(sp) = r3;
0x0000b5e8 movs r3, 8 | r3 = 8;
0x0000b5ea blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b5ee ldrb r5, [r7, -0x4] | r5 = *((r7 - 0x4));
0x0000b5f2 b 0xb43e | goto label_13;
| label_73:
0x0000b5f4 sub.w r5, r7, 0x10 | r5 = r7 - 0x10;
0x0000b5f8 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b5fc mov r2, r5 | r2 = r5;
0x0000b5fe movs r1, 0 | r1 = 0;
0x0000b600 blx 0x4b60 | r0 = fcn_00004b60 ();
0x0000b604 mov r6, r0 | r6 = r0;
0x0000b606 cmp r0, 0 |
| if (r0 != 0) {
0x0000b608 bne 0xb6b6 | goto label_99;
| }
0x0000b60a sub.w r1, r7, 0x14 | r1 = r7 - 0x14;
0x0000b60e ldm r1, {r1, r2, r3} | r1 = *(r1);
| r2 = *((r1 + 4));
| r3 = *((r1 + 8));
0x0000b610 cmp r1, r2 |
0x0000b612 sbcs.w r3, r0, r3 | __asm ("sbcs.w r3, r0, r3");
| if (r1 < r2) {
0x0000b616 blt 0xb6b6 | goto label_99;
| }
0x0000b618 ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b61c ldr.w r0, [sb, 8] | r0 = *((sb + 8));
0x0000b620 cmp r2, 0 |
0x0000b622 ldr r1, [r0, 0x60] | r1 = *((r0 + 0x60));
| if (r2 < 0) {
0x0000b624 blt.w 0xb74c | goto label_100;
| }
0x0000b628 cmp r1, 0 |
| if (r1 == 0) {
0x0000b62a beq.w 0xb8a2 | goto label_101;
| }
0x0000b62c strh r2, [r7, 8] | *((r7 + 8)) = r2;
0x0000b62e ldr r3, [r1] | r3 = *(r1);
0x0000b630 cmp r3, 0 |
| if (r3 == 0) {
0x0000b632 beq.w 0xb752 | goto label_102;
| }
0x0000b636 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b638 cmp r3, 0 |
| if (r3 < 0) {
0x0000b63a blt.w 0xb752 | goto label_102;
| }
| label_29:
0x0000b63e cmp r3, 6 |
0x0000b640 ite le |
| if (r3 > 6) {
0x0000b642 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x0000b644 movgt r3, 1 | r3 = 1;
| }
| label_19:
0x0000b646 cmp r3, 0 |
| if (r3 != 0) {
0x0000b648 bne.w 0xb802 | goto label_103;
| }
0x0000b64c ldr.w r3, [sb, 0x1c] | r3 = *((sb + 0x1c));
0x0000b650 cmp r3, 0 |
| if (r3 == 0) {
0x0000b652 beq.w 0xb832 | goto label_104;
| }
| label_22:
0x0000b656 mov r2, sb | r2 = sb;
0x0000b658 add.w r1, sb, 0x1c | r1 = sb + 0x1c;
0x0000b65c ldr r3, [r2, 0x18]! | r3 = *((r2 += 0x18));
0x0000b660 movs r0, 0 | r0 = 0;
0x0000b662 ldr r3, [r3] | r3 = *(r3);
0x0000b664 blx 0x5094 | fcn_00005094 ();
0x0000b668 ldr.w r3, [sb, 0x1c] | r3 = *((sb + 0x1c));
0x0000b66c mov r2, r3 | r2 = r3;
0x0000b66e ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x0000b672 cmp r1, r2 |
| if (r1 != r2) {
0x0000b674 beq 0xb694 |
0x0000b676 ldr.w r1, [sb, 0x18] | r1 = *((sb + 0x18));
0x0000b67a ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0000b67c adds r4, r1, 4 | r4 = r1 + 4;
0x0000b67e str r4, [r0] | *(r0) = r4;
0x0000b680 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000b682 ldr r4, [r1, 8] | r4 = *((r1 + 8));
0x0000b684 str r4, [r0, 4] | *((r0 + 4)) = r4;
0x0000b686 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x0000b688 ldr r4, [r3, 4] | r4 = *((r3 + 4));
0x0000b68a str r4, [r0] | *(r0) = r4;
0x0000b68c ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0000b68e str r0, [r1, 8] | *((r1 + 8)) = r0;
0x0000b690 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0000b692 str r2, [r3, 8] | *((r3 + 8)) = r2;
| }
| label_86:
0x0000b694 ldr.w r2, [fp, 8] | r2 = var_8h;
| }
| label_32:
0x0000b698 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b69c movs r5, 0 | r5 = 0;
0x0000b69e b 0xb506 | goto label_11;
| label_70:
0x0000b6a0 ldrd r3, r0, [sb, 8] | __asm ("ldrd r3, r0, [sb, 8]");
0x0000b6a4 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x0000b6a6 blx 0x4714 | loc_imp_apr_brigade_create ();
0x0000b6a8 invalid |
0x0000b6ac subs r4, 0x14 | r4 -= 0x14;
0x0000b6ae movs r1, 0 | r1 = 0;
0x0000b6b0 str.w r0, [sb, 0x18] | __asm ("str.w r0, [sb, 0x18]");
0x0000b6b4 b 0xb350 | goto label_14;
| label_99:
0x0000b6b6 ldr.w r3, [sb] | r3 = *(sb);
0x0000b6ba movw r1, 0x1bb | r1 = 0x1bb;
0x0000b6be ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b6c2 movs r5, 1 | r5 = 1;
0x0000b6c4 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000b6c6 movs r6, 0x1c | r6 = 0x1c;
0x0000b6c8 str r3, [sp, 0xc] | var_ch = r3;
0x0000b6ca ldr.w r3, [pc, 0x5e4] |
0x0000b6ce add r3, pc | r3 = 0x17384;
0x0000b6d0 str r3, [sp, 8] | var_sp_8h = r3;
0x0000b6d2 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0000b6d4 adds r0, 8 | r0 += 8;
0x0000b6d6 str r3, [sp, 4] | var_4h_2 = r3;
0x0000b6d8 movs r3, 0 | r3 = 0;
0x0000b6da str r3, [sp] | *(sp) = r3;
0x0000b6dc movs r3, 3 | r3 = 3;
0x0000b6de blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b6e2 ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b6e6 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b6ea b 0xb506 | goto label_11;
| label_81:
0x0000b6ec ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0000b6ee ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0000b6f0 cmp r3, 0 |
0x0000b6f2 beq.w 0xb52c |
| } while (r3 == 0);
0x0000b6f6 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b6f8 cmp r3, 0 |
| if (r3 >= 0) {
0x0000b6fa bge.w 0xb430 | goto label_15;
| }
0x0000b6fe b 0xb52c | goto label_16;
| label_93:
0x0000b700 movs r0, 9 | r0 = 9;
0x0000b702 movs r5, 0xc | r5 = 0xc;
| do {
0x0000b704 ldrb r3, [r4, r5] | r3 = *((r4 + r5));
0x0000b706 movs r1, 0 | r1 = 0;
0x0000b708 add r0, r4 | r0 += r4;
0x0000b70a movs r2, 0xa | r2 = 0xa;
0x0000b70c strb r1, [r4, r5] | *((r4 + r5)) = r1;
0x0000b70e str r3, [sp, 0x24] | var_24h = r3;
0x0000b710 blx 0x47cc | fcn_000047cc ();
0x0000b714 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000b716 str.w r0, [sb, 0x10] | __asm ("str.w r0, [sb, 0x10]");
0x0000b71a strb r3, [r4, r5] | *((r4 + r5)) = r3;
0x0000b71c movs r3, 1 | r3 = 1;
0x0000b71e str.w r3, [sb, 4] | __asm ("str.w r3, [sb, 4]");
0x0000b722 b 0xb486 | goto label_17;
| label_94:
0x0000b724 movs r0, 7 | r0 = 7;
0x0000b726 movs r5, 0xa | r5 = 0xa;
0x0000b728 b 0xb704 |
| } while (1);
| label_85:
0x0000b72a ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000b72e movs r6, 0x16 | r6 = 0x16;
0x0000b730 ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b734 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b738 b 0xb506 | goto label_11;
| if (r3 == 0) {
| label_95:
0x0000b73a cbnz r3, 0xb740 |
0x0000b73c ldr r3, [r1, 4] | r3 = *((r1 + 4));
| label_26:
0x0000b73e adds r3, 0x10 | r3 += 0x10;
| }
| label_97:
0x0000b740 ldr r5, [r3, 4] | r5 = *((r3 + 4));
0x0000b742 cmp r5, 6 |
0x0000b744 ite le |
| if (r5 > 6) {
0x0000b746 movle r5, 0 | r5 = 0;
| }
| if (r5 <= 6) {
0x0000b748 movgt r5, 1 | r5 = 1;
| }
0x0000b74a b 0xb58c | goto label_18;
| if (r1 == 0) {
| label_100:
0x0000b74c cbnz r1, 0xb752 |
0x0000b74e ldr r1, [r0, 4] | r1 = *((r0 + 4));
| label_28:
0x0000b750 adds r1, 0x10 | r1 += 0x10;
| }
| label_102:
0x0000b752 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0000b754 cmp r3, 6 |
0x0000b756 ite le |
| if (r3 > 6) {
0x0000b758 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x0000b75a movgt r3, 1 | r3 = 1;
| }
0x0000b75c b 0xb646 | goto label_19;
| if (r1 == 0) {
| label_74:
0x0000b75e cbnz r1, 0xb764 |
| label_35:
0x0000b760 ldr r1, [r0, 4] | r1 = *((r0 + 4));
| label_33:
0x0000b762 adds r1, 0x10 | r1 += 0x10;
| }
| label_76:
0x0000b764 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0000b766 cmp r3, 6 |
0x0000b768 ite le |
| if (r3 > 6) {
0x0000b76a movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x0000b76c movgt r3, 1 | r3 = 1;
| }
0x0000b76e b 0xb3ea | goto label_20;
| label_88:
0x0000b770 ldr.w r1, [sb] | r1 = *(sb);
0x0000b774 str r3, [sp, 4] | var_4h_2 = r3;
0x0000b776 ldr.w r3, [pc, 0x53c] |
0x0000b77a ldr.w r0, [pc, 0x53c] |
0x0000b77e str r1, [sp, 0xc] | var_ch = r1;
0x0000b780 mov.w r1, 0x288 | r1 = 0x288;
0x0000b784 add r3, pc | r3 = 0x1743e;
0x0000b786 str r6, [sp] | *(sp) = r6;
0x0000b788 str r3, [sp, 8] | var_sp_8h = r3;
0x0000b78a add r0, pc | r0 = 0x17448;
0x0000b78c movs r3, 9 | r3 = 9;
0x0000b78e blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b792 b 0xb4c4 | goto label_21;
| label_98:
0x0000b794 str r4, [sp, 0x10] | var_10h = r4;
0x0000b796 movs r6, 0x16 | r6 = 0x16;
0x0000b798 ldr.w r3, [sb] | r3 = *(sb);
0x0000b79c ldr.w r0, [pc, 0x51c] |
0x0000b7a0 str r1, [sp, 4] | var_4h_2 = r1;
0x0000b7a2 mov.w r1, 0x230 | r1 = 0x230;
0x0000b7a4 strb r4, [r1, 4] | *((r1 + 4)) = r4;
0x0000b7a6 str r3, [sp, 0xc] | var_ch = r3;
0x0000b7a8 ldr.w r3, [pc, 0x514] |
0x0000b7ac add r0, pc | r0 = 0x1746c;
0x0000b7ae add r3, pc | r3 = 0x17472;
0x0000b7b0 str r3, [sp, 8] | var_sp_8h = r3;
0x0000b7b2 movs r3, 0 | r3 = 0;
0x0000b7b4 str r3, [sp] | *(sp) = r3;
0x0000b7b6 movs r3, 7 | r3 = 7;
0x0000b7b8 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b7bc ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x0000b7c0 ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b7c4 ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000b7c8 b 0xb506 | goto label_11;
| label_68:
0x0000b7ca mov r6, sl | r6 = sl;
| label_65:
0x0000b7cc ldr r0, [r6, 8] | r0 = *((r6 + 8));
0x0000b7ce mov r1, r8 | r1 = r8;
0x0000b7d0 blx 0x4d90 | r0 = fcn_00004d90 ();
0x0000b7d4 mov r5, r0 | r5 = r0;
| label_89:
0x0000b7d6 ldr.w r2, [pc, 0x4ec] |
0x0000b7da add.w r1, sp, 0x2040 | r1 += arg_2040h;
0x0000b7de ldr.w r3, [pc, 0x4a8] | r3 = *(0xbc8a);
0x0000b7e2 adds r1, 0xc | r1 += 0xc;
0x0000b7e4 add r2, pc | r2 = 0x174ae;
0x0000b7e6 ldr r3, [r2, r3] | r3 = *(0x174ae);
0x0000b7e8 ldr r2, [r3] | r2 = *(0x174ae);
0x0000b7ea ldr r3, [r1] | r3 = *(r1);
0x0000b7ec eors r2, r3 | r2 ^= r3;
0x0000b7ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b7f2 bne.w 0xbc7e | goto label_105;
| }
0x0000b7f6 mov r0, r5 | r0 = r5;
0x0000b7f8 add.w sp, sp, 0x2040 |
0x0000b7fc add sp, 0x14 |
0x0000b7fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_103:
0x0000b802 str r4, [sp, 0x10] | var_10h = r4;
0x0000b804 movw r1, 0x1c1 | r1 = 0x1c1;
0x0000b808 ldr.w r3, [sb] | r3 = *(sb);
0x0000b80c str r0, [sp, 4] | var_4h_2 = r0;
0x0000b80e ldr.w r0, [pc, 0x4b8] |
0x0000b812 str r3, [sp, 0xc] | var_ch = r3;
0x0000b814 ldr.w r3, [pc, 0x4b4] |
0x0000b818 add r0, pc | r0 = 0x174e6;
0x0000b81a add r3, pc | r3 = 0x174ea;
0x0000b81c str r3, [sp, 8] | var_sp_8h = r3;
0x0000b81e movs r3, 0 | r3 = 0;
0x0000b820 str r3, [sp] | *(sp) = r3;
0x0000b822 movs r3, 7 | r3 = 7;
0x0000b824 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b828 ldr.w r3, [sb, 0x1c] | r3 = *((sb + 0x1c));
0x0000b82c cmp r3, 0 |
| if (r3 != 0) {
0x0000b82e bne.w 0xb656 | goto label_22;
| }
| label_104:
0x0000b832 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0000b836 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x0000b83a ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x0000b83c blx 0x4714 | loc_imp_apr_brigade_create ();
0x0000b83e invalid |
0x0000b842 movs r4, r3 | r4 = r3;
0x0000b844 b 0xb656 | goto label_22;
| label_92:
0x0000b846 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000b848 ldr r1, [r0, 0x10] | r1 = *((r0 + 0x10));
0x0000b84a cmp r1, 0 |
| if (r1 == 0) {
0x0000b84c beq.w 0xb4b2 | goto label_23;
| }
0x0000b850 ldrsb r1, [r1, r2] | r1 = *((r1 + r2));
0x0000b852 cmp r1, 0 |
| if (r1 >= 0) {
0x0000b854 bge.w 0xb51e | goto label_24;
| }
0x0000b858 b 0xb4b2 | goto label_23;
| label_77:
0x0000b85a str r4, [sp, 0x10] | var_10h = r4;
0x0000b85c mov.w r1, 0x1a6 | r1 = 0x1a6;
0x0000b860 ldr.w r3, [sb] | r3 = *(sb);
0x0000b864 ldr.w r0, [pc, 0x468] |
0x0000b868 str r3, [sp, 0xc] | var_ch = r3;
0x0000b86a ldr.w r3, [pc, 0x468] |
0x0000b86e add r0, pc | r0 = 0x17542;
0x0000b870 add r3, pc | r3 = 0x1754a;
0x0000b872 str r3, [sp, 8] | var_sp_8h = r3;
0x0000b874 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0000b878 str r3, [sp, 4] | var_4h_2 = r3;
0x0000b87a movs r3, 0 | r3 = 0;
0x0000b87c str r3, [sp] | *(sp) = r3;
0x0000b87e movs r3, 7 | r3 = 7;
0x0000b880 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000b884 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b888 blx 0x4748 | fcn_00004748 ();
0x0000b88c b 0xb3f8 | goto label_25;
| label_96:
0x0000b88e ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0000b890 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x0000b892 cmp r0, 0 |
| if (r0 == 0) {
0x0000b894 beq.w 0xb73e | goto label_26;
| }
0x0000b898 ldrsb r5, [r0, r2] | r5 = *((r0 + r2));
0x0000b89a cmp r5, 0 |
| if (r5 >= 0) {
0x0000b89c bge.w 0xb584 | goto label_27;
| }
0x0000b8a0 b 0xb73e | goto label_26;
| label_101:
0x0000b8a2 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x0000b8a4 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0000b8a6 cmp r3, 0 |
| if (r3 == 0) {
0x0000b8a8 beq.w 0xb750 | goto label_28;
| }
0x0000b8aa add r7, sp, 0x148 | r7 = sp + 0x148;
0x0000b8ac ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b8ae cmp r3, 0 |
| if (r3 >= 0) {
0x0000b8b0 bge.w 0xb63e | goto label_29;
| }
0x0000b8b4 b 0xb750 | goto label_28;
| label_79:
0x0000b8b6 cmp r2, 0 |
| if (r2 < 0) {
0x0000b8b8 blt.w 0xbaca | goto label_106;
| }
0x0000b8bc cmp r0, 0 |
| if (r0 == 0) {
0x0000b8be beq.w 0xbb96 | goto label_107;
| }
0x0000b8c2 ldr r3, [r0] | r3 = *(r0);
0x0000b8c4 cmp r3, 0 |
| if (r3 == 0) {
0x0000b8c6 beq.w 0xbad0 | goto label_45;
| }
0x0000b8ca ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000b8cc cmp r3, 0 |
| if (r3 < 0) {
0x0000b8ce blt.w 0xbad0 | goto label_45;
| }
| label_44:
0x0000b8d2 cmp r3, 7 |
0x0000b8d4 ite le |
| if (r3 > 7) {
0x0000b8d6 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x0000b8d8 movgt r3, 1 | r3 = 1;
| }
| label_38:
0x0000b8da cmp r3, 0 |
| if (r3 != 0) {
0x0000b8dc bne.w 0xbb74 | goto label_108;
| }
| label_43:
0x0000b8e0 ldrd r3, r5, [sb, 0x10] | __asm ("ldrd r3, r5, [sb, 0x10]");
0x0000b8e4 ldr.w r0, [sb, 0xc] | r0 = *((sb + 0xc));
0x0000b8e8 str r3, [sp, 0x24] | var_24h = r3;
0x0000b8ea cmp r5, 0 |
| if (r5 == 0) {
0x0000b8ec beq.w 0xbbe8 | goto label_109;
| }
0x0000b8ee strh r4, [r7, 0xa] | *((r7 + 0xa)) = r4;
0x0000b8f0 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0000b8f2 blx 0x4a70 | fcn_00004a70 ();
0x0000b8f6 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0000b8f8 mov ip, r0 |
0x0000b8fa cmp r2, 0 |
| if (r2 <= 0) {
0x0000b8fc ble 0xb954 | goto label_110;
| }
0x0000b8fe str.w sb, [sp, 0x30] | __asm ("str.w sb, [var_30h]");
0x0000b902 mov sb, r0 | sb = r0;
0x0000b904 str r7, [sp, 0x34] | var_34h = r7;
| label_30:
0x0000b906 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x0000b908 movs r1, 0x3a | r1 = 0x3a;
0x0000b90a ldr.w r4, [r3, r6, lsl 2] | offset_1 = r6 << 2;
| r4 = *((r3 + offset_1));
0x0000b90e mov r0, r4 | r0 = r4;
0x0000b910 blx 0x5298 | r0 = fcn_00005298 ();
0x0000b914 cmp r0, 0 |
| if (r0 == 0) {
0x0000b916 beq.w 0xbb10 | goto label_111;
| }
0x0000b91a mov.w r3, 0 | r3 = 0;
0x0000b91e mov r7, r0 | r7 = r0;
0x0000b920 strb r3, [r7], 1 | *(r7) = r3;
| r7++;
0x0000b924 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0000b926 cmp r3, 0x20 |
0x0000b928 it ne |
| if (r3 != 0x20) {
0x0000b92a cmpne r3, 9 | __asm ("cmpne r3, 9");
| }
| if (r3 != 0x20) {
0x0000b92c bne 0xb93a | goto label_112;
| }
| do {
0x0000b92e ldrb r3, [r7, 1]! | r3 = *((r7 += 1));
0x0000b932 cmp r3, 9 |
0x0000b934 it ne |
| if (r3 != 9) {
0x0000b936 cmpne r3, 0x20 | __asm ("cmpne r3, 0x20");
| }
0x0000b938 beq 0xb92e |
| } while (r3 == 9);
| label_112:
0x0000b93a mov r0, r4 | r0 = r4;
0x0000b93c bl 0x1cee0 | r0 = fcn_0001cee0 (r0);
0x0000b940 cmp r0, 0 |
| if (r0 == 0) {
0x0000b942 beq.w 0xbaf2 | goto label_113;
| }
| label_40:
0x0000b946 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0000b948 adds r6, 1 | r6++;
0x0000b94a cmp r6, r3 |
| if (r6 < r3) {
0x0000b94c blt 0xb906 | goto label_30;
| }
0x0000b94e mov ip, sb |
0x0000b950 ldrd sb, r7, [sp, 0x30] | __asm ("ldrd sb, r7, [var_30h]");
| label_110:
0x0000b954 mov r4, ip | r4 = ip;
| label_42:
0x0000b956 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0000b95a mov r1, r4 | r1 = r4;
0x0000b95c ldr.w r3, [sb, 0xc] | r3 = *((sb + 0xc));
0x0000b960 movs r2, 0 | r2 = 0;
0x0000b962 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000b964 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x0000b968 str r3, [sp, 8] | var_sp_8h = r3;
0x0000b96a bl 0xe56c | r0 = fcn_0000e56c (r0, r1, r2, r3);
0x0000b96e mov r4, r0 | r4 = r0;
0x0000b970 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b972 movs r0, r3 | r0 = r3;
0x0000b974 blx 0x4748 | fcn_00004748 ();
0x0000b978 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0000b97c mov r1, r4 | r1 = r4;
0x0000b97e ldr r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x0000b980 bl 0xe518 | fcn_0000e518 (r0, r1);
0x0000b984 ldr.w r2, [sb, 0x18] | r2 = *((sb + 0x18));
0x0000b988 mov r3, r0 | r3 = r0;
0x0000b98a ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x0000b98e ldr r0, [r1, 0x40] | r0 = *((r1 + 0x40));
0x0000b990 adds r1, r2, 4 | r1 = r2 + 4;
0x0000b992 str r1, [r3] | *(r3) = r1;
0x0000b994 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x0000b996 str r1, [r3, 4] | *((r3 + 4)) = r1;
0x0000b998 ldr r1, [r2, 8] | r1 = *((r2 + 8));
0x0000b99a str r3, [r1] | *(r1) = r3;
0x0000b99c str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0000b99e blx 0x48e0 | fcn_000048e0 ();
0x0000b9a2 ldr.w r1, [sb, 0x18] | r1 = *((sb + 0x18));
0x0000b9a6 mov r3, r0 | r3 = r0;
0x0000b9a8 ldr.w r0, [sl, 8] | r0 = *((sl + 8));
0x0000b9ac adds r2, r1, 4 | r2 = r1 + 4;
0x0000b9ae str r2, [r3] | *(r3) = r2;
0x0000b9b0 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x0000b9b2 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x0000b9b4 ldr r2, [r1, 8] | r2 = *((r1 + 8));
0x0000b9b6 str r3, [r2] | *(r2) = r3;
0x0000b9b8 str r3, [r1, 8] | *((r1 + 8)) = r3;
0x0000b9ba blx 0x4d90 | r0 = fcn_00004d90 ();
0x0000b9be mov r6, r0 | r6 = r0;
0x0000b9c0 ldr.w r0, [sb, 0x18] | r0 = *((sb + 0x18));
0x0000b9c4 blx 0x4748 | fcn_00004748 ();
0x0000b9c8 movs r3, 0 | r3 = 0;
0x0000b9ca ldr.w r0, [sb, 0x14] | r0 = *((sb + 0x14));
0x0000b9ce str.w r3, [sb, 4] | __asm ("str.w r3, [sb, 4]");
0x0000b9d2 blx 0x4bac | memmove (r0, r1, r2);
0x0000b9d6 ldr r0, [r4] | r0 = *(r4);
0x0000b9d8 ldr.w r1, [sb, 8] | r1 = *((sb + 8));
0x0000b9dc cmp r0, 0xc7 |
0x0000b9de itt gt |
| if (r0 <= 0xc7) {
0x0000b9e0 ldrgt r2, [sp, 0x28] | r2 = var_28h;
| }
| if (r0 <= 0xc7) {
0x0000b9e2 movgt r3, 1 | r3 = 1;
| }
0x0000b9e4 ldr r4, [r1, 0x60] | r4 = *((r1 + 0x60));
0x0000b9e6 it gt |
| if (r0 <= 0xc7) {
0x0000b9e8 strgt r3, [r2, 0x50] | *((r2 + 0x50)) = r3;
| }
0x0000b9ea ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000b9ee cmp r2, 0 |
| if (r2 < 0) {
0x0000b9f0 blt.w 0xbafe | goto label_114;
| }
0x0000b9f4 cmp r4, 0 |
| if (r4 == 0) {
0x0000b9f6 beq.w 0xbbf2 | goto label_115;
| }
0x0000b9fa ldr r3, [r4] | r3 = *(r4);
0x0000b9fc cmp r3, 0 |
| if (r3 == 0) {
0x0000b9fe beq.w 0xbb04 | goto label_48;
| }
0x0000ba02 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000ba04 cmp r3, 0 |
| if (r3 < 0) {
0x0000ba06 blt 0xbb04 | goto label_48;
| }
| label_47:
0x0000ba08 cmp r3, 6 |
0x0000ba0a ite le |
| if (r3 > 6) {
0x0000ba0c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x0000ba0e movgt r3, 1 | r3 = 1;
| }
| label_41:
0x0000ba10 subs r5, r6, 0 | r5 = r6 - 0;
0x0000ba12 it ne |
| if (r5 == r6) {
0x0000ba14 movne r5, 1 | r5 = 1;
| }
0x0000ba16 cmp r3, 0 |
| if (r3 != 0) {
0x0000ba18 bne.w 0xbb48 | goto label_116;
| }
0x0000ba1c ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000ba20 b 0xb506 | goto label_11;
| label_64:
0x0000ba22 ldr r3, [pc, 0x2b4] |
0x0000ba24 add r7, sp, 0x4c | r7 += var_4ch;
0x0000ba26 mov.w r1, 0x1000 | r1 = 0x1000;
0x0000ba2a mov r0, r7 | r0 = r7;
0x0000ba2c str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000ba30 add r3, pc | r3 = 0x1770e;
0x0000ba32 mov r2, r3 | r2 = r3;
0x0000ba34 bl 0x1caac | fcn_0001caac (r0, r1, r2, r3, r4);
0x0000ba38 ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000ba3c mov ip, r0 |
0x0000ba3e ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0000ba40 cmp r2, 0 |
0x0000ba42 ldr r1, [r0, 0x60] | r1 = *((r0 + 0x60));
| if (r2 < 0) {
0x0000ba44 blt 0xbae0 | goto label_117;
| }
0x0000ba46 cmp r1, 0 |
| if (r1 == 0) {
0x0000ba48 beq.w 0xbc04 | goto label_118;
| }
0x0000ba4c ldr r3, [r1] | r3 = *(r1);
0x0000ba4e cmp r3, 0 |
| if (r3 == 0) {
0x0000ba50 beq 0xbae6 | goto label_50;
| }
0x0000ba52 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000ba54 cmp r3, 0 |
| if (r3 < 0) {
0x0000ba56 blt 0xbae6 | goto label_50;
| }
| label_49:
0x0000ba58 cmp r3, 8 |
0x0000ba5a ite le |
| if (r3 > 8) {
0x0000ba5c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000ba5e movgt r3, 1 | r3 = 1;
| }
| label_39:
0x0000ba60 cmp r3, 0 |
| if (r3 == 0) {
0x0000ba62 beq.w 0xb2be | goto label_31;
| }
0x0000ba66 cmp.w ip, 0 |
| if (ip == 0) {
0x0000ba6a bne 0xba70 |
0x0000ba6c ldr r7, [pc, 0x26c] |
0x0000ba6e add r7, pc | r7 = 0x1774e;
| }
0x0000ba70 ldr r3, [pc, 0x26c] |
0x0000ba72 mov.w r1, 0x268 | r1 = 0x268;
0x0000ba76 str r0, [sp, 4] | var_4h_2 = r0;
0x0000ba78 ldr r0, [pc, 0x268] |
0x0000ba7a add r3, pc | r3 = 0x1775e;
0x0000ba7c str r7, [sp, 0x14] | var_14h = r7;
0x0000ba7e str r3, [sp, 0x10] | var_10h = r3;
0x0000ba80 ldr r3, [pc, 0x264] |
0x0000ba82 add r0, pc | r0 = 0x1776a;
0x0000ba84 add r3, pc | r3 = 0x17770;
0x0000ba86 str r3, [sp, 0xc] | var_ch = r3;
0x0000ba88 ldr r3, [pc, 0x260] |
0x0000ba8a add r3, pc | r3 = 0x1777a;
0x0000ba8c str r3, [sp, 8] | var_sp_8h = r3;
0x0000ba8e movs r3, 0 | r3 = 0;
0x0000ba90 str r3, [sp] | *(sp) = r3;
0x0000ba92 movs r3, 9 | r3 = 9;
0x0000ba94 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000ba98 ldr r0, [r6, 0x10] | r0 = *((r6 + 0x10));
0x0000ba9a b 0xb2be | goto label_31;
| label_91:
0x0000ba9c ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000baa0 movs r6, 0 | r6 = 0;
0x0000baa2 b 0xb698 | goto label_32;
| label_75:
0x0000baa4 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x0000baa6 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0000baa8 cmp r3, 0 |
| if (r3 == 0) {
0x0000baaa beq.w 0xb762 | goto label_33;
| }
0x0000baae ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000bab0 cmp r3, 0 |
| if (r3 >= 0) {
0x0000bab2 bge.w 0xb3e2 | goto label_34;
| }
0x0000bab6 b 0xb760 | goto label_35;
| label_63:
0x0000bab8 ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0000baba ldr r1, [r2, 0x10] | r1 = *((r2 + 0x10));
| if (r1 == 0) {
0x0000babc cbz r1, 0xbac6 | goto label_119;
| }
0x0000babe ldrsb r3, [r1, r3] | r3 = *((r1 + r3));
0x0000bac0 cmp r3, 0 |
| if (r3 >= 0) {
0x0000bac2 bge.w 0xb2ae | goto label_36;
| }
| do {
| label_119:
0x0000bac6 adds r2, 0x10 | r2 += 0x10;
0x0000bac8 b 0xb4e2 | goto label_37;
| label_106:
0x0000baca cmp r0, 0 |
| if (r0 == 0) {
0x0000bacc beq.w 0xbc6a | goto label_120;
| }
| label_45:
0x0000bad0 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0000bad2 cmp r3, 7 |
0x0000bad4 ite le |
| if (r3 > 7) {
0x0000bad6 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x0000bad8 movgt r3, 1 | r3 = 1;
| }
0x0000bada b 0xb8da | goto label_38;
| label_90:
0x0000badc ldr r2, [r0, 4] | r2 = *((r0 + 4));
0x0000bade b 0xbac6 |
| } while (1);
| label_117:
0x0000bae0 cmp r1, 0 |
| if (r1 == 0) {
0x0000bae2 beq.w 0xbc12 | goto label_121;
| }
| label_50:
0x0000bae6 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0000bae8 cmp r3, 8 |
0x0000baea ite le |
| if (r3 > 8) {
0x0000baec movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0000baee movgt r3, 1 | r3 = 1;
| }
0x0000baf0 b 0xba60 | goto label_39;
| label_113:
0x0000baf2 mov r2, r7 | r2 = r7;
0x0000baf4 mov r1, r4 | r1 = r4;
0x0000baf6 mov r0, sb | r0 = sb;
0x0000baf8 blx 0x4d5c | stack_chk_fail ();
0x0000bafc b 0xb946 | goto label_40;
| label_114:
0x0000bafe cmp r4, 0 |
| if (r4 == 0) {
0x0000bb00 beq.w 0xbc18 | goto label_122;
| }
| label_48:
0x0000bb04 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000bb06 cmp r3, 6 |
0x0000bb08 ite le |
| if (r3 > 6) {
0x0000bb0a movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x0000bb0c movgt r3, 1 | r3 = 1;
| }
0x0000bb0e b 0xba10 | goto label_41;
| label_111:
0x0000bb10 ldr.w sb, [sp, 0x30] | sb = var_30h;
0x0000bb14 mov r1, r4 | r1 = r4;
0x0000bb16 ldr r3, [pc, 0x1d8] |
0x0000bb18 mov r4, r0 | r4 = r0;
0x0000bb1a strd r6, r1, [sp, 0x10] | __asm ("strd r6, r1, [sp, 0x10]");
0x0000bb1e movw r1, 0x1e7 | r1 = 0x1e7;
0x0000bb22 ldr.w r2, [sb] | r2 = *(sb);
0x0000bb26 add r3, pc | r3 = 0x1781c;
0x0000bb28 ldr r0, [pc, 0x1c8] |
0x0000bb2a ldr r7, [sp, 0x34] | r7 = var_34h;
0x0000bb2c strd r3, r2, [sp, 8] | __asm ("strd r3, r2, [sp, 8]");
0x0000bb30 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x0000bb34 add r0, pc | r0 = 0x1782c;
0x0000bb36 ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000bb3a str r3, [sp, 4] | var_4h_2 = r3;
0x0000bb3c movs r3, 0x16 | r3 = 0x16;
0x0000bb3e str r3, [sp] | *(sp) = r3;
0x0000bb40 movs r3, 4 | r3 = 4;
0x0000bb42 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000bb46 b 0xb956 | goto label_42;
| label_116:
0x0000bb48 str r0, [sp, 0x10] | var_10h = r0;
0x0000bb4a ldr.w r3, [sb] | r3 = *(sb);
0x0000bb4e ldr r0, [pc, 0x1a8] |
0x0000bb50 str r1, [sp, 4] | var_4h_2 = r1;
0x0000bb52 movw r1, 0x215 | r1 = 0x215;
0x0000bb56 str r3, [sp, 0xc] | var_ch = r3;
0x0000bb58 ldr r3, [pc, 0x1a0] |
0x0000bb5a add r0, pc | r0 = 0x17858;
0x0000bb5c add r3, pc | r3 = 0x1785c;
0x0000bb5e str r3, [sp, 8] | var_sp_8h = r3;
0x0000bb60 movs r3, 0 | r3 = 0;
0x0000bb62 str r3, [sp] | *(sp) = r3;
0x0000bb64 movs r3, 7 | r3 = 7;
0x0000bb66 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000bb6a ldr.w r2, [fp, 8] | r2 = var_8h;
0x0000bb6c movs r0, 8 | r0 = 8;
0x0000bb6e ldr.w r3, [sl, 0x10] | r3 = *((sl + 0x10));
0x0000bb72 b 0xb506 | goto label_11;
| label_108:
0x0000bb74 ldr.w r3, [sb] | r3 = *(sb);
0x0000bb78 ldr r0, [pc, 0x184] |
0x0000bb7a str r1, [sp, 4] | var_4h_2 = r1;
0x0000bb7c movw r1, 0x24f | r1 = 0x24f;
0x0000bb80 str r3, [sp, 0xc] | var_ch = r3;
0x0000bb82 ldr r3, [pc, 0x180] |
0x0000bb84 add r0, pc | r0 = 0x17888;
0x0000bb86 add r3, pc | r3 = 0x17890;
0x0000bb88 str r3, [sp, 8] | var_sp_8h = r3;
0x0000bb8a movs r3, 0 | r3 = 0;
0x0000bb8c str r3, [sp] | *(sp) = r3;
0x0000bb8e movs r3, 8 | r3 = 8;
0x0000bb90 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x0000bb94 b 0xb8e0 | goto label_43;
| label_107:
0x0000bb96 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0000bb98 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
| if (r3 == 0) {
0x0000bb9a cbz r3, 0xbba4 | goto label_53;
| }
0x0000bb9c ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000bb9e cmp r3, 0 |
| if (r3 >= 0) {
0x0000bba0 bge.w 0xb8d2 | goto label_44;
| }
| label_53:
0x0000bba4 adds r0, 0x10 | r0 += 0x10;
0x0000bba6 b 0xbad0 | goto label_45;
| label_66:
0x0000bba8 movs r1, 0x20 | r1 = 0x20;
0x0000bbaa ldr r0, [r0] | r0 = *(r0);
0x0000bbac blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x0000bbb0 mov r1, r4 | r1 = r4;
0x0000bbb2 movs r2, 0x20 | r2 = 0x20;
0x0000bbb4 blx 0x4aa0 | fcn_00004aa0 ();
0x0000bbb8 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0000bbba mov r4, r0 | r4 = r0;
0x0000bbbc ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000bbbe ldr r1, [pc, 0x148] |
0x0000bbc0 ldr r0, [r3] | r0 = *(r3);
0x0000bbc2 ldr r3, [r2, 0x1c] | r3 = *((r2 + 0x1c));
0x0000bbc4 add r1, pc | r1 = 0x178d2;
0x0000bbc6 ldr r2, [r2] | r2 = *(r2);
0x0000bbc8 blx 0x49f8 | fcn_000049f8 ();
0x0000bbcc ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0000bbce movs r2, 4 | r2 = 4;
0x0000bbd0 str r0, [r4] | *(r4) = r0;
0x0000bbd2 movs r1, 0xa | r1 = 0xa;
0x0000bbd4 ldr r0, [r3] | r0 = *(r3);
0x0000bbd6 strd r7, r3, [r4, 4] | __asm ("strd r7, r3, [r4, 4]");
0x0000bbda str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x0000bbdc blx 0x4ba0 | nghttp2_session_callbacks_set_on_frame_send_callback ();
0x0000bbe0 str r0, [r4, 0x14] | *((r4 + 0x14)) = r0;
0x0000bbe2 str r4, [r6, 4] | *((r6 + 4)) = r4;
0x0000bbe4 b.w 0xb2d6 | goto label_46;
| label_109:
0x0000bbe8 mov r1, r5 | r1 = r5;
0x0000bbea blx 0x4a70 | r0 = fcn_00004a70 ();
0x0000bbee mov r4, r0 | r4 = r0;
0x0000bbf0 b 0xb956 | goto label_42;
| label_115:
0x0000bbf2 ldr r4, [r1, 4] | r4 = *((r1 + 4));
0x0000bbf4 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
| if (r3 == 0) {
0x0000bbf6 cbz r3, 0xbc00 | goto label_51;
| }
0x0000bbf8 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000bbfa cmp r3, 0 |
| if (r3 >= 0) {
0x0000bbfc bge.w 0xba08 | goto label_47;
| }
| label_51:
0x0000bc00 adds r4, 0x10 | r4 += 0x10;
0x0000bc02 b 0xbb04 | goto label_48;
| label_118:
0x0000bc04 ldr r1, [r0, 4] | r1 = *((r0 + 4));
0x0000bc06 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
| if (r3 == 0) {
0x0000bc08 cbz r3, 0xbc14 | goto label_123;
| }
0x0000bc0a ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0000bc0c cmp r3, 0 |
| if (r3 >= 0) {
0x0000bc0e bge.w 0xba58 | goto label_49;
| }
| label_121:
0x0000bc12 ldr r1, [r0, 4] | r1 = *((r0 + 4));
| label_123:
0x0000bc14 adds r1, 0x10 | r1 += 0x10;
0x0000bc16 b 0xbae6 | goto label_50;
| label_122:
0x0000bc18 ldr r4, [r1, 4] | r4 = *((r1 + 4));
0x0000bc1a b 0xbc00 | goto label_51;
| label_67:
0x0000bc1c ldr r5, [sp, 0x28] | r5 = var_28h;
0x0000bc1e mov.w r1, 0x1f4 | r1 = 0x1f4;
0x0000bc22 ldr r0, [r5, 0x54] | r0 = *((r5 + 0x54));
0x0000bc24 blx 0x4c38 | fcn_00004c38 ();
0x0000bc28 movs r2, 1 | r2 = 1;
0x0000bc2a mov r7, r0 | r7 = r0;
0x0000bc2c ldr r1, [r6, 0x10] | r1 = *((r6 + 0x10));
0x0000bc2e ldr r0, [r5, 0x24] | r0 = *((r5 + 0x24));
0x0000bc30 bl 0x124d0 | fcn_000124d0 (r0, r1, r2);
0x0000bc34 cmp.w r7, 0x190 |
0x0000bc38 mov r5, r0 | r5 = r0;
0x0000bc3a mov r1, r5 | r1 = r5;
0x0000bc3c ite ge |
| if (r7 < 0x190) {
0x0000bc3e movge r0, r7 | r0 = r7;
| }
| if (r7 >= 0x190) {
0x0000bc40 movlt r0, 0x1f4 | r0 = 0x1f4;
| }
0x0000bc44 blx 0x4910 | fcn_00004910 ();
0x0000bc48 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0000bc4a mov r1, r5 | r1 = r5;
0x0000bc4c ldr r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x0000bc4e blx 0x5138 | fcn_00005138 ();
0x0000bc52 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000bc54 str r3, [r0] | *(r0) = r3;
0x0000bc56 ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x0000bc5a str r2, [r0, 4] | *((r0 + 4)) = r2;
0x0000bc5c ldr.w r2, [r8, 8] | r2 = *((r8 + 8));
0x0000bc60 str r0, [r2] | *(r2) = r0;
0x0000bc62 str.w r0, [r8, 8] | __asm ("str.w r0, [r8, 8]");
0x0000bc66 b.w 0xb2f4 | goto label_52;
| label_120:
0x0000bc6a ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x0000bc6c b 0xbba4 | goto label_53;
| label_61:
0x0000bc6e ldr r1, [pc, 0x9c] |
0x0000bc70 movw r2, 0x267 | r2 = 0x267;
0x0000bc74 ldr r0, [pc, 0x98] |
0x0000bc76 add r1, pc | r1 = 0x17988;
0x0000bc78 add r0, pc | r0 = 0x1798c;
0x0000bc7a blx 0x4e40 | loc_imp_apr_socket_create ();
| label_105:
0x0000bc7e blx 0x4d80 | loc_imp_apr_file_read ();
0x0000bc82 nop |
0x0000bc84 ldm r0!, {r1, r2, r4, r5, r6, r7} | r1 = *(r0!);
| r2 = *((r0! + 4));
| r4 = *((r0! + 8));
| r5 = *((r0! + 12));
| r6 = *((r0! + 16));
| r7 = *((r0! + 20));
0x0000bc86 movs r1, r0 | r1 = r0;
0x0000bc88 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0000bc8a movs r0, r0 |
0x0000bc8c ldm r0!, {r1, r2, r3, r4, r6, r7} | r1 = *(r0!);
| r2 = *((r0! + 4));
| r3 = *((r0! + 8));
| r4 = *((r0! + 12));
| r6 = *((r0! + 16));
| r7 = *((r0! + 20));
0x0000bc8e movs r1, r0 | r1 = r0;
0x0000bc90 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
0x0000bc92 movs r0, r0 |
0x0000bc94 lsls r4, r6, 0x11 | r4 = r6 << 0x11;
0x0000bc96 movs r0, r0 |
0x0000bc98 ldr r1, [pc, 0x98] | r1 = *(0xbd34);
0x0000bc9a movs r1, r0 | r1 = r0;
0x0000bc9c subs r4, 0xc | r4 -= 0xc;
0x0000bc9e movs r1, r0 | r1 = r0;
0x0000bca0 ldr r0, [pc, 0] | r0 = *(0xbca4);
0x0000bca2 movs r1, r0 | r1 = r0;
0x0000bca4 invalid |
| }
; 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 @ 0xd120 */
| #include <stdint.h>
|
; (fcn) fcn.0000d120 () | uint32_t fcn_0000d120 (uint32_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0000d120 vmul.i8 d2, d0, d2 | __asm ("vmul.i8 d2, d0, d2");
0x0000d124 strh r7, [r4, 4] | *((r4 + 4)) = r7;
| /* switch table (19 cases) at 0xd12a */
0x0000d126 tbb [pc, r1] | __asm ("tbb [0x0000d12c]");
0x0000d13e ldrd r0, r1, [r0, 0x60] | __asm ("ldrd r0, r1, [r0, 0x60]");
0x0000d142 cmp.w r1, -1 |
0x0000d146 it eq |
| if (r1 == -1) {
0x0000d148 cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| }
| if (r1 == -1) {
0x0000d14c beq.w 0xd26a | goto label_2;
| }
0x0000d14e strh r5, [r1, 4] | *((r1 + 4)) = r5;
| label_1:
0x0000d150 bx lr | return;
0x0000d152 ldr r0, [r0, 0x5c] | r0 = *((r0 + 0x5c));
0x0000d154 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000d156 bne 0xd15e | goto label_0;
| }
0x0000d158 ldr r3, [pc, 0x120] |
0x0000d15a add r3, pc | r3 = 0x1a3da;
0x0000d15c ldr r0, [r3, 0x5c] | r0 = *(0x1a436);
| do {
| label_0:
0x0000d15e asrs r1, r0, 0x1f | r1 = r0 >> 0x1f;
0x0000d160 bx lr | return;
0x0000d162 ldr r0, [r0, 0x58] | r0 = *((r0 + 0x58));
0x0000d164 adds r2, r0, 1 | r2 = r0 + 1;
0x0000d166 bne 0xd15e |
| } while (r2 != r0);
0x0000d168 ldr r3, [pc, 0x114] |
0x0000d16a add r3, pc | r3 = 0x1a3ee;
0x0000d16c ldr r0, [r3, 0x58] | r0 = *(0x1a446);
0x0000d16e b 0xd15e | goto label_0;
0x0000d170 ldr r0, [r0, 0x54] | r0 = *((r0 + 0x54));
0x0000d172 adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 != r0) {
0x0000d174 bne 0xd15e | goto label_0;
| }
0x0000d176 ldr r3, [pc, 0x10c] |
0x0000d178 add r3, pc | r3 = 0x1a402;
0x0000d17a ldr r0, [r3, 0x54] | r0 = *(0x1a456);
0x0000d17c b 0xd15e | goto label_0;
0x0000d17e ldr r0, [r0, 0x50] | r0 = *((r0 + 0x50));
0x0000d180 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000d182 bne 0xd15e | goto label_0;
| }
0x0000d184 ldr r3, [pc, 0x100] |
0x0000d186 add r3, pc | r3 = 0x1a412;
0x0000d188 ldr r0, [r3, 0x50] | r0 = *(0x1a462);
0x0000d18a b 0xd15e | goto label_0;
0x0000d18c ldr r0, [r0, 0x48] | r0 = *((r0 + 0x48));
0x0000d18e adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 != r0) {
0x0000d190 bne 0xd15e | goto label_0;
| }
0x0000d192 ldr r3, [pc, 0xf8] |
0x0000d194 add r3, pc | r3 = 0x1a426;
0x0000d196 ldr r0, [r3, 0x48] | r0 = *(0x1a46e);
0x0000d198 b 0xd15e | goto label_0;
0x0000d19a ldr r0, [r0, 0x44] | r0 = *((r0 + 0x44));
0x0000d19c adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 != r0) {
0x0000d19e bne 0xd15e | goto label_0;
| }
0x0000d1a0 ldr r3, [pc, 0xec] |
0x0000d1a2 add r3, pc | r3 = 0x1a436;
0x0000d1a4 ldr r0, [r3, 0x44] | r0 = *(0x1a47a);
0x0000d1a6 b 0xd15e | goto label_0;
0x0000d1a8 ldr r0, [r0, 0x3c] | r0 = *((r0 + 0x3c));
0x0000d1aa adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000d1ac bne 0xd15e | goto label_0;
| }
0x0000d1ae ldr r3, [pc, 0xe4] |
0x0000d1b0 add r3, pc | r3 = 0x1a44a;
0x0000d1b2 ldr r0, [r3, 0x3c] | r0 = *(0x1a486);
0x0000d1b4 b 0xd15e | goto label_0;
0x0000d1b6 ldr r0, [r0, 0x38] | r0 = *((r0 + 0x38));
0x0000d1b8 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 != r0) {
0x0000d1ba bne 0xd15e | goto label_0;
| }
0x0000d1bc ldr r3, [pc, 0xd8] |
0x0000d1be add r3, pc | r3 = 0x1a45a;
0x0000d1c0 ldr r0, [r3, 0x38] | r0 = *(0x1a492);
0x0000d1c2 b 0xd15e | goto label_0;
0x0000d1c4 ldrd r0, r1, [r0, 0x30] | __asm ("ldrd r0, r1, [r0, 0x30]");
0x0000d1c8 cmp.w r1, -1 |
0x0000d1cc it eq |
| if (r1 != -1) {
0x0000d1ce cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| goto label_3;
| }
| if (r1 != -1) {
| label_3:
0x0000d1d2 bne 0xd150 | goto label_1;
| }
0x0000d1d4 ldr r3, [pc, 0xc4] |
0x0000d1d6 add r3, pc | r3 = 0x1a476;
0x0000d1d8 ldrd r0, r1, [r3, 0x30] | __asm ("ldrd r0, r1, [r3, 0x30]");
0x0000d1dc bx lr | return r0;
0x0000d1de ldr r0, [r0, 0x2c] | r0 = *((r0 + 0x2c));
0x0000d1e0 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000d1e2 bne 0xd15e | goto label_0;
| }
0x0000d1e4 ldr r3, [pc, 0xb8] |
0x0000d1e6 add r3, pc | r3 = 0x1a48a;
0x0000d1e8 ldr r0, [r3, 0x2c] | r0 = *(0x1a4b6);
0x0000d1ea b 0xd15e | goto label_0;
0x0000d1ec ldr r0, [r0, 0x28] | r0 = *((r0 + 0x28));
0x0000d1ee adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 != r0) {
0x0000d1f0 bne 0xd15e | goto label_0;
| }
0x0000d1f2 ldr r3, [pc, 0xb0] |
0x0000d1f4 add r3, pc | r3 = 0x1a49e;
0x0000d1f6 ldr r0, [r3, 0x28] | r0 = *(0x1a4c6);
0x0000d1f8 b 0xd15e | goto label_0;
0x0000d1fa ldr r0, [r0, 0x24] | r0 = *((r0 + 0x24));
0x0000d1fc adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 != r0) {
0x0000d1fe bne 0xd15e | goto label_0;
| }
0x0000d200 ldr r3, [pc, 0xa4] |
0x0000d202 add r3, pc | r3 = 0x1a4ae;
0x0000d204 ldr r0, [r3, 0x24] | r0 = *(0x1a4d2);
0x0000d206 b 0xd15e | goto label_0;
0x0000d208 ldr r0, [r0, 0x20] | r0 = *((r0 + 0x20));
0x0000d20a adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 != r0) {
0x0000d20c bne 0xd15e | goto label_0;
| }
0x0000d20e ldr r3, [pc, 0x9c] |
0x0000d210 add r3, pc | r3 = 0x1a4c2;
0x0000d212 ldr r0, [r3, 0x20] | r0 = *(0x1a4e2);
0x0000d214 b 0xd15e | goto label_0;
0x0000d216 ldrd r0, r1, [r0, 0x18] | __asm ("ldrd r0, r1, [r0, 0x18]");
0x0000d21a cmp.w r1, -1 |
0x0000d21e it eq |
| if (r1 != -1) {
0x0000d220 cmpeq r0, -1 | __asm ("cmpeq r0, -1");
| goto label_4;
| }
| if (r1 != -1) {
| label_4:
0x0000d224 bne 0xd150 | goto label_1;
| }
0x0000d226 ldr r3, [pc, 0x88] |
0x0000d228 add r3, pc | r3 = 0x1a4de;
0x0000d22a ldrd r0, r1, [r3, 0x18] | __asm ("ldrd r0, r1, [r3, 0x18]");
0x0000d22e bx lr | return r0;
0x0000d230 ldr r0, [r0, 0x10] | r0 = *((r0 + 0x10));
0x0000d232 adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000d234 bne 0xd15e | goto label_0;
| }
0x0000d236 ldr r3, [pc, 0x7c] |
0x0000d238 add r3, pc | r3 = 0x1a4f2;
0x0000d23a ldr r0, [r3, 0x10] | r0 = *(0x1a502);
0x0000d23c b 0xd15e | goto label_0;
0x0000d23e ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x0000d240 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 != r0) {
0x0000d242 bne 0xd15e | goto label_0;
| }
0x0000d244 ldr r3, [pc, 0x70] |
0x0000d246 add r3, pc | r3 = 0x1a502;
0x0000d248 ldr r0, [r3, 0xc] | r0 = *(0x1a50e);
0x0000d24a b 0xd15e | goto label_0;
0x0000d24c ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x0000d24e adds r1, r0, 1 | r1 = r0 + 1;
| if (r1 != r0) {
0x0000d250 bne 0xd15e | goto label_0;
| }
0x0000d252 ldr r3, [pc, 0x68] |
0x0000d254 add r3, pc | r3 = 0x1a516;
0x0000d256 ldr r0, [r3, 8] | r0 = *(0x1a51e);
0x0000d258 b 0xd15e | goto label_0;
0x0000d25a ldr r0, [r0, 4] | r0 = *((r0 + 4));
0x0000d25c adds r3, r0, 1 | r3 = r0 + 1;
| if (r3 != r0) {
0x0000d25e bne.w 0xd15e | goto label_0;
| }
0x0000d262 ldr r3, [pc, 0x5c] |
0x0000d264 add r3, pc | r3 = 0x1a52a;
0x0000d266 ldr r0, [r3, 4] | r0 = *(0x1a52e);
0x0000d268 b 0xd15e | goto label_0;
| label_2:
0x0000d26a ldr r3, [pc, 0x58] |
0x0000d26c add r3, pc | r3 = 0x1a536;
0x0000d26e ldrd r0, r1, [r3, 0x60] | __asm ("ldrd r0, r1, [r3, 0x60]");
0x0000d272 bx lr | return r0;
0x0000d274 mov.w r0, -1 | r0 = -1;
0x0000d278 mov r1, r0 | r1 = r0;
0x0000d27a b 0xd150 | goto label_1;
| }
; 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 @ 0x10264 */
| #include <stdint.h>
|
; (fcn) fcn.00010264 () | void fcn_00010264 (int16_t arg_60h, int16_t arg_64h, int16_t arg_68h, int16_t arg1, int16_t arg3, int16_t arg4) {
| 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_24h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| r0 = arg1;
| r2 = arg3;
| r3 = arg4;
0x00010264 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00010268 sub sp, 0x3c |
0x0001026a ldr r1, [sp, 0x60] | r1 = *(arg_60h);
0x0001026c mov r7, r2 | r7 = r2;
0x0001026e mov r6, r3 | r6 = r3;
0x00010270 mov r4, r0 | r4 = r0;
0x00010272 ldr.w r2, [pc, 0x450] |
0x00010276 str r1, [sp, 0x18] | var_18h = r1;
0x00010278 ldr.w r3, [pc, 0x44c] | r3 = *(0x106c8);
0x0001027c ldr r1, [sp, 0x64] | r1 = *(arg_64h);
0x0001027e add r2, pc | r2 = 0x20948;
0x00010280 ldr.w fp, [pc, 0x448] |
0x00010284 ldr r0, [r0, 0x64] | r0 = *(arg_60hx64);
0x00010286 str r1, [sp, 0x1c] | var_1ch = r1;
0x00010288 ldr r3, [r2, r3] |
0x0001028a add fp, pc | fp = 0x2095a;
0x0001028c ldr r3, [r3] | r3 = *(0x20948);
0x0001028e str r3, [sp, 0x34] | var_34h = r3;
0x00010290 mov.w r3, 0 | r3 = 0;
0x00010294 ldr r3, [sp, 0x68] | r3 = *(arg_68h);
0x00010296 str r3, [sp, 0x20] | var_20h = r3;
0x00010298 blx 0x4c9c | r0 = nghttp2_option_set_peer_max_concurrent_streams ();
0x0001029c cmp r0, 0 |
| if (r0 != 0) {
0x0001029e bne.w 0x103d8 | goto label_18;
| }
0x000102a2 ldr.w sl, [r4, 0x1c] | sl = *((r4 + 0x1c));
0x000102a6 cmp.w sl, 0 |
| if (sl == 0) {
0x000102aa bne.w 0x103b0 |
0x000102ae ldr r0, [r4, 0x30] | r0 = *((r4 + 0x30));
0x000102b0 ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x000102b2 cmp r2, 0 |
| if (r2 != 0) {
0x000102b4 bne.w 0x104d2 | goto label_19;
| }
| label_13:
0x000102b8 ldr.w r8, [r4, 0x20] | r8 = *((r4 + 0x20));
0x000102bc cmp.w r8, 0 |
| if (r8 != 0) {
0x000102c0 bne.w 0x106b2 | goto label_20;
| }
0x000102c4 ldr.w r2, [pc, 0x408] | r2 = *(0x106d0);
0x000102c8 movs r1, 1 | r1 = 1;
0x000102ca str r1, [r4, 0x20] | *((r4 + 0x20)) = r1;
0x000102cc ldr.w sb, [r4, 8] | sb = *((r4 + 8));
0x000102ce str r0, [sp, 0x20] | *((sp + 0x20)) = r0;
0x000102d0 ldr.w r3, [fp, r2] | r3 = *((fp + r2));
0x000102d4 ldr.w r2, [sb, 0x60] | r2 = *((sb + 0x60));
0x000102d8 ldr r5, [r3, 8] | r5 = *((r3 + 8));
0x000102da mov fp, r3 |
0x000102dc cmp r5, 0 |
| if (r5 < 0) {
0x000102de blt.w 0x104c8 | goto label_21;
| }
0x000102e2 cmp r2, 0 |
| if (r2 == 0) {
0x000102e4 beq.w 0x10480 | goto label_22;
| }
0x000102e8 ldr r3, [r2] | r3 = *(r2);
0x000102ea cmp r3, 0 |
| if (r3 == 0) {
0x000102ec beq.w 0x10492 | goto label_8;
| }
0x000102f0 ldrsb r3, [r3, r5] | r3 = *((r3 + r5));
0x000102f2 cmp r3, 0 |
| if (r3 < 0) {
0x000102f4 blt.w 0x10492 | goto label_8;
| }
| label_2:
0x000102f8 cmp r3, 8 |
0x000102fa ite le |
| if (r3 > 8) {
0x000102fc movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x000102fe movgt r3, 1 | r3 = 1;
| }
| label_3:
0x00010300 cmp r3, 0 |
| if (r3 != 0) {
0x00010302 bne.w 0x1057a | goto label_23;
| }
| label_12:
0x00010306 ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x00010308 add.w sl, sp, 0x2c | sl += var_2ch;
0x0001030c blx 0x4bac | memmove (r0, r1, r2);
0x00010310 ldr r0, [r4, 0x74] | r0 = *((r4 + 0x74));
0x00010312 add.w sb, sp, 0x30 | sb += var_30h;
0x00010316 blx 0x4bac | memmove (r0, r1, r2);
0x0001031a mov r3, r7 | r3 = r7;
0x0001031c mov r7, sl | r7 = sl;
0x0001031e mov sl, r3 | sl = r3;
| label_4:
0x00010320 ldr r0, [r4, 0x78] | r0 = *((r4 + 0x78));
0x00010322 blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x00010326 ldr r0, [r4, 0x7c] | r0 = *((r4 + 0x7c));
0x00010328 bl 0x1c038 | r0 = fcn_0001c038 (r0);
0x0001032c cmp r0, 0 |
| if (r0 == 0) {
0x0001032e beq 0x103e8 | goto label_6;
| }
0x00010330 ldr.w r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x00010334 bl 0x1c038 | r0 = fcn_0001c038 (r0);
0x00010338 cmp r0, 0 |
| if (r0 == 0) {
0x0001033a beq 0x103e8 | goto label_6;
| }
0x0001033c ldr r0, [r4, 0x78] | r0 = *((r4 + 0x78));
0x0001033e blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x00010342 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00010344 blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x00010348 cmp r6, 0 |
0x0001034a strd sb, r7, [sp] | __asm ("strd sb, r7, [sp]");
0x0001034e itete ge |
| if (r6 < 0) {
0x00010350 movge r2, sl | r2 = sl;
| }
| if (r6 >= 0) {
0x00010352 movlt r2, -1 | r2 = -1;
| }
| if (r6 >= 0) {
0x00010356 movlt r3, r6 | r3 = r6;
| }
| if (r6 < 0) {
0x00010358 mov.w r3, -1 | r3 = -1;
| }
0x0001035c ldr r0, [r4, 0x6c] | r0 = *((r4 + 0x6c));
0x0001035e blx 0x4854 | r0 = fcn_00004854 ();
0x00010362 mov r5, r0 | r5 = r0;
0x00010364 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00010366 blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x0001036a cmp r5, 4 |
| if (r5 == 4) {
0x0001036c beq.w 0x1049e | goto label_24;
| }
0x00010370 cmp r5, 0 |
| if (r5 == 0) {
0x00010372 beq 0x10418 | goto label_25;
| }
0x00010374 movw r3, 0x1177 |
0x00010378 ldr.w r2, [fp, 8] | r2 = *(arg_68h);
0x0001037c movt r3, 1 | r3 = 0x11177;
0x00010380 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00010382 cmp r5, r3 |
| if (r5 != r3) {
0x00010384 bne.w 0x105c2 | goto label_26;
| }
0x00010388 cmp r2, 0 |
0x0001038a ldr r3, [r1, 0x60] | r3 = *((r1 + 0x60));
| if (r2 < 0) {
0x0001038c blt.w 0x10648 | goto label_27;
| }
0x00010390 cmp r3, 0 |
| if (r3 == 0) {
0x00010392 beq.w 0x10678 | goto label_28;
| }
0x00010396 ldr r0, [r3] | r0 = *(r3);
0x00010398 cmp r0, 0 |
| if (r0 == 0) {
0x0001039a beq.w 0x1064a | goto label_17;
| }
0x0001039e ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x000103a0 cmp r0, 0 |
| if (r0 < 0) {
0x000103a2 blt.w 0x1064a | goto label_17;
| }
| label_16:
0x000103a6 cmp r0, 8 |
| if (r0 > 8) {
0x000103a8 bgt.w 0x10652 | goto label_29;
| }
0x000103aa strh r3, [r2, 0xa] | *((r2 + 0xa)) = r3;
| label_15:
0x000103ac mov r8, r5 | r8 = r5;
0x000103ae b 0x1047a | goto label_5;
| }
0x000103b0 mov.w r8, 0x67 | r8 = 0x67;
| label_1:
0x000103b4 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x000103b6 blx 0x50a4 | loc_imp_ap_hook_post_config ();
| do {
0x000103ba ldr r2, [pc, 0x318] |
0x000103bc ldr r3, [pc, 0x308] | r3 = *(0x106c8);
0x000103be add r2, pc | r2 = 0x20a98;
0x000103c0 ldr r3, [r2, r3] | r3 = *(0x20a98);
0x000103c2 ldr r2, [r3] | r2 = *(0x20a98);
0x000103c4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000103c6 eors r2, r3 | r2 ^= r3;
0x000103c8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000103cc bne.w 0x106ae | goto label_30;
| }
0x000103d0 mov r0, r8 | r0 = r8;
0x000103d2 add sp, 0x3c |
0x000103d4 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x000103d8 mov r8, r0 | r8 = r0;
0x000103da b 0x103ba |
| } while (1);
| do {
0x000103dc ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000103de bl 0x1be88 | r0 = fcn_0001be88 (r0, r1);
0x000103e2 mov r5, r0 | r5 = r0;
0x000103e4 cmp r0, 0 |
| if (r0 != 0) {
0x000103e6 bne 0x104b4 | goto label_31;
| }
| label_6:
0x000103e8 ldr r0, [r4, 0x7c] | r0 = *((r4 + 0x7c));
0x000103ea bl 0x1c194 | r0 = fcn_0001c194 (r0);
0x000103ee mov r1, r0 | r1 = r0;
0x000103f0 cmp r0, 0 |
0x000103f2 bne 0x103dc |
| } while (r0 != 0);
0x000103f4 b 0x10402 |
| while (r0 != 0) {
0x000103f6 ldr r0, [r4, 0x28] | r0 = *((r4 + 0x28));
0x000103f8 bl 0x1be88 | r0 = fcn_0001be88 (r0, r1);
0x000103fc mov r5, r0 | r5 = r0;
0x000103fe cmp r0, 0 |
| if (r0 != 0) {
0x00010400 bne 0x104be | goto label_32;
| }
| label_7:
0x00010402 ldr.w r0, [r4, 0x80] | r0 = *((r4 + 0x80));
0x00010406 bl 0x1c194 | r0 = fcn_0001c194 (r0);
0x0001040a mov r1, r0 | r1 = r0;
0x0001040c cmp r0, 0 |
0x0001040e bne 0x103f6 |
| }
0x00010410 str r0, [sp, 0x30] | var_30h = r0;
0x00010412 ldr r0, [r4, 0x78] | r0 = *((r4 + 0x78));
0x00010414 blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x00010416 invalid |
| label_25:
0x00010418 ldr r1, [sp, 0x30] | r1 = var_30h;
0x0001041a cmp r1, 0 |
| if (r1 <= 0) {
0x0001041c ble 0x1045e | goto label_33;
| }
0x0001041e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00010420 movs r5, 0 | r5 = 0;
0x00010422 mov r6, r5 | r6 = r5;
0x00010424 subs r7, r3, r5 | r7 = r3 - r5;
0x00010426 it ne |
| if (r7 == r3) {
0x00010428 movne r7, 1 | r7 = 1;
| }
0x0001042a b 0x10434 |
| while (r3 == 0) {
0x0001042c adds r5, 1 | r5++;
0x0001042e adds r6, 0x14 | r6 += 0x14;
0x00010430 cmp r5, r1 |
| if (r5 >= r1) {
0x00010432 bge 0x1045e | goto label_33;
| }
| label_0:
0x00010434 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00010436 add r3, r6 | r3 += r6;
0x00010438 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0001043a ldr r2, [r3, 0x1c] | r2 = *((r3 + 0x1c));
0x0001043c cmp r2, 0 |
0x0001043e ite ne |
| if (r2 == 0) {
0x00010440 movne r3, 0 | r3 = 0;
| }
| if (r2 != 0) {
0x00010442 andeq r3, r7, 1 | r3 = r7 & 1;
| }
0x00010444 lsls r1, r0, 0xc | r1 = r0 << 0xc;
0x00010446 cmp r3, 0 |
0x00010448 beq 0x1042c |
| }
0x0001044a ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x0001044c adds r5, 1 | r5++;
0x0001044e blx 0x4f4c | fcn_00004f4c ();
0x00010452 ldr r1, [sp, 0x30] | r1 = var_30h;
0x00010454 adds r6, 0x14 | r6 += 0x14;
0x00010456 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x00010458 cmp r5, r1 |
0x0001045a str r3, [r0] | *(r0) = r3;
| if (r5 < r1) {
0x0001045c blt 0x10434 | goto label_0;
| }
| label_33:
0x0001045e ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x00010460 cbz r3, 0x1046c |
0x00010462 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x00010464 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00010466 cmp r3, 0 |
| if (r3 != 0) {
0x00010468 bne.w 0x105e6 | goto label_34;
| }
| }
| label_14:
0x0001046c ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 != 0) {
0x0001046e cbz r3, 0x1047a |
0x00010470 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x00010472 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00010474 cmp r3, 0 |
| if (r3 != 0) {
0x00010476 bne.w 0x10616 | goto label_35;
| }
0x00010478 strh r6, [r1, 6] | *((r1 + 6)) = r6;
| }
| label_5:
0x0001047a movs r3, 0 | r3 = 0;
0x0001047c str r3, [r4, 0x20] | *((r4 + 0x20)) = r3;
0x0001047e b 0x103b4 | goto label_1;
| label_22:
0x00010480 ldr.w r2, [sb, 4] | r2 = *((sb + 4));
0x00010484 ldr r3, [r2, 0x10] | r3 = *((r2 + 0x10));
| if (r3 == 0) {
0x00010486 cbz r3, 0x10490 | goto label_9;
| }
0x00010488 ldrsb r3, [r3, r5] | r3 = *((r3 + r5));
0x0001048a cmp r3, 0 |
| if (r3 >= 0) {
0x0001048c bge.w 0x102f8 | goto label_2;
| }
0x0001048e add r7, sp, 0xd0 | r7 = sp + 0xd0;
| label_9:
0x00010490 adds r2, 0x10 | r2 += 0x10;
| label_8:
0x00010492 ldr r3, [r2, 4] | r3 = *((r2 + 4));
0x00010494 cmp r3, 8 |
0x00010496 ite le |
| if (r3 > 8) {
0x00010498 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 8) {
0x0001049a movgt r3, 1 | r3 = 1;
| }
0x0001049c b 0x10300 | goto label_3;
| label_24:
0x0001049e ldr r3, [r4, 0x18] | r3 = *((r4 + 0x18));
0x000104a0 cmp r3, 0 |
| if (r3 == 0) {
0x000104a2 beq.w 0x10320 | goto label_4;
| }
0x000104a6 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000104a8 subs r3, 0 |
0x000104aa it ne |
| if (r3 == 0) {
0x000104ac movne r3, 1 | r3 = 1;
| }
0x000104ae lsl.w r8, r3, 2 | r8 = r3 << 2;
0x000104b2 b 0x1047a | goto label_5;
| label_31:
0x000104b4 ldr r0, [r4, 0x70] | r0 = *((r4 + 0x70));
0x000104b6 blx 0x4f4c | fcn_00004f4c ();
0x000104b8 stcl p0, c6, [sl, -0x14] | __asm ("stcl p0, c6, [sl, -0x14]");
0x000104bc b 0x103e8 | goto label_6;
| label_32:
0x000104be ldr r0, [r4, 0x74] | r0 = *((r4 + 0x74));
0x000104c0 blx 0x4f4c | r0 = fcn_00004f4c ();
0x000104c4 str r5, [r0] | *(r0) = r5;
0x000104c6 b 0x10402 | goto label_7;
| label_21:
0x000104c8 cmp r2, 0 |
| if (r2 != 0) {
0x000104ca bne 0x10492 | goto label_8;
| }
0x000104cc ldr.w r2, [sb, 4] | r2 = *((sb + 4));
0x000104d0 b 0x10490 | goto label_9;
| if (r2 <= 0) {
| label_19:
0x000104d2 ble 0x105bc | goto label_36;
| }
0x000104d4 mov r8, sl | r8 = sl;
0x000104d6 mvn sb, 0x80000000 | sb = ~0x80000000;
0x000104da str r6, [sp, 0x24] | var_24h = r6;
0x000104dc b 0x1054c |
| while (r3 != 0) {
0x000104de ldr.w r1, [r4, 0x88] | r1 = *((r4 + 0x88));
0x000104e2 str r3, [r1, 4] | *((r1 + 4)) = r3;
0x000104e4 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000104e6 ldr r0, [r3, 0x3c] | r0 = *((r3 + 0x3c));
0x000104e8 ldrd r2, r3, [r5, 0x70] | __asm ("ldrd r2, r3, [r5, 0x70]");
0x000104ec strd r2, r3, [r1, 0x68] | __asm ("strd r2, r3, [r1, 0x68]");
0x000104f0 blx 0x4898 | fcn_00004898 ();
0x000104f4 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x000104f6 ldr.w r3, [r4, 0x88] | r3 = *((r4 + 0x88));
0x000104fa str.w r8, [r3, 4] | __asm ("str.w r8, [r3, 4]");
0x000104fc strh r4, [r0] | *(r0) = r4;
0x000104fe cmp r0, 0 |
| if (r0 != 0) {
0x00010500 bne 0x10566 | goto label_37;
| }
| label_11:
0x00010502 ldr r0, [r5, 0x60] | r0 = *((r5 + 0x60));
| if (r0 != 0) {
0x00010504 cbz r0, 0x1053a |
0x00010506 ldr r3, [pc, 0x1c8] |
0x00010508 ldr.w r3, [fp, r3] | r3 = *((fp + r3));
0x0001050c ldr r2, [r3, 8] | r2 = *(0x106da);
0x0001050e ldr r3, [r0, 0x2c] | r3 = *((r0 + 0x2c));
0x00010510 ldr.w r3, [r3, r2, lsl 2] | r3 = *(0x106d2);
0x00010514 str.w r8, [r5, 0x60] | __asm ("str.w r8, [r5, 0x60]");
0x00010516 strh r0, [r4, 2] | *((r4 + 2)) = r0;
0x00010518 cmp r3, 0 |
| if (r3 == 0) {
0x0001051a beq.w 0x1068e | goto label_38;
| }
0x0001051e ldr r6, [r3, 0x14] | r6 = *((r3 + 0x14));
0x00010520 bl 0xa884 | fcn_0000a884 (r0);
| if (r6 == 0) {
0x00010524 cbz r6, 0x1053a | goto label_10;
| }
0x00010526 ldrd r1, r0, [r4, 0x8c] | __asm ("ldrd r1, r0, [r4, 0x8c]");
0x0001052a ldr r2, [r0, 8] | r2 = *((r0 + 8));
0x0001052c cmp r2, sb |
| if (r2 != sb) {
0x0001052e beq 0x10534 |
0x00010530 cmp r1, r2 |
| if (r1 > r2) {
0x00010532 bhi 0x10572 | goto label_39;
| }
| }
0x00010534 ldr r0, [r6] | r0 = *(r6);
0x00010536 blx 0x4f68 | fcn_00004f68 ();
| }
| label_10:
0x0001053a mov r0, r5 | r0 = r5;
0x0001053c add.w sl, sl, 1 | sl++;
0x00010540 bl 0x17254 | fcn_00017254 (r0);
0x00010542 vmaxnm.f64 d6, d8, d16 | __asm ("vmaxnm.f64 d6, d8, d16");
0x00010546 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00010548 cmp sl, r3 |
| if (sl >= r3) {
0x0001054a bge 0x105ba | goto label_40;
| }
0x0001054c ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0001054e ldr.w r5, [r3, sl, lsl 2] | offset_0 = sl << 2;
| r5 = *((r3 + offset_0));
0x00010552 ldr r3, [r5, 0x10] | r3 = *((r5 + 0x10));
0x00010554 cmp r3, 7 |
| if (r3 != 7) {
0x00010556 bne.w 0x1069e | goto label_41;
| }
0x0001055a ldr r3, [r5, 0x60] | r3 = *((r5 + 0x60));
0x0001055c cmp r3, 0 |
0x0001055e bne 0x104de |
| }
0x00010560 ldr r0, [r5, 0x34] | r0 = *((r5 + 0x34));
0x00010562 cmp r0, 0 |
| if (r0 == 0) {
0x00010564 beq 0x1053a | goto label_10;
| }
| label_37:
0x00010566 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x00010568 bl 0x5b44 | fcn_00005b44 (r0, r1);
0x0001056c str.w r8, [r5, 0x34] | __asm ("str.w r8, [r5, 0x34]");
0x00010570 b 0x10502 | goto label_11;
| label_39:
0x00010572 blx 0x4f4c | r0 = fcn_00004f4c ();
0x00010576 str r6, [r0] | *(r0) = r6;
0x00010578 b 0x1053a | goto label_10;
| label_23:
0x0001057a movw r2, 0x4240 |
0x0001057e mov r0, r7 | r0 = r7;
0x00010580 mov r1, r6 | r1 = r6;
0x00010582 movt r2, 0xf | r2 = 0xf4240;
0x00010586 movs r3, 0 | r3 = 0;
0x00010588 ldr.w sl, [pc, 0x14c] |
0x0001058c bl 0x1ea90 | fcn_0001ea90 (r0, r1, r2, r3);
0x00010590 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00010594 mov r2, r5 | r2 = r5;
0x00010596 str r0, [sp, 0x14] | var_14h = r0;
0x00010598 add sl, pc | sl = 0x20c74;
0x0001059a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0001059c mov r0, sl | r0 = sl;
0x0001059e movw r1, 0x44f | r1 = 0x44f;
0x000105a0 adcs r7, r1 | __asm ("adcs r7, r1");
0x000105a2 str r3, [sp, 0x10] | var_10h = r3;
0x000105a4 ldr r3, [r4] | r3 = *(r4);
0x000105a6 str r3, [sp, 0xc] | var_ch = r3;
0x000105a8 ldr r3, [pc, 0x130] |
0x000105aa add r3, pc | r3 = 0x20c8a;
0x000105ac str r3, [sp, 8] | var_8h = r3;
0x000105ae movs r3, 0 | r3 = 0;
0x000105b0 str r3, [sp] | *(sp) = r3;
0x000105b2 movs r3, 9 | r3 = 9;
0x000105b4 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x000105b8 b 0x10306 | goto label_12;
| label_40:
0x000105ba ldr r6, [sp, 0x24] | r6 = var_24h;
| label_36:
0x000105bc blx 0x4bac | memmove (r0, r1, r2);
0x000105c0 b 0x102b8 | goto label_13;
| label_26:
0x000105c2 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x000105c4 movs r3, 3 | r3 = 3;
0x000105c6 str r1, [sp, 4] | var_4h = r1;
0x000105c8 mov r8, r5 | r8 = r5;
0x000105ca str r5, [sp] | *(sp) = r5;
0x000105cc str r0, [sp, 0x10] | var_10h = r0;
0x000105ce ldr r1, [r4] | r1 = *(r4);
0x000105d0 ldr r0, [pc, 0x10c] |
0x000105d2 str r1, [sp, 0xc] | var_ch = r1;
0x000105d4 ldr r1, [pc, 0x10c] |
0x000105d6 add r0, pc | r0 = 0x20cba;
0x000105d8 add r1, pc | r1 = 0x20cc0;
0x000105da str r1, [sp, 8] | var_8h = r1;
0x000105dc movw r1, 0x47f | r1 = 0x47f;
0x000105e0 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x000105e2 subs.w r7, r6, sb, lsl 25 | r7 = r6 - (sb << 25);
| label_34:
0x000105e6 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x000105e8 blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x000105ec ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x000105ee ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x000105f0 cmp r2, 0 |
| if (r2 <= 0) {
0x000105f2 ble 0x1060e | goto label_42;
| }
0x000105f4 ldr r6, [sp, 0x18] | r6 = var_18h;
0x000105f6 movs r5, 0 | r5 = 0;
0x000105f8 ldr r7, [sp, 0x20] | r7 = var_20h;
| do {
0x000105fa ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000105fc mov r0, r7 | r0 = r7;
0x000105fe ldr.w r1, [r3, r5, lsl 2] | offset_1 = r5 << 2;
| r1 = *((r3 + offset_1));
0x00010602 adds r5, 1 | r5++;
0x00010604 blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00010606 ldr r3, [r4, 0x70] | r3 = *((r4 + 0x70));
0x00010608 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0001060a cmp r5, r2 |
0x0001060c blt 0x105fa |
| } while (r5 < r2);
| label_42:
0x0001060e ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00010610 blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x00010614 b 0x1046c | goto label_14;
| label_35:
0x00010616 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00010618 blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x0001061c ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0001061e ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00010620 cmp r2, 0 |
0x00010622 itt gt |
| if (r2 > 0) {
0x00010624 ldrdgt r6, r7, [sp, 0x1c] | __asm ("ldrdgt r6, r7, [var_1ch]");
| }
| if (r2 <= 0) {
0x00010626 strgt r7, [r0, 0x70] | *((r0 + 0x70)) = r7;
| }
0x00010628 movs r5, 0 | r5 = 0;
| if (r5 <= 0) {
0x0001062a ble 0x10640 | goto label_43;
| }
| do {
0x0001062c ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0001062e mov r0, r7 | r0 = r7;
0x00010630 ldr.w r1, [r3, r5, lsl 2] | offset_2 = r5 << 2;
| r1 = *((r3 + offset_2));
0x00010632 asrs r5, r4, 0x20 | r5 = r4 >> 0x20;
0x00010634 adds r5, 1 | r5++;
0x00010636 blx r6 | uint32_t (*r6)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00010638 ldr r3, [r4, 0x74] | r3 = *((r4 + 0x74));
0x0001063a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0001063c cmp r5, r2 |
0x0001063e blt 0x1062c |
| } while (r5 < r2);
| label_43:
0x00010640 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x00010642 blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x00010644 invalid |
| if (r3 == 0) {
| label_27:
0x00010648 cbz r3, 0x1068a | goto label_44;
| }
| label_17:
0x0001064a ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0001064c cmp r3, 8 |
| if (r3 <= 8) {
0x0001064e ble.w 0x103ac | goto label_15;
| }
| label_29:
0x00010652 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x00010654 movs r3, 0 | r3 = 0;
0x00010656 str r3, [sp] | *(sp) = r3;
0x00010658 movs r3, 9 | r3 = 9;
0x0001065a str r1, [sp, 4] | var_4h = r1;
0x0001065c mov r8, r5 | r8 = r5;
0x0001065e str r0, [sp, 0x10] | var_10h = r0;
0x00010660 ldr r1, [r4] | r1 = *(r4);
0x00010662 ldr r0, [pc, 0x84] |
0x00010664 str r1, [sp, 0xc] | var_ch = r1;
0x00010666 ldr r1, [pc, 0x84] |
0x00010668 add r0, pc | r0 = 0x20d56;
0x0001066a add r1, pc | r1 = 0x20d5c;
0x0001066c str r1, [sp, 8] | var_8h = r1;
0x0001066e movw r1, 0x47b | r1 = 0x47b;
0x00010672 blx 0x4d50 | loc_imp_apr_dynamic_fn_register ();
0x00010676 b 0x1047a | goto label_5;
| label_28:
0x00010678 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0001067a ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
| if (r0 == 0) {
0x0001067c cbz r0, 0x10686 | goto label_45;
| }
0x0001067e ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x00010680 cmp r0, 0 |
| if (r0 >= 0) {
0x00010682 bge.w 0x103a6 | goto label_16;
| }
0x00010684 add r6, sp, 0x240 | r6 = sp + 0x240;
| do {
| label_45:
0x00010686 adds r3, 0x10 | r3 += 0x10;
0x00010688 b 0x1064a | goto label_17;
| label_44:
0x0001068a ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x0001068c b 0x10686 |
| } while (1);
| label_38:
0x0001068e ldr r1, [pc, 0x60] |
0x00010690 mov.w r2, 0x240 | r2 = 0x240;
0x00010694 ldr r0, [pc, 0x5c] |
0x00010696 add r1, pc | r1 = 0x20d8c;
0x00010698 add r0, pc | r0 = "h2_stream(%d-%lu-%d,%s): cleanup, c2 is done, move to spurge";
0x0001069a blx 0x4e40 | loc_imp_apr_socket_create ();
| label_41:
0x0001069e ldr r1, [pc, 0x58] |
0x000106a0 movw r2, 0x232 | r2 = 0x232;
0x000106a4 ldr r0, [pc, 0x54] |
0x000106a6 add r1, pc | r1 = 0x20da4;
0x000106a8 add r0, pc | r0 = 0x20da8;
0x000106aa blx 0x4e40 | loc_imp_apr_socket_create ();
| label_30:
0x000106ae blx 0x4d80 | loc_imp_apr_file_read ();
| label_20:
0x000106b2 ldr r1, [pc, 0x4c] |
0x000106b4 movw r2, 0x44c | r2 = 0x44c;
0x000106b8 ldr r0, [pc, 0x48] |
0x000106ba add r1, pc | r1 = 0x20dc0;
0x000106bc add r0, pc | r0 = 0x20dc4;
0x000106be blx 0x4e40 | loc_imp_apr_socket_create ();
0x000106c2 nop |
0x000106c4 ldrb r6, [r0, 3] | r6 = *((r0 + 3));
0x000106c6 movs r1, r0 | r1 = r0;
0x000106c8 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x000106ca movs r0, r0 |
0x000106cc ldrb r2, [r7, 2] | r2 = *((r7 + 2));
0x000106ce movs r1, r0 | r1 = r0;
0x000106d0 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
0x000106d2 movs r0, r0 |
0x000106d4 strb r6, [r0, 0x1e] | *((r0 + 0x1e)) = r6;
0x000106d6 movs r1, r0 | r1 = r0;
0x000106d8 lsls r0, r7, 0x12 | r0 = r7 << 0x12;
0x000106da movs r1, r0 | r1 = r0;
0x000106dc lsrs r2, r4, 0x10 | r2 = r4 >> 0x10;
0x000106de movs r1, r0 | r1 = r0;
0x000106e0 lsls r2, r7, 0x11 | r2 = r7 << 0x11;
0x000106e2 movs r1, r0 | r1 = r0;
0x000106e4 lsrs r4, r0, 0x11 | r4 = r0 >> 0x11;
0x000106e6 movs r1, r0 | r1 = r0;
0x000106e8 lsls r0, r5, 0xf | r0 = r5 << 0xf;
0x000106ea movs r1, r0 | r1 = r0;
0x000106ec lsrs r6, r1, 0xe | r6 = r1 >> 0xe;
0x000106ee movs r1, r0 | r1 = r0;
0x000106f0 lsls r2, r7, 0xe | r2 = r7 << 0xe;
0x000106f2 movs r1, r0 | r1 = r0;
0x000106f4 lsrs r0, r4, 0xc | r0 = r4 >> 0xc;
0x000106f6 movs r1, r0 | r1 = r0;
0x000106f8 lsls r2, r5, 0xe | r2 = r5 << 0xe;
0x000106fa movs r1, r0 | r1 = r0;
0x000106fc lsls r4, r0, 0x1b | r4 = r0 << 0x1b;
0x000106fe movs r1, r0 | r1 = r0;
0x00010700 lsls r6, r2, 0xe | r6 = r2 << 0xe;
0x00010702 movs r1, r0 | r1 = r0;
0x00010704 lsrs r4, r0, 0xc | r4 = r0 >> 0xc;
0x00010706 movs r1, r0 | r1 = r0;
| }
; 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 @ 0x1b370 */
| #include <stdint.h>
|
; (fcn) fcn.0001b370 () | void fcn_0001b370 (int16_t arg_20h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| if (? >= ?) {
0x0001b370 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x0001b374 mov sl, r1 | sl = r1;
0x0001b376 ldr r1, [r0, 0xc] | r1 = *(arg_20hxc);
0x0001b378 mov r6, r0 | r6 = r0;
0x0001b37a mov r7, r2 | r7 = r2;
0x0001b37c mov r8, r3 | r8 = r3;
0x0001b37e ldr.w sb, [sp, 0x20] | sb = *(arg_20h);
0x0001b382 add.w r0, sl, r1 | r0 = sl + r1;
0x0001b386 subs r0, 1 | r0--;
0x0001b388 bl 0x1e6fc | fcn_0001e6fc (r0, r1);
0x0001b38c cmp sl, r7 |
| if (sl == r7) {
0x0001b38e beq 0x1b3ca | goto label_0;
| }
0x0001b390 ldr r5, [r6] | r5 = *(r6);
0x0001b392 mov r4, r1 | r4 = r1;
0x0001b394 b 0x1b3ba |
| while (r0 < 0) {
0x0001b396 ldr r5, [r6] | r5 = *(r6);
0x0001b398 ldr.w r3, [r5, r4, lsl 2] | offset_0 = r4 << 2;
| r3 = *((r5 + offset_0));
0x0001b39c ldr.w r2, [r5, sl, lsl 2] | offset_1 = sl << 2;
| r2 = *((r5 + offset_1));
0x0001b3a0 str.w r2, [r5, r4, lsl 2] | __asm ("str.w r2, [r5, r4, lsl 2]");
0x0001b3a4 str.w r3, [r5, sl, lsl 2] | __asm ("str.w r3, [r5, sl, lsl 2]");
0x0001b3a8 mov sl, r4 | sl = r4;
0x0001b3aa ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x0001b3ac adds r0, r1, r4 | r0 = r1 + r4;
0x0001b3ae subs r0, 1 | r0--;
0x0001b3b0 bl 0x1e6fc | fcn_0001e6fc (r0, r1);
0x0001b3b4 cmp r7, sl |
0x0001b3b6 mov r4, r1 | r4 = r1;
| if (r7 == sl) {
0x0001b3b8 beq 0x1b3ca | goto label_0;
| }
0x0001b3ba ldr.w r1, [r5, r4, lsl 2] | offset_2 = r4 << 2;
| r1 = *((r5 + offset_2));
0x0001b3be mov r2, sb | r2 = sb;
0x0001b3c0 ldr.w r0, [r5, sl, lsl 2] | offset_3 = sl << 2;
| r0 = *((r5 + offset_3));
0x0001b3c4 blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0001b3c6 cmp r0, 0 |
0x0001b3c8 blt 0x1b396 |
| }
| label_0:
0x0001b3ca mov r0, sl | r0 = sl;
0x0001b3cc pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0x1b814 */
| #include <stdint.h>
|
; (fcn) fcn.0001b814 () | void fcn_0001b814 (int16_t arg_38h, int16_t arg_3ch, int16_t arg_40h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001b814 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001b818 mov r8, r1 | r8 = r1;
0x0001b81a sub sp, 0x18 |
0x0001b81c ldr r1, [pc, 0xd0] |
0x0001b81e mov sl, r0 | sl = r0;
0x0001b820 mov r6, r3 | r6 = r3;
0x0001b822 str r2, [sp, 8] | var_8h = r2;
0x0001b824 movs r3, 0 | r3 = 0;
0x0001b826 ldr r2, [pc, 0xcc] | r2 = *(0x1b8f6);
0x0001b828 add r1, pc | r1 = 0x3711c;
0x0001b82a ldr r7, [sp, 0x40] | r7 = *(arg_40h);
0x0001b82c mov sb, r3 | sb = r3;
0x0001b82e ldr r0, [pc, 0xc8] |
0x0001b830 ldr r2, [r1, r2] |
0x0001b832 mov r1, sp | r1 = sp;
0x0001b834 ldr r4, [sp, 0x38] | r4 = *(arg_38h);
0x0001b836 add r0, pc | r0 = 0x37134;
0x0001b838 ldr r5, [sp, 0x3c] | r5 = *(arg_3ch);
0x0001b83a ldr r2, [r2] | r2 = *(0x3711c);
0x0001b83c str r2, [sp, 0x14] | var_14h = r2;
0x0001b83e mov.w r2, 0 | r2 = 0;
0x0001b842 mov r2, r7 | r2 = r7;
0x0001b844 strd r6, r8, [sp] | __asm ("strd r6, r8, [sp]");
0x0001b848 blx 0x4ef4 | loc_imp_apr_hash_set ();
0x0001b84c movs r1, 8 | r1 = 8;
0x0001b84e mov r0, r8 | r0 = r8;
0x0001b850 blx 0x4c6c | r0 = loc_imp_apr_thread_mutex_create ();
0x0001b854 mov r3, r0 | r3 = r0;
0x0001b856 mov r0, r8 | r0 = r8;
0x0001b858 str.w sb, [r3] | __asm ("str.w sb, [r3]");
0x0001b85a str r0, [sp] | *(sp) = r0;
0x0001b85c ldr r1, [sp] | r1 = *(sp);
0x0001b85e str.w sb, [r3, 4] | __asm ("str.w sb, [r3, 4]");
0x0001b862 str.w r3, [sl] | __asm ("str.w r3, [sl]");
0x0001b866 str r3, [sp, 0xc] | var_ch = r3;
0x0001b868 add.w r1, r1, r1, lsl 2 | r1 += (r1 << 2);
0x0001b86c lsls r1, r1, 2 | r1 <<= 2;
0x0001b86e blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x0001b872 ldr r2, [sp] | r2 = *(sp);
0x0001b874 mov r1, sb | r1 = sb;
0x0001b876 ldr.w r8, [sp, 0xc] | r8 = var_ch;
0x0001b87a add.w r2, r2, r2, lsl 2 | r2 += (r2 << 2);
0x0001b87e lsls r2, r2, 2 | r2 <<= 2;
0x0001b880 blx 0x4aa0 | fcn_00004aa0 ();
0x0001b884 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001b886 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0001b88a ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x0001b88c cbz r3, 0x1b8e6 | goto label_1;
| }
0x0001b88e add.w r8, sp, 4 | r8 += var_4h;
0x0001b892 str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h]");
| if (r6 == 0) {
0x0001b896 cbz r6, 0x1b8d6 | goto label_2;
| }
0x0001b898 add.w r6, r4, r6, lsl 2 | r6 = r4 + (r6 << 2);
0x0001b89c subs r5, 4 | r5 -= 4;
0x0001b89e add.w r8, sp, 4 | r8 += var_4h;
0x0001b8a2 b 0x1b8a8 |
| while (r0 != 0) {
0x0001b8a4 cmp r4, r6 |
| if (r4 == r6) {
0x0001b8a6 beq 0x1b8d6 | goto label_2;
| }
0x0001b8a8 ldr r2, [r5, 4]! | r2 = *((r5 += 4));
0x0001b8ac mov r0, r8 | r0 = r8;
0x0001b8ae ldr r1, [r4], 4 | r1 = *(r4);
| r4 += 4;
0x0001b8b2 bl 0x1b728 | r0 = fcn_0001b728 (r0, r1, r2);
0x0001b8b6 cmp r0, 0 |
0x0001b8b8 bne 0x1b8a4 |
| }
| do {
0x0001b8ba ldr r0, [sp, 0x10] | r0 = var_10h;
| label_0:
0x0001b8bc ldr r2, [pc, 0x3c] |
0x0001b8be ldr r3, [pc, 0x34] | r3 = *(0x1b8f6);
0x0001b8c0 add r2, pc | r2 = 0x371c0;
0x0001b8c2 ldr r3, [r2, r3] | r3 = *(0x371c0);
0x0001b8c4 ldr r2, [r3] | r2 = *(0x371c0);
0x0001b8c6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0001b8c8 eors r2, r3 | r2 ^= r3;
0x0001b8ca mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001b8ce bne 0x1b8ea | goto label_3;
| }
0x0001b8d0 add sp, 0x18 |
0x0001b8d2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_2:
0x0001b8d6 ldr r0, [pc, 0x28] |
0x0001b8d8 movs r3, 0 | r3 = 0;
0x0001b8da mov r2, r7 | r2 = r7;
0x0001b8dc mov r1, r8 | r1 = r8;
0x0001b8de add r0, pc | r0 = 0x371e4;
0x0001b8e0 blx 0x4ef4 | loc_imp_apr_hash_set ();
0x0001b8e4 b 0x1b8ba |
| } while (1);
| label_1:
0x0001b8e6 movs r0, 0xc | r0 = 0xc;
0x0001b8e8 b 0x1b8bc | goto label_0;
| label_3:
0x0001b8ea blx 0x4d80 | loc_imp_apr_file_read ();
0x0001b8ee nop |
0x0001b8f0 stm r3!, {r2, r3, r4} | *(r3!) = r2;
| *((r3! + 4)) = r3;
| *((r3! + 8)) = r4;
0x0001b8f2 movs r0, r0 |
0x0001b8f4 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0001b8f6 movs r0, r0 |
0x0001b8f8 asrs r3, r0, 0x1c | r3 = r0 >> 0x1c;
0x0001b8fa movs r0, r0 |
0x0001b8fc stm r2!, {r2, r7} | *(r2!) = r2;
| *((r2! + 4)) = r7;
0x0001b8fe movs r0, r0 |
0x0001b900 asrs r7, r6, 0x18 | r7 = r6 >> 0x18;
0x0001b902 movs r0, r0 |
| }
; 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 @ 0x1bb60 */
| #include <stdint.h>
|
; (fcn) fcn.0001bb60 () | void fcn_0001bb60 (int16_t arg1) {
| r0 = arg1;
0x0001bb60 invalid | goto label_1;
0x0001bb62 add r1, r0 | r1 += r0;
0x0001bb64 subs r0, 1 | r0--;
0x0001bb66 subs r2, r1, 1 | r2 = r1 - 1;
0x0001bb68 movs r1, 1 | r1 = 1;
0x0001bb6a b 0x1bb92 |
| while (r1 != 0) {
0x0001bb6c sub.w r1, r3, 0x61 | r1 = r3 - 0x61;
0x0001bb70 subs r3, 0x20 | r3 -= 0x20;
0x0001bb72 cmp r1, 0x19 |
0x0001bb74 it ls |
| if (r1 > 0x19) {
0x0001bb76 strbls r3, [ip] | *(ip) = r3;
| }
0x0001bb7a cmp ip, r2 |
| if (ip == r2) {
0x0001bb7c beq 0x1bbae | goto label_1;
| }
0x0001bb7e ldrb r3, [r0, 2]! | r3 = *((r0 += 2));
0x0001bb82 sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x0001bb86 cmp r2, r0 |
0x0001bb88 clz r1, r1 | r1 &= r1;
0x0001bb8c lsr.w r1, r1, 5 | r1 >>= 5;
| if (r2 == r0) {
0x0001bb90 beq 0x1bbae | goto label_1;
| }
| label_0:
0x0001bb92 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x0001bb94 add.w ip, r0, 1 |
0x0001bb98 cmp r1, 0 |
0x0001bb9a bne 0x1bb6c |
| }
0x0001bb9c mov r0, ip | r0 = ip;
0x0001bb9e sub.w r1, r3, 0x2d | r1 = r3 - 0x2d;
0x0001bba2 cmp r2, r0 |
0x0001bba4 clz r1, r1 | r1 &= r1;
0x0001bba8 lsr.w r1, r1, 5 | r1 >>= 5;
| if (r2 != r0) {
0x0001bbac bne 0x1bb92 | goto label_0;
| }
| label_1:
0x0001bbae bx lr | return;
| }
; 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 @ 0x1bbb0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0001bbb0 () | void fcn_0001bbb0 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001bbb0 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0001bbb4 mov r7, r0 | r7 = r0;
0x0001bbb6 ldrb r4, [r1] | r4 = *(r1);
0x0001bbb8 mov r0, r2 | r0 = r2;
0x0001bbba cmp r4, 0 |
| if (r4 == 0) {
0x0001bbbc beq.w 0x1bcf2 | goto label_0;
| }
0x0001bbc0 mov r5, r1 | r5 = r1;
0x0001bbc2 mov lr, r1 | lr = r1;
0x0001bbc4 ldr r1, [pc, 0x13c] |
0x0001bbc6 add r1, pc | r1 = 0x378ce;
0x0001bbc8 b 0x1bbd0 |
| while (r3 != 1) {
0x0001bbca ldrb r4, [lr, 1]! | r4 = *((lr += 1));
| if (r4 == 0) {
0x0001bbce cbz r4, 0x1bbd8 | goto label_1;
| }
0x0001bbd0 ldr.w r3, [r1, r4, lsl 2] | offset_0 = r4 << 2;
| r3 = *((r1 + offset_0));
0x0001bbd4 adds r3, 1 | r3++;
0x0001bbd6 bne 0x1bbca |
| }
| label_1:
0x0001bbd8 sub.w r8, lr, r5 | r8 = lr - r5;
0x0001bbdc add.w sb, r8, 1 | sb = r8 + 1;
0x0001bbe0 add.w r4, r8, 3 | r4 = r8 + 3;
0x0001bbe4 mov r1, sb | r1 = sb;
0x0001bbe6 ands.w r4, r4, r8, asr 32 | r4 &= (r8 >> 32);
0x0001bbea it lo |
| if (r4 >= r4) {
0x0001bbec movlo r4, r8 | r4 = r8;
| }
0x0001bbee blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x0001bbf2 mov r2, sb | r2 = sb;
0x0001bbf4 movs r1, 0 | r1 = 0;
0x0001bbf6 blx 0x4aa0 | fcn_00004aa0 ();
0x0001bbfa rsbs.w r3, r8, 0 | r3 = r8 - ;
0x0001bbfe asr.w r6, r4, 2 | r6 = r4 >> 2;
0x0001bc02 and r3, r3, 3 | r3 &= 3;
0x0001bc06 str r0, [r7] | *(r7) = r0;
0x0001bc08 bic r4, r4, 3 | r4 = BIT_MASK (r4, 3);
0x0001bc0c and lr, r8, 3 | lr = r8 & 3;
0x0001bc10 it pl |
| if (r1 >= 0) {
0x0001bc12 rsbpl lr, r3, 0 | __asm ("rsbpl lr, r3, 0");
| }
0x0001bc16 cmp r4, 0 |
0x0001bc18 add.w sb, r6, r6, lsl 1 | sb = r6 + (r6 << 1);
| if (r4 <= 0) {
0x0001bc1c ble 0x1bc84 | goto label_2;
| }
0x0001bc1e ldr r1, [pc, 0xe8] |
0x0001bc20 add.w ip, r0, 3 |
0x0001bc24 mov r2, r5 | r2 = r5;
0x0001bc26 add.w r8, r4, -1 | r8 = r4 + -1;
0x0001bc2a adds r7, r5, r4 | r7 = r5 + r4;
0x0001bc2c add r1, pc | r1 = 0x3793a;
| do {
0x0001bc2e ldrb r3, [r2, 1] | r3 = *((r2 + 1));
0x0001bc30 adds r2, 4 | r2 += 4;
0x0001bc32 ldrb sl, [r2, -0x4] | sl = *((r2 - 0x4));
0x0001bc36 add.w ip, ip, 3 |
0x0001bc3a ldr.w r3, [r1, r3, lsl 2] | offset_1 = r3 << 2;
| r3 = *((r1 + offset_1));
0x0001bc3e ldr.w sl, [r1, sl, lsl 2] | offset_2 = sl << 2;
| sl = *((r1 + offset_2));
0x0001bc42 lsls r3, r3, 0xc | r3 <<= 0xc;
0x0001bc44 add.w r3, r3, sl, lsl 18 | r3 += (sl << 18);
0x0001bc46 bics r2, r1 | __asm ("bics r2, r1");
0x0001bc48 ldrb sl, [r2, -0x1] | sl = *((r2 - 0x1));
0x0001bc4c ldr.w sl, [r1, sl, lsl 2] | offset_3 = sl << 2;
| sl = *((r1 + offset_3));
0x0001bc50 add r3, sl | r3 += sl;
0x0001bc52 ldrb sl, [r2, -0x2] | sl = *((r2 - 0x2));
0x0001bc56 cmp r2, r7 |
0x0001bc58 ldr.w sl, [r1, sl, lsl 2] | offset_4 = sl << 2;
| sl = *((r1 + offset_4));
0x0001bc5c add.w r3, r3, sl, lsl 6 | r3 += (sl << 6);
0x0001bc60 lsr.w sl, r3, 0x10 | sl = r3 >> 0x10;
0x0001bc64 strb r3, [ip, -0x4] | *((ip - 0x4)) = r3;
0x0001bc68 lsr.w r3, r3, 8 | r3 >>= 8;
0x0001bc6c strb sl, [ip, -0x6] | *((ip - 0x6)) = sl;
0x0001bc70 strb r3, [ip, -0x5] | *((ip - 0x5)) = r3;
0x0001bc74 bne 0x1bc2e |
| } while (r2 != r7);
0x0001bc76 lsr.w r8, r8, 2 | r8 >>= 2;
0x0001bc7a add.w r8, r8, 1 | r8++;
0x0001bc7e add.w r8, r8, r8, lsl 1 | r8 += (r8 << 1);
0x0001bc82 add r0, r8 | r0 += r8;
| label_2:
0x0001bc84 cmp.w lr, 2 |
| if (lr == 2) {
0x0001bc88 beq 0x1bcc8 | goto label_3;
| }
0x0001bc8a cmp.w lr, 3 |
| if (lr != 3) {
0x0001bc8e bne 0x1bcc0 | goto label_4;
| }
0x0001bc90 ldr r2, [pc, 0x78] |
0x0001bc92 add r4, r5 | r4 += r5;
0x0001bc94 ldrb.w r3, [r5, r6, lsl 2] | offset_5 = r6 << 2;
| r3 = *((r5 + offset_5));
0x0001bc98 mov.w lr, 2 | lr = 2;
0x0001bc9c add r2, pc |
0x0001bc9e ldr.w r1, [r2, r3, lsl 2] | r1 = *(0x379ac);
0x0001bca2 ldrb r3, [r4, 2] | r3 = *((r4 + 2));
0x0001bca4 ldrb r4, [r4, 1] | r4 = *((r4 + 1));
0x0001bca6 ldr.w r3, [r2, r3, lsl 2] |
0x0001bcaa ldr.w r2, [r2, r4, lsl 2] | r2 = *(0x379ac);
0x0001bcae lsls r3, r3, 6 | r3 <<= 6;
0x0001bcb0 add.w r3, r3, r2, lsl 12 |
0x0001bcb4 add.w r3, r3, r1, lsl 18 | r3 = 0x379ac;
0x0001bcb8 lsrs r2, r3, 0x10 | r2 = r3 >> 0x10;
0x0001bcba lsrs r3, r3, 8 | r3 >>= 8;
0x0001bcbc strb r2, [r0] | *(r0) = r2;
0x0001bcbe strb r3, [r0, 1] | *((r0 + 1)) = r3;
| do {
| label_4:
0x0001bcc0 add.w r0, lr, sb | r0 = lr + sb;
0x0001bcc4 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_3:
0x0001bcc8 ldr r2, [pc, 0x44] |
0x0001bcca mov.w lr, 1 | lr = 1;
0x0001bcce ldrb.w r3, [r5, r6, lsl 2] | offset_6 = r6 << 2;
| r3 = *((r5 + offset_6));
0x0001bcd2 add r5, r4 | r5 += r4;
0x0001bcd4 ldrb r1, [r5, 1] | r1 = *((r5 + 1));
0x0001bcd6 add r2, pc |
0x0001bcd8 ldr.w r3, [r2, r3, lsl 2] |
0x0001bcdc ldr.w r2, [r2, r1, lsl 2] | r2 = *(0x379ea);
0x0001bce0 lsls r3, r3, 0x12 | r3 <<= 0x12;
0x0001bce2 add.w r3, r3, r2, lsl 12 | r3 = 0x379ea;
0x0001bce6 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x0001bce8 strb r3, [r0] | *(r0) = r3;
0x0001bcea add.w r0, lr, sb | r0 = lr + sb;
0x0001bcee pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_0:
0x0001bcf2 movs r1, 1 | r1 = 1;
0x0001bcf4 mov sb, r4 | sb = r4;
0x0001bcf6 blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x0001bcfa mov lr, r4 | lr = r4;
0x0001bcfc strb r4, [r0] | *(r0) = r4;
0x0001bcfe str r0, [r7] | *(r7) = r0;
0x0001bd00 b 0x1bcc0 |
| } while (1);
| }
; 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 @ 0x1c0e8 */
| #include <stdint.h>
|
; (fcn) fcn.0001c0e8 () | void fcn_0001c0e8 (uint32_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0001c0e8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001c0ec mov r6, r0 | r6 = r0;
0x0001c0ee ldr r0, [r0, 8] | r0 = *((r0 + 8));
0x0001c0f0 sub sp, 0xc |
0x0001c0f2 cmp r0, 0 |
| if (r0 <= 0) {
0x0001c0f4 ble 0x1c18e | goto label_3;
| }
0x0001c0f6 ldr r5, [r6, 4] | r5 = *((r6 + 4));
0x0001c0f8 mov r8, r1 | r8 = r1;
0x0001c0fa ldr r4, [r6, 0xc] | r4 = *((r6 + 0xc));
0x0001c0fc mov sb, r2 | sb = r2;
0x0001c0fe add r0, r5 | r0 += r5;
0x0001c100 subs r0, 1 | r0--;
0x0001c102 mov r1, r4 | r1 = r4;
0x0001c104 bl 0x1e6fc | fcn_0001e6fc (r0, r1);
0x0001c108 cmp r5, r1 |
0x0001c10a mov sl, r1 | sl = r1;
| if (r5 == r1) {
0x0001c10c beq 0x1c18e | goto label_3;
| }
0x0001c10e mov r5, r1 | r5 = r1;
0x0001c110 b 0x1c11c |
| while (r7 != r0) {
| label_0:
0x0001c112 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0001c114 cmp r3, r7 |
| if (r3 == r7) {
0x0001c116 beq 0x1c18e | goto label_3;
| }
| label_2:
0x0001c118 ldr r4, [r6, 0xc] | r4 = *((r6 + 0xc));
0x0001c11a mov r5, r7 | r5 = r7;
0x0001c11c adds r0, r5, r4 | r0 = r5 + r4;
0x0001c11e mov r1, r4 | r1 = r4;
0x0001c120 subs r0, 1 | r0--;
0x0001c122 bl 0x1e6fc | fcn_0001e6fc (r0, r1);
0x0001c126 mov r3, r8 | r3 = r8;
0x0001c128 mov r7, r1 | r7 = r1;
0x0001c12a mov r2, r1 | r2 = r1;
0x0001c12c mov r0, r6 | r0 = r6;
0x0001c12e mov r1, r5 | r1 = r5;
0x0001c130 str.w sb, [sp] | __asm ("str.w sb, [sp]");
0x0001c134 bl 0x1b370 | r0 = fcn_0001b370 (r0, r1, r2, r3, r4);
0x0001c138 cmp r7, r0 |
0x0001c13a bne 0x1c112 |
| }
0x0001c13c ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x0001c13e adds r0, r1, r5 | r0 = r1 + r5;
0x0001c140 adds r0, 1 | r0++;
0x0001c142 bl 0x1e6fc | fcn_0001e6fc (r0, r1);
0x0001c146 cmp sl, r5 |
0x0001c148 mov r4, r1 | r4 = r1;
| if (sl == r5) {
0x0001c14a beq 0x1c112 | goto label_0;
| }
0x0001c14c ldr.w fp, [r6] | fp = *(r6);
0x0001c150 b 0x1c178 | goto label_4;
| label_1:
0x0001c152 ldr.w fp, [r6] | fp = *(r6);
0x0001c156 ldr.w r3, [fp, r4, lsl 2] | offset_0 = r4 << 2;
| r3 = *((fp + offset_0));
0x0001c15a ldr.w r2, [fp, r5, lsl 2] | offset_1 = r5 << 2;
| r2 = *((fp + offset_1));
0x0001c15e str.w r2, [fp, r4, lsl 2] | __asm ("str.w r2, [fp, r4, lsl 2]");
0x0001c162 str.w r3, [fp, r5, lsl 2] | __asm ("str.w r3, [fp, r5, lsl 2]");
0x0001c166 mov r5, r4 | r5 = r4;
0x0001c168 ldr r1, [r6, 0xc] | r1 = *((r6 + 0xc));
0x0001c16a adds r0, r1, r4 | r0 = r1 + r4;
0x0001c16c adds r0, 1 | r0++;
0x0001c16e bl 0x1e6fc | fcn_0001e6fc (r0, r1);
0x0001c172 cmp sl, r5 |
0x0001c174 mov r4, r1 | r4 = r1;
| if (sl == r5) {
0x0001c176 beq 0x1c112 | goto label_0;
| }
| label_4:
0x0001c178 ldr.w r1, [fp, r4, lsl 2] | offset_2 = r4 << 2;
| r1 = *((fp + offset_2));
0x0001c17c mov r2, sb | r2 = sb;
0x0001c17e ldr.w r0, [fp, r5, lsl 2] | offset_3 = r5 << 2;
| r0 = *((fp + offset_3));
0x0001c182 blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0001c184 cmp r0, 0 |
| if (r0 > 0) {
0x0001c186 bgt 0x1c152 | goto label_1;
| }
0x0001c188 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x0001c18a cmp r3, r7 |
| if (r3 != r7) {
0x0001c18c bne 0x1c118 | goto label_2;
| }
| label_3:
0x0001c18e add sp, 0xc |
0x0001c190 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0x1cca4 */
| #include <stdint.h>
|
; (fcn) fcn.0001cca4 () | void fcn_0001cca4 (int16_t arg1) {
| r0 = arg1;
0x0001cca4 mov ip, r0 |
0x0001cca6 push {r4, r5, r6, r7, lr} |
0x0001cca8 ldr r3, [ip, 4]! | r3 = *((ip += 4));
0x0001ccac movs r0, 0 | r0 = 0;
0x0001ccae mov r1, r0 | r1 = r0;
0x0001ccb0 ldr r6, [pc, 0x34] |
0x0001ccb2 cmp r3, ip |
0x0001ccb4 add r6, pc | r6 = 0x399a0;
| if (r3 == ip) {
0x0001ccb6 beq 0x1cce4 | goto label_0;
| }
| do {
0x0001ccb8 ldr r2, [r3, 0xc] | r2 = *((r3 + 0xc));
0x0001ccba adds r0, 0x28 | r0 += 0x28;
0x0001ccbc ldr r5, [pc, 0x2c] | r5 = *(0x1ccec);
0x0001ccbe adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0001ccc2 ldr.w lr, [pc, 0x2c] | lr = *(0x1ccf2);
| if (r2 != 0) {
0x0001ccc6 cbz r2, 0x1ccde |
0x0001ccc8 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x0001ccca ldr r5, [r6, r5] | r5 = *((r6 + r5));
0x0001cccc ldr.w r7, [r6, lr] | r7 = *((r6 + lr));
0x0001ccd0 cmp r4, r7 |
0x0001ccd2 it ne |
| if (r4 != r7) {
0x0001ccd4 cmpne r4, r5 | __asm ("cmpne r4, r5");
| }
| if (r4 != r7) {
0x0001ccd6 bne 0x1ccde | goto label_1;
| }
0x0001ccd8 adds r0, r2, r0 | r0 = r2 + r0;
0x0001ccda adc r1, r1, 0 | __asm ("adc r1, r1, 0");
| }
| label_1:
0x0001ccde ldr r3, [r3] | r3 = *(r3);
0x0001cce0 cmp ip, r3 |
0x0001cce2 bne 0x1ccb8 |
| } while (ip != r3);
| label_0:
0x0001cce4 pop {r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_http2.so @ 0x1dce4 */
| #include <stdint.h>
|
; (fcn) fcn.0001dce4 () | void fcn_0001dce4 (int16_t arg_8h, int16_t arg_50h, int16_t arg_54h, int16_t arg_128h, int16_t arg_148h, int16_t arg_358h, uint32_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int32_t var_10h;
| int32_t var_10h_2;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001dce4 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0001dce8 mov sb, r2 | sb = r2;
0x0001dcea ldr r2, [pc, 0x310] |
0x0001dcec mov r8, r3 | r8 = r3;
0x0001dcee sub sp, 0x2c |
0x0001dcf0 ldr r3, [pc, 0x30c] | r3 = *(0x1e000);
0x0001dcf2 add r2, pc | r2 = 0x3bcf4;
0x0001dcf4 ldr.w sl, [pc, 0x30c] |
0x0001dcf8 ldr r3, [r2, r3] |
0x0001dcfa add sl, pc | sl = 0x3bd02;
0x0001dcfc ldr r3, [r3] | r3 = *(0x3bcf4);
0x0001dcfe str r3, [sp, 0x24] | var_24h = r3;
0x0001dd00 mov.w r3, 0 | r3 = 0;
0x0001dd02 lsls r0, r0, 0xc | r0 <<= 0xc;
0x0001dd04 cmp r0, 0 |
| if (arg_50h == ) {
0x0001dd06 beq.w 0x1dfe6 | goto label_6;
| }
0x0001dd0a mov r7, r1 | r7 = r1;
0x0001dd0c cmp r1, 0 |
| if (r1 == 0) {
0x0001dd0e beq.w 0x1dfd6 | goto label_7;
| }
0x0001dd12 ldr r3, [sp, 0x50] | r3 = *(arg_50h);
0x0001dd14 cmp r3, 1 |
0x0001dd16 ldr r3, [sp, 0x54] | r3 = *(arg_54h);
0x0001dd18 sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r3 < 1) {
0x0001dd1c blt.w 0x1dfc6 | goto label_8;
| }
0x0001dd20 mov r6, r0 | r6 = r0;
0x0001dd22 add r0, sp, 0x20 | r0 += var_20h;
0x0001dd24 blx 0x506c | r0 = fcn_0000506c ();
0x0001dd28 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0001dd2a cbz r0, 0x1dd88 | goto label_9;
| }
| label_3:
0x0001dd2c ldr r3, [pc, 0x2d8] | r3 = *(0x1e008);
0x0001dd2e ldr.w fp, [sl, r3] | fp = *((sl + r3));
| label_0:
0x0001dd32 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x0001dd36 cmp r2, 0 |
| if (r2 < 0) {
0x0001dd38 blt 0x1dd62 | goto label_10;
| }
0x0001dd3a ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
| if (r3 == 0) {
0x0001dd3c cbz r3, 0x1dd62 | goto label_10;
| }
0x0001dd3e ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0001dd40 cmp r3, 0 |
| if (r3 < 0) {
0x0001dd42 blt 0x1dd62 | goto label_10;
| }
0x0001dd44 cmp r3, 6 |
| if (r3 <= 6) {
0x0001dd46 ble 0x1dd68 | goto label_11;
| }
| do {
0x0001dd48 ldr r4, [pc, 0x2c0] |
0x0001dd4a movs r3, 7 | r3 = 7;
0x0001dd4c ldr r0, [pc, 0x2c0] |
0x0001dd4e movw r1, 0x215 | r1 = 0x215;
0x0001dd52 strd r5, r6, [sp] | __asm ("strd r5, r6, [sp]");
0x0001dd56 add r4, pc | r4 = 0x3bd66;
0x0001dd58 add r0, pc | r0 = 0x3bd6c;
0x0001dd5a str r4, [sp, 8] | var_8h = r4;
0x0001dd5c blx 0x4cfc | loc_imp_ap_remove_input_filter_byhandle ();
0x0001dd60 b 0x1dd68 | goto label_11;
| label_10:
0x0001dd62 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0001dd64 cmp r3, 6 |
0x0001dd66 bgt 0x1dd48 |
| } while (r3 > 6);
| label_11:
0x0001dd68 movs r4, 0 | r4 = 0;
| label_5:
0x0001dd6a ldr r2, [pc, 0x2a8] |
0x0001dd6c ldr r3, [pc, 0x290] | r3 = *(0x1e000);
0x0001dd6e add r2, pc | r2 = 0x3bd88;
0x0001dd70 ldr r3, [r2, r3] | r3 = *(0x3bd88);
0x0001dd72 ldr r2, [r3] | r2 = *(0x3bd88);
0x0001dd74 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001dd76 eors r2, r3 | r2 ^= r3;
0x0001dd78 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0001dd7c bne.w 0x1dff6 | goto label_12;
| }
0x0001dd80 mov r0, r4 | r0 = r4;
0x0001dd82 add sp, 0x2c |
0x0001dd84 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x0001dd86 ldrh r0, [r6, 0x3e] | r0 = *((r6 + 0x3e));
| label_9:
0x0001dd88 mov r2, r0 | r2 = r0;
0x0001dd8a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0001dd8c mov r1, r7 | r1 = r7;
0x0001dd8e add r0, sp, 0x1c | r0 += var_1ch;
0x0001dd90 blx 0x4d9c | r0 = fcn_00004d9c ();
0x0001dd94 mov r5, r0 | r5 = r0;
0x0001dd96 cmp r0, 0 |
| if (r0 != 0) {
0x0001dd98 bne.w 0x1df88 | goto label_13;
| }
0x0001dd9c ldrd r1, r0, [sp, 0x1c] | __asm ("ldrd r1, r0, [var_20h]");
0x0001dda0 blx 0x4928 | fcn_00004928 ();
0x0001dda4 ldr r1, [pc, 0x270] |
0x0001dda6 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001dda8 add r1, pc | r1 = 0x3bdc4;
0x0001ddaa blx 0x521c | fcn_0000521c ();
0x0001ddae movs r1, 0x70 | r1 = 0x70;
0x0001ddb0 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0001ddb2 blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x0001ddb6 mov r1, r5 | r1 = r5;
0x0001ddb8 movs r2, 0x70 | r2 = 0x70;
0x0001ddba blx 0x4aa0 | fcn_00004aa0 ();
0x0001ddbe ldrd r2, r3, [sp, 0x50] | __asm ("ldrd r2, r3, [arg_50h]");
0x0001ddc2 cmp r8, sb |
0x0001ddc4 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0001ddc6 mov r4, r0 | r4 = r0;
0x0001ddc8 str r6, [r0] | *(r0) = r6;
0x0001ddca strd r2, r3, [r0, 0x10] | __asm ("strd r2, r3, [r0, 0x10]");
0x0001ddce it hs |
| if (r8 < sb) {
0x0001ddd0 movhs r2, 0 | r2 = 0;
| }
0x0001ddd2 ldr r3, [pc, 0x234] | r3 = *(0x1e00a);
0x0001ddd4 it lo |
| if (r8 >= sb) {
0x0001ddd6 movlo r2, 1 | r2 = 1;
| }
0x0001ddd8 strd sb, r8, [r0, 8] | __asm ("strd sb, r8, [r0, 8]");
0x0001dddc str r1, [r0, 4] | *((r0 + 4)) = r1;
0x0001ddde str r2, [r0, 0x20] | *((r0 + 0x20)) = r2;
0x0001dde0 ldr.w fp, [sl, r3] | fp = *((sl + r3));
0x0001dde4 ldr.w r5, [fp, 8] | r5 = *(arg_8h);
0x0001dde8 cmp r5, 0 |
| if (r5 < 0) {
0x0001ddea blt.w 0x1df04 | goto label_14;
| }
0x0001ddee ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
0x0001ddf0 cmp r3, 0 |
| if (r3 == 0) {
0x0001ddf2 beq.w 0x1df04 | goto label_14;
| }
0x0001ddf6 ldrsb r3, [r3, r5] | r3 = *((r3 + r5));
0x0001ddf8 cmp r3, 0 |
| if (r3 < 0) {
0x0001ddfa blt.w 0x1df04 | goto label_14;
| }
0x0001ddfe cmp r3, 5 |
| if (r3 > 5) {
0x0001de00 bgt.w 0x1df0c | goto label_15;
| }
| label_1:
0x0001de04 add.w r3, r4, 0x3c | r3 = r4 + 0x3c;
0x0001de08 add.w r8, r4, 0x34 | r8 = r4 + 0x34;
0x0001de0c str r3, [r4, 0x3c] | *((r4 + 0x3c)) = r3;
0x0001de0e add.w r0, r4, 0x2c | r0 = r4 + 0x2c;
0x0001de12 str r3, [r4, 0x40] | *((r4 + 0x40)) = r3;
0x0001de14 add.w r3, r4, 0x44 | r3 = r4 + 0x44;
0x0001de18 str r3, [r4, 0x44] | *((r4 + 0x44)) = r3;
0x0001de1a str r3, [r4, 0x48] | *((r4 + 0x48)) = r3;
0x0001de1c add.w r3, r4, 0x4c | r3 = r4 + 0x4c;
0x0001de20 str.w r8, [r4, 0x34] | __asm ("str.w r8, [r4, 0x34]");
0x0001de24 str.w r8, [r4, 0x38] | __asm ("str.w r8, [r4, 0x38]");
0x0001de28 str r3, [r4, 0x4c] | *((r4 + 0x4c)) = r3;
0x0001de2a str r3, [r4, 0x50] | *((r4 + 0x50)) = r3;
0x0001de2c add.w r3, r4, 0x54 | r3 = r4 + 0x54;
0x0001de30 str r3, [r4, 0x54] | *((r4 + 0x54)) = r3;
0x0001de32 str r3, [r4, 0x58] | *((r4 + 0x58)) = r3;
0x0001de34 add.w r3, r4, 0x5c | r3 = r4 + 0x5c;
0x0001de38 str r3, [r4, 0x5c] | *((r4 + 0x5c)) = r3;
0x0001de3a str r3, [r4, 0x60] | *((r4 + 0x60)) = r3;
0x0001de3c blx 0x49e8 | r0 = fcn_000049e8 ();
0x0001de40 mov r5, r0 | r5 = r0;
0x0001de42 cmp r0, 0 |
| if (r0 != 0) {
0x0001de44 bne.w 0x1dd32 | goto label_0;
| }
0x0001de48 ldr r3, [pc, 0x1d0] | r3 = *(0x1e01c);
0x0001de4a ldr.w r5, [sl, r3] | r5 = *((sl + r3));
0x0001de4e ldr r1, [r5] | r1 = *(r5);
0x0001de50 cmp r1, 0 |
| if (r1 != 0) {
0x0001de52 bne 0x1df42 | goto label_16;
| }
| label_2:
0x0001de54 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0001de56 movs r1, 0 | r1 = 0;
0x0001de58 add.w r0, r4, 0x64 | r0 = r4 + 0x64;
0x0001de5c blx 0x4c90 | r0 = loc_imp_ap_run_process_connection ();
0x0001de60 mov r5, r0 | r5 = r0;
0x0001de62 cmp r0, 0 |
| if (r0 != 0) {
0x0001de64 bne.w 0x1dd32 | goto label_0;
| }
0x0001de68 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0001de6a add.w r0, r4, 0x6c | r0 = r4 + 0x6c;
0x0001de6e blx 0x4ac4 | r0 = fcn_00004ac4 ();
0x0001de72 mov r5, r0 | r5 = r0;
0x0001de74 cmp r0, 0 |
| if (r0 != 0) {
0x0001de76 bne.w 0x1dd32 | goto label_0;
| }
0x0001de7a ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0001de7c add.w r0, r4, 0x68 | r0 = r4 + 0x68;
0x0001de80 blx 0x4ac4 | r0 = fcn_00004ac4 ();
0x0001de84 mov r5, r0 | r5 = r0;
0x0001de86 cmp r0, 0 |
| if (r0 != 0) {
0x0001de88 bne.w 0x1dd32 | goto label_0;
| }
0x0001de8c ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x0001de8e blx 0x4c9c | nghttp2_option_set_peer_max_concurrent_streams ();
0x0001de92 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0001de94 ldr r0, [r4, 4] | r0 = *((r4 + 4));
0x0001de96 add.w r1, r1, r1, lsl 1 | r1 += (r1 << 1);
0x0001de9a lsls r1, r1, 4 | r1 <<= 4;
0x0001de9c blx 0x4c6c | loc_imp_apr_thread_mutex_create ();
0x0001dea0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x0001dea2 mov r1, r5 | r1 = r5;
0x0001dea4 add.w r2, r2, r2, lsl 1 | r2 += (r2 << 1);
0x0001dea8 lsls r2, r2, 4 | r2 <<= 4;
0x0001deaa blx 0x4aa0 | fcn_00004aa0 ();
0x0001deae ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001deb0 mov r2, r0 | r2 = r0;
0x0001deb2 str r0, [r4, 0x30] | *((r4 + 0x30)) = r0;
0x0001deb4 cmp r3, 0 |
| if (r3 == 0) {
0x0001deb6 beq 0x1df92 | goto label_17;
| }
0x0001deb8 mov sl, r5 | sl = r5;
0x0001deba mov r5, r8 | r5 = r8;
0x0001debc mov r8, r7 | r8 = r7;
0x0001debe mov r7, sl | r7 = sl;
0x0001dec0 b 0x1ded0 |
| while (r0 == 0) {
0x0001dec2 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0001dec4 adds r7, 1 | r7++;
0x0001dec6 add.w sl, sl, 0x30 | sl += 0x30;
0x0001deca cmp r3, r7 |
| if (r3 < r7) {
0x0001decc bls 0x1df90 | goto label_18;
| }
0x0001dece ldr r2, [r4, 0x30] | r2 = *((r4 + 0x30));
0x0001ded0 add.w r0, r2, sl | r0 = r2 + sl;
0x0001ded4 movs r3, 0 | r3 = 0;
0x0001ded6 str r0, [r0] | *(r0) = r0;
0x0001ded8 str r3, [r0, 0x10] | *((r0 + 0x10)) = r3;
0x0001deda str r0, [r0, 4] | *((r0 + 4)) = r0;
0x0001dedc str r7, [r0, 8] | *((r0 + 8)) = r7;
0x0001dede str r4, [r0, 0x1c] | *((r0 + 0x1c)) = r4;
0x0001dee0 str.w r5, [r2, sl] | __asm ("str.w r5, [r2, sl]");
0x0001dee4 ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0001dee6 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0001dee8 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0001deea ldr r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0001deec str r0, [r3] | *(r3) = r0;
0x0001deee str r0, [r4, 0x38] | *((r4 + 0x38)) = r0;
0x0001def0 adds r0, 0x28 | r0 += 0x28;
0x0001def2 blx 0x4ac4 | r0 = fcn_00004ac4 ();
0x0001def6 cmp r0, 0 |
0x0001def8 beq 0x1dec2 |
| }
| label_4:
0x0001defa mov r5, r0 | r5 = r0;
0x0001defc ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x0001defe blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x0001df02 b 0x1dd32 | goto label_0;
| label_14:
0x0001df04 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0001df06 cmp r3, 5 |
| if (r3 <= 5) {
0x0001df08 ble.w 0x1de04 | goto label_1;
| }
| label_15:
0x0001df0c ldrd r0, r1, [sp, 0x50] | __asm ("ldrd r0, r1, [arg_50h]");
0x0001df10 mov.w r2, 0x3e8 | r2 = 0x3e8;
0x0001df14 movs r3, 0 | r3 = 0;
0x0001df16 bl 0x1ea90 | fcn_0001ea90 (r0, r1, r2, r3);
0x0001df1a ldr r3, [pc, 0x104] |
0x0001df1c movw r1, 0x1d1 | r1 = 0x1d1;
0x0001df20 strd sb, r0, [sp, 0x10] | __asm ("strd sb, r0, [var_10h]");
0x0001df24 mov r2, r5 | r2 = r5;
0x0001df26 ldr r0, [pc, 0xfc] |
0x0001df28 add r3, pc | r3 = 0x3bf4e;
0x0001df2a str.w r8, [sp, 0xc] | __asm ("str.w r8, [var_ch]");
0x0001df2e str r3, [sp, 8] | var_8h = r3;
0x0001df30 movs r3, 0 | r3 = 0;
0x0001df32 str r3, [sp] | *(sp) = r3;
0x0001df34 add r0, pc | r0 = 0x3bf5e;
0x0001df36 movs r3, 6 | r3 = 6;
0x0001df38 str r6, [sp, 4] | var_4h = r6;
0x0001df3a blx 0x4cfc | loc_imp_ap_remove_input_filter_byhandle ();
0x0001df3e ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0001df40 b 0x1de04 | goto label_1;
| label_16:
0x0001df42 ldr r0, [r4, 0x2c] | r0 = *((r4 + 0x2c));
0x0001df44 blx 0x46f0 | loc_imp_apr_threadattr_stacksize_set ();
0x0001df48 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x0001df4c cmp r2, 0 |
| if (r2 < 0) {
0x0001df4e blt 0x1df80 | goto label_19;
| }
0x0001df50 ldr r3, [r6, 0x10] | r3 = *((r6 + 0x10));
| if (r3 == 0) {
0x0001df52 cbz r3, 0x1df80 | goto label_19;
| }
0x0001df54 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0001df56 cmp r3, 0 |
| if (r3 < 0) {
0x0001df58 blt 0x1df80 | goto label_19;
| }
0x0001df5a cmp r3, 9 |
| if (r3 <= 9) {
0x0001df5c ble.w 0x1de54 | goto label_2;
| }
| do {
0x0001df60 ldr r3, [r5] | r3 = *(r5);
0x0001df62 mov.w r1, 0x1e4 | r1 = 0x1e4;
0x0001df66 ldr r0, [pc, 0xc0] |
0x0001df68 str r6, [sp, 4] | var_4h = r6;
0x0001df6a str r3, [sp, 0xc] | var_ch = r3;
0x0001df6c ldr r3, [pc, 0xbc] |
0x0001df6e add r0, pc | r0 = 0x3bf9c;
0x0001df70 add r3, pc | r3 = 0x3bfa0;
0x0001df72 str r3, [sp, 8] | var_8h = r3;
0x0001df74 movs r3, 0 | r3 = 0;
0x0001df76 str r3, [sp] | *(sp) = r3;
0x0001df78 movs r3, 0xa | r3 = 0xa;
0x0001df7a blx 0x4cfc | loc_imp_ap_remove_input_filter_byhandle ();
0x0001df7e b 0x1de54 | goto label_2;
| label_19:
0x0001df80 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x0001df82 cmp r3, 9 |
0x0001df84 bgt 0x1df60 |
| } while (r3 > 9);
0x0001df86 b 0x1de54 | goto label_2;
| label_13:
0x0001df88 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0001df8a blx 0x4ca8 | loc_imp_apr_dynamic_fn_retrieve ();
0x0001df8e b 0x1dd2c | goto label_3;
| label_18:
0x0001df90 mov r7, r8 | r7 = r8;
| label_17:
0x0001df92 ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
| if (r3 == 0) {
0x0001df94 cbz r3, 0x1dfb2 | goto label_20;
| }
0x0001df96 mov.w r8, 0 | r8 = 0;
0x0001df9a b 0x1dfa6 |
| while (r0 == 0) {
0x0001df9c ldr r3, [r4, 0xc] | r3 = *((r4 + 0xc));
0x0001df9e add.w r8, r8, 1 | r8++;
0x0001dfa2 cmp r3, r8 |
| if (r3 < r8) {
0x0001dfa4 bls 0x1dfb2 | goto label_20;
| }
0x0001dfa6 mov r0, r4 | r0 = r4;
0x0001dfa8 bl 0x1d598 | r0 = fcn_0001d598 (r0);
0x0001dfac cmp r0, 0 |
0x0001dfae beq 0x1df9c |
| }
0x0001dfb0 b 0x1defa | goto label_4;
| label_20:
0x0001dfb2 ldr r0, [r4, 0x64] | r0 = *((r4 + 0x64));
0x0001dfb4 blx 0x50a4 | loc_imp_ap_hook_post_config ();
0x0001dfb8 ldr r2, [pc, 0x74] |
0x0001dfba mov r1, r4 | r1 = r4;
0x0001dfbc mov r0, r7 | r0 = r7;
0x0001dfbe add r2, pc | r2 = 0x3bff2;
0x0001dfc0 blx 0x5210 | fcn_00005210 ();
0x0001dfc4 b 0x1dd6a | goto label_5;
| label_8:
0x0001dfc6 ldr r1, [pc, 0x6c] |
0x0001dfc8 movw r2, 0x1b3 | r2 = 0x1b3;
0x0001dfcc ldr r0, [pc, 0x68] |
0x0001dfce add r1, pc | r1 = 0x3c008;
0x0001dfd0 add r0, pc | r0 = 0x3c00c;
0x0001dfd2 blx 0x4e40 | loc_imp_apr_socket_create ();
| label_7:
0x0001dfd6 ldr r1, [pc, 0x64] |
0x0001dfd8 mov.w r2, 0x1b2 | r2 = 0x1b2;
0x0001dfdc ldr r0, [pc, 0x60] |
0x0001dfde add r1, pc | r1 = 0x3c020;
0x0001dfe0 add r0, pc | r0 = 0x3c024;
0x0001dfe2 blx 0x4e40 | loc_imp_apr_socket_create ();
| label_6:
0x0001dfe6 ldr r1, [pc, 0x5c] |
0x0001dfe8 movw r2, 0x1b1 | r2 = 0x1b1;
0x0001dfec ldr r0, [pc, 0x58] |
0x0001dfee add r1, pc | r1 = 0x3c038;
0x0001dff0 add r0, pc | r0 = 0x3c03c;
0x0001dff2 blx 0x4e40 | loc_imp_apr_socket_create ();
| label_12:
0x0001dff6 blx 0x4d80 | loc_imp_apr_file_read ();
0x0001dffa nop |
0x0001dffc ldr r6, [sp, 0x148] | r6 = *(arg_148h);
0x0001dffe movs r0, r0 |
0x0001e000 lsls r4, r6, 0x10 | r4 = r6 << 0x10;
0x0001e002 movs r0, r0 |
0x0001e004 ldr r6, [sp, 0x128] | r6 = *(arg_128h);
0x0001e006 movs r0, r0 |
0x0001e008 lsls r0, r1, 0x12 | r0 = r1 << 0x12;
0x0001e00a movs r0, r0 |
0x0001e00c strh r6, [r7, 0xa] | *((r7 + 0xa)) = r6;
0x0001e00e movs r0, r0 |
0x0001e010 ldrb r4, [r2, 0x1a] | r4 = *((r2 + 0x1a));
0x0001e012 movs r0, r0 |
0x0001e014 ldr r5, [sp, 0x358] | r5 = *(arg_358h);
0x0001e016 movs r0, r0 |
0x0001e018 strh r4, [r1, 6] | *((r1 + 6)) = r4;
0x0001e01a movs r0, r0 |
0x0001e01c lsls r0, r4, 0x11 | r0 = r4 << 0x11;
0x0001e01e movs r0, r0 |
0x0001e020 ldrb r0, [r3, 0x1d] | r0 = *((r3 + 0x1d));
0x0001e022 movs r0, r0 |
0x0001e024 ldrb r0, [r7, 0x12] | r0 = *((r7 + 0x12));
0x0001e026 movs r0, r0 |
0x0001e028 ldrb r6, [r7, 0x11] | r6 = *((r7 + 0x11));
0x0001e02a movs r0, r0 |
0x0001e02c ldrb r4, [r0, 0x1d] | r4 = *((r0 + 0x1d));
0x0001e02e movs r0, r0 |
0x0001e030 invalid |
| }
; 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 @ 0x1e46e */
| #include <stdint.h>
|
; (fcn) fcn.0001e46e () | uint32_t fcn_0001e46e (int16_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0001e470 svclt 0x480c01 | __asm ("svclt 0x480c01");
0x0001e474 rsbs r1, r1, 0 | r1 -= ;
0x0001e476 subs r2, r1, 1 | r2 = r1 - 1;
| if (r2 != r1) {
0x0001e478 beq.w 0x1e6ba |
0x0001e47c movs r3, r0 | r3 = r0;
0x0001e47e it mi |
| if (r3 < r0) {
0x0001e480 rsbmi r3, r0, 0 | __asm ("rsbmi r3, r0, 0");
| }
0x0001e482 cmp r3, r1 |
| if (r3 < r1) {
0x0001e484 bls.w 0x1e6c4 | goto label_0;
| }
0x0001e488 tst r1, r2 |
| if ((r1 & r2) == 0) {
0x0001e48a beq.w 0x1e6d4 | goto label_1;
| }
0x0001e48e clz r2, r3 | r2 &= r3;
0x0001e492 clz r0, r1 | r0 &= r1;
0x0001e496 sub.w r2, r0, r2 | r2 = r0 - r2;
0x0001e49a rsb.w r2, r2, 0x1f | r2 = 0x1f - r2;
0x0001e49e adr r0, 0x10 | r0 = 0x10;
0x0001e4a0 add.w r2, r0, r2, lsl 4 | r2 = r0 + (r2 << 4);
0x0001e4a4 mov.w r0, 0 | r0 = 0;
0x0001e4a8 mov pc, r2 | pc = r2;
0x0001e4aa nop |
0x0001e4ac nop.w |
0x0001e4b0 cmp.w r3, r1, lsl 31 |
0x0001e4b4 nop |
0x0001e4b6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e4ba it hs |
| if (r3 < r1) {
0x0001e4bc subhs r3, r3, r1, lsl 31 | r3 -= (r1 << 31);
| }
0x0001e4c0 cmp.w r3, r1, lsl 30 |
0x0001e4c4 nop |
0x0001e4c6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e4ca it hs |
| if (r3 < r1) {
0x0001e4cc subhs r3, r3, r1, lsl 30 | r3 -= (r1 << 30);
| }
0x0001e4d0 cmp.w r3, r1, lsl 29 |
0x0001e4d4 nop |
0x0001e4d6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e4da it hs |
| if (r3 < r1) {
0x0001e4dc subhs r3, r3, r1, lsl 29 | r3 -= (r1 << 29);
| }
0x0001e4e0 cmp.w r3, r1, lsl 28 |
0x0001e4e4 nop |
0x0001e4e6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e4ea it hs |
| if (r3 < r1) {
0x0001e4ec subhs r3, r3, r1, lsl 28 | r3 -= (r1 << 28);
| }
0x0001e4f0 cmp.w r3, r1, lsl 27 |
0x0001e4f4 nop |
0x0001e4f6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e4fa it hs |
| if (r3 < r1) {
0x0001e4fc subhs r3, r3, r1, lsl 27 | r3 -= (r1 << 27);
| }
0x0001e500 cmp.w r3, r1, lsl 26 |
0x0001e504 nop |
0x0001e506 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e50a it hs |
| if (r3 < r1) {
0x0001e50c subhs r3, r3, r1, lsl 26 | r3 -= (r1 << 26);
| }
0x0001e510 cmp.w r3, r1, lsl 25 |
0x0001e514 nop |
0x0001e516 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e51a it hs |
| if (r3 < r1) {
0x0001e51c subhs r3, r3, r1, lsl 25 | r3 -= (r1 << 25);
| }
0x0001e520 cmp.w r3, r1, lsl 24 |
0x0001e524 nop |
0x0001e526 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e52a it hs |
| if (r3 < r1) {
0x0001e52c subhs r3, r3, r1, lsl 24 | r3 -= (r1 << 24);
| }
0x0001e530 cmp.w r3, r1, lsl 23 |
0x0001e534 nop |
0x0001e536 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e53a it hs |
| if (r3 < r1) {
0x0001e53c subhs r3, r3, r1, lsl 23 | r3 -= (r1 << 23);
| }
0x0001e540 cmp.w r3, r1, lsl 22 |
0x0001e544 nop |
0x0001e546 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e54a it hs |
| if (r3 < r1) {
0x0001e54c subhs r3, r3, r1, lsl 22 | r3 -= (r1 << 22);
| }
0x0001e550 cmp.w r3, r1, lsl 21 |
0x0001e554 nop |
0x0001e556 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e55a it hs |
| if (r3 < r1) {
0x0001e55c subhs r3, r3, r1, lsl 21 | r3 -= (r1 << 21);
| }
0x0001e560 cmp.w r3, r1, lsl 20 |
0x0001e564 nop |
0x0001e566 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e56a it hs |
| if (r3 < r1) {
0x0001e56c subhs r3, r3, r1, lsl 20 | r3 -= (r1 << 20);
| }
0x0001e570 cmp.w r3, r1, lsl 19 |
0x0001e574 nop |
0x0001e576 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e57a it hs |
| if (r3 < r1) {
0x0001e57c subhs r3, r3, r1, lsl 19 | r3 -= (r1 << 19);
| }
0x0001e580 cmp.w r3, r1, lsl 18 |
0x0001e584 nop |
0x0001e586 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e58a it hs |
| if (r3 < r1) {
0x0001e58c subhs r3, r3, r1, lsl 18 | r3 -= (r1 << 18);
| }
0x0001e590 cmp.w r3, r1, lsl 17 |
0x0001e594 nop |
0x0001e596 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e59a it hs |
| if (r3 < r1) {
0x0001e59c subhs r3, r3, r1, lsl 17 | r3 -= (r1 << 17);
| }
0x0001e5a0 cmp.w r3, r1, lsl 16 |
0x0001e5a4 nop |
0x0001e5a6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e5aa it hs |
| if (r3 < r1) {
0x0001e5ac subhs r3, r3, r1, lsl 16 | r3 -= (r1 << 16);
| }
0x0001e5b0 cmp.w r3, r1, lsl 15 |
0x0001e5b4 nop |
0x0001e5b6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e5ba it hs |
| if (r3 < r1) {
0x0001e5bc subhs r3, r3, r1, lsl 15 | r3 -= (r1 << 15);
| }
0x0001e5c0 cmp.w r3, r1, lsl 14 |
0x0001e5c4 nop |
0x0001e5c6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e5ca it hs |
| if (r3 < r1) {
0x0001e5cc subhs r3, r3, r1, lsl 14 | r3 -= (r1 << 14);
| }
0x0001e5d0 cmp.w r3, r1, lsl 13 |
0x0001e5d4 nop |
0x0001e5d6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e5da it hs |
| if (r3 < r1) {
0x0001e5dc subhs r3, r3, r1, lsl 13 | r3 -= (r1 << 13);
| }
0x0001e5e0 cmp.w r3, r1, lsl 12 |
0x0001e5e4 nop |
0x0001e5e6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e5ea it hs |
| if (r3 < r1) {
0x0001e5ec subhs r3, r3, r1, lsl 12 | r3 -= (r1 << 12);
| }
0x0001e5f0 cmp.w r3, r1, lsl 11 |
0x0001e5f4 nop |
0x0001e5f6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e5fa it hs |
| if (r3 < r1) {
0x0001e5fc subhs r3, r3, r1, lsl 11 | r3 -= (r1 << 11);
| }
0x0001e600 cmp.w r3, r1, lsl 10 |
0x0001e604 nop |
0x0001e606 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e60a it hs |
| if (r3 < r1) {
0x0001e60c subhs r3, r3, r1, lsl 10 | r3 -= (r1 << 10);
| }
0x0001e610 cmp.w r3, r1, lsl 9 |
0x0001e614 nop |
0x0001e616 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e61a it hs |
| if (r3 < r1) {
0x0001e61c subhs r3, r3, r1, lsl 9 | r3 -= (r1 << 9);
| }
0x0001e620 cmp.w r3, r1, lsl 8 |
0x0001e624 nop |
0x0001e626 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e62a it hs |
| if (r3 < r1) {
0x0001e62c subhs r3, r3, r1, lsl 8 | r3 -= (r1 << 8);
| }
0x0001e630 cmp.w r3, r1, lsl 7 |
0x0001e634 nop |
0x0001e636 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e63a it hs |
| if (r3 < r1) {
0x0001e63c subhs r3, r3, r1, lsl 7 | r3 -= (r1 << 7);
| }
0x0001e640 cmp.w r3, r1, lsl 6 |
0x0001e644 nop |
0x0001e646 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e64a it hs |
| if (r3 < r1) {
0x0001e64c subhs r3, r3, r1, lsl 6 | r3 -= (r1 << 6);
| }
0x0001e650 cmp.w r3, r1, lsl 5 |
0x0001e654 nop |
0x0001e656 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e65a it hs |
| if (r3 < r1) {
0x0001e65c subhs r3, r3, r1, lsl 5 | r3 -= (r1 << 5);
| }
0x0001e660 cmp.w r3, r1, lsl 4 |
0x0001e664 nop |
0x0001e666 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e66a it hs |
| if (r3 < r1) {
0x0001e66c subhs r3, r3, r1, lsl 4 | r3 -= (r1 << 4);
| }
0x0001e670 cmp.w r3, r1, lsl 3 |
0x0001e674 nop |
0x0001e676 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e67a it hs |
| if (r3 < r1) {
0x0001e67c subhs r3, r3, r1, lsl 3 | r3 -= (r1 << 3);
| }
0x0001e680 cmp.w r3, r1, lsl 2 |
0x0001e684 nop |
0x0001e686 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e68a it hs |
| if (r3 < r1) {
0x0001e68c subhs r3, r3, r1, lsl 2 | r3 -= (r1 << 2);
| }
0x0001e690 cmp.w r3, r1, lsl 1 |
0x0001e694 nop |
0x0001e696 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e69a it hs |
| if (r3 < r1) {
0x0001e69c subhs r3, r3, r1, lsl 1 | r3 -= (r1 << 1);
| }
0x0001e6a0 cmp.w r3, r1 |
0x0001e6a4 nop |
0x0001e6a6 adc.w r0, r0, r0 | __asm ("adc.w r0, r0, r0");
0x0001e6aa it hs |
| if (r3 < r1) {
0x0001e6ac subhs r3, r3, r1 | r3 -= r1;
| }
0x0001e6b0 cmp.w ip, 0 |
0x0001e6b4 it mi |
| if (ip < 0) {
0x0001e6b6 rsbmi r0, r0, 0 | __asm ("rsbmi r0, r0, 0");
| }
0x0001e6b8 bx lr | return r0;
| }
0x0001e6ba teq.w ip, r0 | __asm ("teq.w ip, r0");
0x0001e6be it mi |
| if (ip < 0) {
0x0001e6c0 rsbmi r0, r0, 0 | __asm ("rsbmi r0, r0, 0");
| }
0x0001e6c2 bx lr | return r0;
| label_0:
0x0001e6c4 it lo |
| if (ip >= 0) {
0x0001e6c6 movlo r0, 0 | r0 = 0;
| }
0x0001e6c8 itt eq |
| if (ip == 0) {
0x0001e6ca asreq r0, ip, 0x1f | __asm ("asreq r0, ip, 0x1f");
| }
| if (ip == 0) {
0x0001e6ce orr r0, r0, 1 | r0 |= 1;
| }
0x0001e6d2 bx lr | return r0;
| label_1:
0x0001e6d4 clz r2, r1 | r2 &= r1;
0x0001e6d8 rsb.w r2, r2, 0x1f | r2 = 0x1f - r2;
0x0001e6dc cmp.w ip, 0 |
0x0001e6e0 lsr.w r0, r3, r2 | r0 = r3 >> r2;
0x0001e6e4 it mi |
| if (ip < 0) {
0x0001e6e6 rsbmi r0, r0, 0 | __asm ("rsbmi r0, r0, 0");
| }
0x0001e6e8 bx lr | return r0;
| }
; 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 @ 0x1eb3c */
| #include <stdint.h>
|
; (fcn) fcn.0001eb3c () | void fcn_0001eb3c (int16_t arg_1ch, uint32_t arg1, int16_t arg2, int16_t arg3, uint32_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0001eb3c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x0001eb40 cmp r0, r2 |
0x0001eb42 mov r5, r1 | r5 = r1;
0x0001eb44 mov r4, r0 | r4 = r0;
0x0001eb46 sbcs.w r1, r5, r3 | __asm ("sbcs.w r1, r5, r3");
0x0001eb4a it lo |
| if (r0 >= r2) {
0x0001eb4c movlo r0, 0 | r0 = 0;
| }
0x0001eb4e ldr r7, [sp, 0x1c] | r7 = *(arg_1ch);
0x0001eb50 it lo |
| if (r0 >= r2) {
0x0001eb52 movlo r1, r0 | r1 = r0;
| }
| if (r0 <= r2) {
0x0001eb54 blo 0x1ec1c | goto label_3;
| }
0x0001eb56 clz r6, r3 | r6 &= r3;
0x0001eb5a cmp r3, 0 |
| if (r3 == 0) {
0x0001eb5c beq 0x1ec2e | goto label_4;
| }
0x0001eb5e clz r1, r5 | r1 &= r5;
0x0001eb62 cmp r5, 0 |
| if (r5 == 0) {
0x0001eb64 beq 0x1ec26 | goto label_2;
| }
| label_1:
0x0001eb66 subs r6, r6, r1 | r6 -= r1;
0x0001eb68 sub.w ip, r6, 0x20 |
0x0001eb6c lsls r3, r6 | r3 <<= r6;
0x0001eb6e lsl.w r1, r2, ip | r1 = r2 << ip;
0x0001eb72 rsb.w lr, r6, 0x20 | lr = 0x20 - r6;
0x0001eb76 orrs r3, r1 | r3 |= r1;
0x0001eb78 lsr.w r1, r2, lr | r1 = r2 >> lr;
0x0001eb7c lsls r2, r6 | r2 <<= r6;
0x0001eb7e orrs r3, r1 | r3 |= r1;
0x0001eb80 cmp r4, r2 |
0x0001eb82 sbcs.w r1, r5, r3 | __asm ("sbcs.w r1, r5, r3");
0x0001eb86 itt lo |
| if (r4 >= r2) {
0x0001eb88 movlo r0, 0 | r0 = 0;
| }
| if (r4 >= r2) {
0x0001eb8a movlo r1, r0 | r1 = r0;
| }
| if (r4 > r2) {
0x0001eb8c blo 0x1eba6 |
0x0001eb8e movs r0, 1 | r0 = 1;
0x0001eb90 subs r4, r4, r2 | r4 -= r2;
0x0001eb92 lsl.w r1, r0, ip | r1 = r0 << ip;
0x0001eb96 lsr.w r8, r0, lr | r8 = r0 >> lr;
0x0001eb9a lsl.w r0, r0, r6 | r0 <<= r6;
0x0001eb9e sbc.w r5, r5, r3 | __asm ("sbc.w r5, r5, r3");
0x0001eba0 lsls r3, r0, 0x14 | r3 = r0 << 0x14;
0x0001eba2 orr.w r1, r1, r8 | r1 |= r8;
| }
| if (r6 == 0) {
0x0001eba6 cbz r6, 0x1ec1c | goto label_3;
| }
0x0001eba8 lsrs r2, r2, 1 | r2 >>= 1;
0x0001ebaa mov r8, r6 | r8 = r6;
0x0001ebac orr.w r2, r2, r3, lsl 31 | r2 |= (r3 << 31);
0x0001ebb0 lsrs r3, r3, 1 | r3 >>= 1;
0x0001ebb2 b 0x1ebca |
| while (r4 >= r2) {
0x0001ebb4 subs r4, r4, r2 | r4 -= r2;
0x0001ebb6 sbc.w r5, r5, r3 | __asm ("sbc.w r5, r5, r3");
0x0001ebba adds r4, r4, r4 | r4 += r4;
0x0001ebbc adcs r5, r5 | __asm ("adcs r5, r5");
0x0001ebbe adds r4, 1 | r4++;
0x0001ebc0 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x0001ebc4 subs.w r8, r8, 1 | r8--;
| if (r8 == r8) {
0x0001ebc8 beq 0x1ebdc | goto label_5;
| }
| label_0:
0x0001ebca cmp r4, r2 |
0x0001ebcc sbcs.w sb, r5, r3 | __asm ("sbcs.w sb, r5, r3");
0x0001ebd0 bhs 0x1ebb4 |
| }
0x0001ebd2 adds r4, r4, r4 | r4 += r4;
0x0001ebd4 adcs r5, r5 | __asm ("adcs r5, r5");
0x0001ebd6 subs.w r8, r8, 1 | r8--;
| if (r8 != r8) {
0x0001ebda bne 0x1ebca | goto label_0;
| }
| label_5:
0x0001ebdc adds r0, r0, r4 | r0 += r4;
0x0001ebde lsl.w lr, r5, lr | lr = r5 << lr;
0x0001ebe2 lsr.w r4, r4, r6 | r4 >>= r6;
0x0001ebe6 lsr.w ip, r5, ip |
0x0001ebea adc.w r1, r1, r5 | __asm ("adc.w r1, r1, r5");
0x0001ebee orr.w r4, r4, lr | r4 |= lr;
0x0001ebf2 lsrs r5, r6 | r5 >>= r6;
0x0001ebf4 orr.w r4, r4, ip | r4 |= ip;
0x0001ebf8 sub.w ip, r6, 0x20 |
0x0001ebfc lsl.w ip, r4, ip |
0x0001ec00 lsl.w r2, r5, r6 | r2 = r5 << r6;
0x0001ec02 bl 0x624f92 | void (*0x624f92)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0001ec06 lsls r0, r4, 0xc | r0 = r4 << 0xc;
0x0001ec08 orr.w r2, r2, ip | r2 |= ip;
0x0001ec0c lsr.w r3, r4, r3 | r3 = r4 >> r3;
0x0001ec10 orrs r2, r3 | r2 |= r3;
0x0001ec12 lsl.w r3, r4, r6 | r3 = r4 << r6;
0x0001ec16 subs r0, r0, r3 | r0 -= r3;
0x0001ec18 sbc.w r1, r1, r2 | __asm ("sbc.w r1, r1, r2");
| if (r7 != 0) {
| label_3:
0x0001ec1c cbz r7, 0x1ec22 |
0x0001ec1e strd r4, r5, [r7] | __asm ("strd r4, r5, [r7]");
| }
0x0001ec22 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x0001ec26 clz r1, r4 | r1 &= r4;
0x0001ec2a adds r1, 0x20 | r1 += 0x20;
0x0001ec2c b 0x1eb66 | goto label_1;
| label_4:
0x0001ec2e clz r6, r2 | r6 &= r2;
0x0001ec32 clz r1, r5 | r1 &= r5;
0x0001ec36 adds r6, 0x20 | r6 += 0x20;
0x0001ec38 cmp r5, 0 |
| if (r5 != 0) {
0x0001ec3a bne 0x1eb66 | goto label_1;
| }
0x0001ec3c b 0x1ec26 | goto label_2;
| }
[*] Function mmap used 1 times mod_http2.so