[*] Binary protection state of mod_cgid.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of mod_cgid.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_cgid.so @ 0x35e4 */
| #include <stdint.h>
|
; (fcn) fcn.000035e4 () | void fcn_000035e4 (int16_t arg_4h, int16_t arg_8h, int16_t arg_ch, int16_t arg_10h, int16_t arg_c8h, int16_t arg_2040h, char * s1, 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_ch;
| int16_t var_18h;
| int16_t var_1ch;
| char * s2;
| int16_t var_24h_2;
| int16_t var_28h;
| int16_t var_2ch_2;
| int16_t var_30h_2;
| int16_t var_34h;
| int16_t var_38h;
| char * var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_0h_2;
| int16_t var_4ch_2;
| int16_t var_50h_2;
| int16_t var_ch_2;
| int16_t var_10h;
| int16_t var_14h;
| size_t var_60h;
| int16_t var_1ch_2;
| int16_t var_20h_2;
| int16_t var_24h;
| size_t n;
| int16_t var_2ch_3;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_ch_3;
| int32_t var_ch_4;
| int32_t var_14h_2;
| int16_t var_48h_2;
| int32_t var_18h_2;
| int16_t var_50h_3;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h_2;
| int16_t var_38h_2;
| int16_t var_3ch_2;
| int16_t var_44h_2;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int32_t var_70h;
| int32_t var_70h_2;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_84h;
| int16_t var_88h;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_c8h;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x000035e4 svcmi 0xf0e92d | __asm ("svcmi 0xf0e92d");
0x000035e8 mov r8, r2 | r8 = r2;
0x000035ea ldr r2, [pc, 0x1e4] |
0x000035ec mov r4, r3 | r4 = r3;
0x000035ee sub sp, 0xa4 |
0x000035f0 mov r5, r1 | r5 = r1;
0x000035f2 ldr r3, [pc, 0x1e0] | r3 = *(0x37d6);
0x000035f4 add.w sl, sp, 0x48 | sl += var_48h;
0x000035f8 add r2, pc | r2 = 0x6dce;
0x000035fa movs r1, 0 | r1 = 0;
0x000035fc mov r6, r0 | r6 = r0;
0x000035fe mov r0, sl | r0 = sl;
0x00003600 ldr r3, [r2, r3] |
0x00003602 movs r2, 0x54 | r2 = 0x54;
0x00003604 ldr r7, [sp, 0xc8] | r7 = *(arg_c8h);
0x00003606 ldr r3, [r3] | r3 = imp.__aeabi_unwind_cpp_pr0;
0x00003608 str r3, [sp, 0x9c] | var_9ch = r3;
0x0000360a mov.w r3, 0 | r3 = 0;
0x0000360e blx 0x1d60 | fcn_00001d60 ();
0x00003612 mov r0, r5 | r0 = r5;
0x00003614 blx 0x1ba4 | fcn_00001ba4 ();
0x00003616 invalid |
0x0000361a adds r1, 0 | r1 += 0;
0x0000361c ldr r3, [r3] | r3 = *(r3);
0x0000361e str r3, [sp, 0x2c] | var_2ch = r3;
0x00003620 cmp r0, 0 |
| if (r0 == 0) {
0x00003622 beq.w 0x375a | goto label_38;
| }
0x00003626 mov r3, r0 | r3 = r0;
0x00003628 ldr r0, [r0] | r0 = *(r0);
0x0000362a ldr r1, [r3, 4] | r1 = *((r3 + 4));
0x0000362c ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0000362e add r3, sp, 0x58 | r3 += var_58h;
0x00003630 stm r3!, {r0, r1, r2} | *(r3!) = r0;
| *((r3! + 4)) = r1;
| *((r3! + 8)) = r2;
| label_1:
0x00003632 ldr r3, [pc, 0x1a4] |
0x00003634 movs r2, 0 | r2 = 0;
0x00003636 str r7, [sp, 0x48] | var_48h = r7;
0x00003638 add r3, pc |
0x0000363a str r2, [sp, 0x54] | var_54h = r2;
0x0000363c ldr r3, [r3, 0x18] |
0x0000363e str r3, [sp, 0x50] | var_50h = r3;
0x00003640 ldr r3, [r5, 4] | r3 = *((r5 + 4));
0x00003642 ldr r3, [r3, 0x28] | r3 = *(0x6e56);
0x00003644 str r3, [sp, 0x4c] | var_4ch = r3;
0x00003646 ldr r3, [r4] | r3 = *(r4);
| if (r3 == 0) {
0x00003648 cbz r3, 0x365c | goto label_39;
| }
0x0000364a mov r2, r4 | r2 = r4;
0x0000364c movs r3, 1 | r3 = 1;
| do {
0x0000364e ldr r1, [r2, 4]! | r1 = *((r2 += 4));
0x00003652 mov r0, r3 | r0 = r3;
0x00003654 adds r3, 1 | r3++;
0x00003656 cmp r1, 0 |
0x00003658 bne 0x364e |
| } while (r1 != 0);
0x0000365a str r0, [sp, 0x54] | var_54h = r0;
| label_39:
0x0000365c ldr.w r3, [r5, 0xe8] | r3 = *((r5 + 0xe8));
0x00003660 mov r0, r3 | r0 = r3;
0x00003662 str r3, [sp, 0x30] | var_30h = r3;
0x00003664 blx 0x1cd0 | fcn_00001cd0 ();
0x00003668 str r0, [sp, 0x64] | var_64h = r0;
0x0000366a mov r7, r0 | r7 = r0;
0x0000366c mov r0, r8 | r0 = r8;
0x0000366e blx 0x1cd0 | fcn_00001cd0 ();
0x00003672 ldr.w fp, [r5, 0xe4] | fp = *((r5 + 0xe4));
0x00003676 mov sb, r0 | sb = r0;
0x00003678 str r0, [sp, 0x68] | var_68h = r0;
0x0000367a mov r0, fp | r0 = fp;
0x0000367c blx 0x1cd0 | fcn_00001cd0 ();
0x00003680 ldr.w r2, [r5, 0xf4] | r2 = *((r5 + 0xf4));
0x00003684 mov r3, r0 | r3 = r0;
0x00003686 ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x00003688 str r0, [sp, 0x6c] | var_6ch = r0;
0x0000368a ldr r1, [r1, 0x14] | r1 = *((r1 + 0x14));
0x0000368c cmp r2, 0 |
| if (r2 == 0) {
0x0000368e beq 0x3734 | goto label_40;
| }
0x00003690 strd r0, r1, [sp, 0x34] | __asm ("strd r0, r1, [var_38h_2]");
0x00003694 mov r0, r2 | r0 = r2;
0x00003696 str r2, [sp, 0x3c] | var_3ch_2 = r2;
0x00003698 blx 0x1cd0 | fcn_00001cd0 ();
0x0000369c ldr r1, [sp, 0x38] | r1 = var_38h_2;
0x0000369e ldr r3, [sp, 0x34] | r3 = var_34h_2;
0x000036a0 strd r0, r1, [sp, 0x70] | __asm ("strd r0, r1, [var_70h]");
0x000036a4 cmp r0, 0 |
| if (r0 == 0) {
0x000036a6 beq 0x3738 | goto label_41;
| }
0x000036a8 ldr r2, [sp, 0x3c] | r2 = var_3ch_2;
0x000036aa mov r1, r5 | r1 = r5;
0x000036ac str r0, [sp, 0x20] | var_50h_3 = r0;
0x000036ae mov r0, r6 | r0 = r6;
0x000036b0 strd sb, fp, [sp, 0x10] | __asm ("strd sb, fp, [var_0hx10]");
0x000036b4 strd r3, r2, [sp, 0x18] | __asm ("strd r3, r2, [var_48h_2]");
0x000036b8 movs r2, 0x54 | r2 = 0x54;
0x000036ba ldr r3, [sp, 0x30] | r3 = var_30h;
0x000036bc str r2, [sp] | *(sp) = r2;
0x000036be movs r2, 5 | r2 = 5;
0x000036c0 strd r7, r8, [sp, 8] | __asm ("strd r7, r8, [var_8h]");
0x000036c4 str r3, [sp, 4] | var_4h = r3;
0x000036c6 mov r3, sl | r3 = sl;
0x000036c8 bl 0x2450 | r0 = fcn_00002450 (r0, r1);
0x000036cc mov sl, r0 | sl = r0;
| label_0:
0x000036ce cmp.w sl, 0 |
| if (sl != 0) {
0x000036d2 bne 0x3718 | goto label_2;
| }
0x000036d4 ldr r3, [sp, 0x54] | r3 = var_54h;
0x000036d6 cmp r3, 0 |
0x000036d8 itttt gt |
| if (r3 <= 0) {
0x000036da subgt r4, 4 | r4 -= 4;
| }
| if (r3 <= 0) {
0x000036dc movgt r7, sl | r7 = sl;
| }
| if (r3 <= 0) {
0x000036de addgt sb, sp, 0x44 | sb += var_44h_2;
| }
| if (r3 > 0) {
0x000036e2 mov.w r8, 4 | r8 = 4;
| }
| if (r3 > 0) {
0x000036e6 bgt 0x36f2 | goto label_42;
| }
0x000036e8 b 0x376a | goto label_43;
| do {
0x000036ea ldr r3, [sp, 0x54] | r3 = var_54h;
0x000036ec adds r7, 1 | r7++;
0x000036ee cmp r3, r7 |
| if (r3 <= r7) {
0x000036f0 ble 0x376a | goto label_43;
| }
| label_42:
0x000036f2 ldr fp, [r4, 4]! | fp = *((r4 += 4));
0x000036f6 mov r0, fp | r0 = fp;
0x000036f8 blx 0x1cd0 | fcn_00001cd0 ();
0x000036fc mov r3, sb | r3 = sb;
0x000036fe strd fp, r0, [sp, 4] | __asm ("strd fp, r0, [var_4h]");
0x00003702 str r0, [sp, 0x44] | var_44h_2 = r0;
0x00003704 movs r2, 2 | r2 = 2;
0x00003706 mov r1, r5 | r1 = r5;
0x00003708 mov r0, r6 | r0 = r6;
0x0000370a str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x0000370e bl 0x2450 | r0 = fcn_00002450 (r0, r1);
0x00003712 cmp r0, 0 |
0x00003714 beq 0x36ea |
| } while (r0 == 0);
0x00003716 mov sl, r0 | sl = r0;
| label_2:
0x00003718 ldr r2, [pc, 0xc0] |
0x0000371a ldr r3, [pc, 0xb8] | r3 = *(0x37d6);
0x0000371c add r2, pc | r2 = 0x6efc;
0x0000371e ldr r3, [r2, r3] | r3 = *(0x6efc);
0x00003720 ldr r2, [r3] | r2 = *(0x6efc);
0x00003722 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x00003724 eors r2, r3 | r2 ^= r3;
0x00003726 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000372a bne 0x37ca | goto label_44;
| }
0x0000372c mov r0, sl | r0 = sl;
0x0000372e add sp, 0xa4 |
0x00003730 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_40:
0x00003734 strd r2, r1, [sp, 0x70] | __asm ("strd r2, r1, [var_70h]");
| label_41:
0x00003738 strd fp, r3, [sp, 0x14] | __asm ("strd fp, r3, [var_48h_2]");
0x0000373c movs r2, 0x54 | r2 = 0x54;
0x0000373e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00003740 mov r1, r5 | r1 = r5;
0x00003742 str r2, [sp] | *(sp) = r2;
0x00003744 mov r0, r6 | r0 = r6;
0x00003746 movs r2, 4 | r2 = 4;
0x00003748 strd r8, sb, [sp, 0xc] | __asm ("strd r8, sb, [var_ch_3]");
0x0000374c str r3, [sp, 4] | var_4h = r3;
0x0000374e mov r3, sl | r3 = sl;
0x00003750 str r7, [sp, 8] | var_8h = r7;
0x00003752 bl 0x2450 | r0 = fcn_00002450 (r0, r1);
0x00003756 mov sl, r0 | sl = r0;
0x00003758 b 0x36ce | goto label_0;
| label_38:
0x0000375a ldr r3, [pc, 0x84] |
0x0000375c add r3, pc | r3 = 0x6f42;
0x0000375e ldm.w r3, {r0, r1, r2} | r0 = *(r3);
| r1 = *((r3 + 4));
| r2 = *((r3 + 8));
0x00003762 add r3, sp, 0x58 | r3 += var_58h;
0x00003764 stm.w r3, {r0, r1, r2} | *(r3) = r0;
| *((r3 + 4)) = r1;
| *((r3 + 8)) = r2;
0x00003768 b 0x3632 | goto label_1;
| label_43:
0x0000376a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000376c ldr r2, [r3, 0x20] | r2 = *((r3 + 0x20));
| if (r2 != 0) {
0x0000376e cbz r2, 0x377c |
0x00003770 ldm.w r2, {r0, r1} | r0 = *(r2);
| r1 = *((r2 + 4));
0x00003774 movs r2, 1 | r2 = 1;
0x00003776 add r3, sp, 0x7c | r3 += var_7ch;
0x00003778 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
| }
0x0000377c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000377e ldr r3, [r3, 0x24] | r3 = *((r3 + 0x24));
0x00003780 str r2, [sp, 0x78] | var_78h = r2;
0x00003782 mov r2, r3 | r2 = r3;
| if (r3 != 0) {
0x00003784 cbz r3, 0x3792 |
0x00003786 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x0000378a movs r2, 1 | r2 = 1;
0x0000378c add r3, sp, 0x88 | r3 += var_88h;
0x0000378e stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
| }
0x00003792 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00003794 ldr r3, [r3, 0x28] | r3 = *((r3 + 0x28));
0x00003796 str r2, [sp, 0x84] | var_84h = r2;
| if (r3 != 0) {
0x00003798 cbz r3, 0x37a6 |
0x0000379a ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x0000379e add r3, sp, 0x94 | r3 += var_94h;
0x000037a0 stm.w r3, {r0, r1} | *(r3) = r0;
| *((r3 + 4)) = r1;
0x000037a4 movs r3, 1 | r3 = 1;
| }
0x000037a6 add r4, sp, 0x78 | r4 += var_78h;
0x000037a8 str r3, [sp, 0x90] | var_90h = r3;
0x000037aa b 0x37b6 |
| while (r0 < 0) {
0x000037ac blx 0x1d3c | r0 = fcn_00001d3c ();
0x000037b0 ldr r3, [r0] | r3 = *(r0);
0x000037b2 cmp r3, 4 |
| if (r3 != 4) {
0x000037b4 bne 0x37c6 | goto label_45;
| }
0x000037b6 movs r2, 0x24 | r2 = 0x24;
0x000037b8 mov r1, r4 | r1 = r4;
0x000037ba mov r0, r6 | r0 = r6;
0x000037bc blx 0x1d9c | r0 = fcn_00001d9c ();
0x000037c0 cmp r0, 0 |
0x000037c2 blt 0x37ac |
| }
0x000037c4 b 0x3718 | goto label_2;
| label_45:
0x000037c6 mov sl, r3 | sl = r3;
0x000037c8 b 0x3718 | goto label_2;
| label_44:
0x000037ca blx 0x1b20 | fcn_00001b20 ();
0x000037ce nop |
0x000037d0 adds r7, 0xdc | r7 += 0xdc;
0x000037d2 movs r0, r0 |
0x000037d4 lsls r0, r1, 8 | r0 = r1 << 8;
0x000037d6 movs r0, r0 |
0x000037d8 subs r2, 0x14 | r2 -= 0x14;
0x000037da movs r0, r0 |
0x000037dc adds r6, 0xb8 | r6 += 0xb8;
0x000037de movs r0, r0 |
0x000037e0 subs r0, 0xa4 | r0 -= 0xa4;
0x000037e2 movs r0, r0 |
0x000037e4 ldr.w r2, [pc, 0x478] |
0x000037e8 ldr.w r3, [pc, 0x478] | r3 = *(0x3c64);
0x000037ec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000037f0 mov r7, r0 | r7 = r0;
0x000037f2 vpush {d8} | __asm ("vpush {d8}");
0x000037f6 add r2, pc | r2 = 0x745a;
0x000037f8 sub.w sp, sp, 0x20c0 |
0x000037fc sub sp, 0xc |
0x000037fe ldr.w r1, [pc, 0x468] |
0x00003802 ldr r3, [r2, r3] |
0x00003804 add.w r0, sp, 0x20c0 | r0 += s1;
0x00003808 ldr.w r4, [r7, 0xc8] | r4 = *((r7 + 0xc8));
0x0000380c adds r0, 4 | r0 += 4;
0x0000380e ldr.w sb, [pc, 0x45c] |
0x00003812 add r1, pc | r1 = 0x7480;
0x00003814 ldr r3, [r3] | r3 = *(0x745a);
0x00003816 str r3, [r0] | *(r0) = r3;
0x00003818 mov.w r3, 0 | r3 = 0;
0x0000381c mov r0, r4 | r0 = r4;
0x0000381e add sb, pc | sb = 0x7490;
0x00003820 blx 0x19fc | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x00003824 cbz r0, 0x3838 |
0x00003826 ldr.w r1, [pc, 0x448] |
0x0000382a mov r0, r4 | r0 = r4;
0x0000382c add r1, pc | r1 = 0x74a2;
0x0000382e blx 0x19fc | r0 = strcmp (r0, r1);
0x00003832 cmp r0, 0 |
| if (r0 != 0) {
0x00003834 bne.w 0x3c4e | goto label_46;
| }
| }
0x00003838 ldr.w r3, [pc, 0x438] |
0x0000383c ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x0000383e ldr.w r2, [r7, 0x100] | r2 = *((r7 + 0x100));
0x00003842 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00003846 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x00003848 ldr r0, [r7, 0x2c] | r0 = *((r7 + 0x2c));
0x0000384a str r3, [sp, 0x24] | var_24h = r3;
0x0000384c ldr r3, [r3, 8] | r3 = *(0x3c7c);
0x0000384e ldr.w fp, [r1, r3, lsl 2] | offset_0 = r3 << 2;
| fp = *((r1 + offset_0));
0x00003852 ldr.w r1, [pc, 0x424] |
0x00003856 ldr.w r5, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r5 = *((r2 + offset_1));
0x0000385a add r1, pc | r1 = 0x74d8;
0x0000385c blx 0x19fc | strcmp (r0, r1);
0x00003860 ldr.w r4, [r7, 0xe8] | r4 = *((r7 + 0xe8));
0x00003864 mov r6, r0 | r6 = r0;
0x00003866 movs r1, 0x2f | r1 = 0x2f;
0x00003868 mov r0, r4 | r0 = r4;
0x0000386a blx 0x1e54 | r0 = fcn_00001e54 ();
0x0000386e cmp r0, 0 |
| if (r0 == 0) {
0x00003870 beq.w 0x39ce | goto label_47;
| }
0x00003874 adds r0, 1 | r0++;
| label_3:
0x00003876 ldr.w r1, [pc, 0x404] |
0x0000387a movs r2, 4 | r2 = 4;
0x0000387c add r1, pc | r1 = 0x74fe;
0x0000387e blx 0x1f48 | close (r0);
0x00003882 str r0, [sp, 0x30] | var_0h = r0;
0x00003884 mov r0, r7 | r0 = r7;
0x00003886 blx 0x1a78 | r0 = fcn_00001a78 ();
0x0000388a lsls r3, r0, 0x1c | r3 = r0 << 0x1c;
0x0000388c bpl 0x3972 |
| while (r0 == 0) {
0x0000388e ldr r3, [sp, 0x30] | r3 = var_0h;
0x00003890 orrs r3, r6 | r3 |= r6;
| if (r3 == r6) {
0x00003892 beq.w 0x3bee | goto label_48;
| }
0x00003896 ldr.w r3, [r7, 0x16c] | r3 = *((r7 + 0x16c));
0x0000389a cmp r3, 0 |
| if (r3 == 0) {
0x0000389c beq.w 0x3bf4 | goto label_49;
| }
0x000038a0 cmp r3, 2 |
| if (r3 == 2) {
0x000038a2 beq.w 0x3c2c | goto label_50;
| }
0x000038a4 strh r3, [r0, 0xe] | *((r0 + 0xe)) = r3;
0x000038a6 ldr.w r3, [r7, 0xf8] | r3 = *((r7 + 0xf8));
0x000038aa cmp r3, 1 |
| if (r3 == 1) {
0x000038ac bne 0x38bc |
0x000038ae ldr.w r3, [r7, 0xf0] | r3 = *((r7 + 0xf0));
| if (r3 == 0) {
0x000038b2 cbz r3, 0x38bc | goto label_51;
| }
0x000038b4 ldrb r3, [r3] | r3 = *(r3);
0x000038b6 cmp r3, 0 |
| if (r3 != 0) {
0x000038b8 bne.w 0x3c34 | goto label_52;
| }
| }
| label_51:
0x000038bc mov r0, r7 | r0 = r7;
0x000038be blx 0x1b08 | fcn_00001b08 ();
0x000038c2 mov r0, r7 | r0 = r7;
0x000038c4 blx 0x1e24 | fcn_00001e24 ();
0x000038c8 add r3, sp, 0x48 | r3 += var_48h_2;
0x000038ca ldr.w r1, [r7, 0xbc] | r1 = *((r7 + 0xbc));
0x000038ce ldr r0, [r7] | r0 = *(r7);
0x000038d0 str r3, [sp, 0x34] | var_4h = r3;
0x000038d2 blx 0x1ef4 | loc_imp_ap_hook_get_suexec_identity ();
0x000038d6 ldr r3, [sp, 0x34] | r3 = var_4h;
0x000038d8 mov r6, r0 | r6 = r0;
0x000038da mov r2, fp | r2 = fp;
0x000038dc mov r1, r7 | r1 = r7;
0x000038de sub.w sl, r3, 0xc | sl = r3 - 0xc;
0x000038e2 mov r0, sl | r0 = sl;
0x000038e4 bl 0x2290 | r0 = fcn_00002290 (r0, r1, r2, r3);
0x000038e8 mov r8, r0 | r8 = r0;
0x000038ea cmp r0, 0 |
| if (r0 != 0) {
0x000038ec bne 0x39a2 | goto label_9;
| }
0x000038ee mov r3, r6 | r3 = r6;
0x000038f0 movs r1, 1 | r1 = 1;
0x000038f2 add r6, sp, 0xc8 | r6 += var_c8h;
0x000038f4 str r1, [sp] | *(sp) = r1;
0x000038f6 mov r2, r4 | r2 = r4;
0x000038f8 ldr r0, [r6, -0x8c] | r0 = *((r6 - 0x8c));
0x000038fc mov r1, r7 | r1 = r7;
0x000038fe bl 0x35e4 | r0 = fcn_000035e4 (r0, r1, r2, r3, r4, r5, r6);
0x00003902 cmp r0, 0 |
| if (r0 != 0) {
0x00003904 bne.w 0x3b2e | goto label_53;
| }
| label_7:
0x00003908 movs r1, 0xc | r1 = 0xc;
0x0000390a ldr r0, [r7] | r0 = *(r7);
0x0000390c blx 0x1c04 | r0 = fcn_00001c04 ();
0x00003910 mov r2, r0 | r2 = r0;
0x00003912 str.w fp, [r0, 4] | __asm ("str.w fp, [r0, 4]");
0x00003916 mov r4, r0 | r4 = r0;
0x00003918 mov r1, fp | r1 = fp;
0x0000391a mov r0, r7 | r0 = r7;
0x0000391c str r7, [r2], 8 | *(r2) = r7;
| r2 += 8;
0x00003920 bl 0x3540 | r0 = fcn_00003540 (r0, r1, r2);
0x00003924 cmp r0, 0 |
| if (r0 == 0) {
0x00003926 beq 0x39d2 | goto label_54;
| }
0x00003928 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000392a ldr.w r1, [r7, 0x108] | r1 = *((r7 + 0x108));
0x0000392e ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003930 cmp r2, 0 |
| if (r2 < 0) {
0x00003932 blt.w 0x3b50 | goto label_55;
| }
0x00003936 cmp r1, 0 |
| if (r1 == 0) {
0x00003938 beq.w 0x3ef2 | goto label_56;
| }
| label_14:
0x0000393c ldr r3, [r1] | r3 = *(r1);
0x0000393e cmp r3, 0 |
| if (r3 == 0) {
0x00003940 beq.w 0x3b54 | goto label_12;
| }
0x00003944 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003946 cmp r3, 0 |
| if (r3 < 0) {
0x00003948 blt.w 0x3b54 | goto label_12;
| }
| label_16:
0x0000394c cmp r3, 6 |
0x0000394e ite le |
| if (r3 > 6) {
0x00003950 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x00003952 movgt r3, 1 | r3 = 1;
| }
| label_8:
0x00003954 cmp r3, 0 |
| if (r3 == 0) {
0x00003956 beq 0x39e6 | goto label_57;
| }
0x00003958 ldr r3, [pc, 0x324] |
0x0000395a movw r1, 0x5cd | r1 = 0x5cd;
0x0000395e strd r0, r7, [sp] | __asm ("strd r0, r7, [sp]");
0x00003962 ldr r0, [pc, 0x320] |
0x00003964 add r3, pc | r3 = 0x75e8;
0x00003966 str r3, [sp, 8] | var_50h_2 = r3;
0x00003968 movs r3, 7 | r3 = 7;
0x0000396a add r0, pc | r0 = 0x75f4;
0x0000396c blx 0x1e6c | fcn_00001e6c ();
0x00003970 b 0x39e6 | goto label_57;
0x00003972 ldr r1, [pc, 0x314] |
0x00003974 ldr.w r0, [r7, 0xc0] | r0 = *((r7 + 0xc0));
0x00003978 add r1, pc | r1 = 0x7606;
0x0000397a blx 0x1ab4 | r0 = fcn_00001ab4 ();
| if (r0 == 0) {
0x0000397e cbz r0, 0x398c | goto label_58;
| }
0x00003980 ldr r1, [pc, 0x308] |
0x00003982 add r1, pc | r1 = 0x7612;
0x00003984 blx 0x1bbc | r0 = fcn_00001bbc ();
0x00003988 cmp r0, 0 |
0x0000398a beq 0x388e |
| }
| label_58:
0x0000398c ldr r4, [pc, 0x300] |
0x0000398e movs r3, 0 | r3 = 0;
0x00003990 add r4, pc | r4 = 0x7624;
| label_10:
0x00003992 movw r2, 0x193 | r2 = 0x193;
| label_11:
0x00003996 mov r1, fp | r1 = fp;
0x00003998 mov r0, r7 | r0 = r7;
0x0000399a str r4, [sp] | *(sp) = r4;
0x0000399c bl 0x216c | r0 = fcn_0000216c (r0, r1, r2, r3, r4);
0x000039a0 mov r8, r0 | r8 = r0;
| label_9:
0x000039a2 ldr r2, [pc, 0x2f0] |
0x000039a4 add.w r1, sp, 0x20c0 | r1 += s1;
0x000039a8 ldr r3, [pc, 0x2b8] | r3 = *(0x3c64);
0x000039aa adds r1, 4 | r1 += 4;
0x000039ac add r2, pc | r2 = 0x7646;
0x000039ae ldr r3, [r2, r3] | r3 = *(0x7646);
0x000039b0 ldr r2, [r3] | r2 = *(0x7646);
0x000039b2 ldr r3, [r1] | r3 = *(r1);
0x000039b4 eors r2, r3 | r2 ^= r3;
0x000039b6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000039ba bne.w 0x4056 | goto label_59;
| }
0x000039be mov r0, r8 | r0 = r8;
0x000039c0 add.w sp, sp, 0x20c0 |
0x000039c4 add sp, 0xc |
0x000039c6 vpop {d8} | __asm ("vpop {d8}");
0x000039ca pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_47:
0x000039ce mov r0, r4 | r0 = r4;
0x000039d0 b 0x3876 | goto label_3;
| label_54:
0x000039d2 ldr r3, [pc, 0x2c4] | r3 = *(0x3c9a);
0x000039d4 mov r1, r4 | r1 = r4;
0x000039d6 ldr r2, [pc, 0x2c4] |
0x000039d8 ldr r0, [r7] | r0 = *(r7);
0x000039da ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000039de add r2, pc | r2 = 0x7680;
0x000039e0 str r3, [sp, 0x10] | var_10h = r3;
0x000039e2 blx 0x1bd4 | fcn_00001bd4 ();
| label_57:
0x000039e6 ldr r0, [sp, 0x34] | r0 = var_4h;
0x000039e8 mov r1, sl | r1 = sl;
0x000039ea ldr r3, [r7] | r3 = *(r7);
0x000039ec movs r2, 1 | r2 = 1;
0x000039ee subs r0, 8 | r0 -= 8;
0x000039f0 blx 0x1a84 | fcn_00001a84 ();
0x000039f4 ldrd r2, r3, [r5] | __asm ("ldrd r2, r3, [r5]");
0x000039f8 cmp r2, 1 |
0x000039fa sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x000039fe itett lt |
| if (r2 >= 1) {
0x00003a00 ldrlt r3, [r7, 8] | r3 = *((r7 + 8));
| }
| if (r2 < 1) {
0x00003a02 ldrge r0, [r6, -0x88] | r0 = *((r6 - 0x88));
| }
| if (r2 >= 1) {
0x00003a06 ldrlt r0, [r6, -0x88] | r0 = *((r6 - 0x88));
| }
| if (r2 < 1) {
0x00003a0a ldrd r2, r3, [r3, 0x40] | __asm ("ldrd r2, r3, [r3, 0x40]");
| }
0x00003a0e blx 0x1d30 | fcn_00001d30 ();
0x00003a12 ldr r2, [pc, 0x28c] |
0x00003a14 ldr r1, [r6, -0x8c] | r1 = *((r6 - 0x8c));
0x00003a16 adds r4, r1, 2 | r4 = r1 + 2;
0x00003a18 ldr r0, [r7] | r0 = *(r7);
0x00003a1a add r2, pc | r2 = 0x76c0;
0x00003a1c blx 0x1b14 | fcn_00001b14 ();
0x00003a20 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00003a22 ldr r0, [r7] | r0 = *(r7);
0x00003a24 ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x00003a26 blx 0x1c34 | fcn_00001c34 ();
0x00003a2a ldr.w r3, [fp] | r3 = *(fp);
0x00003a2e str r0, [sp, 0x1c] | var_1ch_2 = r0;
0x00003a30 str r3, [sp, 0x28] | n = r3;
| if (r3 != 0) {
0x00003a32 cbz r3, 0x3a42 |
0x00003a34 ldr.w r1, [fp, 8] | r1 = *(arg_8h);
0x00003a38 ldr r0, [r7] | r0 = *(r7);
0x00003a3a adds r1, 1 | r1++;
0x00003a3c blx 0x1c04 | fcn_00001c04 ();
0x00003a40 str r0, [sp, 0x28] | n = r0;
| }
0x00003a42 ldr r3, [pc, 0x260] |
0x00003a44 movs r5, 0 | r5 = 0;
0x00003a46 vldr d8, [pc, 0x210] | __asm ("vldr d8, [0x00003c5c]");
0x00003a4a str r7, [sp, 0x18] | var_60h = r7;
0x00003a4c add r3, pc | r3 = 0x76f6;
0x00003a4e str r3, [sp, 0x2c] | var_2ch_3 = r3;
0x00003a50 add r3, sp, 0x88 | r3 += var_58h;
0x00003a52 str r3, [sp, 0x10] | var_10h = r3;
0x00003a54 add r3, sp, 0x50 | r3 += var_50h_3;
0x00003a56 str r3, [sp, 0x14] | var_14h = r3;
| label_6:
0x00003a58 ldr r2, [sp, 0x18] | r2 = var_60h;
0x00003a5a movs r3, 0 | r3 = 0;
0x00003a5c vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x00003a60 ldr r1, [sp, 0x1c] | r1 = var_1ch_2;
0x00003a62 ldr.w r0, [r2, 0x118] | r0 = *((r2 + 0x118));
0x00003a66 mov r2, r3 | r2 = r3;
0x00003a68 blx 0x1bf8 | r0 = fcn_00001bf8 ();
0x00003a6c cmp r0, 0 |
| if (r0 != 0) {
0x00003a6e bne.w 0x3bfe | goto label_60;
| }
0x00003a72 ldr r7, [sp, 0x1c] | r7 = var_1ch_2;
0x00003a74 ldr r4, [r7, 4]! | r4 = *((r7 += 4));
0x00003a78 cmp r4, r7 |
| if (r4 == r7) {
0x00003a7a beq 0x3b26 | goto label_61;
| }
0x00003a7c ldr r3, [pc, 0x228] | r3 = *(0x3ca8);
0x00003a7e ldr.w sl, [sb, r3] | sl = *((sb + r3));
0x00003a82 b 0x3a8a |
| while (r3 != 0) {
| label_4:
0x00003a84 ldr r4, [r4] | r4 = *(r4);
0x00003a86 cmp r4, r7 |
| if (r4 == r7) {
0x00003a88 beq 0x3b26 | goto label_61;
| }
| label_5:
0x00003a8a ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003a8c cmp r2, sl |
| if (r2 == sl) {
0x00003a8e beq 0x3b60 | goto label_62;
| }
0x00003a90 ldr r3, [pc, 0x218] | r3 = *(0x3cac);
0x00003a92 ldr.w r1, [sb, r3] | r1 = *((sb + r3));
0x00003a96 subs r3, r5, 0 | r3 = r5 - 0;
0x00003a98 it ne |
| if (r3 == r5) {
0x00003a9a movne r3, 1 | r3 = 1;
| }
0x00003a9c cmp r2, r1 |
0x00003a9e it eq |
| if (r2 != r1) {
0x00003aa0 orreq r3, r3, 1 | r3 |= 1;
| }
0x00003aa4 cmp r3, 0 |
0x00003aa6 bne 0x3a84 |
| }
0x00003aa8 ldr r5, [r2, 0x10] | r5 = *((r2 + 0x10));
0x00003aaa mov r0, r4 | r0 = r4;
0x00003aac ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [var_10h]");
0x00003ab0 subs r1, 0x3c | r1 -= 0x3c;
0x00003ab2 blx r5 | uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
0x00003ab4 ldr.w r3, [fp] | r3 = *(fp);
| if (r3 != 0) {
0x00003ab8 cbz r3, 0x3ae6 |
0x00003aba ldr.w r3, [fp, 8] | r3 = *(arg_8h);
0x00003abe cmp r3, r8 |
| if (r3 <= r8) {
0x00003ac0 ble 0x3ae6 | goto label_63;
| }
0x00003ac2 ldr r2, [r6, -0x78] | r2 = *((r6 - 0x78));
0x00003ac6 mov r0, r8 | r0 = r8;
0x00003ac8 add.w r1, r8, r2 | r1 = r8 + r2;
0x00003acc cmp r1, r3 |
0x00003ace itt hi |
| if (r1 <= r3) {
0x00003ad0 subhi r2, r3, r8 | r2 = r3 - r8;
| }
| if (r1 <= r3) {
0x00003ad2 lslhi r0, r1, 8 | r0 = r1 << 8;
| }
0x00003ad4 mov r8, r3 | r8 = r3;
0x00003ad6 ldr r3, [sp, 0x28] | r3 = n;
0x00003ad8 it ls |
| if (r1 > r3) {
0x00003ada movls r8, r1 | r8 = r1;
| }
0x00003adc ldr r1, [r6, -0x7c] | r1 = *((r6 - 0x7c));
0x00003ae0 add r0, r3 | r0 += r3;
0x00003ae2 blx 0x1a9c | fcn_00001a9c ();
| }
| label_63:
0x00003ae6 ldrd r1, r2, [r6, -0x7c] | __asm ("ldrd r1, r2, [r6, -0x7c]");
0x00003aea movs r3, 0 | r3 = 0;
0x00003aec ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
0x00003af0 blx 0x1b8c | r0 = fcn_00001b8c ();
0x00003af4 mov r5, r0 | r5 = r0;
0x00003af6 cmp r0, 0 |
| if (r0 == 0) {
0x00003af8 beq 0x3a84 | goto label_4;
| }
0x00003afa ldr r3, [sp, 0x18] | r3 = var_60h;
0x00003afc movw r1, 0x624 | r1 = 0x624;
0x00003b00 str r0, [sp] | *(sp) = r0;
0x00003b02 movs r5, 1 | r5 = 1;
0x00003b04 ldr r2, [sp, 0x24] | r2 = var_24h;
0x00003b06 str r3, [sp, 4] | var_4ch_2 = r3;
0x00003b08 ldr.w r3, [r3, 0xe8] | r3 = *((r3 + 0xe8));
0x00003b0c ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x00003b0e ldr r0, [sp, 0x2c] | r0 = var_2ch_3;
0x00003b10 str r3, [sp, 0xc] | var_ch_2 = r3;
0x00003b12 ldr r3, [pc, 0x19c] |
0x00003b14 str r2, [sp, 0x20] | var_20h_2 = r2;
0x00003b16 add r3, pc | r3 = 0x77cc;
0x00003b18 str r3, [sp, 8] | var_50h_2 = r3;
0x00003b1a movs r3, 3 | r3 = 3;
0x00003b1c blx 0x1e6c | fcn_00001e6c ();
0x00003b20 ldr r4, [r4] | r4 = *(r4);
0x00003b22 cmp r4, r7 |
| if (r4 != r7) {
0x00003b24 bne 0x3a8a | goto label_5;
| }
| label_61:
0x00003b26 ldr r0, [sp, 0x1c] | r0 = var_1ch_2;
0x00003b28 blx 0x1dc0 | fcn_00001dc0 ();
0x00003b2c b 0x3a58 | goto label_6;
| label_53:
0x00003b2e ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003b30 movw r1, 0x5be | r1 = 0x5be;
0x00003b34 strd r0, r7, [sp] | __asm ("strd r0, r7, [sp]");
0x00003b38 ldr r0, [pc, 0x178] |
0x00003b3a ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00003b3c add r0, pc | r0 = 0x77f4;
0x00003b3e mov r2, r3 | r2 = r3;
0x00003b40 str r3, [sp, 0x10] | var_10h = r3;
0x00003b42 ldr r3, [pc, 0x174] |
0x00003b44 add r3, pc | r3 = 0x7802;
0x00003b46 str r3, [sp, 8] | var_50h_2 = r3;
0x00003b48 movs r3, 3 | r3 = 3;
0x00003b4a blx 0x1e6c | fcn_00001e6c ();
0x00003b4e b 0x3908 | goto label_7;
| label_55:
0x00003b50 cmp r1, 0 |
| if (r1 == 0) {
0x00003b52 beq 0x3c40 | goto label_64;
| }
| label_12:
0x00003b54 ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00003b56 cmp r3, 6 |
0x00003b58 ite le |
| if (r3 > 6) {
0x00003b5a movle r3, 0 | r3 = 0;
| }
| if (r3 <= 6) {
0x00003b5c movgt r3, 1 | r3 = 1;
| }
0x00003b5e b 0x3954 | goto label_8;
| label_62:
0x00003b60 ldrd r7, r0, [sp, 0x18] | __asm ("ldrd r7, r0, [var_60h]");
0x00003b64 blx 0x1dc0 | fcn_00001dc0 ();
0x00003b68 ldr.w r3, [fp] | r3 = *(fp);
| if (r3 != 0) {
0x00003b6c cbz r3, 0x3b76 |
0x00003b6e ldr r2, [sp, 0x28] | r2 = n;
0x00003b70 movs r3, 0 | r3 = 0;
0x00003b72 strb.w r3, [r2, r8] | *((r2 + r8)) = r3;
| }
0x00003b76 ldr r0, [r6, -0x8c] | r0 = *((r6 - 0x8c));
0x00003b7a movs r1, 1 | r1 = 1;
0x00003b7c blx 0x1e18 | fcn_00001e18 ();
0x00003b80 ldr r3, [sp, 0x30] | r3 = var_0h;
0x00003b82 cmp r3, 0 |
| if (r3 != 0) {
0x00003b84 bne.w 0x3cd4 | goto label_65;
| }
0x00003b88 ldr.w r3, [r7, 0x11c] | r3 = *((r7 + 0x11c));
0x00003b8c ldr r5, [r7, 4] | r5 = *((r7 + 4));
| if (r3 != 0) {
0x00003b8e cbnz r3, 0x3b96 | goto label_66;
| }
0x00003b90 b 0x3b9e | goto label_67;
| do {
0x00003b92 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 == 0) {
0x00003b94 cbz r3, 0x3b9e | goto label_67;
| }
| label_66:
0x00003b96 ldr r2, [r3] | r2 = *(r3);
0x00003b98 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x00003b9a cmp r2, 0x31 |
0x00003b9c bls 0x3b92 |
| } while (r2 < 0x31);
| label_67:
0x00003b9e ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003ba0 ldr r0, [r7] | r0 = *(r7);
0x00003ba2 str.w r3, [r7, 0x11c] | __asm ("str.w r3, [r7, 0x11c]");
0x00003ba6 str.w r3, [r7, 0x114] | __asm ("str.w r3, [r7, 0x114]");
0x00003baa blx 0x1c34 | fcn_00001c34 ();
0x00003bae ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003bb0 mov r4, r0 | r4 = r0;
0x00003bb2 ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
0x00003bb6 adds r6, r4, 4 | r6 = r4 + 4;
0x00003bb8 blx 0x1b2c | r0 = fcn_00001b2c ();
0x00003bbc mov r3, r0 | r3 = r0;
0x00003bbe ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00003bc0 str r6, [r3] | *(r3) = r6;
0x00003bc2 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bc4 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00003bc6 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bc8 str r3, [r2] | *(r2) = r3;
0x00003bca str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00003bcc blx 0x1ec4 | r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
0x00003bd0 mov r3, r0 | r3 = r0;
0x00003bd2 ldr.w r0, [r7, 0x114] | r0 = *((r7 + 0x114));
0x00003bd6 str r6, [r3] | *(r3) = r6;
0x00003bd8 mov r1, r4 | r1 = r4;
0x00003bda ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bdc str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00003bde ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003be0 str r3, [r2] | *(r2) = r3;
0x00003be2 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00003be4 blx 0x1f30 | loc_imp_apr_file_printf ()
| label_17:
0x00003be8 mov.w r8, 0 | r8 = 0;
0x00003bec b 0x39a2 | goto label_9;
| label_48:
0x00003bee ldr r4, [pc, 0xcc] |
0x00003bf0 add r4, pc | r4 = 0x78b2;
0x00003bf2 b 0x3992 | goto label_10;
| label_49:
0x00003bf4 ldr r4, [pc, 0xc8] |
0x00003bf6 mov.w r2, 0x194 | r2 = 0x194;
0x00003bfa add r4, pc | r4 = 0x78be;
0x00003bfc b 0x3996 | goto label_11;
| label_60:
0x00003bfe ldr r1, [pc, 0xc4] |
0x00003c00 mov r4, r0 | r4 = r0;
0x00003c02 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003c04 ldr r7, [sp, 0x18] | r7 = var_60h;
0x00003c06 ldr r0, [pc, 0xc0] |
0x00003c08 add r1, pc | r1 = 0x78d2;
0x00003c0a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003c0c movs r3, 3 | r3 = 3;
0x00003c0e str r1, [sp, 8] | var_50h_2 = r1;
0x00003c10 movw r1, 0x5f1 | r1 = 0x5f1;
0x00003c14 add r0, pc | r0 = 0x78e2;
0x00003c16 strd r4, r7, [sp] | __asm ("strd r4, r7, [sp]");
0x00003c1a blx 0x1e6c | fcn_00001e6c ();
0x00003c1e mov.w r1, 0x190 | r1 = 0x190;
0x00003c22 mov r0, r4 | r0 = r4;
0x00003c24 blx 0x1e9c | r0 = fcn_00001e9c ();
0x00003c28 mov r8, r0 | r8 = r0;
0x00003c2a b 0x39a2 | goto label_9;
| label_50:
0x00003c2c ldr r4, [pc, 0x9c] |
0x00003c2e movs r3, 0 | r3 = 0;
0x00003c30 add r4, pc | r4 = 0x7900;
0x00003c32 b 0x3992 | goto label_10;
| label_52:
0x00003c34 ldr r4, [pc, 0x98] |
0x00003c36 movs r3, 0 | r3 = 0;
0x00003c38 mov.w r2, 0x194 | r2 = 0x194;
0x00003c3c add r4, pc | r4 = 0x7910;
0x00003c3e b 0x3996 | goto label_11;
| label_64:
0x00003c40 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00003c42 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x00003c44 cmp r1, 0 |
| if (r1 != 0) {
0x00003c46 bne 0x3b54 | goto label_12;
| }
0x00003c48 ldr r1, [r7, 8] | r1 = *((r7 + 8));
| label_15:
0x00003c4a adds r1, 0x10 | r1 += 0x10;
0x00003c4c b 0x3b54 | goto label_12;
| label_46:
0x00003c4e mov.w r8, -1 | r8 = -1;
0x00003c52 b 0x39a2 | goto label_9;
| label_65:
0x00003cd4 ldrd r0, r5, [r7] | __asm ("ldrd r0, r5, [r7]");
0x00003cd8 subs r3, r6, 4 | r3 = r6 - 4;
0x00003cda str r3, [sp, 0x18] | var_60h = r3;
0x00003cdc ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003cde blx 0x1c34 | fcn_00001c34 ();
0x00003ce2 ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003ce4 mov r4, r0 | r4 = r0;
0x00003ce6 ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
0x00003cea blx 0x1b2c | r0 = fcn_00001b2c ();
0x00003cee mov r3, r0 | r3 = r0;
0x00003cf0 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00003cf2 adds r5, r4, 4 | r5 = r4 + 4;
0x00003cf4 str r5, [r3] | *(r3) = r5;
0x00003cf6 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003cf8 str r5, [sp, 0x10] | var_10h = r5;
0x00003cfa str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00003cfc ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003cfe str r3, [r2] | *(r2) = r3;
0x00003d00 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00003d02 blx 0x1ec4 | r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
0x00003d06 str r5, [r0] | *(r0) = r5;
0x00003d08 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003d0a ldr r1, [sp, 0x24] | r1 = var_24h;
0x00003d0c str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00003d0e ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003d10 ldr r3, [r1, 8] | r3 = *((r1 + 8));
0x00003d12 mov r1, r4 | r1 = r4;
0x00003d14 str r0, [r2] | *(r2) = r0;
0x00003d16 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00003d18 mov r0, r7 | r0 = r7;
0x00003d1a ldr r2, [sp, 0x18] | r2 = var_60h;
0x00003d1c blx 0x1ed0 | r0 = loc_imp_apr_signal ();
0x00003d20 mov r8, r0 | r8 = r0;
0x00003d22 cmp r0, 0 |
| if (r0 == 0) {
0x00003d24 beq.w 0x3f10 | goto label_68;
| }
0x00003d28 ldr.w r0, [r7, 0xb0] | r0 = *((r7 + 0xb0));
0x00003d2c blx 0x1af0 | r0 = fcn_00001af0 ();
0x00003d30 mov r2, r0 | r2 = r0;
0x00003d32 str r0, [sp, 0x14] | var_14h = r0;
0x00003d34 ldr.w r0, [fp] | r0 = *(fp);
0x00003d38 movs r3, 0 | r3 = 0;
0x00003d3a ldr.w sb, [r2, 0x10] | sb = *((r2 + 0x10));
0x00003d3e str r3, [r6, -0x84] | *((r6 - 0x84)) = r3;
0x00003d42 cmp r0, 0 |
| if (r0 == 0) {
0x00003d44 beq.w 0x3f80 | goto label_69;
| }
0x00003d48 add r3, sp, 0x88 | r3 += var_58h;
0x00003d4a add r1, sp, 0x50 | r1 += var_50h_3;
0x00003d4c str r3, [sp, 0x1c] | var_1ch_2 = r3;
0x00003d4e blx 0x1c70 | r0 = fcn_00001c70 ();
| if (r0 == 0) {
0x00003d52 cbnz r0, 0x3d62 |
0x00003d54 ldr r2, [r6, -0x4c] | r2 = *((r6 - 0x4c));
0x00003d58 ldr.w r3, [fp, 4] | r3 = *(arg_4h);
0x00003d5c cmp r2, r3 |
| if (r2 > r3) {
0x00003d5e bgt.w 0x3f80 | goto label_69;
| }
| }
0x00003d62 ldr r3, [r7] | r3 = *(r7);
0x00003d64 movs r2, 0xe | r2 = 0xe;
0x00003d66 ldr r0, [sp, 0x34] | r0 = var_4h;
0x00003d68 ldr.w r1, [fp] | r1 = *(fp);
0x00003d6c str r3, [sp] | *(sp) = r3;
0x00003d6e movw r3, 0xfff | r3 = 0xfff;
0x00003d72 subs r0, 4 | r0 -= 4;
0x00003d74 blx 0x1e0c | r0 = fcn_00001e0c ();
0x00003d78 mov fp, r0 |
0x00003d7a cmp r0, 0 |
| if (r0 != 0) {
0x00003d7c bne.w 0x3f80 | goto label_69;
| }
0x00003d80 sub.w r5, r6, 0x20 | r5 = r6 - 0x20;
0x00003d84 blx 0x1a2c | loc_imp_apr_time_now ();
0x00003d88 mov r3, r1 | r3 = r1;
0x00003d8a mov r2, r0 | r2 = r0;
0x00003d8c mov r0, r5 | r0 = r5;
0x00003d8e blx 0x1a20 | loc_imp_apr_ctime ();
0x00003d92 ldr.w r1, [r7, 0xf4] | r1 = *((r7 + 0xf4));
0x00003d96 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003d9a ldr r3, [r7, 0x4c] | r3 = *((r7 + 0x4c));
0x00003d9c ldr.w ip, [r7, 0xe4] | ip = *((r7 + 0xe4));
0x00003da0 cmp r1, 0 |
| if (r1 == 0) {
0x00003da2 beq.w 0x401c | goto label_70;
| }
0x00003da6 ldr r2, [pc, 0x2b4] |
0x00003da8 add r2, pc | r2 = 0x7e0a;
| label_24:
0x00003daa str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00003dae strd r2, r1, [sp, 4] | __asm ("strd r2, r1, [sp, 4]");
0x00003db2 mov r2, r5 | r2 = r5;
0x00003db4 ldr r1, [r7, 0x2c] | r1 = *((r7 + 0x2c));
0x00003db6 str r1, [sp, 0xc] | var_ch_2 = r1;
0x00003db8 ldr r1, [pc, 0x2a4] |
0x00003dba add r1, pc | r1 = 0x7e1e;
0x00003dbc blx 0x1f3c | strncmp (r0, r1, r2);
0x00003dc0 ldr r1, [pc, 0x2a0] |
0x00003dc2 mov r2, r8 | r2 = r8;
0x00003dc4 ldr.w r3, [r7, 0xe8] | r3 = *((r7 + 0xe8));
0x00003dc8 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003dcc add r1, pc | r1 = 0x7e34;
0x00003dce blx 0x1f3c | strncmp (r0, r1, r2);
0x00003dd2 ldr r0, [pc, 0x294] |
0x00003dd4 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003dd8 add r0, pc | r0 = 0x7e46;
0x00003dda blx 0x1e30 | fcn_00001e30 ();
0x00003dde ldr r3, [sp, 0x14] | r3 = var_14h;
0x00003de0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00003de2 cmp r3, 0 |
| if (r3 <= 0) {
0x00003de4 ble 0x3e14 | goto label_71;
| }
0x00003de6 ldr r1, [pc, 0x284] |
0x00003de8 add.w r5, sb, 4 | r5 = sb + 4;
0x00003dec mov.w sb, 0 | sb = 0;
0x00003df0 add r1, pc | r1 = 0x7e62;
| do {
0x00003df2 ldr r2, [r5, -0x4] | r2 = *((r5 - 0x4));
| if (r2 != 0) {
0x00003df6 cbz r2, 0x3e0a |
0x00003df8 ldr r3, [r5] | r3 = *(r5);
0x00003dfa ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003dfe str r1, [sp, 0x20] | var_20h_2 = r1;
0x00003e00 blx 0x1f3c | strncmp (r0, r1, r2);
0x00003e04 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00003e06 ldr r1, [sp, 0x20] | r1 = var_20h_2;
0x00003e08 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| }
0x00003e0a add.w sb, sb, 1 | sb++;
0x00003e0e adds r5, 0xc | r5 += 0xc;
0x00003e10 cmp sb, r3 |
0x00003e12 blt 0x3df2 |
| } while (sb < r3);
| label_71:
0x00003e14 ldr r3, [r7, 0x48] | r3 = *((r7 + 0x48));
0x00003e16 subs r3, 1 | r3--;
0x00003e18 cmp r3, 1 |
| if (r3 < 1) {
0x00003e1a bls.w 0x4002 | goto label_72;
| }
| label_23:
0x00003e1e ldr r0, [pc, 0x250] |
0x00003e20 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003e22 adds r4, r0, 2 | r4 = r0 + 2;
0x00003e24 add r0, pc | r0 = 0x7e9a;
0x00003e26 blx 0x1e30 | fcn_00001e30 ();
0x00003e2a ldr.w r0, [r7, 0xb8] | r0 = *((r7 + 0xb8));
0x00003e2e blx 0x1af0 | fcn_00001af0 ();
0x00003e32 ldr r3, [r0, 8] | r3 = *(0x7ea2);
0x00003e34 mov sb, r0 | sb = r0;
0x00003e36 ldr r5, [r0, 0x10] | r5 = *(0x7eaa);
0x00003e38 cmp r3, 0 |
| if (r3 <= 0) {
0x00003e3a ble 0x3e64 | goto label_73;
| }
0x00003e3c ldr r1, [pc, 0x234] |
0x00003e3e adds r5, 4 | r5 += 4;
0x00003e40 add r1, pc | r1 = 0x7eb8;
| do {
0x00003e42 ldr r2, [r5, -0x4] | r2 = *((r5 - 0x4));
| if (r2 != 0) {
0x00003e46 cbz r2, 0x3e5a |
0x00003e48 ldr r3, [r5] | r3 = *(r5);
0x00003e4a ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003e4e str r1, [sp, 0x14] | var_14h = r1;
0x00003e50 blx 0x1f3c | strncmp (r0, r1, r2);
0x00003e54 ldr.w r3, [sb, 8] | r3 = *((sb + 8));
0x00003e58 ldr r1, [sp, 0x14] | r1 = var_14h;
| }
0x00003e5a add.w fp, fp, 1 |
0x00003e5e adds r5, 0xc | r5 += 0xc;
0x00003e60 cmp fp, r3 |
0x00003e62 blt 0x3e42 |
| } while (fp < r3);
| label_73:
0x00003e64 ldrb r3, [r6, -0x4] | r3 = *((r6 - 0x4));
0x00003e68 cmp r3, 0 |
| if (r3 != 0) {
0x00003e6a bne.w 0x4024 | goto label_74;
| }
| label_25:
0x00003e6e ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00003e70 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00003e72 cmp r3, r4 |
| if (r3 == r4) {
0x00003e74 beq.w 0x3fe6 | goto label_75;
| }
0x00003e78 ldr r3, [sp, 0x1c] | r3 = var_1ch_2;
0x00003e7a mov.w sb, 1 | sb = 1;
0x00003e7e sub.w r5, r3, 0x3c | r5 = r3 - 0x3c;
0x00003e82 ldr r3, [pc, 0x1f4] |
0x00003e84 mov fp, r5 |
0x00003e86 add r3, pc | r3 = 0x7f04;
0x00003e88 str r3, [sp, 0x18] | var_60h = r3;
0x00003e8a ldr r3, [pc, 0x1f0] |
0x00003e8c add r3, pc | r3 = 0x7f0e;
0x00003e8e str r3, [sp, 0x14] | var_14h = r3;
0x00003e90 b 0x3eb8 |
| while (sb == 0) {
| label_13:
0x00003e92 movs r3, 0 | r3 = 0;
0x00003e94 ldr r1, [r6, -0x80] | r1 = *((r6 - 0x80));
0x00003e98 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003e9c blx 0x1b8c | fcn_00001b8c ();
0x00003ea0 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003ea4 ldr r0, [sp, 0x14] | r0 = var_14h;
0x00003ea6 blx 0x1e30 | fcn_00001e30 ();
0x00003eaa ldr r4, [r4] | r4 = *(r4);
0x00003eac ldr r3, [sp, 0x10] | r3 = var_10h;
0x00003eae cmp r3, r4 |
| if (r3 == r4) {
0x00003eb0 beq.w 0x3fe6 | goto label_75;
| }
0x00003eb4 mov.w sb, 0 | sb = 0;
0x00003eb8 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003eba cmp r3, sl |
| if (r3 == sl) {
0x00003ebc beq.w 0x3fe6 | goto label_75;
| }
0x00003ec0 ldr r5, [r3, 0x10] | r5 = *((r3 + 0x10));
0x00003ec2 mov r2, fp | r2 = fp;
0x00003ec4 ldr r1, [sp, 0x34] | r1 = var_4h;
0x00003ec6 movs r3, 0 | r3 = 0;
0x00003ec8 mov r0, r4 | r0 = r4;
0x00003eca blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00003ecc cmp r0, 0 |
| if (r0 != 0) {
0x00003ece bne.w 0x3fe6 | goto label_75;
| }
0x00003ed2 ldr r2, [r6, -0x7c] | r2 = *((r6 - 0x7c));
0x00003ed6 cmp r2, 0 |
| if (r2 == 0) {
0x00003ed8 beq.w 0x3fe6 | goto label_75;
| }
0x00003edc cmp.w sb, 0 |
0x00003ee0 beq 0x3e92 |
| }
0x00003ee2 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003ee6 ldr r0, [sp, 0x18] | r0 = var_60h;
0x00003ee8 blx 0x1e30 | fcn_00001e30 ();
0x00003eec ldr r2, [r6, -0x7c] | r2 = *((r6 - 0x7c));
0x00003ef0 b 0x3e92 | goto label_13;
| label_56:
0x00003ef2 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00003ef4 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x00003ef6 cmp r1, 0 |
| if (r1 != 0) {
0x00003ef8 bne.w 0x393c | goto label_14;
| }
0x00003efc ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00003efe ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00003f00 cmp r3, 0 |
| if (r3 == 0) {
0x00003f02 beq.w 0x3c4a | goto label_15;
| }
0x00003f06 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003f08 cmp r3, 0 |
| if (r3 >= 0) {
0x00003f0a bge.w 0x394c | goto label_16;
| }
0x00003f0e b 0x3c4a | goto label_15;
| label_68:
0x00003f10 ldr r1, [pc, 0x16c] |
0x00003f12 ldr.w r0, [r7, 0xb4] | r0 = *((r7 + 0xb4));
0x00003f16 add r1, pc | r1 = 0x7f9a;
0x00003f18 blx 0x1ab4 | r0 = fcn_00001ab4 ();
0x00003f1c mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00003f1e cbz r0, 0x3f2e |
0x00003f20 ldrb r2, [r0] | r2 = *(r0);
0x00003f22 ldr r3, [r7, 0x44] | r3 = *((r7 + 0x44));
0x00003f24 cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x00003f26 beq 0x3fb6 | goto label_76;
| }
0x00003f28 cmp r3, 0xc8 |
| if (r3 == 0xc8) {
0x00003f2a beq.w 0x4034 | goto label_77;
| }
| }
| label_20:
0x00003f2e mov r1, r4 | r1 = r4;
0x00003f30 ldr.w r0, [r7, 0x114] | r0 = *((r7 + 0x114));
0x00003f34 blx 0x1f30 | r0 = loc_imp_apr_file_printf ()
0x00003f38 mov r4, r0 | r4 = r0;
0x00003f3a cmp r0, 0 |
| if (r0 == 0) {
0x00003f3c beq.w 0x3be8 | goto label_17;
| }
0x00003f40 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003f42 ldr.w r1, [r7, 0x108] | r1 = *((r7 + 0x108));
0x00003f46 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003f48 cmp r2, 0 |
| if (r2 < 0) {
0x00003f4a blt 0x3ff0 | goto label_78;
| }
| if (r1 == 0) {
0x00003f4c cbz r1, 0x3f96 | goto label_79;
| }
0x00003f4e ldr r3, [r1] | r3 = *(r1);
| if (r3 == 0) {
0x00003f50 cbz r3, 0x3faa | goto label_22;
| }
0x00003f52 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003f54 cmp r3, 0 |
| if (r3 < 0) {
0x00003f56 blt 0x3faa | goto label_22;
| }
| label_18:
0x00003f58 cmp r3, 7 |
0x00003f5a ite le |
| if (r3 > 7) {
0x00003f5c movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x00003f5e movgt r3, 1 | r3 = 1;
| }
| label_19:
0x00003f60 cmp r3, 0 |
| if (r3 == 0) {
0x00003f62 beq.w 0x3be8 | goto label_17;
| }
0x00003f66 ldr r5, [pc, 0x11c] |
0x00003f68 movs r3, 8 | r3 = 8;
0x00003f6a ldr r0, [pc, 0x11c] |
0x00003f6c movw r1, 0x687 | r1 = 0x687;
0x00003f6e str r7, [r0, 0x18] | *((r0 + 0x18)) = r7;
0x00003f70 strd r4, r7, [sp] | __asm ("strd r4, r7, [sp]");
0x00003f74 add r5, pc | r5 = 0x7ffe;
0x00003f76 add r0, pc | r0 = 0x8004;
0x00003f78 str r5, [sp, 8] | var_50h_2 = r5;
0x00003f7a blx 0x1e6c | fcn_00001e6c ();
0x00003f7e b 0x3be8 | goto label_17;
| label_69:
0x00003f80 mov r0, r4 | r0 = r4;
0x00003f82 bl 0x2088 | fcn_00002088 (r0);
| label_21:
0x00003f86 cmp.w r8, 0x130 |
0x00003f8a it eq |
| if (r8 == 0x130) {
0x00003f8c streq r8, [r7, 0x44] | *((r7 + 0x44)) = r8;
| goto label_80;
| }
| if (r8 != 0x130) {
| label_80:
0x00003f90 bne.w 0x39a2 | goto label_9;
| }
0x00003f94 b 0x3be8 | goto label_17;
| label_79:
0x00003f96 ldr r1, [r7, 4] | r1 = *((r7 + 4));
0x00003f98 ldr r3, [r1, 0x60] | r3 = *((r1 + 0x60));
0x00003f9a cmp r3, 0 |
| if (r3 == 0) {
0x00003f9c beq 0x4046 | goto label_81;
| }
0x00003f9e ldr r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x00003fa0 cbz r3, 0x3fa8 | goto label_82;
| }
0x00003fa2 ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003fa4 cmp r3, 0 |
| if (r3 >= 0) {
0x00003fa6 bge 0x3f58 | goto label_18;
| }
| label_82:
0x00003fa8 ldr r1, [r1, 0x60] | r1 = *((r1 + 0x60));
| label_22:
0x00003faa ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00003fac cmp r3, 7 |
0x00003fae ite le |
| if (r3 > 7) {
0x00003fb0 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x00003fb2 movgt r3, 1 | r3 = 1;
| }
0x00003fb4 b 0x3f60 | goto label_19;
| label_76:
0x00003fb6 cmp r3, 0xc8 |
| if (r3 != 0xc8) {
0x00003fb8 bne 0x3f2e | goto label_20;
| }
0x00003fba mov r0, r4 | r0 = r4;
0x00003fbc bl 0x2088 | fcn_00002088 (r0);
0x00003fc0 mov r0, r4 | r0 = r4;
0x00003fc2 blx 0x1c10 | fcn_00001c10 ();
0x00003fc6 ldr r3, [pc, 0xc4] |
0x00003fc8 ldr r1, [pc, 0xc4] |
0x00003fca ldr.w r0, [r7, 0xb0] | r0 = *((r7 + 0xb0));
0x00003fce add r3, pc | r3 = 0x8060;
0x00003fd0 str.w r8, [r7, 0x48] | __asm ("str.w r8, [r7, 0x48]");
0x00003fd4 add r1, pc | r1 = 0x8068;
0x00003fd6 str r3, [r7, 0x4c] | *((r7 + 0x4c)) = r3;
0x00003fd8 blx 0x1bb0 | fcn_00001bb0 ();
0x00003fdc mov r1, r7 | r1 = r7;
0x00003fde mov r0, r5 | r0 = r5;
0x00003fe0 blx 0x1b50 | fcn_00001b50 ();
0x00003fe4 b 0x3be8 | goto label_17;
| label_75:
0x00003fe6 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003fea blx 0x1c88 | fcn_00001c88 ();
0x00003fee b 0x3f86 | goto label_21;
| label_78:
0x00003ff0 cmp r1, 0 |
| if (r1 != 0) {
0x00003ff2 bne 0x3faa | goto label_22;
| }
0x00003ff4 ldr r3, [r7, 4] | r3 = *((r7 + 4));
0x00003ff6 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
0x00003ff8 cmp r1, 0 |
| if (r1 != 0) {
0x00003ffa bne 0x3faa | goto label_22;
| }
0x00003ffc ldr r1, [r7, 8] | r1 = *((r7 + 8));
| label_26:
0x00003ffe adds r1, 0x10 | r1 += 0x10;
0x00004000 b 0x3faa | goto label_22;
| label_72:
0x00004002 ldr r3, [sp, 0x28] | r3 = n;
0x00004004 ldrb r3, [r3] | r3 = *(r3);
0x00004006 cmp r3, 0 |
| if (r3 == 0) {
0x00004008 beq.w 0x3e1e | goto label_23;
| }
0x0000400c ldr r1, [pc, 0x84] |
0x0000400e ldr r2, [sp, 0x28] | r2 = n;
0x00004010 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00004014 add r1, pc | r1 = 0x80ac;
0x00004016 blx 0x1f3c | strncmp (r0, r1, r2);
0x0000401a b 0x3e1e | goto label_23;
| label_70:
0x0000401c ldr r2, [pc, 0x78] |
0x0000401e add r2, pc | r2 = 0x80ba;
0x00004020 mov r1, r2 | r1 = r2;
0x00004022 b 0x3daa | goto label_24;
| label_74:
0x00004024 ldr r1, [pc, 0x74] |
0x00004026 ldr r2, [sp, 0x18] | r2 = var_60h;
0x00004028 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x0000402c add r1, pc | r1 = 0x80cc;
0x0000402e blx 0x1f3c | strncmp (r0, r1, r2);
0x00004032 b 0x3e6e | goto label_25;
| label_77:
0x00004034 mov r0, r4 | r0 = r4;
0x00004036 mov.w r8, 0x12e | r8 = 0x12e;
0x0000403a bl 0x2088 | fcn_00002088 (r0);
0x0000403e mov r0, r4 | r0 = r4;
0x00004040 blx 0x1c10 | fcn_00001c10 ();
0x00004044 b 0x39a2 | goto label_9;
| label_81:
0x00004046 ldr r1, [r7, 8] | r1 = *((r7 + 8));
0x00004048 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x0000404a cmp r3, 0 |
| if (r3 == 0) {
0x0000404c beq 0x3ffe | goto label_26;
| }
0x0000404e ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00004050 cmp r3, 0 |
| if (r3 >= 0) {
0x00004052 bge 0x3f58 | goto label_18;
| }
0x00004054 b 0x3ffe | goto label_26;
| label_59:
0x00004056 blx 0x1b20 | fcn_00001b20 ();
0x0000405a nop |
0x0000405c lsrs r4, r1, 5 | r4 = r1 >> 5;
0x0000405e movs r0, r0 |
0x00004060 lsrs r6, r0, 6 | r6 = r0 >> 6;
0x00004062 movs r0, r0 |
0x00004064 lsrs r4, r1, 6 | r4 = r1 >> 6;
0x00004066 movs r0, r0 |
0x00004068 asrs r4, r3, 4 | r4 = r3 >> 4;
0x0000406a movs r0, r0 |
0x0000406c asrs r0, r2, 4 | r0 = r2 >> 4;
0x0000406e movs r0, r0 |
0x00004070 asrs r4, r5, 3 | r4 = r5 >> 3;
0x00004072 movs r0, r0 |
0x00004074 asrs r0, r0, 3 | r0 >>= 3;
0x00004076 movs r0, r0 |
0x00004078 asrs r6, r2, 2 | r6 = r2 >> 2;
0x0000407a movs r0, r0 |
0x0000407c asrs r0, r6, 1 | r0 = r6 >> 1;
0x0000407e movs r0, r0 |
0x00004080 asrs r2, r2, 0x20 | r2 >>= 0x20;
0x00004082 movs r0, r0 |
0x00004084 lsrs r4, r2, 0x1f | r4 = r2 >> 0x1f;
0x00004086 movs r0, r0 |
0x00004088 lsls r2, r0, 0x1e | r2 = r0 << 0x1e;
0x0000408a movs r0, r0 |
0x0000408c lsrs r6, r4, 0x1d | r6 = r4 >> 0x1d;
0x0000408e movs r0, r0 |
0x00004090 lsrs r4, r4, 0x1d | r4 >>= 0x1d;
0x00004092 movs r0, r0 |
0x00004094 lsrs r4, r6, 0x1b | r4 = r6 >> 0x1b;
0x00004096 movs r0, r0 |
0x00004098 lsrs r6, r5, 0x1b | r6 = r5 >> 0x1b;
0x0000409a movs r0, r0 |
0x0000409c lsls r0, r0, 0x1d | r0 <<= 0x1d;
0x0000409e movs r0, r0 |
0x000040a0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000040a4 mov fp, r1 |
0x000040a6 ldr.w r1, [pc, 0x534] |
0x000040aa sub.w sp, sp, 0x2040 |
0x000040ae sub sp, 0x24 |
0x000040b0 mov r8, r2 | r8 = r2;
0x000040b2 ldr.w r2, [pc, 0x52c] | r2 = *(0x45e2);
0x000040b6 mov r6, r0 | r6 = r0;
0x000040b8 add r1, pc | r1 = 0x869a;
0x000040ba add.w r0, sp, 0x2040 | r0 += arg_2040h;
0x000040be str r1, [sp, 0x24] | var_24h_2 = r1;
0x000040c0 mov r4, r1 | r4 = r1;
0x000040c2 ldr.w r1, [pc, 0x520] |
0x000040c6 adds r0, 0x1c | r0 += 0x1c;
0x000040c8 movs r3, 0 | r3 = 0;
0x000040ca add r5, sp, 0x60 | r5 += var_60h;
0x000040cc add r1, pc | r1 = 0x86b6;
0x000040ce ldr r2, [r1, r2] |
0x000040d0 ldr r1, [r6, 0x14] | r1 = *((r6 + 0x14));
0x000040d2 ldr r2, [r2] | r2 = *(0x86b6);
0x000040d4 str r2, [r0] | *(r0) = r2;
0x000040d6 mov.w r2, 0 | r2 = 0;
0x000040da ldr.w r0, [fp, 0xc] | r0 = *(arg_ch);
0x000040de ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x000040e0 strd r3, r3, [r5, -0x14] | __asm ("strd r3, r3, [r5, -0x14]");
0x000040e4 ldr.w r7, [r0, 0xe8] | r7 = *((r0 + 0xe8));
0x000040e8 and r3, r2, 1 | r3 = r2 & 1;
0x000040ec str r0, [sp, 0x40] | var_40h = r0;
0x000040ee cmp r1, 0 |
| if (r1 != 0) {
0x000040f0 bne.w 0x439c | goto label_83;
| }
0x000040f4 ldr.w r2, [pc, 0x4f0] |
0x000040f8 rsb.w r3, r3, 4 | r3 = 4 - r3;
0x000040fc ldr r2, [r4, r2] | r2 = *((r4 + r2));
0x000040fe str r1, [sp] | *(sp) = r1;
0x00004100 ldr.w r1, [pc, 0x4e8] |
0x00004104 str r0, [sp, 4] | var_4h_2 = r0;
0x00004106 ldr.w r0, [pc, 0x4e8] |
0x0000410a add r1, pc | r1 = 0x86fa;
0x0000410c str r7, [sp, 0xc] | var_ch = r7;
0x0000410e ldr r2, [r2, 8] | r2 = *(0x45f0);
0x00004110 add r0, pc | r0 = 0x8706;
0x00004112 str r1, [sp, 8] | var_8h_2 = r1;
0x00004114 movw r1, 0x74f | r1 = 0x74f;
0x00004116 strb r7, [r1, 5] | *((r1 + 5)) = r7;
0x00004118 blx 0x1e6c | fcn_00001e6c ();
0x0000411c ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0000411e lsls r1, r2, 0x1f | r1 = r2 << 0x1f;
| if (r1 >= r2) {
0x00004120 bpl.w 0x4374 | goto label_84;
| }
0x00004124 ldr r3, [r6, 0x14] | r3 = *((r6 + 0x14));
0x00004126 cmp r3, 0 |
| if (r3 == 0) {
0x00004128 beq.w 0x433e | goto label_35;
| }
0x0000412c lsls r3, r2, 0x1c | r3 = r2 << 0x1c;
| if (r3 < r2) {
0x0000412e bmi.w 0x455e | goto label_85;
| }
| label_27:
0x00004132 ldr.w r3, [pc, 0x4c0] |
0x00004136 mov sb, r6 | sb = r6;
0x00004138 ldr.w sl, [pc, 0x4bc] |
0x0000413c str r7, [sp, 0x44] | var_44h = r7;
0x0000413e add r3, pc | r3 = 0x8738;
0x00004140 str.w r8, [sp, 0x28] | __asm ("str.w r8, [var_28h]");
0x00004144 str r3, [sp, 0x20] | s2 = r3;
0x00004146 add sl, pc | sl = 0x8742;
0x00004148 ldr.w r3, [pc, 0x4b0] |
0x0000414c add r3, pc | r3 = 0x874c;
0x0000414e str r3, [sp, 0x3c] | var_3ch = r3;
0x00004150 add r3, sp, 0x50 | r3 += var_50h_2;
0x00004152 str r3, [sp, 0x18] | var_18h = r3;
0x00004154 add r3, sp, 0x4c | r3 += var_4ch_2;
0x00004156 str r3, [sp, 0x1c] | var_1ch = r3;
| do {
| label_29:
0x00004158 ldr.w r4, [sl, 0x28] | r4 = *((sl + 0x28));
0x0000415c movs r3, 1 | r3 = 1;
0x0000415e ldrd r2, r1, [sp, 0x18] | __asm ("ldrd r2, r1, [var_18h]");
0x00004162 mov r0, sb | r0 = sb;
0x00004164 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t) (r0, r2, r3);
0x00004166 ldr r7, [r5, -0x14] | r7 = *((r5 - 0x14));
0x0000416a cmp r7, 0 |
| if (r7 == 0) {
0x0000416c beq.w 0x4374 | goto label_84;
| }
0x00004170 ldr r4, [r5, -0x10] | r4 = *((r5 - 0x10));
0x00004174 cmp r4, 0 |
| if (r4 == 0) {
0x00004176 beq.w 0x4374 | goto label_84;
| }
0x0000417a ldr r1, [sp, 0x20] | r1 = s2;
0x0000417c mov r0, r7 | r0 = r7;
0x0000417e blx 0x19fc | r0 = strcmp (r0, r1);
0x00004182 mov r6, r0 | r6 = r0;
0x00004184 cmp r0, 0 |
| if (r0 != 0) {
0x00004186 bne.w 0x43d0 | goto label_86;
| }
0x0000418a subs r3, r5, 4 | r3 = r5 - 4;
0x0000418c mov.w r8, 1 | r8 = 1;
0x00004190 mov r1, r4 | r1 = r4;
0x00004192 mov r2, r3 | r2 = r3;
0x00004194 str r3, [sp, 0x38] | var_38h = r3;
0x00004196 mov r0, sb | r0 = sb;
0x00004198 mov.w r3, 0x2000 | r3 = 0x2000;
0x0000419c str.w r8, [sp] | __asm ("str.w r8, [sp]");
0x000041a0 ldr.w r4, [sl, 0x2c] | r4 = *((sl + 0x2c));
0x000041a4 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000041a6 ldr.w r4, [fp, 0xc] | r4 = *(arg_ch);
0x000041aa ldr.w r3, [pc, 0x43c] | r3 = *(0x45ea);
0x000041ae ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x000041b0 str r6, [r5, -0x8] | *((r5 - 0x8)) = r6;
0x000041b4 ldr.w r1, [r4, 0xf0] | r1 = *((r4 + 0xf0));
0x000041b8 ldr r0, [r2, r3] | r0 = *((r2 + r3));
0x000041ba ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x000041bc str r0, [sp, 0x30] | var_30h_2 = r0;
0x000041be ldr r2, [r3, 0x18] | r2 = *(0x4602);
0x000041c0 ldr r3, [r0, 8] | r3 = *((r0 + 8));
0x000041c2 ldr.w r7, [r2, r3, lsl 2] | r7 = *(0x4602);
0x000041c6 ldr.w r2, [r4, 0x100] | r2 = *((r4 + 0x100));
0x000041ca ldr.w r3, [r2, r3, lsl 2] | r3 = *(0x4602);
0x000041ce str r3, [sp, 0x34] | var_34h = r3;
0x000041d0 ldr.w r3, [r4, 0xbc] | r3 = *((r4 + 0xbc));
0x000041d4 str r3, [sp, 0x2c] | var_2ch_2 = r3;
| if (r1 != 0) {
0x000041d6 cbz r1, 0x41e0 |
0x000041d8 ldrb r3, [r1] | r3 = *(r1);
0x000041da cmp r3, 0 |
| if (r3 != 0) {
0x000041dc bne.w 0x447e | goto label_87;
| }
| }
| label_31:
0x000041e0 ldr.w r1, [r4, 0xf4] | r1 = *((r4 + 0xf4));
| if (r1 != 0) {
0x000041e4 cbz r1, 0x421c |
0x000041e6 ldr r0, [r4] | r0 = *(r4);
0x000041e8 blx 0x1cdc | fcn_00001cdc ();
0x000041ec ldr.w r8, [sp, 0x2c] | r8 = var_2ch_2;
0x000041f0 mov r6, r0 | r6 = r0;
0x000041f2 ldr.w r1, [pc, 0x40c] |
0x000041f6 ldr.w r2, [r4, 0xf4] | r2 = *((r4 + 0xf4));
0x000041fa mov r0, r8 | r0 = r8;
0x000041fc add r1, pc | r1 = 0x8802;
0x000041fe blx 0x1c7c | fcn_00001c7c ();
0x00004202 mov r0, r6 | r0 = r6;
0x00004204 blx 0x1c4c | fcn_00001c4c ();
0x00004208 mov r1, r6 | r1 = r6;
0x0000420a ldr r0, [r4] | r0 = *(r4);
0x0000420c blx 0x1b38 | fcn_00001b38 ();
0x00004210 ldr r1, [pc, 0x3f0] |
0x00004212 mov r2, r0 | r2 = r0;
0x00004214 mov r0, r8 | r0 = r8;
0x00004216 add r1, pc | r1 = 0x881e;
0x00004218 blx 0x1c7c | fcn_00001c7c ();
| }
0x0000421c ldr.w r1, [r4, 0xbc] | r1 = *((r4 + 0xbc));
0x00004220 sub.w r8, r5, 0xc | r8 = r5 - 0xc;
0x00004224 ldr r0, [r4] | r0 = *(r4);
0x00004226 blx 0x1ef4 | loc_imp_ap_hook_get_suexec_identity ();
0x0000422a mov r2, r7 | r2 = r7;
0x0000422c mov r6, r0 | r6 = r0;
0x0000422e mov r1, r4 | r1 = r4;
0x00004230 mov r0, r8 | r0 = r8;
0x00004232 bl 0x2290 | r0 = fcn_00002290 (r0, r1, r2, r3);
0x00004236 cmp r0, 0 |
| if (r0 != 0) {
0x00004238 bne 0x430c | goto label_88;
| }
0x0000423a movs r1, 2 | r1 = 2;
0x0000423c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000423e mov r3, r6 | r3 = r6;
0x00004240 str r1, [sp] | *(sp) = r1;
0x00004242 mov r1, r4 | r1 = r4;
0x00004244 ldr r0, [r5, -0xc] | r0 = *((r5 - 0xc));
0x00004248 bl 0x35e4 | fcn_000035e4 (r0, r1, r2, r3, r4, r5, r6);
0x0000424c movs r1, 0xc | r1 = 0xc;
0x0000424e ldr r0, [r4] | r0 = *(r4);
0x00004250 blx 0x1c04 | r0 = fcn_00001c04 ();
0x00004254 mov r2, r0 | r2 = r0;
0x00004256 str r7, [r0, 4] | *((r0 + 4)) = r7;
0x00004258 mov r6, r0 | r6 = r0;
0x0000425a mov r1, r7 | r1 = r7;
0x0000425c mov r0, r4 | r0 = r4;
0x0000425e str r4, [r2], 8 | *(r2) = r4;
| r2 += 8;
0x00004262 bl 0x3540 | r0 = fcn_00003540 (r0, r1, r2);
0x00004266 cmp r0, 0 |
| if (r0 == 0) {
0x00004268 beq.w 0x44da | goto label_89;
| }
0x0000426c ldr r3, [sp, 0x30] | r3 = var_30h_2;
0x0000426e ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00004270 ldr.w r3, [r4, 0x108] | r3 = *((r4 + 0x108));
0x00004274 cmp r2, 0 |
| if (r2 < 0) {
0x00004276 blt.w 0x43a8 | goto label_90;
| }
0x0000427a cmp r3, 0 |
| if (r3 == 0) {
0x0000427c beq.w 0x458a | goto label_91;
| }
| label_36:
0x00004280 ldr r1, [r3] | r1 = *(r3);
0x00004282 cmp r1, 0 |
| if (r1 == 0) {
0x00004284 beq.w 0x43ae | goto label_34;
| }
0x00004288 ldrsb r1, [r1, r2] | r1 = *((r1 + r2));
0x0000428a cmp r1, 0 |
| if (r1 < 0) {
0x0000428c blt.w 0x43ae | goto label_34;
| }
| label_37:
0x00004290 cmp r1, 6 |
| if (r1 > 6) {
0x00004292 bgt.w 0x43b6 | goto label_92;
| }
| label_28:
0x00004296 ldr r3, [pc, 0x370] | r3 = *(0x460a);
0x00004298 ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x0000429a ldr r7, [r2, r3] | r7 = *((r2 + r3));
| label_32:
0x0000429c ldr r2, [pc, 0x36c] |
0x0000429e mov r3, r7 | r3 = r7;
0x000042a0 ldr r0, [r4] | r0 = *(r4);
0x000042a2 mov r1, r6 | r1 = r6;
0x000042a4 add r2, pc | r2 = 0x88b4;
0x000042a6 blx 0x1bd4 | fcn_00001bd4 ();
0x000042aa mov r1, r8 | r1 = r8;
0x000042ac ldr r3, [r4] | r3 = *(r4);
0x000042ae movs r2, 1 | r2 = 1;
0x000042b0 sub.w r0, r5, 8 | r0 = r5 - 8;
0x000042b4 blx 0x1a84 | fcn_00001a84 ();
0x000042b8 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000042ba ldrd r2, r3, [r3] | __asm ("ldrd r2, r3, [r3]");
0x000042be cmp r2, 1 |
0x000042c0 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x000042c4 itett lt |
| if (r2 >= 1) {
0x000042c6 ldrlt r3, [r4, 8] | r3 = *((r4 + 8));
| }
| if (r2 < 1) {
0x000042c8 ldrge r0, [r5, -0x8] | r0 = *((r5 - 0x8));
| }
| if (r2 >= 1) {
0x000042cc ldrlt r0, [r5, -0x8] | r0 = *((r5 - 0x8));
| }
| if (r2 < 1) {
0x000042d0 ldrd r2, r3, [r3, 0x40] | __asm ("ldrd r2, r3, [r3, 0x40]");
| }
0x000042d4 blx 0x1d30 | fcn_00001d30 ();
0x000042d8 ldr r2, [pc, 0x334] |
0x000042da ldr r0, [r4] | r0 = *(r4);
0x000042dc ldr r1, [r5, -0xc] | r1 = *((r5 - 0xc));
0x000042e0 add r2, pc | r2 = 0x88f4;
0x000042e2 blx 0x1b14 | fcn_00001b14 ();
0x000042e6 ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x000042ea ldr r0, [r5, -0x8] | r0 = *((r5 - 0x8));
0x000042ee ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x000042f0 blx 0x1b2c | fcn_00001b2c ();
0x000042f4 ldr r2, [sp, 0x28] | r2 = var_28h;
0x000042f6 adds r3, r2, 4 | r3 = r2 + 4;
0x000042f8 str r3, [r0] | *(r0) = r3;
0x000042fa ldr r3, [r2, 8] | r3 = *(0x88fc);
0x000042fc str r3, [r0, 4] | *((r0 + 4)) = r3;
0x000042fe ldr r3, [r2, 8] | r3 = *(0x88fc);
0x00004300 str r0, [r3] | *(r3) = r0;
0x00004302 movs r3, 1 | r3 = 1;
0x00004304 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x00004306 str.w r3, [sb, 0x10] | __asm ("str.w r3, [sb, 0x10]");
0x0000430a b 0x4158 |
| } while (1);
| label_88:
0x0000430c ldr r0, [pc, 0x304] |
0x0000430e mov r6, sb | r6 = sb;
0x00004310 ldr r4, [sp, 0x40] | r4 = var_40h;
0x00004312 ldr r3, [sp, 0x30] | r3 = var_30h_2;
0x00004314 add r0, pc | r0 = 0x892c;
0x00004316 ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x0000431a ldr.w r1, [r4, 0xe8] | r1 = *((r4 + 0xe8));
0x0000431e ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00004320 ldr r3, [r5, -0x14] | r3 = *((r5 - 0x14));
0x00004324 str r0, [sp, 8] | var_8h_2 = r0;
0x00004326 ldr r0, [pc, 0x2f0] |
0x00004328 strd r3, r1, [sp, 0xc] | __asm ("strd r3, r1, [sp, 0xc]");
0x0000432c movs r3, 3 | r3 = 3;
0x0000432e movw r1, 0x774 | r1 = 0x774;
0x00004332 str r4, [sp, 4] | var_4h_2 = r4;
0x00004334 add r0, pc | r0 = 0x8952;
0x00004336 movs r4, 0 | r4 = 0;
0x00004338 str r4, [sp] | *(sp) = r4;
| label_30:
0x0000433a blx 0x1e6c | fcn_00001e6c ();
| label_35:
0x0000433e ldr r1, [r6, 0x18] | r1 = *((r6 + 0x18));
0x00004340 ldr r0, [r6] | r0 = *(r6);
0x00004342 blx 0x1cdc | r0 = fcn_00001cdc ();
0x00004346 mov r4, r0 | r4 = r0;
0x00004348 ldr r0, [r6, 0x18] | r0 = *((r6 + 0x18));
0x0000434a blx 0x1cd0 | fcn_00001cd0 ();
0x0000434e ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x00004352 mov r1, r0 | r1 = r0;
0x00004354 ldr r2, [r6] | r2 = *(r6);
0x00004356 mov r0, r4 | r0 = r4;
0x00004358 ldr r3, [r3, 0x40] | r3 = *((r3 + 0x40));
0x0000435a blx 0x19cc | loc_imp_apr_bucket_pool_create ();
0x0000435e add.w r3, r8, 4 | r3 = r8 + 4;
0x00004362 str r3, [r0] | *(r0) = r3;
0x00004364 ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x00004368 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x0000436a ldr.w r3, [r8, 8] | r3 = *((r8 + 8));
0x0000436e str r0, [r3] | *(r3) = r0;
0x00004370 str.w r0, [r8, 8] | __asm ("str.w r0, [r8, 8]");
| do {
| label_84:
0x00004374 ldr r2, [pc, 0x2a4] |
0x00004376 add.w r1, sp, 0x2040 | r1 += arg_2040h;
0x0000437a ldr r3, [pc, 0x264] | r3 = *(0x45e2);
0x0000437c adds r1, 0x1c | r1 += 0x1c;
0x0000437e add r2, pc | r2 = 0x899e;
0x00004380 ldr r3, [r2, r3] | r3 = *(0x899e);
0x00004382 ldr r2, [r3] | r2 = *(0x899e);
0x00004384 ldr r3, [r1] | r3 = *(r1);
0x00004386 eors r2, r3 | r2 ^= r3;
0x00004388 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000438c bne.w 0x45d6 | goto label_93;
| }
0x00004390 movs r0, 0 | r0 = 0;
0x00004392 add.w sp, sp, 0x2040 |
0x00004396 add sp, 0x24 |
0x00004398 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_83:
0x0000439c cmp r3, 0 |
0x0000439e beq 0x4374 |
| } while (r3 == 0);
0x000043a0 lsls r3, r2, 0x1c | r3 = r2 << 0x1c;
| if (r3 < r2) {
0x000043a2 bmi.w 0x455e | goto label_85;
| }
0x000043a6 b 0x4132 | goto label_27;
| label_90:
0x000043a8 cmp r3, 0 |
| if (r3 == 0) {
0x000043aa beq.w 0x4550 | goto label_94;
| }
| label_34:
0x000043ae ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x000043b0 cmp r3, 6 |
| if (r3 <= 6) {
0x000043b2 ble.w 0x4296 | goto label_28;
| }
| label_92:
0x000043b6 ldr r3, [pc, 0x268] |
0x000043b8 mov.w r1, 0x728 | r1 = 0x728;
0x000043bc strd r0, r4, [sp] | __asm ("strd r0, r4, [sp]");
0x000043c0 ldr r0, [pc, 0x260] |
0x000043c2 add r3, pc | r3 = 0x89e8;
0x000043c4 str r3, [sp, 8] | var_8h_2 = r3;
0x000043c6 movs r3, 7 | r3 = 7;
0x000043c8 add r0, pc | r0 = 0x89f0;
0x000043ca blx 0x1e6c | fcn_00001e6c ();
0x000043ce b 0x4296 | goto label_28;
| label_86:
0x000043d0 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000043d2 mov r0, r7 | r0 = r7;
0x000043d4 blx 0x19fc | r0 = strcmp (r0, r1);
0x000043d8 cmp r0, 0 |
| if (r0 != 0) {
0x000043da bne.w 0x45a6 | goto label_95;
| }
0x000043de subs r6, r5, 4 | r6 = r5 - 4;
0x000043e0 mov r1, r4 | r1 = r4;
0x000043e2 mov.w r3, 0x2000 | r3 = 0x2000;
0x000043e6 str r0, [sp] | *(sp) = r0;
0x000043e8 mov r2, r6 | r2 = r6;
0x000043ea ldr.w r4, [sl, 0x2c] | r4 = *((sl + 0x2c));
0x000043ee mov r0, sb | r0 = sb;
0x000043f0 blx r4 | uint32_t (*r4)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x000043f2 mov r0, r6 | r0 = r6;
0x000043f4 ldrd r2, r6, [fp, 8] | __asm ("ldrd r2, r6, [arg_8h]");
0x000043f8 mov r1, r6 | r1 = r6;
0x000043fa blx 0x1d00 | fcn_00001d00 ();
0x000043fe ldr r3, [r0, 0x44] | r3 = *((r0 + 0x44));
0x00004400 mov r4, r0 | r4 = r0;
0x00004402 cmp r3, 0xc8 |
| if (r3 != 0xc8) {
0x00004404 bne 0x44cc | goto label_96;
| }
0x00004406 ldr.w r3, [r0, 0xf0] | r3 = *((r0 + 0xf0));
| if (r3 != 0) {
0x0000440a cbz r3, 0x4410 |
0x0000440c ldrb r3, [r3] | r3 = *(r3);
| if (r3 != 0) {
0x0000440e cbnz r3, 0x4446 | goto label_97;
| }
| }
0x00004410 ldr.w r7, [r4, 0xf4] | r7 = *((r4 + 0xf4));
| if (r7 == 0) {
0x00004414 cbnz r7, 0x4446 |
0x00004416 ldr.w r3, [r4, 0x16c] | r3 = *((r4 + 0x16c));
0x0000441a cmp r3, 1 |
| if (r3 != 1) {
0x0000441c bne 0x4446 | goto label_97;
| }
0x0000441e ldr r1, [pc, 0x208] |
0x00004420 mov r0, r4 | r0 = r4;
0x00004422 vldr d16, [r6, 0xf0] | __asm ("vldr d16, [r6, 0xf0]");
0x00004426 add r1, pc | r1 = 0x8a54;
0x00004428 vstr d16, [r4, 0xf0] | __asm ("vstr d16, [r4, 0xf0]");
0x0000442c blx 0x1b44 | fcn_00001b44 ();
0x00004430 mov r0, r4 | r0 = r4;
0x00004432 blx 0x1b68 | r0 = fcn_00001b68 ();
0x00004436 sub.w r0, r0, 0x12c | r0 -= 0x12c;
0x0000443a cmp r0, 0x63 |
| if (r0 < 0x63) {
0x0000443c bls 0x44f0 | goto label_98;
| }
| label_33:
0x0000443e mov r0, r4 | r0 = r4;
0x00004440 blx 0x1dcc | fcn_00001dcc ();
0x00004444 b 0x4158 | goto label_29;
| }
| label_97:
0x00004446 mov r0, r4 | r0 = r4;
0x00004448 ldr r7, [sp, 0x44] | r7 = var_44h;
0x0000444a ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x0000444e mov r6, sb | r6 = sb;
0x00004450 blx 0x1dcc | fcn_00001dcc ();
| do {
0x00004454 ldr r3, [r5, -0x10] | r3 = *((r5 - 0x10));
0x00004458 ldr r1, [sp, 0x24] | r1 = var_24h_2;
0x0000445a ldr r2, [pc, 0x18c] |
0x0000445c ldr r0, [pc, 0x1cc] |
0x0000445e ldr r2, [r1, r2] | r2 = *((r1 + r2));
0x00004460 strd r3, r7, [sp, 0xc] | __asm ("strd r3, r7, [sp, 0xc]");
0x00004464 add r0, pc | r0 = 0x8a94;
0x00004466 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00004468 ldr r1, [pc, 0x1c4] |
0x0000446a str r3, [sp, 4] | var_4h_2 = r3;
0x0000446c movs r3, 0 | r3 = 0;
0x0000446e add r1, pc | r1 = 0x8aa2;
0x00004470 ldr r2, [r2, 8] | r2 = *(0x45f2);
0x00004472 str r3, [sp] | *(sp) = r3;
0x00004474 movs r3, 3 | r3 = 3;
0x00004476 str r1, [sp, 8] | var_8h_2 = r1;
0x00004478 movw r1, 0x783 | r1 = 0x783;
0x0000447c b 0x433a | goto label_30;
| label_87:
0x0000447e ldr r0, [r4] | r0 = *(r4);
0x00004480 blx 0x1b38 | fcn_00001b38 ();
0x00004484 ldr r1, [pc, 0x1ac] |
0x00004486 mov r2, r0 | r2 = r0;
0x00004488 ldr r0, [sp, 0x2c] | r0 = var_2ch_2;
0x0000448a add r1, pc | r1 = 0x8ac2;
0x0000448c blx 0x1c7c | fcn_00001c7c ();
0x00004490 mov r2, r8 | r2 = r8;
0x00004492 ldr.w r1, [r4, 0xf0] | r1 = *((r4 + 0xf0));
0x00004496 ldr r0, [r4] | r0 = *(r4);
0x00004498 blx 0x1db4 | fcn_00001db4 ();
0x0000449c mov r1, r4 | r1 = r4;
0x0000449e mov r2, r6 | r2 = r6;
0x000044a0 blx 0x1d00 | fcn_00001d00 ();
0x000044a4 ldr.w r1, [r0, 0xe8] | r1 = *((r0 + 0xe8));
0x000044a8 mov r8, r0 | r8 = r0;
| if (r1 != 0) {
0x000044aa cbz r1, 0x44c4 |
0x000044ac ldr.w r2, [r0, 0xf0] | r2 = *((r0 + 0xf0));
0x000044b0 mov r3, r6 | r3 = r6;
0x000044b2 ldr r0, [r4] | r0 = *(r4);
0x000044b4 blx 0x1eb8 | loc_imp_apr_bucket_eos_create ();
0x000044b8 ldr r1, [pc, 0x17c] |
0x000044ba mov r2, r0 | r2 = r0;
0x000044bc ldr r0, [sp, 0x2c] | r0 = var_2ch_2;
0x000044be add r1, pc | r1 = 0x8afa;
0x000044c0 blx 0x1c7c | fcn_00001c7c ();
| }
0x000044c4 mov r0, r8 | r0 = r8;
0x000044c6 blx 0x1dcc | fcn_00001dcc ();
0x000044ca b 0x41e0 | goto label_31;
| label_96:
0x000044cc ldr r7, [sp, 0x44] | r7 = var_44h;
0x000044ce mov r6, sb | r6 = sb;
0x000044d0 ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x000044d4 blx 0x1dcc | fcn_00001dcc ();
0x000044d8 b 0x4454 |
| } while (1);
| label_89:
0x000044da ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x000044dc mov r1, r6 | r1 = r6;
0x000044de ldr r3, [pc, 0x128] | r3 = *(0x460a);
0x000044e0 ldr r0, [r4] | r0 = *(r4);
0x000044e2 ldr r7, [r2, r3] | r7 = *((r2 + r3));
0x000044e4 ldr r2, [pc, 0x154] |
0x000044e6 mov r3, r7 | r3 = r7;
0x000044e8 add r2, pc | r2 = 0x8b28;
0x000044ea blx 0x1bd4 | fcn_00001bd4 ();
0x000044ee b 0x429c | goto label_32;
| label_98:
0x000044f0 ldr r1, [pc, 0x14c] |
0x000044f2 ldr.w r0, [r4, 0xb4] | r0 = *((r4 + 0xb4));
0x000044f6 add r1, pc | r1 = 0x8b3a;
0x000044f8 blx 0x1ab4 | r0 = fcn_00001ab4 ();
0x000044fc mov r1, r0 | r1 = r0;
0x000044fe cmp r0, 0 |
| if (r0 == 0) {
0x00004500 beq 0x443e | goto label_33;
| }
0x00004502 mov r2, r7 | r2 = r7;
0x00004504 ldr r0, [r4] | r0 = *(r4);
0x00004506 blx 0x1d0c | fcn_00001d0c ();
0x0000450a ldr r3, [pc, 0x138] |
0x0000450c mov r2, r0 | r2 = r0;
0x0000450e ldr r1, [pc, 0x138] |
0x00004510 str r7, [sp, 8] | var_8h_2 = r7;
0x00004512 add r3, pc | r3 = 0x8b5c;
0x00004514 str r0, [sp] | *(sp) = r0;
0x00004516 str r3, [sp, 4] | var_4h_2 = r3;
0x00004518 add r1, pc | r1 = 0x8b66;
0x0000451a ldr r3, [pc, 0x130] |
0x0000451c ldr.w r0, [sb] | r0 = *(sb);
0x00004520 add r3, pc |
0x00004522 blx 0x1eb8 | r0 = loc_imp_apr_bucket_eos_create ();
0x00004526 mov r6, r0 | r6 = r0;
0x00004528 blx 0x1cd0 | fcn_00001cd0 ();
0x0000452c ldr.w r3, [fp, 0x10] | r3 = *(arg_10h);
0x00004530 mov r1, r0 | r1 = r0;
0x00004532 ldr.w r2, [sb] | r2 = *(sb);
0x00004536 mov r0, r6 | r0 = r6;
0x00004538 ldr r3, [r3, 0x40] | r3 = *(0x8bb2);
0x0000453a blx 0x19cc | loc_imp_apr_bucket_pool_create ();
0x0000453e ldr r2, [sp, 0x28] | r2 = var_28h;
0x00004540 adds r3, r2, 4 | r3 = r2 + 4;
0x00004542 str r3, [r0] | *(r0) = r3;
0x00004544 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x00004546 str r3, [r0, 4] | *((r0 + 4)) = r3;
0x00004548 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0000454a str r0, [r3] | *(r3) = r0;
0x0000454c str r0, [r2, 8] | *((r2 + 8)) = r0;
0x0000454e b 0x443e | goto label_33;
| label_94:
0x00004550 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00004552 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00004554 cmp r3, 0 |
| if (r3 != 0) {
0x00004556 bne.w 0x43ae | goto label_34;
| }
0x0000455a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x0000455c b 0x45a2 | goto label_99;
| label_85:
0x0000455e ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x00004560 ldr r3, [pc, 0x84] | r3 = *(0x45e8);
0x00004562 ldr r1, [sp, 0x40] | r1 = var_40h;
0x00004564 ldr r0, [pc, 0xe8] |
0x00004566 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00004568 add r0, pc | r0 = 0x8bbc;
0x0000456a ldr r2, [r3, 8] | r2 = *(0x45f0);
0x0000456c ldr.w r3, [r1, 0xe8] | r3 = *((r1 + 0xe8));
0x00004570 str r1, [sp, 4] | var_4h_2 = r1;
0x00004572 mov.w r1, 0x760 | r1 = 0x760;
0x00004576 str r3, [sp, 0xc] | var_ch = r3;
0x00004578 ldr r3, [pc, 0xd8] |
0x0000457a add r3, pc | r3 = 0x8bd2;
0x0000457c str r3, [sp, 8] | var_8h_2 = r3;
0x0000457e movs r3, 0 | r3 = 0;
0x00004580 str r3, [sp] | *(sp) = r3;
0x00004582 movs r3, 3 | r3 = 3;
0x00004584 blx 0x1e6c | fcn_00001e6c ();
0x00004588 b 0x433e | goto label_35;
| label_91:
0x0000458a ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000458c ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x0000458e cmp r3, 0 |
| if (r3 != 0) {
0x00004590 bne.w 0x4280 | goto label_36;
| }
0x00004594 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00004596 ldr r1, [r3, 0x10] | r1 = *((r3 + 0x10));
| if (r1 == 0) {
0x00004598 cbz r1, 0x45a2 | goto label_99;
| }
0x0000459a ldrsb r1, [r1, r2] | r1 = *((r1 + r2));
0x0000459c cmp r1, 0 |
| if (r1 >= 0) {
0x0000459e bge.w 0x4290 | goto label_37;
| }
| label_99:
0x000045a2 adds r3, 0x10 | r3 += 0x10;
0x000045a4 b 0x43ae | goto label_34;
| label_95:
0x000045a6 ldr r3, [pc, 0x40] | r3 = *(0x45ea);
0x000045a8 mov r6, sb | r6 = sb;
0x000045aa ldr r2, [sp, 0x24] | r2 = var_24h_2;
0x000045ac mov sb, r7 | sb = r7;
0x000045ae ldr r1, [pc, 0xa8] |
0x000045b0 ldr r7, [sp, 0x44] | r7 = var_44h;
0x000045b2 ldr r2, [r2, r3] | r2 = *((r2 + r3));
0x000045b4 ldr r3, [sp, 0x40] | r3 = var_40h;
0x000045b6 add r1, pc | r1 = 0x8c14;
0x000045b8 ldr r0, [pc, 0xa0] |
0x000045ba strd sb, r7, [sp, 0xc] | __asm ("strd sb, r7, [sp, 0xc]");
0x000045be str r3, [sp, 4] | var_4h_2 = r3;
0x000045c0 movs r3, 0 | r3 = 0;
0x000045c2 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000045c4 add r0, pc | r0 = 0x8c24;
0x000045c6 str r3, [sp] | *(sp) = r3;
0x000045c8 movs r3, 3 | r3 = 3;
0x000045ca str r1, [sp, 8] | var_8h_2 = r1;
0x000045cc movw r1, 0x78a | r1 = 0x78a;
0x000045d0 ldr.w r8, [sp, 0x28] | r8 = var_28h;
0x000045d4 b 0x433a | goto label_30;
| label_93:
0x000045d6 blx 0x1b20 | fcn_00001b20 ();
0x000045da nop |
0x000045dc cmp r5, 0x1c |
0x000045de movs r0, r0 |
0x000045e0 lsls r0, r1, 8 | r0 = r1 << 8;
0x000045e2 movs r0, r0 |
0x000045e4 cmp r5, 8 |
0x000045e6 movs r0, r0 |
0x000045e8 lsls r0, r2, 8 | r0 = r2 << 8;
0x000045ea movs r0, r0 |
0x000045ec lsrs r6, r4, 0x19 | r6 = r4 >> 0x19;
0x000045ee movs r0, r0 |
0x000045f0 lsls r0, r5, 0x17 | r0 = r5 << 0x17;
0x000045f2 movs r0, r0 |
0x000045f4 lsrs r2, r2, 0x1a | r2 >>= 0x1a;
0x000045f6 movs r0, r0 |
0x000045f8 cmp r7, 6 |
0x000045fa movs r0, r0 |
0x000045fc lsrs r4, r3, 0xf | r4 = r3 >> 0xf;
0x000045fe movs r0, r0 |
0x00004600 lsrs r4, r6, 0x17 | r4 = r6 >> 0x17;
0x00004602 movs r0, r0 |
0x00004604 lsrs r2, r5, 0x17 | r2 = r5 >> 0x17;
0x00004606 movs r0, r0 |
0x00004608 lsls r4, r3, 8 | r4 = r3 << 8;
0x0000460a movs r0, r0 |
0x0000460c bl 0x14260e | void (*0x14260e)(uint32_t, uint32_t) (r0, r2);
0x00004610 udf 0x85 | __asm ("udf 0x85");
| }
[*] Function printf used 3 times mod_cgid.so