[*] 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-50593792.squashfs_v4_le_extract/usr/lib/apache2/modules/mod_cgid.so @ 0x3610 */
| #include <stdint.h>
|
; (fcn) fcn.00003610 () | void fcn_00003610 (int16_t arg_88h, int16_t arg_c8h, char * s1, int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h_2;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| size_t var_28h;
| size_t n;
| int16_t var_30h;
| int16_t var_4h;
| int32_t var_8h_2;
| int16_t var_3ch;
| int16_t var_48h;
| int16_t var_50h;
| int16_t var_34h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00003610 invalid |
0x00003614 ldr r1, [pc, 0x8c] |
0x00003616 sub sp, 0x3c |
0x00003618 add r4, sp, 4 | r4 += var_4h;
0x0000361a mov r5, r0 | r5 = r0;
0x0000361c ldr r3, [pc, 0x88] | r3 = *(0x36a8);
0x0000361e mov r7, r2 | r7 = r2;
0x00003620 add r1, pc | r1 = 0x6cc8;
0x00003622 movs r2, 0x30 | r2 = 0x30;
0x00003624 mov r0, r4 | r0 = r4;
0x00003626 ldr r3, [r1, r3] |
0x00003628 movs r1, 0 | r1 = 0;
0x0000362a ldr r3, [r3] | r3 = *(0x6cc8);
0x0000362c str r3, [sp, 0x34] | var_34h = r3;
0x0000362e mov.w r3, 0 | r3 = 0;
0x00003632 blx 0x1ca8 | fcn_00001ca8 ();
0x00003636 mov r2, r6 | r2 = r6;
0x00003638 mov r1, r5 | r1 = r5;
0x0000363a mov r0, sp | r0 = sp;
0x0000363c bl 0x21d8 | r0 = fcn_000021d8 (r0, r1, r2, r3);
| if (r0 != 0) {
0x00003640 cbnz r0, 0x3692 | goto label_27;
| }
0x00003642 ldr r3, [pc, 0x68] |
0x00003644 movs r2, 3 | r2 = 3;
0x00003646 ldr r1, [r5, 4] | r1 = *((r5 + 4));
0x00003648 str r2, [sp, 4] | var_4h = r2;
0x0000364a add r3, pc | r3 = 0x6cfc;
0x0000364c ldr r5, [sp] | r5 = *(sp);
0x0000364e ldr r2, [r3, 0x14] | r2 = *(0x6d10);
0x00003650 ldr r3, [r1, 0x28] | r3 = *((r1 + 0x28));
0x00003652 strd r3, r2, [sp, 8] | __asm ("strd r3, r2, [var_3ch]");
0x00003656 b 0x3662 |
| while (r0 < 0) {
0x00003658 blx 0x1c84 | r0 = fcn_00001c84 ();
0x0000365c ldr r0, [r0] | r0 = *(r0);
0x0000365e cmp r0, 4 |
| if (r0 != 4) {
0x00003660 bne 0x3698 | goto label_28;
| }
0x00003662 movs r2, 0x30 | r2 = 0x30;
0x00003664 mov r1, r4 | r1 = r4;
0x00003666 mov r0, r5 | r0 = r5;
0x00003668 blx 0x1ce4 | r0 = fcn_00001ce4 ();
0x0000366c cmp r0, 0 |
0x0000366e blt 0x3658 |
| }
| label_1:
0x00003670 movs r2, 4 | r2 = 4;
0x00003672 mov r1, r7 | r1 = r7;
0x00003674 mov r0, r5 | r0 = r5;
0x00003676 bl 0x2498 | fcn_00002498 (r0, r1, r2);
| do {
| label_0:
0x0000367a ldr r2, [pc, 0x34] |
0x0000367c ldr r3, [pc, 0x28] | r3 = *(0x36a8);
0x0000367e add r2, pc | r2 = 0x6d34;
0x00003680 ldr r3, [r2, r3] | r3 = *(0x6d34);
0x00003682 ldr r2, [r3] | r2 = *(0x6d34);
0x00003684 ldr r3, [sp, 0x34] | r3 = var_34h;
0x00003686 eors r2, r3 | r2 ^= r3;
0x00003688 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000368c bne 0x369e | goto label_29;
| }
0x0000368e add sp, 0x3c |
0x00003690 pop {r4, r5, r6, r7, pc} |
| label_27:
0x00003692 movw r0, 0x4e2e | r0 = 0x4e2e;
0x00003696 b 0x367a |
| } while (1);
| label_28:
0x00003698 cmp r0, 0 |
| if (r0 != 0) {
0x0000369a bne 0x367a | goto label_0;
| }
0x0000369c b 0x3670 | goto label_1;
| label_29:
0x0000369e blx 0x1a74 | fcn_00001a74 ();
0x000036a2 nop |
0x000036a4 movs r7, 0xb4 | r7 = 0xb4;
0x000036a6 movs r1, r0 | r1 = r0;
0x000036a8 lsls r4, r0, 8 | r4 = r0 << 8;
0x000036aa movs r0, r0 |
0x000036ac cmp r2, 2 |
0x000036ae movs r1, r0 | r1 = r0;
0x000036b0 movs r7, 0x56 | r7 = 0x56;
0x000036b2 movs r1, r0 | r1 = r0;
0x000036b4 ldr.w r2, [pc, 0x488] | r2 = *(0x00003b40);
0x000036b8 ldr.w r3, [pc, 0x488] |
0x000036bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000036c0 mov r8, r0 | r8 = r0;
0x000036c2 vpush {d8} | __asm ("vpush {d8}");
0x000036c6 add r2, pc | r2 += pc;
0x000036c8 sub.w sp, sp, 0x20c0 |
0x000036cc sub sp, 0xc |
0x000036ce ldr.w r1, [pc, 0x478] |
0x000036d2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000036d4 add.w r0, sp, 0x20c0 | r0 += s1;
0x000036d8 ldr.w r4, [r8, 0xc8] | r4 = *((r8 + 0xc8));
0x000036dc adds r0, 4 | r0 += 4;
0x000036de ldr.w sb, [pc, 0x46c] | sb = *(0x00003b4c);
0x000036e2 add r1, pc | r1 = 0x7230;
0x000036e4 ldr r3, [r3] | r3 = *(0x3b44);
0x000036e6 str r3, [r0] | *(r0) = r3;
0x000036e8 mov.w r3, 0 | r3 = 0;
0x000036ec mov r0, r4 | r0 = r4;
0x000036ee add sb, pc | sb += pc;
0x000036f0 blx 0x1950 | r0 = strcmp (r0, r1);
| if (r0 != 0) {
0x000036f4 cbz r0, 0x3708 |
0x000036f6 ldr.w r1, [pc, 0x458] |
0x000036fa mov r0, r4 | r0 = r4;
0x000036fc add r1, pc | r1 = 0x7252;
0x000036fe blx 0x1950 | r0 = strcmp (r0, r1);
0x00003702 cmp r0, 0 |
| if (r0 != 0) {
0x00003704 bne.w 0x3b32 | goto label_30;
| }
| }
0x00003708 ldr.w r3, [pc, 0x448] |
0x0000370c ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x00003710 ldr.w r2, [r8, 0x100] | r2 = *((r8 + 0x100));
0x00003714 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x00003716 adds r0, 3 | r0 += 3;
0x00003718 ldr r1, [r1, 0x18] | r1 = *((r1 + 0x18));
0x0000371a ldr.w r0, [r8, 0x2c] | r0 = *((r8 + 0x2c));
0x0000371e str r3, [sp, 0x24] | var_24h = r3;
0x00003720 ldr r3, [r3, 8] | r3 = *(0x3b5c);
0x00003722 ldr.w sl, [r1, r3, lsl 2] | offset_0 = r3 << 2;
| sl = *((r1 + offset_0));
0x00003726 ldr.w r1, [pc, 0x430] |
0x0000372a ldr.w r4, [r2, r3, lsl 2] | offset_1 = r3 << 2;
| r4 = *((r2 + offset_1));
0x0000372e add r1, pc | r1 = 0x728c;
0x00003730 blx 0x1950 | strcmp (r0, r1);
0x00003734 ldr.w r6, [r8, 0xe8] | r6 = *((r8 + 0xe8));
0x00003738 mov r5, r0 | r5 = r0;
0x0000373a movs r1, 0x2f | r1 = 0x2f;
0x0000373c mov r0, r6 | r0 = r6;
0x0000373e blx 0x1d9c | r0 = fcn_00001d9c ();
0x00003742 cmp r0, 0 |
| if (r0 == 0) {
0x00003744 beq.w 0x389a | goto label_31;
| }
0x00003748 adds r0, 1 | r0++;
| label_2:
0x0000374a ldr.w r1, [pc, 0x410] |
0x0000374e movs r2, 4 | r2 = 4;
0x00003750 add r1, pc | r1 = 0x72b2;
0x00003752 blx 0x1e90 | close (r0);
0x00003756 str r0, [sp, 0x30] | var_30h = r0;
0x00003758 mov r0, r8 | r0 = r8;
0x0000375a blx 0x19cc | r0 = fcn_000019cc ();
0x0000375e lsls r3, r0, 0x1c | r3 = r0 << 0x1c;
0x00003760 bpl 0x383e |
| while (r0 == 0) {
0x00003762 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00003764 orrs r3, r5 | r3 |= r5;
| if (r3 == r5) {
0x00003766 beq.w 0x3ac8 | goto label_32;
| }
0x0000376a ldr.w r3, [r8, 0x16c] | r3 = *((r8 + 0x16c));
0x0000376e cmp r3, 0 |
| if (r3 == 0) {
0x00003770 beq.w 0x3ace | goto label_33;
| }
0x00003774 cmp r3, 2 |
| if (r3 == 2) {
0x00003776 beq.w 0x3b08 | goto label_34;
| }
0x0000377a ldr.w r3, [r8, 0xf8] | r3 = *((r8 + 0xf8));
0x0000377e cmp r3, 1 |
| if (r3 == 1) {
0x00003780 bne 0x3790 |
0x00003782 ldr.w r3, [r8, 0xf0] | r3 = *((r8 + 0xf0));
| if (r3 == 0) {
0x00003786 cbz r3, 0x3790 | goto label_35;
| }
0x00003788 ldrb r3, [r3] | r3 = *(r3);
0x0000378a cmp r3, 0 |
| if (r3 != 0) {
0x0000378c bne.w 0x3b10 | goto label_36;
| }
| }
| label_35:
0x00003790 mov r0, r8 | r0 = r8;
0x00003792 add r5, sp, 0x48 | r5 += var_48h;
0x00003794 blx 0x1a5c | fcn_00001a5c ();
0x00003798 mov r0, r8 | r0 = r8;
0x0000379a blx 0x1d6c | fcn_00001d6c ();
0x0000379e ldr.w r1, [r8, 0xbc] | r1 = *((r8 + 0xbc));
0x000037a2 str r5, [sp, 0x34] | var_4h = r5;
0x000037a4 add r5, sp, 0x3c | r5 += var_3ch;
0x000037a6 ldr.w r0, [r8] | r0 = *(r8);
0x000037aa blx 0x1e3c | loc_imp_ap_hook_get_suexec_identity ();
0x000037ae mov r2, sl | r2 = sl;
0x000037b0 mov r7, r0 | r7 = r0;
0x000037b2 mov r1, r8 | r1 = r8;
0x000037b4 mov r0, r5 | r0 = r5;
0x000037b6 bl 0x21d8 | r0 = fcn_000021d8 (r0, r1, r2, r3);
0x000037ba mov fp, r0 |
0x000037bc cmp r0, 0 |
| if (r0 != 0) {
0x000037be bne 0x386e | goto label_9;
| }
0x000037c0 mov r2, r6 | r2 = r6;
0x000037c2 movs r1, 1 | r1 = 1;
0x000037c4 add r6, sp, 0xc8 | r6 += arg_c8h;
0x000037c6 str r1, [sp] | *(sp) = r1;
0x000037c8 mov r3, r7 | r3 = r7;
0x000037ca ldr r0, [r6, -0x8c] | r0 = *((r6 - 0x8c));
0x000037ce mov r1, r8 | r1 = r8;
0x000037d0 bl 0x2664 | r0 = fcn_00002664 (r0, r1, r2, r3, r4);
0x000037d4 cmp r0, 0 |
| if (r0 != 0) {
0x000037d6 bne.w 0x3a04 | goto label_37;
| }
| label_6:
0x000037da movs r1, 0xc | r1 = 0xc;
0x000037dc ldr.w r0, [r8] | r0 = *(r8);
0x000037e0 blx 0x1b4c | r0 = fcn_00001b4c ();
0x000037e4 mov r2, r0 | r2 = r0;
0x000037e6 str.w sl, [r0, 4] | __asm ("str.w sl, [r0, 4]");
0x000037ea mov r7, r0 | r7 = r0;
0x000037ec mov r1, sl | r1 = sl;
0x000037ee mov r0, r8 | r0 = r8;
0x000037f0 str r8, [r2], 8 | *(r2) = r8;
| r2 += 8;
0x000037f4 bl 0x3610 | r0 = fcn_00003610 (r0, r1, r2, r3, r4, r5);
0x000037f8 cmp r0, 0 |
| if (r0 == 0) {
0x000037fa beq 0x389e | goto label_38;
| }
0x000037fc ldr r3, [sp, 0x24] | r3 = var_24h;
0x000037fe ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003800 ldr.w r3, [r8, 0x108] | r3 = *((r8 + 0x108));
0x00003804 cmp r2, 0 |
| if (r2 < 0) {
0x00003806 blt.w 0x3a22 | goto label_39;
| }
0x0000380a cmp r3, 0 |
| if (r3 == 0) {
0x0000380c beq.w 0x3dc8 | goto label_40;
| }
0x00003810 ldr r1, [r3] | r1 = *(r3);
0x00003812 cmp r1, 0 |
| if (r1 == 0) {
0x00003814 beq.w 0x3a26 | goto label_14;
| }
0x00003816 strh r7, [r0, 8] | *((r0 + 8)) = r7;
0x00003818 ldrsb r1, [r1, r2] | r1 = *((r1 + r2));
0x0000381a cmp r1, 0 |
| if (r1 < 0) {
0x0000381c blt.w 0x3a26 | goto label_14;
| }
| label_16:
0x00003820 cmp r1, 6 |
| if (r1 <= 6) {
0x00003822 ble 0x38b2 | goto label_7;
| }
| label_8:
0x00003824 ldr r3, [pc, 0x338] |
0x00003826 movw r1, 0x5db | r1 = 0x5db;
0x0000382a strd r0, r8, [sp] | __asm ("strd r0, r8, [sp]");
0x0000382e ldr r0, [pc, 0x334] |
0x00003830 add r3, pc | r3 = 0x7394;
0x00003832 str r3, [sp, 8] | var_8h = r3;
0x00003834 movs r3, 7 | r3 = 7;
0x00003836 add r0, pc | r0 = 0x73a0;
0x00003838 blx 0x1db4 | fcn_00001db4 ();
0x0000383c b 0x38b2 | goto label_7;
0x0000383e ldr r1, [pc, 0x328] |
0x00003840 ldr.w r0, [r8, 0xc0] | r0 = *((r8 + 0xc0));
0x00003844 add r1, pc | r1 = 0x73b2;
0x00003846 blx 0x1a08 | r0 = fcn_00001a08 ();
| if (r0 == 0) {
0x0000384a cbz r0, 0x3858 | goto label_41;
| }
0x0000384c ldr r1, [pc, 0x31c] |
0x0000384e add r1, pc | r1 = 0x73be;
0x00003850 blx 0x1b04 | r0 = fcn_00001b04 ();
0x00003854 cmp r0, 0 |
0x00003856 beq 0x3762 |
| }
| label_41:
0x00003858 ldr r4, [pc, 0x314] |
0x0000385a movs r3, 0 | r3 = 0;
0x0000385c add r4, pc | r4 = 0x73d0;
| label_12:
0x0000385e movw r2, 0x193 | r2 = 0x193;
| label_13:
0x00003862 mov r1, sl | r1 = sl;
0x00003864 mov r0, r8 | r0 = r8;
0x00003866 str r4, [sp] | *(sp) = r4;
0x00003868 bl 0x20b4 | r0 = fcn_000020b4 (r0, r1, r2, r3, r4);
0x0000386c mov fp, r0 |
| label_9:
0x0000386e ldr r2, [pc, 0x304] |
0x00003870 add.w r1, sp, 0x20c0 | r1 += s1;
0x00003874 ldr r3, [pc, 0x2cc] | r3 = *(0x3b44);
0x00003876 adds r1, 4 | r1 += 4;
0x00003878 add r2, pc | r2 = 0x73f2;
0x0000387a ldr r3, [r2, r3] | r3 = *(0x73f2);
0x0000387c ldr r2, [r3] | r2 = *(0x73f2);
0x0000387e ldr r3, [r1] | r3 = *(r1);
0x00003880 eors r2, r3 | r2 ^= r3;
0x00003882 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00003886 bne.w 0x3f3c | goto label_42;
| }
0x0000388a mov r0, fp | r0 = fp;
0x0000388c add.w sp, sp, 0x20c0 |
0x00003890 add sp, 0xc |
0x00003892 vpop {d8} | __asm ("vpop {d8}");
0x00003896 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_31:
0x0000389a mov r0, r6 | r0 = r6;
0x0000389c b 0x374a | goto label_2;
| label_38:
0x0000389e ldr r3, [pc, 0x2d8] | r3 = *(0x3b7a);
0x000038a0 mov r1, r7 | r1 = r7;
0x000038a2 ldr r2, [pc, 0x2d8] |
0x000038a4 ldr.w r0, [r8] | r0 = *(r8);
0x000038a8 ldr.w r3, [sb, r3] | r3 = *((sb + r3));
0x000038ac add r2, pc | r2 = 0x742e;
0x000038ae blx 0x1b1c | fcn_00001b1c ();
| label_7:
0x000038b2 ldr r0, [sp, 0x34] | r0 = var_4h;
0x000038b4 mov r1, r5 | r1 = r5;
0x000038b6 ldr.w r3, [r8] | r3 = *(r8);
0x000038ba movs r2, 1 | r2 = 1;
0x000038bc subs r0, 8 | r0 -= 8;
0x000038be blx 0x19d8 | fcn_000019d8 ();
0x000038c2 ldrd r2, r3, [r4] | __asm ("ldrd r2, r3, [r4]");
0x000038c6 cmp r2, 1 |
0x000038c8 sbcs r1, r3, 0 | __asm ("sbcs r1, r3, 0");
0x000038cc itett lt |
| if (r2 >= 1) {
0x000038ce ldrlt r3, [r8, 8] | r3 = *((r8 + 8));
| }
| if (r2 >= 1) {
0x000038d2 ldrlt r0, [r6, -0x88] | r0 = *((r6 - 0x88));
| }
| if (r2 < 1) {
0x000038d6 ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
| }
| if (r2 < 1) {
0x000038da ldrd r2, r3, [r3, 0x40] | __asm ("ldrd r2, r3, [r3, 0x40]");
| }
0x000038de blx 0x1c78 | fcn_00001c78 ();
0x000038e2 ldr r2, [pc, 0x29c] |
0x000038e4 ldr r1, [r6, -0x8c] | r1 = *((r6 - 0x8c));
0x000038e8 ldr.w r0, [r8] | r0 = *(r8);
0x000038ec add r2, pc | r2 = 0x7472;
0x000038ee blx 0x1a68 | fcn_00001a68 ();
0x000038f2 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x000038f6 ldr.w r0, [r8] | r0 = *(r8);
0x000038fa ldr r1, [r3, 0x40] | r1 = *((r3 + 0x40));
0x000038fc blx 0x1b7c | fcn_00001b7c ();
0x00003900 ldr.w r3, [sl] | r3 = *(sl);
0x00003904 str r0, [sp, 0x20] | var_20h = r0;
0x00003906 str r3, [sp, 0x28] | var_28h = r3;
| if (r3 != 0) {
0x00003908 cbz r3, 0x391a |
0x0000390a ldr.w r1, [sl, 8] | r1 = *((sl + 8));
0x0000390e ldr.w r0, [r8] | r0 = *(r8);
0x00003912 adds r1, 1 | r1++;
0x00003914 blx 0x1b4c | fcn_00001b4c ();
0x00003916 ldmdb sl, {r1, r3, ip, pc} | __asm ("ldmdb sl, {r1, r3, ip, pc}");
| }
0x0000391a ldr r3, [pc, 0x268] |
0x0000391c movs r5, 0 | r5 = 0;
0x0000391e vldr d8, [pc, 0x218] | __asm ("vldr d8, [0x00003b3c]");
0x00003922 str.w r8, [sp, 0x1c] | __asm ("str.w r8, [var_1ch]");
0x00003926 add r3, pc | r3 = 0x74b0;
0x00003928 str r3, [sp, 0x2c] | n = r3;
0x0000392a add r3, sp, 0x88 | r3 += arg_88h;
0x0000392c str r3, [sp, 0x14] | var_14h = r3;
0x0000392e add r3, sp, 0x50 | r3 += var_50h;
0x00003930 str r3, [sp, 0x18] | var_18h = r3;
| label_5:
0x00003932 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00003934 movs r3, 0 | r3 = 0;
0x00003936 vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x0000393a ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000393c ldr.w r0, [r2, 0x118] | r0 = *((r2 + 0x118));
0x00003940 mov r2, r3 | r2 = r3;
0x00003942 blx 0x1b40 | r0 = fcn_00001b40 ();
0x00003946 cmp r0, 0 |
| if (r0 != 0) {
0x00003948 bne.w 0x3ad8 | goto label_43;
| }
0x0000394c ldr r7, [sp, 0x20] | r7 = var_20h;
0x0000394e ldr r4, [r7, 4]! | r4 = *((r7 += 4));
0x00003952 cmp r4, r7 |
| if (r4 == r7) {
0x00003954 beq 0x39fc | goto label_44;
| }
0x00003956 ldr r3, [pc, 0x230] | r3 = *(0x3b8a);
0x00003958 ldr.w r8, [sb, r3] | r8 = *((sb + r3));
0x0000395c b 0x3964 |
| while (r3 != 0) {
| label_3:
0x0000395e ldr r4, [r4] | r4 = *(r4);
0x00003960 cmp r4, r7 |
| if (r4 == r7) {
0x00003962 beq 0x39fc | goto label_44;
| }
| label_4:
0x00003964 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003966 cmp r2, r8 |
| if (r2 == r8) {
0x00003968 beq 0x3a30 | goto label_45;
| }
0x0000396a ldr r3, [pc, 0x220] | r3 = *(0x3b8e);
0x0000396c ldr.w r1, [sb, r3] | r1 = *((sb + r3));
0x00003970 and r3, r5, 1 | r3 = r5 & 1;
0x00003974 cmp r2, r1 |
0x00003976 it eq |
| if (r2 != r1) {
0x00003978 orreq r3, r3, 1 | r3 |= 1;
| }
0x0000397c cmp r3, 0 |
0x0000397e bne 0x395e |
| }
0x00003980 ldr r5, [r2, 0x10] | r5 = *((r2 + 0x10));
0x00003982 mov r0, r4 | r0 = r4;
0x00003984 ldrd r1, r2, [sp, 0x14] | __asm ("ldrd r1, r2, [var_14h]");
0x00003988 subs r1, 0x3c | r1 -= 0x3c;
0x0000398a blx r5 | uint32_t (*r5)(uint32_t, uint32_t) (r0, r1);
0x0000398c ldr.w r3, [sl] | r3 = *(sl);
| if (r3 != 0) {
0x00003990 cbz r3, 0x39be |
0x00003992 ldr.w r3, [sl, 8] | r3 = *((sl + 8));
0x00003996 cmp r3, fp |
| if (r3 <= fp) {
0x00003998 ble 0x39be | goto label_46;
| }
0x0000399a ldr r2, [r6, -0x78] | r2 = *((r6 - 0x78));
0x0000399e mov r0, fp | r0 = fp;
0x000039a0 add.w r1, fp, r2 | r1 = fp + r2;
0x000039a4 cmp r1, r3 |
0x000039a6 itt hi |
| if (r1 <= r3) {
0x000039a8 subhi r2, r3, fp | r2 = r3 - fp;
| }
| if (r1 > r3) {
0x000039ac mov fp, r3 |
| }
0x000039ae ldr r3, [sp, 0x28] | r3 = var_28h;
0x000039b0 it ls |
| if (r1 > r3) {
0x000039b2 movls fp, r1 |
| }
0x000039b4 ldr r1, [r6, -0x7c] | r1 = *((r6 - 0x7c));
0x000039b8 add r0, r3 | r0 += r3;
0x000039ba blx 0x19f0 | fcn_000019f0 ();
| }
| label_46:
0x000039be ldrd r1, r2, [r6, -0x7c] | __asm ("ldrd r1, r2, [r6, -0x7c]");
0x000039c2 movs r3, 0 | r3 = 0;
0x000039c4 ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
0x000039c8 blx 0x1ad4 | r0 = fcn_00001ad4 ();
0x000039cc mov r5, r0 | r5 = r0;
0x000039ce cmp r0, 0 |
| if (r0 == 0) {
0x000039d0 beq 0x395e | goto label_3;
| }
0x000039d2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000039d4 movw r1, 0x632 | r1 = 0x632;
0x000039d8 str r0, [sp] | *(sp) = r0;
0x000039da movs r5, 1 | r5 = 1;
0x000039dc ldr r2, [sp, 0x24] | r2 = var_24h;
0x000039de str r3, [sp, 4] | var_4h_2 = r3;
0x000039e0 ldr.w r3, [r3, 0xe8] | r3 = *((r3 + 0xe8));
0x000039e4 ldr r2, [r2, 8] | r2 = *((r2 + 8));
0x000039e6 ldr r0, [sp, 0x2c] | r0 = n;
0x000039e8 str r3, [sp, 0xc] | var_ch = r3;
0x000039ea ldr r3, [pc, 0x1a4] |
0x000039ec add r3, pc | r3 = 0x7582;
0x000039ee str r3, [sp, 8] | var_8h = r3;
0x000039f0 movs r3, 3 | r3 = 3;
0x000039f2 blx 0x1db4 | fcn_00001db4 ();
0x000039f6 ldr r4, [r4] | r4 = *(r4);
0x000039f8 cmp r4, r7 |
| if (r4 != r7) {
0x000039fa bne 0x3964 | goto label_4;
| }
| label_44:
0x000039fc ldr r0, [sp, 0x20] | r0 = var_20h;
0x000039fe blx 0x1d08 | fcn_00001d08 ();
0x00003a02 b 0x3932 | goto label_5;
| label_37:
0x00003a04 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003a06 movw r1, 0x5cc | r1 = 0x5cc;
0x00003a0a strd r0, r8, [sp] | __asm ("strd r0, r8, [sp]");
0x00003a0e ldr r0, [pc, 0x184] |
0x00003a10 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003a12 ldr r3, [pc, 0x184] |
0x00003a14 add r0, pc | r0 = 0x75ae;
0x00003a16 add r3, pc | r3 = 0x75b4;
0x00003a18 str r3, [sp, 8] | var_8h = r3;
0x00003a1a movs r3, 3 | r3 = 3;
0x00003a1c blx 0x1db4 | fcn_00001db4 ();
0x00003a20 b 0x37da | goto label_6;
| label_39:
0x00003a22 cmp r3, 0 |
| if (r3 == 0) {
0x00003a24 beq 0x3b1c | goto label_47;
| }
| label_14:
0x00003a26 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00003a28 cmp r3, 6 |
| if (r3 <= 6) {
0x00003a2a ble.w 0x38b2 | goto label_7;
| }
0x00003a2e b 0x3824 | goto label_8;
| label_45:
0x00003a30 str.w r8, [sp, 0x14] | __asm ("str.w r8, [var_14h]");
0x00003a34 ldrd r8, r0, [sp, 0x1c] | __asm ("ldrd r8, r0, [var_1ch]");
0x00003a38 blx 0x1d08 | fcn_00001d08 ();
0x00003a3c ldr.w r3, [sl] | r3 = *(sl);
| if (r3 != 0) {
0x00003a40 cbz r3, 0x3a4a |
0x00003a42 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00003a44 movs r3, 0 | r3 = 0;
0x00003a46 strb.w r3, [r2, fp] | *((r2 + fp)) = r3;
| }
0x00003a4a ldr r0, [r6, -0x8c] | r0 = *((r6 - 0x8c));
0x00003a4e movs r1, 1 | r1 = 1;
0x00003a50 blx 0x1d60 | fcn_00001d60 ();
0x00003a54 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00003a56 cmp r3, 0 |
| if (r3 != 0) {
0x00003a58 bne.w 0x3bb4 | goto label_48;
| }
0x00003a5c ldr.w r3, [r8, 0x11c] | r3 = *((r8 + 0x11c));
0x00003a60 ldr.w r5, [r8, 4] | r5 = *((r8 + 4));
| if (r3 != 0) {
0x00003a64 cbnz r3, 0x3abe | goto label_49;
| }
| do {
| label_11:
0x00003a66 ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003a68 mov.w fp, 0 |
0x00003a6c str.w r3, [r8, 0x11c] | __asm ("str.w r3, [r8, 0x11c]");
0x00003a70 str.w r3, [r8, 0x114] | __asm ("str.w r3, [r8, 0x114]");
0x00003a74 ldr.w r0, [r8] | r0 = *(r8);
0x00003a78 blx 0x1b7c | fcn_00001b7c ();
0x00003a7c ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003a7e mov r4, r0 | r4 = r0;
0x00003a80 ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
0x00003a84 adds r6, r4, 4 | r6 = r4 + 4;
0x00003a86 blx 0x1a80 | r0 = fcn_00001a80 ();
0x00003a8a mov r3, r0 | r3 = r0;
0x00003a8c ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00003a8e str r6, [r3] | *(r3) = r6;
0x00003a90 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003a92 str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00003a94 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003a96 str r3, [r2] | *(r2) = r3;
0x00003a98 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00003a9a blx 0x1e0c | r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
0x00003a9e mov r3, r0 | r3 = r0;
0x00003aa0 ldr.w r0, [r8, 0x114] | r0 = *((r8 + 0x114));
0x00003aa4 str r6, [r3] | *(r3) = r6;
0x00003aa6 mov r1, r4 | r1 = r4;
0x00003aa8 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003aaa str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00003aac ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003aae str r3, [r2] | *(r2) = r3;
0x00003ab0 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00003ab2 blx 0x1e78 | loc_imp_apr_file_printf ()
0x00003ab6 b 0x386e | goto label_9;
| label_10:
0x00003ab8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00003aba cmp r3, 0 |
0x00003abc beq 0x3a66 |
| } while (r3 == 0);
| label_49:
0x00003abe ldr r2, [r3] | r2 = *(r3);
0x00003ac0 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x00003ac2 cmp r2, 0x31 |
| if (r2 < 0x31) {
0x00003ac4 bls 0x3ab8 | goto label_10;
| }
0x00003ac6 b 0x3a66 | goto label_11;
| label_32:
0x00003ac8 ldr r4, [pc, 0xd0] |
0x00003aca add r4, pc | r4 = 0x766a;
0x00003acc b 0x385e | goto label_12;
| label_33:
0x00003ace ldr r4, [pc, 0xd0] |
0x00003ad0 mov.w r2, 0x194 | r2 = 0x194;
0x00003ad4 add r4, pc | r4 = 0x767a;
0x00003ad6 b 0x3862 | goto label_13;
| label_43:
0x00003ad8 ldr r1, [pc, 0xc8] |
0x00003ada mov r4, r0 | r4 = r0;
0x00003adc ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003ade ldr.w r8, [sp, 0x1c] | r8 = var_1ch;
0x00003ae2 ldr r0, [pc, 0xc4] |
0x00003ae4 add r1, pc | r1 = 0x768c;
0x00003ae6 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003ae8 movs r3, 3 | r3 = 3;
0x00003aea str r1, [sp, 8] | var_8h = r1;
0x00003aec movw r1, 0x5ff | r1 = 0x5ff;
0x00003af0 add r0, pc | r0 = 0x769e;
0x00003af2 strd r4, r8, [sp] | __asm ("strd r4, r8, [sp]");
0x00003af6 blx 0x1db4 | fcn_00001db4 ();
0x00003afa mov.w r1, 0x190 | r1 = 0x190;
0x00003afe mov r0, r4 | r0 = r4;
0x00003b00 blx 0x1de4 | r0 = fcn_00001de4 ();
0x00003b04 mov fp, r0 |
0x00003b06 b 0x386e | goto label_9;
| label_34:
0x00003b08 ldr r4, [pc, 0xa0] |
0x00003b0a movs r3, 0 | r3 = 0;
0x00003b0c add r4, pc | r4 = 0x76bc;
0x00003b0e b 0x385e | goto label_12;
| label_36:
0x00003b10 ldr r4, [pc, 0x9c] |
0x00003b12 movs r3, 0 | r3 = 0;
0x00003b14 mov.w r2, 0x194 | r2 = 0x194;
0x00003b16 strb r2, [r1, 0xb] | *((r1 + 0xb)) = r2;
0x00003b18 add r4, pc | r4 = 0x76cc;
0x00003b1a b 0x3862 | goto label_13;
| label_47:
0x00003b1c ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00003b20 ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00003b22 cmp r3, 0 |
| if (r3 != 0) {
0x00003b24 bne.w 0x3a26 | goto label_14;
| }
0x00003b28 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
| label_17:
0x00003b2c add.w r3, r1, 0x10 | r3 = r1 + 0x10;
0x00003b30 b 0x3a26 | goto label_14;
| label_30:
0x00003b32 mov.w fp, -1 |
0x00003b36 b 0x386e | goto label_9;
| label_48:
0x00003bb4 ldrd r0, r5, [r8] | __asm ("ldrd r0, r5, [r8]");
0x00003bb8 subs r7, r6, 4 | r7 = r6 - 4;
0x00003bba str r7, [sp, 0x2c] | n = r7;
0x00003bbc ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003bbe blx 0x1b7c | fcn_00001b7c ();
0x00003bc2 ldr r1, [r5, 0x40] | r1 = *((r5 + 0x40));
0x00003bc4 mov r4, r0 | r4 = r0;
0x00003bc6 ldr r0, [r6, -0x88] | r0 = *((r6 - 0x88));
0x00003bca blx 0x1a80 | r0 = fcn_00001a80 ();
0x00003bce mov r3, r0 | r3 = r0;
0x00003bd0 ldr r0, [r5, 0x40] | r0 = *((r5 + 0x40));
0x00003bd2 adds r5, r4, 4 | r5 = r4 + 4;
0x00003bd4 str r5, [r3] | *(r3) = r5;
0x00003bd6 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bd8 str r5, [sp, 0x18] | var_18h = r5;
0x00003bda str r2, [r3, 4] | *((r3 + 4)) = r2;
0x00003bdc ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bde str r3, [r2] | *(r2) = r3;
0x00003be0 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00003be2 blx 0x1e0c | r0 = loc_imp_ap_scan_script_header_err_brigade_ex ();
0x00003be6 str r5, [r0] | *(r0) = r5;
0x00003be8 mov r1, r4 | r1 = r4;
0x00003bea ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bec ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003bee str r2, [r0, 4] | *((r0 + 4)) = r2;
0x00003bf0 ldr r2, [r4, 8] | r2 = *((r4 + 8));
0x00003bf2 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00003bf4 str r0, [r2] | *(r2) = r0;
0x00003bf6 mov r2, r7 | r2 = r7;
0x00003bf8 str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00003bfa mov r0, r8 | r0 = r8;
0x00003bfc blx 0x1e18 | r0 = loc_imp_apr_signal ();
0x00003c00 mov fp, r0 |
0x00003c02 cmp r0, 0 |
| if (r0 == 0) {
0x00003c04 beq.w 0x3de6 | goto label_50;
| }
0x00003c08 ldr.w r0, [r8, 0xb0] | r0 = *((r8 + 0xb0));
0x00003c0c blx 0x1a44 | r0 = fcn_00001a44 ();
0x00003c10 mov r2, r0 | r2 = r0;
0x00003c12 str r0, [sp, 0x1c] | var_1ch = r0;
0x00003c14 ldr.w r0, [sl] | r0 = *(sl);
0x00003c16 movs r0, r0 |
0x00003c18 movs r3, 0 | r3 = 0;
0x00003c1a ldr r7, [r2, 0x10] | r7 = *((r2 + 0x10));
0x00003c1c str r3, [r6, -0x84] | *((r6 - 0x84)) = r3;
0x00003c20 cmp r0, 0 |
| if (r0 == 0) {
0x00003c22 beq.w 0x3e5a | goto label_51;
| }
0x00003c26 add r3, sp, 0x88 | r3 += arg_88h;
0x00003c28 add r1, sp, 0x50 | r1 += var_50h;
0x00003c2a str r3, [sp, 0x20] | var_20h = r3;
0x00003c2c blx 0x1bb8 | r0 = fcn_00001bb8 ();
| if (r0 == 0) {
0x00003c30 cbnz r0, 0x3c40 |
0x00003c32 ldr r2, [r6, -0x4c] | r2 = *((r6 - 0x4c));
0x00003c36 ldr.w r3, [sl, 4] | r3 = *((sl + 4));
0x00003c3a cmp r2, r3 |
| if (r2 > r3) {
0x00003c3c bgt.w 0x3e5a | goto label_51;
| }
| }
0x00003c40 ldr.w r3, [r8] | r3 = *(r8);
0x00003c44 movs r2, 0xe | r2 = 0xe;
0x00003c46 ldr r0, [sp, 0x34] | r0 = var_4h;
0x00003c48 ldr.w r1, [sl] | r1 = *(sl);
0x00003c4c str r3, [sp] | *(sp) = r3;
0x00003c4e movw r3, 0xfff | r3 = 0xfff;
0x00003c52 subs r0, 4 | r0 -= 4;
0x00003c54 blx 0x1d54 | r0 = fcn_00001d54 ();
0x00003c58 mov sb, r0 | sb = r0;
0x00003c5a cmp r0, 0 |
| if (r0 != 0) {
0x00003c5c bne.w 0x3e5a | goto label_51;
| }
0x00003c60 sub.w r5, r6, 0x20 | r5 = r6 - 0x20;
0x00003c64 blx 0x1980 | loc_imp_apr_time_now ();
0x00003c68 mov r3, r1 | r3 = r1;
0x00003c6a mov r2, r0 | r2 = r0;
0x00003c6c mov r0, r5 | r0 = r5;
0x00003c6e blx 0x1974 | loc_imp_apr_ctime ();
0x00003c72 ldr.w r1, [r8, 0xf4] | r1 = *((r8 + 0xf4));
0x00003c76 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003c7a ldr.w r3, [r8, 0x4c] | r3 = *((r8 + 0x4c));
0x00003c7e ldr.w ip, [r8, 0xe4] | ip = *((r8 + 0xe4));
0x00003c82 cmp r1, 0 |
| if (r1 == 0) {
0x00003c84 beq.w 0x3f34 | goto label_52;
| }
0x00003c88 ldr r2, [pc, 0x2c8] |
0x00003c8a add r2, pc | r2 = 0x7be2;
| label_25:
0x00003c8c str.w ip, [sp] | __asm ("str.w ip, [sp]");
0x00003c90 strd r2, r1, [sp, 4] | __asm ("strd r2, r1, [sp, 4]");
0x00003c94 mov r2, r5 | r2 = r5;
0x00003c96 ldr.w r1, [r8, 0x2c] | r1 = *((r8 + 0x2c));
0x00003c9a str r1, [sp, 0xc] | var_ch = r1;
0x00003c9c ldr r1, [pc, 0x2b8] |
0x00003c9e add r1, pc | r1 = 0x7bfa;
0x00003ca0 blx 0x1e84 | strncmp (r0, r1, r2);
0x00003ca4 ldr r1, [pc, 0x2b4] |
0x00003ca6 mov r2, fp | r2 = fp;
0x00003ca8 ldr.w r3, [r8, 0xe8] | r3 = *((r8 + 0xe8));
0x00003cac ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003cb0 add r1, pc | r1 = 0x7c10;
0x00003cb2 blx 0x1e84 | strncmp (r0, r1, r2);
0x00003cb6 ldr r0, [pc, 0x2a8] |
0x00003cb8 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003cbc add r0, pc | r0 = 0x7c22;
0x00003cbe blx 0x1d78 | fcn_00001d78 ();
0x00003cc2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00003cc4 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00003cc6 cmp r3, 0 |
| if (r3 <= 0) {
0x00003cc8 ble 0x3cf2 | goto label_53;
| }
0x00003cca ldr.w sl, [pc, 0x298] |
0x00003cce adds r5, r7, 4 | r5 = r7 + 4;
0x00003cd0 movs r7, 0 | r7 = 0;
0x00003cd2 add sl, pc | sl = 0x7c3c;
| do {
0x00003cd4 ldr r2, [r5, -0x4] | r2 = *((r5 - 0x4));
| if (r2 != 0) {
0x00003cd8 cbz r2, 0x3cea |
0x00003cda ldr r3, [r5] | r3 = *(r5);
0x00003cdc mov r1, sl | r1 = sl;
0x00003cde ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003ce2 blx 0x1e84 | strncmp (r0, r1, r2);
0x00003ce6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00003ce8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| }
0x00003cea adds r7, 1 | r7++;
0x00003cec adds r5, 0xc | r5 += 0xc;
0x00003cee cmp r7, r3 |
0x00003cf0 blt 0x3cd4 |
| } while (r7 < r3);
| label_53:
0x00003cf2 ldr.w r3, [r8, 0x48] | r3 = *((r8 + 0x48));
0x00003cf6 subs r3, 1 | r3--;
0x00003cf8 cmp r3, 1 |
| if (r3 < 1) {
0x00003cfa bls.w 0x3f1a | goto label_54;
| }
| label_24:
0x00003cfe ldr r0, [pc, 0x268] |
0x00003d00 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003d04 add r0, pc | r0 = 0x7c72;
0x00003d06 blx 0x1d78 | fcn_00001d78 ();
0x00003d0a ldr.w r0, [r8, 0xb8] | r0 = *((r8 + 0xb8));
0x00003d0e blx 0x1a44 | fcn_00001a44 ();
0x00003d12 ldr r3, [r0, 8] | r3 = *(0x7c7a);
0x00003d14 mov r7, r0 | r7 = r0;
0x00003d16 ldr r5, [r0, 0x10] | r5 = *(0x7c82);
0x00003d18 cmp r3, 0 |
| if (r3 <= 0) {
0x00003d1a ble 0x3d42 | goto label_55;
| }
0x00003d1c ldr.w sl, [pc, 0x24c] |
0x00003d20 adds r5, 4 | r5 += 4;
0x00003d22 add sl, pc | sl = 0x7c92;
| do {
0x00003d24 ldr r2, [r5, -0x4] | r2 = *((r5 - 0x4));
| if (r2 != 0) {
0x00003d28 cbz r2, 0x3d38 |
0x00003d2a ldr r3, [r5] | r3 = *(r5);
0x00003d2c mov r1, sl | r1 = sl;
0x00003d2e ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003d32 blx 0x1e84 | strncmp (r0, r1, r2);
0x00003d36 ldr r3, [r7, 8] | r3 = *((r7 + 8));
| }
0x00003d38 add.w sb, sb, 1 | sb++;
0x00003d3c adds r5, 0xc | r5 += 0xc;
0x00003d3e cmp sb, r3 |
0x00003d40 blt 0x3d24 |
| } while (sb < r3);
| label_55:
0x00003d42 ldrb r3, [r6, -0x4] | r3 = *((r6 - 0x4));
0x00003d46 cmp r3, 0 |
| if (r3 != 0) {
0x00003d48 bne.w 0x3f0a | goto label_56;
| }
0x00003d4c ldr r4, [r4, 4] | r4 = *((r4 + 4));
0x00003d4e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00003d50 cmp r3, r4 |
| if (r3 == r4) {
0x00003d52 beq.w 0x3ea6 | goto label_57;
| }
0x00003d56 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00003d58 movs r7, 1 | r7 = 1;
0x00003d5a ldr.w sl, [pc, 0x214] |
0x00003d5e sub.w r5, r3, 0x3c | r5 = r3 - 0x3c;
0x00003d62 ldr r3, [pc, 0x210] |
0x00003d64 add sl, pc | sl = 0x7cda;
0x00003d66 mov sb, r5 | sb = r5;
0x00003d68 add r3, pc | r3 = 0x7ce2;
0x00003d6a str r3, [sp, 0x1c] | var_1ch = r3;
0x00003d6c b 0x3d92 |
| while (r7 == 0) {
| label_15:
0x00003d6e movs r3, 0 | r3 = 0;
0x00003d70 ldr r1, [r6, -0x80] | r1 = *((r6 - 0x80));
0x00003d74 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003d78 blx 0x1ad4 | fcn_00001ad4 ();
0x00003d7c ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003d80 mov r0, sl | r0 = sl;
0x00003d82 blx 0x1d78 | fcn_00001d78 ();
0x00003d86 ldr r4, [r4] | r4 = *(r4);
0x00003d88 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00003d8a cmp r3, r4 |
| if (r3 == r4) {
0x00003d8c beq.w 0x3ea6 | goto label_57;
| }
0x00003d90 movs r7, 0 | r7 = 0;
0x00003d92 ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00003d94 ldr r2, [sp, 0x14] | r2 = var_14h;
0x00003d96 cmp r3, r2 |
| if (r3 == r2) {
0x00003d98 beq.w 0x3ea6 | goto label_57;
| }
0x00003d9c ldr r5, [r3, 0x10] | r5 = *((r3 + 0x10));
0x00003d9e mov r2, sb | r2 = sb;
0x00003da0 ldr r1, [sp, 0x34] | r1 = var_4h;
0x00003da2 movs r3, 0 | r3 = 0;
0x00003da4 mov r0, r4 | r0 = r4;
0x00003da6 blx r5 | r0 = uint32_t (*r5)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
0x00003da8 cmp r0, 0 |
| if (r0 != 0) {
0x00003daa bne 0x3ea6 | goto label_57;
| }
0x00003dac ldr r2, [r6, -0x7c] | r2 = *((r6 - 0x7c));
0x00003db0 cmp r2, 0 |
| if (r2 == 0) {
0x00003db2 beq 0x3ea6 | goto label_57;
| }
0x00003db4 cmp r7, 0 |
0x00003db6 beq 0x3d6e |
| }
0x00003db8 ldr r1, [r6, -0x84] | r1 = *((r6 - 0x84));
0x00003dbc ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x00003dbe blx 0x1d78 | fcn_00001d78 ();
0x00003dc2 ldr r2, [r6, -0x7c] | r2 = *((r6 - 0x7c));
0x00003dc6 b 0x3d6e | goto label_15;
| label_40:
0x00003dc8 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00003dcc ldr r3, [r3, 0x60] | r3 = *((r3 + 0x60));
0x00003dce cmp r3, 0 |
| if (r3 == 0) {
0x00003dd0 beq 0x3e70 | goto label_58;
| }
0x00003dd2 ldr r1, [r3] | r1 = *(r3);
0x00003dd4 cmp r1, 0 |
| if (r1 == 0) {
0x00003dd6 beq.w 0x3a26 | goto label_14;
| }
0x00003dda ldrsb r7, [r1, r2] | r7 = *((r1 + r2));
0x00003ddc cmp r7, 0 |
| if (r7 < 0) {
0x00003dde blt.w 0x3a26 | goto label_14;
| }
0x00003de2 ldrsb r1, [r1, r2] | r1 = *((r1 + r2));
0x00003de4 b 0x3820 | goto label_16;
| label_50:
0x00003de6 ldr r1, [pc, 0x190] |
0x00003de8 ldr.w r0, [r8, 0xb4] | r0 = *((r8 + 0xb4));
0x00003dec add r1, pc | r1 = 0x7d6a;
0x00003dee blx 0x1a08 | r0 = fcn_00001a08 ();
0x00003df2 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00003df4 cbz r0, 0x3e04 |
0x00003df6 ldrb r2, [r0] | r2 = *(r0);
0x00003df8 ldr.w r3, [r8, 0x44] | r3 = *((r8 + 0x44));
0x00003dfc cmp r2, 0x2f |
| if (r2 == 0x2f) {
0x00003dfe beq 0x3eb0 | goto label_59;
| }
0x00003e00 cmp r3, 0xc8 |
| if (r3 == 0xc8) {
0x00003e02 beq 0x3ee2 | goto label_60;
| }
| }
| label_20:
0x00003e04 ldr.w r0, [r8, 0x114] | r0 = *((r8 + 0x114));
0x00003e08 mov r1, r4 | r1 = r4;
0x00003e0a blx 0x1e78 | r0 = loc_imp_apr_file_printf ()
0x00003e0e cmp r0, 0 |
| if (r0 == 0) {
0x00003e10 beq.w 0x386e | goto label_9;
| }
0x00003e14 ldr r3, [sp, 0x24] | r3 = var_24h;
0x00003e16 ldr.w r1, [r8, 0x108] | r1 = *((r8 + 0x108));
0x00003e1a ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x00003e1c cmp r2, 0 |
| if (r2 < 0) {
0x00003e1e blt 0x3e8a | goto label_61;
| }
0x00003e20 cmp r1, 0 |
| if (r1 == 0) {
0x00003e22 beq 0x3ef4 | goto label_62;
| }
0x00003e24 ldr r3, [r1] | r3 = *(r1);
0x00003e26 cmp r3, 0 |
| if (r3 == 0) {
0x00003e28 beq 0x3e9a | goto label_23;
| }
0x00003e2a ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003e2c cmp r3, 0 |
| if (r3 < 0) {
0x00003e2e blt 0x3e9a | goto label_23;
| }
| label_22:
0x00003e30 cmp r3, 7 |
0x00003e32 ite le |
| if (r3 > 7) {
0x00003e34 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x00003e36 movgt r3, 1 | r3 = 1;
| }
| label_18:
0x00003e38 cmp r3, 0 |
| if (r3 == 0) {
0x00003e3a beq.w 0x386e | goto label_9;
| }
0x00003e3e ldr r1, [pc, 0x13c] |
0x00003e40 movs r3, 8 | r3 = 8;
0x00003e42 str r0, [sp] | *(sp) = r0;
0x00003e44 ldr r0, [pc, 0x138] |
0x00003e46 add r1, pc | r1 = 0x7dc8;
0x00003e48 str.w r8, [sp, 4] | __asm ("str.w r8, [var_4h_2]");
0x00003e4c str r1, [sp, 8] | var_8h = r1;
0x00003e4e movw r1, 0x695 | r1 = 0x695;
0x00003e52 add r0, pc | r0 = 0x7dd6;
0x00003e54 blx 0x1db4 | fcn_00001db4 ();
0x00003e58 b 0x386e | goto label_9;
| label_51:
0x00003e5a mov r0, r4 | r0 = r4;
0x00003e5c bl 0x1fd0 | fcn_00001fd0 (r0);
| label_19:
0x00003e60 cmp.w fp, 0x130 |
0x00003e64 itt eq |
| if (fp != 0x130) {
0x00003e66 streq fp, [r8, 0x44] | *((r8 + 0x44)) = fp;
| }
| if (fp == 0x130) {
0x00003e6a mov.w fp, 0 |
| }
0x00003e6e b 0x386e | goto label_9;
| label_58:
0x00003e70 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x00003e74 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00003e76 cmp r3, 0 |
| if (r3 == 0) {
0x00003e78 beq.w 0x3b2c | goto label_17;
| }
0x00003e7c ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003e7e cmp r3, 0 |
| if (r3 < 0) {
0x00003e80 blt.w 0x3b2c | goto label_17;
| }
0x00003e84 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00003e86 ldrsb r1, [r3, r2] | r1 = *((r3 + r2));
0x00003e88 b 0x3820 | goto label_16;
| if (r1 == 0) {
| label_61:
0x00003e8a cbnz r1, 0x3e9a |
0x00003e8c ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
| label_21:
0x00003e90 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
| if (r1 != 0) {
0x00003e92 cbnz r1, 0x3e9a | goto label_23;
| }
0x00003e94 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
| label_26:
0x00003e98 adds r1, 0x10 | r1 += 0x10;
| }
| label_23:
0x00003e9a ldr r3, [r1, 4] | r3 = *((r1 + 4));
0x00003e9c cmp r3, 7 |
0x00003e9e ite le |
| if (r3 > 7) {
0x00003ea0 movle r3, 0 | r3 = 0;
| }
| if (r3 <= 7) {
0x00003ea2 movgt r3, 1 | r3 = 1;
| }
0x00003ea4 b 0x3e38 | goto label_18;
| label_57:
0x00003ea6 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003eaa blx 0x1bd0 | fcn_00001bd0 ();
0x00003eae b 0x3e60 | goto label_19;
| label_59:
0x00003eb0 cmp r3, 0xc8 |
| if (r3 != 0xc8) {
0x00003eb2 bne 0x3e04 | goto label_20;
| }
0x00003eb4 mov r0, r4 | r0 = r4;
0x00003eb6 bl 0x1fd0 | fcn_00001fd0 (r0);
0x00003eba mov r0, r4 | r0 = r4;
0x00003ebc blx 0x1b58 | fcn_00001b58 ();
0x00003ec0 ldr r3, [pc, 0xc0] |
0x00003ec2 ldr r1, [pc, 0xc4] |
0x00003ec4 ldr.w r0, [r8, 0xb0] | r0 = *((r8 + 0xb0));
0x00003ec8 add r3, pc | r3 = 0x7e50;
0x00003eca str.w fp, [r8, 0x48] | __asm ("str.w fp, [r8, 0x48]");
0x00003ece add r1, pc | r1 = 0x7e5c;
0x00003ed0 str.w r3, [r8, 0x4c] | __asm ("str.w r3, [r8, 0x4c]");
0x00003ed4 blx 0x1af8 | fcn_00001af8 ();
0x00003ed8 mov r1, r8 | r1 = r8;
0x00003eda mov r0, r5 | r0 = r5;
0x00003edc blx 0x1aa4 | fcn_00001aa4 ();
0x00003ee0 b 0x386e | goto label_9;
| label_60:
0x00003ee2 mov r0, r4 | r0 = r4;
0x00003ee4 mov.w fp, 0x12e |
0x00003ee8 bl 0x1fd0 | fcn_00001fd0 (r0);
0x00003eec mov r0, r4 | r0 = r4;
0x00003eee blx 0x1b58 | fcn_00001b58 ();
0x00003ef2 b 0x386e | goto label_9;
| label_62:
0x00003ef4 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00003ef8 ldr r1, [r3, 0x60] | r1 = *((r3 + 0x60));
| if (r1 == 0) {
0x00003efa cbz r1, 0x3f40 | goto label_63;
| }
0x00003efc ldr r4, [r1] | r4 = *(r1);
0x00003efe cmp r4, 0 |
| if (r4 == 0) {
0x00003f00 beq 0x3e90 | goto label_21;
| }
0x00003f02 ldrsb r3, [r4, r2] | r3 = *((r4 + r2));
0x00003f04 cmp r3, 0 |
| if (r3 >= 0) {
0x00003f06 bge 0x3e30 | goto label_22;
| }
0x00003f08 b 0x3e9a | goto label_23;
| label_56:
0x00003f0a ldr r1, [pc, 0x80] |
0x00003f0c ldr r2, [sp, 0x2c] | r2 = n;
0x00003f0e ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003f12 add r1, pc | r1 = 0x7ea4;
0x00003f14 blx 0x1e84 | strncmp (r0, r1, r2);
0x00003f16 vqshl.s32 d14, d8, 0x16 | __asm ("vqshl.s32 d14, d8, 0x16");
| label_54:
0x00003f1a ldr r3, [sp, 0x28] | r3 = var_28h;
0x00003f1c ldrb r3, [r3] | r3 = *(r3);
0x00003f1e cmp r3, 0 |
| if (r3 == 0) {
0x00003f20 beq.w 0x3cfe | goto label_24;
| }
0x00003f24 ldr r1, [pc, 0x68] |
0x00003f26 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00003f28 ldr r0, [r6, -0x84] | r0 = *((r6 - 0x84));
0x00003f2c add r1, pc | r1 = 0x7ec0;
0x00003f2e blx 0x1e84 | strncmp (r0, r1, r2);
0x00003f32 b 0x3cfe | goto label_24;
| label_52:
0x00003f34 ldr r2, [pc, 0x5c] |
0x00003f36 add r2, pc | r2 = 0x7ece;
0x00003f38 mov r1, r2 | r1 = r2;
0x00003f3a b 0x3c8c | goto label_25;
| label_42:
0x00003f3c blx 0x1a74 | fcn_00001a74 ();
| label_63:
0x00003f40 ldr.w r1, [r8, 8] | r1 = *((r8 + 8));
0x00003f44 ldr r3, [r1, 0x10] | r3 = *((r1 + 0x10));
0x00003f46 cmp r3, 0 |
| if (r3 == 0) {
0x00003f48 beq 0x3e98 | goto label_26;
| }
0x00003f4a ldrsb r3, [r3, r2] | r3 = *((r3 + r2));
0x00003f4c cmp r3, 0 |
| if (r3 >= 0) {
0x00003f4e bge.w 0x3e30 | goto label_22;
| }
0x00003f52 b 0x3e98 | goto label_26;
| }
[*] Function printf used 3 times mod_cgid.so