[*] Binary protection state of httpd
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function strcpy tear down of httpd
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x3ecf4 */
| #include <stdint.h>
|
; (fcn) sym.ap_cookie_read () | void ap_cookie_read (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_18h_3;
| int16_t var_1ch_3;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0003ecf4 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0003ecf8 mov r7, r2 | r7 = r2;
0x0003ecfa ldr r2, [pc, 0xc8] |
0x0003ecfc mov r8, r3 | r8 = r3;
0x0003ecfe sub sp, 0x30 |
0x0003ed00 movs r5, 0 | r5 = 0;
0x0003ed02 ldr r3, [pc, 0xc4] | r3 = *(0x3edca);
0x0003ed04 mov r6, r1 | r6 = r1;
0x0003ed06 add r2, pc | r2 = 0x7dad0;
0x0003ed08 mov r4, r0 | r4 = r0;
0x0003ed0a movs r1, 0xa | r1 = 0xa;
0x0003ed0c ldr.w sl, [pc, 0xbc] | sl = *(0x0003edcc);
0x0003ed10 ldr r3, [r2, r3] |
0x0003ed12 ldr.w sb, [pc, 0xbc] |
0x0003ed16 add sl, pc | sl += pc;
0x0003ed18 ldr r3, [r3] | r3 = *(0x7dad0);
0x0003ed1a str r3, [sp, 0x2c] | var_2ch = r3;
0x0003ed1c mov.w r3, 0 | r3 = 0;
0x0003ed20 str r0, [sp, 0x18] | var_18h_3 = r0;
0x0003ed22 ldr r0, [r0] | r0 = *(r0);
0x0003ed24 add sb, pc | sb = 0x7dafa;
0x0003ed26 str r5, [sp, 0x20] | var_20h = r5;
0x0003ed28 blx 0x17f40 | fcn_00017f40 ();
0x0003ed2c str r0, [sp, 0x24] | var_24h = r0;
0x0003ed2e mov r3, sl | r3 = sl;
0x0003ed30 ldr r0, [pc, 0xa0] |
0x0003ed32 add r1, sp, 0x18 | r1 += var_18h_3;
0x0003ed34 strd sb, r5, [sp] | __asm ("strd sb, r5, [sp]");
0x0003ed38 ldr.w r2, [r4, 0xb0] | r2 = *((r4 + 0xb0));
0x0003ed3c add r0, pc | r0 = 0x7db14;
0x0003ed3e str r6, [sp, 0x1c] | var_1ch_3 = r6;
0x0003ed40 str r5, [sp, 0x28] | var_28h = r5;
0x0003ed42 blx 0x17ddc | fcn_00017ddc ();
0x0003ed46 ldr r6, [sp, 0x28] | r6 = var_28h;
| if (r6 != 0) {
0x0003ed48 cbnz r6, 0x3ed96 | goto label_1;
| }
0x0003ed4a cmp.w r8, 0 |
0x0003ed4e bne 0x3ed70 |
| while (1) {
0x0003ed50 ldr r3, [sp, 0x20] | r3 = var_20h;
0x0003ed52 str r3, [r7] | *(r7) = r3;
| label_0:
0x0003ed54 ldr r2, [pc, 0x80] |
0x0003ed56 ldr r3, [pc, 0x70] | r3 = *(0x3edca);
0x0003ed58 add r2, pc | r2 = 0x7db34;
0x0003ed5a ldr r3, [r2, r3] | r3 = *(0x7db34);
0x0003ed5c ldr r2, [r3] | r2 = *(0x7db34);
0x0003ed5e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0003ed60 eors r2, r3 | r2 ^= r3;
0x0003ed62 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0003ed66 bne 0x3edc0 | goto label_2;
| }
0x0003ed68 mov r0, r6 | r0 = r6;
0x0003ed6a add sp, 0x30 |
0x0003ed6c pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0003ed70 ldr.w r0, [r4, 0xb0] | r0 = *((r4 + 0xb0));
0x0003ed74 mov r1, sl | r1 = sl;
0x0003ed76 blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x0003ed7a ldr.w r0, [r4, 0xb0] | r0 = *((r4 + 0xb0));
0x0003ed7e mov r1, sb | r1 = sb;
0x0003ed80 blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x0003ed84 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0003ed86 ldr.w r1, [r4, 0xb0] | r1 = *((r4 + 0xb0));
0x0003ed8a ldr r0, [r4] | r0 = *(r4);
0x0003ed8c blx 0x18140 | strcpy (r0, r1)
0x0003ed90 str.w r0, [r4, 0xb0] | __asm ("str.w r0, [r4, 0xb0]");
0x0003ed94 b 0x3ed50 |
| }
| label_1:
0x0003ed96 ldr.w r0, [r4, 0xe4] | r0 = *((r4 + 0xe4));
0x0003ed9a movs r3, 3 | r3 = 3;
0x0003ed9c ldr r1, [sp, 0x1c] | r1 = var_1ch_3;
0x0003ed9e mov r2, r5 | r2 = r5;
0x0003eda0 ldr r6, [pc, 0x38] |
0x0003eda2 str r4, [sp, 4] | var_4h_2 = r4;
0x0003eda4 strd r1, r0, [sp, 0xc] | __asm ("strd r1, r0, [sp, 0xc]");
0x0003eda8 movw r1, 0x103 | r1 = 0x103;
0x0003edac ldr r0, [pc, 0x30] |
0x0003edae add r6, pc | r6 = 0x7db8e;
0x0003edb0 str r6, [sp, 8] | var_8h_2 = r6;
0x0003edb2 movw r6, 0x4e2e | r6 = 0x4e2e;
0x0003edb6 str r5, [sp] | *(sp) = r5;
0x0003edb8 add r0, pc | r0 = 0x7db9c;
0x0003edba bl 0x38a7c | ap_log_rerror_ ();
0x0003edbe b 0x3ed54 | goto label_0;
| label_2:
0x0003edc0 blx 0x1845c | fcn_0001845c ();
0x0003edc4 ldc2 p0, c0, [r2], -4 | __asm ("ldc2 p0, c0, [r2], -4");
0x0003edc8 lsls r0, r5, 0x18 | r0 = r5 << 0x18;
0x0003edca movs r0, r0 |
0x0003edcc ldrh r2, [r1, r7] | r2 = *((r1 + r7));
0x0003edce movs r1, r0 | r1 = r0;
0x0003edd0 ldr r4, [r1, 0x68] | r4 = *((r1 + 0x68));
0x0003edd2 movs r1, r0 | r1 = r0;
0x0003edd4 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x467d8 */
| #include <stdint.h>
|
; (fcn) sym.ap_http_filter () | void ap_http_filter (int16_t arg_1h, int16_t arg_4h, int16_t arg_8h, int16_t arg_108h, int16_t arg_10ch, int16_t arg1, int16_t arg2, uint32_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;
| int32_t var_18h;
| int32_t var_18h_2;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_cch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000467d8 svcmi 0xf0e92d | __asm ("svcmi aav.0x000000ff");
0x000467dc mov r8, r0 | r8 = r0;
0x000467de ldr.w r5, [pc, 0xb54] |
0x000467e2 cmp r2, 1 |
0x000467e4 ldr.w r4, [pc, 0xb50] | r4 = *(0x47338);
0x000467e8 add r5, pc | r5 = 0x8db22;
0x000467ea vpush {d8, d9} | __asm ("vpush {d8, d9}");
0x000467ee ldr.w sb, [pc, 0xb4c] | sb = sym.imp.strcpy
0x000467f2 sub sp, 0xd4 |
0x000467f4 ldr r4, [r5, r4] |
0x000467f6 ldr r0, [r0, 0xc] | r0 = *((r0 + 0xc));
0x000467f8 add sb, pc | sb += pc;
0x000467fa ldr r6, [sp, 0x108] | r6 = *(arg_108h);
0x000467fc ldr r4, [r4] | r4 = *(0x8db22);
0x000467fe str r4, [sp, 0xcc] | var_cch = r4;
0x00046800 mov.w r4, 0 | r4 = 0;
0x00046804 ldr.w r4, [pc, 0xb38] |
0x00046808 ldr.w sl, [r8, 4] | sl = *((r8 + 4));
0x0004680c ldr.w r4, [sb, r4] | r4 = *((sb + r4));
0x00046810 str r6, [sp, 0x2c] | var_2ch = r6;
0x00046812 ldr r6, [sp, 0x10c] | r6 = *(arg_10ch);
0x00046814 ldr r5, [r4, 8] | r5 = *(0x47348);
0x00046816 ldr r4, [r0, 8] | r4 = *((r0 + 8));
0x00046818 str r3, [sp, 0x24] | var_24h = r3;
0x0004681a str r6, [sp, 0x30] | var_30h = r6;
0x0004681c ldr r4, [r4, 0x18] |
0x0004681e ldr.w r4, [r4, r5, lsl 2] | r4 = *(0x47358);
0x00046822 str r4, [sp, 0x40] | var_40h = r4;
0x00046824 ldrb.w r4, [r4, 0x41] | r4 = *((r4 + 0x41));
0x00046828 str r4, [sp, 0x3c] | var_3ch = r4;
| if (r2 > 1) {
0x0004682a bhi.w 0x46b74 | goto label_68;
| }
0x0004682e mov fp, r1 |
0x00046830 mov r5, r2 | r5 = r2;
0x00046832 cmp.w sl, 0 |
| if (sl == 0) {
0x00046836 beq.w 0x46dec | goto label_69;
| }
| label_15:
0x0004683a ldr r3, [sp, 0x24] | r3 = var_24h;
0x0004683c ldrb.w r6, [sl, 0x28] | r6 = *((sl + 0x28));
0x00046840 and r1, r6, 1 | r1 = r6 & 1;
0x00046844 cmp r3, 0 |
| if (r3 == 0) {
0x00046846 beq.w 0x46a48 | goto label_70;
| }
| label_0:
0x0004684a cmp r1, 0 |
| if (r1 != 0) {
0x0004684c bne.w 0x46aae | goto label_71;
| }
| label_1:
0x00046850 add r3, sp, 0x5c | r3 += var_5ch;
0x00046852 str r3, [sp, 0x28] | var_28h = r3;
0x00046854 mov r3, r5 | r3 = r5;
0x00046856 mov r5, r8 | r5 = r8;
0x00046858 mov r8, fp | r8 = fp;
0x0004685a mov fp, r3 |
| label_8:
0x0004685c mov r0, r8 | r0 = r8;
0x0004685e blx 0x1825c | fcn_0001825c ();
0x00046862 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00046864 adds r0, 0x24 | r0 += 0x24;
0x00046866 cmp r3, 0xa |
| if (r3 > 0xa) {
0x00046868 bhi.w 0x4756e | goto label_72;
| }
| /* switch table (12 cases) at 0x46870 */
0x0004686c tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
0x00046886 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00046888 movs r2, 1 | r2 = 1;
0x0004688a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0004688e mov r1, r8 | r1 = r8;
0x00046890 mov r3, r4 | r3 = r4;
0x00046892 vstr d16, [sp] | __asm ("vstr d16, [sp]");
0x00046896 ldr r0, [r5, 8] | r0 = *((r5 + 8));
0x00046898 bl 0x20578 | ap_get_brigade ();
0x0004689c cmp r4, 1 |
| if (r4 != 1) {
0x0004689e bne.w 0x46bba | goto label_73;
| }
0x000468a2 cmp r0, 0 |
| if (r0 != 0) {
0x000468a4 bne.w 0x46fca | goto label_74;
| }
0x000468a8 mov ip, r8 |
0x000468aa ldr r3, [ip, 4]! | r3 = *((ip += 4));
0x000468ae cmp r3, ip |
| if (r3 == ip) {
0x000468b0 beq.w 0x46b70 | goto label_18;
| }
| label_3:
0x000468b4 ldr.w r4, [r8, 4] | r4 = *((r8 + 4));
0x000468b8 cmp ip, r4 |
| if (ip == r4) {
0x000468ba beq.w 0x46c4c | goto label_75;
| }
0x000468be vmov.i32 d9, 0 | __asm ("vmov.i32 d9, 0");
0x000468c2 mov r7, ip | r7 = ip;
0x000468c4 mov r6, r8 | r6 = r8;
0x000468c6 add r3, sp, 0x60 | r3 += var_60h;
0x000468c8 str r3, [sp, 0x38] | var_38h = r3;
0x000468ca str.w fp, [sp, 0x54] | __asm ("str.w fp, [var_54h]");
0x000468ce str.w sb, [sp, 0x34] | __asm ("str.w sb, [var_34h]");
| label_7:
0x000468d2 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000468d4 ldr.w fp, [r3, 8] | fp = *((r3 + 8));
0x000468d8 cmp.w fp, 0 |
| if (fp != 0) {
0x000468dc bne.w 0x46c22 | goto label_76;
| }
0x000468e0 ldr.w r8, [r3, 0x10] | r8 = *((r3 + 0x10));
0x000468e4 mov r0, r4 | r0 = r4;
0x000468e6 ldr r2, [sp, 0x38] | r2 = var_38h;
0x000468e8 mov r3, fp | r3 = fp;
0x000468ea ldr r1, [sp, 0x28] | r1 = var_28h;
0x000468ec blx r8 | r0 = uint32_t (*r8)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000468ee cmp r0, 0 |
| if (r0 != 0) {
0x000468f0 bne.w 0x47094 | goto label_77;
| }
0x000468f4 ldr r2, [r5, 0xc] | r2 = *((r5 + 0xc));
0x000468f6 ldr.w sb, [sp, 0x60] | sb = var_60h;
0x000468fa ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x000468fc ldr r0, [r3, 0x6c] | r0 = *((r3 + 0x6c));
0x000468fe cmp.w sb, 0 |
| if (sb == 0) {
0x00046902 beq.w 0x46c06 | goto label_78;
| }
0x00046906 ldrb.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x0004690a mov.w fp, 1 |
0x0004690e str r6, [sp, 0x50] | var_50h = r6;
0x00046910 mov r6, sb | r6 = sb;
0x00046912 strd r7, r0, [sp, 0x44] | __asm ("strd r7, r0, [sp, 0x44]");
0x00046916 orr r3, r3, 2 | r3 |= 2;
0x0004691a str r4, [sp, 0x4c] | var_4ch = r4;
0x0004691c strb.w r3, [sl, 0x28] | *((sl + 0x28)) = r3;
0x00046920 ldr r3, [sp, 0x5c] | r3 = var_5ch;
0x00046922 ldr r4, [sp, 0x3c] | r4 = var_3ch;
0x00046924 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x00046928 add.w r8, r3, -1 | r8 = r3 + -1;
0x0004692c mov sb, r8 | sb = r8;
0x0004692e mov r8, r2 | r8 = r2;
0x00046930 ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x00046934 ldrb r7, [sb, 1]! | r7 = *((sb += 1));
0x00046938 sub.w r0, r2, 8 | r0 = r2 - 8;
0x0004693c cmp r0, 1 |
| if (r0 < 1) {
0x0004693e bls 0x46990 | goto label_79;
| }
| do {
0x00046940 cmp r2, 2 |
| if (r2 == 2) {
0x00046942 beq.w 0x46cc0 | goto label_80;
| }
0x00046946 cmp r7, 0xa |
| if (r7 == 0xa) {
0x00046948 beq.w 0x46d24 | goto label_81;
| }
0x0004694c cmp r2, 6 |
| if (r2 == 6) {
0x0004694e beq 0x469a0 | goto label_9;
| }
0x00046950 cmp r7, 0xd |
| if (r7 == 0xd) {
0x00046952 beq.w 0x46d3a | goto label_82;
| }
0x00046956 cmp r7, 0x3b |
| if (r7 == 0x3b) {
0x00046958 beq.w 0x46d56 | goto label_83;
| }
0x0004695c cmp r2, 4 |
| if (r2 != 4) {
0x0004695e bne.w 0x46d5e | goto label_84;
| }
0x00046962 cmp r7, 9 |
| if (r7 != 9) {
0x00046964 beq 0x46974 |
0x00046966 blx 0x183c8 | r0 = stack_chk_fail ();
0x0004696a ldr r2, [r0] | r2 = *(r0);
0x0004696c ldrh.w r3, [r2, r7, lsl 1] | offset_0 = r7 << 1;
| r3 = *((r2 + offset_0));
0x00046970 lsls r7, r3, 0x1e | r7 = r3 << 0x1e;
| if (r7 < r3) {
0x00046972 bmi 0x469a0 | goto label_9;
| }
| }
| label_10:
0x00046974 cmp r6, fp |
0x00046976 add.w r3, fp, 1 | r3 += arg_1h;
| if (r6 < fp) {
0x0004697a bls.w 0x46bfa | goto label_85;
| }
0x0004697e ldr.w r2, [sl, 0x24] | r2 = *((sl + 0x24));
0x00046982 mov fp, r3 |
0x00046984 ldrb r7, [sb, 1]! | r7 = *((sb += 1));
0x00046988 sub.w r0, r2, 8 | r0 = r2 - 8;
0x0004698c cmp r0, 1 |
0x0004698e bhi 0x46940 |
| } while (r0 > 1);
| label_79:
0x00046990 cmp r7, 0xa |
| if (r7 == 0xa) {
0x00046992 beq.w 0x46d12 | goto label_86;
| }
0x00046996 cmp r2, 8 |
0x00046998 it eq |
| if (r2 == 8) {
0x0004699a cmpeq r7, 0xd | __asm ("cmpeq r7, 0xd");
| }
| if (r2 == 8) {
0x0004699c beq.w 0x46d42 | goto label_87;
| }
| label_9:
0x000469a0 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x000469a4 mov r1, r8 | r1 = r8;
0x000469a6 movs r7, 1 | r7 = 1;
0x000469a8 mov r8, r5 | r8 = r5;
0x000469aa movs r6, 0x16 | r6 = 0x16;
| label_14:
0x000469ac ldr.w r3, [pc, 0x994] | r3 = *(0x47344);
0x000469b0 ldr.w r0, [r1, 0x108] | r0 = *((r1 + 0x108));
0x000469b4 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000469b8 ldr r2, [r3, 8] | r2 = *(0x4734c);
0x000469ba cmp r2, 0 |
| if (r2 < 0) {
0x000469bc blt.w 0x470e4 | goto label_88;
| }
0x000469c0 cmp r0, 0 |
| if (r0 == 0) {
0x000469c2 beq.w 0x46bd4 | goto label_89;
| }
| label_4:
0x000469c6 ldr r3, [r0] | r3 = *(r0);
0x000469c8 cmp r3, 0 |
| if (r3 == 0) {
0x000469ca beq.w 0x46bee | goto label_22;
| }
0x000469ce ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x000469d0 cmp r3, 0 |
| if (r3 < 0) {
0x000469d2 blt.w 0x46bee | goto label_22;
| }
| label_5:
0x000469d6 cmp r3, 5 |
0x000469d8 ite le |
| if (r3 > 5) {
0x000469da movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x000469dc movgt r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
| label_6:
0x000469de cbz r3, 0x46a0a |
0x000469e0 cmp r6, 0x1c |
| if (r6 == 0x1c) {
0x000469e2 beq.w 0x470de | goto label_90;
| }
0x000469e6 ldr.w r3, [pc, 0x960] | r3 = *(0x00047348);
0x000469ea add r3, pc | r3 += pc;
| label_21:
0x000469ec str r3, [sp, 0xc] | var_ch = r3;
0x000469ee ldr.w r3, [pc, 0x95c] | r3 = *(0x0004734c);
0x000469f2 ldr.w r0, [pc, 0x95c] | r0 = *(0x00047350);
0x000469f6 strd r6, r1, [sp] | __asm ("strd r6, r1, [sp]");
0x000469fa movw r1, 0x236 | r1 = 0x236;
0x000469fe add r3, pc | r3 += pc;
0x00046a00 str r3, [sp, 8] | var_8h = r3;
0x00046a02 add r0, pc | r0 += pc;
0x00046a04 movs r3, 6 | r3 = 6;
0x00046a06 bl 0x38a7c | ap_log_rerror_ ();
| }
| if (r7 != 0) {
0x00046a0a cbz r7, 0x46a22 |
0x00046a0c cmp r6, 0x1c |
0x00046a0e movw r2, 0x19d | r2 = 0x19d;
0x00046a12 mov r1, r8 | r1 = r8;
0x00046a14 it ne |
| if (r6 == 0x1c) {
0x00046a16 movne r2, 0x190 | r2 = 0x190;
| }
0x00046a1a mov r0, sl | r0 = sl;
0x00046a1c bl 0x45e48 | r0 = fcn_00045e48 (r0, r1, r2);
0x00046a20 mov r6, r0 | r6 = r0;
| }
| label_2:
0x00046a22 ldr.w r2, [pc, 0x930] | r2 = *(0x00047354);
0x00046a26 ldr.w r3, [pc, 0x910] | r3 = *(0x4733a);
0x00046a2a add r2, pc | r2 += pc;
0x00046a2c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00046a2e ldr r2, [r3] | r2 = *(0x4733a);
0x00046a30 ldr r3, [sp, 0xcc] | r3 = var_cch;
0x00046a32 eors r2, r3 | r2 ^= r3;
0x00046a34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00046a38 bne.w 0x47204 | goto label_91;
| }
0x00046a3c mov r0, r6 | r0 = r6;
0x00046a3e add sp, 0xd4 |
0x00046a40 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00046a44 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_70:
0x00046a48 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00046a4c cmp r3, 2 |
| if (r3 == 2) {
0x00046a4e beq 0x46a64 | goto label_92;
| }
0x00046a50 cmp r3, 1 |
| if (r3 != 1) {
0x00046a52 bne.w 0x4684a | goto label_0;
| }
0x00046a56 ldrd r2, r3, [sl] | __asm ("ldrd r2, r3, [sl]");
0x00046a5a cmp r2, 1 |
0x00046a5c sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 < 1) {
0x00046a60 blt.w 0x4684a | goto label_0;
| }
| label_92:
0x00046a64 ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x00046a68 ldr.w r3, [r0, 0x94] | r3 = *((r0 + 0x94));
0x00046a6c cmp r3, 0 |
| if (r3 == 0) {
0x00046a6e beq.w 0x4684a | goto label_0;
| }
0x00046a72 ldr r3, [r0, 0x28] | r3 = *((r0 + 0x28));
0x00046a74 cmp.w r3, 0x3e8 |
| if (r3 <= 0x3e8) {
0x00046a78 ble.w 0x4684a | goto label_0;
| }
| if (r1 != 0) {
0x00046a7c cbnz r1, 0x46aae | goto label_71;
| }
0x00046a7e ldr.w r3, [r0, 0xfc] | r3 = *((r0 + 0xfc));
0x00046a82 cmp r3, 0 |
| if (r3 != 0) {
0x00046a84 bne.w 0x46850 | goto label_1;
| }
0x00046a88 ldrd r2, r3, [r0, 0x68] | __asm ("ldrd r2, r3, [r0, 0x68]");
0x00046a8c orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00046a8e bne.w 0x46850 | goto label_1;
| }
0x00046a92 ldr r4, [r0, 0x44] | r4 = *((r0 + 0x44));
0x00046a94 sub.w r3, r4, 0xc8 | r3 = r4 - 0xc8;
0x00046a98 cmp r3, 0x63 |
| if (r3 < 0x63) {
0x00046a9a bls.w 0x472b4 | goto label_93;
| }
0x00046a9e ldrb.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x00046aa2 str.w r1, [sl, 0x24] | __asm ("str.w r1, [sl, 0x24]");
0x00046aa6 orr r3, r3, 1 | r3 |= 1;
0x00046aaa strb.w r3, [sl, 0x28] | *((sl + 0x28)) = r3;
| label_71:
0x00046aae ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00046ab2 ldr r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x00046ab4 blx 0x18410 | apr_brigade_insert_file ();
0x00046ab8 add.w r3, fp, 4 | r3 += arg_4h;
0x00046abc str r3, [r0] | *(r0) = r3;
0x00046abe ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00046ac2 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00046ac4 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00046ac8 str r0, [r3] | *(r3) = r0;
0x00046aca str.w r0, [fp, 8] | __asm ("str.w r0, [arg_8h]");
0x00046ace b 0x46bb6 | goto label_94;
0x00046ad0 mov r2, fp | r2 = fp;
0x00046ad2 mov fp, r8 |
0x00046ad4 mov r8, r5 | r8 = r5;
0x00046ad6 mov r5, r2 | r5 = r2;
0x00046ad8 cmp r3, 0 |
| if (r3 == 0) {
0x00046ada beq 0x46ba8 | goto label_95;
| }
0x00046adc ldrd r1, r2, [sl] | __asm ("ldrd r1, r2, [sl]");
0x00046ae0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00046ae2 cmp r1, r0 |
0x00046ae4 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00046ae6 sbcs.w r0, r2, r0 | __asm ("sbcs.w r0, r2, r0");
0x00046ae8 movs r0, r0 |
0x00046aea it lt |
| if (r0 < r0) {
0x00046aec strdlt r1, r2, [sp, 0x2c] | __asm ("strdlt r1, r2, [sp, 0x2c]");
| }
0x00046af0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00046af2 cmp r2, 1 |
0x00046af4 ldr r2, [sp, 0x30] | r2 = var_30h;
0x00046af6 sbcs r2, r2, 0 | __asm ("sbcs r2, r2, 0");
| if (r2 >= 1) {
0x00046afa bge.w 0x46f0c | goto label_96;
| }
| label_17:
0x00046afe cmp r3, 1 |
| if (r3 != 1) {
0x00046b00 bne 0x46bb6 | goto label_94;
| }
0x00046b02 ldrd r3, r2, [sl] | __asm ("ldrd r3, r2, [sl]");
0x00046b06 orrs r3, r2 | r3 |= r2;
| if (r3 != r2) {
0x00046b08 bne 0x46bb6 | goto label_94;
| }
| label_16:
0x00046b0a ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00046b0e ldr r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x00046b10 blx 0x18410 | apr_brigade_insert_file ();
0x00046b14 add.w r3, fp, 4 | r3 += arg_4h;
0x00046b18 str r3, [r0] | *(r0) = r3;
0x00046b1a ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x00046b1e ldrb.w r3, [sl, 0x28] | r3 = *((sl + 0x28));
0x00046b22 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00046b24 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x00046b28 orr r3, r3, 1 | r3 |= 1;
0x00046b2c str r0, [r2] | *(r2) = r0;
0x00046b2e str.w r0, [fp, 8] | __asm ("str.w r0, [arg_8h]");
0x00046b32 strb.w r3, [sl, 0x28] | *((sl + 0x28)) = r3;
0x00046b36 b 0x46bb6 | goto label_94;
0x00046b38 mov r3, fp | r3 = fp;
0x00046b3a mov fp, r8 |
0x00046b3c mov r8, r5 | r8 = r5;
0x00046b3e mov r5, r3 | r5 = r3;
0x00046b40 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00046b42 mov r2, r5 | r2 = r5;
0x00046b44 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00046b46 mov r1, fp | r1 = fp;
0x00046b48 str r3, [sp] | *(sp) = r3;
0x00046b4a ldr r3, [sp, 0x30] | r3 = var_30h;
0x00046b4c ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00046b50 str r3, [sp, 4] | var_4h = r3;
0x00046b52 mov r3, r4 | r3 = r4;
0x00046b54 bl 0x20578 | ap_get_brigade ();
0x00046b58 cmp r4, 1 |
0x00046b5a mov r6, r0 | r6 = r0;
| if (r4 != 1) {
0x00046b5c bne.w 0x46a22 | goto label_2;
| }
0x00046b60 cmp r0, 0 |
| if (r0 != 0) {
0x00046b62 bne.w 0x46a22 | goto label_2;
| }
0x00046b66 mov r3, fp | r3 = fp;
0x00046b68 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x00046b6c cmp r2, r3 |
| if (r2 == r3) {
0x00046b6e bne 0x46bb6 |
| label_18:
0x00046b70 movs r6, 0xb | r6 = 0xb;
0x00046b72 b 0x46a22 | goto label_2;
| label_68:
0x00046b74 ldr.w r4, [pc, 0x7e0] | r4 = sym.imp.apr_atomic_add32;
0x00046b78 ldr.w r0, [pc, 0x7bc] | r0 = *(0x47338);
0x00046b7c add r4, pc | r4 += pc;
0x00046b7e ldr r0, [r4, r0] | r0 = *((r4 + r0));
0x00046b80 ldr r4, [r0] | r4 = *(0x47338);
0x00046b82 ldr r0, [sp, 0xcc] | r0 = var_cch;
0x00046b84 eors r4, r0 | r4 ^= r0;
0x00046b86 mov.w r0, 0 | r0 = 0;
| if (r4 != r0) {
0x00046b8a bne.w 0x47204 | goto label_91;
| }
0x00046b8e ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x00046b90 ldr r4, [sp, 0x30] | r4 = var_30h;
0x00046b92 str r0, [sp, 0x108] | *(arg_108h) = r0;
0x00046b94 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00046b98 str r4, [sp, 0x10c] | *(arg_10ch) = r4;
0x00046b9a add sp, 0xd4 |
0x00046b9c vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x00046ba0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00046ba4 b.w 0x20578 | void (*0x20578)() ();
| label_95:
0x00046ba8 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00046baa cmp r3, 1 |
0x00046bac ldr r3, [sp, 0x30] | r3 = var_30h;
0x00046bae sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r3 >= 1) {
0x00046bb2 bge.w 0x46f0c | goto label_96;
| }
| }
| label_94:
0x00046bb6 movs r6, 0 | r6 = 0;
0x00046bb8 b 0x46a22 | goto label_2;
| label_73:
0x00046bba movw r3, 0x117e |
0x00046bbe movt r3, 1 | r3 = 0x1117e;
0x00046bc2 cmp r0, r3 |
| if (r0 == r3) {
0x00046bc4 beq.w 0x472a8 | goto label_97;
| }
0x00046bc8 cmp r0, 0 |
| if (r0 != 0) {
0x00046bca bne.w 0x47460 | goto label_98;
| }
0x00046bce add.w ip, r8, 4 |
0x00046bd2 b 0x468b4 | goto label_3;
| label_89:
0x00046bd4 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00046bd6 ldr r0, [r3, 0x60] | r0 = *((r3 + 0x60));
0x00046bd8 cmp r0, 0 |
| if (r0 != 0) {
0x00046bda bne.w 0x469c6 | goto label_4;
| }
0x00046bde ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x00046be0 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
| if (r3 == 0) {
0x00046be2 cbz r3, 0x46bec | goto label_23;
| }
0x00046be4 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00046be6 cmp r3, 0 |
| if (r3 >= 0) {
0x00046be8 bge.w 0x469d6 | goto label_5;
| }
| label_23:
0x00046bec adds r0, 0x10 | r0 += 0x10;
| label_22:
0x00046bee ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00046bf0 cmp r3, 5 |
0x00046bf2 ite le |
| if (r3 > 5) {
0x00046bf4 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x00046bf6 movgt r3, 1 | r3 = 1;
| }
0x00046bf8 b 0x469de | goto label_6;
| label_85:
0x00046bfa mov sb, r6 | sb = r6;
0x00046bfc ldr r7, [sp, 0x44] | r7 = var_44h;
0x00046bfe ldrd r0, r4, [sp, 0x48] | __asm ("ldrd r0, r4, [var_48h]");
0x00046c02 mov r2, r8 | r2 = r8;
0x00046c04 ldr r6, [sp, 0x50] | r6 = var_50h;
| label_78:
0x00046c06 ldr.w r3, [sl, 0x18] | r3 = *((sl + 0x18));
0x00046c0a add r3, sb | r3 += sb;
0x00046c0c lsrs r1, r3, 0x1f | r1 = r3 >> 0x1f;
0x00046c0e str.w r3, [sl, 0x18] | __asm ("str.w r3, [sl, 0x18]");
0x00046c12 cmp r0, r3 |
0x00046c14 it lt |
| if (r0 >= r3) {
0x00046c16 orrlt r1, r1, 1 | r1 |= 1;
| }
0x00046c1a cmp r1, 0 |
| if (r1 != 0) {
0x00046c1c bne.w 0x46dde | goto label_99;
| }
0x00046c20 ldr r3, [r4, 8] | r3 = *((r4 + 8));
| label_76:
0x00046c22 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00046c24 ldr r1, [r4] | r1 = *(r4);
0x00046c26 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00046c28 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00046c2a str r1, [r2] | *(r2) = r1;
0x00046c2c ldr r2, [r4] | r2 = *(r4);
0x00046c2e ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00046c30 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x00046c32 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00046c34 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x00046c36 mov r0, r4 | r0 = r4;
0x00046c38 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
0x00046c3a ldr r4, [r6, 4] | r4 = *((r6 + 4));
0x00046c3c cmp r7, r4 |
| if (r7 != r4) {
0x00046c3e bne.w 0x468d2 | goto label_7;
| }
0x00046c42 ldr.w fp, [sp, 0x54] | fp = var_54h;
0x00046c46 mov r8, r6 | r8 = r6;
0x00046c48 ldr.w sb, [sp, 0x34] | sb = var_34h;
| label_75:
0x00046c4c ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00046c50 cmp r3, 0xa |
| if (r3 != 0xa) {
0x00046c52 bne.w 0x4685c | goto label_8;
| }
0x00046c56 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00046c58 mov fp, r8 |
0x00046c5a mov r8, r5 | r8 = r5;
0x00046c5c ldr r5, [r5, 0xc] | r5 = *((r5 + 0xc));
0x00046c5e ldr r3, [r3, 0x34] | r3 = *((r3 + 0x34));
0x00046c60 ldr.w r0, [r5, 0x1d0] | r0 = *((r5 + 0x1d0));
0x00046c64 ldr.w r7, [r5, 0xb0] | r7 = *((r5 + 0xb0));
0x00046c68 str r3, [sp, 0x24] | var_24h = r3;
0x00046c6a movs r3, 0xc8 | r3 = 0xc8;
0x00046c6c ldr r6, [r5, 0x44] | r6 = *((r5 + 0x44));
0x00046c6e str.w r0, [r5, 0xb0] | __asm ("str.w r0, [r5, 0xb0]");
0x00046c72 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x00046c74 blx 0x17edc | apr_sockaddr_info_get ();
0x00046c78 mov r0, r5 | r0 = r5;
0x00046c7a bl 0x22f84 | ap_get_mime_headers ();
0x00046c7e ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x00046c80 cmp r3, 0xc8 |
| if (r3 != 0xc8) {
0x00046c82 bne.w 0x47390 | goto label_100;
| }
0x00046c86 ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00046c8a str r6, [r5, 0x44] | *((r5 + 0x44)) = r6;
0x00046c8c movs r6, 0 | r6 = 0;
0x00046c8e ldr r0, [r3, 0x40] | r0 = *((r3 + 0x40));
0x00046c90 blx 0x18410 | r0 = apr_brigade_insert_file ();
0x00046c94 str r4, [r0] | *(r0) = r4;
0x00046c96 ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x00046c9a str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00046c9c ldrb.w r2, [sl, 0x28] | r2 = *((sl + 0x28));
0x00046ca0 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x00046ca4 orr r2, r2, 1 | r2 |= 1;
0x00046ca8 str r0, [r1] | *(r1) = r0;
0x00046caa str.w r0, [fp, 8] | __asm ("str.w r0, [arg_8h]");
0x00046cae strb.w r2, [sl, 0x28] | *((sl + 0x28)) = r2;
| label_46:
0x00046cb2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00046cb4 cmp r3, 1 |
| if (r3 == 1) {
0x00046cb6 beq.w 0x47428 | goto label_101;
| }
| label_49:
0x00046cba str.w r7, [r5, 0xb0] | __asm ("str.w r7, [r5, 0xb0]");
0x00046cbe b 0x46a22 | goto label_2;
| label_80:
0x00046cc0 blx 0x183c8 | r0 = stack_chk_fail ();
0x00046cc4 ldr r2, [r0] | r2 = *(r0);
0x00046cc6 ldrh.w r2, [r2, r7, lsl 1] | offset_1 = r7 << 1;
| r2 = *((r2 + offset_1));
0x00046cca lsls r3, r2, 0x13 | r3 = r2 << 0x13;
| if (r3 >= r2) {
0x00046ccc bpl.w 0x469a0 | goto label_9;
| }
0x00046cd0 movs r3, 3 | r3 = 3;
0x00046cd2 cmp r7, 0xa |
0x00046cd4 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00046cd8 mov.w r3, 0x40 | r3 = 0x40;
0x00046cdc vstr d9, [sl] | __asm ("vstr d9, [sl]");
0x00046ce0 str.w r3, [sl, 0x20] | __asm ("str.w r3, [sl, 0x20]");
0x00046ce4 vstr d8, [sl, 0x18] | __asm ("vstr d8, [sl, 0x18]");
| if (r7 == 0xa) {
0x00046ce8 beq 0x46d46 | goto label_102;
| }
0x00046cea cmp r7, 0xd |
| if (r7 == 0xd) {
0x00046cec beq 0x46d3a | goto label_82;
| }
0x00046cee cmp r7, 0x3b |
| if (r7 == 0x3b) {
0x00046cf0 beq 0x46d56 | goto label_83;
| }
0x00046cf2 cmp r7, 0x20 |
0x00046cf4 it ne |
| if (r7 != 0x20) {
0x00046cf6 cmpne r7, 9 | __asm ("cmpne r7, 9");
| }
| if (r7 != 0x20) {
0x00046cf8 bne 0x46d72 | goto label_103;
| }
| label_13:
0x00046cfa ldr.w r3, [sl, 0x1c] | r3 = *((sl + 0x1c));
0x00046cfe movs r2, 5 | r2 = 5;
0x00046d00 str.w r2, [sl, 0x24] | __asm ("str.w r2, [sl, 0x24]");
0x00046d04 adds r3, 1 | r3++;
0x00046d06 cmp r3, 0xa |
0x00046d08 str.w r3, [sl, 0x1c] | __asm ("str.w r3, [sl, 0x1c]");
| if (r3 <= 0xa) {
0x00046d0c ble.w 0x46974 | goto label_10;
| }
0x00046d10 b 0x469a0 | goto label_9;
| label_86:
0x00046d12 cmp r4, 1 |
0x00046d14 it ne |
| if (r4 == 1) {
0x00046d16 cmpne r2, 9 | __asm ("cmpne r2, 9");
| goto label_104;
| }
| if (r4 != 1) {
| label_104:
0x00046d18 bne.w 0x469a0 | goto label_9;
| }
0x00046d1c movs r3, 2 | r3 = 2;
| label_11:
0x00046d1e str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00046d22 b 0x46974 | goto label_10;
| label_81:
0x00046d24 cmp r4, 1 |
| if (r4 == 1) {
0x00046d26 beq 0x46d2e | goto label_105;
| }
| label_12:
0x00046d28 cmp r2, 6 |
| if (r2 != 6) {
0x00046d2a bne.w 0x469a0 | goto label_9;
| }
| label_105:
0x00046d2e ldrd r2, r3, [sl] | __asm ("ldrd r2, r3, [sl]");
0x00046d32 orrs r3, r2 | r3 |= r2;
| if (r3 == r2) {
0x00046d34 beq 0x46d4e | goto label_106;
| }
0x00046d36 movs r3, 7 | r3 = 7;
0x00046d38 b 0x46d1e | goto label_11;
| label_82:
0x00046d3a movs r3, 6 | r3 = 6;
0x00046d3c str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00046d40 b 0x46974 | goto label_10;
| label_87:
0x00046d42 movs r3, 9 | r3 = 9;
0x00046d44 b 0x46d1e | goto label_11;
| label_102:
0x00046d46 cmp r4, 1 |
0x00046d48 it ne |
| if (r4 != 1) {
0x00046d4a movne r2, 3 | r2 = 3;
| goto label_107;
| }
| if (r4 != 1) {
| label_107:
0x00046d4c bne 0x46d28 | goto label_12;
| }
| label_106:
0x00046d4e movs r3, 0xa | r3 = 0xa;
0x00046d50 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00046d54 b 0x46974 | goto label_10;
| label_83:
0x00046d56 movs r3, 4 | r3 = 4;
0x00046d58 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00046d5c b 0x46974 | goto label_10;
| label_84:
0x00046d5e cmp r7, 9 |
0x00046d60 it ne |
| if (r7 == 9) {
0x00046d62 cmpne r7, 0x20 | __asm ("cmpne r7, 0x20");
| goto label_108;
| }
| if (r7 == 9) {
| label_108:
0x00046d64 beq 0x46cfa | goto label_13;
| }
0x00046d66 cmp r2, 5 |
| if (r2 == 5) {
0x00046d68 beq.w 0x469a0 | goto label_9;
| }
0x00046d6c cmp r2, 3 |
| if (r2 != 3) {
0x00046d6e bne.w 0x47244 | goto label_109;
| }
| label_103:
0x00046d72 ldrd r3, r0, [sl] | __asm ("ldrd r3, r0, [sl]");
0x00046d76 orr.w r2, r3, r0 | r2 = r3 | r0;
0x00046d7a cmp r7, 0x30 |
0x00046d7c it eq |
| if (r7 != 0x30) {
0x00046d7e cmpeq r2, 0 | __asm ("cmpeq r2, 0");
| goto label_110;
| }
| if (r7 == 0x30) {
| label_110:
0x00046d80 beq.w 0x46974 | goto label_10;
| }
0x00046d84 ldr.w r2, [sl, 0x20] | r2 = *((sl + 0x20));
0x00046d88 subs r2, 4 | r2 -= 4;
0x00046d8a cmp r2, 0 |
0x00046d8c str.w r2, [sl, 0x20] | __asm ("str.w r2, [sl, 0x20]");
| if (r2 < 0) {
0x00046d90 blt 0x46dd4 | goto label_111;
| }
0x00046d92 sub.w r2, r7, 0x30 | r2 = r7 - 0x30;
0x00046d96 uxtb.w lr, r2 | lr = (int8_t) r2;
0x00046d9a cmp.w lr, 9 |
| if (lr < 9) {
0x00046d9e bls 0x46dbc | goto label_112;
| }
0x00046da0 sub.w r2, r7, 0x41 | r2 = r7 - 0x41;
0x00046da4 cmp r2, 5 |
0x00046da6 it ls |
| if (r2 > 5) {
0x00046da8 subls r2, r7, 0x37 | r2 = r7 - 0x37;
| }
| if (r2 < 5) {
0x00046dac bls 0x46dbc | goto label_112;
| }
0x00046dae sub.w r2, r7, 0x61 | r2 = r7 - 0x61;
0x00046db2 cmp r2, 5 |
| if (r2 > 5) {
0x00046db4 bhi.w 0x469a0 | goto label_9;
| }
0x00046db8 sub.w r2, r7, 0x57 | r2 = r7 - 0x57;
| label_112:
0x00046dbc lsls r0, r0, 4 | r0 <<= 4;
0x00046dbe orr.w r0, r0, r3, lsr 28 | r0 |= (r3 >> 28);
0x00046dc2 orr.w r3, r2, r3, lsl 4 | r3 = r2 | (r3 << 4);
0x00046dc6 orr.w r0, r0, r2, asr 31 | r0 |= (r2 >> 31);
0x00046dca cmp r0, 0 |
0x00046dcc strd r3, r0, [sl] | __asm ("strd r3, r0, [sl]");
| if (r0 >= 0) {
0x00046dd0 bge.w 0x46974 | goto label_10;
| }
| label_111:
0x00046dd4 mov r1, r8 | r1 = r8;
0x00046dd6 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00046dda mov r8, r5 | r8 = r5;
0x00046ddc b 0x46de6 | goto label_113;
| label_99:
0x00046dde ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00046de2 mov r1, r2 | r1 = r2;
0x00046de4 mov r8, r5 | r8 = r5;
| label_113:
0x00046de6 movs r7, 1 | r7 = 1;
0x00046de8 movs r6, 0x1c | r6 = 0x1c;
0x00046dea b 0x469ac | goto label_14;
| label_69:
0x00046dec movs r1, 0x30 | r1 = 0x30;
0x00046dee ldr r0, [r0] | r0 = *(r0);
0x00046df0 blx 0x18240 | fcn_00018240 ();
0x00046df4 mov r1, sl | r1 = sl;
0x00046df6 movs r2, 0x30 | r2 = 0x30;
0x00046df8 blx 0x17c40 | fcn_00017c40 ();
0x00046dfc ldr.w r3, [r8, 0x10] | r3 = *((r8 + 0x10));
0x00046e00 mov sl, r0 | sl = r0;
0x00046e02 str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
0x00046e06 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x00046e08 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00046e0c ldr r0, [r3] | r0 = *(r3);
0x00046e0e movs r3, 0 | r3 = 0;
0x00046e10 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00046e14 blx 0x17cac | fcn_00017cac ();
0x00046e18 str.w r0, [sl, 0x2c] | __asm ("str.w r0, [sl, 0x2c]");
0x00046e1c ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x00046e20 ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x00046e22 cmp r3, 0 |
| if (r3 != 0) {
0x00046e24 bne.w 0x46fea | goto label_114;
| }
0x00046e28 ldr.w r1, [r0, 0xe8] | r1 = *((r0 + 0xe8));
| if (r1 != 0) {
0x00046e2c cbz r1, 0x46e44 |
0x00046e2e ldr r3, [r0] | r3 = *(r0);
0x00046e30 mov.w r2, 0x400000 | r2 = 0x400000;
0x00046e34 add r0, sp, 0x60 | r0 += var_60h;
0x00046e36 blx 0x179b4 | r0 = apr_table_elts ();
0x00046e3a cmp r0, 0 |
| if (r0 == 0) {
0x00046e3c beq.w 0x4710a | goto label_115;
| }
0x00046e40 ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
| }
| label_26:
0x00046e44 bl 0x2a1f8 | ap_get_limit_req_body ();
0x00046e48 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
| label_27:
0x00046e4c strd r0, r1, [sl, 8] | __asm ("strd r0, r1, [sl, 8]");
0x00046e50 mov r0, r3 | r0 = r3;
| label_19:
0x00046e52 ldr.w r1, [pc, 0x508] | r1 = *(0x0004735c);
0x00046e56 ldr.w r0, [r0, 0xb0] | r0 = *((r0 + 0xb0));
0x00046e5a add r1, pc | r1 += pc;
0x00046e5c blx 0x185a8 | apr_hash_make ();
0x00046e60 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00046e64 mov r4, r0 | r4 = r0;
0x00046e66 ldr.w r1, [pc, 0x4f8] | r1 = *(0x00047360);
0x00046e6a ldr.w r0, [r3, 0xb0] | r0 = *((r3 + 0xb0));
0x00046e6e add r1, pc | r1 += pc;
0x00046e70 blx 0x185a8 | apr_hash_make ();
0x00046e74 cmp r4, 0 |
| if (r4 == 0) {
0x00046e76 beq.w 0x46ff4 | goto label_116;
| }
0x00046e7a ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00046e7e mov r1, r4 | r1 = r4;
0x00046e80 ldr r0, [r3] | r0 = *(r3);
0x00046e82 bl 0x1c728 | r0 = ap_is_chunked ();
0x00046e86 cmp r0, 0 |
| if (r0 != 0) {
0x00046e88 bne.w 0x470a2 | goto label_117;
| }
0x00046e8c ldr.w r3, [pc, 0x4b4] | r3 = *(0x47344);
0x00046e90 ldr.w r1, [r8, 0xc] | r1 = *((r8 + 0xc));
0x00046e94 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00046e98 ldr.w r0, [r1, 0x108] | r0 = *((r1 + 0x108));
0x00046e9c ldr r2, [r3, 8] | r2 = *(0x4734c);
0x00046e9e ldr r3, [r1, 0x20] | r3 = *((r1 + 0x20));
0x00046ea0 cmp r3, 3 |
| if (r3 != 3) {
0x00046ea2 bne.w 0x4713c | goto label_118;
| }
0x00046ea6 cmp r2, 0 |
| if (r2 < 0) {
0x00046ea8 blt.w 0x47232 | goto label_119;
| }
0x00046eac cmp r0, 0 |
| if (r0 == 0) {
0x00046eae beq.w 0x47194 | goto label_120;
| }
0x00046eb2 ldr r3, [r0] | r3 = *(r0);
0x00046eb4 cmp r3, 0 |
| if (r3 == 0) {
0x00046eb6 beq.w 0x471ac | goto label_36;
| }
0x00046eba ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00046ebc cmp r3, 0 |
| if (r3 < 0) {
0x00046ebe blt.w 0x471ac | goto label_36;
| }
| label_31:
0x00046ec2 cmp r3, 5 |
0x00046ec4 ite le |
| if (r3 > 5) {
0x00046ec6 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x00046ec8 movgt r3, 1 | r3 = 1;
| }
| if (r3 != 0) {
| label_32:
0x00046eca cbz r3, 0x46eec |
0x00046ecc ldr.w r3, [pc, 0x494] | r3 = *(0x00047364);
0x00046ed0 ldr.w r0, [pc, 0x494] |
0x00046ed4 str r1, [sp, 4] | var_4h = r1;
0x00046ed6 mov.w r1, 0x198 | r1 = 0x198;
0x00046eda add r3, pc | r3 += pc;
0x00046edc str r4, [sp, 0xc] | var_ch = r4;
0x00046ede str r3, [sp, 8] | var_8h = r3;
0x00046ee0 movs r3, 0 | r3 = 0;
0x00046ee2 str r3, [sp] | *(sp) = r3;
0x00046ee4 add r0, pc | r0 = 0x8e250;
0x00046ee6 movs r3, 6 | r3 = 6;
0x00046ee8 bl 0x38a7c | ap_log_rerror_ ();
| }
| label_20:
0x00046eec ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00046ef0 cmp r3, 0 |
| if (r3 != 0) {
0x00046ef2 bne.w 0x4683a | goto label_15;
| }
0x00046ef6 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00046efa ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x00046efc cmp r3, 3 |
| if (r3 != 3) {
0x00046efe bne.w 0x46b0a | goto label_16;
| }
| label_39:
0x00046f02 ldrb.w r1, [sl, 0x28] | r1 = *((sl + 0x28));
0x00046f06 and r1, r1, 1 | r1 &= 1;
0x00046f0a b 0x4684a | goto label_0;
| label_96:
0x00046f0c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00046f0e mov r2, r5 | r2 = r5;
0x00046f10 ldr r4, [sp, 0x24] | r4 = var_24h;
0x00046f12 mov r1, fp | r1 = fp;
0x00046f14 str r3, [sp] | *(sp) = r3;
0x00046f16 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00046f18 str r3, [sp, 4] | var_4h = r3;
0x00046f1a mov r3, r4 | r3 = r4;
0x00046f1c ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00046f20 bl 0x20578 | ap_get_brigade ();
0x00046f24 cmp r4, 1 |
0x00046f26 mov r6, r0 | r6 = r0;
| if (r4 == 1) {
0x00046f28 beq.w 0x470f8 | goto label_121;
| }
0x00046f2c movw r3, 0x117e |
0x00046f30 movt r3, 1 | r3 = 0x1117e;
0x00046f34 cmp r0, r3 |
| if (r0 == r3) {
0x00046f36 beq.w 0x470c0 | goto label_122;
| }
0x00046f3a cmp r0, 0 |
| if (r0 != 0) {
0x00046f3c bne.w 0x46a22 | goto label_2;
| }
| label_25:
0x00046f40 movs r1, 0 | r1 = 0;
0x00046f42 add r2, sp, 0x60 | r2 += var_60h;
0x00046f44 mov r0, fp | r0 = fp;
0x00046f46 blx 0x17e30 | fcn_00017e30 ();
0x00046f4a ldrd r3, r2, [sp, 0x60] | __asm ("ldrd r3, r2, [var_60h]");
0x00046f4e ldr.w r4, [sl, 0x24] | r4 = *((sl + 0x24));
0x00046f52 cmp r3, 1 |
0x00046f54 sbcs r1, r2, 0 | __asm ("sbcs r1, r2, 0");
0x00046f58 ittt ge |
| if (r3 < 1) {
0x00046f5a ldrbge r1, [sl, 0x28] | r1 = *((sl + 0x28));
| }
| if (r3 < 1) {
0x00046f5e orrge r1, r1, 2 | r1 |= 2;
| }
| if (r3 >= 1) {
0x00046f62 strb.w r1, [sl, 0x28] | *((sl + 0x28)) = r1;
| }
| if (r4 != 0) {
0x00046f66 cbz r4, 0x46f9a |
0x00046f68 ldr.w r1, [sl] | r1 = *(sl);
0x00046f6c subs r0, r1, r3 | r0 = r1 - r3;
0x00046f6e ldr.w r1, [sl, 4] | r1 = *((sl + 4));
0x00046f72 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x00046f76 sbc.w r1, r1, r2 | __asm ("sbc.w r1, r1, r2");
0x00046f7a cmp r0, 1 |
0x00046f7c str.w r1, [sl, 4] | __asm ("str.w r1, [sl, 4]");
0x00046f80 sbcs r1, r1, 0 | __asm ("sbcs r1, r1, 0");
| if (r0 < 1) {
0x00046f84 blt.w 0x4712a | goto label_123;
| }
0x00046f88 ldr.w r4, [fp, 8] | r4 = *(arg_8h);
0x00046f8c ldr r1, [pc, 0x3dc] | r1 = *(0x4736c);
0x00046f8e ldr r5, [r4, 8] | r5 = *((r4 + 8));
0x00046f90 ldr.w r1, [sb, r1] | r1 = *((sb + r1));
0x00046f94 cmp r5, r1 |
| if (r5 == r1) {
0x00046f96 beq.w 0x47290 | goto label_124;
| }
| }
| label_28:
0x00046f9a ldrd r1, r4, [sl, 8] | __asm ("ldrd r1, r4, [sl, 8]");
0x00046f9e orrs.w r0, r1, r4 | r0 = r1 | r4;
| if (r0 != r1) {
0x00046fa2 beq 0x46fc4 |
0x00046fa4 ldr.w r0, [sl, 0x10] | r0 = *((sl + 0x10));
0x00046fa8 adds r5, r3, r0 | r5 = r3 + r0;
0x00046faa ldr.w r0, [sl, 0x14] | r0 = *((sl + 0x14));
0x00046fae str.w r5, [sl, 0x10] | __asm ("str.w r5, [sl, 0x10]");
0x00046fb2 adc.w r0, r2, r0 | __asm ("adc.w r0, r2, r0");
0x00046fb6 cmp r1, r5 |
0x00046fb8 sbcs.w r3, r4, r0 | __asm ("sbcs.w r3, r4, r0");
0x00046fbc str.w r0, [sl, 0x14] | __asm ("str.w r0, [sl, 0x14]");
| if (r1 < r5) {
0x00046fc0 blt.w 0x47466 | goto label_125;
| }
| }
0x00046fc4 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
0x00046fc8 b 0x46afe | goto label_17;
| label_74:
0x00046fca cmp r0, 0xb |
0x00046fcc mov r6, r0 | r6 = r0;
| if (r0 == 0xb) {
0x00046fce beq.w 0x46b70 | goto label_18;
| }
0x00046fd2 movw r2, 0x117e |
0x00046fd6 movw r3, 0x1178 |
0x00046fda movt r2, 1 | r2 = 0x1117e;
0x00046fde movt r3, 1 | r3 = 0x11178;
0x00046fe2 cmp r0, r2 |
0x00046fe4 it eq |
| if (r0 != r2) {
0x00046fe6 moveq r6, r3 | r6 = r3;
| }
0x00046fe8 b 0x46a22 | goto label_2;
| label_114:
0x00046fea vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00046fee vstr d16, [sl, 8] | __asm ("vstr d16, [sl, 8]");
0x00046ff2 b 0x46e52 | goto label_19;
| label_116:
0x00046ff4 cmp r0, 0 |
| if (r0 == 0) {
0x00046ff6 beq.w 0x46eec | goto label_20;
| }
0x00046ffa movs r3, 1 | r3 = 1;
0x00046ffc mov r1, r0 | r1 = r0;
0x00046ffe str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x00047002 mov r0, sl | r0 = sl;
0x00047004 bl 0x1d4b0 | r0 = ap_parse_strict_length ();
0x00047008 cmp r0, 0 |
| if (r0 == 0) {
0x0004700a beq.w 0x471b8 | goto label_126;
| }
0x0004700e ldrd r1, r0, [sl, 8] | __asm ("ldrd r1, r0, [sl, 8]");
0x00047012 orrs.w r3, r1, r0 | r3 = r1 | r0;
| if (r3 == r1) {
0x00047016 beq.w 0x46eec | goto label_20;
| }
0x0004701a ldrd r6, r4, [sl] | __asm ("ldrd r6, r4, [sl]");
0x0004701e cmp r1, r6 |
0x00047020 sbcs.w r3, r0, r4 | __asm ("sbcs.w r3, r0, r4");
| if (r1 >= r6) {
0x00047024 bge.w 0x46eec | goto label_20;
| }
0x00047028 ldr r3, [pc, 0x318] | r3 = *(0x47344);
0x0004702a ldr.w r5, [r8, 0xc] | r5 = *((r8 + 0xc));
0x0004702e ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00047032 ldr r2, [r3, 8] | r2 = *(0x4734c);
0x00047034 ldr.w r3, [r5, 0x108] | r3 = *((r5 + 0x108));
0x00047038 cmp r2, 0 |
| if (r2 < 0) {
0x0004703a blt.w 0x47322 | goto label_127;
| }
0x0004703e cmp r3, 0 |
| if (r3 == 0) {
0x00047040 beq.w 0x472d6 | goto label_128;
| }
0x00047044 ldr r7, [r3] | r7 = *(r3);
0x00047046 cmp r7, 0 |
| if (r7 == 0) {
0x00047048 beq.w 0x472f8 | goto label_45;
| }
0x0004704c ldrsb r7, [r7, r2] | r7 = *((r7 + r2));
0x0004704e cmp r7, 0 |
| if (r7 < 0) {
0x00047050 blt.w 0x472f8 | goto label_45;
| }
| label_40:
0x00047054 ldr r3, [r3] | r3 = *(r3);
0x00047056 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00047058 cmp r3, 5 |
0x0004705a ite le |
| if (r3 > 5) {
0x0004705c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x0004705e movgt r3, 1 | r3 = 1;
| }
| label_41:
0x00047060 cmp r3, 0 |
| if (r3 != 0) {
0x00047062 bne.w 0x473f8 | goto label_129;
| }
| label_47:
0x00047066 ldr r2, [pc, 0x308] |
0x00047068 ldr r3, [pc, 0x2cc] | r3 = *(0x47338);
0x0004706a add r2, pc | r2 = 0x8e3e0;
0x0004706c ldr r3, [r2, r3] | r3 = *(0x8e3e0);
0x0004706e ldr r2, [r3] | r2 = *(0x8e3e0);
0x00047070 ldr r3, [sp, 0xcc] | r3 = var_cch;
0x00047072 eors r2, r3 | r2 ^= r3;
0x00047074 mov.w r3, 0 | r3 = 0;
0x00047078 it eq |
| if (r2 == r3) {
0x0004707a movweq r2, 0x19d | __asm ("movweq r2, aav.0x000000ff");
| }
| if (r2 != r3) {
0x0004707e bne.w 0x47204 | goto label_91;
| }
| label_29:
0x00047082 mov r1, r8 | r1 = r8;
0x00047084 mov r0, sl | r0 = sl;
0x00047086 add sp, 0xd4 |
0x00047088 vpop {d8, d9} | __asm ("vpop {d8, d9}");
0x0004708c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00047090 b.w 0x45e48 | void (*0x45e48)() ();
| label_77:
0x00047094 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x00047098 mov r6, r0 | r6 = r0;
0x0004709a ldr r1, [r5, 0xc] | r1 = *((r5 + 0xc));
0x0004709c mov r8, r5 | r8 = r5;
0x0004709e mov r7, fp | r7 = fp;
0x000470a0 b 0x469ac | goto label_14;
| label_117:
0x000470a2 movs r3, 2 | r3 = 2;
0x000470a4 str.w r3, [sl, 0x24] | __asm ("str.w r3, [sl, 0x24]");
0x000470a8 b.w 0x4683a | goto label_15;
| label_24:
0x000470ac cmp r0, 0xb |
| if (r0 == 0xb) {
0x000470ae beq.w 0x46a22 | goto label_2;
| }
0x000470b2 movw r3, 0x117e |
0x000470b6 movt r3, 1 | r3 = 0x1117e;
0x000470ba cmp r0, r3 |
| if (r0 != r3) {
0x000470bc bne.w 0x46a22 | goto label_2;
| }
| label_122:
0x000470c0 ldr.w r3, [sl, 0x24] | r3 = *((sl + 0x24));
| if (r3 != 0) {
0x000470c4 cbz r3, 0x470d4 |
0x000470c6 ldrd r2, r3, [sl] | __asm ("ldrd r2, r3, [sl]");
0x000470ca cmp r2, 1 |
0x000470cc sbcs r3, r3, 0 | __asm ("sbcs r3, r3, 0");
| if (r2 >= 1) {
0x000470d0 bge.w 0x472a8 | goto label_97;
| }
| }
0x000470d4 movw r6, 0x117e |
0x000470d8 movt r6, 1 | r6 = 0x1117e;
0x000470dc b 0x46a22 | goto label_2;
| label_90:
0x000470de ldr r3, [pc, 0x294] |
0x000470e0 add r3, pc | r3 = 0x8e45a;
0x000470e2 b 0x469ec | goto label_21;
| label_88:
0x000470e4 cmp r0, 0 |
| if (r0 != 0) {
0x000470e6 bne.w 0x46bee | goto label_22;
| }
0x000470ea ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x000470ec ldr r0, [r3, 0x60] | r0 = *((r3 + 0x60));
0x000470ee cmp r0, 0 |
| if (r0 != 0) {
0x000470f0 bne.w 0x46bee | goto label_22;
| }
0x000470f4 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x000470f6 b 0x46bec | goto label_23;
| label_121:
0x000470f8 cmp r0, 0 |
| if (r0 != 0) {
0x000470fa bne 0x470ac | goto label_24;
| }
0x000470fc mov r3, fp | r3 = fp;
0x000470fe ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x00047102 cmp r2, r3 |
| if (r2 != r3) {
0x00047104 bne.w 0x46f40 | goto label_25;
| }
0x00047108 b 0x46b70 | goto label_18;
| label_115:
0x0004710a ldr r2, [sp, 0x64] | r2 = var_64h;
0x0004710c ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00047110 lsls r4, r2, 9 | r4 = r2 << 9;
0x00047112 mov r0, r3 | r0 = r3;
| if (r4 >= r2) {
0x00047114 bpl.w 0x46e44 | goto label_26;
| }
0x00047118 ldr r2, [sp, 0x68] | r2 = var_68h;
0x0004711a lsls r1, r2, 0x1d | r1 = r2 << 0x1d;
0x0004711c itt mi |
| if (r1 >= r2) {
0x0004711e movmi r0, 0x19000 | r0 = 0x19000;
| }
| if (r1 >= r2) {
0x00047122 movs r1, 0 | r1 = 0;
| goto label_130;
| }
| if (r1 < 0) {
| label_130:
0x00047124 bmi.w 0x46e4c | goto label_27;
| }
0x00047128 b 0x46e44 | goto label_26;
| label_123:
0x0004712a cmp r4, 7 |
0x0004712c itttt eq |
| if (r4 != 7) {
0x0004712e moveq r1, 8 | r1 = 8;
| }
| if (r4 != 7) {
0x00047130 streq r1, [sl, 0x24] | *((sl + 0x24)) = r1;
| }
| if (r4 != 7) {
0x00047134 moveq r1, 0 | r1 = 0;
| }
| if (r4 == 7) {
0x00047136 str.w r1, [sl, 0x18] | __asm ("str.w r1, [sl, 0x18]");
| }
0x0004713a b 0x46f9a | goto label_28;
| label_118:
0x0004713c cmp r2, 0 |
| if (r2 < 0) {
0x0004713e blt 0x47220 | goto label_131;
| }
| if (r0 == 0) {
0x00047140 cbz r0, 0x47172 | goto label_132;
| }
0x00047142 ldr r3, [r0] | r3 = *(r0);
| if (r3 == 0) {
0x00047144 cbz r3, 0x47188 | goto label_35;
| }
0x00047146 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00047148 cmp r3, 0 |
| if (r3 < 0) {
0x0004714a blt 0x47188 | goto label_35;
| }
| do {
| label_51:
0x0004714c cmp r3, 5 |
0x0004714e ite le |
| if (r3 > 5) {
0x00047150 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x00047152 movgt r3, 1 | r3 = 1;
| }
| label_30:
0x00047154 cmp r3, 0 |
| if (r3 != 0) {
0x00047156 bne 0x47256 | goto label_133;
| }
| label_37:
0x00047158 ldr r2, [pc, 0x21c] |
0x0004715a ldr r3, [pc, 0x1dc] | r3 = *(0x4733a);
0x0004715c add r2, pc | r2 = 0x8e4d8;
0x0004715e ldr r3, [r2, r3] | r3 = *(0x8e4d8);
0x00047160 ldr r2, [r3] | r2 = *(0x8e4d8);
0x00047162 ldr r3, [sp, 0xcc] | r3 = var_cch;
0x00047164 eors r2, r3 | r2 ^= r3;
0x00047166 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0004716a bne 0x47204 | goto label_91;
| }
| label_33:
0x0004716c mov.w r2, 0x190 | r2 = 0x190;
0x00047170 b 0x47082 | goto label_29;
| label_132:
0x00047172 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00047174 ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
0x00047176 cmp r3, 0 |
| if (r3 == 0) {
0x00047178 beq.w 0x47438 | goto label_134;
| }
0x0004717c ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x0004717e cbz r3, 0x47186 | goto label_135;
| }
0x00047180 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00047182 cmp r3, 0 |
0x00047184 bge 0x4714c |
| } while (r3 >= 0);
| label_135:
0x00047186 ldr r0, [r0, 0x60] | r0 = *((r0 + 0x60));
| label_35:
0x00047188 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0004718a cmp r3, 5 |
0x0004718c ite le |
| if (r3 > 5) {
0x0004718e movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x00047190 movgt r3, 1 | r3 = 1;
| }
0x00047192 b 0x47154 | goto label_30;
| label_120:
0x00047194 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x00047196 ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
0x00047198 cmp r3, 0 |
| if (r3 == 0) {
0x0004719a beq.w 0x4744c | goto label_136;
| }
0x0004719e ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x000471a0 cbz r3, 0x471aa | goto label_137;
| }
0x000471a2 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x000471a4 cmp r3, 0 |
| if (r3 >= 0) {
0x000471a6 bge.w 0x46ec2 | goto label_31;
| }
| label_137:
0x000471aa ldr r0, [r0, 0x60] | r0 = *((r0 + 0x60));
| label_36:
0x000471ac ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000471ae cmp r3, 5 |
0x000471b0 ite le |
| if (r3 > 5) {
0x000471b2 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x000471b4 movgt r3, 1 | r3 = 1;
| }
0x000471b6 b 0x46eca | goto label_32;
| label_126:
0x000471b8 ldr r3, [pc, 0x188] | r3 = *(0x47344);
0x000471ba vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x000471be ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x000471c2 vstr d16, [sl] | __asm ("vstr d16, [sl]");
0x000471c6 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000471ca ldr.w r1, [r0, 0x108] | r1 = *((r0 + 0x108));
0x000471ce ldr r2, [r3, 8] | r2 = *(0x4734c);
0x000471d0 cmp r2, 0 |
| if (r2 < 0) {
0x000471d2 blt 0x47208 | goto label_138;
| }
0x000471d4 cmp r1, 0 |
| if (r1 == 0) {
0x000471d6 beq.w 0x47304 | goto label_139;
| }
| label_42:
0x000471da ldr r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x000471dc cbz r3, 0x47214 | goto label_140;
| }
0x000471de ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x000471e0 cmp r3, 0 |
| if (r3 < 0) {
0x000471e2 blt 0x47214 | goto label_140;
| }
| label_44:
0x000471e4 cmp r3, 5 |
0x000471e6 ite le |
| if (r3 > 5) {
0x000471e8 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x000471ea movgt r3, 1 | r3 = 1;
| }
| label_34:
0x000471ec cmp r3, 0 |
| if (r3 != 0) {
0x000471ee bne 0x47274 | goto label_141;
| }
| label_38:
0x000471f0 ldr r2, [pc, 0x188] |
0x000471f2 ldr r3, [pc, 0x144] | r3 = *(0x4733a);
0x000471f4 add r2, pc | r2 = 0x8e574;
0x000471f6 ldr r3, [r2, r3] | r3 = *(0x8e574);
0x000471f8 ldr r2, [r3] | r2 = *(0x8e574);
0x000471fa ldr r3, [sp, 0xcc] | r3 = var_cch;
0x000471fc eors r2, r3 | r2 ^= r3;
0x000471fe mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x00047202 beq 0x4716c | goto label_33;
| }
| label_91:
0x00047204 blx 0x1845c | fcn_0001845c ();
| if (r1 == 0) {
| label_138:
0x00047208 cbnz r1, 0x47214 |
0x0004720a ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x0004720c ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
| if (r1 != 0) {
0x0004720e cbnz r1, 0x47214 | goto label_140;
| }
0x00047210 ldr r1, [r0, 8] | r1 = *((r0 + 8));
| label_43:
0x00047212 adds r1, 0x10 | r1 += 0x10;
| }
| label_140:
0x00047214 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00047216 cmp r3, 5 |
0x00047218 ite le |
| if (r3 > 5) {
0x0004721a movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x0004721c movgt r3, 1 | r3 = 1;
| }
0x0004721e b 0x471ec | goto label_34;
| label_131:
0x00047220 cmp r0, 0 |
| if (r0 != 0) {
0x00047222 bne 0x47188 | goto label_35;
| }
0x00047224 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00047226 ldr r0, [r3, 0x60] | r0 = *((r3 + 0x60));
0x00047228 cmp r0, 0 |
| if (r0 != 0) {
0x0004722a bne 0x47188 | goto label_35;
| }
0x0004722c ldr r0, [r1, 8] | r0 = *((r1 + 8));
| label_50:
0x0004722e adds r0, 0x10 | r0 += 0x10;
0x00047230 b 0x47188 | goto label_35;
| label_119:
0x00047232 cmp r0, 0 |
| if (r0 != 0) {
0x00047234 bne 0x471ac | goto label_36;
| }
0x00047236 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00047238 ldr r0, [r3, 0x60] | r0 = *((r3 + 0x60));
0x0004723a cmp r0, 0 |
| if (r0 != 0) {
0x0004723c bne 0x471ac | goto label_36;
| }
0x0004723e ldr r0, [r1, 8] | r0 = *((r1 + 8));
| label_52:
0x00047240 adds r0, 0x10 | r0 += 0x10;
0x00047242 b 0x471ac | goto label_36;
| label_109:
0x00047244 mov r1, r8 | r1 = r8;
0x00047246 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x0004724a mov r8, r5 | r8 = r5;
0x0004724c movs r7, 1 | r7 = 1;
0x0004724e movw r6, 0x4e2e | r6 = 0x4e2e;
0x00047252 b.w 0x469ac | goto label_14;
| label_133:
0x00047256 ldr r0, [pc, 0x128] |
0x00047258 movs r3, 0 | r3 = 0;
0x0004725a str r1, [sp, 4] | var_4h = r1;
0x0004725c movw r1, 0x1a1 | r1 = 0x1a1;
0x00047260 str r3, [sp] | *(sp) = r3;
0x00047262 movs r3, 6 | r3 = 6;
0x00047264 add r0, pc | r0 = 0x8e5ea;
0x00047266 str r4, [sp, 0xc] | var_ch = r4;
0x00047268 str r0, [sp, 8] | var_8h = r0;
0x0004726a ldr r0, [pc, 0x118] |
0x0004726c add r0, pc | r0 = 0x8e5f6;
0x0004726e bl 0x38a7c | ap_log_rerror_ ();
0x00047272 b 0x47158 | goto label_37;
| label_141:
0x00047274 ldr r1, [pc, 0x110] |
0x00047276 movs r3, 0 | r3 = 0;
0x00047278 str r0, [sp, 4] | var_4h = r0;
0x0004727a ldr r0, [pc, 0x110] |
0x0004727c add r1, pc | r1 = 0x8e608;
0x0004727e str r3, [sp] | *(sp) = r3;
0x00047280 str r1, [sp, 8] | var_8h = r1;
0x00047282 movs r3, 6 | r3 = 6;
0x00047284 add r0, pc | r0 = 0x8e616;
0x00047286 mov.w r1, 0x1b0 | r1 = 0x1b0;
0x0004728a bl 0x38a7c | ap_log_rerror_ ();
0x0004728e b 0x471f0 | goto label_38;
| label_124:
0x00047290 ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00047292 ldr r1, [r4] | r1 = *(r4);
0x00047294 ldr r0, [r4, 0x18] | r0 = *((r4 + 0x18));
0x00047296 ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x00047298 str r1, [r2] | *(r2) = r1;
0x0004729a ldr r2, [r4] | r2 = *(r4);
0x0004729c ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0004729e str r1, [r2, 4] | *((r2 + 4)) = r1;
0x000472a0 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000472a2 ldr r3, [r4, 0x1c] | r3 = *((r4 + 0x1c));
0x000472a4 mov r0, r4 | r0 = r4;
0x000472a6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r3);
| label_97:
0x000472a8 movw r6, 0x1178 |
0x000472ac movt r6, 1 | r6 = 0x11178;
0x000472b0 b.w 0x46a22 | goto label_2;
| label_93:
0x000472b4 lsls r2, r6, 0x1e | r2 = r6 << 0x1e;
0x000472b6 it mi |
| if (r2 < r6) {
0x000472b8 strmi r1, [r0, 0x94] | *((r0 + 0x94)) = r1;
| goto label_142;
| }
| if (r2 < r6) {
| label_142:
0x000472bc bmi.w 0x46850 | goto label_1;
| }
0x000472c0 movs r3, 0x64 | r3 = 0x64;
0x000472c2 ldr r6, [r0, 0x40] | r6 = *((r0 + 0x40));
0x000472c4 str r3, [r0, 0x44] | *((r0 + 0x44)) = r3;
0x000472c6 str r1, [r0, 0x40] | *((r0 + 0x40)) = r1;
0x000472c8 bl 0x2395c | ap_send_interim_response ();
0x000472cc ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x000472d0 strd r6, r4, [r3, 0x40] | __asm ("strd r6, r4, [r3, 0x40]");
0x000472d4 b 0x46f02 | goto label_39;
| label_128:
0x000472d6 ldr r7, [r5, 4] | r7 = *((r5 + 4));
0x000472d8 ldr r3, [r7, 0x60] | r3 = *((r7 + 0x60));
0x000472da cmp r3, 0 |
| if (r3 == 0) {
0x000472dc beq.w 0x47528 | goto label_143;
| }
0x000472e0 ldr.w ip, [r3] | ip = *(r3);
0x000472e4 cmp.w ip, 0 |
| if (ip == 0) {
0x000472e8 beq 0x472f6 | goto label_144;
| }
0x000472ea ldrsb.w ip, [ip, r2] | ip = *((ip + r2));
0x000472ee cmp.w ip, 0 |
| if (ip >= 0) {
0x000472f2 bge.w 0x47054 | goto label_40;
| }
| label_144:
0x000472f6 ldr r3, [r7, 0x60] | r3 = *((r7 + 0x60));
| label_45:
0x000472f8 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000472fa cmp r3, 5 |
0x000472fc ite le |
| if (r3 > 5) {
0x000472fe movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x00047300 movgt r3, 1 | r3 = 1;
| }
0x00047302 b 0x47060 | goto label_41;
| label_139:
0x00047304 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x00047306 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x00047308 cmp r1, 0 |
| if (r1 != 0) {
0x0004730a bne.w 0x471da | goto label_42;
| }
0x0004730e ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x00047310 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00047312 cmp r3, 0 |
| if (r3 == 0) {
0x00047314 beq.w 0x47212 | goto label_43;
| }
0x00047318 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0004731a cmp r3, 0 |
| if (r3 >= 0) {
0x0004731c bge.w 0x471e4 | goto label_44;
| }
0x00047320 b 0x47212 | goto label_43;
| label_127:
0x00047322 cmp r3, 0 |
| if (r3 != 0) {
0x00047324 bne 0x472f8 | goto label_45;
| }
0x00047326 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00047328 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0004732a cmp r3, 0 |
| if (r3 != 0) {
0x0004732c bne 0x472f8 | goto label_45;
| }
0x0004732e ldr r3, [r5, 8] | r3 = *((r5 + 8));
| label_59:
0x00047330 adds r3, 0x10 | r3 += 0x10;
0x00047332 b 0x472f8 | goto label_45;
| label_100:
0x00047390 ldr r1, [pc, 0x264] |
0x00047392 ldr.w r0, [r5, 0xc0] | r0 = *((r5 + 0xc0));
0x00047396 add r1, pc | r1 = 0x8e992;
0x00047398 blx 0x185a8 | apr_hash_make ();
0x0004739c ldr r3, [pc, 0x25c] | r3 = *(0x475fc);
0x0004739e mov r1, r0 | r1 = r0;
0x000473a0 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000473a4 ldr r2, [r3, 8] | r2 = *(0x47604);
0x000473a6 ldr.w r3, [r5, 0x108] | r3 = *((r5 + 0x108));
0x000473aa cmp r2, 0 |
| if (r2 < 0) {
0x000473ac blt 0x4741c | goto label_145;
| }
0x000473ae cmp r3, 0 |
| if (r3 == 0) {
0x000473b0 beq.w 0x4753e | goto label_146;
| }
0x000473b4 ldr r0, [r3] | r0 = *(r3);
0x000473b6 cmp r0, 0 |
| if (r0 == 0) {
0x000473b8 beq 0x47420 | goto label_55;
| }
0x000473ba ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x000473bc cmp r0, 0 |
| if (r0 < 0) {
0x000473be blt 0x47420 | goto label_55;
| }
| label_60:
0x000473c0 ldr r3, [r3] | r3 = *(r3);
0x000473c2 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x000473c4 cmp r3, 5 |
0x000473c6 ble 0x473f4 |
| while (r3 > 5) {
0x000473c8 ldr r0, [r5, 0x44] | r0 = *((r5 + 0x44));
0x000473ca cmp r1, 0 |
| if (r1 == 0) {
0x000473cc beq.w 0x47566 | goto label_147;
| }
0x000473d0 ldr r3, [pc, 0x22c] |
0x000473d2 add r3, pc | r3 = 0x8e9d6;
| label_62:
0x000473d4 strd r3, r1, [sp, 0x10] | __asm ("strd r3, r1, [sp, 0x10]");
0x000473d8 movw r1, 0x13d | r1 = 0x13d;
0x000473dc ldr r3, [pc, 0x224] |
0x000473de str r0, [sp, 0xc] | var_ch = r0;
0x000473e0 ldr r0, [pc, 0x224] |
0x000473e2 add r3, pc | r3 = 0x8e9ea;
0x000473e4 strd r5, r3, [sp, 4] | __asm ("strd r5, r3, [sp, 4]");
0x000473e8 movs r3, 0 | r3 = 0;
0x000473ea str r3, [sp] | *(sp) = r3;
0x000473ec add r0, pc | r0 = 0x8e9f8;
0x000473ee movs r3, 6 | r3 = 6;
0x000473f0 bl 0x38a7c | ap_log_rerror_ ();
| label_48:
0x000473f4 movs r6, 0x16 | r6 = 0x16;
0x000473f6 b 0x46cb2 | goto label_46;
| label_129:
0x000473f8 strd r1, r0, [sp, 0x18] | __asm ("strd r1, r0, [var_18h]");
0x000473fc movs r3, 0 | r3 = 0;
0x000473fe ldr r1, [pc, 0x20c] |
0x00047400 ldr r0, [pc, 0x20c] |
0x00047402 str r3, [sp] | *(sp) = r3;
0x00047404 movs r3, 6 | r3 = 6;
0x00047406 add r1, pc | r1 = 0x8ea18;
0x00047408 strd r6, r4, [sp, 0x10] | __asm ("strd r6, r4, [var_10h]");
0x0004740c str r1, [sp, 8] | var_8h = r1;
0x0004740e add r0, pc | r0 = 0x8ea22;
0x00047410 mov.w r1, 0x1ba | r1 = 0x1ba;
0x00047414 str r5, [sp, 4] | var_4h = r5;
0x00047416 bl 0x38a7c | ap_log_rerror_ ();
0x0004741a b 0x47066 | goto label_47;
| label_145:
0x0004741c cmp r3, 0 |
| if (r3 == 0) {
0x0004741e beq 0x474e4 | goto label_148;
| }
| label_55:
0x00047420 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00047422 cmp r3, 5 |
0x00047424 bgt 0x473c8 |
| }
0x00047426 b 0x473f4 | goto label_48;
| label_101:
0x00047428 mov r1, r7 | r1 = r7;
0x0004742a ldr.w r2, [r5, 0x1d0] | r2 = *((r5 + 0x1d0));
0x0004742e ldr r0, [r5] | r0 = *(r5);
0x00047430 blx 0x18140 | r0 = strcpy (r0, r1)
0x00047434 mov r7, r0 | r7 = r0;
0x00047436 b 0x46cba | goto label_49;
| label_134:
0x00047438 ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x0004743a ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0004743c cmp r3, 0 |
| if (r3 == 0) {
0x0004743e beq.w 0x4722e | goto label_50;
| }
0x00047442 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00047444 cmp r3, 0 |
| if (r3 >= 0) {
0x00047446 bge.w 0x4714c | goto label_51;
| }
0x0004744a b 0x4722e | goto label_50;
| label_136:
0x0004744c ldr r0, [r1, 8] | r0 = *((r1 + 8));
0x0004744e ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x00047450 cmp r3, 0 |
| if (r3 == 0) {
0x00047452 beq.w 0x47240 | goto label_52;
| }
0x00047456 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00047458 cmp r3, 0 |
| if (r3 >= 0) {
0x0004745a bge.w 0x46ec2 | goto label_31;
| }
0x0004745e b 0x47240 | goto label_52;
| label_98:
0x00047460 mov r6, r0 | r6 = r0;
0x00047462 b.w 0x46a22 | goto label_2;
| label_125:
0x00047466 ldr r3, [pc, 0x194] | r3 = *(0x475fe);
0x00047468 ldr.w r6, [r8, 0xc] | r6 = *((r8 + 0xc));
0x0004746c ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00047470 ldr r2, [r3, 8] | r2 = *(0x47606);
0x00047472 ldr.w r3, [r6, 0x108] | r3 = *((r6 + 0x108));
0x00047476 cmp r2, 0 |
| if (r2 < 0) {
0x00047478 blt 0x474d2 | goto label_149;
| }
| if (r3 == 0) {
0x0004747a cbz r3, 0x474a8 | goto label_150;
| }
0x0004747c ldr r7, [r3] | r7 = *(r3);
| if (r7 == 0) {
0x0004747e cbz r7, 0x474c6 | goto label_54;
| }
0x00047480 ldrsb r7, [r7, r2] | r7 = *((r7 + r2));
0x00047482 cmp r7, 0 |
| if (r7 < 0) {
0x00047484 blt 0x474c6 | goto label_54;
| }
| do {
| label_58:
0x00047486 ldr r3, [r3] | r3 = *(r3);
0x00047488 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x0004748a cmp r3, 5 |
0x0004748c ite le |
| if (r3 > 5) {
0x0004748e movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x00047490 movgt r3, 1 | r3 = 1;
| }
| label_53:
0x00047492 cmp r3, 0 |
| if (r3 != 0) {
0x00047494 bne 0x474f2 | goto label_151;
| }
| label_56:
0x00047496 movw r2, 0x19d | r2 = 0x19d;
0x0004749a mov r1, r8 | r1 = r8;
0x0004749c mov r0, sl | r0 = sl;
0x0004749e bl 0x45e48 | r0 = fcn_00045e48 (r0, r1, r2);
0x000474a2 mov r6, r0 | r6 = r0;
0x000474a4 b.w 0x46a22 | goto label_2;
| label_150:
0x000474a8 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x000474aa ldr r3, [r7, 0x60] | r3 = *((r7 + 0x60));
0x000474ac cmp r3, 0 |
| if (r3 == 0) {
0x000474ae beq 0x47516 | goto label_152;
| }
0x000474b0 ldr.w ip, [r3] | ip = *(r3);
0x000474b4 cmp.w ip, 0 |
| if (ip == 0) {
0x000474b8 beq 0x474c4 | goto label_153;
| }
0x000474ba ldrsb.w ip, [ip, r2] | ip = *((ip + r2));
0x000474be cmp.w ip, 0 |
0x000474c2 bge 0x47486 |
| } while (ip >= 0);
| label_153:
0x000474c4 ldr r3, [r7, 0x60] | r3 = *((r7 + 0x60));
| do {
| label_54:
0x000474c6 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000474c8 cmp r3, 5 |
0x000474ca ite le |
| if (r3 > 5) {
0x000474cc movle r3, 0 | r3 = 0;
| }
| if (r3 <= 5) {
0x000474ce movgt r3, 1 | r3 = 1;
| }
0x000474d0 b 0x47492 | goto label_53;
| label_149:
0x000474d2 cmp r3, 0 |
0x000474d4 bne 0x474c6 |
| } while (r3 != 0);
0x000474d6 ldr r3, [r6, 4] | r3 = *((r6 + 4));
0x000474d8 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x000474da cmp r3, 0 |
| if (r3 != 0) {
0x000474dc bne 0x474c6 | goto label_54;
| }
0x000474de ldr r3, [r6, 8] | r3 = *((r6 + 8));
| label_57:
0x000474e0 adds r3, 0x10 | r3 += 0x10;
0x000474e2 b 0x474c6 | goto label_54;
| label_148:
0x000474e4 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x000474e6 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x000474e8 cmp r3, 0 |
| if (r3 != 0) {
0x000474ea bne 0x47420 | goto label_55;
| }
0x000474ec ldr r3, [r5, 8] | r3 = *((r5 + 8));
| label_61:
0x000474ee adds r3, 0x10 | r3 += 0x10;
0x000474f0 b 0x47420 | goto label_55;
| label_151:
0x000474f2 strd r1, r4, [sp, 0x18] | __asm ("strd r1, r4, [var_18h]");
0x000474f6 movs r3, 0 | r3 = 0;
0x000474f8 ldr r1, [pc, 0x118] |
0x000474fa strd r5, r0, [sp, 0x10] | __asm ("strd r5, r0, [var_10h]");
0x000474fe ldr r0, [pc, 0x118] |
0x00047500 add r1, pc | r1 = 0x8eb18;
0x00047502 str r3, [sp] | *(sp) = r3;
0x00047504 str r1, [sp, 8] | var_8h = r1;
0x00047506 movs r3, 6 | r3 = 6;
0x00047508 add r0, pc | r0 = 0x8eb26;
0x0004750a mov.w r1, 0x290 | r1 = 0x290;
0x0004750e str r6, [sp, 4] | var_4h = r6;
0x00047510 bl 0x38a7c | ap_log_rerror_ ();
0x00047514 b 0x47496 | goto label_56;
| label_152:
0x00047516 ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x00047518 ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
0x0004751a cmp r7, 0 |
| if (r7 == 0) {
0x0004751c beq 0x474e0 | goto label_57;
| }
0x0004751e ldrsb r7, [r7, r2] | r7 = *((r7 + r2));
0x00047520 cmp r7, 0 |
| if (r7 < 0) {
0x00047522 blt 0x474e0 | goto label_57;
| }
0x00047524 adds r3, 0x10 | r3 += 0x10;
0x00047526 b 0x47486 | goto label_58;
| label_143:
0x00047528 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x0004752a ldr r7, [r3, 0x10] | r7 = *((r3 + 0x10));
0x0004752c cmp r7, 0 |
| if (r7 == 0) {
0x0004752e beq.w 0x47330 | goto label_59;
| }
0x00047532 ldrsb r7, [r7, r2] | r7 = *((r7 + r2));
0x00047534 cmp r7, 0 |
| if (r7 < 0) {
0x00047536 blt.w 0x47330 | goto label_59;
| }
0x0004753a adds r3, 0x10 | r3 += 0x10;
0x0004753c b 0x47054 | goto label_40;
| label_146:
0x0004753e ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x00047540 ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
| if (r3 == 0) {
0x00047542 cbz r3, 0x47554 | goto label_154;
| }
0x00047544 ldr r4, [r3] | r4 = *(r3);
| if (r4 == 0) {
0x00047546 cbz r4, 0x47550 | goto label_155;
| }
0x00047548 ldrsb r4, [r4, r2] | r4 = *((r4 + r2));
0x0004754a cmp r4, 0 |
| if (r4 >= 0) {
0x0004754c bge.w 0x473c0 | goto label_60;
| }
| label_155:
0x00047550 ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
0x00047552 b 0x47420 | goto label_55;
| label_154:
0x00047554 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00047556 ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x00047558 cmp r0, 0 |
| if (r0 == 0) {
0x0004755a beq 0x474ee | goto label_61;
| }
0x0004755c ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x0004755e cmp r0, 0 |
| if (r0 < 0) {
0x00047560 blt 0x474ee | goto label_61;
| }
0x00047562 adds r3, 0x10 | r3 += 0x10;
0x00047564 b 0x473c0 | goto label_60;
| label_147:
0x00047566 ldr r1, [pc, 0xb4] |
0x00047568 add r1, pc | r1 = 0x8eb8a;
0x0004756a mov r3, r1 | r3 = r1;
0x0004756c b 0x473d4 | goto label_62;
| label_72:
0x0004756e ldr r2, [pc, 0x8c] |
0x00047570 ldr r4, [r5, 0xc] | r4 = *((r5 + 0xc));
0x00047572 ldr.w r2, [sb, r2] | r2 = *((sb + r2));
0x00047576 ldr.w r1, [r4, 0x108] | r1 = *((r4 + 0x108));
0x0004757a ldr r2, [r2, 8] | r2 = *(0x47606);
0x0004757c cmp r2, 0 |
| if (r2 < 0) {
0x0004757e blt 0x475a0 | goto label_156;
| }
0x00047580 cmp r1, 0 |
| if (r1 == 0) {
0x00047582 beq 0x475de | goto label_157;
| }
| label_65:
0x00047584 ldr r0, [r1] | r0 = *(r1);
| if (r0 == 0) {
0x00047586 cbz r0, 0x475a2 | goto label_63;
| }
0x00047588 ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x0004758a cmp r0, 0 |
| if (r0 < 0) {
0x0004758c blt 0x475a2 | goto label_63;
| }
| label_67:
0x0004758e cmp r0, 5 |
0x00047590 ite le |
| if (r0 > 5) {
0x00047592 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 5) {
0x00047594 movgt r0, 1 | r0 = 1;
| }
| if (r0 != 0) {
0x00047596 cbnz r0, 0x475c0 | goto label_158;
| }
| do {
| label_64:
0x00047598 movw r6, 0x4e2e | r6 = 0x4e2e;
0x0004759c b.w 0x46a22 | goto label_2;
| if (r1 == 0) {
| label_156:
0x000475a0 cbz r1, 0x475b2 | goto label_159;
| }
| label_63:
0x000475a2 ldr r0, [r1, 4] | r0 = *((r1 + 4));
0x000475a4 cmp r0, 5 |
0x000475a6 ite le |
| if (r0 > 5) {
0x000475a8 movle r0, 0 | r0 = 0;
| }
| if (r0 <= 5) {
0x000475aa movgt r0, 1 | r0 = 1;
| }
0x000475ac cmp r0, 0 |
0x000475ae beq 0x47598 |
| } while (r0 == 0);
0x000475b0 b 0x475c0 | goto label_158;
| label_159:
0x000475b2 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000475b4 ldr r1, [r1, 0x60] | r1 = *((r1 + 0x60));
0x000475b6 cmp r1, 0 |
| if (r1 != 0) {
0x000475b8 bne 0x475a2 | goto label_63;
| }
0x000475ba ldr r1, [r4, 8] | r1 = *((r4 + 8));
| label_66:
0x000475bc adds r1, 0x10 | r1 += 0x10;
0x000475be b 0x475a2 | goto label_63;
| label_158:
0x000475c0 ldr r1, [pc, 0x5c] |
0x000475c2 movs r5, 0 | r5 = 0;
0x000475c4 ldr r0, [pc, 0x5c] |
0x000475c6 str r3, [sp, 0xc] | var_ch = r3;
0x000475c8 movs r3, 6 | r3 = 6;
0x000475ca add r1, pc | r1 = 0x8ebee;
0x000475cc str r4, [sp, 4] | var_4h = r4;
0x000475ce str r1, [sp, 8] | var_8h = r1;
0x000475d0 add r0, pc | r0 = 0x8ebf8;
0x000475d2 movw r1, 0x2b9 | r1 = 0x2b9;
0x000475d6 str r5, [sp] | *(sp) = r5;
0x000475d8 bl 0x38a7c | ap_log_rerror_ ();
0x000475dc b 0x47598 | goto label_64;
| label_157:
0x000475de ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000475e0 ldr r1, [r1, 0x60] | r1 = *((r1 + 0x60));
0x000475e2 cmp r1, 0 |
| if (r1 != 0) {
0x000475e4 bne 0x47584 | goto label_65;
| }
0x000475e6 ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x000475e8 ldr r0, [r1, 0x10] | r0 = *((r1 + 0x10));
0x000475ea cmp r0, 0 |
| if (r0 == 0) {
0x000475ec beq 0x475bc | goto label_66;
| }
0x000475ee ldrsb r0, [r0, r2] | r0 = *((r0 + r2));
0x000475f0 cmp r0, 0 |
| if (r0 >= 0) {
0x000475f2 bge 0x4758e | goto label_67;
| }
0x000475f4 b 0x475bc | goto label_66;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x47688 */
| #include <stdint.h>
|
; (fcn) sym.ap_http_header_filter () | void ap_http_header_filter (int16_t arg_4h, int16_t arg_8h, int16_t arg_c8h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int32_t var_4h;
| int32_t var_4h_2;
| int32_t var_ch;
| int32_t var_ch_2;
| int16_t var_18h;
| 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_38h;
| int32_t var_38h_2;
| int16_t var_44h;
| char * filename;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_52h;
| int16_t var_54h;
| r0 = arg1;
| r1 = arg2;
0x00047688 ldr.w r2, [pc, 0x848] | r2 = *(0x00047ed4);
0x0004768c ldr.w r3, [pc, 0x848] |
0x00047690 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00047694 sub sp, 0x5c |
0x00047696 add r2, pc | r2 += pc;
0x00047698 ldr r5, [r0, 0xc] | r5 = *((r0 + 0xc));
0x0004769a mov r8, r0 | r8 = r0;
0x0004769c mov fp, r1 |
0x0004769e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000476a0 ldr.w r7, [pc, 0x838] | r7 = *(0x00047edc);
0x000476a4 ldr.w sb, [r5, 4] | sb = *((r5 + 4));
0x000476a8 ldr r3, [r3] | r3 = *(0x47ed8);
0x000476aa str r3, [sp, 0x54] | var_54h = r3;
0x000476ac mov.w r3, 0 | r3 = 0;
0x000476b0 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x000476b2 add r7, pc | r7 += pc;
0x000476b4 str r3, [sp, 0x1c] | var_1ch = r3;
| if (r3 == 0) {
0x000476b6 cbnz r3, 0x476c6 |
0x000476b8 ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x000476ba cmp.w r3, 0x130 |
0x000476be it ne |
| if (r3 != fcn.00000004) {
0x000476c0 cmpne r3, 0xcc | __asm ("cmpne r3, 0xcc");
| }
| if (r3 != fcn.00000004) {
0x000476c2 bne.w 0x479ac | goto label_32;
| }
| }
0x000476c6 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000476ca movs r0, 0 | r0 = 0;
0x000476cc add.w r6, fp, 4 | r6 += arg_4h;
0x000476d0 str r0, [sp, 0x44] | var_44h = r0;
0x000476d2 str r3, [sp, 0x20] | var_20h = r3;
0x000476d4 cmp r3, 0 |
| if (r3 == 0) {
0x000476d6 beq.w 0x47c28 | goto label_33;
| }
0x000476da ldr r3, [r3] | r3 = *(r3);
0x000476dc cmp r3, 0 |
| if (r3 != 0) {
0x000476de bne.w 0x47a06 | goto label_34;
| }
0x000476e2 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x000476e6 cmp r6, r2 |
0x000476e8 str r2, [sp, 0x18] | var_18h = r2;
0x000476ea ittt eq |
| if (r6 != r2) {
0x000476ec moveq sl, r3 | sl = r3;
| }
| if (r6 != r2) {
0x000476ee moveq r3, 1 | r3 = 1;
| }
| if (r6 != r2) {
0x000476f0 streq r3, [sp, 0x1c] | var_1ch = r3;
| }
| if (r6 == r2) {
0x000476f2 beq.w 0x47a52 | goto label_35;
| }
0x000476f6 movs r3, 1 | r3 = 1;
0x000476f8 str r3, [sp, 0x1c] | var_1ch = r3;
| label_1:
0x000476fa ldr.w r3, [pc, 0x7e4] | r3 = *(0x47ee2);
0x000476fe mov.w sl, 0 | sl = 0;
0x00047702 mov r4, sl | r4 = sl;
0x00047704 ldr r1, [r7, r3] | r1 = *((r7 + r3));
0x00047706 ldr r3, [sp, 0x18] | r3 = var_18h;
| do {
0x00047708 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0004770a cmp r4, 0 |
0x0004770c it eq |
| if (r4 == 0) {
0x0004770e cmpeq r2, r1 | __asm ("cmpeq r2, r1");
| }
0x00047710 it eq |
| if (r4 != 0) {
0x00047712 ldreq r4, [r3, 0x18] | r4 = *((r3 + 0x18));
| }
| if (r4 != 0) {
0x00047714 beq 0x47722 |
0x00047716 ldr.w r0, [pc, 0x7cc] | r0 = *(0x47ee6);
0x0004771a ldr r0, [r7, r0] | r0 = *((r7 + r0));
0x0004771c cmp r2, r0 |
| if (r2 == r0) {
0x0004771e beq.w 0x479d6 | goto label_36;
| }
| }
0x00047722 ldr r3, [r3] | r3 = *(r3);
0x00047724 cmp r3, r6 |
0x00047726 bne 0x47708 |
| } while (r3 != r6);
0x00047728 str r3, [sp, 0x18] | var_18h = r3;
0x0004772a mov sl, r4 | sl = r4;
0x0004772c ldr r3, [sp, 0x20] | r3 = var_20h;
0x0004772e ldr r3, [r3] | r3 = *(r3);
0x00047730 cmp r3, 0 |
| if (r3 == 0) {
0x00047732 beq.w 0x47a52 | goto label_35;
| }
| label_24:
0x00047736 cmp.w sl, 0 |
| if (sl != 0) {
0x0004773a bne.w 0x47ebc | goto label_37;
| }
0x0004773e str.w sl, [sp, 0x28] | __asm ("str.w sl, [var_28h]");
| label_2:
0x00047742 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x00047744 cmp r3, 0 |
| if (r3 != 0) {
0x00047746 bne.w 0x47c40 | goto label_38;
| }
0x0004774a ldr.w r0, [r5, 0xb8] | r0 = *((r5 + 0xb8));
0x0004774e blx 0x178d8 | r0 = fcn_000178d8 ();
0x00047752 cmp r0, 0 |
| if (r0 == 0) {
0x00047754 beq.w 0x47b42 | goto label_39;
| }
| label_5:
0x00047758 ldr.w r1, [pc, 0x78c] |
0x0004775c ldr.w r0, [r5, 0xbc] | r0 = *((r5 + 0xbc));
0x00047760 add r1, pc | r1 = 0x8f64c;
0x00047762 blx 0x185a8 | r0 = apr_hash_make ();
0x00047766 mov r6, r0 | r6 = r0;
0x00047768 cmp r0, 0 |
| if (r0 == 0) {
0x0004776a beq.w 0x47d3e | goto label_40;
| }
0x0004776e ldr.w r1, [pc, 0x77c] | r1 = *(0x00047eec);
0x00047772 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047776 add r1, pc | r1 += pc;
0x00047778 blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x0004777c ldr.w r2, [pc, 0x770] |
0x00047780 mov.w r3, 0x3e8 | r3 = 0x3e8;
0x00047784 ldr.w r1, [pc, 0x76c] |
0x00047788 ldr.w r0, [r5, 0xbc] | r0 = *((r5 + 0xbc));
0x0004778c add r2, pc | r2 = 0x8f680;
0x0004778e str r3, [r5, 0x28] | *((r5 + 0x28)) = r3;
0x00047790 add r1, pc | r1 = 0x8f688;
0x00047792 blx 0x18340 | fcn_00018340 ();
| label_16:
0x00047796 ldr.w r1, [pc, 0x760] | r1 = *(0x00047ef8);
0x0004779a ldr.w r0, [r5, 0xc0] | r0 = *((r5 + 0xc0));
0x0004779e add r1, pc | r1 += pc;
0x000477a0 blx 0x185a8 | r0 = apr_hash_make ();
| if (r0 != 0) {
0x000477a4 cbz r0, 0x477b4 |
0x000477a6 ldr.w r1, [pc, 0x754] | r1 = *(0x00047efc);
0x000477aa ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x000477ae add r1, pc | r1 += pc;
0x000477b0 blx 0x17a14 | apr_dynamic_fn_retrieve ();
| }
0x000477b4 ldr r3, [r5, 0x1c] | r3 = *((r5 + 0x1c));
0x000477b6 cmp r3, 0 |
| if (r3 == 0) {
0x000477b8 beq.w 0x47a46 | goto label_41;
| }
| label_3:
0x000477bc mov r0, r5 | r0 = r5;
0x000477be bl 0x432bc | ap_set_keepalive ();
0x000477c2 ldr r3, [r5, 0x44] | r3 = *((r5 + 0x44));
0x000477c4 cmp.w r3, 0x130 |
0x000477c8 it ne |
| if (r3 != fcn.00000004) {
0x000477ca cmpne r3, 0xcc | __asm ("cmpne r3, 0xcc");
| }
| if (r3 == fcn.00000004) {
0x000477cc beq.w 0x47b06 | goto label_42;
| }
0x000477d0 ldr.w r3, [r5, 0x88] | r3 = *((r5 + 0x88));
0x000477d4 cmp r3, 0 |
| if (r3 != 0) {
0x000477d6 bne.w 0x47d92 | goto label_43;
| }
| label_18:
0x000477da ldr.w r1, [r5, 0xc4] | r1 = *((r5 + 0xc4));
| label_4:
0x000477de mov r0, r5 | r0 = r5;
0x000477e0 bl 0x21dd8 | r0 = ap_make_content_type ();
0x000477e4 mov r2, r0 | r2 = r0;
| if (r0 != 0) {
0x000477e6 cbz r0, 0x477f6 |
0x000477e8 ldr.w r1, [pc, 0x714] |
0x000477ec ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x000477f0 add r1, pc | r1 = 0x8f6f4;
0x000477f2 blx 0x18340 | fcn_00018340 ();
| }
0x000477f6 ldr.w r2, [r5, 0xcc] | r2 = *((r5 + 0xcc));
| if (r2 != 0) {
0x000477fa cbz r2, 0x4780a |
0x000477fc ldr.w r1, [pc, 0x704] |
0x00047800 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047804 add r1, pc | r1 = 0x8f70c;
0x00047806 blx 0x18340 | fcn_00018340 ();
| }
0x0004780a ldr.w r0, [r5, 0xd0] | r0 = *((r5 + 0xd0));
0x0004780e blx 0x17ba0 | r0 = apr_file_read ();
0x00047812 cmp r0, 0 |
| if (r0 == 0) {
0x00047814 beq.w 0x47cca | goto label_44;
| }
| label_22:
0x00047818 ldr.w r3, [r5, 0x124] | r3 = *((r5 + 0x124));
0x0004781c cmp r3, 0 |
| if (r3 != 0) {
0x0004781e bne.w 0x47c96 | goto label_45;
| }
| label_14:
0x00047822 ldr r3, [r5, 0x24] | r3 = *((r5 + 0x24));
0x00047824 cmp r3, 0 |
| if (r3 != 0) {
0x00047826 bne.w 0x47c66 | goto label_46;
| }
| label_13:
0x0004782a ldr.w r1, [sb, 0x40] | r1 = *((sb + 0x40));
0x0004782e ldr r0, [r5] | r0 = *(r5);
0x00047830 blx 0x17cac | fcn_00017cac ();
0x00047834 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00047836 mov r1, r0 | r1 = r0;
0x00047838 mov r6, r0 | r6 = r0;
0x0004783a mov r0, r5 | r0 = r5;
0x0004783c bl 0x45f58 | fcn_00045f58 (r0, r1, r2);
0x00047840 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047844 ldr.w sb, [r5] | sb = *(r5);
0x00047848 blx 0x179c0 | apr_bucket_flush_create ();
0x0004784c ldr r1, [r0, 8] | r1 = *((r0 + 8));
0x0004784e mov r3, r0 | r3 = r0;
0x00047850 str r0, [sp, 0x24] | var_24h = r0;
0x00047852 cmp r1, 0 |
| if (r1 == 0) {
0x00047854 beq.w 0x47b80 | goto label_47;
| }
0x00047858 mov r0, sb | r0 = sb;
0x0004785a ldr.w sb, [r3, 0x10] | sb = *((r3 + 0x10));
0x0004785e add.w r3, r1, r1, lsl 1 | r3 = r1 + (r1 << 1);
0x00047862 ldr.w r4, [pc, 0x6a4] |
0x00047866 lsls r1, r1, 5 | r1 <<= 5;
0x00047868 add.w r3, sb, r3, lsl 2 | r3 = sb + (r3 << 2);
0x0004786c add r4, pc | r4 = 0x8f77a;
0x0004786e str r3, [sp, 0x2c] | var_2ch = r3;
0x00047870 blx 0x18240 | fcn_00018240 ();
0x00047874 ldr.w r2, [pc, 0x694] | r2 = *(0x00047f0c);
0x00047878 add.w sl, r0, 0x20 | sl = r0 + 0x20;
0x0004787c str r7, [sp, 0x38] | var_38h = r7;
0x0004787e mov r7, sl | r7 = sl;
0x00047880 mov sl, r6 | sl = r6;
0x00047882 mov r6, r4 | r6 = r4;
0x00047884 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x00047886 add r2, pc | r2 += pc;
0x00047888 strd r0, r8, [sp, 0x30] | __asm ("strd r0, r8, [var_30h]");
0x0004788c mov r8, sb | r8 = sb;
0x0004788e mov sb, r5 | sb = r5;
0x00047890 mov r5, r2 | r5 = r2;
| do {
0x00047892 ldr.w r0, [r8] | r0 = *(r8);
0x00047896 add.w r8, r8, 0xc | r8 += 0xc;
0x0004789a str r0, [r7, -0x20] | *((r7 - 0x20)) = r0;
0x0004789e blx 0x18048 | fcn_00018048 ();
0x000478a2 strd r0, r5, [r7, -0x1c] | __asm ("strd r0, r5, [r7, -0x1c]");
0x000478a6 movs r3, 2 | r3 = 2;
0x000478a8 ldr r0, [r8, -0x8] | r0 = *((r8 - 0x8));
0x000478ac str r3, [r7, -0x14] | *((r7 - 0x14)) = r3;
0x000478b0 str r0, [r7, -0x10] | *((r7 - 0x10)) = r0;
0x000478b4 blx 0x18048 | fcn_00018048 ();
0x000478b8 cmp r4, r8 |
0x000478ba mov.w r3, 2 | r3 = 2;
0x000478be mov r2, r7 | r2 = r7;
0x000478c0 strd r0, r6, [r7, -0xc] | __asm ("strd r0, r6, [r7, -0xc]");
0x000478c4 str r3, [r7, -0x4] | *((r7 - 0x4)) = r3;
0x000478c8 add.w r7, r7, 0x20 | r7 += 0x20;
0x000478cc bhi 0x47892 |
| } while (r4 > r8);
0x000478ce ldr r7, [sp, 0x38] | r7 = var_38h;
0x000478d0 mov r6, sl | r6 = sl;
0x000478d2 ldr.w r1, [pc, 0x63c] | r1 = *(0x47f12);
0x000478d6 mov r5, sb | r5 = sb;
0x000478d8 ldr.w r0, [sb, 0x108] | r0 = *((sb + 0x108));
0x000478dc ldrd r3, r8, [sp, 0x30] | __asm ("ldrd r3, r8, [var_30h]");
0x000478e0 ldr r1, [r7, r1] | r1 = *((r7 + r1));
0x000478e2 mov ip, r0 |
0x000478e4 ldr.w sl, [r1, 8] | sl = *(0x47f1a);
0x000478e8 mov lr, r1 | lr = r1;
0x000478ea cmp.w sl, 0 |
| if (sl < 0) {
0x000478ee blt.w 0x47b52 | goto label_48;
| }
0x000478f2 cmp r0, 0 |
| if (r0 == 0) {
0x000478f4 beq.w 0x47e50 | goto label_49;
| }
0x000478f8 ldr r1, [r0] | r1 = *(r0);
0x000478fa cmp r1, 0 |
| if (r1 == 0) {
0x000478fc beq.w 0x47b58 | goto label_21;
| }
| label_27:
0x00047900 ldrsb.w r1, [r1, sl] | r1 = *((r1 + sl));
0x00047904 cmp r1, 0 |
| if (r1 < 0) {
0x00047906 blt.w 0x47b58 | goto label_21;
| }
| label_31:
0x0004790a cmp r1, 0xa |
0x0004790c ite le |
| if (r1 > 0xa) {
0x0004790e movle r1, 0 | r1 = 0;
| }
| if (r1 <= 0xa) {
0x00047910 movgt r1, 1 | r1 = 1;
| }
| label_6:
0x00047912 cmp r1, 0 |
| if (r1 == 0) {
0x00047914 beq.w 0x47b70 | goto label_50;
| }
0x00047918 ldr r1, [sp, 0x24] | r1 = var_24h;
0x0004791a ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0004791c strd r8, r7, [sp, 0x38] | __asm ("strd r8, r7, [var_38h]");
0x00047920 mov r7, sl | r7 = sl;
0x00047922 ldr r1, [r1, 0x10] | r1 = *((r1 + 0x10));
0x00047924 mov sl, r2 | sl = r2;
0x00047926 str r3, [sp, 0x2c] | var_2ch = r3;
0x00047928 add.w sb, r1, 0xc | sb = r1 + 0xc;
0x0004792c ldr.w r1, [pc, 0x5e4] |
0x00047930 add r1, pc | r1 = 0x8f848;
0x00047932 str r1, [sp, 0x24] | var_24h = r1;
0x00047934 ldr.w r1, [pc, 0x5e0] |
0x00047938 add r1, pc | r1 = 0x8f854;
0x0004793a strd r1, r6, [sp, 0x30] | __asm ("strd r1, r6, [var_30h]");
0x0004793e mov r6, lr | r6 = lr;
0x00047940 b 0x47966 |
| while (r7 >= 0) {
0x00047942 cmp r0, 0 |
| if (r0 == 0) {
0x00047944 beq.w 0x47c4a | goto label_51;
| }
| label_10:
0x00047948 ldr r1, [r3] | r1 = *(r3);
| if (r1 == 0) {
0x0004794a cbz r1, 0x47972 | goto label_12;
| }
0x0004794c ldrsb r1, [r1, r7] | r1 = *((r1 + r7));
0x0004794e cmp r1, 0 |
| if (r1 < 0) {
0x00047950 blt 0x47972 | goto label_12;
| }
| label_11:
0x00047952 cmp r1, 0xa |
| if (r1 > 0xa) {
0x00047954 bgt 0x47978 | goto label_52;
| }
| label_0:
0x00047956 cmp r4, sb |
| if (r4 < sb) {
0x00047958 bls.w 0x47b66 | goto label_53;
| }
0x0004795c ldr r7, [r6, 8] | r7 = *((r6 + 8));
0x0004795e add.w sb, sb, 0xc | sb += 0xc;
0x00047962 ldr.w r0, [r5, 0x108] | r0 = *((r5 + 0x108));
0x00047966 cmp r7, 0 |
0x00047968 mov r3, r0 | r3 = r0;
0x0004796a bge 0x47942 |
| }
0x0004796c cmp r0, 0 |
| if (r0 == 0) {
0x0004796e beq.w 0x47d84 | goto label_54;
| }
| label_12:
0x00047972 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00047974 cmp r3, 0xa |
| if (r3 <= 0xa) {
0x00047976 ble 0x47956 | goto label_0;
| }
| label_52:
0x00047978 ldr r1, [sb, -0xc] | r1 = *((sb - 0xc));
0x0004797c ldr r0, [r5] | r0 = *(r5);
0x0004797e bl 0x1cc00 | ap_escape_logitem ();
0x00047982 ldr r1, [sb, -0x8] | r1 = *((sb - 0x8));
0x00047986 mov r8, r0 | r8 = r0;
0x00047988 ldr r0, [r5] | r0 = *(r5);
0x0004798a bl 0x1cc00 | ap_escape_logitem ();
0x0004798e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00047990 mov r2, r7 | r2 = r7;
0x00047992 strd r8, r0, [sp, 0xc] | __asm ("strd r8, r0, [var_ch]");
0x00047996 mov.w r1, 0x3d0 | r1 = 0x3d0;
0x0004799a ldr r0, [sp, 0x24] | r0 = var_24h;
0x0004799c strd r5, r3, [sp, 4] | __asm ("strd r5, r3, [var_4h]");
0x000479a0 movs r3, 0 | r3 = 0;
0x000479a2 str r3, [sp] | *(sp) = r3;
0x000479a4 movs r3, 0xb | r3 = 0xb;
0x000479a6 bl 0x38a7c | ap_log_rerror_ ();
0x000479aa b 0x47956 | goto label_0;
| label_32:
0x000479ac ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000479ae adds r6, r1, 4 | r6 = r1 + 4;
0x000479b0 str r3, [sp, 0x44] | var_44h = r3;
0x000479b2 ldr r3, [r0, 4] | r3 = *((r0 + 4));
0x000479b4 str r3, [sp, 0x20] | var_20h = r3;
0x000479b6 cmp r3, 0 |
| if (r3 == 0) {
0x000479b8 beq.w 0x47c2c | goto label_55;
| }
| label_9:
0x000479bc ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x000479c0 cmp r3, r6 |
0x000479c2 str r3, [sp, 0x18] | var_18h = r3;
| if (r3 != r6) {
0x000479c4 bne.w 0x476fa | goto label_1;
| }
0x000479c8 ldr r3, [sp, 0x20] | r3 = var_20h;
0x000479ca ldr r3, [r3] | r3 = *(r3);
0x000479cc cmp r3, 0 |
| if (r3 == 0) {
0x000479ce beq 0x47a50 | goto label_56;
| }
0x000479d0 movs r3, 0 | r3 = 0;
0x000479d2 str r3, [sp, 0x28] | var_28h = r3;
0x000479d4 b 0x47742 | goto label_2;
| label_36:
0x000479d6 mov r0, r8 | r0 = r8;
0x000479d8 bl 0x204bc | ap_remove_output_filter ();
0x000479dc ldr.w r2, [pc, 0x53c] |
0x000479e0 ldr.w r3, [pc, 0x4f4] | r3 = *(0x47ed8);
0x000479e4 add r2, pc | r2 = 0x8f904;
0x000479e6 ldr r3, [r2, r3] | r3 = *(0x8f904);
0x000479e8 ldr r2, [r3] | r2 = *(0x8f904);
0x000479ea ldr r3, [sp, 0x54] | r3 = var_54h;
0x000479ec eors r2, r3 | r2 ^= r3;
0x000479ee mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000479f2 bne.w 0x47ed0 | goto label_57;
| }
0x000479f6 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x000479fa mov r1, fp | r1 = fp;
0x000479fc add sp, 0x5c |
0x000479fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00047a02 b.w 0x20594 | void (*0x20594)() ();
| label_34:
0x00047a06 ldr.w r4, [fp, 8] | r4 = *(arg_8h);
0x00047a0a cmp r4, r6 |
| if (r4 != r6) {
0x00047a0c beq 0x47a1c |
0x00047a0e ldr.w r3, [pc, 0x510] | r3 = *(0x47f22);
0x00047a12 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00047a14 ldr r3, [r7, r3] | r3 = *((r7 + r3));
0x00047a16 cmp r2, r3 |
| if (r2 == r3) {
0x00047a18 beq.w 0x47dc0 | goto label_58;
| }
| }
0x00047a1c mov r4, r0 | r4 = r0;
| label_20:
0x00047a1e mov r0, fp | r0 = fp;
0x00047a20 blx 0x1825c | fcn_0001825c ();
| do {
| label_7:
0x00047a24 ldr.w r2, [pc, 0x4fc] |
0x00047a28 ldr.w r3, [pc, 0x4ac] | r3 = *(0x47ed8);
0x00047a2c add r2, pc | r2 = 0x8f954;
0x00047a2e ldr r3, [r2, r3] | r3 = *(0x8f954);
0x00047a30 ldr r2, [r3] | r2 = *(0x8f954);
0x00047a32 ldr r3, [sp, 0x54] | r3 = var_54h;
0x00047a34 eors r2, r3 | r2 ^= r3;
0x00047a36 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00047a3a bne.w 0x47ed0 | goto label_57;
| }
0x00047a3e mov r0, r4 | r0 = r4;
0x00047a40 add sp, 0x5c |
0x00047a42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_41:
0x00047a46 add r1, sp, 0x44 | r1 += var_44h;
0x00047a48 mov r0, r5 | r0 = r5;
0x00047a4a bl 0x466a8 | fcn_000466a8 (r0, r1);
0x00047a4e b 0x477bc | goto label_3;
| label_56:
0x00047a50 mov sl, r3 | sl = r3;
| label_35:
0x00047a52 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00047a54 add r6, sp, 0x48 | r6 += filename;
0x00047a56 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047a5a mov r1, r6 | r1 = r6;
0x00047a5c ldr r3, [r3, 0x18] | r3 = *((r3 + 0x18));
0x00047a5e ldr r3, [r3] | r3 = *(r3);
0x00047a60 str r5, [sp, 0x48] | filename = r5;
0x00047a62 ldrb.w r3, [r3, 0x41] | r3 = *((r3 + 0x41));
0x00047a66 subs r3, 1 | r3--;
0x00047a68 it ne |
| if (r3 == 1) {
0x00047a6a movne r3, 1 | r3 = 1;
| }
0x00047a6c str r3, [sp, 0x4c] | var_4ch = r3;
0x00047a6e bl 0x46400 | r0 = fcn_00046400 (r0);
0x00047a72 cmp r0, 0 |
| if (r0 != 0) {
0x00047a74 bne.w 0x47e30 | goto label_59;
| }
| label_23:
0x00047a78 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047a7c ldr.w sl, [pc, 0x4a8] | sl = *(0x00047f28);
0x00047a80 blx 0x17edc | apr_sockaddr_info_get ();
0x00047a84 ldr.w r0, [r5, 0xb8] | r0 = *((r5 + 0xb8));
0x00047a88 blx 0x17edc | apr_sockaddr_info_get ();
0x00047a8c mov r0, fp | r0 = fp;
0x00047a8e add sl, pc | sl += pc;
0x00047a90 blx 0x1825c | fcn_0001825c ();
0x00047a94 mov r0, r6 | r0 = r6;
0x00047a96 movs r6, 0 | r6 = 0;
0x00047a98 str r6, [sp, 0x48] | filename = r6;
0x00047a9a mov r1, sl | r1 = sl;
0x00047a9c ldr r2, [r5] | r2 = *(r5);
0x00047a9e blx 0x1814c | freopen (r0, r1, r2);
0x00047aa2 ldr r2, [sp, 0x48] | r2 = filename;
0x00047aa4 cmp r2, 0 |
| if (r2 == 0) {
0x00047aa6 beq.w 0x47e8c | goto label_60;
| }
0x00047aaa mov.w r3, 0x1f4 | r3 = 0x1f4;
0x00047aae ldr.w r0, [sb, 0x40] | r0 = *((sb + 0x40));
0x00047ab2 str r3, [r5, 0x44] | *((r5 + 0x44)) = r3;
0x00047ab4 bl 0x30350 | ap_bucket_eoc_create ();
0x00047ab8 ldr r4, [sp, 0x18] | r4 = var_18h;
0x00047aba str r4, [r0] | *(r0) = r4;
0x00047abc ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00047ac0 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00047ac2 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00047ac6 str r0, [r3] | *(r3) = r0;
0x00047ac8 str.w r0, [fp, 8] | __asm ("str.w r0, [arg_8h]");
0x00047acc ldr.w r0, [sb, 0x40] | r0 = *((sb + 0x40));
0x00047ad0 blx 0x18410 | r0 = apr_brigade_insert_file ();
0x00047ad4 str r4, [r0] | *(r0) = r4;
0x00047ad6 movs r2, 0 | r2 = 0;
0x00047ad8 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00047adc vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00047ae0 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00047ae2 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00047ae6 str r0, [r3] | *(r3) = r0;
0x00047ae8 add.w r3, r5, 0xcc | r3 = r5 + 0xcc;
0x00047aec str.w r0, [fp, 8] | __asm ("str.w r0, [arg_8h]");
0x00047af0 mov r0, r5 | r0 = r5;
0x00047af2 str.w r6, [r5, 0xc4] | __asm ("str.w r6, [r5, 0xc4]");
0x00047af6 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x00047afa movs r3, 1 | r3 = 1;
0x00047afc str r3, [sp, 0x28] | var_28h = r3;
0x00047afe movs r3, 0 | r3 = 0;
0x00047b00 bl 0x21eb0 | ap_set_content_length ();
0x00047b04 b 0x47742 | goto label_2;
| label_42:
0x00047b06 ldr.w r1, [pc, 0x424] | r1 = *(0x00047f2c);
0x00047b0a ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047b0e add r1, pc | r1 += pc;
0x00047b10 blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x00047b14 ldr.w r1, [pc, 0x418] |
0x00047b18 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047b1c add r1, pc | r1 = 0x8fa50;
0x00047b1e blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x00047b22 vmov.i32 d17, 0 | __asm ("vmov.i32 d17, 0");
0x00047b26 add.w r3, r5, 0xcc | r3 = r5 + 0xcc;
0x00047b2a vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00047b2e movs r1, 0 | r1 = 0;
0x00047b30 str.w r1, [r5, 0xc4] | __asm ("str.w r1, [r5, 0xc4]");
0x00047b34 vst1.32 {d17}, [r3] | __asm ("vst1.32 {d17}, [r3]");
0x00047b38 str.w r1, [r5, 0x88] | __asm ("str.w r1, [r5, 0x88]");
0x00047b3c vstr d16, [r5, 0x80] | __asm ("vstr d16, [r5, 0x80]");
0x00047b40 b 0x477de | goto label_4;
| label_39:
0x00047b42 ldrd r2, r1, [r5, 0xb4] | __asm ("ldrd r2, r1, [r5, 0xb4]");
0x00047b46 ldr r0, [r5] | r0 = *(r5);
0x00047b48 blx 0x18140 | strcpy (r0, r1)
0x00047b4c str.w r0, [r5, 0xb4] | __asm ("str.w r0, [r5, 0xb4]");
0x00047b50 b 0x47758 | goto label_5;
| label_48:
0x00047b52 cmp r0, 0 |
| if (r0 == 0) {
0x00047b54 beq.w 0x47df8 | goto label_61;
| }
| label_21:
0x00047b58 ldr.w r1, [ip, 4] | r1 = *((ip + 4));
0x00047b5c cmp r1, 0xa |
0x00047b5e ite le |
| if (r1 > 0xa) {
0x00047b60 movle r1, 0 | r1 = 0;
| }
| if (r1 <= 0xa) {
0x00047b62 movgt r1, 1 | r1 = 1;
| }
0x00047b64 b 0x47912 | goto label_6;
| label_53:
0x00047b66 ldr r6, [sp, 0x34] | r6 = var_34h;
0x00047b68 mov r2, sl | r2 = sl;
0x00047b6a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00047b6c ldrd r8, r7, [sp, 0x38] | __asm ("ldrd r8, r7, [var_38h]");
| label_50:
0x00047b70 subs r0, r2, r3 | r0 = r2 - r3;
0x00047b72 movs r2, 0 | r2 = 0;
0x00047b74 asrs r0, r0, 3 | r0 >>= 3;
0x00047b76 mov r1, r2 | r1 = r2;
0x00047b78 str r0, [sp] | *(sp) = r0;
0x00047b7a mov r0, r6 | r0 = r6;
0x00047b7c blx 0x18158 | apr_filepath_root ();
| label_47:
0x00047b80 ldr r3, [pc, 0x3b0] |
0x00047b82 movs r2, 0 | r2 = 0;
0x00047b84 mov r1, r2 | r1 = r2;
0x00047b86 mov r0, r6 | r0 = r6;
0x00047b88 add r3, pc |
0x00047b8a ldr r3, [r3] | r3 = *(0x8fac0);
0x00047b8c strh.w r3, [sp, 0x50] | var_50h = r3;
0x00047b90 lsrs r3, r3, 0x10 | r3 >>= 0x10;
0x00047b92 strb.w r3, [sp, 0x52] | var_52h = r3;
0x00047b96 movs r3, 2 | r3 = 2;
0x00047b98 str r3, [sp] | *(sp) = r3;
0x00047b9a add r3, sp, 0x50 | r3 += var_50h;
0x00047b9c blx 0x179e4 | memcmp (r0, r1, r2);
0x00047ba0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 == 0) {
0x00047ba2 cbz r3, 0x47be6 | goto label_62;
| }
0x00047ba4 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00047ba8 ldr r2, [sp, 0x18] | r2 = var_18h;
0x00047baa cmp r3, r2 |
| if (r3 != r2) {
0x00047bac beq 0x47bba |
0x00047bae ldr r2, [pc, 0x370] | r2 = *(0x47f22);
0x00047bb0 ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x00047bb2 ldr r2, [r7, r2] | r2 = *((r7 + r2));
0x00047bb4 cmp r1, r2 |
| if (r1 == r2) {
0x00047bb6 beq.w 0x47e6a | goto label_63;
| }
| }
| label_28:
0x00047bba mov r0, fp | r0 = fp;
0x00047bbc blx 0x1825c | fcn_0001825c ();
0x00047bc0 mov r1, r6 | r1 = r6;
0x00047bc2 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00047bc6 bl 0x20594 | r0 = ap_pass_brigade ();
0x00047bca mov r4, r0 | r4 = r0;
0x00047bcc mov r0, r6 | r0 = r6;
0x00047bce blx 0x1825c | fcn_0001825c ();
0x00047bd2 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00047bd4 movs r3, 1 | r3 = 1;
0x00047bd6 str r3, [r2] | *(r2) = r3;
| label_8:
0x00047bd8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00047bda cmp r3, 0 |
0x00047bdc beq.w 0x47a24 |
| } while (r3 == 0);
| label_29:
0x00047be0 mvn r4, 0x65 | r4 = ~0x65;
0x00047be4 b 0x47a24 | goto label_7;
| label_62:
0x00047be6 mov r1, r6 | r1 = r6;
0x00047be8 ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00047bec bl 0x20594 | r0 = ap_pass_brigade ();
0x00047bf0 mov r4, r0 | r4 = r0;
0x00047bf2 mov r0, r6 | r0 = r6;
0x00047bf4 blx 0x1825c | fcn_0001825c ();
0x00047bf8 ldr r2, [sp, 0x20] | r2 = var_20h;
0x00047bfa movs r3, 1 | r3 = 1;
0x00047bfc str r3, [r2] | *(r2) = r3;
0x00047bfe cmp r4, 0 |
| if (r4 != 0) {
0x00047c00 bne 0x47bd8 | goto label_8;
| }
0x00047c02 ldr.w r3, [r5, 0x88] | r3 = *((r5 + 0x88));
0x00047c06 movs r0, 1 | r0 = 1;
0x00047c08 movs r1, 0 | r1 = 0;
0x00047c0a strd r0, r1, [r5, 0x60] | __asm ("strd r0, r1, [r5, 0x60]");
0x00047c0e cmp r3, 0 |
| if (r3 != 0) {
0x00047c10 bne.w 0x47db0 | goto label_64;
| }
| do {
| label_19:
0x00047c14 mov r0, r8 | r0 = r8;
0x00047c16 bl 0x204bc | ap_remove_output_filter ();
0x00047c1a ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00047c1e mov r1, fp | r1 = fp;
0x00047c20 bl 0x20594 | r0 = ap_pass_brigade ();
0x00047c24 mov r4, r0 | r4 = r0;
0x00047c26 b 0x47bd8 | goto label_8;
| label_33:
0x00047c28 movs r3, 1 | r3 = 1;
0x00047c2a str r3, [sp, 0x1c] | var_1ch = r3;
| label_55:
0x00047c2c ldr r0, [r5] | r0 = *(r5);
0x00047c2e movs r1, 4 | r1 = 4;
0x00047c30 blx 0x18240 | fcn_00018240 ();
0x00047c34 movs r3, 0 | r3 = 0;
0x00047c36 str r0, [sp, 0x20] | var_20h = r0;
0x00047c38 str r3, [r0] | *(r0) = r3;
0x00047c3a str.w r0, [r8, 4] | __asm ("str.w r0, [r8, 4]");
0x00047c3e b 0x479bc | goto label_9;
| label_38:
0x00047c40 movs r2, 1 | r2 = 1;
0x00047c42 movs r3, 0 | r3 = 0;
0x00047c44 strd r2, r3, [r5, 0x60] | __asm ("strd r2, r3, [r5, 0x60]");
0x00047c48 b 0x47c14 |
| } while (1);
| label_51:
0x00047c4a ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00047c4c ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00047c4e cmp r3, 0 |
| if (r3 != 0) {
0x00047c50 bne.w 0x47948 | goto label_10;
| }
0x00047c54 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00047c56 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
| if (r1 == 0) {
0x00047c58 cbz r1, 0x47c62 | goto label_17;
| }
0x00047c5a ldrsb r1, [r1, r7] | r1 = *((r1 + r7));
0x00047c5c cmp r1, 0 |
| if (r1 >= 0) {
0x00047c5e bge.w 0x47952 | goto label_11;
| }
| label_17:
0x00047c62 adds r3, 0x10 | r3 += 0x10;
0x00047c64 b 0x47972 | goto label_12;
| label_46:
0x00047c66 ldr r6, [pc, 0x2d0] |
0x00047c68 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047c6c add r6, pc | r6 = 0x8fbaa;
0x00047c6e mov r1, r6 | r1 = r6;
0x00047c70 blx 0x185a8 | r0 = apr_hash_make ();
0x00047c74 cmp r0, 0 |
| if (r0 == 0) {
0x00047c76 beq.w 0x4782a | goto label_13;
| }
0x00047c7a ldrb r3, [r0] | r3 = *(r0);
0x00047c7c cmp r3, 0x30 |
| if (r3 != 0x30) {
0x00047c7e bne.w 0x4782a | goto label_13;
| }
0x00047c82 ldrb r3, [r0, 1] | r3 = *((r0 + 1));
0x00047c84 cmp r3, 0 |
| if (r3 != 0) {
0x00047c86 bne.w 0x4782a | goto label_13;
| }
0x00047c8a ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047c8e mov r1, r6 | r1 = r6;
0x00047c90 blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x00047c94 b 0x4782a | goto label_13;
| label_45:
0x00047c96 ldr r6, [pc, 0x2a4] |
0x00047c98 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047c9c add r6, pc | r6 = 0x8fbde;
0x00047c9e mov r1, r6 | r1 = r6;
0x00047ca0 blx 0x185a8 | r0 = apr_hash_make ();
0x00047ca4 cmp r0, 0 |
| if (r0 != 0) {
0x00047ca6 bne.w 0x47822 | goto label_14;
| }
0x00047caa movs r1, 0x1e | r1 = 0x1e;
0x00047cac ldr r0, [r5] | r0 = *(r5);
0x00047cae blx 0x18240 | fcn_00018240 ();
0x00047cb2 ldrd r2, r3, [r5, 0x38] | __asm ("ldrd r2, r3, [r5, 0x38]");
0x00047cb6 mov sl, r0 | sl = r0;
0x00047cb8 bl 0x3b010 | ap_recent_rfc822_date ();
0x00047cbc ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047cc0 mov r2, sl | r2 = sl;
0x00047cc2 mov r1, r6 | r1 = r6;
0x00047cc4 blx 0x18914 | fcn_00018914 ();
0x00047cc8 b 0x47822 | goto label_14;
| label_44:
0x00047cca ldr r1, [pc, 0x274] |
0x00047ccc ldr.w r3, [r5, 0xd0] | r3 = *((r5 + 0xd0));
0x00047cd0 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047cd4 add r1, pc | r1 = 0x8fc1a;
0x00047cd6 ldr.w sl, [r3, 0x10] | sl = *((r3 + 0x10));
0x00047cda blx 0x185a8 | r0 = apr_hash_make ();
0x00047cde mov r3, r0 | r3 = r0;
0x00047ce0 add r2, sp, 0x48 | r2 += filename;
0x00047ce2 str r0, [sp, 0x48] | filename = r0;
0x00047ce4 str r2, [sp, 0x24] | var_24h = r2;
0x00047ce6 str r7, [sp, 0x2c] | var_2ch = r7;
| label_15:
0x00047ce8 ldr r0, [r5] | r0 = *(r5);
0x00047cea cmp r3, 0 |
| if (r3 == 0) {
0x00047cec beq.w 0x47e12 | goto label_65;
| }
0x00047cf0 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00047cf2 bl 0x1c12c | r0 = ap_get_list_item ();
0x00047cf6 mov r7, r0 | r7 = r0;
0x00047cf8 cmp r0, 0 |
| if (r0 == 0) {
0x00047cfa beq.w 0x47e42 | goto label_66;
| }
0x00047cfe ldr.w r0, [r5, 0xd0] | r0 = *((r5 + 0xd0));
0x00047d02 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00047d04 cmp r3, 0 |
0x00047d06 it le |
| if (r3 > 0) {
0x00047d08 movle r4, 0 | r4 = 0;
| }
| if (r3 <= 0) {
0x00047d0a ble 0x47d34 | goto label_67;
| }
0x00047d0c sub.w r6, sl, 4 | r6 = sl - 4;
0x00047d10 movs r4, 0 | r4 = 0;
0x00047d12 b 0x47d20 |
| while (r0 != 0) {
0x00047d14 ldr.w r0, [r5, 0xd0] | r0 = *((r5 + 0xd0));
0x00047d18 adds r4, 1 | r4++;
0x00047d1a ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00047d1c cmp r3, r4 |
| if (r3 <= r4) {
0x00047d1e ble 0x47d34 | goto label_67;
| }
0x00047d20 ldr r1, [r6, 4]! | r1 = *((r6 += 4));
0x00047d24 mov r0, r7 | r0 = r7;
0x00047d26 bl 0x1e764 | r0 = ap_cstr_casecmp ();
0x00047d2a cmp r0, 0 |
0x00047d2c bne 0x47d14 |
| }
0x00047d2e ldr.w r0, [r5, 0xd0] | r0 = *((r5 + 0xd0));
0x00047d32 ldr r3, [r0, 8] | r3 = *((r0 + 8));
| label_67:
0x00047d34 cmp r4, r3 |
| if (r4 == r3) {
0x00047d36 beq.w 0x47e48 | goto label_68;
| }
| label_26:
0x00047d3a ldr r3, [sp, 0x48] | r3 = filename;
0x00047d3c b 0x47ce8 | goto label_15;
| label_40:
0x00047d3e movs r2, 4 | r2 = 4;
0x00047d40 movs r1, 5 | r1 = 5;
0x00047d42 ldr r0, [r5] | r0 = *(r5);
0x00047d44 blx 0x188a4 | fcn_000188a4 ();
0x00047d48 ldr.w r2, [r5, 0xb4] | r2 = *((r5 + 0xb4));
0x00047d4c mov sl, r0 | sl = r0;
0x00047d4e str r6, [sp] | *(sp) = r6;
0x00047d50 mov r1, sl | r1 = sl;
0x00047d52 ldr r6, [pc, 0x1f0] |
0x00047d54 ldr r0, [pc, 0x1f0] |
0x00047d56 add r6, pc | r6 = 0x8fca0;
0x00047d58 mov r3, r6 | r3 = r6;
0x00047d5a add r0, pc | r0 = 0x8fca6;
0x00047d5c blx 0x17ddc | fcn_00017ddc ();
0x00047d60 ldr.w r3, [sl, 8] | r3 = *((sl + 8));
0x00047d64 cmp r3, 0 |
| if (r3 <= 0) {
0x00047d66 ble.w 0x47796 | goto label_16;
| }
0x00047d6a mov r1, sl | r1 = sl;
0x00047d6c ldr.w sl, [r5, 0xb4] | sl = *((r5 + 0xb4));
0x00047d70 ldr r0, [r5] | r0 = *(r5);
0x00047d72 movs r2, 0x2c | r2 = 0x2c;
0x00047d74 blx 0x1846c | fcn_0001846c ();
0x00047d78 mov r1, r6 | r1 = r6;
0x00047d7a mov r2, r0 | r2 = r0;
0x00047d7c mov r0, sl | r0 = sl;
0x00047d7e blx 0x18340 | fcn_00018340 ();
0x00047d82 b 0x47796 | goto label_16;
| label_54:
0x00047d84 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00047d86 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00047d88 cmp r3, 0 |
| if (r3 != 0) {
0x00047d8a bne.w 0x47972 | goto label_12;
| }
0x00047d8e ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00047d90 b 0x47c62 | goto label_17;
| label_43:
0x00047d92 ldr r2, [pc, 0x1b8] |
0x00047d94 ldr r1, [pc, 0x1b8] |
0x00047d96 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047d9a add r2, pc | r2 = 0x8fcec;
0x00047d9c add r1, pc | r1 = 0x8fcf0;
0x00047d9e blx 0x18690 | fcn_00018690 ();
0x00047da2 ldr r1, [pc, 0x1b0] |
0x00047da4 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047da8 add r1, pc | r1 = 0x8fd02;
0x00047daa blx 0x17a14 | apr_dynamic_fn_retrieve ();
0x00047dae b 0x477da | goto label_18;
| label_64:
0x00047db0 ldr r0, [pc, 0x1a4] |
0x00047db2 mov r2, r5 | r2 = r5;
0x00047db4 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00047db6 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00047db8 add r0, pc | r0 = 0x8fd14;
0x00047dba bl 0x2044c | ap_add_output_filter ();
0x00047dbe b 0x47c14 | goto label_19;
| label_58:
0x00047dc0 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00047dc2 mov r0, fp | r0 = fp;
0x00047dc4 ldr r2, [r4] | r2 = *(r4);
0x00047dc6 str r2, [r3] | *(r3) = r2;
0x00047dc8 ldr r3, [r4] | r3 = *(r4);
0x00047dca ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x00047dcc str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00047dce blx 0x1825c | fcn_0001825c ();
0x00047dd2 str r6, [r4, 4] | *((r4 + 4)) = r6;
0x00047dd4 mov r0, r8 | r0 = r8;
0x00047dd6 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00047dda str r3, [r4] | *(r4) = r3;
0x00047ddc ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00047de0 str r4, [r3, 4] | *((r3 + 4)) = r4;
0x00047de2 str.w r4, [fp, 4] | __asm ("str.w r4, [arg_4h]");
0x00047de6 bl 0x204bc | ap_remove_output_filter ();
0x00047dea ldr.w r0, [r8, 8] | r0 = *((r8 + 8));
0x00047dee mov r1, fp | r1 = fp;
0x00047df0 bl 0x20594 | r0 = ap_pass_brigade ();
0x00047df4 mov r4, r0 | r4 = r0;
0x00047df6 b 0x47a1e | goto label_20;
| label_61:
0x00047df8 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00047dfc ldr.w ip, [r1, 0x60] | ip = *((r1 + 0x60));
0x00047e00 cmp.w ip, 0 |
| if (ip != 0) {
0x00047e04 bne.w 0x47b58 | goto label_21;
| }
0x00047e08 ldr.w ip, [sb, 8] | ip = *((sb + 8));
| label_30:
0x00047e0c add.w ip, ip, 0x10 |
0x00047e10 b 0x47b58 | goto label_21;
| label_65:
0x00047e12 ldr r7, [sp, 0x2c] | r7 = var_2ch;
| label_25:
0x00047e14 ldr.w r1, [r5, 0xd0] | r1 = *((r5 + 0xd0));
0x00047e18 movs r2, 0x2c | r2 = 0x2c;
0x00047e1a blx 0x1846c | fcn_0001846c ();
0x00047e1e ldr r1, [pc, 0x13c] |
0x00047e20 mov r2, r0 | r2 = r0;
0x00047e22 str r0, [sp, 0x48] | filename = r0;
0x00047e24 ldr.w r0, [r5, 0xb4] | r0 = *((r5 + 0xb4));
0x00047e28 add r1, pc | r1 = 0x8fd8a;
0x00047e2a blx 0x18340 | fcn_00018340 ();
0x00047e2e b 0x47818 | goto label_22;
| label_59:
0x00047e30 ldr.w r0, [r5, 0xb8] | r0 = *((r5 + 0xb8));
0x00047e34 mov r1, r6 | r1 = r6;
0x00047e36 bl 0x46400 | r0 = fcn_00046400 (r0);
0x00047e3a cmp r0, 0 |
| if (r0 == 0) {
0x00047e3c beq.w 0x47a78 | goto label_23;
| }
0x00047e40 b 0x47736 | goto label_24;
| label_66:
0x00047e42 ldr r7, [sp, 0x2c] | r7 = var_2ch;
0x00047e44 ldr r0, [r5] | r0 = *(r5);
0x00047e46 b 0x47e14 | goto label_25;
| label_68:
0x00047e48 blx 0x17c58 | r0 = fcn_00017c58 ();
0x00047e4c str r7, [r0] | *(r0) = r7;
0x00047e4e b 0x47d3a | goto label_26;
| label_49:
0x00047e50 ldr.w r1, [sb, 4] | r1 = *((sb + 4));
0x00047e54 ldr.w ip, [r1, 0x60] | ip = *((r1 + 0x60));
0x00047e58 cmp.w ip, 0 |
| if (ip == 0) {
0x00047e5c beq 0x47ea4 | goto label_69;
| }
0x00047e5e ldr.w r1, [ip] | r1 = *(ip);
0x00047e62 cmp r1, 0 |
| if (r1 != 0) {
0x00047e64 bne.w 0x47900 | goto label_27;
| }
0x00047e68 b 0x47b58 | goto label_21;
| label_63:
0x00047e6a ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00047e6c mov r0, r8 | r0 = r8;
0x00047e6e ldr r1, [r3] | r1 = *(r3);
0x00047e70 str r1, [r2] | *(r2) = r1;
0x00047e72 ldr r2, [r3] | r2 = *(r3);
0x00047e74 ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x00047e76 str r1, [r2, 4] | *((r2 + 4)) = r1;
0x00047e78 adds r2, r6, 4 | r2 = r6 + 4;
0x00047e7a str r2, [r3] | *(r3) = r2;
0x00047e7c ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00047e7e str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00047e80 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00047e82 str r3, [r2] | *(r2) = r3;
0x00047e84 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x00047e86 bl 0x204bc | ap_remove_output_filter ();
0x00047e8a b 0x47bba | goto label_28;
| label_60:
0x00047e8c ldr r0, [pc, 0xd0] |
0x00047e8e mov r1, sl | r1 = sl;
0x00047e90 ldr r3, [r5] | r3 = *(r5);
0x00047e92 add r0, pc | r0 = 0x8fdf6;
0x00047e94 blx 0x18908 | fcn_00018908 ();
0x00047e98 mov r1, r5 | r1 = r5;
0x00047e9a mov.w r0, 0x1f4 | r0 = 0x1f4;
0x00047e9e bl 0x455d0 | ap_die ();
0x00047ea2 b 0x47be0 | goto label_29;
| label_69:
0x00047ea4 ldr.w ip, [sb, 8] | ip = *((sb + 8));
0x00047ea8 ldr.w r1, [ip, 0x10] | r1 = *((ip + 0x10));
0x00047eac cmp r1, 0 |
| if (r1 == 0) {
0x00047eae beq 0x47e0c | goto label_30;
| }
0x00047eb0 ldrsb.w r1, [r1, sl] | r1 = *((r1 + sl));
0x00047eb4 cmp r1, 0 |
| if (r1 >= 0) {
0x00047eb6 bge.w 0x4790a | goto label_31;
| }
0x00047eba b 0x47e0c | goto label_30;
| label_37:
0x00047ebc ldr.w r4, [sl, 4] | r4 = *((sl + 4));
0x00047ec0 mov r0, fp | r0 = fp;
0x00047ec2 blx 0x1825c | fcn_0001825c ();
0x00047ec6 mov r1, r5 | r1 = r5;
0x00047ec8 mov r0, r4 | r0 = r4;
0x00047eca bl 0x455d0 | ap_die ();
0x00047ece b 0x47be0 | goto label_29;
| label_57:
0x00047ed0 blx 0x1845c | fcn_0001845c ();
0x00047ed4 strb r2, [r4, 0xa] | *((r4 + 0xa)) = r2;
0x00047ed6 movs r1, r0 | r1 = r0;
0x00047ed8 lsls r0, r5, 0x18 | r0 = r5 << 0x18;
0x00047eda movs r0, r0 |
0x00047edc strb r6, [r0, 0xa] | *((r0 + 0xa)) = r6;
0x00047ede movs r1, r0 | r1 = r0;
0x00047ee0 lsls r4, r2, 0x19 | r4 = r2 << 0x19;
0x00047ee2 movs r0, r0 |
0x00047ee4 lsls r0, r0, 0x19 | r0 <<= 0x19;
0x00047ee6 movs r0, r0 |
0x00047ee8 movs r6, 0x3c | r6 = 0x3c;
0x00047eea movs r1, r0 | r1 = r0;
| if (r6 == 0) {
0x00047eec cbnz r6, 0x47f20 |
0x00047eee movs r0, r0 |
0x00047ef0 asrs r4, r6, 0x10 | r4 = r6 >> 0x10;
0x00047ef2 movs r1, r0 | r1 = r0;
0x00047ef4 movs r4, 0x10 | r4 = 0x10;
0x00047ef6 movs r1, r0 | r1 = r0;
0x00047ef8 movs r6, 0xe | r6 = 0xe;
0x00047efa movs r1, r0 | r1 = r0;
0x00047efc str r6, [sp, 0xc8] | *(arg_c8h) = r6;
0x00047efe movs r0, r0 |
0x00047f00 str r4, [r2, r4] | *((r2 + r4)) = r4;
0x00047f02 movs r0, r0 |
0x00047f04 str r0, [r7, 0x3c] | *((r7 + 0x3c)) = r0;
0x00047f06 movs r0, r0 |
0x00047f08 cmp r0, 0x54 |
0x00047f0a movs r1, r0 | r1 = r0;
0x00047f0c ldr r6, [r7, r1] | r6 = *((r7 + r1));
0x00047f0e movs r0, r0 |
0x00047f10 lsls r0, r3, 0x18 | r0 = r3 << 0x18;
0x00047f12 movs r0, r0 |
0x00047f14 movs r0, 0xf8 | r0 = 0xf8;
0x00047f16 movs r1, r0 | r1 = r0;
0x00047f18 movs r0, 0x8c | r0 = 0x8c;
0x00047f1a movs r1, r0 | r1 = r0;
0x00047f1c ldr r4, [r2, 0x74] | r4 = *((r2 + 0x74));
0x00047f1e movs r1, r0 | r1 = r0;
| }
0x00047f20 lsls r0, r4, 0x19 | r0 = r4 << 0x19;
0x00047f22 movs r0, r0 |
0x00047f24 ldr r4, [r1, 0x70] | r4 = *((r1 + 0x70));
0x00047f26 movs r1, r0 | r1 = r0;
0x00047f28 movs r2, 0xf6 | r2 = 0xf6;
0x00047f2a movs r1, r0 | r1 = r0;
0x00047f2c ldr r5, [pc, 0x348] | r5 = *(0x48278);
0x00047f2e movs r0, r0 |
0x00047f30 ldr r5, [pc, 0x360] | r5 = *(0x48294);
0x00047f32 movs r0, r0 |
0x00047f34 movs r5, 0x38 | r5 = 0x38;
0x00047f36 movs r1, r0 | r1 = r0;
0x00047f38 ldr r4, [pc, 0x220] | r4 = *(0x4815c);
0x00047f3a movs r0, r0 |
0x00047f3c ldrsh r0, [r7, r6] | r0 = *((r7 + r6));
0x00047f3e movs r0, r0 |
0x00047f40 ldrsh r4, [r7, r4] | r4 = *((r7 + r4));
0x00047f42 movs r0, r0 |
| if (r6 == 0) {
0x00047f44 cbz r6, 0x47fc0 | void (*0x47fc0)() ();
| }
0x00047f46 movs r0, r0 |
0x00047f48 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/sbin/httpd @ 0x45164 */
| #include <stdint.h>
|
; (fcn) sym.ap_internal_fast_redirect () | void ap_internal_fast_redirect (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00045164 ldr.w r2, [r1, 0x124] | r2 = *((r1 + 0x124));
0x00045168 push.w {r4, r5, r6, r7, r8, lr} |
0x0004516c mov r4, r1 | r4 = r1;
0x0004516e ldr r3, [r0, 0x20] | r3 = *((r0 + 0x20));
0x00045170 mov r5, r0 | r5 = r0;
0x00045172 ldr r6, [pc, 0x16c] |
0x00045174 str r3, [r1, 0x20] | *((r1 + 0x20)) = r3;
0x00045176 add r6, pc | r6 = 0x8a45c;
| if (r2 != 0) {
0x00045178 cbz r2, 0x45184 |
0x0004517a ldr.w r2, [r0, 0x124] | r2 = *((r0 + 0x124));
0x0004517e subs r2, 0 |
0x00045180 it ne |
| if (r2 != 0) {
0x00045182 movne r2, 1 | r2 = 1;
| goto label_1;
| }
| }
| label_1:
0x00045184 ldr.w r3, [r4, 0x128] | r3 = *((r4 + 0x128));
0x00045188 str.w r2, [r4, 0x124] | __asm ("str.w r2, aav.0x000000ff");
| if (r3 != 0) {
0x0004518c cbz r3, 0x45198 |
0x0004518e ldr.w r3, [r5, 0x128] | r3 = *((r5 + 0x128));
0x00045192 subs r3, 0 |
0x00045194 it ne |
| if (r3 != 0) {
0x00045196 movne r3, 1 | r3 = 1;
| goto label_2;
| }
| }
| label_2:
0x00045198 str.w r3, [r4, 0x128] | __asm ("str.w r3, aav.0x000000ff");
0x0004519c add.w r1, r5, 0x160 | r1 = r5 + 0x160;
0x000451a0 ldrd r2, r3, [r5, 0x70] | __asm ("ldrd r2, r3, [r5, 0x70]");
0x000451a4 add.w r0, r4, 0x160 | r0 = r4 + 0x160;
0x000451a8 strd r2, r3, [r4, 0x70] | __asm ("strd r2, r3, [r4, 0x70]");
0x000451ac add.w r2, r5, 0xe4 | r2 = r5 + 0xe4;
0x000451b0 add.w r3, r4, 0xe4 | r3 = r4 + 0xe4;
0x000451b4 vld1.32 {d16, d17}, [r2] | __asm ("vld1.32 {d16, d17}, [r2]");
0x000451b8 movs r2, 0x68 | r2 = 0x68;
0x000451ba vst1.32 {d16, d17}, [r3] | __asm ("vst1.32 {d16, d17}, [r3]");
0x000451be ldr.w r3, [r5, 0xf4] | r3 = *((r5 + 0xf4));
0x000451c2 str.w r3, [r4, 0xf4] | __asm ("str.w r3, [r4, 0xf4]");
0x000451c6 blx 0x180a8 | fcn_000180a8 ();
0x000451ca ldrd r1, r3, [r5, 0xc4] | __asm ("ldrd r1, r3, [r5, 0xc4]");
0x000451ce mov r0, r4 | r0 = r4;
0x000451d0 str.w r3, [r4, 0xc8] | __asm ("str.w r3, [r4, 0xc8]");
0x000451d4 bl 0x44368 | ap_set_content_type ();
0x000451d8 add.w r2, r5, 0xcc | r2 = r5 + 0xcc;
0x000451dc add.w r3, r4, 0xcc | r3 = r4 + 0xcc;
0x000451e0 vld1.32 {d16}, [r2] | __asm ("vld1.32 {d16}, [r2]");
0x000451e4 vst1.32 {d16}, [r3] | __asm ("vst1.32 {d16}, [r3]");
0x000451e8 ldr.w r3, [r5, 0x100] | r3 = *((r5 + 0x100));
0x000451ec ldr.w r2, [r4, 0xc0] | r2 = *((r4 + 0xc0));
0x000451f0 ldr.w r1, [r5, 0xc0] | r1 = *((r5 + 0xc0));
0x000451f4 str.w r3, [r4, 0x100] | __asm ("str.w r3, aav.0x000000ff");
0x000451f8 ldr r0, [r4] | r0 = *(r4);
0x000451fa blx 0x18140 | strcpy (r0, r1)
0x000451fe ldr.w r2, [r4, 0xb4] | r2 = *((r4 + 0xb4));
0x00045202 ldr.w r1, [r5, 0xb4] | r1 = *((r5 + 0xb4));
0x00045206 str.w r0, [r4, 0xc0] | __asm ("str.w r0, [r4, 0xc0]");
0x0004520a ldr r0, [r4] | r0 = *(r4);
0x0004520c blx 0x18140 | strcpy (r0, r1)
0x00045210 ldr.w r2, [r4, 0xb8] | r2 = *((r4 + 0xb8));
0x00045214 ldr.w r1, [r5, 0xb8] | r1 = *((r5 + 0xb8));
0x00045218 str.w r0, [r4, 0xb4] | __asm ("str.w r0, [r4, 0xb4]");
0x0004521c ldr r0, [r4] | r0 = *(r4);
0x0004521e blx 0x18140 | strcpy (r0, r1)
0x00045222 ldr.w r2, [r4, 0x1d4] | r2 = *((r4 + 0x1d4));
0x00045226 ldr.w r1, [r5, 0x1d4] | r1 = *((r5 + 0x1d4));
0x0004522a str.w r0, [r4, 0xb8] | __asm ("str.w r0, [r4, 0xb8]");
0x0004522e ldr r0, [r4] | r0 = *(r4);
0x00045230 blx 0x18140 | strcpy (r0, r1)
0x00045234 ldr.w r2, [r4, 0xbc] | r2 = *((r4 + 0xbc));
0x00045238 ldr.w r1, [r5, 0xbc] | r1 = *((r5 + 0xbc));
0x0004523c str.w r0, [r4, 0x1d4] | __asm ("str.w r0, aav.0x000000ff");
0x00045240 ldr r0, [r4] | r0 = *(r4);
0x00045242 blx 0x18140 | strcpy (r0, r1)
0x00045246 add.w r3, r5, 0x114 | r3 = r5 + 0x114;
0x0004524a str.w r0, [r4, 0xbc] | __asm ("str.w r0, [r4, 0xbc]");
0x0004524e vld1.32 {d7}, [r3] | __asm ("vld1.32 {d7}, [r3]");
0x00045252 add.w r3, r4, 0x114 | r3 = r4 + 0x114;
0x00045256 vmov r2, s14 | __asm ("vmov r2, s14");
0x0004525a vmov.32 r1, d7[1] | __asm ("vmov.32 r1, d7[1]");
0x0004525e vst1.32 {d7}, [r3] | __asm ("vst1.32 {d7}, [r3]");
0x00045262 mov r3, r2 | r3 = r2;
| if (r1 == 0) {
0x00045264 cbz r1, 0x45274 | goto label_3;
| }
| do {
0x00045266 ldr r0, [r1, 0xc] | r0 = *((r1 + 0xc));
0x00045268 cmp r5, r0 |
0x0004526a it eq |
| if (r5 != r0) {
0x0004526c streq r4, [r1, 0xc] | *((r1 + 0xc)) = r4;
| }
0x0004526e ldr r1, [r1, 8] | r1 = *((r1 + 8));
0x00045270 cmp r1, 0 |
0x00045272 bne 0x45266 |
| } while (r1 != 0);
| label_3:
0x00045274 ldr r7, [r4, 0x14] | r7 = *((r4 + 0x14));
| if (r2 == 0) {
0x00045276 cbz r2, 0x452d4 | goto label_4;
| }
| do {
0x00045278 ldr r1, [r2, 0xc] | r1 = *((r2 + 0xc));
0x0004527a cmp r5, r1 |
0x0004527c it eq |
| if (r5 != r1) {
0x0004527e streq r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
| }
0x00045280 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00045282 cmp r2, 0 |
0x00045284 bne 0x45278 |
| } while (r2 != 0);
0x00045286 ldr r2, [pc, 0x5c] | r2 = *(0x452e6);
0x00045288 ldr r2, [r6, r2] | r2 = *((r6 + r2));
0x0004528a ldr r0, [r2] | r0 = *(0x452e6);
| if (r7 == 0) {
0x0004528c cbz r7, 0x452bc | goto label_5;
| }
0x0004528e ldr.w r1, [r4, 0x11c] | r1 = *((r4 + 0x11c));
0x00045292 b 0x4529e |
| while (r1 != r3) {
0x00045294 ldr r2, [r3] | r2 = *(r3);
0x00045296 cmp r2, r0 |
| if (r2 == r0) {
0x00045298 beq 0x452d0 | goto label_6;
| }
0x0004529a ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 == 0) {
0x0004529c cbz r3, 0x452a2 | goto label_0;
| }
0x0004529e cmp r1, r3 |
0x000452a0 bne 0x45294 |
| }
| label_0:
0x000452a2 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x000452a4 mov r2, r4 | r2 = r4;
0x000452a6 movs r1, 0 | r1 = 0;
0x000452a8 pop.w {r4, r5, r6, r7, r8, lr} |
0x000452ac b.w 0x20480 | void (*0x20480)() ();
| do {
0x000452b0 ldr.w r1, [r4, 0x11c] | r1 = *((r4 + 0x11c));
0x000452b4 cmp r1, r3 |
| if (r1 == r3) {
0x000452b6 beq 0x452cc | goto label_7;
| }
0x000452b8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 == 0) {
0x000452ba cbz r3, 0x452d0 | goto label_6;
| }
| label_5:
0x000452bc ldr r2, [r3] | r2 = *(r3);
0x000452be cmp r2, r0 |
0x000452c0 bne 0x452b0 |
| } while (r2 != r0);
| do {
0x000452c2 pop.w {r4, r5, r6, r7, r8, lr} |
0x000452c6 mov r0, r3 | r0 = r3;
0x000452c8 b.w 0x204bc | void (*0x204bc)() ();
| label_7:
0x000452cc cmp r2, r0 |
0x000452ce beq 0x452c2 |
| } while (r2 == r0);
| do {
| label_6:
0x000452d0 pop.w {r4, r5, r6, r7, r8, pc} |
| label_4:
0x000452d4 cmp r7, 0 |
0x000452d6 beq 0x452d0 |
| } while (r7 == 0);
0x000452d8 ldr r3, [pc, 8] | r3 = "_";
0x000452da ldr r3, [r6, r3] | r3 = *((r6 + r3));
0x000452dc ldr r0, [r3] | r0 = "_";
0x000452de b 0x452a2 | goto label_0;
| }
[*] Function strcpy used 10 times httpd