[*] Binary protection state of mod_proxy_scgi.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function sprintf tear down of mod_proxy_scgi.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_proxy_scgi.so @ 0x1558 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00001558 () | void fcn_00001558 (int16_t arg_0h, int16_t arg_4h, int16_t arg_8h, int16_t arg_40h, int16_t arg_44h, int16_t arg_a0h, int16_t arg_b4h, int16_t arg_b8h, int16_t arg_bch, int16_t arg_100h, int16_t arg_104h, int16_t arg_108h, int16_t arg_114h, 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;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| 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_47h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_78h;
| int16_t var_7ch;
| int32_t var_8h_2;
| int32_t var_8h_3;
| int16_t var_10h_2;
| int16_t var_18h_2;
| int16_t var_1ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00001558 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x0000155c mov fp, r1 |
0x0000155e ldr r1, [pc, 0xa4] |
0x00001560 mov r8, r3 | r8 = r3;
0x00001562 sub sp, 0x24 |
0x00001564 ldr r3, [pc, 0xa0] | r3 = *(0x1608);
0x00001566 add r1, pc | r1 = 0x2b70;
0x00001568 ldr.w sb, [pc, 0xa0] | sb = *(0x0000160c);
0x0000156c ldr r3, [r1, r3] |
0x0000156e add sb, pc | sb += pc;
0x00001570 ldr r3, [r3] | r3 = *(0x2b70);
0x00001572 str r3, [sp, 0x1c] | var_1ch = r3;
0x00001574 mov.w r3, 0 | r3 = 0;
0x00001578 cmp r2, 0 |
| if (r2 == 0) {
0x0000157a beq 0x15e4 | goto label_22;
| }
0x0000157c mov sl, r0 | sl = r0;
0x0000157e mov r6, r2 | r6 = r2;
0x00001580 add r7, sp, 0x18 | r7 += var_18h_2;
0x00001582 b 0x15a0 |
| while (r0 == 0) {
0x00001584 ldr.w r3, [sl, 8] | r3 = *((sl + 8));
0x00001588 ldr r4, [sp, 0x18] | r4 = var_18h_2;
0x0000158a ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0000158c add fp, r4 |
0x0000158e ldrd r5, r2, [r3, 0x230] | __asm ("ldrd r5, r2, [r3, 0x230]");
0x00001592 adds r5, r5, r4 | r5 += r4;
0x00001594 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00001598 subs r6, r6, r4 | r6 -= r4;
0x0000159a strd r5, r2, [r3, 0x230] | __asm ("strd r5, r2, [r3, 0x230]");
| if (r6 == r6) {
0x0000159e beq 0x15e4 | goto label_22;
| }
0x000015a0 ldr.w r0, [sl, 0x1c] | r0 = *((sl + 0x1c));
0x000015a4 mov r2, r7 | r2 = r7;
0x000015a6 mov r1, fp | r1 = fp;
0x000015a8 str r6, [sp, 0x18] | var_18h_2 = r6;
0x000015aa blx 0xedc | r0 = loc_imp_apr_socket_send ();
0x000015ae cmp r0, 0 |
0x000015b0 beq 0x1584 |
| }
0x000015b2 ldr r3, [pc, 0x5c] | r3 = *(0x1612);
0x000015b4 ldr r4, [pc, 0x5c] |
0x000015b6 ldrh.w r1, [sl, 0x2c] | r1 = *((sl + 0x2c));
0x000015ba ldr.w r2, [sb, r3] | r2 = *((sb + r3));
0x000015be movs r3, 3 | r3 = 3;
0x000015c0 ldr.w r5, [sl, 0x10] | r5 = *((sl + 0x10));
0x000015c4 add r4, pc | r4 = 0x2bdc;
0x000015c6 str r0, [sp] | *(sp) = r0;
0x000015c8 ldr r0, [pc, 0x4c] |
0x000015ca str.w r8, [sp, 4] | __asm ("str.w r8, [var_7ch]");
0x000015ce ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000015d0 add r0, pc | r0 = 0x2bec;
0x000015d2 str r1, [sp, 0x10] | var_10h_2 = r1;
0x000015d4 strd r4, r5, [sp, 8] | __asm ("strd r4, r5, [var_8h_2]");
0x000015d8 movs r1, 0xef | r1 = 0xef;
0x000015da blx 0xffc | loc_imp_ap_log_rerror_ ();
0x000015de movw r0, 0x1f7 | r0 = 0x1f7;
0x000015e2 b 0x15e6 | goto label_23;
| label_22:
0x000015e4 movs r0, 0 | r0 = 0;
| label_23:
0x000015e6 ldr r2, [pc, 0x34] |
0x000015e8 ldr r3, [pc, 0x1c] | r3 = *(0x1608);
0x000015ea add r2, pc | r2 = 0x2c0c;
0x000015ec ldr r3, [r2, r3] | r3 = *(0x2c0c);
0x000015ee ldr r2, [r3] | r2 = *(0x2c0c);
0x000015f0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000015f2 eors r2, r3 | r2 ^= r3;
0x000015f4 mov.w r3, 0 | r3 = 0;
| if (r2 == r3) {
0x000015f8 bne 0x1600 |
0x000015fa add sp, 0x24 |
0x000015fc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x00001600 blx 0xeac | stack_chk_fail ();
0x00001604 cmp r1, 0x9e |
0x00001606 movs r0, r0 |
0x00001608 lsls r0, r3, 3 | r0 = r3 << 3;
0x0000160a movs r0, r0 |
0x0000160c cmp r1, 0x96 |
0x0000160e movs r0, r0 |
0x00001610 lsls r0, r5, 3 | r0 = r5 << 3;
0x00001612 movs r0, r0 |
0x00001614 lsrs r4, r0, 0xf | r4 = r0 >> 0xf;
0x00001616 movs r0, r0 |
0x00001618 lsrs r4, r5, 9 | r4 = r5 >> 9;
0x0000161a movs r0, r0 |
0x0000161c cmp r1, 0x1a |
0x0000161e movs r0, r0 |
0x00001620 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001624 mov r5, r1 | r5 = r1;
0x00001626 ldr.w r1, [pc, 0x6dc] | r1 = *(0x00001d04);
0x0000162a mov r6, r2 | r6 = r2;
0x0000162c sub sp, 0x54 |
0x0000162e mov fp, r0 |
0x00001630 ldr.w r2, [pc, 0x6d4] |
0x00001634 mov r0, r3 | r0 = r3;
0x00001636 add r1, pc | r1 += pc;
0x00001638 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000163a movs r3, 0 | r3 = 0;
0x0000163c ldr.w sb, [sp, 0x78] | sb = var_78h;
0x00001640 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00001642 ldr.w r1, [pc, 0x6c8] |
0x00001646 ldrh.w sl, [sp, 0x7c] | sl = var_7ch;
0x0000164a ldr r2, [r2] | r2 = *(0x1d08);
0x0000164c str r2, [sp, 0x4c] | var_4ch = r2;
0x0000164e mov.w r2, 0 | r2 = 0;
0x00001652 movs r2, 7 | r2 = 7;
0x00001654 add r1, pc | r1 = 0x3366;
0x00001656 str r3, [sp, 0x48] | var_48h = r3;
0x00001658 ldr.w r8, [fp] | r8 = *(fp);
0x0000165c blx 0xfcc | loc_imp_ap_cstr_casecmpn ();
0x00001660 ldr.w r3, [pc, 0x6ac] | r3 = *(0x00001d10);
0x00001664 add r3, pc | r3 += pc;
0x00001666 str r3, [sp, 0x24] | var_24h = r3;
0x00001668 cmp r0, 0 |
| if (r0 != 0) {
0x0000166a bne.w 0x1a7a | goto label_24;
| }
0x0000166e ldr.w r7, [pc, 0x6a4] |
0x00001672 mov r2, r5 | r2 = r5;
0x00001674 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00001678 add r1, sp, 0x48 | r1 += var_48h;
0x0000167a add r7, pc | r7 = 0x3394;
0x0000167c mov r0, r7 | r0 = r7;
0x0000167e blx 0x105c | r0 = loc_imp_ap_proxy_acquire_connection ();
0x00001682 mov r4, r0 | r4 = r0;
0x00001684 cbz r0, 0x16c6 |
| while (r0 != 0) {
| label_0:
0x00001686 ldr r1, [sp, 0x48] | r1 = var_48h;
| if (r1 != 0) {
0x00001688 cbz r1, 0x16a4 |
0x0000168a ldrb.w r3, [r1, 0x2e] | r3 = *((r1 + 0x2e));
0x0000168e ldr.w r0, [pc, 0x688] |
0x00001692 orr r3, r3, 2 | r3 |= 2;
0x00001696 strb.w r3, [r1, 0x2e] | *((r1 + 0x2e)) = r3;
0x0000169a add r0, pc | r0 = 0x33b8;
0x0000169c ldr.w r2, [fp, 8] | r2 = *(arg_8h);
0x000016a0 blx 0xf00 | loc_imp_ap_proxy_release_connection ();
| }
| label_1:
0x000016a4 ldr.w r2, [pc, 0x674] | r2 = *(0x00001d1c);
0x000016a8 ldr.w r3, [pc, 0x65c] | r3 = *(0x1d08);
0x000016ac add r2, pc | r2 += pc;
0x000016ae ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000016b0 ldr r2, [r3] | r2 = *(0x1d08);
0x000016b2 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x000016b4 eors r2, r3 | r2 ^= r3;
0x000016b6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000016ba bne.w 0x1ce2 | goto label_25;
| }
0x000016be mov r0, r4 | r0 = r4;
0x000016c0 add sp, 0x54 |
0x000016c2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x000016c6 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000016c8 movs r1, 0x2c | r1 = 0x2c;
0x000016ca mov r0, r8 | r0 = r8;
0x000016cc ldrb.w r2, [r3, 0x2e] | r2 = *((r3 + 0x2e));
0x000016d0 bfi r2, r4, 0, 1 | value_0 = BIT_MASK (0, 1);
| value_1 = r4 & value_0;
| value_0 = ~value_0;
| r2 &= value_0;
| r2 |= value_1;
0x000016d4 strb.w r2, [r3, 0x2e] | *((r3 + 0x2e)) = r2;
0x000016d8 blx 0xf18 | loc_imp_apr_palloc ();
0x000016dc movs r3, 1 | r3 = 1;
0x000016de str r0, [sp, 4] | var_4h = r0;
0x000016e0 str r3, [sp, 0x18] | var_18h = r3;
0x000016e2 mov r2, r6 | r2 = r6;
0x000016e4 ldr r3, [sp, 0x48] | r3 = var_48h;
0x000016e6 mov r0, r8 | r0 = r8;
0x000016e8 mov r1, fp | r1 = fp;
0x000016ea strd sb, sl, [sp, 0xc] | __asm ("strd sb, sl, [var_10h]");
0x000016ee str r3, [sp] | *(sp) = r3;
0x000016f0 add.w r3, sp, 0x47 | r3 += var_47h;
0x000016f4 str r3, [sp, 0x14] | var_14h = r3;
0x000016f6 add r3, sp, 0x3c | r3 += var_3ch;
0x000016f8 str r3, [sp, 8] | var_8h = r3;
0x000016fa mov r3, r5 | r3 = r5;
0x000016fc blx 0x1074 | r0 = loc_imp_ap_proxy_determine_connection ();
0x00001700 mov r4, r0 | r4 = r0;
0x00001702 cmp r0, 0 |
0x00001704 bne 0x1686 |
| }
0x00001706 ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x0000170a mov r2, r5 | r2 = r5;
0x0000170c ldr r1, [sp, 0x48] | r1 = var_48h;
0x0000170e mov r0, r7 | r0 = r7;
0x00001710 blx 0xf6c | r0 = loc_imp_ap_proxy_connect_backend ();
0x00001714 cmp r0, 0 |
| if (r0 != 0) {
0x00001716 bne.w 0x1a4a | goto label_26;
| }
0x0000171a movs r1, 1 | r1 = 1;
0x0000171c mov r0, fp | r0 = fp;
0x0000171e blx 0x1050 | r0 = loc_imp_ap_setup_client_block ();
0x00001722 mov r4, r0 | r4 = r0;
0x00001724 cmp r0, 0 |
| if (r0 != 0) {
0x00001726 bne 0x1686 | goto label_0;
| }
0x00001728 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000172a mov r0, fp | r0 = fp;
0x0000172c str r3, [sp, 0x2c] | var_2ch = r3;
0x0000172e blx 0xea0 | loc_imp_ap_add_common_vars ();
0x00001732 mov r0, fp | r0 = fp;
0x00001734 blx 0xff0 | loc_imp_ap_add_cgi_vars ();
0x00001738 ldr.w r0, [fp, 0xbc] | r0 = *(arg_bch);
0x0000173c blx 0xe94 | loc_imp_apr_table_elts ();
0x00001740 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x00001742 ldr r6, [r0, 0x10] | r6 = *((r0 + 0x10));
0x00001744 str r0, [sp, 0x28] | var_28h = r0;
0x00001746 cmp r3, 0 |
| if (r3 <= 0) {
0x00001748 ble.w 0x1ba8 | goto label_27;
| }
0x0000174c add.w r3, r3, r3, lsl 1 | r3 += (r3 << 1);
0x00001750 ldr.w sb, [pc, 0x5cc] |
0x00001754 ldr.w sl, [pc, 0x5cc] |
0x00001758 mov r5, r6 | r5 = r6;
0x0000175a add.w r8, r6, r3, lsl 2 | r8 = r6 + (r3 << 2);
0x0000175e ldr.w r3, [pc, 0x5c8] |
0x00001762 strd r6, r4, [sp, 0x30] | __asm ("strd r6, r4, [var_30h]");
0x00001766 add sb, pc | sb = 0x348a;
0x00001768 add sl, pc | sl = 0x3490;
0x0000176a movs r7, 0x16 | r7 = 0x16;
0x0000176c add r3, pc | r3 = 0x349a;
0x0000176e mov r4, r3 | r4 = r3;
| do {
0x00001770 ldr r6, [r5] | r6 = *(r5);
0x00001772 mov r1, sb | r1 = sb;
0x00001774 mov r0, r6 | r0 = r6;
0x00001776 blx 0xe40 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x0000177a cbz r0, 0x17a4 |
0x0000177c mov r1, sl | r1 = sl;
0x0000177e mov r0, r6 | r0 = r6;
0x00001780 blx 0xe40 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001784 cbz r0, 0x17a4 | goto label_28;
| }
0x00001786 mov r1, r4 | r1 = r4;
0x00001788 mov r0, r6 | r0 = r6;
0x0000178a blx 0xe40 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x0000178e cbz r0, 0x17a4 | goto label_28;
| }
0x00001790 mov r0, r6 | r0 = r6;
0x00001792 adds r7, 2 | r7 += 2;
0x00001794 blx 0xf78 | r0 = strlen (r0);
0x00001798 mov r6, r0 | r6 = r0;
0x0000179a ldr r0, [r5, 4] | r0 = *((r5 + 4));
0x0000179c add r7, r6 | r7 += r6;
0x0000179e blx 0xf78 | r0 = strlen (r0);
0x000017a2 add r7, r0 | r7 += r0;
| }
| label_28:
0x000017a4 adds r5, 0xc | r5 += 0xc;
0x000017a6 cmp r8, r5 |
0x000017a8 bne 0x1770 |
| } while (r8 != r5);
0x000017aa ldrd r6, r4, [sp, 0x30] | __asm ("ldrd r6, r4, [var_30h]");
| label_8:
0x000017ae ldr.w r1, [pc, 0x57c] |
0x000017b2 ldrd r2, r3, [fp, 0xa0] | __asm ("ldrd r2, r3, [arg_a0h]");
0x000017b6 ldr.w r0, [fp] | r0 = *(fp);
0x000017ba add r1, pc | r1 = 0x34ec;
0x000017bc blx 0xfb4 | r0 = loc_imp_apr_psprintf ()
0x000017c0 mov r8, r0 | r8 = r0;
0x000017c2 blx 0xf78 | strlen (r0);
0x000017c6 ldr.w r1, [pc, 0x568] |
0x000017ca adds r5, r0, 1 | r5 = r0 + 1;
0x000017cc add r7, r5 | r7 += r5;
0x000017ce ldr.w r0, [fp] | r0 = *(fp);
0x000017d2 mov r2, r7 | r2 = r7;
0x000017d4 add r1, pc | r1 = 0x350a;
0x000017d6 blx 0xfb4 | r0 = loc_imp_apr_psprintf ()
0x000017da mov sb, r0 | sb = r0;
0x000017dc blx 0xf78 | r0 = strlen (r0);
0x000017e0 mov sl, r0 | sl = r0;
0x000017e2 ldr.w r0, [fp] | r0 = *(fp);
0x000017e6 add.w r3, sl, 1 | r3 = sl + 1;
0x000017ea add r3, r7 | r3 += r7;
0x000017ec ldr.w r7, [pc, 0x544] |
0x000017f0 mov r1, r3 | r1 = r3;
0x000017f2 str r3, [sp, 0x30] | var_30h = r3;
0x000017f4 blx 0xf18 | loc_imp_apr_palloc ();
0x000017f8 add r7, pc | r7 = 0x3530;
0x000017fa mov r1, sb | r1 = sb;
0x000017fc mov r2, sl | r2 = sl;
0x000017fe mov sb, r0 | sb = r0;
0x00001800 str r0, [sp, 0x34] | var_34h = r0;
0x00001802 blx 0xe64 | r0 = memcpy (r0, r1, r2);
0x00001806 ldm r7!, {r0, r1, r2} | r0 = *(r7!);
| r1 = *((r7! + 4));
| r2 = *((r7! + 8));
0x00001808 add.w ip, sb, sl |
0x0000180c add.w lr, ip, 0xf | lr = ip + 0xf;
0x00001810 str.w r0, [sb, sl] | __asm ("str.w r0, [sb, sl]");
0x00001814 mov r0, lr | r0 = lr;
0x00001816 str.w r2, [ip, 8] | __asm ("str.w r2, [ip, 8]");
0x0000181a ldrh r2, [r7] | r2 = *(r7);
0x0000181c str.w r1, [ip, 4] | __asm ("str.w r1, [ip, 4]");
0x00001820 mov r1, r8 | r1 = r8;
0x00001822 strh.w r2, [ip, 0xc] | *((ip + 0xc)) = r2;
0x00001826 ldrb r2, [r7, 2] | r2 = *((r7 + 2));
0x00001828 strb.w r2, [ip, 0xe] | *((ip + 0xe)) = r2;
0x0000182c mov r2, r5 | r2 = r5;
0x0000182e blx 0xe64 | memcpy (r0, r1, r2);
0x00001832 ldr.w r2, [pc, 0x504] |
0x00001836 mov lr, r0 | lr = r0;
0x00001838 ldr.w r1, [pc, 0x500] |
0x0000183c add.w r3, lr, r5 | r3 = lr + r5;
0x00001840 add.w sl, r3, 7 | sl = r3 + 7;
0x00001844 add r2, pc | r2 = 0x3582;
0x00001846 add r1, pc | r1 = 0x3586;
0x00001848 ldr r0, [r2] | r0 = *(0x3582);
0x0000184a ldrh r1, [r1] | r1 = *(r1);
0x0000184c ldrb r2, [r2, 4] | r2 = *((r2 + 4));
0x0000184e str.w r0, [lr, r5] | __asm ("str.w r0, [lr, r5]");
0x00001852 strh.w r1, [r3, 5] | *((r3 + 5)) = r1;
0x00001856 strb r2, [r3, 4] | *((r3 + 4)) = r2;
0x00001858 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000185a ldr.w sb, [r3, 8] | sb = *((r3 + 8));
0x0000185e cmp.w sb, 0 |
| if (sb <= 0) {
0x00001862 ble 0x18dc | goto label_29;
| }
0x00001864 ldr.w r7, [pc, 0x4d8] |
0x00001868 mov r2, sb | r2 = sb;
0x0000186a ldr.w r3, [pc, 0x4d8] |
0x0000186e ldr.w r8, [pc, 0x4d8] |
0x00001872 add r7, pc | r7 = 0x35b6;
0x00001874 str.w fp, [sp, 0x38] | __asm ("str.w fp, [var_38h]");
0x00001878 add r3, pc | r3 = 0x35c2;
0x0000187a mov sb, r7 | sb = r7;
0x0000187c add r8, pc | r8 = 0x35ca;
0x0000187e mov fp, r3 |
0x00001880 mov r7, r2 | r7 = r2;
| do {
0x00001882 ldr r5, [r6] | r5 = *(r6);
0x00001884 mov r1, sb | r1 = sb;
0x00001886 mov r0, r5 | r0 = r5;
0x00001888 blx 0xe40 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x0000188c cbz r0, 0x18d0 |
0x0000188e mov r1, r8 | r1 = r8;
0x00001890 mov r0, r5 | r0 = r5;
0x00001892 blx 0xe40 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x00001896 cbz r0, 0x18d0 | goto label_30;
| }
0x00001898 mov r1, fp | r1 = fp;
0x0000189a mov r0, r5 | r0 = r5;
0x0000189c blx 0xe40 | r0 = strcmp (r0, r1);
| if (r0 == 0) {
0x000018a0 cbz r0, 0x18d0 | goto label_30;
| }
0x000018a2 mov r0, r5 | r0 = r5;
0x000018a4 blx 0xf78 | strlen (r0);
0x000018a8 mov r1, r5 | r1 = r5;
0x000018aa adds r2, r0, 1 | r2 = r0 + 1;
0x000018ac mov r0, sl | r0 = sl;
0x000018ae add.w r5, sl, r2 | r5 = sl + r2;
0x000018b2 blx 0xe64 | memcpy (r0, r1, r2);
0x000018b6 ldr r7, [r6, 4] | r7 = *((r6 + 4));
0x000018b8 mov r0, r7 | r0 = r7;
0x000018ba blx 0xf78 | strlen (r0);
0x000018be mov r1, r7 | r1 = r7;
0x000018c0 adds r2, r0, 1 | r2 = r0 + 1;
0x000018c2 mov r0, r5 | r0 = r5;
0x000018c4 add.w sl, r5, r2 | sl = r5 + r2;
0x000018c8 blx 0xe64 | memcpy (r0, r1, r2);
0x000018cc ldr r3, [sp, 0x28] | r3 = var_28h;
0x000018ce ldr r7, [r3, 8] | r7 = *((r3 + 8));
| }
| label_30:
0x000018d0 adds r4, 1 | r4++;
0x000018d2 adds r6, 0xc | r6 += 0xc;
0x000018d4 cmp r4, r7 |
0x000018d6 blt 0x1882 |
| } while (r4 < r7);
0x000018d8 ldr.w fp, [sp, 0x38] | fp = var_38h;
| label_29:
0x000018dc movs r3, 0x2c | r3 = 0x2c;
0x000018de ldrd r2, r1, [sp, 0x30] | __asm ("ldrd r2, r1, [var_30h]");
0x000018e2 strb.w r3, [sl] | *(sl) = r3;
0x000018e6 mov r3, fp | r3 = fp;
0x000018e8 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000018ea bl 0x1558 | r0 = fcn_00001558 (r0, r1, r2, r3, r4, r5, r6);
0x000018ee mov r4, r0 | r4 = r0;
0x000018f0 cmp r0, 0 |
| if (r0 != 0) {
0x000018f2 bne.w 0x1686 | goto label_0;
| }
0x000018f6 mov r0, fp | r0 = fp;
0x000018f8 ldr r5, [sp, 0x48] | r5 = var_48h;
0x000018fa blx 0x102c | r0 = loc_imp_ap_should_client_block ();
0x000018fe cmp r0, 0 |
| if (r0 != 0) {
0x00001900 bne.w 0x1ad0 | goto label_31;
| }
0x00001902 strh r6, [r4, 6] | *((r4 + 6)) = r6;
| label_5:
0x00001904 ldr r7, [sp, 0x48] | r7 = var_48h;
0x00001906 movs r1, 8 | r1 = 8;
0x00001908 ldr.w r0, [fp] | r0 = *(fp);
0x0000190c blx 0xf18 | loc_imp_apr_palloc ();
0x00001910 ldr r3, [r7, 0x1c] | r3 = *((r7 + 0x1c));
0x00001912 mov r6, r0 | r6 = r0;
0x00001914 str r3, [r0] | *(r0) = r3;
0x00001916 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x00001918 ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x0000191a add.w r3, r3, 0x238 | r3 += 0x238;
0x0000191e str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00001920 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00001924 ldr.w r0, [fp] | r0 = *(fp);
0x00001928 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x0000192a blx 0xf54 | loc_imp_apr_brigade_create ();
0x0000192e ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00001932 mov r5, r0 | r5 = r0;
0x00001934 movs r0, 0x28 | r0 = 0x28;
0x00001936 adds r4, r5, 4 | r4 = r5 + 4;
0x00001938 ldr.w r8, [r3, 0x40] | r8 = *((r3 + 0x40));
0x0000193c mov r1, r8 | r1 = r8;
0x0000193e blx 0xfe4 | loc_imp_apr_bucket_alloc ();
0x00001942 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00001944 mov r3, r0 | r3 = r0;
0x00001946 ldr.w r2, [pc, 0x404] | r2 = *(0x1d4e);
0x0000194a str r0, [r0] | *(r0) = r0;
0x0000194c str r0, [r0, 4] | *((r0 + 4)) = r0;
0x0000194e ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00001950 str r4, [r0] | *(r0) = r4;
0x00001952 vmov.i8 d16, 0xff | __asm ("vmov.i8 d16, 0xff");
0x00001956 strd r6, r2, [r0, 0x18] | __asm ("strd r6, r2, [r0, 0x18]");
0x0000195a ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0000195c ldr r1, [pc, 0x3f0] |
0x0000195e vstr d16, [r0, 0x10] | __asm ("vstr d16, [r0, 0x10]");
0x00001962 str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00001964 ldr.w r2, [fp, 4] | r2 = *(arg_4h);
0x00001968 add r1, pc | r1 = 0x36bc;
0x0000196a str.w r8, [r0, 0x20] | __asm ("str.w r8, [r0, 0x20]");
0x0000196e ldr r0, [r2, 0x40] | r0 = *(0x1d8e);
0x00001970 ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x00001972 str r1, [r3, 8] | *((r3 + 8)) = r1;
0x00001974 mov.w r1, -1 | r1 = -1;
0x00001978 str r1, [r3, 0xc] | *((r3 + 0xc)) = r1;
0x0000197a str r3, [r2] | *(r2) = r3;
0x0000197c str r3, [r5, 8] | *((r5 + 8)) = r3;
0x0000197e blx 0x1014 | r0 = loc_imp_apr_bucket_eos_create ();
0x00001982 str r4, [r0] | *(r0) = r4;
0x00001984 ldr r3, [r5, 8] | r3 = *((r5 + 8));
0x00001986 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00001988 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0000198a ldr r3, [pc, 0x3c8] | r3 = *(0x1d56);
0x0000198c ldr r2, [r5, 8] | r2 = *((r5 + 8));
0x0000198e str r0, [r2] | *(r2) = r0;
0x00001990 movs r2, 0 | r2 = 0;
0x00001992 str r0, [r5, 8] | *((r5 + 8)) = r0;
0x00001994 mov r0, fp | r0 = fp;
0x00001996 ldr r6, [r1, r3] | r6 = *((r1 + r3));
0x00001998 mov r1, r5 | r1 = r5;
0x0000199a ldr r3, [r6, 8] | r3 = *((r6 + 8));
0x0000199c blx 0x1038 | loc_imp_ap_scan_script_header_err_brigade_ex ();
0x000019a0 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x000019a2 mov r4, r0 | r4 = r0;
0x000019a4 cmp r0, 0 |
| if (r0 != 0) {
0x000019a6 bne.w 0x1bcc | goto label_32;
| }
0x000019aa ldr.w r3, [fp, 0x100] | r3 = *(arg_100h);
0x000019ae ldr.w r7, [r3, r2, lsl 2] | offset_2 = r2 << 2;
| r7 = *((r3 + offset_2));
0x000019b2 ldr r1, [r7] | r1 = *(r7);
0x000019b4 cmp r1, 0 |
| if (r1 == 0) {
0x000019b6 beq.w 0x1b40 | goto label_33;
| }
0x000019ba ldr r3, [pc, 0x39c] |
0x000019bc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000019be ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000019c0 ldr r3, [r3] | r3 = *(0x1d5a);
0x000019c2 cmp r1, r3 |
| if (r1 == r3) {
0x000019c4 beq.w 0x1b40 | goto label_33;
| }
0x000019c8 ldr.w r0, [fp, 0xb8] | r0 = *(arg_b8h);
0x000019cc mov.w sl, 1 | sl = 1;
0x000019d0 blx 0xe70 | r0 = loc_imp_apr_table_get ();
0x000019d4 mov r8, r0 | r8 = r0;
0x000019d6 cmp r0, 0 |
| if (r0 == 0) {
0x000019d8 beq.w 0x1b2c | goto label_34;
| }
| label_6:
0x000019dc movs r1, 8 | r1 = 8;
0x000019de ldr.w r0, [fp] | r0 = *(fp);
0x000019e2 blx 0xf18 | loc_imp_apr_palloc ();
0x000019e6 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x000019e8 mov sb, r0 | sb = r0;
0x000019ea ldr.w r1, [fp, 0x108] | r1 = *(arg_108h);
0x000019ee cmp r2, 0 |
| if (r2 < 0) {
0x000019f0 blt.w 0x1c2a | goto label_35;
| }
0x000019f4 cmp r1, 0 |
| if (r1 == 0) {
0x000019f6 beq.w 0x1bfc | goto label_36;
| }
0x000019fa ldr r3, [r1] | r3 = *(r1);
0x000019fc cmp r3, 0 |
| if (r3 == 0) {
0x000019fe beq.w 0x1c14 | goto label_13;
| }
0x00001a02 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001a04 cmp r3, 0 |
| if (r3 < 0) {
0x00001a06 blt.w 0x1c14 | goto label_13;
| }
| label_10:
0x00001a0a ldr r3, [r1] | r3 = *(r1);
0x00001a0c ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001a0e cmp r3, 6 |
0x00001a10 ite le |
| if (r3 > 6) {
0x00001a12 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x00001a14 movgt r3, 1 | r3 = 1;
| }
| label_11:
0x00001a16 cmp r3, 0 |
| if (r3 != 0) {
0x00001a18 bne.w 0x1c40 | goto label_37;
| }
| label_14:
0x00001a1c ldr r1, [r7] | r1 = *(r7);
0x00001a1e cmp.w sl, 0 |
| if (sl == 0) {
0x00001a22 beq.w 0x1c20 | goto label_38;
| }
0x00001a26 ldr.w r0, [fp, 0xb8] | r0 = *(arg_b8h);
0x00001a2a blx 0xee8 | loc_imp_apr_table_unset ();
| label_12:
0x00001a2e ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00001a30 movs r1, 1 | r1 = 1;
0x00001a32 ldr.w r3, [fp, 0x104] | r3 = *(arg_104h);
0x00001a36 mov r0, r5 | r0 = r5;
0x00001a38 str.w r8, [sb] | __asm ("str.w r8, [sb]");
0x00001a3c str.w r1, [sb, 4] | __asm ("str.w r1, [sb, 4]");
0x00001a40 str.w sb, [r3, r2, lsl 2] | __asm ("str.w sb, [r3, r2, lsl 2]");
0x00001a44 blx 0xf24 | loc_imp_apr_brigade_destroy ();
0x00001a48 b 0x1686 | goto label_0;
| label_26:
0x00001a4a ldr r3, [sp, 0x48] | r3 = var_48h;
0x00001a4c ldr r1, [sp, 0x24] | r1 = var_24h;
0x00001a4e ldr r2, [pc, 0x304] |
0x00001a50 ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00001a52 ldrh r1, [r3, 0x2c] | r1 = *((r3 + 0x2c));
0x00001a54 ldr r2, [r2, 8] | r2 = *(0x1d5e);
0x00001a56 str r1, [sp, 0x10] | var_10h = r1;
0x00001a58 ldr r1, [pc, 0x300] |
0x00001a5a ldr r0, [r3, 0x10] | r0 = *((r3 + 0x10));
0x00001a5c movs r3, 3 | r3 = 3;
0x00001a5e strd r4, fp, [sp] | __asm ("strd r4, fp, [sp]");
0x00001a62 add r1, pc | r1 = 0x37c2;
0x00001a64 strd r1, r0, [sp, 8] | __asm ("strd r1, r0, [var_ch]");
0x00001a68 movw r1, 0x233 | r1 = 0x233;
0x00001a6c ldr r0, [pc, 0x2f0] |
0x00001a6e add r0, pc | r0 = 0x37d2;
0x00001a70 blx 0xffc | loc_imp_ap_log_rerror_ ();
| label_3:
0x00001a74 movw r4, 0x1f7 | r4 = 0x1f7;
0x00001a78 b 0x1686 | goto label_0;
| label_24:
0x00001a7a ldr r2, [sp, 0x24] | r2 = var_24h;
0x00001a7c ldr r3, [pc, 0x2d4] | r3 = *(0x1d54);
0x00001a7e ldr.w r1, [fp, 0x108] | r1 = *(arg_108h);
0x00001a82 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001a84 ldr r2, [r3, 8] | r2 = *(0x1d5c);
0x00001a86 cmp r2, 0 |
| if (r2 < 0) {
0x00001a88 blt.w 0x1b92 | goto label_39;
| }
| if (r1 == 0) {
0x00001a8c cbz r1, 0x1aac | goto label_40;
| }
0x00001a8e ldr r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x00001a90 cbz r3, 0x1ac4 | goto label_7;
| }
0x00001a92 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001a94 cmp r3, 0 |
| if (r3 < 0) {
0x00001a96 blt 0x1ac4 | goto label_7;
| }
| do {
| label_17:
0x00001a98 cmp r3, 6 |
0x00001a9a ite le |
| if (r3 > 6) {
0x00001a9c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x00001a9e movgt r3, 1 | r3 = 1;
| }
| label_2:
0x00001aa0 cmp r3, 0 |
| if (r3 != 0) {
0x00001aa2 bne.w 0x1bac | goto label_41;
| }
| label_9:
0x00001aa6 mov.w r4, -1 | r4 = -1;
0x00001aaa b 0x16a4 | goto label_1;
| label_40:
0x00001aac ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00001ab0 ldr r3, [r0, 0x60] | r3 = *((r0 + 0x60));
0x00001ab2 cmp r3, 0 |
| if (r3 == 0) {
0x00001ab4 beq.w 0x1c72 | goto label_42;
| }
0x00001ab8 ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x00001aba cbz r3, 0x1ac2 | goto label_43;
| }
0x00001abc ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001abe cmp r3, 0 |
0x00001ac0 bge 0x1a98 |
| } while (r3 >= 0);
| label_43:
0x00001ac2 ldr r1, [r0, 0x60] | r1 = *((r0 + 0x60));
| label_7:
0x00001ac4 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00001ac6 cmp r3, 6 |
0x00001ac8 ite le |
| if (r3 > 6) {
0x00001aca movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x00001acc movgt r3, 1 | r3 = 1;
| }
0x00001ace b 0x1aa0 | goto label_2;
| label_31:
0x00001ad0 ldr.w r0, [fp] | r0 = *(fp);
0x00001ad4 mov.w r1, 0x2000 | r1 = 0x2000;
0x00001ad8 blx 0xf18 | r0 = loc_imp_apr_palloc ();
0x00001adc mov r4, r0 | r4 = r0;
0x00001ade b 0x1aee | goto label_44;
| label_4:
0x00001ae0 mov r3, fp | r3 = fp;
0x00001ae2 mov r1, r4 | r1 = r4;
0x00001ae4 mov r0, r5 | r0 = r5;
0x00001ae6 bl 0x1558 | r0 = fcn_00001558 (r0, r1, r2, r3, r4, r5, r6);
0x00001aea cmp r0, 0 |
| if (r0 != 0) {
0x00001aec bne 0x1a74 | goto label_3;
| }
| label_44:
0x00001aee mov.w r2, 0x2000 | r2 = 0x2000;
0x00001af2 mov r1, r4 | r1 = r4;
0x00001af4 mov r0, fp | r0 = fp;
0x00001af6 blx 0xf30 | r0 = loc_imp_ap_get_client_block ();
0x00001afa subs r2, r0, 0 | r2 = r0 - 0;
| if (r2 > r0) {
0x00001afc bgt 0x1ae0 | goto label_4;
| }
0x00001afe adds r2, 1 | r2++;
| if (r2 != 1) {
0x00001b00 bne.w 0x1904 | goto label_5;
| }
0x00001b04 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00001b06 movs r1, 0 | r1 = 0;
0x00001b08 ldr r2, [pc, 0x248] |
0x00001b0a mov.w r4, 0x1f4 | r4 = 0x1f4;
0x00001b0e ldr r3, [pc, 0x254] |
0x00001b10 ldr r2, [r0, r2] | r2 = *((r0 + r2));
0x00001b12 ldr r0, [pc, 0x254] |
0x00001b14 add r3, pc | r3 = 0x387e;
0x00001b16 str r3, [sp, 8] | var_8h = r3;
0x00001b18 movs r3, 3 | r3 = 3;
0x00001b1a strd r1, fp, [sp] | __asm ("strd r1, fp, [sp]");
0x00001b1e mov.w r1, 0x15e | r1 = 0x15e;
0x00001b22 ldr r2, [r2, 8] | r2 = *(0x1d5c);
0x00001b24 add r0, pc | r0 = 0x3892;
0x00001b26 blx 0xffc | loc_imp_ap_log_rerror_ ();
0x00001b2a b 0x1686 | goto label_0;
| label_34:
0x00001b2c ldr r1, [r7] | r1 = *(r7);
0x00001b2e mov sl, r4 | sl = r4;
0x00001b30 ldr.w r0, [fp, 0xb4] | r0 = *(arg_b4h);
0x00001b34 blx 0xe70 | r0 = loc_imp_apr_table_get ();
0x00001b38 mov r8, r0 | r8 = r0;
0x00001b3a cmp r0, 0 |
| if (r0 != 0) {
0x00001b3c bne.w 0x19dc | goto label_6;
| }
| label_33:
0x00001b40 ldr.w r3, [fp, 0x44] | r3 = *(arg_44h);
0x00001b44 cmp r3, 0xc8 |
| if (r3 == 0xc8) {
0x00001b46 bne 0x1b7e |
0x00001b48 ldr.w r8, [r7, 4] | r8 = *((r7 + 4));
0x00001b4c cmp.w r8, 0 |
| if (r8 == 0) {
0x00001b50 beq.w 0x1c66 | goto label_45;
| }
0x00001b54 ldr r3, [pc, 0x214] |
0x00001b56 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00001b58 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001b5a ldr r3, [r3] | r3 = *(0x1d6c);
0x00001b5c cmp r8, r3 |
| if (r8 == r3) {
0x00001b5e beq 0x1b7e | goto label_18;
| }
| label_15:
0x00001b60 ldr.w r0, [fp, 0xb8] | r0 = *(arg_b8h);
0x00001b64 mov r1, r8 | r1 = r8;
0x00001b66 blx 0xe70 | loc_imp_apr_table_get ();
0x00001b6a mov.w sl, 1 | sl = 1;
0x00001b6e mov r7, r0 | r7 = r0;
0x00001b70 cmp r0, 0 |
| if (r0 == 0) {
0x00001b72 beq.w 0x1c86 | goto label_46;
| }
| label_19:
0x00001b76 ldrb r3, [r7] | r3 = *(r7);
0x00001b78 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x00001b7a beq.w 0x1c9e | goto label_47;
| }
| }
| label_18:
0x00001b7e ldr.w r0, [fp, 0x114] | r0 = *(arg_114h);
0x00001b82 mov r1, r5 | r1 = r5;
0x00001b84 blx 0x1044 | r0 = loc_imp_ap_pass_brigade ();
0x00001b88 cmp r0, 0 |
0x00001b8a it ne |
| if (r0 == 0) {
0x00001b8c mvnne r4, 0x65 | r4 = ~0x65;
| }
0x00001b90 b 0x1686 | goto label_0;
| label_39:
0x00001b92 cmp r1, 0 |
| if (r1 != 0) {
0x00001b94 bne 0x1ac4 | goto label_7;
| }
0x00001b96 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00001b9a ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x00001b9c cmp r1, 0 |
| if (r1 != 0) {
0x00001b9e bne 0x1ac4 | goto label_7;
| }
0x00001ba0 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
| label_16:
0x00001ba4 adds r1, 0x10 | r1 += 0x10;
0x00001ba6 b 0x1ac4 | goto label_7;
| label_27:
0x00001ba8 movs r7, 0x16 | r7 = 0x16;
0x00001baa b 0x17ae | goto label_8;
| label_41:
0x00001bac ldr r0, [pc, 0x1c0] |
0x00001bae movs r3, 0 | r3 = 0;
0x00001bb0 ldr r4, [sp, 0x3c] | r4 = var_3ch;
0x00001bb2 movw r1, 0x21b | r1 = 0x21b;
0x00001bb6 strd r3, fp, [sp] | __asm ("strd r3, fp, [sp]");
0x00001bba movs r3, 7 | r3 = 7;
0x00001bbc add r0, pc | r0 = 0x3930;
0x00001bbe strd r0, r4, [sp, 8] | __asm ("strd r0, r4, [var_ch]");
0x00001bc2 ldr r0, [pc, 0x1b0] |
0x00001bc4 add r0, pc | r0 = 0x393e;
0x00001bc6 blx 0xffc | loc_imp_ap_log_rerror_ ();
0x00001bca b 0x1aa6 | goto label_9;
| label_32:
0x00001bcc ldrh r3, [r7, 0x2c] | r3 = *((r7 + 0x2c));
0x00001bce movs r6, 0 | r6 = 0;
0x00001bd0 ldr r0, [pc, 0x1a4] |
0x00001bd2 movw r1, 0x181 | r1 = 0x181;
0x00001bd6 str r3, [sp, 0x10] | var_10h = r3;
0x00001bd8 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00001bda add r0, pc | r0 = 0x3956;
0x00001bdc str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h]");
0x00001be0 str r6, [sp] | *(sp) = r6;
0x00001be2 str r3, [sp, 0xc] | var_ch = r3;
0x00001be4 ldr r3, [pc, 0x194] |
0x00001be6 add r3, pc | r3 = 0x3966;
0x00001be8 str r3, [sp, 8] | var_8h = r3;
0x00001bea movs r3, 3 | r3 = 3;
0x00001bec blx 0xffc | loc_imp_ap_log_rerror_ ();
0x00001bf0 mov r0, r5 | r0 = r5;
0x00001bf2 str.w r6, [fp, 0x40] | __asm ("str.w r6, [arg_40h]");
0x00001bf6 blx 0xf24 | loc_imp_apr_brigade_destroy ();
0x00001bfa b 0x1686 | goto label_0;
| label_36:
0x00001bfc ldr.w r0, [fp, 4] | r0 = *(arg_4h);
0x00001c00 ldr r1, [r0, 0x60] | r1 = *((r0 + 0x60));
0x00001c02 cmp r1, 0 |
| if (r1 == 0) {
0x00001c04 beq 0x1ce6 | goto label_48;
| }
0x00001c06 ldr r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x00001c08 cbz r3, 0x1c12 | goto label_49;
| }
0x00001c0a ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001c0c cmp r3, 0 |
| if (r3 >= 0) {
0x00001c0e bge.w 0x1a0a | goto label_10;
| }
| label_49:
0x00001c12 ldr r1, [r0, 0x60] | r1 = *((r0 + 0x60));
| do {
| label_13:
0x00001c14 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00001c16 cmp r3, 6 |
0x00001c18 ite le |
| if (r3 > 6) {
0x00001c1a movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x00001c1c movgt r3, 1 | r3 = 1;
| }
0x00001c1e b 0x1a16 | goto label_11;
| label_38:
0x00001c20 ldr.w r0, [fp, 0xb4] | r0 = *(arg_b4h);
0x00001c24 blx 0xee8 | loc_imp_apr_table_unset ();
0x00001c28 b 0x1a2e | goto label_12;
| label_35:
0x00001c2a cmp r1, 0 |
0x00001c2c bne 0x1c14 |
| } while (r1 != 0);
0x00001c2e ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00001c32 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x00001c34 cmp r1, 0 |
| if (r1 != 0) {
0x00001c36 bne 0x1c14 | goto label_13;
| }
0x00001c38 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
| label_20:
0x00001c3c adds r1, 0x10 | r1 += 0x10;
0x00001c3e b 0x1c14 | goto label_13;
| label_37:
0x00001c40 str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x00001c44 movw r1, 0x195 | r1 = 0x195;
0x00001c48 ldr r3, [r7] | r3 = *(r7);
0x00001c4a ldr r0, [pc, 0x134] |
0x00001c4c str.w fp, [sp, 4] | __asm ("str.w fp, [var_4h]");
0x00001c50 str r3, [sp, 0xc] | var_ch = r3;
0x00001c52 ldr r3, [pc, 0x130] |
0x00001c54 add r0, pc | r0 = 0x39da;
0x00001c56 add r3, pc | r3 = 0x39e0;
0x00001c58 str r3, [sp, 8] | var_8h = r3;
0x00001c5a movs r3, 0 | r3 = 0;
0x00001c5c str r3, [sp] | *(sp) = r3;
0x00001c5e movs r3, 7 | r3 = 7;
0x00001c60 blx 0xffc | loc_imp_ap_log_rerror_ ();
0x00001c64 b 0x1a1c | goto label_14;
| label_45:
0x00001c66 ldr r3, [pc, 0x120] | r3 = *(0x1d8a);
0x00001c68 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00001c6a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00001c6c ldr.w r8, [r3] | r8 = *(0x1d8a);
0x00001c70 b 0x1b60 | goto label_15;
| label_42:
0x00001c72 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x00001c76 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00001c78 cmp r3, 0 |
| if (r3 == 0) {
0x00001c7a beq 0x1ba4 | goto label_16;
| }
0x00001c7c ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001c7e cmp r3, 0 |
| if (r3 >= 0) {
0x00001c80 bge.w 0x1a98 | goto label_17;
| }
0x00001c84 b 0x1ba4 | goto label_16;
| label_46:
0x00001c86 ldr.w r0, [fp, 0xb4] | r0 = *(arg_b4h);
0x00001c8a mov r1, r8 | r1 = r8;
0x00001c8c blx 0xe70 | r0 = loc_imp_apr_table_get ();
0x00001c90 mov r7, r0 | r7 = r0;
0x00001c92 cmp r0, 0 |
| if (r0 == 0) {
0x00001c94 beq.w 0x1b7e | goto label_18;
| }
0x00001c98 mov.w sl, 0 | sl = 0;
0x00001c9c b 0x1b76 | goto label_19;
| label_47:
0x00001c9e movs r1, 8 | r1 = 8;
0x00001ca0 ldr.w r0, [fp] | r0 = *(fp);
0x00001ca4 blx 0xf18 | loc_imp_apr_palloc ();
0x00001ca8 ldr r1, [pc, 0xe0] |
0x00001caa mov sb, r0 | sb = r0;
0x00001cac mov r0, r8 | r0 = r8;
0x00001cae add r1, pc | r1 = 0x3a3e;
0x00001cb0 blx 0x1068 | r0 = loc_imp_ap_cstr_casecmp ();
| if (r0 != 0) {
0x00001cb4 cbz r0, 0x1cc6 |
0x00001cb6 mov r1, r8 | r1 = r8;
0x00001cb8 cmp.w sl, 0 |
| if (sl == 0) {
0x00001cbc beq 0x1cfa | goto label_50;
| }
0x00001cbe ldr.w r0, [fp, 0xb8] | r0 = *(arg_b8h);
0x00001cc2 blx 0xee8 | loc_imp_apr_table_unset ();
| }
| label_21:
0x00001cc6 ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x00001cc8 movs r1, 0 | r1 = 0;
0x00001cca ldr.w r3, [fp, 0x104] | r3 = *(arg_104h);
0x00001cce mov r0, r5 | r0 = r5;
0x00001cd0 str.w r7, [sb] | __asm ("str.w r7, [sb]");
0x00001cd4 str.w r1, [sb, 4] | __asm ("str.w r1, [sb, 4]");
0x00001cd8 str.w sb, [r3, r2, lsl 2] | __asm ("str.w sb, [r3, r2, lsl 2]");
0x00001cdc blx 0xf24 | loc_imp_apr_brigade_destroy ();
0x00001ce0 b 0x1686 | goto label_0;
| label_25:
0x00001ce2 blx 0xeac | stack_chk_fail ();
| label_48:
0x00001ce6 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x00001cea ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00001cec cmp r3, 0 |
| if (r3 == 0) {
0x00001cee beq 0x1c3c | goto label_20;
| }
0x00001cf0 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00001cf2 cmp r3, 0 |
| if (r3 < 0) {
0x00001cf4 blt 0x1c3c | goto label_20;
| }
0x00001cf6 adds r1, 0x10 | r1 += 0x10;
0x00001cf8 b 0x1a0a | goto label_10;
| label_50:
0x00001cfa ldr.w r0, [fp, 0xb4] | r0 = *(arg_b4h);
0x00001cfe blx 0xee8 | loc_imp_apr_table_unset ();
0x00001d02 b 0x1cc6 | goto label_21;
| }
[*] Function sprintf used 3 times mod_proxy_scgi.so