[*] Binary protection state of kmod
Full RELRO Canary found NX enabled PIE enabled No RPATH No RUNPATH No Symbols
[*] Function mmap tear down of kmod
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x37cc */
| #include <stdint.h>
|
; (fcn) fcn.000037cc () | void fcn_000037cc (int16_t arg1, int16_t arg2) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
0x000037cc ldr r2, [pc, 0x26c] |
0x000037ce ldr r3, [pc, 0x270] | r3 = *(0x3a42);
0x000037d0 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000037d4 sub sp, 0x1c |
0x000037d6 add r2, pc | r2 = 0x7216;
0x000037d8 mov r5, r0 | r5 = r0;
0x000037da mov r6, r1 | r6 = r1;
0x000037dc ldr r3, [r2, r3] |
0x000037de ldr r3, [r3] | r3 = *(0x7216);
0x000037e0 str r3, [sp, 0x14] | var_14h = r3;
0x000037e2 mov.w r3, 0 | r3 = 0;
0x000037e6 bl 0xcfb4 | fcn_0000cfb4 (r0);
0x000037ea ldr r3, [pc, 0x258] |
0x000037ec movs r2, 0 | r2 = 0;
0x000037ee mov r7, r0 | r7 = r0;
0x000037f0 strd r2, r2, [sp, 0xc] | __asm ("strd r2, r2, [var_10h]");
0x000037f4 add r3, pc |
0x000037f6 ldr r3, [r3] | r3 = *(0x723e);
0x000037f8 cmp r3, 0 |
| if (r3 == 0) {
0x000037fa beq.w 0x393e | goto label_10;
| }
| label_5:
0x000037fe ldr r3, [pc, 0x248] |
0x00003800 add r3, pc |
0x00003802 ldr r3, [r3] | r3 = *(0x724e);
0x00003804 cmp r3, 0 |
| if (r3 == 0) {
0x00003806 beq.w 0x3916 | goto label_11;
| }
| label_3:
0x0000380a mov.w r8, 0 | r8 = 0;
| label_4:
0x0000380e ldr r0, [sp, 0x10] | r0 = var_10h;
0x00003810 movs r1, 0 | r1 = 0;
0x00003812 bl 0x3a9c | fcn_00003a9c (r0, r1);
0x00003816 cmp r6, 1 |
| if (r6 == 1) {
0x00003818 bne 0x3826 |
0x0000381a ldr r3, [pc, 0x230] |
0x0000381c add r3, pc |
0x0000381e ldr r3, [r3] | r3 = *(0x726e);
0x00003820 cmp r3, 0 |
| if (r3 != 0) {
0x00003822 bne.w 0x399e | goto label_12;
| }
| }
| label_7:
0x00003826 ldr r3, [pc, 0x228] |
0x00003828 add r3, pc |
0x0000382a ldr r3, [r3] | r3 = *(0x727e);
0x0000382c cmp r3, 0 |
| if (r3 != 0) {
0x0000382e bne 0x3902 | goto label_13;
| }
0x00003830 cmp.w r8, 0 |
| if (r8 == 0) {
0x00003834 beq.w 0x3a02 | goto label_14;
| }
| label_0:
0x00003838 mov r0, r5 | r0 = r5;
0x0000383a bl 0xcfb4 | r0 = fcn_0000cfb4 (r0);
0x0000383e mov sb, r0 | sb = r0;
0x00003840 mov r0, r8 | r0 = r8;
0x00003842 str.w sb, [sp, 4] | __asm ("str.w sb, [var_4h]");
0x00003846 blx 0x1a10 | r0 = stack_chk_fail ();
0x0000384a mov r5, r0 | r5 = r0;
0x0000384c cmp r0, 0 |
| if (r0 == 0) {
0x0000384e beq.w 0x3a30 | goto label_15;
| }
0x00003852 ldr r7, [pc, 0x200] |
0x00003854 mov.w r8, 0 | r8 = 0;
0x00003858 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000385c mov sl, r0 | sl = r0;
0x0000385e add r7, pc | r7 = 0x72b8;
0x00003860 b 0x38a2 |
| while (r0 != 0) {
0x00003862 sub.w r0, sl, 0xc | r0 = sl - 0xc;
0x00003866 sub.w fp, r4, r5 |
0x0000386a sub.w r6, sl, 0xd | r6 = sl - 0xd;
0x0000386e adds r4, 0xd | r4 += 0xd;
0x00003870 blx 0x1b0c | strerror (r0);
0x00003874 sub.w sl, r6, fp | sl = r6 - fp;
0x00003878 mov sb, r0 | sb = r0;
0x0000387a cmp r0, 0 |
| if (r0 == 0) {
0x0000387c beq.w 0x3a24 | goto label_16;
| }
0x00003880 mov r1, r5 | r1 = r5;
0x00003882 mov r2, fp | r2 = fp;
0x00003884 blx 0x19c8 | mmap64 ()
0x00003888 mov r2, sl | r2 = sl;
0x0000388a mov r1, r4 | r1 = r4;
0x0000388c add.w r0, sb, fp | r0 = sb + fp;
0x00003890 mov sl, r6 | sl = r6;
0x00003892 blx 0x19c8 | mmap64 ()
0x00003896 mov r0, r5 | r0 = r5;
0x00003898 strb.w r8, [sb, r6] | *((sb + r6)) = r8;
0x0000389c mov r5, sb | r5 = sb;
0x0000389e blx 0x19a0 | fcn_000019a0 ();
0x000038a2 mov r1, r7 | r1 = r7;
0x000038a4 mov r0, r5 | r0 = r5;
0x000038a6 blx 0x18e4 | r0 = strstr (r0, r1);
0x000038aa mov r4, r0 | r4 = r0;
0x000038ac cmp r0, 0 |
0x000038ae bne 0x3862 |
| }
0x000038b0 ldr r7, [pc, 0x1a4] |
0x000038b2 mov r2, r5 | r2 = r5;
0x000038b4 ldr r0, [pc, 0x1a4] |
0x000038b6 add r7, pc | r7 = 0x7312;
0x000038b8 add r0, pc | r0 = 0x7318;
0x000038ba mov r1, r7 | r1 = r7;
0x000038bc bl 0x3320 | fcn_00003320 ();
0x000038c0 ldr r3, [pc, 0x19c] |
0x000038c2 add r3, pc |
0x000038c4 ldr r3, [r3] | r3 = *(0x7326);
0x000038c6 cmp r3, 0 |
| if (r3 == 0) {
0x000038c8 beq 0x395c | goto label_17;
| }
0x000038ca mov r0, r5 | r0 = r5;
0x000038cc blx 0x19a0 | fcn_000019a0 ();
| label_2:
0x000038d0 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000038d2 movs r1, 0 | r1 = 0;
0x000038d4 bl 0x3a9c | fcn_00003a9c (r0, r1);
| label_1:
0x000038d8 ldr r0, [sp, 0xc] | r0 = var_ch;
0x000038da bl 0xcb50 | fcn_0000cb50 (r0);
0x000038de ldr r0, [sp, 0x10] | r0 = var_10h;
0x000038e0 bl 0xcb50 | fcn_0000cb50 (r0);
| label_8:
0x000038e4 ldr r2, [pc, 0x17c] |
0x000038e6 ldr r3, [pc, 0x158] | r3 = *(0x3a42);
0x000038e8 add r2, pc | r2 = 0x7350;
0x000038ea ldr r3, [r2, r3] | r3 = *(0x7350);
0x000038ec ldr r2, [r3] | r2 = *(0x7350);
0x000038ee ldr r3, [sp, 0x14] | r3 = var_14h;
0x000038f0 eors r2, r3 | r2 ^= r3;
0x000038f2 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000038f6 bne.w 0x3a36 | goto label_18;
| }
0x000038fa mov r0, r4 | r0 = r4;
0x000038fc add sp, 0x1c |
0x000038fe pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_13:
0x00003902 cmp.w r8, 0 |
| if (r8 != 0) {
0x00003906 bne 0x3838 | goto label_0;
| }
| label_9:
0x00003908 mov r0, r5 | r0 = r5;
0x0000390a bl 0x33a8 | r0 = fcn_000033a8 (r0);
0x0000390e mov r4, r0 | r4 = r0;
| label_6:
0x00003910 cmp r4, 0 |
| if (r4 < 0) {
0x00003912 blt 0x38d8 | goto label_1;
| }
0x00003914 b 0x38d0 | goto label_2;
| label_11:
0x00003916 mov r0, r5 | r0 = r5;
0x00003918 bl 0xd74c | r0 = fcn_0000d74c (r0);
0x0000391c subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000391e blt 0x39b2 | goto label_19;
| }
| if (r4 != r0) {
0x00003920 bne.w 0x380a | goto label_3;
| }
0x00003924 cmp r6, 1 |
| if (r6 != 1) {
0x00003926 bne 0x38d8 | goto label_1;
| }
0x00003928 ldr r3, [pc, 0x13c] |
0x0000392a mov r2, r7 | r2 = r7;
0x0000392c ldr r1, [pc, 0x13c] |
0x0000392e mvn r4, 1 | r4 = ~1;
0x00003930 lsls r1, r0, 0x10 | r1 = r0 << 0x10;
0x00003932 add r3, pc | r3 = 0x739e;
0x00003934 ldr r0, [r3] | r0 = *(0x739e);
0x00003936 add r1, pc | r1 = 0x73a6;
0x00003938 bl 0x85e4 | fcn_000085e4 (r0);
0x0000393c b 0x38d8 | goto label_1;
| label_10:
0x0000393e add r2, sp, 0x10 | r2 += var_10h;
0x00003940 add r1, sp, 0xc | r1 += var_ch;
0x00003942 mov r0, r5 | r0 = r5;
0x00003944 bl 0xd2e4 | r0 = fcn_0000d2e4 (r0, r1, r2);
0x00003948 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000394a blt 0x39ec | goto label_20;
| }
0x0000394c mov r0, r5 | r0 = r5;
0x0000394e bl 0xd59c | r0 = fcn_0000d59c (r0);
0x00003952 mov r8, r0 | r8 = r0;
0x00003954 cmp r0, 0 |
| if (r0 != 0) {
0x00003956 bne.w 0x380e | goto label_4;
| }
0x0000395a b 0x37fe | goto label_5;
| label_17:
0x0000395c ldr r6, [pc, 0x110] |
0x0000395e movs r2, 1 | r2 = 1;
0x00003960 ldr r1, [sp, 4] | r1 = var_4h;
0x00003962 add r6, pc | r6 = 0x73d6;
0x00003964 mov r0, r6 | r0 = r6;
0x00003966 blx 0x1bcc | errno_location ();
0x0000396a mov r0, r5 | r0 = r5;
0x0000396c blx 0x1b24 | r0 = vfprintf_chk ();
0x00003970 mov r4, r0 | r4 = r0;
0x00003972 mov r0, r6 | r0 = r6;
0x00003974 blx 0x1d8c | fcn_00001d8c ();
0x00003978 adds r3, r4, 1 | r3 = r4 + 1;
| if (r3 == r4) {
0x0000397a beq 0x39d2 | goto label_21;
| }
0x0000397c ubfx r1, r4, 8, 8 | r1 = (r4 >> 8) & ((1 << 8) - 1);
| if (r1 != 0) {
0x00003980 cbz r1, 0x3996 |
0x00003982 ldr r0, [pc, 0xf0] |
0x00003984 rsbs r4, r1, 0 | r4 = r1 - ;
0x00003986 ldr r1, [pc, 0xf0] |
0x00003988 mov r2, r7 | r2 = r7;
0x0000398a ldr r3, [sp, 4] | r3 = var_4h;
0x0000398c add r0, pc |
0x0000398e ldr r0, [r0] | r0 = *(0x7406);
0x00003990 add r1, pc | r1 = 0x740e;
0x00003992 bl 0x85e4 | fcn_000085e4 (r0);
| }
0x00003996 mov r0, r5 | r0 = r5;
0x00003998 blx 0x19a0 | fcn_000019a0 ();
0x0000399c b 0x3910 | goto label_6;
| label_12:
0x0000399e mov r0, r5 | r0 = r5;
0x000039a0 bl 0xcf40 | fcn_0000cf40 (r0);
0x000039a4 mov r1, r6 | r1 = r6;
0x000039a6 bl 0x3a9c | r0 = fcn_00003a9c (r0, r1);
0x000039aa subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 >= r0) {
0x000039ac bge.w 0x3826 | goto label_7;
| }
0x000039b0 b 0x38d8 | goto label_1;
| label_19:
0x000039b2 ldr r3, [pc, 0xc8] |
0x000039b4 add r3, pc | r3 = 0x7436;
0x000039b6 ldr r4, [r3] | r4 = *(0x7436);
0x000039b8 cmp r4, 0 |
| if (r4 == 0) {
0x000039ba beq 0x38d8 | goto label_1;
| }
0x000039bc ldr r3, [pc, 0xc0] |
0x000039be mov r2, r7 | r2 = r7;
0x000039c0 ldr r1, [pc, 0xc0] |
0x000039c2 mvn r4, 1 | r4 = ~1;
0x000039c6 add r3, pc | r3 = 0x744a;
0x000039c8 ldr r0, [r3] | r0 = *(0x744a);
0x000039ca add r1, pc | r1 = 0x7452;
0x000039cc bl 0x85e4 | fcn_000085e4 (r0);
0x000039d0 b 0x38d8 | goto label_1;
| label_21:
0x000039d2 ldr r1, [pc, 0xb4] |
0x000039d4 mov r2, r7 | r2 = r7;
0x000039d6 ldr r3, [sp, 4] | r3 = var_4h;
0x000039d8 add r1, pc | r1 = 0x7466;
0x000039da ldr r0, [r1] | r0 = *(0x7466);
0x000039dc ldr r1, [pc, 0xac] |
0x000039de add r1, pc | r1 = 0x746e;
0x000039e0 bl 0x85e4 | fcn_000085e4 (r0);
0x000039e4 mov r0, r5 | r0 = r5;
0x000039e6 blx 0x19a0 | fcn_000019a0 ();
0x000039ea b 0x38d8 | goto label_1;
| label_20:
0x000039ec rsbs r0, r4, 0 | r0 = r4 - ;
0x000039ee blx 0x1b18 | system (r0);
0x000039f2 ldr r1, [pc, 0x9c] |
0x000039f4 mov r3, r0 | r3 = r0;
0x000039f6 mov r2, r7 | r2 = r7;
0x000039f8 movs r0, 4 | r0 = 4;
0x000039fa add r1, pc | r1 = 0x7490;
0x000039fc bl 0x85e4 | fcn_000085e4 (r0);
0x00003a00 b 0x38e4 | goto label_8;
| label_14:
0x00003a02 mov r0, r5 | r0 = r5;
0x00003a04 bl 0xddf0 | r0 = fcn_0000ddf0 (r0);
0x00003a08 cmp r0, 0 |
| if (r0 <= 0) {
0x00003a0a ble.w 0x3908 | goto label_9;
| }
0x00003a0e ldr r3, [pc, 0x84] |
0x00003a10 mov r2, r7 | r2 = r7;
0x00003a12 ldr r1, [pc, 0x84] |
0x00003a14 mvn r4, 0xf | r4 = ~0xf;
0x00003a16 lsls r7, r1, 0x10 | r7 = r1 << 0x10;
0x00003a18 add r3, pc | r3 = 0x74b2;
0x00003a1a ldr r0, [r3] | r0 = *(0x74b2);
0x00003a1c add r1, pc | r1 = 0x74ba;
0x00003a1e bl 0x85e4 | fcn_000085e4 (r0);
0x00003a22 b 0x38d8 | goto label_1;
| label_16:
0x00003a24 mov r0, r5 | r0 = r5;
0x00003a26 mvn r4, 0xb | r4 = ~0xb;
0x00003a2a blx 0x19a0 | fcn_000019a0 ();
0x00003a2e b 0x38d8 | goto label_1;
| label_15:
0x00003a30 mvn r4, 0xb | r4 = ~0xb;
0x00003a34 b 0x38d8 | goto label_1;
| label_18:
0x00003a36 blx 0x1a1c | stat64 ();
0x00003a3a nop |
0x00003a3c movs r6, 0x42 | r6 = 0x42;
0x00003a3e movs r2, r0 | r2 = r0;
0x00003a40 lsls r4, r7, 6 | r4 = r7 << 6;
0x00003a42 movs r0, r0 |
0x00003a44 cmp r0, 0x98 |
0x00003a46 movs r2, r0 | r2 = r0;
0x00003a48 cmp r0, 0x90 |
0x00003a4a movs r2, r0 | r2 = r0;
0x00003a4c cmp r0, 0x7c |
0x00003a4e movs r2, r0 | r2 = r0;
0x00003a50 cmp r0, 0x68 |
0x00003a52 movs r2, r0 | r2 = r0;
0x00003a54 ands.w r0, lr, r0 | r0 = lr & r0;
0x00003a58 ldrd r0, r0, [r6] | __asm ("ldrd r0, r0, [r6]");
0x00003a5c lsrs r4, r3, 0x20 | r4 = r3 >> 0x20;
0x00003a5e movs r1, r0 | r1 = r0;
0x00003a60 movs r7, 0xbe | r7 = 0xbe;
0x00003a62 movs r2, r0 | r2 = r0;
0x00003a64 movs r5, 0x30 | r5 = 0x30;
0x00003a66 movs r2, r0 | r2 = r0;
0x00003a68 movs r7, 6 | r7 = 6;
0x00003a6a movs r2, r0 | r2 = r0;
0x00003a6c b 0x3b14 |
0x00003b14 invalid |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x4754 */
| #include <stdint.h>
|
; (fcn) fcn.00004754 () | uint32_t fcn_00004754 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_10h;
| char * string;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_30h;
| int16_t var_70h;
| int16_t var_8ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
| label_4:
0x00004604 ldr r2, [r0] | r2 = *(r0);
0x00004606 ldr r3, [r1] | r3 = *(r1);
0x00004608 ldr r0, [r2, 0x30] | r0 = *((r2 + 0x30));
0x0000460a ldr r3, [r3, 0x30] | r3 = *((r3 + 0x30));
0x0000460c subs r0, r0, r3 | r0 -= r3;
0x0000460e bx lr | return r0;
0x00004754 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00004758 mov r7, r2 | r7 = r2;
0x0000475a ldr r2, [pc, 0x1f8] |
0x0000475c mov sb, r3 | sb = r3;
0x0000475e sub sp, 0x94 |
0x00004760 mov r6, r0 | r6 = r0;
0x00004762 ldr r3, [pc, 0x1f4] | r3 = *(0x495a);
0x00004764 add r2, pc | r2 = 0x90be;
0x00004766 str r1, [sp, 0x1c] | var_1ch = r1;
0x00004768 ldr.w r8, [pc, 0x1f0] |
0x0000476c ldr r3, [r2, r3] |
0x0000476e ldr.w fp, [pc, 0x1f0] |
0x00004772 add r8, pc | r8 = 0x90d2;
0x00004774 ldr r3, [r3] | r3 = *(0x90be);
0x00004776 str r3, [sp, 0x8c] | var_8ch = r3;
0x00004778 mov.w r3, 0 | r3 = 0;
0x0000477c blx 0x1d40 | renameat ();
0x00004780 ldr r3, [pc, 0x1e0] |
0x00004782 add fp, pc | fp = 0x90e8;
0x00004784 str r0, [sp, 0x10] | var_10h = r0;
0x00004786 add r3, pc | r3 = 0x90ee;
0x00004788 str r3, [sp, 0x18] | var_18h = r3;
0x0000478a movs r3, 1 | r3 = 1;
0x0000478c str r3, [sp, 0x14] | string = r3;
| do {
| label_0:
0x0000478e mov r0, r6 | r0 = r6;
0x00004790 blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x00004794 cmp r0, 0 |
| if (r0 == 0) {
0x00004796 beq 0x4822 | goto label_3;
| }
| label_1:
0x00004798 ldrb r3, [r0, 0x13] | r3 = *((r0 + 0x13));
0x0000479a add.w r4, r0, 0x13 | r4 = r0 + 0x13;
0x0000479e cmp r3, 0x2e |
| if (r3 == 0x2e) {
0x000047a0 beq 0x4840 | goto label_5;
| }
| label_2:
0x000047a2 mov r1, r8 | r1 = r8;
0x000047a4 mov r0, r4 | r0 = r4;
0x000047a6 blx 0x1924 | r0 = fcn_00001924 ();
0x000047aa cmp r0, 0 |
0x000047ac beq 0x478e |
| } while (r0 == 0);
0x000047ae mov r1, fp | r1 = fp;
0x000047b0 mov r0, r4 | r0 = r4;
0x000047b2 blx 0x1924 | r0 = fcn_00001924 ();
0x000047b6 cmp r0, 0 |
| if (r0 == 0) {
0x000047b8 beq 0x478e | goto label_0;
| }
0x000047ba mov r0, r4 | r0 = r4;
0x000047bc blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x000047c0 add.w sl, r0, r7 | sl = r0 + r7;
0x000047c4 mov r5, r0 | r5 = r0;
0x000047c6 add.w r3, sl, 2 | r3 = sl + 2;
0x000047ca cmp.w r3, 0x1000 |
| if (r3 >= 0x1000) {
0x000047ce bhs 0x4852 | goto label_6;
| }
0x000047d0 ldr r0, [sp, 0x10] | r0 = var_10h;
0x000047d2 movs r3, 0 | r3 = 0;
0x000047d4 add r2, sp, 0x20 | r2 += var_20h;
0x000047d6 mov r1, r4 | r1 = r4;
0x000047d8 blx 0x1adc | r0 = asprintf_chk ();
0x000047dc cmp r0, 0 |
| if (r0 < 0) {
0x000047de blt.w 0x48ee | goto label_7;
| }
0x000047e2 ldr r3, [sp, 0x30] | r3 = var_30h;
0x000047e4 and r3, r3, 0xf000 | r3 &= 0xf000;
0x000047e8 cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x000047ec beq 0x4874 | goto label_8;
| }
0x000047ee cmp.w r3, 0x8000 |
| if (r3 != 0x8000) {
0x000047f2 bne 0x4868 | goto label_9;
| }
0x000047f4 mov r1, r5 | r1 = r5;
0x000047f6 mov r0, r4 | r0 = r4;
0x000047f8 bl 0x9400 | r0 = fcn_00009400 (r0, r1);
0x000047fc cmp r0, 0 |
| if (r0 == 0) {
0x000047fe beq 0x478e | goto label_0;
| }
0x00004800 adds r2, r5, 1 | r2 = r5 + 1;
0x00004802 mov r1, r4 | r1 = r4;
0x00004804 add.w r0, sb, r7 | r0 = sb + r7;
0x00004808 blx 0x19c8 | mmap64 ()
0x0000480c ldr r3, [sp, 0x70] | r3 = var_70h;
0x0000480e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00004810 cmp r3, r2 |
| if (r3 > r2) {
0x00004812 bgt 0x490e | goto label_10;
| }
0x00004814 movs r3, 1 | r3 = 1;
0x00004816 mov r0, r6 | r0 = r6;
0x00004818 str r3, [sp, 0x14] | string = r3;
0x0000481a blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x0000481e cmp r0, 0 |
| if (r0 != 0) {
0x00004820 bne 0x4798 | goto label_1;
| }
| label_3:
0x00004822 ldr r2, [pc, 0x144] |
0x00004824 ldr r3, [pc, 0x130] | r3 = *(0x4958);
0x00004826 add r2, pc | r2 = 0x9194;
0x00004828 ldr r3, [r2, r3] | r3 = *(0x9194);
0x0000482a ldr r2, [r3] | r2 = *(0x9194);
0x0000482c ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x0000482e eors r2, r3 | r2 ^= r3;
0x00004830 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00004834 bne.w 0x4950 | goto label_11;
| }
0x00004838 ldr r0, [sp, 0x14] | r0 = string;
0x0000483a add sp, 0x94 |
0x0000483c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x00004840 ldrb r3, [r0, 0x14] | r3 = *((r0 + 0x14));
0x00004842 cmp r3, 0 |
| if (r3 == 0) {
0x00004844 beq 0x478e | goto label_0;
| }
0x00004846 cmp r3, 0x2e |
| if (r3 != 0x2e) {
0x00004848 bne 0x47a2 | goto label_2;
| }
0x0000484a ldrb r3, [r0, 0x15] | r3 = *((r0 + 0x15));
0x0000484c cmp r3, 0 |
| if (r3 != 0) {
0x0000484e bne 0x47a2 | goto label_2;
| }
0x00004850 b 0x478e | goto label_0;
| label_6:
0x00004852 ldr r1, [pc, 0x118] |
0x00004854 movs r2, 0 | r2 = 0;
0x00004856 strb.w r2, [sb, r7] | *((sb + r7)) = r2;
0x0000485a mov r3, r4 | r3 = r4;
0x0000485c mov r2, sb | r2 = sb;
0x0000485e movs r0, 3 | r0 = 3;
0x00004860 add r1, pc | r1 = 0x91d2;
0x00004862 bl 0x85e4 | fcn_000085e4 (r0);
0x00004866 b 0x478e | goto label_0;
| label_9:
0x00004868 ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000486a mov r2, sb | r2 = sb;
0x0000486c movs r0, 3 | r0 = 3;
0x0000486e bl 0x85e4 | fcn_000085e4 (r0);
0x00004872 b 0x478e | goto label_0;
| label_8:
0x00004874 adds r2, r5, 1 | r2 = r5 + 1;
0x00004876 mov r1, r4 | r1 = r4;
0x00004878 add.w r0, sb, r7 | r0 = sb + r7;
0x0000487c blx 0x19c8 | mmap64 ()
0x00004880 addw r3, sl, 0x101 | __asm ("addw r3, sl, 0x101");
0x00004884 cmp.w r3, 0x1000 |
| if (r3 >= 0x1000) {
0x00004888 bhs 0x492e | goto label_12;
| }
0x0000488a ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000488c movs r2, 0 | r2 = 0;
0x0000488e mov r1, r4 | r1 = r4;
0x00004890 blx 0x1bd8 | r0 = sprintf_chk ();
0x00004894 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x00004896 blt 0x48fe | goto label_13;
| }
0x00004898 blx 0x1d00 | r0 = fcn_00001d00 ();
0x0000489c mov r4, r0 | r4 = r0;
0x0000489e cmp r0, 0 |
| if (r0 == 0) {
0x000048a0 beq 0x493c | goto label_14;
| }
0x000048a2 movs r3, 0x2f | r3 = 0x2f;
0x000048a4 add.w r2, sl, 1 | r2 = sl + 1;
0x000048a8 strb.w r3, [sb, sl] | *((sb + sl)) = r3;
0x000048ac movs r3, 0 | r3 = 0;
0x000048ae strb.w r3, [sb, r2] | *((sb + r2)) = r3;
0x000048b2 mov r3, sb | r3 = sb;
0x000048b4 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000048b6 bl 0x4754 | r0 = fcn_00004754 (r0, r1, r2, r3);
0x000048ba mov r5, r0 | r5 = r0;
0x000048bc str r0, [sp, 0x14] | string = r0;
0x000048be mov r0, r4 | r0 = r4;
0x000048c0 blx 0x1dc8 | fcn_00001dc8 ();
0x000048c4 cmp r5, 0 |
| if (r5 == 0) {
0x000048c6 beq 0x4928 | goto label_15;
| }
| if (r5 >= 0) {
0x000048c8 bge.w 0x478e | goto label_0;
| }
0x000048cc ldr r3, [sp, 0x14] | r3 = string;
0x000048ce rsbs r0, r3, 0 | r0 = r3 - ;
0x000048d0 movs r3, 0 | r3 = 0;
0x000048d2 strb.w r3, [sb, sl] | *((sb + sl)) = r3;
0x000048d6 blx 0x1b18 | system (r0);
0x000048da ldr r1, [pc, 0x94] |
0x000048dc mov r3, r0 | r3 = r0;
0x000048de mov r2, sb | r2 = sb;
0x000048e0 movs r0, 3 | r0 = 3;
0x000048e2 add r1, pc | r1 = 0x9258;
0x000048e4 bl 0x85e4 | fcn_000085e4 (r0);
0x000048e8 movs r3, 1 | r3 = 1;
0x000048ea str r3, [sp, 0x14] | string = r3;
0x000048ec b 0x478e | goto label_0;
| label_7:
0x000048ee ldr r1, [pc, 0x84] |
0x000048f0 mov r3, r4 | r3 = r4;
0x000048f2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000048f4 movs r0, 3 | r0 = 3;
0x000048f6 add r1, pc | r1 = 0x9270;
0x000048f8 bl 0x85e4 | fcn_000085e4 (r0);
0x000048fc b 0x478e | goto label_0;
| label_13:
0x000048fe ldr r1, [pc, 0x78] |
0x00004900 mov r3, r4 | r3 = r4;
0x00004902 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00004904 movs r0, 3 | r0 = 3;
0x00004906 add r1, pc | r1 = 0x9284;
0x00004908 bl 0x85e4 | fcn_000085e4 (r0);
0x0000490c b 0x478e | goto label_0;
| label_10:
0x0000490e asrs r1, r2, 0x1f | r1 = r2 >> 0x1f;
0x00004910 mov r0, r2 | r0 = r2;
0x00004912 asrs r4, r3, 0x1f | r4 = r3 >> 0x1f;
0x00004914 mov r2, sb | r2 = sb;
0x00004916 strd r0, r1, [sp, 8] | __asm ("strd r0, r1, [sp, 8]");
0x0000491a movs r0, 7 | r0 = 7;
0x0000491c ldr r1, [pc, 0x5c] |
0x0000491e strd r3, r4, [sp] | __asm ("strd r3, r4, [sp]");
0x00004922 add r1, pc | r1 = 0x92a2;
0x00004924 bl 0x85e4 | fcn_000085e4 (r0);
| label_15:
0x00004928 movs r3, 0 | r3 = 0;
0x0000492a str r3, [sp, 0x14] | string = r3;
0x0000492c b 0x4822 | goto label_3;
| label_12:
0x0000492e ldr r1, [pc, 0x50] |
0x00004930 mov r2, sb | r2 = sb;
0x00004932 movs r0, 3 | r0 = 3;
0x00004934 add r1, pc | r1 = 0x92ba;
0x00004936 bl 0x85e4 | fcn_000085e4 (r0);
0x0000493a b 0x478e | goto label_0;
| label_14:
0x0000493c ldr r1, [pc, 0x44] |
0x0000493e mov r2, r5 | r2 = r5;
0x00004940 movs r0, 3 | r0 = 3;
0x00004942 add r1, pc | r1 = 0x92ca;
0x00004944 bl 0x85e4 | fcn_000085e4 (r0);
0x00004948 mov r0, r5 | r0 = r5;
0x0000494a blx 0x1dbc | fcn_00001dbc ();
0x0000494e b 0x478e | goto label_0;
| label_11:
0x00004950 blx 0x1a1c | stat64 ();
0x00004954 asrs r4, r6, 0x1a | r4 = r6 >> 0x1a;
0x00004956 movs r2, r0 | r2 = r0;
0x00004958 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000495a movs r0, r0 |
0x0000495c b 0x4604 | goto label_4;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x4a18 */
| #include <stdint.h>
|
; (fcn) fcn.00004a18 () | void fcn_00004a18 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00004a18 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00004a1c mov r7, r0 | r7 = r0;
0x00004a1e ldr r4, [r0] | r4 = *(r0);
0x00004a20 mov r8, r1 | r8 = r1;
0x00004a22 mov sb, r2 | sb = r2;
| if (r4 == 0) {
0x00004a24 cbz r4, 0x4a7c | goto label_0;
| }
0x00004a26 mov r5, r4 | r5 = r4;
0x00004a28 movs r6, 0 | r6 = 0;
| do {
0x00004a2a add.w r0, r5, 8 | r0 = r5 + 8;
0x00004a2e mov r1, r8 | r1 = r8;
0x00004a30 blx 0x1924 | fcn_00001924 ();
0x00004a34 ldr r5, [r5] | r5 = *(r5);
0x00004a36 cmp r0, 0 |
0x00004a38 it eq |
| if (r0 != 0) {
0x00004a3a moveq r6, 1 | r6 = 1;
| }
0x00004a3c cmp r5, 0 |
0x00004a3e bne 0x4a2a |
| } while (r5 != 0);
0x00004a40 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00004a42 cmp r3, sb |
| if (r3 >= sb) {
0x00004a44 bhs 0x4a52 | goto label_1;
| }
| do {
0x00004a46 mov r7, r4 | r7 = r4;
0x00004a48 ldr r4, [r4] | r4 = *(r4);
| if (r4 == 0) {
0x00004a4a cbz r4, 0x4a52 | goto label_1;
| }
0x00004a4c ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x00004a4e cmp r3, sb |
0x00004a50 blo 0x4a46 |
| } while (r3 <= sb);
| do {
| label_1:
0x00004a52 mov r0, r8 | r0 = r8;
0x00004a54 blx 0x1bb0 | fcn_00001bb0 ();
0x00004a58 movs r1, 1 | r1 = 1;
0x00004a5a mov sl, r0 | sl = r0;
0x00004a5c adds r0, 9 | r0 += 9;
0x00004a5e blx 0x18d8 | calloc (r0, r1);
0x00004a62 add.w r2, sl, 1 | r2 = sl + 1;
0x00004a66 mov r5, r0 | r5 = r0;
0x00004a68 strd r4, sb, [r0] | __asm ("strd r4, sb, [r0]");
0x00004a6c mov r1, r8 | r1 = r8;
0x00004a6e adds r0, 8 | r0 += 8;
0x00004a70 blx 0x19c8 | mmap64 ()
0x00004a74 mov r0, r6 | r0 = r6;
0x00004a76 str r5, [r7] | *(r7) = r5;
0x00004a78 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_0:
0x00004a7c mov r6, r4 | r6 = r4;
0x00004a7e b 0x4a52 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x4a80 */
| #include <stdint.h>
|
; (fcn) fcn.00004a80 () | void fcn_00004a80 (int16_t arg_4h, int16_t arg_1000h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| r0 = arg1;
| r1 = arg2;
0x00004a80 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00004a84 mov r8, r0 | r8 = r0;
0x00004a86 sub sp, 0x14 |
0x00004a88 mov r0, r1 | r0 = r1;
0x00004a8a mov r7, r1 | r7 = r1;
0x00004a8c ldr.w fp, [r8] | fp = *(r8);
0x00004a90 bl 0xcfb4 | r0 = fcn_0000cfb4 (r0);
0x00004a94 mov r5, r0 | r5 = r0;
0x00004a96 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00004a9a mov sl, r0 | sl = r0;
0x00004a9c movs r0, 1 | r0 = 1;
0x00004a9e add.w r1, sl, 0x45 | r1 = sl + 0x45;
0x00004aa2 add sl, r0 | sl += r0;
0x00004aa4 blx 0x18d8 | r0 = calloc (r0, r1);
0x00004aa8 cmp r0, 0 |
| if (r0 == 0) {
0x00004aaa beq.w 0x4bb8 | goto label_1;
| }
0x00004aae ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x00004ab2 add.w sb, r0, 0x44 | sb = r0 + 0x44;
0x00004ab6 mov r2, sl | r2 = sl;
0x00004ab8 mov r4, r0 | r4 = r0;
0x00004aba mov r1, r5 | r1 = r5;
0x00004abc str r7, [r0] | *(r0) = r7;
0x00004abe adds r3, 1 | r3++;
0x00004ac0 str r3, [r0, 0x30] | *((r0 + 0x30)) = r3;
0x00004ac2 mvn r3, 0x80000000 | r3 = ~0x80000000;
0x00004ac6 str r3, [r0, 0x34] | *((r0 + 0x34)) = r3;
0x00004ac8 mov r0, sb | r0 = sb;
0x00004aca blx 0x19c8 | mmap64 ()
0x00004ace movs r1, 4 | r1 = 4;
0x00004ad0 add.w r0, r4, 0x18 | r0 = r4 + 0x18;
0x00004ad4 str.w sl, [r4, 0x2c] | __asm ("str.w sl, [r4, 0x2c]");
0x00004ad8 bl 0x8b68 | fcn_00008b68 (r0, r1);
0x00004adc mov r0, r7 | r0 = r7;
0x00004ade bl 0xcfbc | r0 = fcn_0000cfbc (r0);
0x00004ae2 blx 0x1a10 | stack_chk_fail ();
0x00004ae6 movs r1, 0x2f | r1 = 0x2f;
0x00004ae8 str r0, [r4, 4] | *((r4 + 4)) = r0;
0x00004aea mov r6, r0 | r6 = r0;
0x00004aec blx 0x1cd0 | fcn_00001cd0 ();
0x00004af0 add.w r3, fp, 0x1000 | r3 += arg_1000h;
0x00004af4 mov r5, r0 | r5 = r0;
0x00004af6 ldr r2, [r3, 4] | r2 = *((r3 + 4));
0x00004af8 subs r3, r0, r6 | r3 = r0 - r6;
0x00004afa add.w r1, fp, 4 | r1 += arg_4h;
0x00004afe mov r0, r6 | r0 = r6;
0x00004b00 str r3, [r4, 0x28] | *((r4 + 0x28)) = r3;
0x00004b02 str r2, [sp, 0xc] | var_ch = r2;
0x00004b04 blx 0x1da4 | r0 = fcn_00001da4 ();
| if (r0 == 0) {
0x00004b08 cbz r0, 0x4b60 | goto label_2;
| }
0x00004b0a movs r0, 0 | r0 = 0;
| do {
0x00004b0c str r0, [r4, 8] | *((r4 + 8)) = r0;
0x00004b0e mov r2, r4 | r2 = r4;
0x00004b10 ldr.w r0, [r8, 0x1c] | r0 = *((r8 + 0x1c));
0x00004b14 mov r1, sb | r1 = sb;
0x00004b16 bl 0x8e20 | r0 = fcn_00008e20 (r0, r1, r2);
0x00004b1a subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00004b1c blt 0x4b6e | goto label_3;
| }
0x00004b1e ldr r0, [r4, 8] | r0 = *((r4 + 8));
| if (r0 != 0) {
0x00004b20 cbz r0, 0x4b44 |
0x00004b22 subs r5, r5, r0 | r5 -= r0;
0x00004b24 add r5, sl | r5 += sl;
0x00004b26 adds r1, r5, 4 | r1 = r5 + 4;
0x00004b28 bl 0x92ac | fcn_000092ac (r0, r1);
0x00004b2c movs r3, 0 | r3 = 0;
0x00004b2e add r5, r0 | r5 += r0;
0x00004b30 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x00004b32 mov r2, r4 | r2 = r4;
0x00004b34 strb r3, [r5, 3] | *((r5 + 3)) = r3;
0x00004b36 ldr r1, [r4, 0xc] | r1 = *((r4 + 0xc));
0x00004b38 ldr.w r0, [r8, 0x18] | r0 = *((r8 + 0x18));
0x00004b3c bl 0x8e20 | r0 = fcn_00008e20 (r0, r1, r2);
0x00004b40 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00004b42 blt 0x4b96 | goto label_4;
| }
| }
0x00004b44 ldr r5, [r4, 4] | r5 = *((r4 + 4));
0x00004b46 movs r6, 0 | r6 = 0;
0x00004b48 ldr r1, [pc, 0x74] |
0x00004b4a mov r3, r7 | r3 = r7;
0x00004b4c mov r2, r4 | r2 = r4;
0x00004b4e movs r0, 7 | r0 = 7;
0x00004b50 str r5, [sp] | *(sp) = r5;
0x00004b52 add r1, pc | r1 = 0x9716;
0x00004b54 bl 0x85e4 | fcn_000085e4 (r0);
| label_0:
0x00004b58 mov r0, r6 | r0 = r6;
0x00004b5a add sp, 0x14 |
0x00004b5c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x00004b60 ldr r2, [sp, 0xc] | r2 = var_ch;
0x00004b62 ldrb r3, [r6, r2] | r3 = *((r6 + r2));
0x00004b64 cmp r3, 0x2f |
0x00004b66 itt eq |
| if (r3 != 0x2f) {
0x00004b68 addeq r2, 1 | r2++;
| }
| if (r3 != 0x2f) {
0x00004b6a addeq r0, r6, r2 | r0 = r6 + r2;
| }
0x00004b6c b 0x4b0c |
| } while (1);
| label_3:
0x00004b6e rsbs r0, r6, 0 | r0 = r6 - ;
0x00004b70 blx 0x1b18 | system (r0);
0x00004b74 ldr r1, [pc, 0x4c] |
0x00004b76 mov r3, r0 | r3 = r0;
0x00004b78 mov r2, sb | r2 = sb;
0x00004b7a movs r0, 3 | r0 = 3;
0x00004b7c add r1, pc | r1 = 0x9744;
0x00004b7e bl 0x85e4 | fcn_000085e4 (r0);
| do {
0x00004b82 ldr r0, [r4, 0xc] | r0 = *((r4 + 0xc));
0x00004b84 blx 0x19a0 | fcn_000019a0 ();
0x00004b88 mov r0, r4 | r0 = r4;
0x00004b8a blx 0x19a0 | fcn_000019a0 ();
0x00004b8e mov r0, r6 | r0 = r6;
0x00004b90 add sp, 0x14 |
0x00004b92 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x00004b96 rsbs r0, r6, 0 | r0 = r6 - ;
0x00004b98 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00004b9a blx 0x1b18 | system (r0);
0x00004b9e ldr r1, [pc, 0x28] |
0x00004ba0 mov r3, r0 | r3 = r0;
0x00004ba2 mov r2, r5 | r2 = r5;
0x00004ba4 movs r0, 3 | r0 = 3;
0x00004ba6 add r1, pc | r1 = 0x9774;
0x00004ba8 bl 0x85e4 | fcn_000085e4 (r0);
0x00004bac ldr.w r0, [r8, 0x1c] | r0 = *((r8 + 0x1c));
0x00004bb0 mov r1, sb | r1 = sb;
0x00004bb2 bl 0x904c | fcn_0000904c (r0, r1);
0x00004bb6 b 0x4b82 |
| } while (1);
| label_1:
0x00004bb8 mvn r6, 0xb | r6 = ~0xb;
0x00004bbc b 0x4b58 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5330 */
| #include <stdint.h>
|
; (fcn) fcn.00005330 () | void fcn_00005330 (int16_t arg_20h, int16_t arg_28h, int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00005330 push.w {r4, r5, r6, r7, r8, sl, fp, lr} |
0x00005334 mov r6, r0 | r6 = r0;
0x00005336 ldrd sl, fp, [sp, 0x20] | __asm ("ldrd sl, fp, [arg_20h]");
0x00005338 add r3, sp, 0x20 | r3 = sp + 0x20;
0x0000533a mov r8, r1 | r8 = r1;
0x0000533c ldr r7, [sp, 0x28] | r7 = *(arg_28h);
| if (r2 == 0) {
0x0000533e cbnz r2, 0x5352 |
0x00005340 ldr r3, [r0] | r3 = *(r0);
0x00005342 ldrb r2, [r1] | r2 = *(r1);
0x00005344 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00005348 ldrb r3, [r3, 8] | r3 = *((r3 + 8));
0x0000534a cmp r2, r3 |
0x0000534c it eq |
| if (r2 == r3) {
0x0000534e addeq r8, r1, 1 | r8 = r1 + 1;
| goto label_0;
| }
| }
| label_0:
0x00005352 mov r0, r8 | r0 = r8;
0x00005354 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00005358 mov r2, r0 | r2 = r0;
0x0000535a adds r0, 0x11 | r0 += 0x11;
0x0000535c adds r5, r2, 1 | r5 = r2 + 1;
0x0000535e blx 0x1b0c | r0 = strerror (r0);
0x00005362 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00005364 cbz r0, 0x53b2 | goto label_1;
| }
0x00005366 mov r2, r5 | r2 = r5;
0x00005368 add.w r5, r0, 0x10 | r5 = r0 + 0x10;
0x0000536c mov r1, r8 | r1 = r8;
0x0000536e strd sl, fp, [r0, 8] | __asm ("strd sl, fp, [r0, 8]");
0x00005372 str r7, [r0] | *(r0) = r7;
0x00005374 mov r0, r5 | r0 = r5;
0x00005376 blx 0x19c8 | mmap64 ()
0x0000537a ldr r0, [r6, 0x20] | r0 = *((r6 + 0x20));
0x0000537c mov r2, r4 | r2 = r4;
0x0000537e mov r1, r5 | r1 = r5;
0x00005380 bl 0x8cc0 | r0 = fcn_00008cc0 (r0, r1, r2);
0x00005384 cmp r0, 0 |
| if (r0 < 0) {
0x00005386 blt 0x53a8 | goto label_2;
| }
| if (r7 == 0) {
0x00005388 cbz r7, 0x53a2 | goto label_3;
| }
0x0000538a ldr r0, [r7, 4] | r0 = *((r7 + 4));
| do {
0x0000538c ldr r1, [pc, 0x28] |
0x0000538e mov r3, r5 | r3 = r5;
0x00005390 strd r7, r0, [sp, 0x20] | __asm ("strd r7, r0, [sp, 0x20]");
0x00005394 mov r2, r4 | r2 = r4;
0x00005396 movs r0, 7 | r0 = 7;
0x00005398 pop.w {r4, r5, r6, r7, r8, sl, fp, lr} |
0x0000539c add r1, pc | r1 = 0xa758;
0x0000539e b.w 0x85e4 | void (*0x85e4)() ();
| label_3:
0x000053a2 ldr r0, [pc, 0x18] |
0x000053a4 add r0, pc | r0 = 0xa766;
0x000053a6 b 0x538c |
| } while (1);
| label_2:
0x000053a8 mov r0, r4 | r0 = r4;
0x000053aa pop.w {r4, r5, r6, r7, r8, sl, fp, lr} |
0x000053ae b.w 0x199c | void (*0x199c)() ();
| label_1:
0x000053b2 pop.w {r4, r5, r6, r7, r8, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5458 */
| #include <stdint.h>
|
; (fcn) fcn.00005458 () | void fcn_00005458 (int16_t arg_0h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00005458 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000545c mov r4, r3 | r4 = r3;
0x0000545e sub sp, 0x1c |
0x00005460 mov sl, r0 | sl = r0;
0x00005462 mov r0, r2 | r0 = r2;
0x00005464 mov r8, r2 | r8 = r2;
0x00005466 str r1, [sp, 8] | var_8h = r1;
0x00005468 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000546c mov r6, r0 | r6 = r0;
0x0000546e cmp r4, 0 |
| if (r4 == 0) {
0x00005470 beq 0x5548 | goto label_1;
| }
0x00005472 mov r0, r4 | r0 = r4;
0x00005474 blx 0x1bb0 | fcn_00001bb0 ();
0x00005478 str r0, [sp, 0xc] | var_ch = r0;
| label_0:
0x0000547a ldr r3, [sp, 8] | r3 = var_8h;
0x0000547c ldr.w fp, [sl] | fp = *(sl);
0x00005480 ldr r5, [r3] | r5 = *(r3);
| if (r5 == 0) {
0x00005482 cbz r5, 0x54ba | goto label_2;
| }
0x00005484 sub.w sb, fp, 4 | sb = fp - 4;
0x00005488 movs r7, 0 | r7 = 0;
0x0000548a b 0x5494 |
| if (r7 < 0) {
| while (r0 != 0) {
0x0000548c blt 0x54bc | goto label_3;
| }
0x0000548e adds r7, 1 | r7++;
0x00005490 cmp r5, r7 |
| if (r5 == r7) {
0x00005492 beq 0x54bc | goto label_3;
| }
0x00005494 ldr r3, [sb, 4]! | r3 = *((sb += 4));
0x00005498 mov r0, r4 | r0 = r4;
0x0000549a ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x0000549c blx 0x1924 | r0 = fcn_00001924 ();
0x000054a0 cmp r0, 0 |
0x000054a2 bne 0x548c |
| }
0x000054a4 ldr r1, [pc, 0xdc] |
0x000054a6 mov r3, r8 | r3 = r8;
0x000054a8 mov r2, r6 | r2 = r6;
0x000054aa movs r0, 7 | r0 = 7;
0x000054ac str r4, [sp] | *(sp) = r4;
0x000054ae add r1, pc | r1 = 0xaa36;
0x000054b0 bl 0x85e4 | fcn_000085e4 (r0);
0x000054b4 add sp, 0x1c |
0x000054b6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_2:
0x000054ba mov r7, r5 | r7 = r5;
| label_3:
0x000054bc ldr r3, [sp, 0xc] | r3 = var_ch;
0x000054be adds r3, r6, r3 | r3 = r6 + r3;
0x000054c0 add.w r0, r3, 0xe | r0 = r3 + 0xe;
0x000054c4 str r3, [sp, 0x10] | var_10h = r3;
0x000054c6 blx 0x1b0c | r0 = strerror (r0);
0x000054ca mov sb, r0 | sb = r0;
0x000054cc cmp r0, 0 |
| if (r0 == 0) {
0x000054ce beq 0x5572 | goto label_4;
| }
0x000054d0 adds r3, r5, 1 | r3 = r5 + 1;
0x000054d2 mov r0, fp | r0 = fp;
0x000054d4 lsls r1, r3, 2 | r1 = r3 << 2;
0x000054d6 str r3, [sp, 0x14] | var_14h = r3;
0x000054d8 blx 0x1a34 | r0 = regexec ();
0x000054dc mov fp, r0 |
0x000054de cmp r0, 0 |
| if (r0 == 0) {
0x000054e0 beq 0x555c | goto label_5;
| }
0x000054e2 str.w r0, [sl] | __asm ("str.w r0, [sl]");
0x000054e6 cmp r5, r7 |
0x000054e8 lsl.w sl, r7, 2 | sl = r7 << 2;
0x000054ec add.w r1, r0, sl | r1 = r0 + sl;
0x000054f0 bhi 0x5538 |
| while (1) {
0x000054f2 ldr r7, [sp, 0xc] | r7 = var_ch;
0x000054f4 add.w r0, sb, 0xc | r0 = sb + 0xc;
0x000054f8 adds r5, r6, 1 | r5 = r6 + 1;
0x000054fa str.w sb, [fp, sl] | __asm ("str.w sb, [fp, sl]");
0x000054fe add r5, r0 | r5 += r0;
0x00005500 mov r1, r8 | r1 = r8;
0x00005502 mov r2, r6 | r2 = r6;
0x00005504 str.w r6, [sb] | __asm ("str.w r6, [sb]");
0x00005508 str.w r7, [sb, 4] | __asm ("str.w r7, [sb, 4]");
0x0000550c add r6, sb | r6 += sb;
0x0000550e str.w r5, [sb, 8] | __asm ("str.w r5, [sb, 8]");
0x00005512 blx 0x19c8 | mmap64 ()
0x00005516 mov r1, r4 | r1 = r4;
0x00005518 movs r4, 0x2f | r4 = 0x2f;
0x0000551a mov r2, r7 | r2 = r7;
0x0000551c mov r0, r5 | r0 = r5;
0x0000551e strb r4, [r6, 0xc] | *((r6 + 0xc)) = r4;
0x00005520 blx 0x19c8 | mmap64 ()
0x00005524 ldr r3, [sp, 0x10] | r3 = var_10h;
0x00005526 movs r2, 0 | r2 = 0;
0x00005528 ldr r1, [sp, 8] | r1 = var_8h;
0x0000552a ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000552c add r3, sb | r3 += sb;
0x0000552e strb r2, [r3, 0xd] | *((r3 + 0xd)) = r2;
0x00005530 str r0, [r1] | *(r1) = r0;
0x00005532 add sp, 0x1c |
0x00005534 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00005538 subs r2, r5, r7 | r2 = r5 - r7;
0x0000553a add.w r0, sl, 4 | r0 = sl + 4;
0x0000553e lsls r2, r2, 2 | r2 <<= 2;
0x00005540 add r0, fp | r0 += fp;
0x00005542 blx 0x1990 | fcn_00001990 ();
0x00005546 b 0x54f2 |
| }
| label_1:
0x00005548 mov r0, r8 | r0 = r8;
0x0000554a subs r6, 1 | r6--;
0x0000554c blx 0x1948 | r0 = fcn_00001948 ();
0x00005550 mov r4, r0 | r4 = r0;
0x00005552 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00005556 subs r6, r6, r0 | r6 -= r0;
0x00005558 str r0, [sp, 0xc] | var_ch = r0;
0x0000555a b 0x547a | goto label_0;
| label_5:
0x0000555c ldr r1, [pc, 0x28] |
0x0000555e movs r0, 3 | r0 = 3;
0x00005560 add r1, pc | r1 = 0xaaec;
0x00005562 bl 0x85e4 | fcn_000085e4 (r0);
0x00005566 mov r0, sb | r0 = sb;
0x00005568 add sp, 0x1c |
0x0000556a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000556e b.w 0x199c | void (*0x199c)() ();
| label_4:
0x00005572 ldr r1, [pc, 0x18] |
0x00005574 movs r0, 3 | r0 = 3;
0x00005576 add r1, pc | r1 = 0xab08;
0x00005578 add sp, 0x1c |
0x0000557a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000557e b.w 0x85e4 | return void (*0x85e4)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5590 */
| #include <stdint.h>
|
; (fcn) fcn.00005590 () | void fcn_00005590 (int16_t arg1, int16_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00005590 push.w {r4, r5, r6, r7, r8, lr} |
0x00005594 mov r7, r1 | r7 = r1;
0x00005596 ldr r1, [pc, 0x7c] |
0x00005598 mov r8, r0 | r8 = r0;
0x0000559a mov r0, r7 | r0 = r7;
0x0000559c add r1, pc | r1 = 0xabb6;
0x0000559e blx 0x1924 | r0 = fcn_00001924 ();
| if (r0 == 0) {
0x000055a2 cbz r0, 0x55ee | goto label_1;
| }
0x000055a4 ldr r1, [pc, 0x70] |
0x000055a6 mov r0, r7 | r0 = r7;
0x000055a8 add r1, pc | r1 = 0xabc4;
0x000055aa blx 0x1924 | r0 = fcn_00001924 ();
| if (r0 == 0) {
0x000055ae cbz r0, 0x5610 | goto label_2;
| }
0x000055b0 mov r0, r7 | r0 = r7;
0x000055b2 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x000055b6 mov r6, r0 | r6 = r0;
0x000055b8 adds r0, 0xd | r0 += 0xd;
0x000055ba blx 0x1b0c | r0 = strerror (r0);
0x000055be mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000055c0 cbz r0, 0x5602 | goto label_3;
| }
0x000055c2 movs r5, 0 | r5 = 0;
0x000055c4 str r6, [r0, 8] | *((r0 + 8)) = r6;
0x000055c6 str r5, [r0, 4] | *((r0 + 4)) = r5;
0x000055c8 adds r2, r6, 1 | r2 = r6 + 1;
0x000055ca mov r1, r7 | r1 = r7;
0x000055cc adds r0, 0xc | r0 += 0xc;
0x000055ce blx 0x19c8 | mmap64 ()
| do {
0x000055d2 ldr r1, [pc, 0x48] |
0x000055d4 mov r3, r5 | r3 = r5;
0x000055d6 movs r0, 7 | r0 = 7;
0x000055d8 mov r2, r7 | r2 = r7;
0x000055da add r1, pc | r1 = 0xabfc;
0x000055dc bl 0x85e4 | fcn_000085e4 (r0);
0x000055e0 add.w r0, r8, 0x1000 | r0 = r8 + 0x1000;
0x000055e4 ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x000055e6 str r4, [r0, 0x10] | *((r0 + 0x10)) = r4;
0x000055e8 str r3, [r4] | *(r4) = r3;
0x000055ea pop.w {r4, r5, r6, r7, r8, pc} |
| label_1:
0x000055ee movs r5, 1 | r5 = 1;
| label_0:
0x000055f0 movs r0, 0xc | r0 = 0xc;
0x000055f2 blx 0x1b0c | r0 = strerror (r0);
0x000055f6 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x000055f8 cbz r0, 0x5602 | goto label_3;
| }
0x000055fa movs r3, 0 | r3 = 0;
0x000055fc strd r5, r3, [r4, 4] | __asm ("strd r5, r3, [r4, 4]");
0x00005600 b 0x55d2 |
| } while (1);
| label_3:
0x00005602 ldr r1, [pc, 0x1c] |
0x00005604 movs r0, 3 | r0 = 3;
0x00005606 pop.w {r4, r5, r6, r7, r8, lr} |
0x0000560a add r1, pc | r1 = 0xac30;
0x0000560c b.w 0x85e4 | void (*0x85e4)() ();
| label_2:
0x00005610 movs r5, 2 | r5 = 2;
0x00005612 b 0x55f0 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x5a5c */
| #include <stdint.h>
|
; (fcn) fcn.00005a5c () | void fcn_00005a5c (int16_t arg_12h, int16_t arg_13h, int16_t arg_14h, int16_t arg_15h, int16_t arg_108h, int16_t arg_10ch, int16_t arg_1a0h, int16_t arg_320h, int16_t arg_b20h, void * ptr, int16_t arg_1320h, char * * endptr, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h_3;
| int32_t var_0h_4;
| int8_t var_8h_3;
| int16_t var_ch_2;
| int16_t var_0h_2;
| int16_t var_4h_2;
| int16_t var_8h_2;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h_2;
| char * var_18h;
| int16_t var_1ch;
| FILE * stream;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_14h;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_a0h;
| int16_t var_84h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00005a5c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005a60 sub sp, 0x8c |
0x00005a62 str r2, [sp] | *(sp) = r2;
0x00005a64 mov sl, r3 | sl = r3;
0x00005a66 mov r4, r0 | r4 = r0;
0x00005a68 mov r0, r1 | r0 = r1;
0x00005a6a ldr r2, [pc, 0x1b4] |
0x00005a6c mov r5, r1 | r5 = r1;
0x00005a6e ldr r3, [pc, 0x1b4] | r3 = *(0x5c26);
0x00005a70 movs r7, 0 | r7 = 0;
0x00005a72 str r4, [sp, 8] | var_8h = r4;
0x00005a74 add r2, pc | r2 = 0xb69a;
0x00005a76 ldr.w r8, [pc, 0x1b0] |
0x00005a7a ldr r3, [r2, r3] |
0x00005a7c ldr.w sb, [pc, 0x1ac] |
0x00005a80 add r8, pc | r8 = 0xb6ae;
0x00005a82 ldr r3, [r3] | r3 = *(0xb69a);
0x00005a84 str r3, [sp, 0x84] | var_84h = r3;
0x00005a86 mov.w r3, 0 | r3 = 0;
0x00005a8a blx 0x1d40 | renameat ();
0x00005a8e ldr r3, [pc, 0x1a0] |
0x00005a90 add sb, pc | sb = 0xb6c0;
0x00005a92 str r0, [sp, 4] | var_4h = r0;
0x00005a94 add r3, pc | r3 = 0xb6ca;
0x00005a96 str r3, [sp, 0x14] | var_14h = r3;
| do {
| label_0:
0x00005a98 mov r0, r5 | r0 = r5;
0x00005a9a blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x00005a9e mov fp, r0 |
0x00005aa0 cmp r0, 0 |
| if (r0 == 0) {
0x00005aa2 beq 0x5b84 | goto label_61;
| }
| label_1:
0x00005aa4 ldrb.w r2, [fp, 0x13] | r2 = *(arg_13h);
0x00005aa8 add.w r4, fp, 0x13 | r4 += arg_13h;
0x00005aac cmp r2, 0x2e |
| if (r2 == 0x2e) {
0x00005aae beq 0x5ba0 | goto label_62;
| }
| label_2:
0x00005ab0 mov r1, r8 | r1 = r8;
0x00005ab2 mov r0, r4 | r0 = r4;
0x00005ab4 blx 0x1924 | r0 = fcn_00001924 ();
0x00005ab8 cmp r0, 0 |
0x00005aba beq 0x5a98 |
| } while (r0 == 0);
0x00005abc mov r1, sb | r1 = sb;
0x00005abe mov r0, r4 | r0 = r4;
0x00005ac0 blx 0x1924 | r0 = fcn_00001924 ();
0x00005ac4 cmp r0, 0 |
| if (r0 == 0) {
0x00005ac6 beq 0x5a98 | goto label_0;
| }
0x00005ac8 mov r0, r4 | r0 = r4;
0x00005aca blx 0x1bb0 | fcn_00001bb0 ();
0x00005ace ldr r3, [sp] | r3 = *(sp);
0x00005ad0 mov r6, r0 | r6 = r0;
0x00005ad2 mov r0, sl | r0 = sl;
0x00005ad4 adds r3, r6, r3 | r3 = r6 + r3;
0x00005ad6 adds r1, r3, 2 | r1 = r3 + 2;
0x00005ad8 str r3, [sp, 0x10] | var_58h = r3;
0x00005ada bl 0x925c | r0 = fcn_0000925c (r0, r1);
0x00005ade cmp r0, 0 |
| if (r0 < 0) {
0x00005ae0 blt 0x5bca | goto label_63;
| }
0x00005ae2 ldr.w r3, [sl] | r3 = *(sl);
0x00005ae6 adds r2, r6, 1 | r2 = r6 + 1;
0x00005ae8 ldr r0, [sp] | r0 = *(sp);
0x00005aea mov r1, r4 | r1 = r4;
0x00005aec str r3, [sp, 0xc] | var_54h = r3;
0x00005aee adds r0, r3, r0 | r0 = r3 + r0;
0x00005af0 blx 0x19c8 | mmap64 ()
0x00005af4 ldrb.w r3, [fp, 0x12] | r3 = *(arg_12h);
0x00005af8 cmp r3, 8 |
| if (r3 == 8) {
0x00005afa beq 0x5bba | goto label_64;
| }
0x00005afc cmp r3, 4 |
| if (r3 != 4) {
0x00005afe beq 0x5b22 |
0x00005b00 ldr r0, [sp, 4] | r0 = var_4h;
0x00005b02 movs r3, 0 | r3 = 0;
0x00005b04 add r2, sp, 0x18 | r2 += var_60h;
0x00005b06 mov r1, r4 | r1 = r4;
0x00005b08 blx 0x1adc | r0 = asprintf_chk ();
0x00005b0c cmp r0, 0 |
| if (r0 < 0) {
0x00005b0e blt 0x5bf8 | goto label_65;
| }
0x00005b10 ldr r3, [sp, 0x28] | r3 = var_70h;
0x00005b12 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00005b16 cmp.w r3, 0x8000 |
| if (r3 == 0x8000) {
0x00005b1a beq 0x5bba | goto label_64;
| }
0x00005b1c cmp.w r3, 0x4000 |
| if (r3 != 0x4000) {
0x00005b20 bne 0x5bda | goto label_66;
| }
| }
0x00005b22 ldr r0, [sp, 4] | r0 = var_4h;
0x00005b24 movs r2, 0 | r2 = 0;
0x00005b26 mov r1, r4 | r1 = r4;
0x00005b28 blx 0x1bd8 | r0 = sprintf_chk ();
0x00005b2c subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 < r0) {
0x00005b2e blt 0x5be8 | goto label_67;
| }
0x00005b30 blx 0x1d00 | r0 = fcn_00001d00 ();
0x00005b34 mov r4, r0 | r4 = r0;
0x00005b36 cmp r0, 0 |
| if (r0 == 0) {
0x00005b38 beq 0x5c08 | goto label_68;
| }
0x00005b3a ldr r1, [sp, 0x10] | r1 = var_58h;
0x00005b3c movs r3, 0x2f | r3 = 0x2f;
0x00005b3e ldr r0, [sp, 0xc] | r0 = var_54h;
0x00005b40 adds r2, r1, 1 | r2 = r1 + 1;
0x00005b42 strb r3, [r0, r1] | *((r0 + r1)) = r3;
0x00005b44 movs r3, 0 | r3 = 0;
0x00005b46 strb r3, [r0, r2] | *((r0 + r2)) = r3;
0x00005b48 mov r1, r4 | r1 = r4;
0x00005b4a ldr r0, [sp, 8] | r0 = var_8h;
0x00005b4c mov r3, sl | r3 = sl;
0x00005b4e bl 0x5a5c | r0 = fcn_00005a5c (r0, r1, r2, r3, r4, r5, r6);
0x00005b52 mov r7, r0 | r7 = r0;
0x00005b54 mov r0, r4 | r0 = r4;
0x00005b56 blx 0x1dc8 | fcn_00001dc8 ();
| label_3:
0x00005b5a cmp r7, 0 |
| if (r7 >= 0) {
0x00005b5c bge 0x5a98 | goto label_0;
| }
0x00005b5e ldrd r4, r3, [sp, 0xc] | __asm ("ldrd r4, r3, [var_54h]");
0x00005b62 rsbs r0, r7, 0 | r0 = r7 - ;
0x00005b64 movs r7, 0 | r7 = 0;
0x00005b66 strb r7, [r4, r3] | *((r4 + r3)) = r7;
| label_4:
0x00005b68 blx 0x1b18 | system (r0);
0x00005b6c ldr r1, [sp, 0x14] | r1 = var_14h;
0x00005b6e mov r3, r0 | r3 = r0;
0x00005b70 mov r2, r4 | r2 = r4;
0x00005b72 movs r0, 3 | r0 = 3;
0x00005b74 bl 0x85e4 | fcn_000085e4 (r0);
0x00005b78 mov r0, r5 | r0 = r5;
0x00005b7a blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x00005b7e mov fp, r0 |
0x00005b80 cmp r0, 0 |
| if (r0 != 0) {
0x00005b82 bne 0x5aa4 | goto label_1;
| }
| label_61:
0x00005b84 ldr r2, [pc, 0xac] |
0x00005b86 ldr r3, [pc, 0x9c] | r3 = *(0x5c26);
0x00005b88 add r2, pc | r2 = 0xb7c0;
0x00005b8a ldr r3, [r2, r3] | r3 = *(0xb7c0);
0x00005b8c ldr r2, [r3] | r2 = *(0xb7c0);
0x00005b8e ldr r3, [sp, 0x84] | r3 = var_84h;
0x00005b90 eors r2, r3 | r2 ^= r3;
0x00005b92 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005b96 bne 0x5c1c | goto label_69;
| }
0x00005b98 mov r0, r7 | r0 = r7;
0x00005b9a add sp, 0x8c |
0x00005b9c pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_62:
0x00005ba0 ldrb.w r2, [fp, 0x14] | r2 = *(arg_14h);
0x00005ba4 cmp r2, 0 |
| if (r2 == 0) {
0x00005ba6 beq.w 0x5a98 | goto label_0;
| }
0x00005baa cmp r2, 0x2e |
| if (r2 != 0x2e) {
0x00005bac bne 0x5ab0 | goto label_2;
| }
0x00005bae ldrb.w r2, [fp, 0x15] | r2 = *(arg_15h);
0x00005bb2 cmp r2, 0 |
| if (r2 != 0) {
0x00005bb4 bne.w 0x5ab0 | goto label_2;
| }
0x00005bb8 b 0x5a98 | goto label_0;
| label_64:
0x00005bba ldr r3, [sp, 0xc] | r3 = var_54h;
0x00005bbc mov r2, r6 | r2 = r6;
0x00005bbe ldr r1, [sp] | r1 = *(sp);
0x00005bc0 ldr r0, [sp, 8] | r0 = var_8h;
0x00005bc2 bl 0x5624 | r0 = fcn_00005624 (r0, r1, r2, r3, r4);
0x00005bc6 mov r7, r0 | r7 = r0;
| do {
0x00005bc8 b 0x5b5a | goto label_3;
| label_63:
0x00005bca ldr r1, [pc, 0x6c] |
0x00005bcc movs r0, 3 | r0 = 3;
0x00005bce mvn r7, 0xb | r7 = ~0xb;
0x00005bd2 add r1, pc | r1 = 0xb810;
0x00005bd4 bl 0x85e4 | fcn_000085e4 (r0);
0x00005bd8 b 0x5a98 | goto label_0;
| label_66:
0x00005bda ldr r1, [pc, 0x60] |
0x00005bdc movs r0, 3 | r0 = 3;
0x00005bde ldr r2, [sp, 0xc] | r2 = var_54h;
0x00005be0 add r1, pc | r1 = 0xb822;
0x00005be2 bl 0x85e4 | fcn_000085e4 (r0);
0x00005be6 b 0x5a98 | goto label_0;
| label_67:
0x00005be8 ldr r1, [pc, 0x54] |
0x00005bea mov r3, r4 | r3 = r4;
0x00005bec ldr r2, [sp, 4] | r2 = var_4h;
0x00005bee movs r0, 3 | r0 = 3;
0x00005bf0 add r1, pc | r1 = 0xb834;
0x00005bf2 bl 0x85e4 | fcn_000085e4 (r0);
0x00005bf6 b 0x5a98 | goto label_0;
| label_65:
0x00005bf8 ldr r1, [pc, 0x48] |
0x00005bfa mov r3, r4 | r3 = r4;
0x00005bfc ldr r2, [sp, 4] | r2 = var_4h;
0x00005bfe movs r0, 3 | r0 = 3;
0x00005c00 add r1, pc | r1 = 0xb848;
0x00005c02 bl 0x85e4 | fcn_000085e4 (r0);
0x00005c04 stc2l p7, c14, [pc], 0x11c | __asm ("stc2l p7, c14, [pc], 0x11c");
| label_68:
0x00005c08 ldr r1, [pc, 0x3c] |
0x00005c0a mov r2, r6 | r2 = r6;
0x00005c0c movs r0, 3 | r0 = 3;
0x00005c0e add r1, pc | r1 = 0xb85a;
0x00005c10 bl 0x85e4 | fcn_000085e4 (r0);
0x00005c14 mov r0, r6 | r0 = r6;
0x00005c16 blx 0x1dbc | fcn_00001dbc ();
0x00005c1a b 0x5a98 | goto label_0;
| label_69:
0x00005c1c blx 0x1a1c | stat64 ();
| label_5:
0x00005c20 lsls r4, r4, 0xe | r4 <<= 0xe;
0x00005c22 movs r2, r0 | r2 = r0;
0x00005c24 lsls r4, r7, 6 | r4 = r7 << 6;
0x00005c26 movs r0, r0 |
| if (r0 <= r0) {
0x00005c28 blo 0x5cb4 | goto label_70;
| }
0x00005c2a movs r0, r0 |
| if (r0 <= r0) {
0x00005c2c blo 0x5ca8 | goto label_71;
| }
0x00005c2e movs r0, r0 |
| if (r0 >= r0) {
0x00005c30 bmi 0x5c34 |
0x00005c32 movs r0, r0 |
| }
0x00005c34 lsls r0, r2, 0xa | r0 = r2 << 0xa;
0x00005c36 movs r2, r0 | r2 = r0;
0x00005c38 bvc 0x5bc8 | __asm ("bvc 0x5bc8");
| } while (1);
0x00005c3a movs r0, r0 |
| if (r0 >= r0) {
0x00005c3c bhs 0x5b68 | goto label_4;
| }
0x00005c3e movs r0, r0 |
| if (r0 >= r0) {
0x00005c40 bhs 0x5cac | goto label_72;
| }
0x00005c42 movs r0, r0 |
| if (r0 != r0) {
0x00005c44 bne 0x5c20 | goto label_5;
| }
0x00005c46 movs r0, r0 |
| if (r0 < r0) {
0x00005c48 bhs 0x5cb8 |
0x00005c4a movs r0, r0 |
0x00005c4c push.w {r4, r5, r6, r7, r8, sb, lr} |
0x00005c50 mov r5, r1 | r5 = r1;
0x00005c52 ldr r1, [pc, 0xb0] |
0x00005c54 sub sp, 0x114 |
0x00005c56 mov r4, sp | r4 = sp;
0x00005c58 mov.w r2, 0x100 | r2 = 0x100;
0x00005c5c ldr r3, [pc, 0xa8] | r3 = *(0x5d08);
0x00005c5e mov r8, r0 | r8 = r0;
0x00005c60 add r1, pc | r1 = 0xb96a;
0x00005c62 mov.w sb, 0 | sb = 0;
0x00005c66 mov r0, r5 | r0 = r5;
0x00005c68 ldr r3, [r1, r3] |
0x00005c6a ldr r3, [r3] | r3 = *(0xb96a);
0x00005c6c str r3, [sp, 0x10c] | var_24h = r3;
0x00005c6e mov.w r3, 0 | r3 = 0;
0x00005c72 add r3, sp, 0xc | r3 += var_ch_2;
0x00005c74 strd r3, r2, [r4] | __asm ("strd r3, r2, [r4]");
0x00005c78 strb.w sb, [r4, 8] | var_8h_3 = sb;
0x00005c7c blx 0x1ab8 | r0 = fnmatch ();
| if (r0 == 0) {
0x00005c80 cbz r0, 0x5cea | goto label_73;
| }
0x00005c82 mov r6, r0 | r6 = r0;
0x00005c84 mov r0, r5 | r0 = r5;
0x00005c86 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00005c8a mov r7, r0 | r7 = r0;
0x00005c8c mov r0, r4 | r0 = r4;
0x00005c8e adds r1, r7, 2 | r1 = r7 + 2;
0x00005c90 bl 0x925c | r0 = fcn_0000925c (r0, r1);
0x00005c94 cmp r0, 0 |
0x00005c96 it lt |
| if (r0 >= 0) {
0x00005c98 mvnlt r5, 0xb | r5 = ~0xb;
| }
| if (r0 < 0) {
0x00005c9c blt 0x5cc2 | goto label_74;
| }
0x00005c9e ldr r3, [r4] | r3 = *(r4);
0x00005ca0 mov r1, r5 | r1 = r5;
0x00005ca2 mov r2, r7 | r2 = r7;
0x00005ca4 mov r0, r3 | r0 = r3;
0x00005ca6 blx 0x19c8 | mmap64 ()
| label_71:
0x00005ca8 mrc p12, 4, r1, c0, c10, 3 | __asm ("mrc p12, 4, r1, c0, c10, 3");
| label_72:
0x00005cac mov r3, r0 | r3 = r0;
0x00005cae movs r1, 0x2f | r1 = 0x2f;
0x00005cb0 mov r0, r8 | r0 = r8;
0x00005cb2 strb r1, [r3, r7] | *((r3 + r7)) = r1;
| label_70:
0x00005cb4 mov r1, r6 | r1 = r6;
0x00005cb6 invalid |
| }
0x00005cb8 str r0, [sp, 8] | var_8h = r0;
0x00005cba mov r3, r4 | r3 = r4;
0x00005cbc bl 0x5a5c | r0 = fcn_00005a5c (r0, r1, r2, r3, r4, r5, r6);
0x00005cc0 mov r5, r0 | r5 = r0;
| label_74:
0x00005cc2 mov r0, r6 | r0 = r6;
0x00005cc4 blx 0x1dc8 | fcn_00001dc8 ();
| do {
| label_6:
0x00005cc8 mov r0, r4 | r0 = r4;
0x00005cca bl 0x92a0 | fcn_000092a0 (r0);
0x00005cce ldr r2, [pc, 0x3c] |
0x00005cd0 ldr r3, [pc, 0x34] | r3 = *(0x5d08);
0x00005cd2 add r2, pc | r2 = 0xb9e4;
0x00005cd4 ldr r3, [r2, r3] | r3 = *(0xb9e4);
0x00005cd6 ldr r2, [r3] | r2 = *(0xb9e4);
0x00005cd8 ldr r3, [sp, 0x10c] | r3 = *(arg_10ch);
0x00005cda eors r2, r3 | r2 ^= r3;
0x00005cdc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005ce0 bne 0x5d00 | goto label_75;
| }
0x00005ce2 mov r0, r5 | r0 = r5;
0x00005ce4 add sp, 0x114 |
0x00005ce6 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_73:
0x00005cea blx 0x1be4 | isoc99_sscanf ();
0x00005cee ldr r1, [pc, 0x20] |
0x00005cf0 mov r2, r5 | r2 = r5;
0x00005cf2 ldr r3, [r0] | r3 = *(r0);
0x00005cf4 movs r0, 3 | r0 = 3;
0x00005cf6 add r1, pc | r1 = 0xba0c;
0x00005cf8 rsbs r5, r3, 0 | r5 = r3 - ;
0x00005cfa bl 0x85e4 | fcn_000085e4 (r0);
0x00005cfe b 0x5cc8 |
| } while (1);
| label_75:
0x00005d00 blx 0x1a1c | stat64 ();
0x00005d04 lsls r0, r7, 6 | r0 = r7 << 6;
0x00005d06 movs r2, r0 | r2 = r0;
0x00005d08 lsls r4, r7, 6 | r4 = r7 << 6;
0x00005d0a movs r0, r0 |
0x00005d0c lsls r6, r0, 5 | r6 = r0 << 5;
0x00005d0e movs r2, r0 | r2 = r0;
| if (r2 <= r0) {
0x00005d10 blo 0x5cc8 | goto label_6;
| }
0x00005d12 movs r0, r0 |
0x00005d14 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00005d16 ldr r7, [pc, 0x3c0] | r7 = *(0x60da);
0x00005d18 movs r6, 0 | r6 = 0;
0x00005d1a vpush {d8} | __asm ("vpush {d8}");
0x00005d1e sub.w sp, sp, 0x3b00 |
0x00005d22 sub sp, 0x24 |
0x00005d24 mov r4, r1 | r4 = r1;
0x00005d26 add r3, sp, 0x320 | r3 += arg_320h;
0x00005d28 ldr.w r2, [pc, 0xb68] | r2 = *(0x00006894);
0x00005d2c str r3, [sp, 0x2c] | var_2ch = r3;
0x00005d2e add r3, sp, 0x70 | r3 += var_70h;
0x00005d30 str r6, [r3] | *(r3) = r6;
0x00005d32 add.w r7, sp, 0xb20 | r7 += arg_b20h;
0x00005d36 ldr.w r3, [pc, 0xb60] |
0x00005d3a add r2, pc | r2 += pc;
0x00005d3c str r7, [sp, 0x20] | stream = r7;
0x00005d3e add.w r1, sp, 0x3b00 | r1 += endptr;
0x00005d42 adds r1, 0x1c | r1 += 0x1c;
0x00005d44 mov r5, r0 | r5 = r0;
0x00005d46 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005d48 mov fp, r6 |
0x00005d4a ldr.w r2, [pc, 0xb50] | r2 = *(0x0000689c);
0x00005d4e mov r7, fp | r7 = fp;
0x00005d50 ldr.w sb, [pc, 0xb4c] | sb = *(0x000068a0);
0x00005d54 ldr r3, [r3] | r3 = *(0x689a);
0x00005d56 str r3, [r1] | *(r1) = r3;
0x00005d58 mov.w r3, 0 | r3 = 0;
0x00005d5c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00005d5e add r2, pc | r2 += pc;
0x00005d60 mov r1, r6 | r1 = r6;
0x00005d62 str r2, [sp, 0x1c] | var_1ch = r2;
0x00005d64 movw r2, 0x1018 | r2 = 0x1018;
0x00005d68 sub.w r0, r3, 0x28 | r0 = r3 - 0x28;
0x00005d6c add r3, sp, 0xa0 | r3 += var_a0h;
0x00005d6e str r3, [sp, 0x28] | var_28h = r3;
0x00005d70 add sb, pc | sb += pc;
0x00005d72 str r0, [sp, 0x34] | var_34h = r0;
0x00005d74 blx 0x1c2c | strtoull (r0, r1, r2);
0x00005d78 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00005d7a mov r1, r6 | r1 = r6;
0x00005d7c ldr.w r8, [pc, 0xb24] |
0x00005d80 movs r2, 0x24 | r2 = 0x24;
0x00005d82 str r6, [sp, 0x24] | var_24h = r6;
0x00005d84 sub.w r0, r3, 0x24 | r0 = r3 - 0x24;
0x00005d88 add r3, sp, 0x108 | r3 += arg_108h;
0x00005d8a str r6, [sp, 0x38] | var_38h = r6;
0x00005d8c add r8, pc | r8 = 0xc634;
0x00005d8e str r6, [sp, 0x40] | var_40h = r6;
0x00005d90 str r6, [sp, 0x30] | var_30h = r6;
0x00005d92 strd r6, r6, [sp, 0x44] | __asm ("strd r6, r6, [sp, 0x44]");
0x00005d96 str r6, [sp, 0x3c] | var_3ch = r6;
0x00005d98 mov r6, r3 | r6 = r3;
0x00005d9a str r0, [sp, 0x4c] | var_4h = r0;
0x00005d9c str r3, [sp, 0x18] | var_18h = r3;
0x00005d9e blx 0x1c2c | strtoull (r0, r1, r2);
| do {
| label_7:
0x00005da2 ldr r3, [sp, 0x18] | r3 = var_18h;
0x00005da4 mov r2, r8 | r2 = r8;
0x00005da6 mov r1, r4 | r1 = r4;
0x00005da8 mov r0, r5 | r0 = r5;
0x00005daa str r3, [sp] | *(sp) = r3;
0x00005dac mov r3, sb | r3 = sb;
0x00005dae str r7, [r6] | *(r6) = r7;
0x00005db0 blx 0x1b74 | r0 = fcn_00001b74 ();
0x00005db4 adds r2, r0, 1 | r2 = r0 + 1;
| if (r2 == r0) {
0x00005db6 beq.w 0x5fba | goto label_76;
| }
0x00005dba sub.w r3, r0, 0x3f | r3 = r0 - 0x3f;
0x00005dbe cmp r3, 0x38 |
| if (r3 <= 0x38) {
0x00005dc0 bhi 0x5e38 |
| /* switch table (58 cases) at 0x5dc6 */
0x00005dc2 tbh [pc, r3, lsl 1] | __asm ("tbh [pc, r3, lsl 1]");
| }
0x00005e38 ldr.w r1, [pc, 0xa6c] |
0x00005e3c mov r2, r0 | r2 = r0;
0x00005e3e movs r0, 3 | r0 = 3;
0x00005e40 add r1, pc | r1 = 0xc6ec;
0x00005e42 bl 0x85e4 | fcn_000085e4 (r0);
| label_11:
0x00005e46 ldr r0, [sp, 0x34] | r0 = var_34h;
0x00005e48 movs r4, 1 | r4 = 1;
0x00005e4a bl 0x46d8 | fcn_000046d8 (r0);
| label_8:
0x00005e4e mov r0, fp | r0 = fp;
0x00005e50 blx 0x19a0 | fcn_000019a0 ();
0x00005e54 ldr r0, [sp, 0x24] | r0 = var_24h;
0x00005e56 blx 0x19a0 | fcn_000019a0 ();
0x00005e5a ldr.w r2, [pc, 0xa50] | r2 = *(0x000068ac);
0x00005e5e add.w r1, sp, 0x3b00 | r1 += endptr;
0x00005e62 ldr.w r3, [pc, 0xa34] | r3 = *(0x689a);
0x00005e66 adds r1, 0x1c | r1 += 0x1c;
0x00005e68 add r2, pc | r2 += pc;
0x00005e6a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005e6c ldr r2, [r3] | r2 = *(0x689a);
0x00005e6e ldr r3, [r1] | r3 = *(r1);
0x00005e70 eors r2, r3 | r2 ^= r3;
0x00005e72 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00005e76 bne.w 0x7456 | goto label_77;
| }
0x00005e7a mov r0, r4 | r0 = r4;
0x00005e7c add.w sp, sp, 0x3b00 |
0x00005e80 add sp, 0x24 |
0x00005e82 vpop {d8} | __asm ("vpop {d8}");
0x00005e86 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x00005e8a ldr r3, [r6] | r3 = *(r6);
0x00005e8c cmp r3, 0 |
| if (r3 <= 0) {
0x00005e8e ble.w 0x5faa | goto label_78;
| }
0x00005e92 ldr.w r2, [pc, 0xa1c] | r2 = *(0x000068b0);
0x00005e96 lsls r3, r3, 4 | r3 <<= 4;
0x00005e98 ldr.w r1, [pc, 0xa18] |
0x00005e9c movs r0, 4 | r0 = 4;
0x00005e9e add r2, pc | r2 += pc;
0x00005ea0 ldr r2, [r2, r3] | r2 = *((r2 + r3));
0x00005ea2 add r1, pc | r1 = 0xc75a;
0x00005ea4 bl 0x85e4 | fcn_000085e4 (r0);
0x00005ea8 b 0x5da2 |
| } while (1);
0x00005eaa ldr.w r3, [pc, 0xa0c] |
0x00005eae ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005eb0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005eb2 ldr r3, [r3] | r3 = *(0x68ba);
0x00005eb4 str r3, [sp, 0x3c] | var_3ch = r3;
0x00005eb6 b 0x5da2 | goto label_7;
0x00005eb8 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005eba movs r0, 1 | r0 = 1;
0x00005ebc ldr.w r3, [pc, 0x9fc] | r3 = *(0x68bc);
0x00005ec0 ldr.w r1, [pc, 0x9fc] |
0x00005ec4 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005ec6 add r1, pc | r1 = 0xc78a;
0x00005ec8 ldr r2, [r3] | r2 = *(0x68bc);
0x00005eca blx 0x1c54 | fcn_00001c54 ();
| do {
0x00005ece movs r4, 0 | r4 = 0;
0x00005ed0 b 0x5e4e | goto label_8;
0x00005ed2 ldr r2, [sp, 0x20] | r2 = stream;
0x00005ed4 movs r3, 1 | r3 = 1;
0x00005ed6 strb.w r3, [r2, 0x7e2] | *((r2 + 0x7e2)) = r3;
0x00005eda b 0x5da2 | goto label_7;
0x00005edc ldr r2, [sp, 0x20] | r2 = stream;
0x00005ede movs r3, 1 | r3 = 1;
0x00005ee0 strb.w r3, [r2, 0x7e3] | *((r2 + 0x7e3)) = r3;
0x00005ee4 b 0x5da2 | goto label_7;
0x00005ee6 ldr.w r2, [pc, 0x9dc] | r2 = *(0x000068c4);
0x00005eea add r2, pc | r2 += pc;
0x00005eec ldr r3, [r2] | r3 = *(r2);
0x00005eee adds r3, 1 | r3++;
0x00005ef0 str r3, [r2] | *(r2) = r3;
0x00005ef2 b 0x5da2 | goto label_7;
0x00005ef4 ldr r3, [sp, 0x24] | r3 = var_24h;
| if (r3 != 0) {
0x00005ef6 cbz r3, 0x5efe |
0x00005ef8 mov r0, r3 | r0 = r3;
0x00005efa blx 0x19a0 | fcn_000019a0 ();
| }
0x00005efe ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005f00 ldr.w r3, [pc, 0x9c4] | r3 = *(0x68c8);
0x00005f04 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005f06 ldr r0, [r3] | r0 = *(0x68c8);
0x00005f08 bl 0x960c | fcn_0000960c (r0);
0x00005f0c str r0, [sp, 0x24] | var_24h = r0;
0x00005f0e b 0x5da2 | goto label_7;
0x00005f10 ldr.w r0, [pc, 0x9b8] |
0x00005f14 add r0, pc | r0 = 0xc7e4;
0x00005f16 blx 0x1b00 | malloc (r0);
0x00005f1a ldr.w r0, [pc, 0x9b4] |
0x00005f1e add r0, pc | r0 = 0xc7f4;
0x00005f20 blx 0x1b00 | malloc (r0);
0x00005f24 b 0x5ece |
| } while (1);
0x00005f26 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005f28 ldr.w r3, [pc, 0x99c] |
0x00005f2c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005f2e ldr r3, [r3] | r3 = *(0x68c8);
0x00005f30 ldrb r2, [r3, 1] | r2 = *((r3 + 1));
0x00005f32 cmp r2, 0 |
| if (r2 != 0) {
0x00005f34 bne.w 0x70a6 | goto label_79;
| }
0x00005f38 ldrb r3, [r3] | r3 = *(r3);
0x00005f3a ldr r2, [sp, 0x20] | r2 = stream;
0x00005f3c strb.w r3, [r2, 0x7e0] | *((r2 + 0x7e0)) = r3;
0x00005f40 b 0x5da2 | goto label_7;
0x00005f42 ldr.w r3, [pc, 0x984] |
0x00005f46 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005f48 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005f4a ldr r3, [r3] | r3 = *(0x68ca);
0x00005f4c str r3, [sp, 0x40] | var_40h = r3;
0x00005f4e b 0x5da2 | goto label_7;
0x00005f50 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005f52 ldr.w r3, [pc, 0x974] |
0x00005f56 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005f58 ldr r2, [sp, 0x20] | r2 = stream;
0x00005f5a ldr r3, [r3] | r3 = *(0x68ca);
0x00005f5c str r3, [sp, 0x38] | var_38h = r3;
0x00005f5e movs r3, 1 | r3 = 1;
0x00005f60 strb.w r3, [r2, 0x7e1] | *((r2 + 0x7e1)) = r3;
0x00005f62 adds r7, 0xe1 | r7 += 0xe1;
0x00005f64 b 0x5da2 | goto label_7;
0x00005f66 ldr r3, [sp, 0x30] | r3 = var_30h;
0x00005f68 mov r0, fp | r0 = fp;
0x00005f6a add.w sl, r3, 2 | sl = r3 + 2;
0x00005f6e lsl.w sl, sl, 2 | sl <<= 2;
0x00005f72 mov r1, sl | r1 = sl;
0x00005f74 blx 0x1a34 | r0 = regexec ();
0x00005f78 cmp r0, 0 |
| if (r0 == 0) {
0x00005f7a beq.w 0x75ea | goto label_80;
| }
0x00005f7e ldr r3, [sp, 0x30] | r3 = var_30h;
0x00005f80 add sl, r0 | sl += r0;
0x00005f82 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005f84 mov fp, r0 |
0x00005f86 adds r3, 1 | r3++;
0x00005f88 str r3, [sp, 0x30] | var_30h = r3;
0x00005f8a ldr.w r3, [pc, 0x93c] |
0x00005f8e ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005f90 movs r2, 0 | r2 = 0;
0x00005f92 str r2, [sl, -0x4] | *((sl - 0x4)) = r2;
0x00005f96 ldr r3, [r3] | r3 = *(0x68ca);
0x00005f98 str r3, [sl, -0x8] | *((sl - 0x8)) = r3;
0x00005f9c b 0x5da2 | goto label_7;
0x00005f9e movs r3, 1 | r3 = 1;
0x00005fa0 str r3, [sp, 0x44] | var_44h = r3;
0x00005fa2 b 0x5da2 | goto label_7;
0x00005fa4 movs r3, 1 | r3 = 1;
0x00005fa6 str r3, [sp, 0x48] | var_0h = r3;
0x00005fa8 b 0x5da2 | goto label_7;
| label_78:
0x00005faa ldr.w r1, [pc, 0x928] |
0x00005fae mov r2, r0 | r2 = r0;
0x00005fb0 movs r0, 4 | r0 = 4;
0x00005fb2 add r1, pc | r1 = 0xc88c;
0x00005fb4 bl 0x85e4 | fcn_000085e4 (r0);
0x00005fb8 b 0x5da2 | goto label_7;
| label_76:
0x00005fba ldr.w r3, [pc, 0x91c] |
0x00005fbe mov sl, r0 | sl = r0;
0x00005fc0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00005fc2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00005fc4 str r3, [sp, 0x30] | var_30h = r3;
0x00005fc6 ldr r3, [r3] | r3 = *(0x68da);
0x00005fc8 cmp r3, r5 |
| if (r3 < r5) {
0x00005fca blt.w 0x62a4 | goto label_81;
| }
0x00005fce add r6, sp, 0x1a0 | r6 += arg_1a0h;
0x00005fd0 sub.w r0, r6, 0x30 | r0 = r6 - 0x30;
0x00005fd4 blx 0x1a04 | r0 = strdup (r0);
0x00005fd8 cmp r0, 0 |
| if (r0 < 0) {
0x00005fda blt.w 0x6ff0 | goto label_82;
| }
0x00005fde ldr r2, [sp, 0x20] | r2 = stream;
0x00005fe0 add.w r3, r6, 0x52 | r3 = r6 + 0x52;
0x00005fe4 subw r2, r2, 0x828 | __asm ("subw r2, r2, 0x828");
0x00005fe8 str r3, [r2] | *(r2) = r3;
| label_12:
0x00005fea ldr r2, [sp, 0x24] | r2 = var_24h;
0x00005fec cmp r2, 0 |
| if (r2 == 0) {
0x00005fee beq.w 0x62e8 | goto label_83;
| }
0x00005ff2 ldr r2, [sp, 0x24] | r2 = var_24h;
| label_14:
0x00005ff4 strd r2, r3, [sp, 4] | __asm ("strd r2, r3, [sp, 4]");
0x00005ff8 ldr.w r3, [pc, 0x8e0] |
0x00005ffc ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00005ffe add r3, pc | r3 = 0xc8de;
0x00006000 sub.w r6, r2, 0x24 | r6 = r2 - 0x24;
0x00006004 str r3, [sp] | *(sp) = r3;
0x00006006 mov.w r3, 0x1000 | r3 = 0x1000;
0x0000600a movs r2, 1 | r2 = 1;
0x0000600c mov r1, r3 | r1 = r3;
0x0000600e mov r0, r6 | r0 = r6;
0x00006010 blx 0x1dd4 | fcn_00001dd4 ();
0x00006014 ldr r3, [sp, 0x20] | r3 = stream;
0x00006016 ldr r2, [sp, 0x44] | r2 = var_44h;
0x00006018 str.w r0, [r3, 0x7dc] | __asm ("str.w r0, [r3, 0x7dc]");
0x0000601c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000601e ldr r3, [r3] | r3 = *(r3);
0x00006020 cmp r3, r5 |
0x00006022 it eq |
| if (r3 != r5) {
0x00006024 moveq r2, 1 | r2 = 1;
| }
0x00006026 ldr r3, [sp, 0x48] | r3 = var_0h;
0x00006028 str r2, [sp, 0x44] | var_44h = r2;
0x0000602a cmp r3, 0 |
| if (r3 == 0) {
0x0000602c beq.w 0x62d2 | goto label_84;
| }
0x00006030 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00006032 ldr.w r3, [pc, 0x884] |
0x00006036 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x00006038 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000603a ldr r3, [r3] | r3 = *(0x68ba);
0x0000603c cmp r3, r2 |
| if (r3 == r2) {
0x0000603e beq.w 0x62d8 | goto label_85;
| }
0x00006042 mov r0, r6 | r0 = r6;
0x00006044 blx 0x1ab8 | r0 = fnmatch ();
0x00006048 mov r7, r0 | r7 = r0;
0x0000604a cmp r0, 0 |
| if (r0 == 0) {
0x0000604c beq.w 0x700c | goto label_86;
| }
0x00006050 blx 0x1d40 | renameat ();
0x00006054 ldr.w r1, [pc, 0x888] |
0x00006058 movs r3, 0 | r3 = 0;
0x0000605a ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000605c add r1, pc | r1 = 0xc940;
0x0000605e blx 0x1adc | r0 = asprintf_chk ();
0x00006062 mov r8, r0 | r8 = r0;
0x00006064 cmp r0, 0 |
| if (r0 != 0) {
0x00006066 bne.w 0x6aea | goto label_87;
| }
0x0000606a mov r0, r6 | r0 = r6;
0x0000606c blx 0x1bb0 | fcn_00001bb0 ();
0x00006070 mov r1, r6 | r1 = r6;
0x00006072 add.w r6, sp, 0x1300 | r6 += ptr;
0x00006076 adds r6, 0x1c | r6 += 0x1c;
0x00006078 mov sb, r0 | sb = r0;
0x0000607a mov r2, r0 | r2 = r0;
0x0000607c mov.w r3, 0x1000 | r3 = 0x1000;
0x00006080 mov r0, r6 | r0 = r6;
0x00006082 blx 0x1a4c | fwrite (r0, r1, r2, r3);
0x00006086 ldr r1, [sp, 0x20] | r1 = stream;
0x00006088 mov r3, r6 | r3 = r6;
0x0000608a add.w r2, sb, 1 | r2 = sb + 1;
0x0000608e movs r6, 0x2f | r6 = 0x2f;
0x00006090 strb.w r6, [r3, sb] | *((r3 + sb)) = r6;
0x00006094 mov r0, r7 | r0 = r7;
0x00006096 subw r1, r1, 0xa18 | __asm ("subw r1, r1, 0xa18");
0x0000609a strb.w r8, [r3, r2] | *((r3 + r2)) = r8;
0x0000609e ldr r1, [r1, 0x50] | r1 = *((r1 + 0x50));
0x000060a0 bl 0x4754 | r0 = fcn_00004754 (r0, r1, r2, r3);
0x000060a4 mov r6, r0 | r6 = r0;
0x000060a6 mov r0, r7 | r0 = r7;
0x000060a8 blx 0x1dc8 | fcn_00001dc8 ();
| label_30:
0x000060ac cmp r6, 1 |
| if (r6 == 1) {
0x000060ae beq.w 0x62d8 | goto label_85;
| }
| label_13:
0x000060b2 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000060b4 sub.w r7, r3, 0x24 | r7 = r3 - 0x24;
0x000060b8 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000060ba mov r0, r7 | r0 = r7;
0x000060bc sub.w r1, r3, 0x30 | r1 = r3 - 0x30;
0x000060c0 bl 0x9b18 | r0 = fcn_00009b18 (r0, r1, r2, r3, r4);
0x000060c4 mov r6, r0 | r6 = r0;
0x000060c6 cmp r0, 0 |
| if (r0 == 0) {
0x000060c8 beq.w 0x6ad8 | goto label_88;
| }
0x000060cc ldr.w r3, [pc, 0x814] | r3 = *(0x000068e4);
0x000060d0 add r3, pc | r3 += pc;
0x000060d2 ldr r1, [r3] | r1 = *(r3);
0x000060d4 bl 0x86bc | fcn_000086bc (r0, r1);
0x000060d8 ldr r3, [sp, 0x20] | r3 = stream;
0x000060da movs r1, 0x80 | r1 = 0x80;
0x000060dc subw r7, r3, 0xaa4 | __asm ("subw r7, r3, 0xaa4");
0x000060e0 ldr r3, [sp, 0x34] | r3 = var_34h;
0x000060e2 strd r3, r6, [r7] | __asm ("strd r3, r6, [r7]");
0x000060e6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000060e8 sub.w r0, r3, 0x1c | r0 = r3 - 0x1c;
0x000060ec bl 0x8b68 | fcn_00008b68 (r0, r1);
0x000060f0 movs r1, 0 | r1 = 0;
0x000060f2 mov.w r0, 0x200 | r0 = 0x200;
0x000060f6 bl 0x8c14 | fcn_00008c14 (r0, r1);
0x000060fa str r0, [r7, 0x18] | *((r7 + 0x18)) = r0;
0x000060fc cmp r0, 0 |
| if (r0 == 0) {
0x000060fe beq.w 0x6414 | goto label_89;
| }
0x00006102 movs r1, 0 | r1 = 0;
0x00006104 mov.w r0, 0x200 | r0 = 0x200;
0x00006108 bl 0x8c14 | fcn_00008c14 (r0, r1);
0x0000610c str r0, [r7, 0x1c] | *((r7 + 0x1c)) = r0;
0x0000610e cmp r0, 0 |
| if (r0 == 0) {
0x00006110 beq.w 0x6f8e | goto label_90;
| }
0x00006114 ldr.w r1, [pc, 0x7d0] | r1 = *(0x000068e8);
0x00006118 mov.w r0, 0x800 | r0 = 0x800;
0x0000611c add r1, pc | r1 += pc;
0x0000611e bl 0x8c14 | fcn_00008c14 (r0, r1);
0x00006122 str r0, [r7, 0x20] | *((r7 + 0x20)) = r0;
0x00006124 cmp r0, 0 |
| if (r0 == 0) {
0x00006126 beq.w 0x7144 | goto label_91;
| }
| label_18:
0x0000612a ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000612c cmp r3, 0 |
| if (r3 == 0) {
0x0000612e beq.w 0x62f0 | goto label_92;
| }
0x00006132 ldr.w r1, [pc, 0x7b8] |
0x00006136 mov r0, r3 | r0 = r3;
0x00006138 add r1, pc | r1 = 0xca2a;
0x0000613a blx 0x1d4c | r0 = fstat64 ();
0x0000613e mov r8, r0 | r8 = r0;
0x00006140 cmp r0, 0 |
| if (r0 == 0) {
0x00006142 beq.w 0x756a | goto label_93;
| }
0x00006146 ldr.w r1, [pc, 0x7a8] |
0x0000614a movs r0, 7 | r0 = 7;
0x0000614c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000614e add.w r6, sp, 0x1300 | r6 += ptr;
0x00006152 ldr.w sb, [pc, 0x7a0] |
0x00006156 adds r6, 0x1c | r6 += 0x1c;
0x00006158 add r1, pc | r1 = 0xca4e;
0x0000615a bl 0x85e4 | fcn_000085e4 (r0);
0x0000615e ldr.w r3, [pc, 0x798] |
0x00006162 add sb, pc | sb = 0xca5c;
0x00006164 str.w sl, [sp, 0x40] | __asm ("str.w sl, [var_40h]");
0x00006168 add r3, pc | r3 = 0xca66;
0x0000616a str r3, [sp, 0x2c] | var_2ch = r3;
0x0000616c ldr.w r3, [pc, 0x78c] |
0x00006170 add r3, pc | r3 = 0xca70;
0x00006172 str r3, [sp, 0x44] | var_44h = r3;
0x00006174 movs r3, 0 | r3 = 0;
0x00006176 str r3, [sp, 0x1c] | var_1ch = r3;
| do {
| label_9:
0x00006178 mov r2, r8 | r2 = r8;
0x0000617a mov.w r1, 0x2800 | r1 = 0x2800;
0x0000617e mov r0, r6 | r0 = r6;
0x00006180 blx 0x19ac | r0 = fcn_000019ac ();
0x00006184 cmp r0, 0 |
| if (r0 == 0) {
0x00006186 beq 0x6206 | goto label_94;
| }
| label_10:
0x00006188 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000618a mov r1, sb | r1 = sb;
0x0000618c mov r0, r6 | r0 = r6;
0x0000618e adds r3, 1 | r3++;
0x00006190 str r3, [sp, 0x1c] | var_1ch = r3;
0x00006192 blx 0x1cac | fcn_00001cac ();
0x00006196 mov r1, sb | r1 = sb;
0x00006198 mov r7, r0 | r7 = r0;
0x0000619a movs r0, 0 | r0 = 0;
0x0000619c blx 0x1cac | fcn_00001cac ();
0x000061a0 mov r1, sb | r1 = sb;
0x000061a2 mov sl, r0 | sl = r0;
0x000061a4 movs r0, 0 | r0 = 0;
0x000061a6 blx 0x1cac | fcn_00001cac ();
0x000061aa cmp.w sl, 0 |
0x000061ae it ne |
| if (sl != 0) {
0x000061b0 cmpne r7, 0 | __asm ("cmpne r7, 0");
| }
0x000061b2 ite eq |
| if (sl != 0) {
0x000061b4 moveq r3, 1 | r3 = 1;
| }
| if (sl == 0) {
0x000061b6 movne r3, 0 | r3 = 0;
| }
0x000061b8 cmp r0, 0 |
0x000061ba it eq |
| if (r0 != 0) {
0x000061bc orreq r3, r3, 1 | r3 |= 1;
| }
0x000061c0 cmp r3, 0 |
0x000061c2 bne 0x6178 |
| } while (r3 != 0);
0x000061c4 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x000061c6 blx 0x1924 | r0 = fcn_00001924 ();
0x000061ca cmp r0, 0 |
| if (r0 != 0) {
0x000061cc bne 0x6178 | goto label_9;
| }
0x000061ce movs r2, 0x10 | r2 = 0x10;
0x000061d0 ldr r1, [sp, 0x18] | r1 = var_18h;
0x000061d2 mov r0, r7 | r0 = r7;
0x000061d4 blx 0x1c44 | write (r0, r1, r2);
0x000061d8 ldr r3, [sp, 0x20] | r3 = stream;
0x000061da subw r3, r3, 0xa18 | __asm ("subw r3, r3, 0xa18");
0x000061de ldr r3, [r3] | r3 = *(r3);
0x000061e0 ldrb r2, [r3] | r2 = *(r3);
0x000061e2 cmp r2, 0 |
| if (r2 != 0) {
0x000061e4 bne.w 0x6404 | goto label_95;
| }
0x000061e8 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000061ec mov r1, sl | r1 = sl;
0x000061ee ldr r0, [sp, 0x4c] | r0 = var_4h;
0x000061f0 str r2, [sp, 8] | var_8h_2 = r2;
0x000061f2 bl 0x5330 | fcn_00005330 (r0, r1, r2, r3);
0x000061f6 mov r2, r8 | r2 = r8;
0x000061f8 mov.w r1, 0x2800 | r1 = 0x2800;
0x000061fc mov r0, r6 | r0 = r6;
0x000061fe blx 0x19ac | r0 = fcn_000019ac ();
0x00006202 cmp r0, 0 |
| if (r0 != 0) {
0x00006204 bne 0x6188 | goto label_10;
| }
| label_94:
0x00006206 ldr r0, [sp, 0x4c] | r0 = var_4h;
0x00006208 ldr.w sl, [sp, 0x40] | sl = var_40h;
0x0000620c bl 0x53c0 | fcn_000053c0 (r0);
0x00006210 ldr.w r1, [pc, 0x6ec] |
0x00006212 asrs r4, r5, 0x1b | r4 = r5 >> 0x1b;
0x00006214 movs r0, 7 | r0 = 7;
0x00006216 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00006218 add r1, pc | r1 = 0xcb1c;
0x0000621a bl 0x85e4 | fcn_000085e4 (r0);
0x0000621e mov r0, r8 | r0 = r8;
0x00006220 blx 0x1c84 | fcn_00001c84 ();
| label_16:
0x00006224 ldr r3, [sp, 0x48] | r3 = var_0h;
0x00006226 cmp r3, 0 |
| if (r3 != 0) {
0x00006228 bne.w 0x6724 | goto label_96;
| }
0x0000622c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000622e ldr r6, [r3] | r6 = *(r3);
0x00006230 cmp r5, r6 |
| if (r5 <= r6) {
0x00006232 ble.w 0x65b2 | goto label_43;
| }
0x00006236 ldr r3, [sp, 0x20] | r3 = stream;
0x00006238 add.w r4, r4, r6, lsl 2 | r4 += (r6 << 2);
0x0000623c str.w sl, [sp, 0x2c] | __asm ("str.w sl, [var_2ch]");
0x00006240 str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x00006244 ldr.w sl, [sp, 0x18] | sl = var_18h;
0x00006248 subw sb, r3, 0xaa4 | __asm ("subw sb, r3, 0xaa4");
0x0000624c ldr.w fp, [sp, 0x4c] | fp = var_4h;
0x00006250 subw r8, r3, 0xa18 | __asm ("subw r8, r3, 0xa18");
0x00006252 cmp r0, 0x18 |
0x00006254 b 0x6280 |
| while (r3 == 0x2f) {
0x00006256 ldr.w r0, [sb, 4] | r0 = *((sb + 4));
0x0000625a mov r2, sl | r2 = sl;
0x0000625c mov r1, r7 | r1 = r7;
0x0000625e bl 0xc8c4 | r0 = fcn_0000c8c4 (r0, r1, r2);
0x00006260 smlawb r8, r1, r0, r2 | __asm ("smlawb r8, r1, r0, r2");
| if (r0 < 0x18) {
0x00006264 blt.w 0x70b6 | goto label_97;
| }
0x00006268 ldr.w r1, [r8] | r1 = *(r8);
0x0000626c mov r0, fp | r0 = fp;
0x0000626e bl 0x4a80 | fcn_00004a80 (r0, r1, r2, r3);
0x00006270 invalid |
0x00006272 cmp r0, 0 |
| if (r0 < 0) {
0x00006274 blt.w 0x70d4 | goto label_98;
| }
0x00006278 adds r6, 1 | r6++;
0x0000627a cmp r5, r6 |
| if (r5 == r6) {
0x0000627c beq.w 0x70fa | goto label_99;
| }
0x00006280 ldr r7, [r4], 4 | r7 = *(r4);
| r4 += 4;
0x00006284 ldrb r3, [r7] | r3 = *(r7);
0x00006286 cmp r3, 0x2f |
0x00006288 beq 0x6256 |
| }
0x0000628a ldr.w r1, [pc, 0x678] |
0x0000628e mov r2, r7 | r2 = r7;
0x00006290 movs r0, 2 | r0 = 2;
0x00006292 ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x00006296 add r1, pc | r1 = 0xcba0;
0x00006298 bl 0x85e4 | fcn_000085e4 (r0);
| label_32:
0x0000629c ldr r0, [sp, 0x4c] | r0 = var_4h;
0x0000629e bl 0x49d8 | fcn_000049d8 (r0);
0x000062a2 b 0x5e46 | goto label_11;
| label_81:
0x000062a4 ldr.w r1, [pc, 0x660] |
0x000062a8 ldr.w r0, [r4, r3, lsl 2] | offset_0 = r3 << 2;
| r0 = *((r4 + offset_0));
0x000062ac ldr r2, [sp, 0x28] | r2 = var_28h;
0x000062ae ldr r3, [sp, 0x18] | r3 = var_18h;
0x000062b0 add r1, pc | r1 = 0xcbbc;
0x000062b2 blx 0x1bfc | r0 = mkdir ();
0x000062b6 cmp r0, 2 |
| if (r0 != 2) {
0x000062b8 bne.w 0x6b0a | goto label_100;
| }
0x000062bc ldr r0, [sp, 0x30] | r0 = var_30h;
0x000062be ldr r3, [sp, 0x20] | r3 = stream;
0x000062c0 ldr r2, [r0] | r2 = *(r0);
0x000062c2 subw r1, r3, 0x828 | __asm ("subw r1, r3, 0x828");
0x000062c6 ldr.w r3, [r4, r2, lsl 2] | offset_1 = r2 << 2;
| r3 = *((r4 + offset_1));
0x000062ca adds r2, 1 | r2++;
0x000062cc str r2, [r0] | *(r0) = r2;
0x000062ce str r3, [r1] | *(r1) = r3;
0x000062d0 b 0x5fea | goto label_12;
| label_84:
0x000062d2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000062d4 str r3, [sp, 0x48] | var_0h = r3;
0x000062d6 b 0x60b2 | goto label_13;
| label_85:
0x000062d8 movs r4, 0 | r4 = 0;
| label_35:
0x000062da ldr r0, [sp, 0x4c] | r0 = var_4h;
0x000062dc bl 0x49d8 | fcn_000049d8 (r0);
0x000062e0 ldr r0, [sp, 0x34] | r0 = var_34h;
0x000062e2 bl 0x46d8 | fcn_000046d8 (r0);
0x000062e6 b 0x5e4e | goto label_8;
| label_83:
0x000062e8 ldr.w r2, [pc, 0x620] |
0x000062ec add r2, pc | r2 = 0xcbfc;
0x000062ee b 0x5ff4 | goto label_14;
| label_92:
0x000062f0 ldr r6, [sp, 0x40] | r6 = var_40h;
0x000062f2 cmp r6, 0 |
| if (r6 == 0) {
0x000062f4 beq.w 0x6fa6 | goto label_101;
| }
0x000062f8 ldr.w r2, [pc, 0x614] |
0x000062fc add.w r3, sp, 0x1300 | r3 += ptr;
0x000062fe strh r0, [r3, r6] | *((r3 + r6)) = r0;
0x00006300 adds r3, 0x10 | r3 += 0x10;
0x00006302 add r2, pc | r2 = 0xcc16;
0x00006304 ldm r2, {r0, r1, r2} | r0 = *(r2);
| r1 = *((r2 + 4));
| r2 = *((r2 + 8));
0x00006306 stm r3!, {r0, r1} | *(r3!) = r0;
| *((r3! + 4)) = r1;
0x00006308 mov r0, r6 | r0 = r6;
0x0000630a ldr.w r1, [pc, 0x608] |
0x0000630e strh r2, [r3], 2 | *(r3) = r2;
| r3 += 2;
0x00006312 lsrs r2, r2, 0x10 | r2 >>= 0x10;
0x00006314 add r1, pc | r1 = 0xcc2e;
0x00006316 strb r2, [r3] | *(r3) = r2;
0x00006318 blx 0x1d4c | r0 = fstat64 ();
0x0000631c mov r8, r0 | r8 = r0;
0x0000631e cmp r0, 0 |
| if (r0 == 0) {
0x00006320 beq.w 0x752c | goto label_102;
| }
0x00006324 ldr.w r1, [pc, 0x5f0] |
0x00006328 movs r0, 7 | r0 = 7;
0x0000632a ldr r2, [sp, 0x40] | r2 = var_40h;
0x0000632c add.w r6, sp, 0x1300 | r6 += ptr;
0x0000632e ldrsb r0, [r3, r2] | r0 = *((r3 + r2));
0x00006330 ldr r7, [sp, 0x38] | r7 = var_38h;
0x00006332 adds r6, 0x1c | r6 += 0x1c;
0x00006334 add r1, pc | r1 = 0xcc50;
0x00006336 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x0000633a bl 0x85e4 | fcn_000085e4 (r0);
0x0000633e ldr.w r3, [pc, 0x5dc] |
0x00006342 add r3, pc | r3 = 0xcc64;
0x00006344 str r3, [sp, 0x38] | var_38h = r3;
0x00006346 add.w r3, sp, 0x1320 | r3 += arg_1320h;
0x0000634a str r3, [sp, 0x2c] | var_2ch = r3;
| do {
| label_17:
0x0000634c mov r2, r8 | r2 = r8;
0x0000634e mov.w r1, 0x2800 | r1 = 0x2800;
0x00006352 mov r0, r6 | r0 = r6;
0x00006354 blx 0x19ac | r0 = fcn_000019ac ();
0x00006358 cmp r0, 0 |
| if (r0 == 0) {
0x0000635a beq 0x63d8 | goto label_103;
| }
| label_15:
0x0000635c movs r1, 0x20 | r1 = 0x20;
0x0000635e mov r0, r6 | r0 = r6;
0x00006360 adds r7, 1 | r7++;
0x00006362 blx 0x1bbc | r0 = fcn_00001bbc ();
0x00006366 cmp r0, 0 |
| if (r0 == 0) {
0x00006368 beq 0x63f4 | goto label_104;
| }
0x0000636a adds r0, 1 | r0++;
0x0000636c movs r1, 0x20 | r1 = 0x20;
0x0000636e blx 0x1bbc | r0 = fcn_00001bbc ();
0x00006372 cmp r0, 0 |
| if (r0 == 0) {
0x00006374 beq 0x63f4 | goto label_104;
| }
0x00006376 ldr r3, [sp, 0x20] | r3 = stream;
0x00006378 ldrb r2, [r0, 1] | r2 = *((r0 + 1));
0x0000637a subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x0000637e ldr r3, [r3] | r3 = *(r3);
0x00006380 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00006384 ldrb r3, [r3, 8] | r3 = *((r3 + 8));
0x00006386 cmp r2, r3 |
0x00006388 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000638a ite ne |
| if (r2 == r3) {
0x0000638c addne sb, r0, 1 | sb = r0 + 1;
| }
| if (r2 == r3) {
0x00006390 add.w sb, r0, 2 | sb = r0 + 2;
| }
0x00006394 movs r2, 0xa | r2 = 0xa;
0x00006396 mov r0, sb | r0 = sb;
0x00006398 sub.w r1, r3, 0x10 | r1 = r3 - 0x10;
0x0000639c blx 0x1da4 | fcn_00001da4 ();
0x000063a0 str r0, [sp, 0x1c] | var_1ch = r0;
0x000063a2 cmp r0, 0 |
0x000063a4 bne 0x634c |
| } while (r0 != 0);
0x000063a6 movs r1, 0xa | r1 = 0xa;
0x000063a8 mov r0, sb | r0 = sb;
0x000063aa blx 0x1bbc | r0 = fcn_00001bbc ();
| if (r0 != 0) {
0x000063ae cbz r0, 0x63b4 |
0x000063b0 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000063b2 strb r3, [r0] | *(r0) = r3;
| }
0x000063b4 movs r3, 0 | r3 = 0;
0x000063b6 ldr r0, [sp, 0x4c] | r0 = var_4h;
0x000063b8 add.w r1, sb, 0xa | r1 = sb + 0xa;
0x000063bc movs r2, 1 | r2 = 1;
0x000063be vstr d8, [sp] | __asm ("vstr d8, [sp]");
0x000063c2 str r3, [sp, 8] | var_8h_2 = r3;
0x000063c4 bl 0x5330 | fcn_00005330 (r0, r1, r2, r3);
0x000063c8 mov r2, r8 | r2 = r8;
0x000063ca mov.w r1, 0x2800 | r1 = 0x2800;
0x000063ce mov r0, r6 | r0 = r6;
0x000063d0 blx 0x19ac | r0 = fcn_000019ac ();
0x000063d4 cmp r0, 0 |
| if (r0 != 0) {
0x000063d6 bne 0x635c | goto label_15;
| }
| label_103:
0x000063d8 ldr r0, [sp, 0x4c] | r0 = var_4h;
0x000063da bl 0x53c0 | fcn_000053c0 (r0);
0x000063de ldr.w r1, [pc, 0x540] |
0x000063e2 movs r0, 7 | r0 = 7;
0x000063e4 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000063e6 add r1, pc | r1 = 0xcd0c;
0x000063e8 bl 0x85e4 | fcn_000085e4 (r0);
0x000063ec mov r0, r8 | r0 = r8;
0x000063ee blx 0x1c84 | fcn_00001c84 ();
0x000063f2 b 0x6224 | goto label_16;
| label_104:
0x000063f4 ldr r2, [sp, 0x40] | r2 = var_40h;
0x000063f6 mov r3, r7 | r3 = r7;
0x000063f8 ldr r1, [sp, 0x38] | r1 = var_38h;
0x000063fa movs r0, 3 | r0 = 3;
0x000063fc str r6, [sp] | *(sp) = r6;
0x000063fe bl 0x85e4 | fcn_000085e4 (r0);
0x00006402 b 0x634c | goto label_17;
| label_95:
0x00006404 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00006406 movs r0, 3 | r0 = 3;
0x00006408 ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000640a ldr r1, [sp, 0x44] | r1 = var_44h;
0x0000640c str r7, [sp] | *(sp) = r7;
0x0000640e bl 0x85e4 | fcn_000085e4 (r0);
0x00006412 b 0x6178 | goto label_9;
| label_89:
0x00006414 blx 0x1be4 | r0 = isoc99_sscanf ();
0x00006418 ldr r7, [r0] | r7 = *(r0);
0x0000641a rsbs r7, r7, 0 | r7 -= ;
| label_40:
0x0000641c cmp r7, 0 |
| if (r7 >= 0) {
0x0000641e bge.w 0x612a | goto label_18;
| }
0x00006422 rsbs r0, r7, 0 | r0 = r7 - ;
0x00006424 blx 0x1b18 | system (r0);
0x00006426 sbcs.w r8, r8, pc, lsr 31 | __asm ("sbcs.w r8, r8, pc, lsr 31");
0x0000642a asrs r0, r7, 0x13 | r0 = r7 >> 0x13;
0x0000642c mov r2, r0 | r2 = r0;
0x0000642e movs r0, 2 | r0 = 2;
0x00006430 add r1, pc | r1 += pc;
0x00006432 bl 0x85e4 | fcn_000085e4 (r0);
0x00006434 ldr.w r4, [r7, 0x630] | r4 = *((r7 + 0x630));
0x00006438 bl 0xa164 | fcn_0000a164 (r0);
0x0000643c b 0x5e46 | goto label_11;
| label_23:
0x0000643e ldr r2, [sp, 0x20] | r2 = stream;
0x00006440 ldr.w sl, [sp, 0x38] | sl = var_38h;
0x00006444 ldr.w fp, [sp, 0x40] | fp = var_40h;
0x00006448 subw r3, r2, 0xaac | __asm ("subw r3, r2, 0xaac");
0x0000644c ldr r1, [r3] | r1 = *(r3);
0x0000644e subw r3, r2, 0xaa8 | __asm ("subw r3, r2, 0xaa8");
0x00006452 ldr.w sb, [r3] | sb = *(r3);
0x00006456 str r1, [sp, 0x54] | var_54h = r1;
0x00006458 cmp r1, 0 |
| if (r1 == 0) {
0x0000645a beq.w 0x656e | goto label_22;
| }
0x0000645e ldr.w r3, [pc, 0x4c8] |
0x00006462 ldr.w r6, [pc, 0x4c8] |
0x00006466 strd sl, fp, [sp, 0x64] | __asm ("strd sl, fp, [var_0h_2x64]");
0x0000646a add r3, pc | r3 = 0xcd98;
0x0000646c ldr.w fp, [sp, 0x34] | fp = var_34h;
0x0000646e add sp, 0xd0 |
0x00006470 str r3, [sp, 0x58] | var_58h = r3;
0x00006472 add r6, pc | r6 = 0xcda4;
0x00006474 ldr.w r3, [pc, 0x4b8] |
0x00006478 ldr r7, [sp, 0x28] | r7 = var_28h;
0x0000647a ldr r5, [sp, 0x18] | r5 = var_18h;
0x0000647c add r3, pc |
0x0000647e str.w sb, [sp, 0x6c] | __asm ("str.w sb, [var_6ch]");
0x00006482 str r3, [sp, 0x1c] | var_1ch = r3;
0x00006484 ldr.w r3, [pc, 0x4ac] | r3 = fcn.0000d5fc;
0x00006488 add r3, pc | r3 = "built-in";
0x0000648a str r3, [sp, 0x30] | var_30h = r3;
0x0000648c sub.w r3, sb, 4 | r3 = sb - 4;
0x0000648e lsls r4, r0, 0xc | r4 = r0 << 0xc;
0x00006490 mov sb, r6 | sb = r6;
0x00006492 str r3, [sp, 0x40] | var_40h = r3;
0x00006494 movs r3, 0 | r3 = 0;
0x00006496 str r3, [sp, 0x38] | var_38h = r3;
| label_19:
0x00006498 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000649a mov r8, r5 | r8 = r5;
0x0000649c ldr r1, [sp, 0x58] | r1 = var_58h;
0x0000649e ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x000064a2 strd r3, r2, [sp, 0x40] | __asm ("strd r3, r2, [sp, 0x40]");
0x000064a6 movs r3, 0 | r3 = 0;
0x000064a8 str r3, [r7] | *(r7) = r3;
0x000064aa add.w r3, r2, 0xc | r3 = r2 + 0xc;
0x000064ac lsls r4, r1, 0xc | r4 = r1 << 0xc;
0x000064ae mov r0, r3 | r0 = r3;
0x000064b0 str r3, [sp, 0x2c] | var_2ch = r3;
0x000064b2 blx 0x1d4c | r0 = fstat64 ();
0x000064b6 mov r6, r0 | r6 = r0;
0x000064b8 cmp r0, 0 |
| if (r0 != 0) {
0x000064ba bne 0x653e | goto label_105;
| }
0x000064bc b.w 0x7602 | goto label_106;
| do {
0x000064c0 ldrb r3, [r4] | r3 = *(r4);
0x000064c2 cmp r3, 0x23 |
0x000064c4 it ne |
| if (r3 != 0x23) {
0x000064c6 cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
| if (r3 != 0x23) {
0x000064c8 beq 0x6538 |
0x000064ca mov r2, r8 | r2 = r8;
0x000064cc mov r1, sb | r1 = sb;
0x000064ce blx 0x1aac | r0 = opendir ();
0x000064d2 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x000064d4 cbz r0, 0x6538 | goto label_28;
| }
0x000064d6 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x000064d8 blx 0x1924 | r0 = fcn_00001924 ();
0x000064dc cmp r0, 0 |
| if (r0 == 0) {
0x000064de beq.w 0x6876 | goto label_107;
| }
0x000064e2 ldr r1, [sp, 0x30] | r1 = var_30h;
0x000064e4 mov r0, r5 | r0 = r5;
0x000064e6 blx 0x1924 | r0 = fcn_00001924 ();
0x000064ea mov sl, r0 | sl = r0;
0x000064ec cmp r0, 0 |
| if (r0 == 0) {
0x000064ee beq.w 0x697c | goto label_108;
| }
0x000064f2 ldr.w r1, [pc, 0x444] |
0x000064f6 mov r0, r5 | r0 = r5;
0x000064f8 add r1, pc | r1 = 0xce36;
0x000064fa blx 0x1924 | r0 = fcn_00001924 ();
0x000064fe mov sl, r0 | sl = r0;
0x00006500 cmp r0, 0 |
| if (r0 == 0) {
0x00006502 beq.w 0x6a46 | goto label_109;
| }
0x00006506 ldr.w r1, [pc, 0x434] |
0x0000650a mov r0, r5 | r0 = r5;
0x0000650c add r1, pc | r1 = 0xce4e;
0x0000650e blx 0x1924 | r0 = fcn_00001924 ();
| if (r0 != 0) {
0x00006512 cbz r0, 0x6526 |
0x00006514 ldr.w r1, [pc, 0x428] |
0x00006518 mov r0, r5 | r0 = r5;
0x0000651a add r1, pc | r1 = 0xce5e;
0x0000651c blx 0x1924 | r0 = fcn_00001924 ();
0x00006520 cmp r0, 0 |
| if (r0 != 0) {
0x00006522 bne.w 0x6864 | goto label_29;
| }
| }
0x00006526 ldr.w r1, [pc, 0x41c] |
0x0000652a movs r0, 6 | r0 = 6;
0x0000652c str r5, [sp] | *(sp) = r5;
0x0000652e ldr r3, [r7] | r3 = *(r7);
0x00006530 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00006532 add r1, pc | r1 = 0xce7c;
0x00006534 bl 0x85e4 | fcn_000085e4 (r0);
| }
| label_28:
0x00006538 mov r0, r4 | r0 = r4;
0x0000653a blx 0x19a0 | fcn_000019a0 ();
| label_105:
0x0000653e mov r1, r7 | r1 = r7;
0x00006540 mov r0, r6 | r0 = r6;
0x00006542 bl 0x9550 | r0 = fcn_00009550 (r0, r1);
0x00006546 mov r4, r0 | r4 = r0;
0x00006548 cmp r0, 0 |
0x0000654a bne 0x64c0 |
| } while (r0 != 0);
0x0000654c mov r0, r6 | r0 = r6;
0x0000654e mov r5, r8 | r5 = r8;
0x00006550 blx 0x1c84 | fcn_00001c84 ();
| label_59:
0x00006554 ldr r0, [sp, 0x44] | r0 = var_44h;
0x00006556 blx 0x19a0 | fcn_000019a0 ();
0x0000655a ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000655c ldr r2, [sp, 0x54] | r2 = var_54h;
0x0000655e adds r3, 1 | r3++;
0x00006560 cmp r2, r3 |
0x00006562 str r3, [sp, 0x38] | var_38h = r3;
| if (r2 != r3) {
0x00006564 bne 0x6498 | goto label_19;
| }
0x00006566 ldrd sl, fp, [sp, 0x64] | __asm ("ldrd sl, fp, [var_64h]");
0x0000656a ldr.w sb, [sp, 0x6c] | sb = var_6ch;
0x0000656c str r0, [sp, 0x1b0] | *((sp + 0x1b0)) = r0;
| label_22:
0x0000656e mov r0, sb | r0 = sb;
0x00006570 blx 0x19a0 | fcn_000019a0 ();
0x00006572 ands.w fp, r6, r8, lsl 4 |
0x00006574 ldr r3, [sp, 0x20] | r3 = stream;
0x00006576 ldr.w r3, [r3, 0x7e8] | r3 = *((r3 + 0x7e8));
0x00006578 adds r7, 0xe8 | r7 += 0xe8;
0x0000657a cmp r3, 0 |
| if (r3 == 0) {
0x0000657c beq.w 0x7154 | goto label_110;
| }
| label_47:
0x00006580 ldr r3, [sp, 0x20] | r3 = stream;
0x00006582 ldr r5, [sp, 0x4c] | r5 = var_4h;
0x00006584 subw r4, r3, 0xaa4 | __asm ("subw r4, r3, 0xaa4");
0x00006588 ldr r1, [r4] | r1 = *(r4);
0x0000658a mov r0, r5 | r0 = r5;
0x0000658c adds r1, 4 | r1 += 4;
0x0000658e bl 0x5c4c | r0 = void (*0x5c4c)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
0x00006592 cmp r0, 0 |
| if (r0 < 0) {
0x00006594 blt.w 0x7164 | goto label_111;
| }
0x00006598 ldr r3, [r4] | r3 = *(r4);
0x0000659a add.w r3, r3, 0x1000 | r3 += 0x1000;
0x0000659e ldr r4, [r3, 0x14] | r4 = *((r3 + 0x14));
| if (r4 == 0) {
0x000065a0 cbz r4, 0x65b2 | goto label_43;
| }
| do {
0x000065a2 add.w r1, r4, 8 | r1 = r4 + 8;
0x000065a6 mov r0, r5 | r0 = r5;
0x000065a8 bl 0x5c4c | void (*0x5c4c)(uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3, r4, r5, r6);
0x000065ac ldr r4, [r4] | r4 = *(r4);
0x000065ae cmp r4, 0 |
0x000065b0 bne 0x65a2 |
| } while (r4 != 0);
| label_43:
0x000065b2 ldr r3, [sp, 0x20] | r3 = stream;
0x000065b4 ldr r7, [sp, 0x18] | r7 = var_18h;
0x000065b6 subw r5, r3, 0xaa4 | __asm ("subw r5, r3, 0xaa4");
0x000065ba ldr r0, [r5, 0x1c] | r0 = *((r5 + 0x1c));
0x000065bc mov r1, r7 | r1 = r7;
0x000065be bl 0x91d8 | fcn_000091d8 (r0, r1);
0x000065c2 ldr r4, [sp, 0x28] | r4 = var_28h;
0x000065c4 sub.w r6, r4, 0x1c | r6 = r4 - 0x1c;
0x000065c8 b 0x65dc |
| while (r0 != 0) {
0x000065ca ldr r1, [r4] | r1 = *(r4);
0x000065cc mov r0, r6 | r0 = r6;
0x000065ce ldr r3, [r5, 0xc] | r3 = *((r5 + 0xc));
0x000065d0 strh r3, [r1, 0x38] | *((r1 + 0x38)) = r3;
0x000065d2 bl 0x8b98 | r0 = fcn_00008b98 (r0, r1);
0x000065d6 cmp r0, 0 |
| if (r0 < 0) {
0x000065d8 blt.w 0x7106 | goto label_112;
| }
0x000065dc mov r2, r4 | r2 = r4;
0x000065de movs r1, 0 | r1 = 0;
0x000065e0 mov r0, r7 | r0 = r7;
0x000065e2 bl 0x91e8 | r0 = fcn_000091e8 (r0, r1, r2, r3);
0x000065e6 cmp r0, 0 |
0x000065e8 bne 0x65ca |
| }
0x000065ea ldr r3, [sp, 0x20] | r3 = stream;
0x000065ec mov r4, r0 | r4 = r0;
0x000065ee ldr r1, [pc, 0x358] |
0x000065f0 subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x000065f4 ldr r0, [r3] | r0 = *(r3);
0x000065f6 add r1, pc | r1 = 0xcf44;
0x000065f8 adds r0, 4 | r0 += 4;
0x000065fa bl 0x5238 | r0 = fcn_00005238 (r0, r1);
0x000065fe mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00006600 cbz r0, 0x6652 | goto label_113;
| }
0x00006602 add.w r6, sp, 0x1300 | r6 += ptr;
0x00006606 adds r6, 0x1c | r6 += 0x1c;
0x00006608 mov r7, r6 | r7 = r6;
| do {
| label_20:
0x0000660a mov r2, r5 | r2 = r5;
0x0000660c mov.w r1, 0x1000 | r1 = 0x1000;
0x00006610 mov r0, r6 | r0 = r6;
0x00006612 blx 0x19ac | r0 = fcn_000019ac ();
0x00006616 cmp r0, 0 |
| if (r0 == 0) {
0x00006618 beq.w 0x7026 | goto label_114;
| }
0x0000661c mov r0, r6 | r0 = r6;
0x0000661e adds r4, 1 | r4++;
0x00006620 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00006624 cmp r0, 0 |
0x00006626 beq 0x660a |
| } while (r0 == 0);
0x00006628 add r0, r7 | r0 += r7;
0x0000662a ldrb r3, [r0, -0x1] | r3 = *((r0 - 0x1));
0x0000662e cmp r3, 0xa |
| if (r3 == 0xa) {
0x00006630 beq 0x660a | goto label_20;
| }
0x00006632 ldr r3, [sp, 0x20] | r3 = stream;
0x00006634 movs r0, 3 | r0 = 3;
0x00006636 ldr r1, [pc, 0x314] |
0x00006638 str r4, [sp] | *(sp) = r4;
0x0000663a subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x0000663e ldr r2, [r3] | r2 = *(r3);
0x00006640 add r1, pc | r1 = 0xcf92;
0x00006642 ldr r3, [pc, 0x30c] |
0x00006644 adds r2, 4 | r2 += 4;
0x00006646 add r3, pc | r3 = 0xcf9c;
0x00006648 bl 0x85e4 | fcn_000085e4 (r0);
| label_42:
0x0000664c mov r0, r5 | r0 = r5;
0x0000664e blx 0x1c84 | fcn_00001c84 ();
| label_113:
0x00006652 ldr r3, [sp, 0x20] | r3 = stream;
0x00006654 movs r0, 7 | r0 = 7;
0x00006656 ldr r1, [pc, 0x2fc] |
0x00006658 subw r4, r3, 0xaa4 | __asm ("subw r4, r3, 0xaa4");
0x0000665c ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
0x0000665e add r1, pc | r1 = 0xcfb8;
0x00006660 bl 0x85e4 | fcn_000085e4 (r0);
0x00006664 ldrd r6, r2, [r4, 8] | __asm ("ldrd r6, r2, [r4, 8]");
0x00006668 add.w r8, r6, r2, lsl 2 | r8 = r6 + (r2 << 2);
0x0000666c cmp r6, r8 |
| if (r6 >= r8) {
0x0000666e bhs.w 0x6b26 | goto label_115;
| }
0x00006672 ldr r3, [pc, 0x2e4] |
0x00006674 ldr r2, [sp, 0x20] | r2 = stream;
0x00006676 strd sl, fp, [sp, 0x28] | __asm ("strd sl, fp, [var_0h_2x28]");
0x0000667a add r3, pc | r3 = 0xcfd8;
0x0000667c ldr r7, [sp, 0x4c] | r7 = var_4h;
0x0000667e ldr.w sb, [sp, 0x18] | sb = var_18h;
0x00006682 subw r5, r2, 0xa18 | __asm ("subw r5, r2, 0xa18");
0x00006686 mov sl, r3 | sl = r3;
0x00006688 str r6, [sp, 0x1c] | var_1ch = r6;
0x0000668a b 0x66ca |
| while (r0 < 0) {
0x0000668c adds r3, r0, 2 | r3 = r0 + 2;
0x0000668e ldr r6, [r4, 4] | r6 = *((r4 + 4));
| if (r3 == r0) {
0x00006690 beq 0x6716 | goto label_116;
| }
0x00006692 rsbs r0, r0, 0 | r0 -= ;
0x00006694 blx 0x1b18 | system (r0);
0x00006698 mov r2, r6 | r2 = r6;
0x0000669a mov r3, r0 | r3 = r0;
0x0000669c mov r1, sl | r1 = sl;
0x0000669e movs r0, 3 | r0 = 3;
0x000066a0 bl 0x85e4 | fcn_000085e4 (r0);
| label_21:
0x000066a4 mov r1, r4 | r1 = r4;
0x000066a6 ldr r0, [r1], 0x10 | r0 = *(r1);
| r1 += 0x10;
0x000066aa bl 0xdfec | fcn_0000dfec (r0, r1);
0x000066ae mov r1, r4 | r1 = r4;
0x000066b0 ldr r0, [r1], 0x14 | r0 = *(r1);
| r1 += 0x14;
0x000066b4 bl 0xe4cc | fcn_0000e4cc (r0, r1);
0x000066b8 ldr r0, [r4] | r0 = *(r4);
0x000066ba bl 0xcd5c | fcn_0000cd5c (r0);
0x000066be movs r3, 0 | r3 = 0;
0x000066c0 str r3, [r4] | *(r4) = r3;
0x000066c2 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000066c4 cmp r8, r3 |
| if (r8 < r3) {
0x000066c6 bls.w 0x6b22 | goto label_117;
| }
0x000066ca ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000066cc mov r1, sb | r1 = sb;
0x000066ce ldr r4, [r3], 4 | r4 = *(r3);
| r3 += 4;
0x000066d2 str r3, [sp, 0x1c] | var_1ch = r3;
0x000066d4 movs r3, 0 | r3 = 0;
0x000066d6 ldr r0, [r4] | r0 = *(r4);
0x000066d8 str r3, [r5] | *(r5) = r3;
0x000066da bl 0xe378 | r0 = fcn_0000e378 (r0, r1);
0x000066de cmp r0, 0 |
0x000066e0 blt 0x668c |
| }
0x000066e2 ldr r6, [r5] | r6 = *(r5);
| if (r6 == 0) {
| do {
0x000066e4 cbz r6, 0x6712 | goto label_118;
| }
0x000066e6 mov r0, r6 | r0 = r6;
0x000066e8 bl 0xe33c | r0 = fcn_0000e33c (r0);
0x000066ec mov fp, r0 |
0x000066ee mov r0, r6 | r0 = r6;
0x000066f0 bl 0xe348 | fcn_0000e348 (r0);
0x000066f4 movs r2, 0 | r2 = 0;
0x000066f6 strd r0, r1, [sp] | __asm ("strd r0, r1, [sp]");
0x000066fa str r4, [sp, 8] | var_8h_2 = r4;
0x000066fc mov r0, r7 | r0 = r7;
0x000066fe mov r1, fp | r1 = fp;
0x00006700 bl 0x5330 | fcn_00005330 (r0, r1, r2, r3);
0x00006704 ldr r6, [r6] | r6 = *(r6);
0x00006706 ldr r0, [r5] | r0 = *(r5);
0x00006708 cmp r6, r0 |
0x0000670a bne 0x66e4 |
| } while (r6 != r0);
| do {
0x0000670c bl 0xe35c | fcn_0000e35c (r0);
0x00006710 b 0x66a4 | goto label_21;
| label_118:
0x00006712 ldr r0, [r5] | r0 = *(r5);
0x00006714 b 0x670c |
| } while (1);
| label_116:
0x00006716 ldr r1, [pc, 0x244] |
0x00006718 mov r2, r6 | r2 = r6;
0x0000671a movs r0, 7 | r0 = 7;
0x0000671c add r1, pc | r1 = 0xd07e;
0x0000671e bl 0x85e4 | fcn_000085e4 (r0);
0x00006722 b 0x66a4 | goto label_21;
| label_96:
0x00006724 ldr r1, [sp, 0x20] | r1 = stream;
0x00006726 movs r3, 0 | r3 = 0;
0x00006728 subw r2, r1, 0xaac | __asm ("subw r2, r1, 0xaac");
0x0000672c str r3, [r2] | *(r2) = r3;
0x0000672e subw r2, r1, 0xaa8 | __asm ("subw r2, r1, 0xaa8");
0x00006732 str r3, [r2] | *(r2) = r3;
0x00006734 mov r3, fp | r3 = fp;
0x00006736 cmp.w fp, 0 |
| if (fp == 0) {
0x0000673a beq.w 0x711e | goto label_119;
| }
0x0000673c strh r0, [r6, 0x26] | *((r6 + 0x26)) = r0;
| label_44:
0x0000673e ldr.w sb, [r3] | sb = *(r3);
0x00006742 cmp.w sb, 0 |
| if (sb == 0) {
0x00006746 beq.w 0x656e | goto label_22;
| }
0x0000674a ldr r2, [pc, 0x214] |
0x0000674c mov r5, sb | r5 = sb;
0x0000674e ldr r7, [pc, 0x214] |
0x00006750 ldr r6, [pc, 0x214] |
0x00006752 add r2, pc | r2 = 0xd0b8;
0x00006754 str.w sl, [sp, 0x38] | __asm ("str.w sl, [var_38h]");
0x00006758 str r2, [sp, 0x30] | var_30h = r2;
0x0000675a add r7, pc | r7 = 0xd0c4;
0x0000675c ldr r2, [pc, 0x20c] |
0x0000675e add r6, pc | r6 = 0xd0ca;
0x00006760 ldr.w sb, [sp, 0x28] | sb = var_28h;
0x00006764 mov sl, r3 | sl = r3;
0x00006766 str.w fp, [sp, 0x40] | __asm ("str.w fp, [var_40h]");
0x0000676a add r2, pc | r2 = 0xd0da;
0x0000676c str r2, [sp, 0x2c] | var_2ch = r2;
0x0000676e b 0x678a | goto label_120;
| label_24:
0x00006770 mov r3, r0 | r3 = r0;
0x00006772 mov r2, r5 | r2 = r5;
0x00006774 sub.w r1, sb, 0x2c | r1 = sb - 0x2c;
0x00006778 sub.w r0, sb, 0x28 | r0 = sb - 0x28;
0x0000677c bl 0x5458 | fcn_00005458 (r0, r1, r2, r3, r4);
| label_27:
0x00006780 ldr r5, [sl, 4]! | r5 = *((sl += 4));
0x00006784 cmp r5, 0 |
| if (r5 == 0) {
0x00006786 beq.w 0x643e | goto label_23;
| }
| label_120:
0x0000678a mov r1, sb | r1 = sb;
0x0000678c mov r0, r5 | r0 = r5;
0x0000678e blx 0x1a28 | r0 = realloc (r0, r1);
0x00006792 cmp r0, 0 |
| if (r0 != 0) {
0x00006794 bne 0x684c | goto label_121;
| }
0x00006796 ldr.w r2, [sb, 0x10] | r2 = *((sb + 0x10));
0x0000679a and r2, r2, 0xf000 | r2 &= 0xf000;
0x0000679e cmp.w r2, 0x4000 |
| if (r2 != 0x4000) {
0x000067a2 bne 0x6770 | goto label_24;
| }
0x000067a4 mov r0, r5 | r0 = r5;
0x000067a6 blx 0x1ab8 | r0 = fnmatch ();
0x000067aa mov r8, r0 | r8 = r0;
0x000067ac cmp r0, 0 |
| if (r0 == 0) {
0x000067ae beq.w 0x7516 | goto label_122;
| }
0x000067b2 blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x000067b6 cmp r0, 0 |
| if (r0 == 0) {
0x000067b8 beq 0x683a | goto label_123;
| }
0x000067ba str.w sl, [sp, 0x1c] | __asm ("str.w sl, [var_1ch]");
0x000067be mov sl, r0 | sl = r0;
0x000067c0 ldr.w fp, [sp, 0x18] | fp = var_18h;
0x000067c4 b 0x6802 | goto label_124;
| label_25:
0x000067c6 mov r0, r8 | r0 = r8;
0x000067c8 blx 0x1d40 | renameat ();
0x000067cc mov r3, sl | r3 = sl;
0x000067ce mov r2, fp | r2 = fp;
0x000067d0 mov r1, r4 | r1 = r4;
0x000067d2 blx 0x1adc | asprintf_chk ();
0x000067d6 ldr r3, [sp, 0x20] | r3 = stream;
0x000067d8 mov r2, r5 | r2 = r5;
0x000067da subw r3, r3, 0xa18 | __asm ("subw r3, r3, 0xa18");
0x000067de ldr r3, [r3, 0x10] | r3 = *((r3 + 0x10));
0x000067e0 and r3, r3, 0xf000 | r3 &= 0xf000;
0x000067e4 cmp.w r3, 0x4000 |
0x000067e8 mov r3, r4 | r3 = r4;
| if (r3 == 0x4000) {
0x000067ea beq 0x685a | goto label_125;
| }
0x000067ec sub.w r1, sb, 0x2c | r1 = sb - 0x2c;
0x000067f0 sub.w r0, sb, 0x28 | r0 = sb - 0x28;
0x000067f4 bl 0x5458 | fcn_00005458 (r0, r1, r2, r3, r4);
| do {
| label_26:
0x000067f8 mov r0, r8 | r0 = r8;
0x000067fa blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x000067fe mov sl, r0 | sl = r0;
| if (r0 == 0) {
0x00006800 cbz r0, 0x6836 | goto label_126;
| }
| label_124:
0x00006802 add.w r4, sl, 0x13 | r4 = sl + 0x13;
0x00006806 mov r0, r4 | r0 = r4;
0x00006808 blx 0x1bb0 | fcn_00001bb0 ();
0x0000680c ldrb.w r3, [sl, 0x13] | r3 = *((sl + 0x13));
0x00006810 cmp r3, 0x2e |
0x00006812 beq 0x67f8 |
| } while (r3 == 0x2e);
0x00006814 cmp r0, 5 |
| if (r0 < 5) {
0x00006816 bls 0x6828 | goto label_127;
| }
0x00006818 subs r0, 5 | r0 -= 5;
0x0000681a mov r1, r6 | r1 = r6;
0x0000681c add r0, r4 | r0 += r4;
0x0000681e blx 0x1924 | r0 = fcn_00001924 ();
0x00006822 mov sl, r0 | sl = r0;
0x00006824 cmp r0, 0 |
| if (r0 == 0) {
0x00006826 beq 0x67c6 | goto label_25;
| }
| label_127:
0x00006828 mov r3, r4 | r3 = r4;
0x0000682a mov r2, r5 | r2 = r5;
0x0000682c mov r1, r7 | r1 = r7;
0x0000682e movs r0, 6 | r0 = 6;
0x00006830 bl 0x85e4 | fcn_000085e4 (r0);
0x00006834 b 0x67f8 | goto label_26;
| label_126:
0x00006836 ldr.w sl, [sp, 0x1c] | sl = var_1ch;
| label_123:
0x0000683a mov r0, r8 | r0 = r8;
0x0000683c blx 0x1dc8 | fcn_00001dc8 ();
0x00006840 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x00006842 mov r2, r5 | r2 = r5;
0x00006844 movs r0, 7 | r0 = 7;
0x00006846 bl 0x85e4 | fcn_000085e4 (r0);
0x0000684a b 0x6780 | goto label_27;
| label_121:
0x0000684c ldr r1, [pc, 0x120] |
0x0000684e mov r2, r5 | r2 = r5;
0x00006850 movs r0, 7 | r0 = 7;
0x00006852 add r1, pc | r1 = 0xd1c6;
0x00006854 bl 0x85e4 | fcn_000085e4 (r0);
0x00006856 mcr2 p7, 6, lr, c6, c2, 4 | __asm ("mcr2 p7, 6, lr, c6, c2, 4");
| label_125:
0x0000685a ldr r1, [sp, 0x30] | r1 = var_30h;
0x0000685c movs r0, 3 | r0 = 3;
0x0000685e bl 0x85e4 | fcn_000085e4 (r0);
0x00006862 b 0x67f8 | goto label_26;
| label_29:
0x00006864 ldr r1, [pc, 0x10c] |
0x00006866 movs r0, 3 | r0 = 3;
0x00006868 str r5, [sp] | *(sp) = r5;
0x0000686a ldr r3, [r7] | r3 = *(r7);
0x0000686c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000686e add r1, pc | r1 = 0xd1e6;
0x00006870 bl 0x85e4 | fcn_000085e4 (r0);
0x00006874 b 0x6538 | goto label_28;
| label_107:
0x00006876 ldr r5, [pc, 0x100] |
0x00006878 add r5, pc | r5 = 0xd1f6;
0x0000687a b 0x6882 |
| while (r0 != 0) {
0x0000687c mov r0, fp | r0 = fp;
0x0000687e bl 0x5590 | fcn_00005590 (r0, r1);
0x00006882 mov r1, r5 | r1 = r5;
0x00006884 mov r2, r8 | r2 = r8;
0x00006886 movs r0, 0 | r0 = 0;
0x00006888 blx 0x1aac | r0 = opendir ();
0x0000688c mov r1, r0 | r1 = r0;
0x0000688e cmp r0, 0 |
0x00006890 bne 0x687c |
| }
0x00006892 b 0x6538 | goto label_28;
| label_108:
0x0000697c mov r2, r8 | r2 = r8;
0x0000697e mov r1, sb | r1 = sb;
0x00006980 blx 0x1aac | opendir ();
0x00006984 mov r2, r8 | r2 = r8;
0x00006986 mov r1, sb | r1 = sb;
0x00006988 str r0, [sp, 0x48] | var_0h = r0;
0x0000698a mov r0, sl | r0 = sl;
0x0000698c blx 0x1aac | opendir ();
0x00006990 mov r2, r8 | r2 = r8;
0x00006992 str r0, [sp, 0x50] | var_8h = r0;
0x00006994 mov r1, sb | r1 = sb;
0x00006996 mov r0, sl | r0 = sl;
0x00006998 blx 0x1aac | opendir ();
0x0000699c ldr r2, [sp, 0x48] | r2 = var_0h;
0x0000699e mov sl, r0 | sl = r0;
0x000069a0 ldr r3, [sp, 0x50] | r3 = var_8h;
0x000069a2 cmp r3, 0 |
0x000069a4 it ne |
| if (r3 != 0) {
0x000069a6 cmpne r2, 0 | __asm ("cmpne r2, 0");
| }
0x000069a8 ite eq |
| if (r3 != 0) {
0x000069aa moveq r2, 1 | r2 = 1;
| }
| if (r3 == 0) {
0x000069ac movne r2, 0 | r2 = 0;
| }
0x000069ae cmp r0, 0 |
0x000069b0 it eq |
| if (r0 != 0) {
0x000069b2 orreq r2, r2, 1 | r2 |= 1;
| }
0x000069b6 str r2, [sp, 0x50] | var_8h = r2;
0x000069b8 cmp r2, 0 |
| if (r2 != 0) {
0x000069ba bne.w 0x6864 | goto label_29;
| }
0x000069be mov r1, r3 | r1 = r3;
0x000069c0 mov r0, fp | r0 = fp;
0x000069c2 str r3, [sp, 0x5c] | var_14h = r3;
0x000069c4 bl 0x51c0 | fcn_000051c0 (r0, r1);
0x000069c8 ldr r3, [sp, 0x5c] | r3 = var_14h;
0x000069ca cmp r0, 0 |
| if (r0 == 0) {
0x000069cc beq 0x6ac4 | goto label_128;
| }
0x000069ce ldr r0, [sp, 0x48] | r0 = var_0h;
0x000069d0 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x000069d4 mov r5, r0 | r5 = r0;
0x000069d6 str r0, [sp, 0x5c] | var_14h = r0;
0x000069d8 mov r0, sl | r0 = sl;
0x000069da blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x000069de mov r2, r0 | r2 = r0;
0x000069e0 adds r0, r5, r0 | r0 = r5 + r0;
0x000069e2 adds r0, 0xa | r0 += 0xa;
0x000069e4 str r2, [sp, 0x60] | var_60h = r2;
0x000069e6 blx 0x1b0c | strerror (r0);
0x000069ea ldr r2, [sp, 0x60] | r2 = var_60h;
0x000069ec mov r5, r0 | r5 = r0;
0x000069ee cmp r0, 0 |
| if (r0 == 0) {
0x000069f0 beq.w 0x7612 | goto label_129;
| }
0x000069f2 strh r7, [r1, 0x30] | *((r1 + 0x30)) = r7;
0x000069f4 mov r1, sl | r1 = sl;
0x000069f6 add.w sl, r0, 8 | sl = r0 + 8;
0x000069fa mov r0, sl | r0 = sl;
0x000069fc str r2, [sp, 0x60] | var_60h = r2;
0x000069fe blx 0x19c8 | mmap64 ()
0x00006a02 ldr r2, [sp, 0x60] | r2 = var_60h;
0x00006a04 movs r0, 0x2f | r0 = 0x2f;
0x00006a06 ldr r1, [sp, 0x48] | r1 = var_0h;
0x00006a08 adds r3, r2, 1 | r3 = r2 + 1;
0x00006a0a add r2, r5 | r2 += r5;
0x00006a0c strb r0, [r2, 8] | *((r2 + 8)) = r0;
0x00006a0e add.w r0, sl, r3 | r0 = sl + r3;
0x00006a12 ldr r2, [sp, 0x5c] | r2 = var_14h;
0x00006a14 str r3, [sp, 0x48] | var_0h = r3;
0x00006a16 blx 0x19c8 | mmap64 ()
0x00006a1a ldr r3, [sp, 0x48] | r3 = var_0h;
0x00006a1c ldr r2, [sp, 0x5c] | r2 = var_14h;
0x00006a1e ldr r0, [sp, 0x50] | r0 = var_8h;
0x00006a20 add r2, r3 | r2 += r3;
0x00006a22 mov r3, r2 | r3 = r2;
0x00006a24 mov r2, sl | r2 = sl;
0x00006a26 adds r1, r5, r3 | r1 = r5 + r3;
0x00006a28 strb r0, [r1, 8] | *((r1 + 8)) = r0;
0x00006a2a movs r0, 7 | r0 = 7;
0x00006a2c ldr.w r1, [pc, 0xc20] |
0x00006a30 str r3, [r5, 4] | *((r5 + 4)) = r3;
0x00006a32 add r1, pc | r1 = 0xe086;
0x00006a34 bl 0x85e4 | fcn_000085e4 (r0);
0x00006a38 ldr r2, [sp, 0x20] | r2 = stream;
0x00006a3a ldr.w r3, [r2, 0x7e4] | r3 = *((r2 + 0x7e4));
0x00006a3e str.w r5, [r2, 0x7e4] | __asm ("str.w r5, [r2, 0x7e4]");
0x00006a42 str r3, [r5] | *(r5) = r3;
0x00006a44 b 0x6538 | goto label_28;
| label_109:
0x00006a46 mov r2, r8 | r2 = r8;
0x00006a48 mov r1, sb | r1 = sb;
0x00006a4a blx 0x1aac | r0 = opendir ();
0x00006a4e mov r3, r0 | r3 = r0;
0x00006a50 mov r2, r8 | r2 = r8;
0x00006a52 mov r0, sl | r0 = sl;
0x00006a54 mov r1, sb | r1 = sb;
0x00006a56 mov sl, r3 | sl = r3;
0x00006a58 blx 0x1aac | r0 = opendir ();
0x00006a5c cmp r0, 0 |
0x00006a5e it ne |
| if (r0 != 0) {
0x00006a60 cmpne sl, 0 | __asm ("cmpne sl, 0");
| }
0x00006a64 str r0, [sp, 0x48] | var_0h = r0;
| if (r0 == 0) {
0x00006a66 beq.w 0x6864 | goto label_29;
| }
0x00006a6a mov r1, sl | r1 = sl;
0x00006a6c mov r0, fp | r0 = fp;
0x00006a6e bl 0x51c0 | fcn_000051c0 (r0, r1);
0x00006a72 ldr r3, [sp, 0x48] | r3 = var_0h;
0x00006a74 cmp r0, 0 |
| if (r0 == 0) {
0x00006a76 beq.w 0x6fd8 | goto label_130;
| }
0x00006a7a mov r0, r3 | r0 = r3;
0x00006a7c str r3, [sp, 0x48] | var_0h = r3;
0x00006a7e blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00006a82 mov sl, r0 | sl = r0;
0x00006a84 adds r0, 9 | r0 += 9;
0x00006a86 blx 0x1b0c | strerror (r0);
0x00006a8a ldr r3, [sp, 0x48] | r3 = var_0h;
0x00006a8c mov r5, r0 | r5 = r0;
0x00006a8e cmp r0, 0 |
| if (r0 == 0) {
0x00006a90 beq.w 0x755c | goto label_131;
| }
0x00006a94 mov r1, r3 | r1 = r3;
0x00006a96 add.w r3, r0, 8 | r3 = r0 + 8;
0x00006a9a mov r0, r3 | r0 = r3;
0x00006a9c add.w r2, sl, 1 | r2 = sl + 1;
0x00006aa0 blx 0x19c8 | mmap64 ()
0x00006aa4 ldr.w r1, [pc, 0xbac] |
0x00006aa8 mov r2, r0 | r2 = r0;
0x00006aaa str.w sl, [r5, 4] | __asm ("str.w sl, [r5, 4]");
0x00006aae movs r0, 7 | r0 = 7;
0x00006ab0 add r1, pc | r1 = 0xe108;
0x00006ab2 bl 0x85e4 | fcn_000085e4 (r0);
0x00006ab6 ldr r2, [sp, 0x20] | r2 = stream;
0x00006ab8 ldr.w r3, [r2, 0x7ec] | r3 = *((r2 + 0x7ec));
0x00006abc str.w r5, [r2, 0x7ec] | __asm ("str.w r5, [r2, 0x7ec]");
0x00006ac0 str r3, [r5] | *(r5) = r3;
0x00006ac2 b 0x6538 | goto label_28;
| label_128:
0x00006ac4 ldr.w r1, [pc, 0xb90] |
0x00006ac8 movs r0, 6 | r0 = 6;
0x00006aca str r3, [sp] | *(sp) = r3;
0x00006acc ldr r3, [r7] | r3 = *(r7);
0x00006ace ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00006ad0 add r1, pc | r1 = 0xe12c;
0x00006ad2 bl 0x85e4 | fcn_000085e4 (r0);
0x00006ad6 b 0x6538 | goto label_28;
| label_88:
0x00006ad8 ldr.w r1, [pc, 0xb80] |
0x00006adc mov r2, r7 | r2 = r7;
0x00006ade movs r0, 2 | r0 = 2;
0x00006ae0 add r1, pc | r1 = 0xe140;
0x00006ae2 bl 0x85e4 | fcn_000085e4 (r0);
0x00006ae6 b.w 0x5e46 | goto label_11;
| label_87:
0x00006aea blx 0x1be4 | isoc99_sscanf ();
0x00006aee ldr.w r1, [pc, 0xb70] |
0x00006af2 mov r2, r6 | r2 = r6;
0x00006af4 ldr r3, [r0] | r3 = *(r0);
0x00006af6 movs r0, 3 | r0 = 3;
0x00006af8 add r1, pc | r1 = 0xe15e;
0x00006afa rsbs r6, r3, 0 | r6 = r3 - ;
0x00006afc bl 0x85e4 | fcn_000085e4 (r0);
0x00006b00 mov r0, r7 | r0 = r7;
0x00006b02 blx 0x1dc8 | fcn_00001dc8 ();
0x00006b06 b.w 0x60ac | goto label_30;
| label_100:
0x00006b0a ldr r3, [sp, 0x30] | r3 = var_30h;
0x00006b0c movs r0, 3 | r0 = 3;
0x00006b0e ldr.w r1, [pc, 0xb54] |
0x00006b12 ldr r3, [r3] | r3 = *(r3);
0x00006b14 add r1, pc | r1 = 0xe17e;
0x00006b16 ldr.w r2, [r4, r3, lsl 2] | offset_2 = r3 << 2;
| r2 = *((r4 + offset_2));
0x00006b1a bl 0x85e4 | fcn_000085e4 (r0);
0x00006b1e b.w 0x5e46 | goto label_11;
| if (r2 == 0) {
0x00006b20 cbnz r2, 0x6b48 |
| label_117:
0x00006b22 ldrd sl, fp, [sp, 0x28] | __asm ("ldrd sl, fp, [var_28h]");
| label_115:
0x00006b26 ldr r3, [sp, 0x20] | r3 = stream;
0x00006b28 subw r4, r3, 0xaa4 | __asm ("subw r4, r3, 0xaa4");
0x00006b2c ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006b2e ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00006b30 bl 0x91d4 | fcn_000091d4 (r0);
0x00006b34 ldr.w r1, [pc, 0xb30] |
0x00006b38 mov r3, r0 | r3 = r0;
0x00006b3a mov r2, r5 | r2 = r5;
0x00006b3c movs r0, 7 | r0 = 7;
0x00006b3e add r1, pc | r1 = 0xe1aa;
0x00006b40 bl 0x85e4 | fcn_000085e4 (r0);
0x00006b44 ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006b46 ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
| }
0x00006b48 bl 0x91d4 | fcn_000091d4 (r0);
0x00006b4c ldr.w r1, [pc, 0xb1c] |
0x00006b50 mov r3, r0 | r3 = r0;
0x00006b52 mov r2, r5 | r2 = r5;
0x00006b54 movs r0, 7 | r0 = 7;
0x00006b56 add r1, pc | r1 = 0xe1c6;
0x00006b58 bl 0x85e4 | fcn_000085e4 (r0);
0x00006b5c ldrd r3, r2, [r4, 8] | __asm ("ldrd r3, r2, [r4, 8]");
0x00006b60 add.w r2, r3, r2, lsl 2 | r2 = r3 + (r2 << 2);
0x00006b64 cmp r3, r2 |
0x00006b66 str r2, [sp, 0x44] | var_44h = r2;
| if (r3 >= r2) {
0x00006b68 bhs.w 0x6c94 | goto label_132;
| }
0x00006b6c str r3, [sp, 0x2c] | var_2ch = r3;
0x00006b6e ldr.w r3, [pc, 0xb00] |
0x00006b72 ldr.w r2, [pc, 0xb00] |
0x00006b76 strd sl, fp, [sp, 0x50] | __asm ("strd sl, fp, [var_0h_2x50]");
0x00006b7a add r3, pc | r3 = 0xe1f0;
0x00006b7c str r3, [sp, 0x48] | var_0h = r3;
0x00006b7e add r2, pc | r2 = 0xe1f8;
0x00006b80 ldr.w r3, [pc, 0xaf4] |
0x00006b84 str r2, [sp, 0x30] | var_30h = r2;
0x00006b86 ldr.w r2, [pc, 0xaf4] |
0x00006b8a add r3, pc | r3 = 0xe206;
0x00006b8c mov sb, r3 | sb = r3;
0x00006b8e add r2, pc | r2 = 0xe210;
0x00006b90 str r2, [sp, 0x38] | var_38h = r2;
| label_31:
0x00006b92 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00006b94 ldr r8, [r3], 4 | r8 = *(r3);
| r3 += 4;
0x00006b98 str r3, [sp, 0x2c] | var_2ch = r3;
0x00006b9a ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00006b9e ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00006ba2 cmp r3, 0 |
| if (r3 == 0) {
0x00006ba4 beq.w 0x6fca | goto label_133;
| }
0x00006ba8 ldr r3, [sp, 0x20] | r3 = stream;
0x00006baa movs r0, 7 | r0 = 7;
0x00006bac ldr r1, [sp, 0x48] | r1 = var_0h;
0x00006bae subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x00006bb2 ldr r3, [r3] | r3 = *(r3);
0x00006bb4 str r3, [sp, 0x28] | var_28h = r3;
0x00006bb6 bl 0x85e4 | fcn_000085e4 (r0);
0x00006bba ldr.w r5, [r8, 0x14] | r5 = *((r8 + 0x14));
| do {
0x00006bbe cmp r5, 0 |
| if (r5 == 0) {
0x00006bc0 beq 0x6c88 | goto label_41;
| }
0x00006bc2 mov r0, r5 | r0 = r5;
0x00006bc4 bl 0xe484 | r0 = fcn_0000e484 (r0);
0x00006bc8 mov r6, r0 | r6 = r0;
0x00006bca mov r0, r5 | r0 = r5;
0x00006bcc bl 0xe490 | r0 = fcn_0000e490 (r0);
0x00006bd0 mov sl, r0 | sl = r0;
0x00006bd2 mov r0, r5 | r0 = r5;
0x00006bd4 str r1, [sp, 0x1c] | var_1ch = r1;
0x00006bd6 bl 0xe4a4 | fcn_0000e4a4 (r0);
0x00006bda ldr r3, [sp, 0x20] | r3 = stream;
0x00006bdc mov r7, r0 | r7 = r0;
0x00006bde ldrb r2, [r6] | r2 = *(r6);
0x00006be0 subw r1, r3, 0xaa4 | __asm ("subw r1, r3, 0xaa4");
0x00006be4 ldr r3, [r1] | r3 = *(r1);
0x00006be6 cmp r2, 0x2e |
0x00006be8 it eq |
| if (r2 != 0x2e) {
0x00006bea ldrbeq r2, [r6, 1] | r2 = *((r6 + 1));
| }
0x00006bec ldr r0, [r1, 0x20] | r0 = *((r1 + 0x20));
0x00006bee it eq |
| if (r2 != 0x2e) {
0x00006bf0 addeq r1, r6, 1 | r1 = r6 + 1;
| }
0x00006bf2 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00006bf6 it ne |
| if (r2 == 0x2e) {
0x00006bf8 movne r1, r6 | r1 = r6;
| }
0x00006bfa ldrb r3, [r3, 8] | r3 = *((r3 + 8));
0x00006bfc cmp r3, r2 |
0x00006bfe it eq |
| if (r3 != r2) {
0x00006c00 addeq r1, 1 | r1++;
| }
0x00006c02 bl 0x8f6c | r0 = fcn_00008f6c (r0, r1);
0x00006c06 mov r4, r0 | r4 = r0;
0x00006c08 cmp r0, 0 |
| if (r0 == 0) {
0x00006c0a beq.w 0x6f40 | goto label_134;
| }
0x00006c0e ldr r3, [sp, 0x28] | r3 = var_28h;
0x00006c10 add.w fp, r0, 0x10 |
0x00006c14 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00006c16 movs r0, 4 | r0 = 4;
0x00006c18 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00006c1c ldrb r1, [r3, 9] | r1 = *((r3 + 9));
| if (r1 != 0) {
0x00006c1e cbz r1, 0x6c42 |
0x00006c20 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00006c22 ldrd ip, r0, [r0, 8] | __asm ("ldrd ip, r0, [r0, 8]");
0x00006c26 cmp r1, r0 |
0x00006c28 it eq |
| if (r1 == r0) {
0x00006c2a cmpeq sl, ip | __asm ("cmpeq sl, ip");
| }
0x00006c2c ite ne |
| if (r1 == r0) {
0x00006c2e movne r1, 1 | r1 = 1;
| }
| if (r1 != r0) {
0x00006c30 moveq r1, 0 | r1 = 0;
| }
0x00006c32 cmp r7, 0x57 |
0x00006c34 ite eq |
| if (r7 != 0x57) {
0x00006c36 moveq r1, 0 | r1 = 0;
| }
| if (r7 == 0x57) {
0x00006c38 andne r1, r1, 1 | r1 &= 1;
| }
0x00006c3c cmp r1, 0 |
| if (r1 != 0) {
0x00006c3e bne.w 0x6f16 | goto label_135;
| }
| }
| label_37:
0x00006c42 ldr r3, [r4] | r3 = *(r4);
0x00006c44 cmp r3, 0 |
| if (r3 == 0) {
0x00006c46 beq.w 0x6f12 | goto label_136;
| }
0x00006c4a ldr r3, [r3, 4] | r3 = *((r3 + 4));
| label_36:
0x00006c4c mov r1, sb | r1 = sb;
0x00006c4e str r3, [sp] | *(sp) = r3;
0x00006c50 movs r0, 7 | r0 = 7;
0x00006c52 mov r3, fp | r3 = fp;
0x00006c54 bl 0x85e4 | fcn_000085e4 (r0);
0x00006c58 ldr r1, [r4] | r1 = *(r4);
| if (r1 != 0) {
0x00006c5a cbz r1, 0x6c7e |
0x00006c5c add.w r0, r8, 0x18 | r0 = r8 + 0x18;
0x00006c60 bl 0x8bd0 | fcn_00008bd0 (r0, r1, r2);
0x00006c62 vtbl.8 d2, {d6}, d0 | __asm ("vtbl.8 d2, {d6}, d0");
| if (r1 < 0) {
0x00006c66 blt 0x6c7e | goto label_38;
| }
0x00006c68 ldr r3, [r4] | r3 = *(r4);
0x00006c6a mov r2, fp | r2 = fp;
0x00006c6c ldr.w r1, [r8, 4] | r1 = *((r8 + 4));
0x00006c70 ldr r0, [sp, 0x30] | r0 = var_30h;
0x00006c72 ldrh r4, [r3, 0x3a] | r4 = *((r3 + 0x3a));
0x00006c74 adds r4, 1 | r4++;
0x00006c76 strh r4, [r3, 0x3a] | *((r3 + 0x3a)) = r4;
0x00006c78 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00006c7a bl 0x52b0 | fcn_000052b0 ();
| }
| label_38:
0x00006c7e ldr r5, [r5] | r5 = *(r5);
0x00006c80 ldr.w r3, [r8, 0x14] | r3 = *((r8 + 0x14));
0x00006c84 cmp r5, r3 |
0x00006c86 bne 0x6bbe |
| } while (r5 != r3);
| label_41:
0x00006c88 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00006c8a ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00006c8c cmp r3, r2 |
| if (r3 > r2) {
0x00006c8e bhi 0x6b92 | goto label_31;
| }
0x00006c90 ldrd sl, fp, [sp, 0x50] | __asm ("ldrd sl, fp, [var_8h]");
| label_132:
0x00006c94 ldr r3, [sp, 0x20] | r3 = stream;
0x00006c96 subw r4, r3, 0xaa4 | __asm ("subw r4, r3, 0xaa4");
0x00006c9a ldr r0, [r4, 0x20] | r0 = *((r4 + 0x20));
0x00006c9c ldr r5, [r4, 0xc] | r5 = *((r4 + 0xc));
0x00006c9e bl 0x91d4 | fcn_000091d4 (r0);
0x00006ca2 ldr.w r1, [pc, 0x9dc] |
0x00006ca6 mov r3, r0 | r3 = r0;
0x00006ca8 mov r2, r5 | r2 = r5;
0x00006caa movs r0, 7 | r0 = 7;
0x00006cac add r1, pc | r1 = 0xe332;
0x00006cae bl 0x85e4 | fcn_000085e4 (r0);
0x00006cb0 ldc2 p8, c6, [sb], {0xe6} | __asm ("ldc2 p8, c6, [sb], {0xe6}");
0x00006cb4 uxth r3, r6 | r3 = (int16_t) r6;
0x00006cb6 lsls r5, r3, 1 | r5 = r3 << 1;
0x00006cb8 str r3, [sp, 0x28] | var_28h = r3;
0x00006cba adds r0, r5, r3 | r0 = r5 + r3;
0x00006cbc lsls r0, r0, 1 | r0 <<= 1;
0x00006cbe blx 0x1b0c | r0 = strerror (r0);
0x00006cc2 mov r8, r0 | r8 = r0;
0x00006cc4 cmp r0, 0 |
| if (r0 == 0) {
0x00006cc6 beq.w 0x629c | goto label_32;
| }
0x00006cca ldr.w r1, [pc, 0x9b8] |
0x00006cce add r5, r0 | r5 += r0;
0x00006cd0 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00006cd2 movs r0, 7 | r0 = 7;
0x00006cd4 add r1, pc | r1 = 0xe35e;
0x00006cd6 bl 0x85e4 | fcn_000085e4 (r0);
0x00006cda ldr.w lr, [r4, 0xc] |
0x00006cde movw r3, 0xfffe | r3 = 0xfffe;
0x00006ce2 cmp lr, r3 |
| if (lr > r3) {
0x00006ce4 bhi.w 0x75d6 | goto label_137;
| }
0x00006ce8 uxth r6, r6 | r6 = (int16_t) r6;
0x00006cea ldr.w ip, [r4, 8] | ip = *((r4 + 8));
0x00006cee cmp r6, 0 |
| if (r6 == 0) {
0x00006cf0 beq 0x6d7c | goto label_138;
| }
0x00006cf2 movs r0, 0 | r0 = 0;
0x00006cf4 sub.w r1, ip, 4 | r1 = ip - 4;
0x00006cf8 sub.w r2, r8, 2 | r2 = r8 - 2;
0x00006cfc mov r7, r0 | r7 = r0;
| do {
0x00006cfe ldr r3, [r1, 4]! | r3 = *((r1 += 4));
0x00006d02 ldrh r3, [r3, 0x3a] | r3 = *((r3 + 0x3a));
0x00006d04 strh r3, [r2, 2]! | *((r2 += 2)) = r3;
| if (r3 == 0) {
0x00006d08 cbnz r3, 0x6d12 |
0x00006d0a strh.w r7, [r5, r0, lsl 1] | offset_3 = r0 << 1;
| *((r5 + offset_3)) = r7;
0x00006d0e adds r0, 1 | r0++;
0x00006d10 uxth r0, r0 | r0 = (int16_t) r0;
| }
0x00006d12 adds r7, 1 | r7++;
0x00006d14 uxth r7, r7 | r7 = (int16_t) r7;
0x00006d16 cmp r6, r7 |
0x00006d18 bne 0x6cfe |
| } while (r6 != r7);
0x00006d1a ldr.w sb, [sp, 0x28] | sb = var_28h;
0x00006d1e movs r6, 0 | r6 = 0;
0x00006d20 cmp r0, 0 |
| if (r0 == 0) {
0x00006d22 beq.w 0x7184 | goto label_139;
| }
| label_33:
0x00006d26 subs r0, 1 | r0--;
0x00006d28 add.w r1, r6, sb | r1 = r6 + sb;
0x00006d2c uxth r0, r0 | r0 = (int16_t) r0;
0x00006d2e adds r2, r6, 1 | r2 = r6 + 1;
0x00006d30 ldrh.w r3, [r5, r0, lsl 1] | offset_4 = r0 << 1;
| r3 = *((r5 + offset_4));
0x00006d34 strh.w r3, [r5, r1, lsl 1] | offset_5 = r1 << 1;
| *((r5 + offset_5)) = r3;
0x00006d38 ldr.w r3, [ip, r3, lsl 2] | offset_6 = r3 << 2;
| r3 = *((ip + offset_6));
0x00006d3c ldrd r1, r4, [r3, 0x18] | __asm ("ldrd r1, r4, [r3, 0x18]");
0x00006d40 str r6, [r3, 0x34] | *((r3 + 0x34)) = r6;
0x00006d42 uxth r6, r2 | r6 = (int16_t) r2;
0x00006d44 add.w r4, r1, r4, lsl 2 | r4 = r1 + (r4 << 2);
0x00006d48 cmp r1, r4 |
| if (r1 >= r4) {
0x00006d4a bhs 0x6d72 | goto label_140;
| }
| do {
0x00006d4c ldr r3, [r1], 4 | r3 = *(r1);
| r1 += 4;
0x00006d50 ldrh r2, [r3, 0x38] | r2 = *((r3 + 0x38));
0x00006d52 ldrh.w r3, [r8, r2, lsl 1] | offset_7 = r2 << 1;
| r3 = *((r8 + offset_7));
0x00006d56 cmp r3, 0 |
| if (r3 == 0) {
0x00006d58 beq.w 0x7442 | goto label_141;
| }
0x00006d5c subs r3, 1 | r3--;
0x00006d5e uxth r3, r3 | r3 = (int16_t) r3;
0x00006d60 strh.w r3, [r8, r2, lsl 1] | offset_8 = r2 << 1;
| *((r8 + offset_8)) = r3;
| if (r3 == 0) {
0x00006d64 cbnz r3, 0x6d6e |
0x00006d66 strh.w r2, [r5, r0, lsl 1] | offset_9 = r0 << 1;
| *((r5 + offset_9)) = r2;
0x00006d6a adds r0, 1 | r0++;
0x00006d6c uxth r0, r0 | r0 = (int16_t) r0;
| }
0x00006d6e cmp r4, r1 |
0x00006d70 bhi 0x6d4c |
| } while (r4 > r1);
| label_140:
0x00006d72 cmp r0, 0 |
| if (r0 != 0) {
0x00006d74 bne 0x6d26 | goto label_33;
| }
0x00006d76 cmp r7, r6 |
| if (r7 > r6) {
0x00006d78 bhi.w 0x7184 | goto label_139;
| }
| label_138:
0x00006d7c add.w r5, ip, lr, lsl 2 | r5 = ip + (lr << 2);
0x00006d80 cmp ip, r5 |
| if (ip >= r5) {
0x00006d82 bhs 0x6da2 | goto label_142;
| }
0x00006d84 ldr.w r6, [pc, 0x900] | r6 = *(0x00007688);
0x00006d88 mov r4, ip | r4 = ip;
0x00006d8a add r6, pc | r6 += pc;
| do {
0x00006d8c ldr r0, [r4], 4 | r0 = *(r4);
| r4 += 4;
0x00006d90 ldr r3, [r0, 0x1c] | r3 = *((r0 + 0x1c));
0x00006d92 cmp r3, 1 |
| if (r3 >= 1) {
0x00006d94 bls 0x6d9e |
0x00006d96 adds r0, 0x18 | r0 += 0x18;
0x00006d98 mov r1, r6 | r1 = r6;
0x00006d9a bl 0x8c08 | fcn_00008c08 (r0, r1);
| }
0x00006d9e cmp r5, r4 |
0x00006da0 bhi 0x6d8c |
| } while (r5 > r4);
| label_142:
0x00006da2 ldr.w r1, [pc, 0x8e8] |
0x00006da6 movs r0, 7 | r0 = 7;
0x00006da8 ldr r2, [sp, 0x28] | r2 = var_28h;
0x00006daa add r1, pc | r1 = 0xe43c;
0x00006dac bl 0x85e4 | fcn_000085e4 (r0);
0x00006db0 mov r0, r8 | r0 = r8;
0x00006db2 blx 0x19a0 | fcn_000019a0 ();
0x00006db6 ldr r3, [sp, 0x20] | r3 = stream;
0x00006db8 movs r1, 0 | r1 = 0;
0x00006dba ldr r0, [sp, 0x18] | r0 = var_18h;
0x00006dbc subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x00006dc0 ldr r3, [r3] | r3 = *(r3);
0x00006dc2 adds r3, 4 | r3 += 4;
0x00006dc4 str r3, [sp, 0x1c] | var_1ch = r3;
0x00006dc6 blx 0x1a88 | fread (r0, r1, r2, r3);
0x00006dca ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x00006dcc cmp r3, 0 |
| if (r3 == 0) {
0x00006dce beq.w 0x73e8 | goto label_143;
| }
| label_53:
0x00006dd2 ldr.w r4, [pc, 0x8bc] | r4 = *(0x00007690);
0x00006dd6 add.w r8, sp, 0x1300 | r8 += ptr;
0x00006dda ldr.w r3, [pc, 0x8b8] | r3 = *(0x00007694);
0x00006dde add.w r8, r8, 0x1c | r8 += 0x1c;
0x00006de2 ldr.w sb, [pc, 0x8b4] | sb = *(0x00007698);
0x00006de6 add r4, pc | r4 += pc;
0x00006de8 str.w fp, [sp, 0x28] | __asm ("str.w fp, [var_28h]");
0x00006dec add r3, pc | r3 += pc;
0x00006dee ldr r7, [sp, 0x3c] | r7 = var_3ch;
0x00006df0 add sb, pc | sb += pc;
0x00006df2 str r4, [r3] | *(r3) = r4;
0x00006df4 add.w r3, sp, 0x1320 | r3 += arg_1320h;
0x00006df8 str.w sb, [sp, 0x2c] | __asm ("str.w sb, [var_2ch]");
0x00006dfc ldr.w fp, [sp, 0x4c] | fp = var_4h;
0x00006e00 mov sb, r3 | sb = r3;
0x00006e02 str.w r8, [sp, 0x18] | __asm ("str.w r8, [var_18h]");
0x00006e06 b 0x6e2e |
| while (r7 != 0) {
0x00006e08 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00006e0a mov r1, r7 | r1 = r7;
0x00006e0c mov r0, fp | r0 = fp;
0x00006e0e ldr r3, [r3] | r3 = *(r3);
0x00006e10 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00006e12 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
| label_45:
0x00006e14 ldr.w r3, [pc, 0x884] | r3 = *(0x0000769c);
0x00006e18 add r3, pc | r3 += pc;
0x00006e1a ldr r4, [r3] | r4 = *(r3);
| label_34:
0x00006e1c ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00006e1e adds r4, 8 | r4 += 8;
0x00006e20 ldr.w r2, [pc, 0x87c] | r2 = *(0x000076a0);
0x00006e24 add r2, pc | r2 += pc;
0x00006e26 str r4, [r2] | *(r2) = r4;
0x00006e28 cmp r3, 0 |
| if (r3 == 0) {
0x00006e2a beq.w 0x717c | goto label_144;
| }
0x00006e2e ldr r3, [sp, 0x18] | r3 = var_18h;
0x00006e30 movs r2, 0 | r2 = 0;
0x00006e32 movs r1, 0 | r1 = 0;
0x00006e34 mov r0, sb | r0 = sb;
0x00006e36 str r2, [r3] | *(r3) = r2;
0x00006e38 movs r2, 0xfb | r2 = 0xfb;
0x00006e3a blx 0x1c2c | strtoull (r0, r1, r2);
0x00006e3e cmp r7, 0 |
0x00006e40 bne 0x6e08 |
| }
0x00006e42 ldr r4, [r4] | r4 = *(r4);
0x00006e44 sub.w r6, sb, 4 | r6 = sb - 4;
0x00006e48 blx 0x1b8c | fcn_00001b8c ();
0x00006e4c ldr r3, [sp, 0x20] | r3 = stream;
0x00006e4e strd r4, r0, [sp, 4] | __asm ("strd r4, r0, [sp, 4]");
0x00006e52 mov r0, r6 | r0 = r6;
0x00006e54 subw r3, r3, 0xa18 | __asm ("subw r3, r3, 0xa18");
0x00006e58 ldr r2, [r3] | r2 = *(r3);
0x00006e5a str r2, [sp, 0x10] | var_10h = r2;
0x00006e5c movs r2, 1 | r2 = 1;
0x00006e5e ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00006e60 str r3, [sp, 0xc] | var_ch = r3;
0x00006e62 ldr.w r3, [pc, 0x840] |
0x00006e66 add r3, pc | r3 = 0xe510;
0x00006e68 str r3, [sp] | *(sp) = r3;
0x00006e6a movs r3, 0xff | r3 = 0xff;
0x00006e6c mov r1, r3 | r1 = r3;
0x00006e6e blx 0x1dd4 | fcn_00001dd4 ();
0x00006e70 invalid |
0x00006e72 mov.w r3, 0x1a4 | r3 = 0x1a4;
0x00006e76 movs r2, 0xc1 | r2 = 0xc1;
0x00006e78 mov r1, r6 | r1 = r6;
0x00006e7a mov r0, sl | r0 = sl;
0x00006e7c blx 0x1bd8 | r0 = sprintf_chk ();
0x00006e80 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x00006e82 blt.w 0x7128 | goto label_145;
| }
0x00006e86 ldr.w r1, [pc, 0x820] |
0x00006e8a add r1, pc | r1 = 0xe538;
0x00006e8c blx 0x18cc | r0 = fdopen ();
0x00006e90 mov r5, r0 | r5 = r0;
0x00006e92 cmp r0, 0 |
| if (r0 == 0) {
0x00006e94 beq.w 0x74fe | goto label_146;
| }
0x00006e98 ldr.w r4, [pc, 0x810] | r4 = *(0x000076ac);
0x00006e9c mov r1, r0 | r1 = r0;
0x00006e9e mov r0, fp | r0 = fp;
0x00006ea0 add r4, pc | r4 += pc;
0x00006ea2 ldr r3, [r4] | r3 = *(r4);
0x00006ea4 ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x00006ea6 blx r3 | r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
0x00006ea8 mov r8, r0 | r8 = r0;
0x00006eaa mov r0, r5 | r0 = r5;
0x00006eac blx 0x19b8 | r0 = fcn_000019b8 ();
0x00006eb0 mov r2, r0 | r2 = r0;
0x00006eb2 mov r0, r5 | r0 = r5;
0x00006eb4 mov r5, r2 | r5 = r2;
0x00006eb6 blx 0x1c84 | fcn_00001c84 ();
0x00006eba cmp.w r8, 0 |
0x00006ebe orr.w r5, r5, r0 | r5 |= r0;
| if (r8 < 0) {
0x00006ec2 blt.w 0x73ac | goto label_147;
| }
0x00006ec6 ldr r4, [r4] | r4 = *(r4);
0x00006ec8 mov r2, sl | r2 = sl;
0x00006eca mov r1, r6 | r1 = r6;
0x00006ecc mov r0, sl | r0 = sl;
0x00006ece ldr r3, [r4] | r3 = *(r4);
0x00006ed0 blx 0x1d68 | r0 = fcn_00001d68 ();
0x00006ed4 cmp r0, 0 |
| if (r0 != 0) {
0x00006ed6 bne.w 0x738a | goto label_148;
| }
0x00006eda cmp r5, 0 |
| if (r5 == 0) {
0x00006edc beq 0x6e1c | goto label_34;
| }
0x00006ede ldr r4, [r4] | r4 = *(r4);
0x00006ee0 movs r0, 0x1c | r0 = 0x1c;
0x00006ee2 ldr.w fp, [sp, 0x28] | fp = var_28h;
0x00006ee6 blx 0x1b18 | system (r0);
0x00006eea ldr.w r1, [pc, 0x7c4] |
0x00006eee mov r2, r4 | r2 = r4;
0x00006ef0 mvn r4, 0x1b | r4 = ~0x1b;
0x00006ef4 mov r3, r0 | r3 = r0;
0x00006ef6 movs r0, 3 | r0 = 3;
0x00006ef8 add r1, pc | r1 = 0xe5ae;
0x00006efa bl 0x85e4 | fcn_000085e4 (r0);
| label_52:
0x00006efe lsrs r4, r4, 0x1f | r4 >>= 0x1f;
| label_48:
0x00006f00 cmp.w sl, -1 |
| if (sl == -1) {
0x00006f04 beq.w 0x62da | goto label_35;
| }
0x00006f08 mov r0, sl | r0 = sl;
0x00006f0a blx 0x1dbc | fcn_00001dbc ();
0x00006f0e b.w 0x62da | goto label_35;
| label_136:
0x00006f12 ldr r3, [sp, 0x38] | r3 = var_38h;
0x00006f14 b 0x6c4c | goto label_36;
| label_135:
0x00006f16 str r3, [sp, 0x40] | var_40h = r3;
0x00006f18 ldr.w r1, [pc, 0x798] |
0x00006f1c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00006f1e str r2, [sp, 8] | var_8h_2 = r2;
0x00006f20 mov r2, fp | r2 = fp;
0x00006f22 strd ip, r0, [sp] | __asm ("strd ip, r0, [sp]");
0x00006f26 add r1, pc | r1 = 0xe5de;
0x00006f28 str r3, [sp, 0x14] | var_14h_2 = r3;
0x00006f2a movs r0, 7 | r0 = 7;
0x00006f2c str.w sl, [sp, 0x10] | __asm ("str.w sl, [var_10h]");
0x00006f30 bl 0x85e4 | fcn_000085e4 (r0);
0x00006f34 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00006f36 ldrb r3, [r3, 0xa] | r3 = *((r3 + 0xa));
| if (r3 != 0) {
0x00006f38 cbnz r3, 0x6f7a | goto label_149;
| }
| label_39:
0x00006f3a ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00006f3e b 0x6c42 | goto label_37;
| label_134:
0x00006f40 ldr.w r1, [pc, 0x774] |
0x00006f44 mov r3, r7 | r3 = r7;
0x00006f46 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00006f4a movs r0, 7 | r0 = 7;
0x00006f4c str r6, [sp] | *(sp) = r6;
0x00006f4e add r1, pc | r1 = 0xe60a;
0x00006f50 bl 0x85e4 | fcn_000085e4 (r0);
0x00006f54 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00006f56 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00006f5a ldrb r3, [r3, 0xa] | r3 = *((r3 + 0xa));
0x00006f5c cmp r3, 0 |
0x00006f5e it ne |
| if (r3 == 0) {
0x00006f60 cmpne r7, 0x57 | __asm ("cmpne r7, 0x57");
| goto label_150;
| }
| if (r3 == 0) {
| label_150:
0x00006f62 beq.w 0x6c7e | goto label_38;
| }
0x00006f66 ldr.w r1, [pc, 0x754] |
0x00006f6a mov r3, r6 | r3 = r6;
0x00006f6c ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00006f70 movs r0, 4 | r0 = 4;
0x00006f72 add r1, pc | r1 = 0xe634;
0x00006f74 bl 0x85e4 | fcn_000085e4 (r0);
0x00006f78 b 0x6c7e | goto label_38;
| label_149:
0x00006f7a ldr.w r1, [pc, 0x744] |
0x00006f7e mov r3, r6 | r3 = r6;
0x00006f80 ldr.w r2, [r8, 4] | r2 = *((r8 + 4));
0x00006f84 movs r0, 4 | r0 = 4;
0x00006f86 add r1, pc | r1 = 0xe64c;
0x00006f88 bl 0x85e4 | fcn_000085e4 (r0);
0x00006f8c b 0x6f3a | goto label_39;
| label_90:
0x00006f8e blx 0x1be4 | r0 = isoc99_sscanf ();
0x00006f92 ldr r7, [r0] | r7 = *(r0);
0x00006f94 rsbs r7, r7, 0 | r7 -= ;
| label_46:
0x00006f96 ldr r3, [sp, 0x20] | r3 = stream;
0x00006f98 subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x00006f9c ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x00006f9e bl 0x8c50 | fcn_00008c50 (r0);
0x00006fa2 b.w 0x641c | goto label_40;
| label_101:
0x00006fa6 ldr r2, [sp, 0x20] | r2 = stream;
0x00006fa8 ldrb.w r3, [r2, 0x7e2] | r3 = *((r2 + 0x7e2));
0x00006fac add.w r6, r2, 0x7d8 | r6 = r2 + 0x7d8;
0x00006fb0 cmp r3, 0 |
| if (r3 == 0) {
0x00006fb2 beq.w 0x6224 | goto label_16;
| }
0x00006fb6 ldr.w r1, [pc, 0x70c] |
0x00006fba movs r0, 4 | r0 = 4;
0x00006fbc add r1, pc | r1 = 0xe686;
0x00006fbe bl 0x85e4 | fcn_000085e4 (r0);
0x00006fc2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00006fc4 strb r3, [r6, 0xa] | *((r6 + 0xa)) = r3;
0x00006fc6 b.w 0x6224 | goto label_16;
| label_133:
0x00006fca ldr.w r1, [pc, 0x6fc] |
0x00006fce movs r0, 7 | r0 = 7;
0x00006fd0 add r1, pc | r1 = 0xe69e;
0x00006fd2 bl 0x85e4 | fcn_000085e4 (r0);
0x00006fd6 b 0x6c88 | goto label_41;
| label_130:
0x00006fd8 ldr.w r1, [pc, 0x6f0] |
0x00006fdc movs r0, 6 | r0 = 6;
0x00006fde str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00006fe2 ldr r3, [r7] | r3 = *(r7);
0x00006fe4 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00006fe6 add r1, pc | r1 = 0xe6b6;
0x00006fe8 bl 0x85e4 | fcn_000085e4 (r0);
0x00006fec b.w 0x6538 | goto label_28;
| label_82:
0x00006ff0 blx 0x1be4 | r0 = isoc99_sscanf ();
0x00006ff4 ldr r0, [r0] | r0 = *(r0);
0x00006ff6 blx 0x1b18 | system (r0);
0x00006ffa ldr.w r1, [pc, 0x6d4] |
0x00006ffe mov r2, r0 | r2 = r0;
0x00007000 movs r0, 2 | r0 = 2;
0x00007002 add r1, pc | r1 = 0xe6d8;
0x00007004 bl 0x85e4 | fcn_000085e4 (r0);
0x00007008 b.w 0x5e46 | goto label_11;
| label_86:
0x0000700c blx 0x1be4 | isoc99_sscanf ();
0x00007010 ldr.w r1, [pc, 0x6c0] |
0x00007014 mov r2, r6 | r2 = r6;
0x00007016 ldr r3, [r0] | r3 = *(r0);
0x00007018 movs r0, 3 | r0 = 3;
0x0000701a add r1, pc | r1 = 0xe6f2;
0x0000701c rsbs r6, r3, 0 | r6 = r3 - ;
0x0000701e bl 0x85e4 | fcn_000085e4 (r0);
0x00007022 b.w 0x60ac | goto label_30;
| label_114:
0x00007026 mov r2, r0 | r2 = r0;
0x00007028 mov r1, r0 | r1 = r0;
0x0000702a add.w r7, sp, 0x1300 | r7 += ptr;
0x0000702e mov r0, r5 | r0 = r5;
0x00007030 blx 0x1d80 | fcn_00001d80 ();
0x00007034 rsbs r4, r4, 0 | r4 -= ;
0x00007036 ldr.w sb, [sp, 0x20] | sb = stream;
0x0000703a adds r7, 0x1c | r7 += 0x1c;
0x0000703c b 0x7060 |
| while (r0 != 0) {
0x0000703e mov r0, r6 | r0 = r6;
0x00007040 blx 0x1bb0 | r0 = fcn_00001bb0 ();
| if (r0 != 0) {
0x00007044 cbz r0, 0x705e |
0x00007046 subw r2, sb, 0xaa4 | __asm ("subw r2, sb, 0xaa4");
0x0000704a adds r3, r7, r0 | r3 = r7 + r0;
0x0000704c ldr r0, [r2, 0x18] | r0 = *((r2 + 0x18));
0x0000704e movs r2, 0 | r2 = 0;
0x00007050 mov r1, r6 | r1 = r6;
0x00007052 strb r2, [r3, -0x1] | *((r3 - 0x1)) = r2;
0x00007056 bl 0x8f6c | r0 = fcn_00008f6c (r0, r1);
| if (r0 == 0) {
0x0000705a cbz r0, 0x705e | goto label_151;
| }
0x0000705c str r4, [r0, 0x30] | *((r0 + 0x30)) = r4;
| }
| label_151:
0x0000705e adds r4, 1 | r4++;
0x00007060 mov r2, r5 | r2 = r5;
0x00007062 mov.w r1, 0x1000 | r1 = 0x1000;
0x00007066 mov r0, r6 | r0 = r6;
0x00007068 blx 0x19ac | r0 = fcn_000019ac ();
0x0000706c cmp r0, 0 |
0x0000706e bne 0x703e |
| }
0x00007070 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00007072 mov r8, r0 | r8 = r0;
0x00007074 ldr.w r1, [pc, 0x660] | r1 = *(0x000076d8);
0x00007078 sub.w r0, r3, 0x1c | r0 = r3 - 0x1c;
0x0000707c add r1, pc | r1 += pc;
0x0000707e bl 0x8c08 | fcn_00008c08 (r0, r1);
0x00007082 ldr r3, [sp, 0x20] | r3 = stream;
0x00007084 subw r3, r3, 0xaa4 | __asm ("subw r3, r3, 0xaa4");
0x00007088 ldr r1, [r3, 0xc] | r1 = *((r3 + 0xc));
0x0000708a cmp r1, 0 |
| if (r1 == 0) {
0x0000708c beq.w 0x664c | goto label_42;
| }
0x00007090 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x00007092 mov r0, r8 | r0 = r8;
0x00007094 subs r3, 4 | r3 -= 4;
| do {
0x00007096 ldr r2, [r3, 4]! | r2 = *((r3 += 4));
0x0000709a strh r0, [r2, 0x38] | *((r2 + 0x38)) = r0;
0x0000709c adds r0, 1 | r0++;
0x0000709e cmp r0, r1 |
0x000070a0 bne 0x7096 |
| } while (r0 != r1);
0x000070a2 b.w 0x664c | goto label_42;
| label_79:
0x000070a6 ldr.w r1, [pc, 0x634] |
0x000070aa movs r0, 2 | r0 = 2;
0x000070ac add r1, pc | r1 = 0xe78e;
0x000070ae bl 0x85e4 | fcn_000085e4 (r0);
0x000070b2 b.w 0x5e46 | goto label_11;
| label_97:
0x000070b6 rsbs r0, r0, 0 | r0 -= ;
0x000070b8 ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x000070bc blx 0x1b18 | system (r0);
0x000070c0 ldr.w r1, [pc, 0x61c] |
0x000070c4 mov r3, r0 | r3 = r0;
0x000070c6 mov r2, r7 | r2 = r7;
0x000070c8 movs r0, 2 | r0 = 2;
0x000070ca add r1, pc | r1 = 0xe7ae;
0x000070cc bl 0x85e4 | fcn_000085e4 (r0);
0x000070d0 b.w 0x629c | goto label_32;
| label_98:
0x000070d4 rsbs r0, r0, 0 | r0 -= ;
0x000070d6 ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x000070da blx 0x1b18 | system (r0);
0x000070de ldr.w r1, [pc, 0x604] |
0x000070e2 mov r3, r0 | r3 = r0;
0x000070e4 mov r2, r7 | r2 = r7;
0x000070e6 movs r0, 2 | r0 = 2;
0x000070e8 add r1, pc | r1 = 0xe7d2;
0x000070ea bl 0x85e4 | fcn_000085e4 (r0);
0x000070ee ldr.w r0, [r8] | r0 = *(r8);
0x000070f2 bl 0xcd5c | fcn_0000cd5c (r0);
0x000070f6 b.w 0x629c | goto label_32;
| label_99:
0x000070fa ldr.w sl, [sp, 0x2c] | sl = var_2ch;
0x000070fe ldr.w fp, [sp, 0x1c] | fp = var_1ch;
0x00007102 b.w 0x65b2 | goto label_43;
| label_112:
0x00007106 rsbs r0, r0, 0 | r0 -= ;
0x00007108 blx 0x1b18 | system (r0);
0x0000710c ldr.w r1, [pc, 0x5d8] |
0x00007110 mov r2, r0 | r2 = r0;
0x00007112 movs r0, 2 | r0 = 2;
0x00007114 add r1, pc | r1 = 0xe800;
0x00007116 bl 0x85e4 | fcn_000085e4 (r0);
0x0000711a b.w 0x629c | goto label_32;
| label_119:
0x0000711e ldr.w r3, [pc, 0x5cc] | r3 = *(0x000076ec);
0x00007122 add r3, pc | r3 += pc;
0x00007124 b.w 0x673e | goto label_44;
| label_145:
0x00007128 movs r2, 0xc1 | r2 = 0xc1;
0x0000712a mov.w r1, 0x1a4 | r1 = 0x1a4;
0x0000712e strd r2, r1, [sp] | __asm ("strd r2, r1, [sp]");
0x00007132 mov r3, r6 | r3 = r6;
0x00007134 ldr.w r1, [pc, 0x5b8] |
0x00007138 movs r0, 3 | r0 = 3;
0x0000713a ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000713c add r1, pc | r1 = 0xe830;
0x0000713e bl 0x85e4 | fcn_000085e4 (r0);
0x00007142 b 0x6e14 | goto label_45;
| label_91:
0x00007144 blx 0x1be4 | r0 = isoc99_sscanf ();
0x00007148 ldr r3, [r0] | r3 = *(r0);
0x0000714a ldr r0, [r7, 0x1c] | r0 = *((r7 + 0x1c));
0x0000714c rsbs r7, r3, 0 | r7 = r3 - ;
0x0000714e bl 0x8c50 | fcn_00008c50 (r0);
0x00007152 b 0x6f96 | goto label_46;
| label_110:
0x00007154 ldr.w r1, [pc, 0x59c] |
0x00007158 ldr r0, [sp, 0x34] | r0 = var_34h;
0x0000715a add r1, pc | r1 = 0xe852;
0x0000715c bl 0x5590 | fcn_00005590 (r0, r1);
0x00007160 b.w 0x6580 | goto label_47;
| label_111:
0x00007164 rsbs r0, r0, 0 | r0 -= ;
0x00007166 blx 0x1b18 | system (r0);
0x0000716a ldr.w r1, [pc, 0x58c] |
0x0000716e mov r2, r0 | r2 = r0;
0x00007170 movs r0, 2 | r0 = 2;
0x00007172 add r1, pc | r1 = 0xe870;
0x00007174 bl 0x85e4 | fcn_000085e4 (r0);
0x00007178 b.w 0x629c | goto label_32;
| label_144:
0x0000717c ldr.w fp, [sp, 0x28] | fp = var_28h;
0x00007180 mov r4, r3 | r4 = r3;
0x00007182 b 0x6f00 | goto label_48;
| label_139:
0x00007184 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00007186 cmp r3, 0 |
| if (r3 == 0) {
0x00007188 beq.w 0x764c | goto label_152;
| }
0x0000718c ldr r3, [sp, 0x20] | r3 = stream;
0x0000718e movs r4, 0 | r4 = 0;
0x00007190 mov r6, r8 | r6 = r8;
0x00007192 mov sb, r4 | sb = r4;
0x00007194 mov sl, r4 | sl = r4;
0x00007196 subw r7, r3, 0xaa4 | __asm ("subw r7, r3, 0xaa4");
| do {
0x0000719a ldrh r3, [r6], 2 | r3 = *(r6);
| r6 += 2;
| if (r3 != 0) {
0x0000719e cbz r3, 0x71b6 |
0x000071a0 ldr r3, [r7, 8] | r3 = *((r7 + 8));
0x000071a2 mov r0, sb | r0 = sb;
0x000071a4 ldr r1, [r3, r4] | r1 = *((r3 + r4));
0x000071a6 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x000071aa cmp r0, 0 |
| if (r0 == 0) {
0x000071ac beq.w 0x7430 | goto label_153;
| }
0x000071b0 add.w sl, sl, 1 | sl++;
0x000071b4 mov sb, r0 | sb = r0;
| }
0x000071b6 cmp r5, r6 |
0x000071b8 add.w r4, r4, 4 | r4 += 4;
0x000071bc bne 0x719a |
| } while (r5 != r6);
0x000071be str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x000071c2 str.w sl, [sp, 0x28] | __asm ("str.w sl, [var_28h]");
| label_60:
0x000071c6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x000071c8 lsls r0, r3, 2 | r0 = r3 << 2;
0x000071ca blx 0x1b0c | strerror (r0);
0x000071ce str r0, [sp, 0x2c] | var_2ch = r0;
0x000071d0 cmp r0, 0 |
| if (r0 == 0) {
0x000071d2 beq.w 0x7634 | goto label_154;
| }
0x000071d6 movs r1, 0 | r1 = 0;
0x000071d8 movs r0, 0x10 | r0 = 0x10;
0x000071da bl 0x8c14 | fcn_00008c14 (r0, r1);
0x000071de str r0, [sp, 0x3c] | var_3ch = r0;
0x000071e0 cmp r0, 0 |
| if (r0 == 0) {
0x000071e2 beq.w 0x7640 | goto label_155;
| }
0x000071e6 ldr.w r3, [pc, 0x514] |
0x000071ea ldr.w sl, [sp, 0x28] | sl = var_28h;
0x000071ee str.w fp, [sp, 0x30] | __asm ("str.w fp, [var_30h]");
0x000071f2 add r3, pc | r3 = 0xe8f4;
0x000071f4 str.w r8, [sp, 0x38] | __asm ("str.w r8, [var_38h]");
0x000071f8 str r3, [sp, 0x48] | var_0h = r3;
0x000071fa ldr.w r3, [pc, 0x504] |
0x000071fe add r3, pc | r3 = 0xe904;
0x00007200 str r3, [sp, 0x50] | var_8h = r3;
0x00007202 add.w r3, sp, 0x1300 | r3 += ptr;
0x00007206 adds r3, 0x1c | r3 += 0x1c;
0x00007208 str r3, [sp, 0x44] | var_44h = r3;
| label_49:
0x0000720a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000720c cmp r3, 0 |
| if (r3 == 0) {
0x0000720e beq.w 0x7416 | goto label_156;
| }
0x00007212 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00007214 mov r0, r3 | r0 = r3;
0x00007216 ldr r4, [r3, 8] | r4 = *((r3 + 8));
0x00007218 bl 0xa3ec | fcn_0000a3ec (r0);
0x0000721c str r0, [sp, 0x1c] | var_1ch = r0;
0x0000721e movs r0, 8 | r0 = 8;
0x00007220 blx 0x1b0c | strerror (r0);
0x00007224 str r0, [sp, 0x40] | var_40h = r0;
0x00007226 cmp r0, 0 |
| if (r0 == 0) {
0x00007228 beq.w 0x75c2 | goto label_157;
| }
0x0000722c ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000722e movs r5, 0 | r5 = 0;
0x00007230 mov r0, r5 | r0 = r5;
0x00007232 str r4, [r3, 4] | *((r3 + 4)) = r4;
0x00007234 mov r1, r3 | r1 = r3;
0x00007236 str r5, [r3] | *(r3) = r5;
0x00007238 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000723c mov r4, r0 | r4 = r0;
0x0000723e cmp r0, 0 |
| if (r0 == 0) {
0x00007240 beq.w 0x75ae | goto label_158;
| }
0x00007244 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00007246 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00007248 str r5, [sp, 0x28] | var_28h = r5;
0x0000724a movs r5, 1 | r5 = 1;
0x0000724c mov r8, r3 | r8 = r3;
0x0000724e str r3, [r2] | *(r2) = r3;
| label_51:
0x00007250 ldr.w r1, [r8, 4] | r1 = *((r8 + 4));
0x00007254 ldrb.w r3, [r1, 0x3c] | r3 = *((r1 + 0x3c));
| if (r3 != 0) {
0x00007258 cbz r3, 0x7262 |
0x0000725a ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000725c ldr r3, [r3, 4] | r3 = *((r3 + 4));
0x0000725e cmp r1, r3 |
| if (r1 == r3) {
0x00007260 beq 0x7326 | goto label_159;
| }
| }
0x00007262 ldr r3, [r1, 0x1c] | r3 = *((r1 + 0x1c));
0x00007264 movs r2, 1 | r2 = 1;
0x00007266 strb.w r2, [r1, 0x3c] | *((r1 + 0x3c)) = r2;
0x0000726a cmp r3, 0 |
| if (r3 == 0) {
0x0000726c beq 0x730c | goto label_160;
| }
0x0000726e ldr r6, [r1, 0x18] | r6 = *((r1 + 0x18));
0x00007270 add.w sb, r6, r3, lsl 2 | sb = r6 + (r3 << 2);
0x00007274 cmp r6, sb |
| if (r6 >= sb) {
0x00007276 bhs.w 0x75aa | goto label_161;
| }
0x0000727a add.w r7, r5, 0x40000000 | r7 = r5 + 0x40000000;
0x0000727e ldrd r5, r3, [sp, 0x28] | __asm ("ldrd r5, r3, [var_28h]");
0x00007282 subs r7, 2 | r7 -= 2;
0x00007284 add.w r7, r3, r7, lsl 2 | r7 = r3 + (r7 << 2);
0x00007288 b 0x7290 |
| while (r0 != 0) {
0x0000728a cmp sb, r6 |
0x0000728c mov r4, r0 | r4 = r0;
| if (sb < r6) {
0x0000728e bls 0x7316 | goto label_56;
| }
0x00007290 movs r0, 8 | r0 = 8;
0x00007292 ldr fp, [r6], 4 | fp = *(r6);
| r6 += 4;
0x00007296 blx 0x1b0c | r0 = strerror (r0);
0x0000729a mov r1, r0 | r1 = r0;
0x0000729c cmp r0, 0 |
| if (r0 == 0) {
0x0000729e beq.w 0x759a | goto label_162;
| }
0x000072a2 cmp sl, r5 |
0x000072a4 strd r8, fp, [r0] | __asm ("strd r8, fp, [r0]");
| if (sl < r5) {
0x000072a8 bls.w 0x7620 | goto label_163;
| }
0x000072ac str r0, [r7, 4]! | *((r7 += 4)) = r0;
0x000072b0 mov r0, r4 | r0 = r4;
0x000072b2 adds r5, 1 | r5++;
0x000072b4 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x000072b8 cmp r0, 0 |
0x000072ba bne 0x728a |
| }
0x000072bc mvn r5, 0xb | r5 = ~0xb;
0x000072c0 ldr r1, [sp, 0x50] | r1 = var_8h;
0x000072c2 movs r0, 3 | r0 = 3;
0x000072c4 bl 0x85e4 | fcn_000085e4 (r0);
| do {
| label_50:
0x000072c8 ldr r6, [r4, 8] | r6 = *((r4 + 8));
0x000072ca mov r0, r4 | r0 = r4;
0x000072cc bl 0xa3ec | r0 = fcn_0000a3ec (r0);
0x000072d0 mov r4, r0 | r4 = r0;
0x000072d2 mov r0, r6 | r0 = r6;
0x000072d4 blx 0x19a0 | fcn_000019a0 ();
0x000072d8 cmp r4, 0 |
0x000072da bne 0x72c8 |
| } while (r4 != 0);
0x000072dc cmp r5, 0 |
| if (r5 >= 0) {
0x000072de bge 0x720a | goto label_49;
| }
0x000072e0 ldr.w fp, [sp, 0x30] | fp = var_30h;
0x000072e4 ldr.w r8, [sp, 0x38] | r8 = var_38h;
| label_54:
0x000072e8 ldr r0, [sp, 0x3c] | r0 = var_3ch;
0x000072ea bl 0x8c50 | fcn_00008c50 (r0);
| label_55:
0x000072ee ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x000072f0 ldr r0, [sp, 0x1c] | r0 = var_1ch;
| if (r3 == 0) {
0x000072f2 cbz r3, 0x72fc | goto label_164;
| }
| do {
0x000072f4 bl 0xa3ec | r0 = fcn_0000a3ec (r0);
0x000072f8 cmp r0, 0 |
0x000072fa bne 0x72f4 |
| } while (r0 != 0);
| label_164:
0x000072fc ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x000072fe blx 0x19a0 | fcn_000019a0 ();
0x00007302 mov r0, r8 | r0 = r8;
0x00007304 blx 0x19a0 | fcn_000019a0 ();
0x00007308 b.w 0x629c | goto label_32;
| label_160:
0x0000730c ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000730e bl 0xa454 | fcn_0000a454 (r0, r1);
0x00007312 ldr r5, [sp, 0x28] | r5 = var_28h;
0x00007314 str r0, [sp, 0x1c] | var_1ch = r0;
| label_56:
0x00007316 cmp r5, 0 |
| if (r5 == 0) {
0x00007318 beq 0x72c8 | goto label_50;
| }
0x0000731a ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000731c subs r3, r5, 1 | r3 = r5 - 1;
0x0000731e str r3, [sp, 0x28] | var_28h = r3;
0x00007320 ldr.w r8, [r2, r3, lsl 2] | offset_10 = r3 << 2;
| r8 = *((r2 + offset_10));
0x00007324 b 0x7250 | goto label_51;
| label_159:
0x00007326 ldr r3, [sp, 0x48] | r3 = var_0h;
0x00007328 ldm.w r3, {r0, r1} | r0 = *(r3);
| r1 = *((r3 + 4));
0x0000732c add.w r3, sp, 0x1320 | r3 += arg_1320h;
0x0000732e strh r1, [r3, r6] | *((r3 + r6)) = r1;
0x00007330 strb r1, [r3] | *(r3) = r1;
0x00007332 movs r1, 3 | r1 = 3;
0x00007334 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00007336 str r0, [r3] | *(r3) = r0;
0x00007338 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000733a bl 0x8b68 | fcn_00008b68 (r0, r1);
0x0000733e ldr.w r6, [r8] | r6 = *(r8);
0x00007342 cmp r6, 0 |
| if (r6 == 0) {
0x00007344 beq.w 0x7526 | goto label_165;
| }
0x00007348 mov.w sb, 0 | sb = 0;
0x0000734c mov r3, r8 | r3 = r8;
0x0000734e mov r7, sb | r7 = sb;
0x00007350 mov r8, r4 | r8 = r4;
0x00007352 ldr.w fp, [sp, 0x3c] | fp = var_3ch;
0x00007356 mov r4, sb | r4 = sb;
0x00007358 mov sb, r3 | sb = r3;
0x0000735a b 0x7364 |
| while (r0 == 0) {
0x0000735c ldr r6, [r6] | r6 = *(r6);
0x0000735e adds r4, 1 | r4++;
0x00007360 cmp r6, 0 |
| if (r6 == 0) {
0x00007362 beq 0x745a | goto label_166;
| }
0x00007364 ldr r2, [r6, 4] | r2 = *((r6 + 4));
0x00007366 mov r1, r6 | r1 = r6;
0x00007368 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000736a ldr r2, [r2, 0x2c] | r2 = *((r2 + 0x2c));
0x0000736c subs r2, 1 | r2--;
0x0000736e add r7, r2 | r7 += r2;
0x00007370 bl 0x8b98 | fcn_00008b98 (r0, r1);
0x00007372 invalid |
0x00007374 ldr r1, [r6, 4] | r1 = *((r6 + 4));
0x00007376 movs r2, 0 | r2 = 0;
0x00007378 mov r0, fp | r0 = fp;
0x0000737a adds r1, 0x44 | r1 += 0x44;
0x0000737c bl 0x8cc0 | r0 = fcn_00008cc0 (r0, r1, r2);
0x00007380 mov r5, r0 | r5 = r0;
0x00007382 cmp r0, 0 |
0x00007384 beq 0x735c |
| }
0x00007386 mov r4, r8 | r4 = r8;
0x00007388 b 0x72c8 | goto label_50;
| label_148:
0x0000738a blx 0x1be4 | isoc99_sscanf ();
0x0000738e ldr r3, [r4] | r3 = *(r4);
0x00007390 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00007392 ldr r1, [pc, 0x370] |
0x00007394 ldr r4, [r0] | r4 = *(r0);
0x00007396 movs r0, 2 | r0 = 2;
0x00007398 str r3, [sp, 4] | var_4h_2 = r3;
0x0000739a mov r3, r6 | r3 = r6;
0x0000739c add r1, pc | r1 = 0xeaa6;
0x0000739e str r2, [sp] | *(sp) = r2;
0x000073a0 ldr.w fp, [sp, 0x28] | fp = var_28h;
0x000073a4 rsbs r4, r4, 0 | r4 -= ;
0x000073a6 bl 0x85e4 | fcn_000085e4 (r0);
0x000073aa b 0x6efe | goto label_52;
| label_147:
0x000073ac ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x000073ae mov r1, r6 | r1 = r6;
0x000073b0 mov r0, sl | r0 = sl;
0x000073b2 ldr.w fp, [sp, 0x28] | fp = var_28h;
0x000073b6 mov r4, r8 | r4 = r8;
0x000073b8 blx 0x1984 | r0 = fcn_00001984 ();
0x000073bc cmp r0, 0 |
| if (r0 != 0) {
0x000073be bne.w 0x74ee | goto label_167;
| }
| label_57:
0x000073c2 ldr r3, [pc, 0x344] |
0x000073c4 rsbs r0, r4, 0 | r0 = r4 - ;
0x000073c6 add r3, pc |
0x000073c8 ldr r3, [r3] | r3 = *(0xead4);
0x000073ca ldr r4, [r3] | r4 = *(0xead4);
0x000073cc blx 0x1b18 | system (r0);
0x000073d0 ldr r1, [pc, 0x338] |
0x000073d2 mov r3, r0 | r3 = r0;
0x000073d4 mov r2, r4 | r2 = r4;
0x000073d6 movs r0, 3 | r0 = 3;
0x000073d8 add r1, pc | r1 = 0xeae8;
0x000073da bl 0x85e4 | r0 = fcn_000085e4 (r0);
0x000073de blx 0x1be4 | r0 = isoc99_sscanf ();
0x000073e2 ldr r4, [r0] | r4 = *(r0);
0x000073e4 rsbs r4, r4, 0 | r4 -= ;
0x000073e6 b 0x6efe | goto label_52;
| label_143:
0x000073e8 ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x000073ea ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000073ec blx 0x1ad0 | r0 = fstatat64 ();
0x000073f0 subs.w sl, r0, 0 | sl = r0 - 0;
| if (sl >= r0) {
0x000073f4 bge.w 0x6dd2 | goto label_53;
| }
0x000073f8 blx 0x1be4 | isoc99_sscanf ();
0x000073fc ldr r1, [pc, 0x310] |
0x000073fe ldr r4, [r0] | r4 = *(r0);
0x00007400 movs r0, 2 | r0 = 2;
0x00007402 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00007404 add r1, pc | r1 = 0xeb18;
0x00007406 cmp r4, 0 |
0x00007408 ite le |
| if (r4 > 0) {
0x0000740a movle r4, 0 | r4 = 0;
| }
| if (r4 <= 0) {
0x0000740c movgt r4, 1 | r4 = 1;
| }
0x0000740e bl 0x85e4 | fcn_000085e4 (r0);
0x00007412 b.w 0x62da | goto label_35;
| label_156:
0x00007416 ldrd r8, r0, [sp, 0x38] | __asm ("ldrd r8, r0, [var_38h]");
0x0000741a ldr.w fp, [sp, 0x30] | fp = var_30h;
0x0000741e bl 0x91d4 | fcn_000091d4 (r0);
0x00007422 ldr r1, [pc, 0x2f0] |
0x00007424 mov r2, r0 | r2 = r0;
0x00007426 movs r0, 3 | r0 = 3;
0x00007428 add r1, pc | r1 = 0xeb42;
0x0000742a bl 0x85e4 | fcn_000085e4 (r0);
0x0000742e b 0x72e8 | goto label_54;
| label_153:
0x00007430 ldr r1, [pc, 0x2e4] |
0x00007432 str r0, [sp, 0x2c] | var_2ch = r0;
0x00007434 movs r0, 3 | r0 = 3;
0x00007436 str.w sb, [sp, 0x1c] | __asm ("str.w sb, [var_1ch]");
0x0000743a add r1, pc | r1 = 0xeb56;
0x0000743c bl 0x85e4 | fcn_000085e4 (r0);
0x00007440 b 0x72ee | goto label_55;
| label_141:
0x00007442 ldr r3, [pc, 0x2d8] |
0x00007444 movw r2, 0x785 | r2 = 0x785;
0x00007448 ldr r1, [pc, 0x2d4] |
0x0000744a ldr r0, [pc, 0x2d8] |
0x0000744c add r3, pc | r3 = 0xeb6e;
0x0000744e add r1, pc | r1 = 0xeb72;
0x00007450 add r0, pc | r0 = 0xeb7a;
0x00007452 blx 0x1de0 | fcn_00001de0 ();
| label_77:
0x00007456 blx 0x1a1c | stat64 ();
| label_166:
0x0000745a mov r3, sb | r3 = sb;
0x0000745c mov sb, r4 | sb = r4;
0x0000745e mov r4, r8 | r4 = r8;
0x00007460 mov r8, r3 | r8 = r3;
| label_58:
0x00007462 ldr.w r3, [r8, 4] | r3 = *((r8 + 4));
0x00007466 movs r5, 0 | r5 = 0;
0x00007468 ldr r0, [r3, 0x2c] | r0 = *((r3 + 0x2c));
0x0000746a add r0, r7 | r0 += r7;
0x0000746c add.w r0, r0, sb, lsl 2 | r0 += (sb << 2);
0x0000746e lsls r1, r1, 2 | r1 <<= 2;
0x00007470 blx 0x1b0c | strerror (r0);
0x00007474 ldr r3, [sp, 0x20] | r3 = stream;
0x00007476 mov r6, r0 | r6 = r0;
0x00007478 subw sb, r3, 0xa18 | __asm ("subw sb, r3, 0xa18");
0x0000747c ldr.w r7, [sb, 4] | r7 = *((sb + 4));
0x00007480 subs r7, 1 | r7--;
| if (r7 < 1) {
0x00007482 bmi 0x74c6 | goto label_168;
| }
0x00007484 mov fp, r8 |
0x00007486 mov r8, r4 | r8 = r4;
| do {
0x00007488 ldr.w r2, [sb] | r2 = *(sb);
0x0000748c adds r0, r6, r5 | r0 = r6 + r5;
0x0000748e ldr.w r4, [r2, r7, lsl 2] | offset_11 = r7 << 2;
| r4 = *((r2 + offset_11));
0x00007492 subs r7, 1 | r7--;
0x00007494 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x00007496 ldr r2, [r1, 0x2c] | r2 = *((r1 + 0x2c));
0x00007498 adds r1, 0x44 | r1 += 0x44;
0x0000749a subs r2, 1 | r2--;
0x0000749c str r2, [sp, 0x54] | var_54h = r2;
0x0000749e blx 0x19c8 | mmap64 ()
0x000074a2 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000074a4 ldr r2, [sp, 0x54] | r2 = var_54h;
0x000074a6 ldr r0, [r3] | r0 = *(r3);
0x000074a8 add r2, r5 | r2 += r5;
0x000074aa ldrb r5, [r3, 4] | r5 = *((r3 + 4));
0x000074ac adds r1, r6, r2 | r1 = r6 + r2;
0x000074ae str r0, [r6, r2] | *((r6 + r2)) = r0;
0x000074b0 strb r5, [r1, 4] | *((r1 + 4)) = r5;
0x000074b2 adds r5, r2, 4 | r5 = r2 + 4;
0x000074b4 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x000074b6 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x000074b8 bl 0xa454 | fcn_0000a454 (r0, r1);
0x000074bc str r0, [sp, 0x1c] | var_1ch = r0;
0x000074be adds r0, r7, 1 | r0 = r7 + 1;
0x000074c0 bne 0x7488 |
| } while (r0 != r7);
0x000074c2 mov r4, r8 | r4 = r8;
0x000074c4 mov r8, fp | r8 = fp;
| label_168:
0x000074c6 ldr.w r1, [r8, 4] | r1 = *((r8 + 4));
0x000074ca adds r0, r6, r5 | r0 = r6 + r5;
0x000074cc ldr r5, [sp, 0x28] | r5 = var_28h;
0x000074ce adds r1, 0x44 | r1 += 0x44;
0x000074d0 blx 0x1a7c | gettimeofday ();
0x000074d4 ldr r1, [pc, 0x250] |
0x000074d6 mov r2, r6 | r2 = r6;
0x000074d8 movs r0, 3 | r0 = 3;
0x000074da add r1, pc | r1 = 0xec06;
0x000074dc bl 0x85e4 | fcn_000085e4 (r0);
0x000074e0 mov r0, r6 | r0 = r6;
0x000074e2 blx 0x19a0 | fcn_000019a0 ();
0x000074e6 ldr r0, [sp, 0x18] | r0 = var_18h;
0x000074e8 bl 0x8bf4 | fcn_00008bf4 (r0);
0x000074ec b 0x7316 | goto label_56;
| label_167:
0x000074ee ldr r1, [pc, 0x23c] |
0x000074f0 mov r3, r6 | r3 = r6;
0x000074f2 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000074f4 movs r0, 3 | r0 = 3;
0x000074f6 add r1, pc | r1 = 0xec28;
0x000074f8 bl 0x85e4 | fcn_000085e4 (r0);
0x000074fc b 0x73c2 | goto label_57;
| label_146:
0x000074fe ldr r1, [pc, 0x230] |
0x00007500 mov r2, r4 | r2 = r4;
0x00007502 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x00007504 movs r0, 3 | r0 = 3;
0x00007506 str r6, [sp] | *(sp) = r6;
0x00007508 add r1, pc | r1 = 0xec3e;
0x0000750a bl 0x85e4 | fcn_000085e4 (r0);
0x0000750e mov r0, r4 | r0 = r4;
0x00007510 blx 0x1dbc | fcn_00001dbc ();
0x00007514 b 0x6e14 | goto label_45;
| label_122:
0x00007516 ldr r1, [pc, 0x21c] |
0x00007518 mov r2, r5 | r2 = r5;
0x0000751a movs r0, 3 | r0 = 3;
0x0000751c add r1, pc | r1 = 0xec56;
0x0000751e bl 0x85e4 | fcn_000085e4 (r0);
0x00007522 b.w 0x6780 | goto label_27;
| label_165:
0x00007526 mov sb, r6 | sb = r6;
0x00007528 mov r7, r6 | r7 = r6;
0x0000752a b 0x7462 | goto label_58;
| label_102:
0x0000752c blx 0x1be4 | isoc99_sscanf ();
0x00007530 ldr r1, [pc, 0x204] |
0x00007532 ldr r6, [r0] | r6 = *(r0);
0x00007534 movs r0, 7 | r0 = 7;
0x00007536 ldr r2, [sp, 0x40] | r2 = var_40h;
0x00007538 add r1, pc | r1 = 0xec74;
0x0000753a bl 0x85e4 | fcn_000085e4 (r0);
0x0000753e cmp r6, 0 |
| if (r6 <= 0) {
0x00007540 ble.w 0x6224 | goto label_16;
| }
0x00007544 mov r0, r6 | r0 = r6;
0x00007546 blx 0x1b18 | system (r0);
0x0000754a ldr r1, [pc, 0x1f0] |
0x0000754c mov r3, r0 | r3 = r0;
0x0000754e ldr r2, [sp, 0x40] | r2 = var_40h;
0x00007550 movs r0, 2 | r0 = 2;
0x00007552 add r1, pc | r1 = 0xec94;
0x00007554 bl 0x85e4 | fcn_000085e4 (r0);
0x00007558 b.w 0x5e46 | goto label_11;
| label_131:
0x0000755c ldr r1, [pc, 0x1e0] |
0x0000755e movs r0, 3 | r0 = 3;
0x00007560 add r1, pc | r1 = 0xeca4;
0x00007562 bl 0x85e4 | fcn_000085e4 (r0);
0x00007566 b.w 0x6538 | goto label_28;
| label_93:
0x0000756a blx 0x1be4 | isoc99_sscanf ();
0x0000756e ldr r1, [pc, 0x1d4] |
0x00007570 ldr r6, [r0] | r6 = *(r0);
0x00007572 movs r0, 7 | r0 = 7;
0x00007574 ldr r2, [sp, 0x38] | r2 = var_38h;
0x00007576 add r1, pc | r1 = 0xecc0;
0x00007578 bl 0x85e4 | fcn_000085e4 (r0);
0x0000757c cmp r6, 0 |
| if (r6 <= 0) {
0x0000757e ble.w 0x6224 | goto label_16;
| }
0x00007582 mov r0, r6 | r0 = r6;
0x00007584 blx 0x1b18 | system (r0);
0x00007588 ldr r1, [pc, 0x1bc] |
0x0000758a mov r3, r0 | r3 = r0;
0x0000758c ldr r2, [sp, 0x38] | r2 = var_38h;
0x0000758e movs r0, 2 | r0 = 2;
0x00007590 add r1, pc | r1 = 0xecdc;
0x00007592 bl 0x85e4 | fcn_000085e4 (r0);
0x00007596 b.w 0x5e46 | goto label_11;
| label_162:
0x0000759a ldr r1, [pc, 0x1b0] |
0x0000759c movs r0, 3 | r0 = 3;
0x0000759e mvn r5, 0xb | r5 = ~0xb;
0x000075a2 add r1, pc | r1 = 0xecf4;
0x000075a4 bl 0x85e4 | fcn_000085e4 (r0);
0x000075a8 b 0x72c8 | goto label_50;
| label_161:
0x000075aa ldr r5, [sp, 0x28] | r5 = var_28h;
0x000075ac b 0x7316 | goto label_56;
| label_158:
0x000075ae ldr r1, [pc, 0x1a0] |
0x000075b0 movs r0, 3 | r0 = 3;
0x000075b2 ldr.w fp, [sp, 0x30] | fp = var_30h;
0x000075b6 ldr.w r8, [sp, 0x38] | r8 = var_38h;
0x000075ba add r1, pc | r1 = 0xed10;
0x000075bc bl 0x85e4 | fcn_000085e4 (r0);
0x000075c0 b 0x72e8 | goto label_54;
| label_157:
0x000075c2 ldr r1, [pc, 0x190] |
0x000075c4 movs r0, 3 | r0 = 3;
0x000075c6 ldr.w fp, [sp, 0x30] | fp = var_30h;
0x000075ca ldr.w r8, [sp, 0x38] | r8 = var_38h;
0x000075ce add r1, pc | r1 = 0xed28;
0x000075d0 bl 0x85e4 | fcn_000085e4 (r0);
0x000075d4 b 0x72e8 | goto label_54;
| label_137:
0x000075d6 ldr r3, [pc, 0x180] |
0x000075d8 mov.w r2, 0x768 | r2 = 0x768;
0x000075dc ldr r1, [pc, 0x17c] |
0x000075de ldr r0, [pc, 0x180] |
0x000075e0 add r3, pc | r3 = 0xed3e;
0x000075e2 add r1, pc | r1 = 0xed42;
0x000075e4 add r0, pc | r0 = 0xed4a;
0x000075e6 blx 0x1de0 | fcn_00001de0 ();
| label_80:
0x000075ea ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000075ec movs r1, 1 | r1 = 1;
0x000075ee ldr r3, [pc, 0x174] |
0x000075f0 ldr r0, [pc, 0x174] |
0x000075f2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x000075f4 movs r2, 0x15 | r2 = 0x15;
0x000075f6 add r0, pc | r0 = 0xed62;
0x000075f8 ldr r3, [r3] | r3 = *(0x7766);
0x000075fa blx 0x1a58 | lseek64 ();
0x000075fe b.w 0x5e46 | goto label_11;
| label_106:
0x00007602 ldr r1, [pc, 0x168] |
0x00007604 movs r0, 3 | r0 = 3;
0x00007606 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x00007608 add r1, pc | r1 = 0xed7a;
0x0000760a bl 0x85e4 | fcn_000085e4 (r0);
0x0000760e b.w 0x6554 | goto label_59;
| label_129:
0x00007612 ldr r1, [pc, 0x15c] |
0x00007614 movs r0, 3 | r0 = 3;
0x00007616 add r1, pc | r1 = 0xed8c;
0x00007618 bl 0x85e4 | fcn_000085e4 (r0);
0x0000761c b.w 0x6538 | goto label_28;
| label_163:
0x00007620 ldr r3, [pc, 0x150] |
0x00007622 movw r2, 0x701 | r2 = 0x701;
0x00007626 ldr r1, [pc, 0x150] |
0x00007628 ldr r0, [pc, 0x150] |
0x0000762a add r3, pc | r3 = 0xeda2;
0x0000762c add r1, pc | r1 = 0xedaa;
0x0000762e add r0, pc | r0 = 0xedae;
0x00007630 blx 0x1de0 | fcn_00001de0 ();
| label_154:
0x00007634 ldr r1, [pc, 0x148] |
0x00007636 movs r0, 3 | r0 = 3;
0x00007638 add r1, pc | r1 = 0xedbc;
0x0000763a bl 0x85e4 | fcn_000085e4 (r0);
0x0000763e b 0x72ee | goto label_55;
| label_155:
0x00007640 ldr r1, [pc, 0x140] |
0x00007642 movs r0, 3 | r0 = 3;
0x00007644 add r1, pc | r1 = 0xedcc;
0x00007646 bl 0x85e4 | fcn_000085e4 (r0);
0x0000764a b 0x72ee | goto label_55;
| label_152:
0x0000764c str r3, [sp, 0x1c] | var_1ch = r3;
0x0000764e b 0x71c6 | goto label_60;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x7788 */
| #include <stdint.h>
|
; (fcn) fcn.00007788 () | void fcn_00007788 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x00007788 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000778c sub sp, 0x1c |
0x0000778e ldrb r4, [r1] | r4 = *(r1);
0x00007790 mov fp, r1 |
0x00007792 mov sl, r0 | sl = r0;
0x00007794 strd r2, r3, [sp, 0x10] | __asm ("strd r2, r3, [var_10h]");
| if (r4 == 0) {
0x00007798 cbz r4, 0x77c6 | goto label_3;
| }
0x0000779a ldr r6, [pc, 0x158] |
0x0000779c mov r3, r4 | r3 = r4;
0x0000779e mov r5, r1 | r5 = r1;
0x000077a0 mov r4, r1 | r4 = r1;
0x000077a2 add r6, pc | r6 = 0xf09c;
0x000077a4 b 0x77ac |
| while (r1 >= r3) {
0x000077a6 ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
| if (r3 == 0) {
0x000077aa cbz r3, 0x77c4 | goto label_4;
| }
| label_0:
0x000077ac lsls r1, r3, 0x18 | r1 = r3 << 0x18;
0x000077ae bpl 0x77a6 |
| }
0x000077b0 mov r2, r3 | r2 = r3;
0x000077b2 mov r1, r6 | r1 = r6;
0x000077b4 movs r0, 2 | r0 = 2;
0x000077b6 str r4, [sp] | *(sp) = r4;
0x000077b8 bl 0x85e4 | fcn_000085e4 (r0);
0x000077bc ldrb r3, [r5, 1]! | r3 = *((r5 += 1));
0x000077c0 cmp r3, 0 |
| if (r3 != 0) {
0x000077c2 bne 0x77ac | goto label_0;
| }
| label_4:
0x000077c4 mov fp, r4 |
| label_3:
0x000077c6 ldr r3, [sp, 0x10] | r3 = var_10h;
0x000077c8 ldrb r3, [r3] | r3 = *(r3);
| if (r3 == 0) {
0x000077ca cbz r3, 0x77f4 | goto label_5;
| }
0x000077cc ldr r5, [pc, 0x128] |
0x000077ce ldr r6, [sp, 0x10] | r6 = var_10h;
0x000077d0 add r5, pc | r5 = 0xf0cc;
0x000077d2 mov r4, r6 | r4 = r6;
0x000077d4 b 0x77dc |
| while (r2 >= r3) {
0x000077d6 ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
| if (r3 == 0) {
0x000077da cbz r3, 0x77f4 | goto label_5;
| }
| label_1:
0x000077dc lsls r2, r3, 0x18 | r2 = r3 << 0x18;
0x000077de bpl 0x77d6 |
| }
0x000077e0 mov r2, r3 | r2 = r3;
0x000077e2 mov r1, r5 | r1 = r5;
0x000077e4 movs r0, 2 | r0 = 2;
0x000077e6 str r6, [sp] | *(sp) = r6;
0x000077e8 bl 0x85e4 | fcn_000085e4 (r0);
0x000077ec ldrb r3, [r4, 1]! | r3 = *((r4 += 1));
0x000077f0 cmp r3, 0 |
| if (r3 != 0) {
0x000077f2 bne 0x77dc | goto label_1;
| }
| label_5:
0x000077f4 movs r0, 0 | r0 = 0;
0x000077f6 str.w fp, [sp, 8] | __asm ("str.w fp, [var_8h]");
| label_2:
0x000077fa ldr.w fp, [sl] | fp = *(sl);
0x000077fe mov r5, r0 | r5 = r0;
0x00007800 ldr r3, [sp, 8] | r3 = var_8h;
0x00007802 mov sb, r0 | sb = r0;
0x00007804 ldrb.w r4, [fp] | r4 = *(fp);
0x00007808 adds r7, r3, r0 | r7 = r3 + r0;
| if (r4 == 0) {
0x0000780a cbz r4, 0x7872 | goto label_6;
| }
0x0000780c adds r2, r3, r0 | r2 = r3 + r0;
0x0000780e mov r8, fp | r8 = fp;
0x00007810 movs r6, 0 | r6 = 0;
0x00007812 b 0x781e |
| while (r3 == r4) {
0x00007814 ldrb r4, [r8, 1]! | r4 = *((r8 += 1));
0x00007818 adds r6, 1 | r6++;
0x0000781a adds r5, 1 | r5++;
| if (r4 == 0) {
0x0000781c cbz r4, 0x7886 | goto label_7;
| }
0x0000781e mov r7, r2 | r7 = r2;
0x00007820 ldrb r3, [r2], 1 | r3 = *(r2);
| r2++;
0x00007824 mov sb, r5 | sb = r5;
0x00007826 cmp r3, r4 |
0x00007828 beq 0x7814 |
| }
0x0000782a movs r1, 1 | r1 = 1;
0x0000782c mov.w r0, 0x20c | r0 = 0x20c;
0x00007830 blx 0x18d8 | calloc (r0, r1);
0x00007834 mov.w r2, 0x20c | r2 = 0x20c;
0x00007838 mov r1, sl | r1 = sl;
0x0000783a str r0, [sp, 0xc] | var_ch = r0;
0x0000783c blx 0x19c8 | mmap64 ()
0x00007840 adds r0, r6, 1 | r0 = r6 + 1;
0x00007842 add r0, fp | r0 += fp;
0x00007844 blx 0x1a10 | stack_chk_fail ();
0x00007848 ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000784a mov.w r2, 0x20c | r2 = 0x20c;
0x0000784e movs r1, 0 | r1 = 0;
0x00007850 str r0, [r6] | *(r6) = r0;
0x00007852 mov r0, sl | r0 = sl;
0x00007854 blx 0x1c2c | strtoull (r0, r1, r2);
0x00007858 add.w r2, sl, r4, lsl 2 | r2 = sl + (r4 << 2);
0x0000785c mov.w r3, 0 | r3 = 0;
0x00007860 strb.w r3, [r8] | *(r8) = r3;
0x00007864 str.w fp, [sl] | __asm ("str.w fp, [sl]");
0x00007868 strb.w r4, [sl, 8] | *((sl + 8)) = r4;
0x0000786c strb.w r4, [sl, 9] | *((sl + 9)) = r4;
0x00007870 str r6, [r2, 0xc] | *((r2 + 0xc)) = r6;
| label_6:
0x00007872 ldrb r3, [r7] | r3 = *(r7);
| if (r3 == 0) {
0x00007874 cbz r3, 0x7894 | goto label_8;
| }
| do {
0x00007876 add.w r4, sl, r3, lsl 2 | r4 = sl + (r3 << 2);
0x0000787a ldr r2, [r4, 0xc] | r2 = *((r4 + 0xc));
| if (r2 == 0) {
0x0000787c cbz r2, 0x78a6 | goto label_9;
| }
0x0000787e add.w r0, sb, 1 | r0 = sb + 1;
0x00007882 mov sl, r2 | sl = r2;
0x00007884 b 0x77fa | goto label_2;
| label_7:
0x00007886 ldr r3, [sp, 8] | r3 = var_8h;
0x00007888 adds r5, r0, r6 | r5 = r0 + r6;
0x0000788a mov sb, r5 | sb = r5;
0x0000788c adds r7, r3, r5 | r7 = r3 + r5;
0x0000788e ldrb r3, [r7] | r3 = *(r7);
0x00007890 cmp r3, 0 |
0x00007892 bne 0x7876 |
| } while (r3 != 0);
| label_8:
0x00007894 ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [var_10h]");
0x00007898 add.w r0, sl, 4 | r0 = sl + 4;
0x0000789c add sp, 0x1c |
0x0000789e pop.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x000078a2 b.w 0x4a18 | void (*0x4a18)() ();
| label_9:
0x000078a6 ldrb.w r2, [sl, 8] | r2 = *((sl + 8));
0x000078aa movs r1, 1 | r1 = 1;
0x000078ac ldr.w fp, [sp, 8] | fp = var_8h;
0x000078b0 adds r5, 1 | r5++;
0x000078b2 mov.w r0, 0x20c | r0 = 0x20c;
0x000078b6 cmp r2, r3 |
0x000078b8 ldrb.w r2, [sl, 9] | r2 = *((sl + 9));
0x000078bc it hi |
| if (r2 <= r3) {
0x000078be strbhi r3, [sl, 8] | *((sl + 8)) = r3;
| }
0x000078c2 cmp r2, r3 |
0x000078c4 it lo |
| if (r2 >= r3) {
0x000078c6 strblo r3, [sl, 9] | *((sl + 9)) = r3;
| }
0x000078ca blx 0x18d8 | r0 = calloc (r0, r1);
0x000078ce mov r6, r0 | r6 = r0;
0x000078d0 str r0, [r4, 0xc] | *((r4 + 0xc)) = r0;
0x000078d2 add.w r0, fp, r5 | r0 = fp + r5;
0x000078d6 blx 0x1a10 | stack_chk_fail ();
0x000078da movs r3, 0x80 | r3 = 0x80;
0x000078dc str r0, [r6] | *(r6) = r0;
0x000078de ldrd r1, r2, [sp, 0x10] | __asm ("ldrd r1, r2, [var_10h]");
0x000078e2 adds r0, r6, 4 | r0 = r6 + 4;
0x000078e4 strb r3, [r6, 8] | *((r6 + 8)) = r3;
0x000078e6 bl 0x4a18 | fcn_00004a18 (r0, r1, r2);
0x000078ea movs r0, 0 | r0 = 0;
0x000078ec add sp, 0x1c |
0x000078ee pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x80d8 */
| #include <stdint.h>
|
; (fcn) fcn.000080d8 () | void fcn_000080d8 (int16_t arg_28h, int16_t arg_2ch, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| r0 = arg1;
| r1 = arg2;
0x000080d8 ldr r2, [pc, 0xa0] |
0x000080da ldr r3, [pc, 0xa4] | r3 = *(0x8182);
0x000080dc push.w {r4, r5, r6, r7, r8, sb, lr} |
0x000080e0 movs r4, 0 | r4 = 0;
0x000080e2 add r2, pc | r2 = 0x10262;
0x000080e4 ldr r7, [r0, 0x1c] | r7 = *(arg_28hx1c);
0x000080e6 sub sp, 0xc |
0x000080e8 mov sb, r1 | sb = r1;
0x000080ea ldr r3, [r2, r3] |
0x000080ec ldr r3, [r3] | r3 = *(0x10262);
0x000080ee str r3, [sp, 4] | var_4h = r3;
0x000080f0 mov.w r3, 0 | r3 = 0;
0x000080f4 str r4, [sp] | *(sp) = r4;
| if (r7 == 0) {
0x000080f6 cbz r7, 0x8164 | goto label_5;
| }
0x000080f8 ldr r6, [r0, 0x18] | r6 = *(arg_28hx18);
0x000080fa mov r8, r0 | r8 = r0;
0x000080fc mov r5, r4 | r5 = r4;
0x000080fe subs r6, 4 | r6 -= 4;
| do {
0x00008100 ldr r0, [r6, 4]! | r0 = *((r6 += 4));
0x00008104 adds r5, 1 | r5++;
0x00008106 bl 0x7ea0 | fcn_00007ea0 (r0, r1, r2);
0x0000810a cmp r5, r7 |
0x0000810c add.w r3, r0, 1 | r3 = r0 + 1;
0x00008110 add r4, r3 | r4 += r3;
0x00008112 bne 0x8100 |
| } while (r5 != r7);
0x00008114 str.w r4, [sb] | __asm ("str.w r4, [sb]");
| if (r4 == 0) {
0x00008118 cbz r4, 0x8174 | goto label_6;
| }
0x0000811a lsls r0, r4, 2 | r0 = r4 << 2;
0x0000811c blx 0x1b0c | r0 = strerror (r0);
0x00008120 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00008122 cbz r0, 0x8174 | goto label_6;
| }
0x00008124 mov r3, sp | r3 = sp;
0x00008126 mov r2, r4 | r2 = r4;
0x00008128 mov r0, r8 | r0 = r8;
0x0000812a mov r1, r5 | r1 = r5;
0x0000812c bl 0x461c | r0 = fcn_0000461c (r0, r1, r2, r3);
0x00008130 cmp r0, 0 |
| if (r0 < 0) {
0x00008132 blt 0x816a | goto label_7;
| }
0x00008134 ldr r3, [pc, 0x4c] |
0x00008136 movs r2, 4 | r2 = 4;
0x00008138 ldr r1, [sp] | r1 = *(sp);
0x0000813a mov r0, r5 | r0 = r5;
0x0000813c add r3, pc | r3 = 0x102c4;
0x0000813e blx 0x1d5c | fcn_00001d5c ();
0x00008142 ldr r3, [sp] | r3 = *(sp);
0x00008144 str.w r3, [sb] | __asm ("str.w r3, [sb]");
| do {
| label_0:
0x00008148 ldr r2, [pc, 0x3c] |
0x0000814a ldr r3, [pc, 0x34] | r3 = *(0x8182);
0x0000814c add r2, pc | r2 = 0x102d8;
0x0000814e ldr r3, [r2, r3] | r3 = *(0x102d8);
0x00008150 ldr r2, [r3] | r2 = *(0x102d8);
0x00008152 ldr r3, [sp, 4] | r3 = var_4h;
0x00008154 eors r2, r3 | r2 ^= r3;
0x00008156 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000815a bne 0x8178 | goto label_8;
| }
0x0000815c mov r0, r5 | r0 = r5;
0x0000815e add sp, 0xc |
0x00008160 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_5:
0x00008164 mov r5, r7 | r5 = r7;
0x00008166 str r7, [r1] | *(r1) = r7;
0x00008168 b 0x8148 |
| } while (1);
| label_7:
0x0000816a mov r0, r5 | r0 = r5;
0x0000816c movs r5, 0 | r5 = 0;
0x0000816e blx 0x19a0 | fcn_000019a0 ();
0x00008172 b 0x8148 | goto label_0;
| label_6:
0x00008174 movs r5, 0 | r5 = 0;
0x00008176 b 0x8148 | goto label_0;
| label_8:
0x00008178 blx 0x1a1c | stat64 ();
| if (r5 > 0) {
0x0000817c ble 0x81ec |
0x0000817e movs r1, r0 | r1 = r0;
0x00008180 lsls r4, r7, 6 | r4 = r7 << 6;
0x00008182 movs r0, r0 |
0x00008184 stm r4!, {r0, r4, r6, r7} | *(r4!) = r0;
| *((r4! + 4)) = r4;
| *((r4! + 8)) = r6;
| *((r4! + 12)) = r7;
0x00008186 invalid |
| }
0x000081ec str r3, [sp, 0x24] | var_24h = r3;
0x000081ee ldr r3, [pc, 0x1a4] |
0x000081f0 add r3, pc | r3 = 0x1058a;
0x000081f2 str r3, [sp, 0x18] | var_18h = r3;
| do {
0x000081f4 ldr r3, [sp, 8] | r3 = var_8h;
0x000081f6 ldr r2, [sp, 4] | r2 = var_4h;
0x000081f8 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x000081fa ldr.w r8, [r3, r2, lsl 2] | offset_0 = r2 << 2;
| r8 = *((r3 + offset_0));
0x000081fe ldr.w sb, [r8, 8] | sb = *((r8 + 8));
0x00008202 cmp.w sb, 0 |
| if (sb == 0) {
0x00008206 bne 0x820c |
0x00008208 ldr.w sb, [r8, 4] | sb = *((r8 + 4));
| }
0x0000820c ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000820e mov r0, r8 | r0 = r8;
0x00008210 bl 0x80d8 | fcn_000080d8 (r0, r1, r2, r3);
0x00008214 str r0, [sp, 0xc] | var_ch = r0;
0x00008216 cmp r0, 0 |
| if (r0 != 0) {
0x00008218 bne 0x82c2 | goto label_9;
| }
0x0000821a ldr r3, [sp, 0x28] | r3 = *(arg_28h);
0x0000821c cmp r3, 0 |
| if (r3 != 0) {
0x0000821e bne.w 0x834a | goto label_10;
| }
0x00008222 mov r0, sb | r0 = sb;
0x00008224 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00008228 add.w sl, r0, 1 | sl = r0 + 1;
| label_1:
0x0000822c add.w r0, sl, 1 | r0 = sl + 1;
0x00008230 blx 0x1b0c | r0 = strerror (r0);
0x00008234 mov r5, r0 | r5 = r0;
0x00008236 cmp r0, 0 |
| if (r0 == 0) {
0x00008238 beq.w 0x8366 | goto label_11;
| }
0x0000823c mov r0, sb | r0 = sb;
0x0000823e blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00008242 mov r4, r0 | r4 = r0;
0x00008244 mov r1, sb | r1 = sb;
0x00008246 mov r2, r0 | r2 = r0;
0x00008248 add.w sb, r4, 1 | sb = r4 + 1;
0x0000824c mov r0, r5 | r0 = r5;
0x0000824e blx 0x19c8 | mmap64 ()
0x00008252 movs r3, 0x3a | r3 = 0x3a;
0x00008254 strb r3, [r5, r4] | *((r5 + r4)) = r3;
| label_2:
0x00008256 movs r3, 0 | r3 = 0;
0x00008258 ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000825a strb.w r3, [r5, sb] | *((r5 + sb)) = r3;
0x0000825e add.w r1, r8, 0x44 | r1 = r8 + 0x44;
0x00008262 ldrh.w r3, [r8, 0x38] | r3 = *((r8 + 0x38));
0x00008266 mov r2, r5 | r2 = r5;
0x00008268 bl 0x7788 | r0 = fcn_00007788 (r0, r1, r2, r3);
| if (r0 != 0) {
0x0000826c cbz r0, 0x827c |
0x0000826e ldr r3, [sp, 8] | r3 = var_8h;
0x00008270 ldr r3, [r3] | r3 = *(r3);
0x00008272 add.w r3, r3, 0x1000 | r3 += 0x1000;
0x00008276 ldrb r3, [r3, 0xb] | r3 = *((r3 + 0xb));
0x00008278 cmp r3, 0 |
| if (r3 != 0) {
0x0000827a bne 0x8356 | goto label_12;
| }
| }
| label_4:
0x0000827c mov r0, r5 | r0 = r5;
0x0000827e blx 0x19a0 | fcn_000019a0 ();
0x00008282 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00008284 blx 0x19a0 | fcn_000019a0 ();
| label_3:
0x00008288 ldr r3, [sp, 8] | r3 = var_8h;
0x0000828a ldr r2, [sp, 4] | r2 = var_4h;
0x0000828c ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0000828e adds r2, 1 | r2++;
0x00008290 str r2, [sp, 4] | var_4h = r2;
0x00008292 cmp r2, r3 |
0x00008294 blo 0x81f4 |
| } while (r2 <= r3);
0x00008296 ldr r4, [sp, 0x14] | r4 = var_14h;
0x00008298 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000829a mov r0, r4 | r0 = r4;
0x0000829c bl 0x50b8 | fcn_000050b8 (r0, r1);
0x000082a0 mov r0, r4 | r0 = r4;
0x000082a2 bl 0x4694 | fcn_00004694 (r0);
0x000082a6 ldr r2, [pc, 0xf0] |
0x000082a8 ldr r3, [pc, 0xd0] | r3 = *(0x837c);
0x000082aa add r2, pc | r2 = 0x10648;
0x000082ac ldr r3, [r2, r3] | r3 = *(0x10648);
0x000082ae ldr r2, [r3] | r2 = *(0x10648);
0x000082b0 ldr r3, [sp, 0x2c] | r3 = *(arg_2ch);
0x000082b2 eors r2, r3 | r2 ^= r3;
0x000082b4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000082b8 bne 0x8362 | goto label_13;
| }
0x000082ba movs r0, 0 | r0 = 0;
0x000082bc add sp, 0x34 |
0x000082be pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_9:
0x000082c2 mov r0, sb | r0 = sb;
0x000082c4 blx 0x1bb0 | fcn_00001bb0 ();
0x000082c8 ldr r6, [sp, 0x28] | r6 = *(arg_28h);
0x000082ca adds r3, r0, 1 | r3 = r0 + 1;
0x000082cc mov r7, r0 | r7 = r0;
0x000082ce mov fp, r3 |
0x000082d0 mov sl, r3 | sl = r3;
0x000082d2 cmp r6, 0 |
| if (r6 == 0) {
0x000082d4 beq 0x822c | goto label_1;
| }
0x000082d6 ldr r5, [sp, 0xc] | r5 = var_ch;
0x000082d8 mov r4, r5 | r4 = r5;
0x000082da add.w r6, r5, r6, lsl 2 | r6 = r5 + (r6 << 2);
| do {
0x000082de ldr r3, [r5], 4 | r3 = *(r5);
| r5 += 4;
0x000082e2 ldr r0, [r3, 8] | r0 = *((r3 + 8));
| if (r0 == 0) {
0x000082e4 cbnz r0, 0x82e8 |
0x000082e6 ldr r0, [r3, 4] | r0 = *((r3 + 4));
| }
0x000082e8 blx 0x1bb0 | fcn_00001bb0 ();
0x000082ec cmp r6, r5 |
0x000082ee add.w r0, r0, 1 | r0++;
0x000082f2 add sl, r0 | sl += r0;
0x000082f4 bne 0x82de |
| } while (r6 != r5);
0x000082f6 add.w r0, sl, 1 | r0 = sl + 1;
0x000082fa blx 0x1b0c | r0 = strerror (r0);
0x000082fe mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00008300 cbz r0, 0x8366 | goto label_11;
| }
0x00008302 mov r1, sb | r1 = sb;
0x00008304 mov r2, r7 | r2 = r7;
0x00008306 mov sb, fp | sb = fp;
0x00008308 mov.w sl, 0x20 | sl = 0x20;
0x0000830c blx 0x19c8 | mmap64 ()
0x00008310 movs r3, 0x3a | r3 = 0x3a;
0x00008312 strb r3, [r5, r7] | *((r5 + r7)) = r3;
| do {
0x00008314 ldr r3, [r4], 4 | r3 = *(r4);
| r4 += 4;
0x00008318 strb.w sl, [r5, sb] | *((r5 + sb)) = sl;
0x0000831c add.w sb, sb, 1 | sb++;
0x00008320 ldr.w fp, [r3, 8] | fp = *((r3 + 8));
0x00008324 cmp.w fp, 0 |
| if (fp == 0) {
0x00008328 bne 0x832e |
0x0000832a ldr.w fp, [r3, 4] | fp = *((r3 + 4));
| }
0x0000832e mov r0, fp | r0 = fp;
0x00008330 blx 0x1bb0 | fcn_00001bb0 ();
0x00008334 mov r1, fp | r1 = fp;
0x00008336 mov r7, r0 | r7 = r0;
0x00008338 mov r2, r0 | r2 = r0;
0x0000833a add.w r0, r5, sb | r0 = r5 + sb;
0x0000833e blx 0x19c8 | mmap64 ()
0x00008342 cmp r6, r4 |
0x00008344 add sb, r7 | sb += r7;
0x00008346 bne 0x8314 |
| } while (r6 != r4);
0x00008348 b 0x8256 | goto label_2;
| label_10:
0x0000834a ldr r1, [sp, 0x18] | r1 = var_18h;
0x0000834c mov r2, sb | r2 = sb;
0x0000834e movs r0, 3 | r0 = 3;
0x00008350 bl 0x85e4 | fcn_000085e4 (r0);
0x00008354 b 0x8288 | goto label_3;
| label_12:
0x00008356 ldr r1, [sp, 0x20] | r1 = var_20h;
0x00008358 mov r2, r5 | r2 = r5;
0x0000835a movs r0, 4 | r0 = 4;
0x0000835c bl 0x85e4 | fcn_000085e4 (r0);
0x00008360 b 0x827c | goto label_4;
| label_13:
0x00008362 blx 0x1a1c | stat64 ();
| label_11:
0x00008366 ldr r0, [sp, 0xc] | r0 = var_ch;
0x00008368 blx 0x19a0 | fcn_000019a0 ();
0x0000836c ldr r1, [sp, 0x24] | r1 = var_24h;
0x0000836e movs r0, 3 | r0 = 3;
0x00008370 bl 0x85e4 | fcn_000085e4 (r0);
0x00008374 b 0x8288 | goto label_3;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x925c */
| #include <stdint.h>
|
; (fcn) fcn.0000925c () | void fcn_0000925c (int16_t arg1, uint32_t errnum) {
| r0 = arg1;
| r1 = errnum;
0x0000925c push {r3, r4, r5, r6, r7, lr} |
0x0000925e ldr r7, [r0, 4] | r7 = *((r0 + 4));
0x00009260 cmp r7, r1 |
0x00009262 it hs |
| if (r7 < r1) {
0x00009264 movhs r0, 0 | r0 = 0;
| }
| if (r7 >= r1) {
0x00009266 bhs 0x928c | goto label_0;
| }
0x00009268 ldrb r3, [r0, 8] | r3 = *((r0 + 8));
0x0000926a mov r4, r0 | r4 = r0;
0x0000926c mov r5, r1 | r5 = r1;
| if (r3 != 0) {
0x0000926e cbnz r3, 0x928e | goto label_1;
| }
0x00009270 mov r0, r1 | r0 = r1;
0x00009272 blx 0x1b0c | strerror (r0);
0x00009274 mcrr p6, 0, r4, ip, c6 | __asm ("mcrr p6, 0, r4, ip, c6");
| if (r0 == 0) {
0x00009278 cbz r0, 0x929a | goto label_2;
| }
0x0000927a ldr r1, [r4] | r1 = *(r4);
0x0000927c mov r2, r7 | r2 = r7;
0x0000927e blx 0x19c8 | mmap64 ()
| do {
0x00009282 movs r0, 0 | r0 = 0;
0x00009284 movs r3, 1 | r3 = 1;
0x00009286 strd r6, r5, [r4] | __asm ("strd r6, r5, [r4]");
0x0000928a strb r3, [r4, 8] | *((r4 + 8)) = r3;
| label_0:
0x0000928c pop {r3, r4, r5, r6, r7, pc} |
| label_1:
0x0000928e ldr r0, [r0] | r0 = *(r0);
0x00009290 blx 0x1a34 | r0 = regexec ();
0x00009294 mov r6, r0 | r6 = r0;
0x00009296 cmp r0, 0 |
0x00009298 bne 0x9282 |
| } while (r0 != 0);
| label_2:
0x0000929a mvn r0, 0xb | r0 = ~0xb;
0x0000929e pop {r3, r4, r5, r6, r7, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x960c */
| #include <stdint.h>
|
; (fcn) fcn.0000960c () | void fcn_0000960c (int16_t arg1) {
| r0 = arg1;
0x0000960c push.w {r4, r5, r6, r7, r8, lr} |
0x00009610 ldrb r3, [r0] | r3 = *(r0);
0x00009612 cmp r3, 0x2f |
| if (r3 != 0x2f) {
0x00009614 beq 0x9662 |
0x00009616 mov r7, r0 | r7 = r0;
0x00009618 blx 0x1918 | r0 = fcn_00001918 ();
0x0000961c mov r4, r0 | r4 = r0;
0x0000961e mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x00009620 cbz r0, 0x9656 |
0x00009622 mov r0, r7 | r0 = r7;
0x00009624 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00009628 mov r8, r0 | r8 = r0;
0x0000962a mov r0, r4 | r0 = r4;
0x0000962c blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00009630 add.w r1, r8, r0 | r1 = r8 + r0;
0x00009634 mov r6, r0 | r6 = r0;
0x00009636 adds r1, 2 | r1 += 2;
0x00009638 mov r0, r4 | r0 = r4;
0x0000963a blx 0x1a34 | r0 = regexec ();
0x0000963e mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x00009640 cbz r0, 0x9656 | goto label_0;
| }
0x00009642 movs r3, 0x2f | r3 = 0x2f;
0x00009644 movs r4, 0 | r4 = 0;
0x00009646 strb r3, [r0, r6] | *((r0 + r6)) = r3;
0x00009648 adds r0, r6, 1 | r0 = r6 + 1;
0x0000964a add.w r2, r8, 1 | r2 = r8 + 1;
0x0000964e mov r1, r7 | r1 = r7;
0x00009650 add r0, r5 | r0 += r5;
0x00009652 blx 0x19c8 | mmap64 ()
| }
| label_0:
0x00009656 mov r0, r4 | r0 = r4;
0x00009658 blx 0x19a0 | fcn_000019a0 ();
0x0000965c mov r0, r5 | r0 = r5;
0x0000965e pop.w {r4, r5, r6, r7, r8, pc} |
| }
0x00009662 movs r4, 0 | r4 = 0;
0x00009664 blx 0x1a10 | r0 = stack_chk_fail ();
0x00009668 mov r5, r0 | r5 = r0;
0x0000966a mov r0, r4 | r0 = r4;
0x0000966c blx 0x19a0 | fcn_000019a0 ();
0x00009670 mov r0, r5 | r0 = r5;
0x00009672 pop.w {r4, r5, r6, r7, r8, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x97b0 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.000097b0 () | void fcn_000097b0 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| r0 = arg1;
| r1 = arg2;
| if (? >= ?) {
| label_7:
0x00009678 ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x0000967c sub sp, 0x70 |
0x0000967e ldr r6, [pc, 0x124] |
0x00009680 add r7, sp, 0 | r7 += var_0h;
0x00009682 mov r5, r1 | r5 = r1;
0x00009684 ldr r3, [pc, 0x120] | r3 = *(0x97a8);
0x00009686 mov r4, r0 | r4 = r0;
0x00009688 add r6, pc | r6 = 0x12e32;
0x0000968a mov sb, r2 | sb = r2;
0x0000968c mov.w r8, 0 | r8 = 0;
0x00009690 ldr r3, [r6, r3] |
0x00009692 mov r6, r7 | r6 = r7;
0x00009694 ldr r3, [r3] | r3 = *(0x12e32);
0x00009696 str r3, [r7, 0x6c] | *((r7 + 0x6c)) = r3;
0x00009698 mov.w r3, 0 | r3 = 0;
0x0000969c blx 0x1c90 | r0 = fcn_00001c90 ();
0x000096a0 add.w r3, r0, 8 | r3 = r0 + 8;
0x000096a4 mov r2, r0 | r2 = r0;
0x000096a6 bic r3, r3, 7 | r3 = BIT_MASK (r3, 7);
0x000096aa mov r1, r4 | r1 = r4;
0x000096ac sub.w sp, sp, r3 |
0x000096b0 mov r3, sp | r3 = sp;
0x000096b2 lsrs r3, r3, 3 | r3 >>= 3;
0x000096b4 strb.w r8, [r0, r3, lsl 3] | offset_0 = r3 << 3;
| *((r0 + offset_0)) = r8;
0x000096b8 mov r0, sp | r0 = sp;
0x000096ba blx 0x19c8 | r0 = mmap64 ()
0x000096be add r5, r0 | r5 += r0;
0x000096c0 mov sl, r0 | sl = r0;
0x000096c2 mov r4, r5 | r4 = r5;
| do {
| label_0:
0x000096c4 mov r1, r6 | r1 = r6;
0x000096c6 mov r0, sl | r0 = sl;
0x000096c8 blx 0x1a28 | r0 = realloc (r0, r1);
0x000096cc cmp r0, 0 |
| if (r0 >= 0) {
0x000096ce bge 0x9720 | goto label_8;
| }
| label_3:
0x000096d0 blx 0x1be4 | r0 = isoc99_sscanf ();
0x000096d4 ldr r3, [r0] | r3 = *(r0);
0x000096d6 rsbs r3, r3, 0 | r3 -= ;
0x000096d8 cmp r3, 0 |
| if (r3 > 0) {
0x000096da bgt 0x9734 | goto label_9;
| }
| if (r3 == 0) {
| label_4:
0x000096dc beq 0x9794 | goto label_10;
| }
0x000096de cmp r4, sl |
| if (r4 == sl) {
0x000096e0 beq 0x979a | goto label_11;
| }
0x000096e2 strb.w r8, [r4] | *(r4) = r8;
0x000096e6 bls 0x96c4 |
| } while (r4 < sl);
0x000096e8 add.w ip, r4, -1 |
0x000096ec b 0x96f0 | goto label_12;
| label_1:
0x000096ee mov ip, r3 |
| label_12:
0x000096f0 cmp ip, sl |
0x000096f2 mov r4, ip | r4 = ip;
| if (ip == sl) {
0x000096f4 beq 0x96c4 | goto label_0;
| }
0x000096f6 mov r3, ip | r3 = ip;
0x000096f8 ldrb r2, [r3], -1 | r2 = *(r3);
| r3 += -1;
0x000096fc cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x000096fe bne 0x96ee | goto label_1;
| }
0x00009700 b 0x9704 | goto label_13;
| label_2:
0x00009702 subs r3, 1 | r3--;
| label_13:
0x00009704 ldrb r2, [r3] | r2 = *(r3);
0x00009706 mov r4, ip | r4 = ip;
0x00009708 mov ip, r3 |
0x0000970a cmp r2, 0x2f |
| if (r2 != 0x2f) {
0x0000970c bne 0x96c4 | goto label_0;
| }
0x0000970e cmp sl, r3 |
| if (sl <= r3) {
0x00009710 blo 0x9702 | goto label_2;
| }
0x00009712 mov r1, r6 | r1 = r6;
0x00009714 mov r0, sl | r0 = sl;
0x00009716 mov r4, r3 | r4 = r3;
0x00009718 blx 0x1a28 | r0 = realloc (r0, r1);
0x0000971c cmp r0, 0 |
| if (r0 < 0) {
0x0000971e blt 0x96d0 | goto label_3;
| }
| label_8:
0x00009720 ldr r3, [r7, 0x10] | r3 = *((r7 + 0x10));
0x00009722 and r3, r3, 0xf000 | r3 &= 0xf000;
0x00009726 sub.w r3, r3, 0x4000 | r3 -= 0x4000;
0x0000972a clz r3, r3 | r3 &= r3;
0x0000972e lsrs r3, r3, 5 | r3 >>= 5;
0x00009730 cmp r3, 0 |
| if (r3 <= 0) {
0x00009732 ble 0x96dc | goto label_4;
| }
| label_9:
0x00009734 mov r0, r4 | r0 = r4;
0x00009736 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000973a adds r6, r4, r0 | r6 = r4 + r0;
0x0000973c cmp r5, r6 |
0x0000973e itt ne |
| if (r5 == r6) {
0x00009740 movne r3, 0x2f | r3 = 0x2f;
| }
| if (r5 == r6) {
0x00009742 strbne r3, [r4, r0] | *((r4 + r0)) = r3;
| }
| if (r5 == r6) {
0x00009744 beq 0x9776 | goto label_14;
| }
| label_6:
0x00009746 cmp r6, r5 |
| if (r6 >= r5) {
0x00009748 bhs 0x9776 | goto label_14;
| }
0x0000974a movs r4, 0x2f | r4 = 0x2f;
0x0000974c b 0x975c |
| while (r0 >= 0) {
| label_5:
0x0000974e mov r0, r6 | r0 = r6;
0x00009750 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00009754 add r6, r0 | r6 += r0;
0x00009756 cmp r5, r6 |
0x00009758 strb r4, [r6] | *(r6) = r4;
| if (r5 < r6) {
0x0000975a bls 0x9776 | goto label_14;
| }
0x0000975c mov r1, sb | r1 = sb;
0x0000975e mov r0, sl | r0 = sl;
0x00009760 blx 0x1c14 | r0 = memset (r0, r1, r2);
0x00009764 cmp r0, 0 |
0x00009766 bge 0x974e |
| }
0x00009768 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000976c ldr r0, [r0] | r0 = *(r0);
0x0000976e cmp r0, 0x11 |
| if (r0 == 0x11) {
0x00009770 beq 0x974e | goto label_5;
| }
0x00009772 rsbs r0, r0, 0 | r0 -= ;
0x00009774 b 0x9778 | goto label_15;
| label_14:
0x00009776 movs r0, 0 | r0 = 0;
| do {
| label_15:
0x00009778 ldr r2, [pc, 0x30] |
0x0000977a ldr r3, [pc, 0x2c] | r3 = *(0x97aa);
0x0000977c add r2, pc | r2 = "alias symbol:%s %s\n";
0x0000977e ldr r3, [r2, r3] | r3 = "alias symbol:%s %s\n";
0x00009780 ldr r2, [r3] | r2 = "alias symbol:%s %s\n";
0x00009782 ldr r3, [r7, 0x6c] | r3 = *((r7 + 0x6c));
0x00009784 eors r2, r3 | r2 ^= r3;
0x00009786 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000978a bne 0x979e | goto label_16;
| }
0x0000978c adds r7, 0x70 | r7 += 0x70;
0x0000978e mov sp, r7 |
0x00009790 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_10:
0x00009794 mvn r0, 0x13 | r0 = ~0x13;
0x00009798 b 0x9778 |
| } while (1);
| label_11:
0x0000979a mov r6, sl | r6 = sl;
0x0000979c b 0x9746 | goto label_6;
| label_16:
0x0000979e blx 0x1a1c | stat64 ();
0x000097a2 nop |
0x000097a4 stm r7!, {r4, r7} | *(r7!) = r4;
| *((r7! + 4)) = r7;
0x000097a6 movs r1, r0 | r1 = r0;
0x000097a8 lsls r4, r7, 6 | r4 = r7 << 6;
0x000097aa movs r0, r0 |
0x000097ac stm r6!, {r2, r3, r4, r7} | *(r6!) = r2;
| *((r6! + 4)) = r3;
| *((r6! + 8)) = r4;
| *((r6! + 12)) = r7;
0x000097ae movs r1, r0 | r1 = r0;
0x000097b0 push {r3, r4, r5, lr} |
0x000097b2 mov r5, r1 | r5 = r1;
0x000097b4 movs r1, 0x2f | r1 = 0x2f;
0x000097b6 mov r4, r0 | r4 = r0;
0x000097b8 blx 0x1cd0 | r0 = fcn_00001cd0 ();
| if (r0 != 0) {
0x000097bc cbz r0, 0x97cc |
0x000097be subs r1, r0, r4 | r1 = r0 - r4;
0x000097c0 mov r2, r5 | r2 = r5;
0x000097c2 mov r0, r4 | r0 = r4;
0x000097c4 pop.w {r3, r4, r5, lr} |
0x000097c8 b.w 0x9678 | goto label_7;
| }
0x000097cc pop {r3, r4, r5, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa610 */
| #include <stdint.h>
|
; (fcn) fcn.0000a610 () | void fcn_0000a610 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a610 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000a614 mov r7, r0 | r7 = r0;
0x0000a616 sub sp, 8 |
0x0000a618 mov r8, r1 | r8 = r1;
0x0000a61a mov r5, r2 | r5 = r2;
0x0000a61c mov.w sb, 0 | sb = 0;
| if (r2 == 0) {
0x0000a620 cbz r2, 0xa65c | goto label_5;
| }
| label_0:
0x0000a622 ldr r6, [r7] | r6 = *(r7);
0x0000a624 mov.w r3, -1 | r3 = -1;
0x0000a628 mov r4, r6 | r4 = r6;
| do {
0x0000a62a mov r0, r5 | r0 = r5;
| if (r4 == 0) {
0x0000a62c cbz r4, 0xa696 | goto label_6;
| }
0x0000a62e ldr r1, [r4, 8] | r1 = *((r4 + 8));
0x0000a630 adds r1, 5 | r1 += 5;
0x0000a632 blx 0x1924 | r0 = fcn_00001924 ();
0x0000a636 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 <= r0) {
0x0000a638 ble 0xa696 | goto label_6;
| }
0x0000a63a ldr r4, [r4] | r4 = *(r4);
0x0000a63c cmp r4, r6 |
0x0000a63e bne 0xa62a |
| } while (r4 != r6);
0x0000a640 mov r0, r5 | r0 = r5;
0x0000a642 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a646 mov r4, r0 | r4 = r0;
0x0000a648 adds r0, 9 | r0 += 9;
0x0000a64a blx 0x1b0c | r0 = strerror (r0);
0x0000a64e mov sl, r0 | sl = r0;
| if (r0 != 0) {
0x0000a650 cbnz r0, 0xa66a | goto label_7;
| }
| label_1:
0x0000a652 mvn r0, 0xb | r0 = ~0xb;
| do {
0x0000a656 add sp, 8 |
0x0000a658 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0000a65a strh r0, [r6, 0x3e] | *((r6 + 0x3e)) = r0;
| label_5:
0x0000a65c mov r0, r1 | r0 = r1;
0x0000a65e mov.w sb, 1 | sb = 1;
0x0000a662 blx 0x1948 | r0 = fcn_00001948 ();
0x0000a666 mov r5, r0 | r5 = r0;
0x0000a668 b 0xa622 | goto label_0;
| label_7:
0x0000a66a adds r2, r4, 1 | r2 = r4 + 1;
0x0000a66c mov r1, r5 | r1 = r5;
0x0000a66e add.w r0, sl, 5 | r0 = sl + 5;
0x0000a672 blx 0x19c8 | mmap64 ()
0x0000a676 str.w r8, [sl] | __asm ("str.w r8, [sl]");
0x0000a67a strb.w sb, [sl, 4] | *((sl + 4)) = sb;
| label_2:
0x0000a67e mov r1, sl | r1 = sl;
0x0000a680 mov r0, r6 | r0 = r6;
0x0000a682 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000a686 mov r3, r0 | r3 = r0;
0x0000a688 cmp r0, 0 |
| if (r0 == 0) {
0x0000a68a beq 0xa6f6 | goto label_8;
| }
| label_3:
0x0000a68c movs r0, 0 | r0 = 0;
0x0000a68e str r3, [r7] | *(r7) = r3;
0x0000a690 add sp, 8 |
0x0000a692 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x0000a696 mvn r0, 0x10 | r0 = ~0x10;
0x0000a69a cmp r3, 0 |
0x0000a69c beq 0xa656 |
| } while (r3 == 0);
0x0000a69e mov r0, r5 | r0 = r5;
0x0000a6a0 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a6a4 mov r2, r0 | r2 = r0;
0x0000a6a6 adds r0, 9 | r0 += 9;
0x0000a6a8 str r2, [sp, 4] | var_4h = r2;
0x0000a6aa blx 0x1b0c | strerror (r0);
0x0000a6ae ldr r2, [sp, 4] | r2 = var_4h;
0x0000a6b0 mov sl, r0 | sl = r0;
0x0000a6b2 cmp r0, 0 |
| if (r0 == 0) {
0x0000a6b4 beq 0xa652 | goto label_1;
| }
0x0000a6b6 adds r2, 1 | r2++;
0x0000a6b8 mov r1, r5 | r1 = r5;
0x0000a6ba adds r0, 5 | r0 += 5;
0x0000a6bc blx 0x19c8 | mmap64 ()
0x0000a6c0 str.w r8, [sl] | __asm ("str.w r8, [sl]");
0x0000a6c4 strb.w sb, [sl, 4] | *((sl + 4)) = sb;
0x0000a6c8 cmp r4, 0 |
| if (r4 == 0) {
0x0000a6ca beq 0xa67e | goto label_2;
| }
0x0000a6cc cmp r6, r4 |
0x0000a6ce mov r1, sl | r1 = sl;
0x0000a6d0 mov r0, r4 | r0 = r4;
| if (r6 == r4) {
0x0000a6d2 beq 0xa6ec | goto label_9;
| }
0x0000a6d4 bl 0xa378 | r0 = fcn_0000a378 (r0, r1);
0x0000a6d8 mov r3, r0 | r3 = r0;
| if (r3 == 0) {
0x0000a6da cbz r3, 0xa6f6 | goto label_8;
| }
| label_4:
0x0000a6dc ldr r2, [r7] | r2 = *(r7);
0x0000a6de cmp r4, r2 |
0x0000a6e0 it ne |
| if (r4 != r2) {
0x0000a6e2 movne r0, 0 | r0 = 0;
| goto label_10;
| }
| if (r4 == r2) {
| label_10:
0x0000a6e4 beq 0xa68c | goto label_3;
| }
0x0000a6e6 add sp, 8 |
0x0000a6e8 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_9:
0x0000a6ec bl 0xa3c8 | r0 = fcn_0000a3c8 (r0, r1);
0x0000a6f0 mov r3, r0 | r3 = r0;
0x0000a6f2 cmp r3, 0 |
| if (r3 != 0) {
0x0000a6f4 bne 0xa6dc | goto label_4;
| }
| label_8:
0x0000a6f6 mov r0, sl | r0 = sl;
0x0000a6f8 blx 0x19a0 | fcn_000019a0 ();
0x0000a6fc b 0xa652 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa700 */
| #include <stdint.h>
|
; (fcn) fcn.0000a700 () | void fcn_0000a700 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a700 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000a704 mov r6, r1 | r6 = r1;
0x0000a706 mov r8, r2 | r8 = r2;
0x0000a708 mov sb, r0 | sb = r0;
0x0000a70a blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a70e add.w sl, r0, 1 | sl = r0 + 1;
0x0000a712 mov r4, r0 | r4 = r0;
0x0000a714 mov r0, r6 | r0 = r6;
0x0000a716 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a71a adds r7, r0, 1 | r7 = r0 + 1;
0x0000a71c add.w r0, sl, r7 | r0 = sl + r7;
0x0000a720 adds r0, 4 | r0 += 4;
0x0000a722 blx 0x1b0c | r0 = strerror (r0);
0x0000a726 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000a728 cbz r0, 0xa756 |
0x0000a72a adds r4, 5 | r4 += 5;
0x0000a72c mov r2, sl | r2 = sl;
0x0000a72e add r4, r0 | r4 += r0;
0x0000a730 mov r1, sb | r1 = sb;
0x0000a732 str r4, [r0], 4 | *(r0) = r4;
| r0 += 4;
0x0000a736 blx 0x19c8 | mmap64 ()
0x0000a73a mov r1, r6 | r1 = r6;
0x0000a73c mov r2, r7 | r2 = r7;
0x0000a73e mov r0, r4 | r0 = r4;
0x0000a740 blx 0x19c8 | mmap64 ()
0x0000a744 ldr.w r0, [r8] | r0 = *(r8);
0x0000a748 mov r1, r5 | r1 = r5;
0x0000a74a bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
| if (r0 == 0) {
0x0000a74e cbz r0, 0xa756 | goto label_0;
| }
0x0000a750 movs r5, 0 | r5 = 0;
0x0000a752 str.w r0, [r8] | __asm ("str.w r0, [r8]");
| }
| label_0:
0x0000a756 mov r0, r5 | r0 = r5;
0x0000a758 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000a75c b.w 0x199c | return void (*0x199c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa760 */
| #include <stdint.h>
|
; (fcn) fcn.0000a760 () | void fcn_0000a760 (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a760 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000a764 mov r6, r2 | r6 = r2;
0x0000a766 mov r8, r0 | r8 = r0;
0x0000a768 mov r0, r1 | r0 = r1;
0x0000a76a mov sb, r1 | sb = r1;
0x0000a76c blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a770 add.w sl, r0, 1 | sl = r0 + 1;
0x0000a774 mov r4, r0 | r4 = r0;
0x0000a776 mov r0, r6 | r0 = r6;
0x0000a778 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a77c adds r7, r0, 1 | r7 = r0 + 1;
0x0000a77e add.w r0, sl, r7 | r0 = sl + r7;
0x0000a782 adds r0, 4 | r0 += 4;
0x0000a784 blx 0x1b0c | r0 = strerror (r0);
0x0000a788 mov r5, r0 | r5 = r0;
| if (r0 != 0) {
0x0000a78a cbz r0, 0xa7c2 |
0x0000a78c adds r4, 5 | r4 += 5;
0x0000a78e mov r2, sl | r2 = sl;
0x0000a790 add r4, r0 | r4 += r0;
0x0000a792 mov r1, sb | r1 = sb;
0x0000a794 str r4, [r0], 4 | *(r0) = r4;
| r0 += 4;
0x0000a798 blx 0x19c8 | mmap64 ()
0x0000a79c mov r2, r7 | r2 = r7;
0x0000a79e mov r1, r6 | r1 = r6;
0x0000a7a0 mov r0, r4 | r0 = r4;
0x0000a7a2 blx 0x19c8 | mmap64 ()
0x0000a7a6 movs r1, 9 | r1 = 9;
0x0000a7a8 ldr r0, [r5] | r0 = *(r5);
0x0000a7aa movs r2, 0x20 | r2 = 0x20;
0x0000a7ac bl 0x92c8 | fcn_000092c8 (r0, r1, r2);
0x0000a7b0 ldr.w r0, [r8, 0xc] | r0 = *((r8 + 0xc));
0x0000a7b4 mov r1, r5 | r1 = r5;
0x0000a7b6 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
| if (r0 == 0) {
0x0000a7ba cbz r0, 0xa7c2 | goto label_0;
| }
0x0000a7bc movs r5, 0 | r5 = 0;
0x0000a7be str.w r0, [r8, 0xc] | __asm ("str.w r0, [r8, 0xc]");
| }
| label_0:
0x0000a7c2 mov r0, r5 | r0 = r5;
0x0000a7c4 pop.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000a7c8 b.w 0x199c | return void (*0x199c)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xa8a8 */
| #include <stdint.h>
|
; (fcn) fcn.0000a8a8 () | void fcn_0000a8a8 (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_bp_c8h;
| int16_t var_bp_60h;
| int16_t var_4h;
| int32_t var_0h_2;
| int32_t var_0h_3;
| int16_t var_8h;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t errnum;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_5ch;
| size_t size;
| int16_t var_c8h;
| int16_t var_138h;
| int16_t var_1120h;
| int32_t var_0h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x0000a8a8 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000a8ac mov sb, r2 | sb = r2;
0x0000a8ae ldr.w r2, [pc, 0xa04] | r2 = *(0x0000b2b4);
0x0000a8b2 sub.w sp, sp, 0x1120 |
0x0000a8b6 sub sp, 0x1c |
0x0000a8b8 movs r7, 0 | r7 = 0;
0x0000a8ba ldr.w r3, [pc, 0x9fc] |
0x0000a8be add.w fp, sp, 0x138 |
0x0000a8c2 add r2, pc | r2 += pc;
0x0000a8c4 strd r0, r1, [sp, 0x2c] | __asm ("strd r0, r1, [var_30h]");
0x0000a8c8 add.w r1, sp, 0x1120 | r1 += var_1120h;
0x0000a8cc add.w r8, sp, 0x5c | r8 += var_5ch;
0x0000a8d0 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000a8d2 adds r1, 0x14 | r1 += 0x14;
0x0000a8d4 ldr r3, [r3] | r3 = *(0xb2ba);
0x0000a8d6 str r3, [r1] | *(r1) = r3;
0x0000a8d8 mov.w r3, 0 | r3 = 0;
0x0000a8dc str r7, [fp, -0xdc] | var_5ch = r7;
0x0000a8e0 bl 0x9af8 | fcn_00009af8 (r0);
0x0000a8e4 ldr.w r2, [pc, 0x9d4] |
0x0000a8e8 mov r1, r0 | r1 = r0;
0x0000a8ea mov r0, r8 | r0 = r8;
0x0000a8ec add r2, pc | r2 = 0x15bac;
0x0000a8ee bl 0xa610 | fcn_0000a610 (r0, r1, r2);
0x0000a8f2 ldr.w r5, [sb] | r5 = *(sb);
0x0000a8f6 cmp r5, 0 |
| if (r5 == 0) {
0x0000a8f8 beq.w 0xb290 | goto label_18;
| }
0x0000a8fc ldr.w r3, [pc, 0x9c0] |
0x0000a900 add.w sl, sp, 0x60 | sl += size;
0x0000a904 str r7, [sp, 0x18] | var_18h = r7;
0x0000a906 add r3, pc | r3 = 0x15bca;
0x0000a908 str r3, [sp, 0x28] | var_28h = r3;
0x0000a90a ldr.w r3, [pc, 0x9b8] |
0x0000a90e add r3, pc | r3 = 0x15bd8;
0x0000a910 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000a912 b 0xa928 |
| while (r0 != 0) {
0x0000a914 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000a918 ldr r3, [r0] | r3 = *(r0);
0x0000a91a cmp r3, 0 |
| if (r3 <= 0) {
0x0000a91c ble.w 0xabfa | goto label_19;
| }
| label_3:
0x0000a920 ldr r5, [sb, 4]! | r5 = *((sb += 4));
0x0000a924 cmp r5, 0 |
| if (r5 == 0) {
0x0000a926 beq 0xa99a | goto label_20;
| }
| label_0:
0x0000a928 mov r1, sl | r1 = sl;
0x0000a92a mov r0, r5 | r0 = r5;
0x0000a92c blx 0x1a28 | r0 = realloc (r0, r1);
0x0000a930 mov r4, r0 | r4 = r0;
0x0000a932 cmp r0, 0 |
0x0000a934 bne 0xa914 |
| }
0x0000a936 mov r0, sl | r0 = sl;
0x0000a938 bl 0x97d0 | fcn_000097d0 (r0);
0x0000a93c ldr r3, [fp, -0xc8] | r3 = var_bp_c8h;
0x0000a940 strd r0, r1, [sp, 0x10] | __asm ("strd r0, r1, [var_10h]");
0x0000a944 and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000a948 cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x0000a94c beq.w 0xab66 | goto label_21;
| }
0x0000a950 mov r2, r4 | r2 = r4;
0x0000a952 mov r1, r5 | r1 = r5;
0x0000a954 mov r0, r8 | r0 = r8;
0x0000a956 bl 0xa610 | fcn_0000a610 (r0, r1, r2);
| label_4:
0x0000a95a mov r0, r5 | r0 = r5;
0x0000a95c blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000a960 mov r2, r0 | r2 = r0;
0x0000a962 adds r0, 9 | r0 += 9;
0x0000a964 adds r6, r2, 1 | r6 = r2 + 1;
0x0000a966 blx 0x1b0c | r0 = strerror (r0);
0x0000a96a mov r4, r0 | r4 = r0;
0x0000a96c cmp r0, 0 |
| if (r0 == 0) {
0x0000a96e beq.w 0xb296 | goto label_22;
| }
0x0000a972 mov r1, r5 | r1 = r5;
0x0000a974 mov r2, r6 | r2 = r6;
0x0000a976 ldrd r5, r6, [sp, 0x10] | __asm ("ldrd r5, r6, [var_10h]");
0x0000a97a strd r5, r6, [r0], 8 | __asm ("strd r5, r6, [r0], 8");
0x0000a97e blx 0x19c8 | mmap64 ()
0x0000a982 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000a984 mov r1, r4 | r1 = r4;
0x0000a986 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000a98a cmp r0, 0 |
| if (r0 == 0) {
0x0000a98c beq.w 0xaf92 | goto label_23;
| }
0x0000a990 ldr r5, [sb, 4]! | r5 = *((sb += 4));
0x0000a994 str r0, [sp, 0x18] | var_18h = r0;
0x0000a996 cmp r5, 0 |
| if (r5 != 0) {
0x0000a998 bne 0xa928 | goto label_0;
| }
| label_20:
0x0000a99a ldr r7, [sp, 0x18] | r7 = var_18h;
| label_16:
0x0000a99c movs r1, 0x20 | r1 = 0x20;
0x0000a99e movs r0, 1 | r0 = 1;
0x0000a9a0 blx 0x18d8 | calloc (r0, r1);
0x0000a9a4 ldr r2, [sp, 0x30] | r2 = var_30h;
0x0000a9a6 str r0, [sp, 0x24] | var_24h = r0;
0x0000a9a8 str r0, [r2] | *(r2) = r0;
0x0000a9aa ldr r2, [fp, -0xdc] | r2 = var_5ch;
0x0000a9ae str r2, [sp, 0x10] | var_10h = r2;
0x0000a9b0 cmp r0, 0 |
| if (r0 == 0) {
0x0000a9b2 beq.w 0xaf9a | goto label_17;
| }
0x0000a9b6 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0000a9b8 str r7, [r0, 0x1c] | *((r0 + 0x1c)) = r7;
0x0000a9ba str r1, [r0] | *(r0) = r1;
0x0000a9bc cmp r2, 0 |
| if (r2 == 0) {
0x0000a9be beq.w 0xacf0 | goto label_24;
| }
0x0000a9c2 ldr.w r3, [pc, 0x904] |
0x0000a9c6 str.w fp, [sp, 0x1c] | __asm ("str.w fp, [var_1ch]");
0x0000a9ca add r3, pc | r3 = 0x15c98;
0x0000a9cc str r3, [sp, 0x38] | var_38h = r3;
0x0000a9ce ldr.w r3, [pc, 0x8fc] |
0x0000a9d2 add r3, pc | r3 = 0x15ca4;
0x0000a9d4 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000a9d6 b 0xa9f2 |
| while (r4 < r0) {
| label_5:
0x0000a9d8 ldr r0, [sp, 0x18] | r0 = var_18h;
0x0000a9da blx 0x19a0 | fcn_000019a0 ();
0x0000a9de ldr r0, [sp, 0x10] | r0 = var_10h;
0x0000a9e0 bl 0xa3ec | fcn_0000a3ec (r0);
0x0000a9e4 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000a9e6 str r0, [sp, 0x10] | var_10h = r0;
0x0000a9e8 str r0, [r2, -0xdc] | *((r2 - 0xdc)) = r0;
0x0000a9ec cmp r0, 0 |
| if (r0 == 0) {
0x0000a9ee beq.w 0xacee | goto label_25;
| }
0x0000a9f2 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000a9f4 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0000a9f6 ldrb r3, [r2, 4] | r3 = *((r2 + 4));
0x0000a9f8 ldr r0, [r2] | r0 = *(r2);
0x0000a9fa str r2, [sp, 0x18] | var_18h = r2;
0x0000a9fc cmp r3, 0 |
| if (r3 == 0) {
0x0000a9fe beq.w 0xac0c | goto label_26;
| }
| label_6:
0x0000aa02 mov.w r1, 0x80000 | r1 = 0x80000;
0x0000aa06 blx 0x1ad0 | r0 = fstatat64 ();
0x0000aa0a subs r4, r0, 0 | r4 = r0 - 0;
0x0000aa0c blt 0xa9d8 |
| }
0x0000aa0e ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000aa10 movs r3, 0 | r3 = 0;
0x0000aa12 ldr.w r1, [pc, 0x8bc] |
0x0000aa16 str r3, [r2, -0xd8] | *((r2 - 0xd8)) = r3;
0x0000aa1a add r1, pc | r1 = 0x15cf0;
0x0000aa1c blx 0x18cc | r0 = fdopen ();
0x0000aa20 mov sb, r0 | sb = r0;
0x0000aa22 cmp r0, 0 |
| if (r0 == 0) {
0x0000aa24 beq.w 0xb29a | goto label_27;
| }
0x0000aa28 ldr.w r3, [pc, 0x8a8] |
0x0000aa2c add.w sl, sp, 0x60 | sl += size;
0x0000aa30 ldr.w fp, [pc, 0x8a4] |
0x0000aa34 add r3, pc | r3 = 0x15d0c;
0x0000aa36 add fp, pc | fp = 0x15d12;
0x0000aa38 str r3, [sp, 0x20] | var_20h = r3;
0x0000aa3a b 0xaaa6 | goto label_28;
| label_2:
0x0000aa3c ldr.w r1, [pc, 0x89c] |
0x0000aa40 mov r0, r6 | r0 = r6;
0x0000aa42 add r1, pc | r1 = 0x15d22;
0x0000aa44 blx 0x1924 | r0 = fcn_00001924 ();
0x0000aa48 mov r5, r0 | r5 = r0;
0x0000aa4a cmp r0, 0 |
| if (r0 == 0) {
0x0000aa4c beq.w 0xac3c | goto label_29;
| }
0x0000aa50 ldr.w r1, [pc, 0x88c] |
0x0000aa54 mov r0, r6 | r0 = r6;
0x0000aa56 add r1, pc | r1 = 0x15d3a;
0x0000aa58 blx 0x1924 | r0 = fcn_00001924 ();
0x0000aa5c mov r5, r0 | r5 = r0;
0x0000aa5e cmp r0, 0 |
| if (r0 == 0) {
0x0000aa60 beq.w 0xac72 | goto label_30;
| }
0x0000aa64 ldr.w r1, [pc, 0x87c] |
0x0000aa68 mov r0, r6 | r0 = r6;
0x0000aa6a add r1, pc | r1 = 0x15d52;
0x0000aa6c blx 0x1924 | r0 = fcn_00001924 ();
0x0000aa70 mov r5, r0 | r5 = r0;
0x0000aa72 cmp r0, 0 |
| if (r0 == 0) {
0x0000aa74 beq.w 0xacae | goto label_31;
| }
0x0000aa78 ldr.w r1, [pc, 0x86c] |
0x0000aa7c mov r0, r6 | r0 = r6;
0x0000aa7e add r1, pc | r1 = 0x15d6a;
0x0000aa80 blx 0x1924 | r0 = fcn_00001924 ();
0x0000aa84 mov r5, r0 | r5 = r0;
0x0000aa86 cmp r0, 0 |
| if (r0 == 0) {
0x0000aa88 beq.w 0xaf54 | goto label_32;
| }
0x0000aa8c ldr.w r1, [pc, 0x85c] |
0x0000aa90 mov r0, r6 | r0 = r6;
0x0000aa92 add r1, pc | r1 = 0x15d82;
0x0000aa94 blx 0x1924 | r0 = fcn_00001924 ();
0x0000aa98 mov r5, r0 | r5 = r0;
0x0000aa9a cmp r0, 0 |
| if (r0 == 0) {
0x0000aa9c beq.w 0xafd0 | goto label_33;
| }
| do {
| label_1:
0x0000aaa0 mov r0, r4 | r0 = r4;
0x0000aaa2 blx 0x19a0 | fcn_000019a0 ();
| label_28:
0x0000aaa6 mov r1, sl | r1 = sl;
0x0000aaa8 mov r0, sb | r0 = sb;
0x0000aaaa bl 0x9550 | r0 = fcn_00009550 (r0, r1);
0x0000aaae mov r4, r0 | r4 = r0;
0x0000aab0 cmp r0, 0 |
| if (r0 == 0) {
0x0000aab2 beq.w 0xac04 | goto label_34;
| }
0x0000aab6 ldrb r3, [r4] | r3 = *(r4);
0x0000aab8 cmp r3, 0x23 |
0x0000aaba it ne |
| if (r3 != 0x23) {
0x0000aabc cmpne r3, 0 | __asm ("cmpne r3, 0");
| }
0x0000aabe beq 0xaaa0 |
| } while (r3 == 0x23);
0x0000aac0 add r7, sp, 0xc8 | r7 += var_c8h;
0x0000aac2 mov r1, fp | r1 = fp;
0x0000aac4 mov r2, r7 | r2 = r7;
0x0000aac6 blx 0x1aac | r0 = opendir ();
0x0000aaca mov r6, r0 | r6 = r0;
0x0000aacc cmp r0, 0 |
| if (r0 == 0) {
0x0000aace beq 0xaaa0 | goto label_1;
| }
0x0000aad0 ldr r1, [sp, 0x20] | r1 = var_20h;
0x0000aad2 blx 0x1924 | r0 = fcn_00001924 ();
0x0000aad6 mov r5, r0 | r5 = r0;
0x0000aad8 cmp r0, 0 |
| if (r0 != 0) {
0x0000aada bne 0xaa3c | goto label_2;
| }
0x0000aadc mov r2, r7 | r2 = r7;
0x0000aade mov r1, fp | r1 = fp;
0x0000aae0 blx 0x1aac | opendir ();
0x0000aae4 mov r2, r7 | r2 = r7;
0x0000aae6 mov r6, r0 | r6 = r0;
0x0000aae8 mov r1, fp | r1 = fp;
0x0000aaea mov r0, r5 | r0 = r5;
0x0000aaec blx 0x1aac | r0 = opendir ();
0x0000aaf0 mov r7, r0 | r7 = r0;
0x0000aaf2 mov r0, r6 | r0 = r6;
0x0000aaf4 bl 0x9344 | r0 = fcn_00009344 (r0);
0x0000aaf8 cmp r0, 0 |
| if (r0 < 0) {
0x0000aafa blt 0xaaa0 | goto label_1;
| }
0x0000aafc mov r0, r7 | r0 = r7;
0x0000aafe bl 0x9344 | r0 = fcn_00009344 (r0);
0x0000ab02 cmp r0, 0 |
| if (r0 < 0) {
0x0000ab04 blt 0xaaa0 | goto label_1;
| }
0x0000ab06 mov r0, r6 | r0 = r6;
0x0000ab08 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000ab0c adds r3, r0, 1 | r3 = r0 + 1;
0x0000ab0e mov r0, r7 | r0 = r7;
0x0000ab10 str r3, [sp, 0x28] | var_28h = r3;
0x0000ab12 blx 0x1bb0 | fcn_00001bb0 ();
0x0000ab14 strex fp, sb, [lr, 0x28] | __asm ("strex fp, sb, [lr, 0x28]");
0x0000ab18 adds r2, r0, 1 | r2 = r0 + 1;
0x0000ab1a mov r8, r0 | r8 = r0;
0x0000ab1c str r2, [sp, 0x2c] | var_2ch = r2;
0x0000ab1e adds r0, r3, r2 | r0 = r3 + r2;
0x0000ab20 adds r0, 4 | r0 += 4;
0x0000ab22 blx 0x1b0c | r0 = strerror (r0);
0x0000ab26 mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x0000ab28 cbz r0, 0xab5e |
0x0000ab2a add.w r8, r8, 5 | r8 += 5;
0x0000ab2e ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000ab30 add r8, r0 | r8 += r0;
0x0000ab32 mov r1, r7 | r1 = r7;
0x0000ab34 str r0, [sp, 0x2c] | var_2ch = r0;
0x0000ab36 str r8, [r0], 4 | *(r0) = r8;
| r0 += 4;
0x0000ab3a blx 0x19c8 | mmap64 ()
0x0000ab3e mov r1, r6 | r1 = r6;
0x0000ab40 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000ab42 mov r0, r8 | r0 = r8;
0x0000ab44 blx 0x19c8 | mmap64 ()
0x0000ab48 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000ab4a ldr r6, [sp, 0x24] | r6 = var_24h;
0x0000ab4c mov r1, r3 | r1 = r3;
0x0000ab4e str r3, [sp, 0x28] | var_28h = r3;
0x0000ab50 ldr r0, [r6, 4] | r0 = *((r6 + 4));
0x0000ab52 bl 0xa350 | fcn_0000a350 (r0, r1);
0x0000ab56 ldr r3, [sp, 0x28] | r3 = var_28h;
| if (r0 == 0) {
0x0000ab58 cbz r0, 0xab5e | goto label_35;
| }
0x0000ab5a mov r3, r5 | r3 = r5;
0x0000ab5c str r0, [r6, 4] | *((r6 + 4)) = r0;
| }
| label_35:
0x0000ab5e mov r0, r3 | r0 = r3;
0x0000ab60 blx 0x19a0 | fcn_000019a0 ();
0x0000ab64 b 0xaaa0 | goto label_1;
| label_21:
0x0000ab66 mov r0, r5 | r0 = r5;
0x0000ab68 blx 0x1ab8 | r0 = fnmatch ();
0x0000ab6c mov r6, r0 | r6 = r0;
0x0000ab6e cmp r0, 0 |
| if (r0 == 0) {
0x0000ab70 beq.w 0xa920 | goto label_3;
| }
0x0000ab74 blx 0x1cf4 | r0 = fcn_00001cf4 ();
| if (r0 == 0) {
0x0000ab78 cbz r0, 0xabf2 | goto label_36;
| }
0x0000ab7a strd sb, sl, [sp, 0x20] | __asm ("strd sb, sl, [var_24h]");
0x0000ab7e add r3, sp, 0xc8 | r3 += var_c8h;
0x0000ab80 ldr.w sb, [sp, 0x28] | sb = var_28h;
0x0000ab84 mov sl, r0 | sl = r0;
0x0000ab86 mov r7, r3 | r7 = r3;
| do {
0x0000ab88 add.w r4, sl, 0x13 | r4 = sl + 0x13;
0x0000ab8c mov r0, r4 | r0 = r4;
0x0000ab8e blx 0x1bb0 | fcn_00001bb0 ();
0x0000ab92 ldrb.w r2, [sl, 0x13] | r2 = *((sl + 0x13));
0x0000ab94 movs r0, 0x13 | r0 = 0x13;
0x0000ab96 mov sl, r0 | sl = r0;
0x0000ab98 cmp r2, 0x2e |
| if (r2 != 0x2e) {
0x0000ab9a beq 0xabe2 |
0x0000ab9c cmp r0, 5 |
| if (r0 < 5) {
0x0000ab9e bls 0xabe2 | goto label_37;
| }
0x0000aba0 subs r0, 5 | r0 -= 5;
0x0000aba2 mov r1, sb | r1 = sb;
0x0000aba4 add r0, r4 | r0 += r4;
0x0000aba6 blx 0x1924 | fcn_00001924 ();
0x0000aba8 mrc p1, 5, fp, c14, c0, 1 | __asm ("mrc p1, 5, fp, c14, c0, 1");
0x0000abac sub.w r0, sl, 6 | r0 = sl - 6;
0x0000abb0 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000abb2 add r0, r4 | r0 += r4;
0x0000abb4 blx 0x1924 | r0 = fcn_00001924 ();
| if (r0 != 0) {
0x0000abb8 cbnz r0, 0xabe2 | goto label_37;
| }
0x0000abba mov r0, r6 | r0 = r6;
0x0000abbc blx 0x1d40 | renameat ();
0x0000abc0 movs r3, 0 | r3 = 0;
0x0000abc2 mov r2, r7 | r2 = r7;
0x0000abc4 mov r1, r4 | r1 = r4;
0x0000abc6 blx 0x1adc | asprintf_chk ();
0x0000abca ldr r3, [fp, -0x60] | r3 = var_bp_60h;
0x0000abce and r3, r3, 0xf000 | r3 &= 0xf000;
0x0000abd2 cmp.w r3, 0x4000 |
| if (r3 == 0x4000) {
0x0000abd6 beq 0xabe2 | goto label_37;
| }
0x0000abd8 mov r2, r4 | r2 = r4;
0x0000abda mov r1, r5 | r1 = r5;
0x0000abdc mov r0, r8 | r0 = r8;
0x0000abde bl 0xa610 | fcn_0000a610 (r0, r1, r2);
| }
| label_37:
0x0000abe2 mov r0, r6 | r0 = r6;
0x0000abe4 blx 0x1cf4 | r0 = fcn_00001cf4 ();
0x0000abe8 mov sl, r0 | sl = r0;
0x0000abea cmp r0, 0 |
0x0000abec bne 0xab88 |
| } while (r0 != 0);
0x0000abee ldrd sb, sl, [sp, 0x20] | __asm ("ldrd sb, sl, [var_24h]");
| label_36:
0x0000abf2 mov r0, r6 | r0 = r6;
0x0000abf4 blx 0x1dc8 | fcn_00001dc8 ();
0x0000abf8 b 0xa95a | goto label_4;
| label_19:
0x0000abfa vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0000abfe vstr d16, [sp, 0x10] | __asm ("vstr d16, [sp, 0x10]");
0x0000ac02 b 0xa95a | goto label_4;
| label_34:
0x0000ac04 mov r0, sb | r0 = sb;
0x0000ac06 blx 0x1c84 | fcn_00001c84 ();
0x0000ac0a b 0xa9d8 | goto label_5;
| label_26:
0x0000ac0c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000ac0e subs r4, r3, 4 | r4 = r3 - 4;
0x0000ac10 mov r3, r2 | r3 = r2;
0x0000ac12 adds r3, 5 | r3 += 5;
0x0000ac14 movs r2, 1 | r2 = 1;
0x0000ac16 str r3, [sp, 8] | var_8h = r3;
0x0000ac18 ldr.w r3, [pc, 0x6d4] |
0x0000ac1c add r3, pc | r3 = 0x15f10;
0x0000ac1e strd r3, r0, [sp] | __asm ("strd r3, r0, [sp]");
0x0000ac22 mov.w r3, 0x1000 | r3 = 0x1000;
0x0000ac26 mov r1, r3 | r1 = r3;
0x0000ac28 mov r0, r4 | r0 = r4;
0x0000ac2a blx 0x1dd4 | r0 = fcn_00001dd4 ();
0x0000ac2e cmp.w r0, 0x1000 |
0x0000ac32 it lt |
| if (r0 < 0x1000) {
0x0000ac34 movlt r0, r4 | r0 = r4;
| goto label_38;
| }
| if (r0 < 0x1000) {
| label_38:
0x0000ac36 blt.w 0xaa02 | goto label_6;
| }
0x0000ac3a b 0xa9d8 | goto label_5;
| label_29:
0x0000ac3c mov r2, r7 | r2 = r7;
0x0000ac3e mov r1, fp | r1 = fp;
0x0000ac40 blx 0x1aac | r0 = opendir ();
0x0000ac44 mov r6, r0 | r6 = r0;
0x0000ac46 bl 0x9344 | r0 = fcn_00009344 (r0);
0x0000ac4a cmp r0, 0 |
| if (r0 < 0) {
0x0000ac4c blt.w 0xaaa0 | goto label_1;
| }
0x0000ac50 mov r0, r6 | r0 = r6;
0x0000ac52 blx 0x1a10 | r0 = stack_chk_fail ();
0x0000ac56 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x0000ac58 cbz r0, 0xac6a |
0x0000ac5a ldr r7, [sp, 0x24] | r7 = var_24h;
0x0000ac5c mov r1, r6 | r1 = r6;
0x0000ac5e ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0000ac60 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
| if (r0 == 0) {
0x0000ac64 cbz r0, 0xac6a | goto label_39;
| }
0x0000ac66 mov r6, r5 | r6 = r5;
0x0000ac68 str r0, [r7, 8] | *((r7 + 8)) = r0;
| }
| label_39:
0x0000ac6a mov r0, r6 | r0 = r6;
0x0000ac6c blx 0x19a0 | fcn_000019a0 ();
0x0000ac70 b 0xaaa0 | goto label_1;
| label_30:
0x0000ac72 mov r2, r7 | r2 = r7;
0x0000ac74 mov r1, fp | r1 = fp;
0x0000ac76 blx 0x1aac | opendir ();
0x0000ac7a ldr.w r1, [pc, 0x678] |
0x0000ac7e mov r3, r0 | r3 = r0;
0x0000ac80 mov r2, r7 | r2 = r7;
0x0000ac82 mov r0, r5 | r0 = r5;
0x0000ac84 mov r5, r3 | r5 = r3;
0x0000ac86 add r1, pc | r1 = 0x15f80;
0x0000ac88 blx 0x1aac | r0 = opendir ();
0x0000ac8c mov r6, r0 | r6 = r0;
0x0000ac8e mov r0, r5 | r0 = r5;
0x0000ac90 bl 0x9344 | fcn_00009344 (r0);
0x0000ac94 clz r3, r6 | r3 &= r6;
0x0000ac98 lsrs r3, r3, 5 | r3 >>= 5;
0x0000ac9a orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x0000ac9e bne.w 0xaaa0 | goto label_1;
| }
0x0000aca2 ldr r0, [sp, 0x24] | r0 = var_24h;
0x0000aca4 mov r2, r6 | r2 = r6;
0x0000aca6 mov r1, r5 | r1 = r5;
0x0000aca8 bl 0xa760 | fcn_0000a760 (r0, r1, r2);
0x0000acac b 0xaaa0 | goto label_1;
| label_31:
0x0000acae mov r2, r7 | r2 = r7;
0x0000acb0 mov r1, fp | r1 = fp;
0x0000acb2 blx 0x1aac | opendir ();
0x0000acb6 ldr.w r1, [pc, 0x640] |
0x0000acba mov r3, r0 | r3 = r0;
0x0000acbc mov r2, r7 | r2 = r7;
0x0000acbe mov r0, r5 | r0 = r5;
0x0000acc0 mov r5, r3 | r5 = r3;
0x0000acc2 add r1, pc | r1 = 0x15fc0;
0x0000acc4 blx 0x1aac | r0 = opendir ();
0x0000acc8 mov r6, r0 | r6 = r0;
0x0000acca mov r0, r5 | r0 = r5;
0x0000accc bl 0x9344 | fcn_00009344 (r0);
0x0000acd0 clz r3, r6 | r3 &= r6;
0x0000acd4 lsrs r3, r3, 5 | r3 >>= 5;
0x0000acd6 orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x0000acda bne.w 0xaaa0 | goto label_1;
| }
0x0000acde ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000ace0 mov r1, r6 | r1 = r6;
0x0000ace2 mov r0, r5 | r0 = r5;
0x0000ace4 add.w r2, r3, 0x14 | r2 = r3 + 0x14;
0x0000ace8 bl 0xa700 | fcn_0000a700 (r0, r1, r2);
0x0000acec b 0xaaa0 | goto label_1;
| label_25:
0x0000acee mov fp, r2 |
| label_24:
0x0000acf0 ldr.w r0, [pc, 0x608] |
0x0000acf4 mov.w r1, 0x80000 | r1 = 0x80000;
0x0000acf8 add r0, pc | r0 = 0x15ff8;
0x0000acfa blx 0x1ad0 | r0 = fstatat64 ();
0x0000acfe subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000ad00 blt.w 0xae1a | goto label_15;
| }
0x0000ad04 sub.w r4, fp, 4 | r4 = fp - 4;
0x0000ad08 mov.w r2, 0x1000 | r2 = 0x1000;
0x0000ad0c mov r1, r4 | r1 = r4;
0x0000ad0e bl 0x9440 | r0 = fcn_00009440 (r0, r1, r2);
0x0000ad12 mov r6, r0 | r6 = r0;
0x0000ad14 mov r0, r5 | r0 = r5;
0x0000ad16 blx 0x1dbc | fcn_00001dbc ();
0x0000ad1a cmp r6, 0 |
| if (r6 < 0) {
0x0000ad1c blt.w 0xb288 | goto label_40;
| }
0x0000ad20 ldr.w r3, [pc, 0x5dc] |
0x0000ad24 movs r6, 0 | r6 = 0;
0x0000ad26 mov r7, r6 | r7 = r6;
0x0000ad28 mov r0, r6 | r0 = r6;
0x0000ad2a mov r8, r4 | r8 = r4;
0x0000ad2c movs r2, 1 | r2 = 1;
0x0000ad2e mov r5, r6 | r5 = r6;
0x0000ad30 add r3, pc | r3 = 0x16034;
0x0000ad32 str r3, [sp, 0x10] | var_10h = r3;
| do {
| label_7:
0x0000ad34 mov r1, r4 | r1 = r4;
0x0000ad36 ldrb r3, [r4], 1 | r3 = *(r4);
| r4++;
0x0000ad3a cmp r3, 0x2e |
| if (r3 > 0x2e) {
0x0000ad3c bhi.w 0xae62 | goto label_41;
| }
0x0000ad40 cmp r3, 0x2e |
0x0000ad42 bhi 0xad34 |
| } while (r3 > 0x2e);
0x0000ad44 addw ip, pc, 8 | __asm ("addw ip, pc, 8");
0x0000ad48 ldr.w r3, [ip, r3, lsl 2] | offset_0 = r3 << 2;
| r3 = *((ip + offset_0));
0x0000ad4c add ip, r3 |
0x0000ad4e bx ip | return void (*ip)() ();
| label_15:
0x0000ae1a movs r0, 0 | r0 = 0;
| label_8:
0x0000ae1c ldr.w r2, [pc, 0x4e4] | r2 = *(0x0000b304);
0x0000ae20 add.w r1, sp, 0x1120 | r1 += var_1120h;
0x0000ae24 ldr.w r3, [pc, 0x490] | r3 = *(0xb2b8);
0x0000ae28 adds r1, 0x14 | r1 += 0x14;
0x0000ae2a add r2, pc | r2 += pc;
0x0000ae2c ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000ae2e ldr r2, [r3] | r2 = *(0xb2b8);
0x0000ae30 ldr r3, [r1] | r3 = *(r1);
0x0000ae32 eors r2, r3 | r2 ^= r3;
0x0000ae34 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000ae38 bne.w 0xb2a4 | goto label_42;
| }
0x0000ae3c add.w sp, sp, 0x1120 |
0x0000ae40 add sp, 0x1c |
0x0000ae42 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_41:
0x0000ae62 cmp r3, 0x3d |
| if (r3 != 0x3d) {
0x0000ae64 bne.w 0xad34 | goto label_7;
| }
0x0000ae68 cmp r2, 2 |
| if (r2 == 2) {
0x0000ae6a beq.w 0xb230 | goto label_43;
| }
0x0000ae6e cmp r2, 1 |
0x0000ae70 it eq |
| if (r2 != 1) {
0x0000ae72 moveq r2, 0 | r2 = 0;
| }
0x0000ae74 b 0xad34 | goto label_7;
| label_32:
0x0000af54 mov r2, r7 | r2 = r7;
0x0000af56 mov r1, fp | r1 = fp;
0x0000af58 blx 0x1aac | opendir ();
0x0000af5c ldr r1, [pc, 0x3b0] |
0x0000af5e mov r3, r0 | r3 = r0;
0x0000af60 mov r2, r7 | r2 = r7;
0x0000af62 mov r0, r5 | r0 = r5;
0x0000af64 mov r5, r3 | r5 = r3;
0x0000af66 add r1, pc | r1 = 0x1627a;
0x0000af68 blx 0x1aac | r0 = opendir ();
0x0000af6c mov r6, r0 | r6 = r0;
0x0000af6e mov r0, r5 | r0 = r5;
0x0000af70 bl 0x9344 | fcn_00009344 (r0);
0x0000af72 invalid |
0x0000af76 usat sb, 0x1b, r6, lsl 1 | __asm ("usat sb, 0x1b, r6, lsl 1");
0x0000af7a orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x0000af7e bne.w 0xaaa0 | goto label_1;
| }
0x0000af82 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000af84 mov r1, r6 | r1 = r6;
0x0000af86 mov r0, r5 | r0 = r5;
0x0000af88 add.w r2, r3, 0x10 | r2 = r3 + 0x10;
0x0000af8c bl 0xa700 | fcn_0000a700 (r0, r1, r2);
0x0000af90 b 0xaaa0 | goto label_1;
| label_23:
0x0000af92 mov r0, r4 | r0 = r4;
0x0000af94 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000af96 blx 0x19a0 | fcn_000019a0 ();
| label_17:
0x0000af9a ldr r4, [fp, -0xdc] | r4 = var_5ch;
| if (r4 == 0) {
0x0000af9e cbz r4, 0xafb6 | goto label_44;
| }
| do {
0x0000afa0 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000afa2 blx 0x19a0 | fcn_000019a0 ();
0x0000afa6 mov r0, r4 | r0 = r4;
0x0000afa8 bl 0xa3ec | r0 = fcn_0000a3ec (r0);
0x0000afac mov r4, r0 | r4 = r0;
0x0000afae str r0, [fp, -0xdc] | var_5ch = r0;
0x0000afb2 cmp r0, 0 |
0x0000afb4 bne 0xafa0 |
| } while (r0 != 0);
| if (r7 == 0) {
| label_44:
0x0000afb6 cbz r7, 0xafca | goto label_45;
| }
| do {
0x0000afb8 ldr r0, [r7, 8] | r0 = *((r7 + 8));
0x0000afba blx 0x19a0 | fcn_000019a0 ();
0x0000afbe mov r0, r7 | r0 = r7;
0x0000afc0 bl 0xa3ec | r0 = fcn_0000a3ec (r0);
0x0000afc4 mov r7, r0 | r7 = r0;
0x0000afc6 cmp r7, 0 |
0x0000afc8 bne 0xafb8 |
| } while (r7 != 0);
| label_45:
0x0000afca mvn r0, 0xb | r0 = ~0xb;
0x0000afce b 0xae1c | goto label_8;
| label_33:
0x0000afd0 mov r2, r7 | r2 = r7;
0x0000afd2 mov r1, fp | r1 = fp;
0x0000afd4 blx 0x1aac | opendir ();
0x0000afd8 ldr r1, [pc, 0x338] |
0x0000afda mov r3, r0 | r3 = r0;
0x0000afdc mov r2, r7 | r2 = r7;
0x0000afde mov r0, r5 | r0 = r5;
0x0000afe0 mov r5, r3 | r5 = r3;
0x0000afe2 str r3, [sp, 0x48] | var_48h = r3;
0x0000afe4 add r1, pc | r1 = 0x162fc;
0x0000afe6 blx 0x1aac | r0 = opendir ();
0x0000afea mov r7, r0 | r7 = r0;
0x0000afec mov r0, r5 | r0 = r5;
0x0000afee bl 0x9344 | fcn_00009344 (r0);
0x0000aff2 clz r3, r7 | r3 &= r7;
0x0000aff6 lsrs r3, r3, 5 | r3 >>= 5;
0x0000aff8 orrs.w r3, r3, r0, lsr 31 | r3 |= (r0 >> 31);
| if (r3 != r3) {
0x0000affc bne.w 0xaaa0 | goto label_1;
| }
0x0000b000 mov r0, r5 | r0 = r5;
0x0000b002 mov r6, r7 | r6 = r7;
0x0000b004 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000b008 mov r3, r0 | r3 = r0;
0x0000b00a mov r5, r7 | r5 = r7;
0x0000b00c adds r3, 1 | r3++;
0x0000b00e mov r8, r7 | r8 = r7;
0x0000b010 str r3, [sp, 0x54] | var_54h = r3;
0x0000b012 mov r3, r7 | r3 = r7;
0x0000b014 movs r2, 0 | r2 = 0;
0x0000b016 str r0, [sp, 0x50] | var_50h = r0;
0x0000b018 str r2, [sp, 0x28] | var_28h = r2;
0x0000b01a strd r2, r2, [sp, 0x30] | __asm ("strd r2, r2, [var_30h]");
0x0000b01e strd r2, r2, [sp, 0x40] | __asm ("strd r2, r2, [var_44h]");
0x0000b022 str r4, [sp, 0x4c] | errnum = r4;
| do {
| label_9:
0x0000b024 mov r2, r6 | r2 = r6;
0x0000b026 ldrb r4, [r6], 1 | r4 = *(r6);
| r6++;
| if (r4 == 0) {
0x0000b02a cbz r4, 0xb054 | goto label_46;
| }
0x0000b02c str r2, [sp, 0x2c] | var_2ch = r2;
0x0000b02e blx 0x1b80 | r0 = fcn_00001b80 ();
0x0000b032 ldr r0, [r0] | r0 = *(r0);
0x0000b034 ldrh.w r0, [r0, r4, lsl 1] | offset_1 = r4 << 1;
| r0 = *((r0 + offset_1));
0x0000b038 ands r0, r0, 0x2000 | r0 &= 0x2000;
| if (r0 == r0) {
0x0000b03c beq.w 0xb1d6 | goto label_47;
| }
0x0000b040 ldrd r3, r2, [sp, 0x28] | __asm ("ldrd r3, r2, [var_28h]");
0x0000b044 cmp r3, 0 |
| if (r3 != 0) {
0x0000b046 bne.w 0xb22c | goto label_48;
| }
0x0000b04a cmp r2, r8 |
0x0000b04c mov.w r3, 1 | r3 = 1;
0x0000b050 str r3, [sp, 0x28] | var_28h = r3;
0x0000b052 bls 0xb024 |
| } while (r2 < r8);
| label_46:
0x0000b054 sub.w r2, r2, r8 | r2 -= r8;
0x0000b058 cmp r2, 4 |
| if (r2 == 4) {
0x0000b05a beq.w 0xb18c | goto label_49;
| }
0x0000b05e cmp r2, 5 |
| if (r2 == 5) {
0x0000b060 beq.w 0xb1be | goto label_50;
| }
| label_11:
0x0000b064 ldr r1, [sp, 0x28] | r1 = var_28h;
0x0000b066 cmp r4, 0 |
0x0000b068 ite ne |
| if (r4 == 0) {
0x0000b06a movne r1, 0 | r1 = 0;
| }
| if (r4 != 0) {
0x0000b06c andeq r1, r1, 1 | r1 &= 1;
| }
| if (r1 != 0) {
0x0000b070 cbnz r1, 0xb094 | goto label_51;
| }
0x0000b072 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000b074 cmp r3, 1 |
| if (r3 == 1) {
0x0000b076 beq.w 0xb1da | goto label_52;
| }
0x0000b07a ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000b07c cmp r3, 2 |
| if (r3 == 2) {
0x0000b07e bne 0xb08e |
0x0000b080 ldr r1, [sp, 0x34] | r1 = var_34h;
0x0000b082 adds r1, 1 | r1++;
0x0000b084 adds r3, r2, r1 | r3 = r2 + r1;
0x0000b086 str r3, [sp, 0x34] | var_34h = r3;
0x0000b088 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000b08a adds r3, 1 | r3++;
0x0000b08c str r3, [sp, 0x44] | var_44h = r3;
| }
| label_12:
0x0000b08e mov r8, r6 | r8 = r6;
0x0000b090 cmp r4, 0 |
| if (r4 != 0) {
0x0000b092 bne 0xb024 | goto label_9;
| }
| label_51:
0x0000b094 ldrd r4, r0, [sp, 0x4c] | __asm ("ldrd r4, r0, [var_50h]");
0x0000b098 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000b09a ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000b09c adds r0, 0x15 | r0 += 0x15;
0x0000b09e add r0, r3 | r0 += r3;
0x0000b0a0 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000b0a2 lsls r6, r2, 2 | r6 = r2 << 2;
0x0000b0a4 lsl.w r8, r3, 2 | r8 = r3 << 2;
0x0000b0a8 add r0, r8 | r0 += r8;
0x0000b0aa add r0, r6 | r0 += r6;
0x0000b0ac blx 0x1b0c | strerror (r0);
0x0000b0b0 str r0, [sp, 0x30] | var_30h = r0;
0x0000b0b2 cmp r0, 0 |
| if (r0 == 0) {
0x0000b0b4 beq.w 0xaaa0 | goto label_1;
| }
0x0000b0b8 ldr r2, [sp, 0x44] | r2 = var_44h;
0x0000b0ba ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000b0bc ldr r1, [sp, 0x48] | r1 = var_48h;
0x0000b0be str r2, [r0, 0x10] | *((r0 + 0x10)) = r2;
0x0000b0c0 add.w r2, r0, 0x14 | r2 = r0 + 0x14;
0x0000b0c4 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x0000b0c6 add.w r3, r2, r8 | r3 = r2 + r8;
0x0000b0ca str r2, [r0, 4] | *((r0 + 4)) = r2;
0x0000b0cc adds r0, r3, r6 | r0 = r3 + r6;
0x0000b0ce ldr.w r8, [sp, 0x54] | r8 = var_54h;
0x0000b0d2 ldr r6, [sp, 0x30] | r6 = var_30h;
0x0000b0d4 mov r2, r8 | r2 = r8;
0x0000b0d6 str r3, [r6, 8] | *((r6 + 8)) = r3;
0x0000b0d8 str r0, [r6] | *(r6) = r0;
0x0000b0da blx 0x19c8 | mmap64 ()
0x0000b0de ldr r3, [r6] | r3 = *(r6);
0x0000b0e0 mov r2, r8 | r2 = r8;
0x0000b0e2 mov.w r8, 0 | r8 = 0;
0x0000b0e6 str.w r8, [sp, 0x2c] | __asm ("str.w r8, [var_2ch]");
0x0000b0ea add r2, r3 | r2 += r3;
0x0000b0ec strd r8, r8, [sp, 0x40] | __asm ("strd r8, r8, [var_44h]");
0x0000b0f0 str r2, [sp, 0x34] | var_34h = r2;
| do {
| label_10:
0x0000b0f2 mov r2, r5 | r2 = r5;
0x0000b0f4 ldrb r6, [r5], 1 | r6 = *(r5);
| r5++;
| if (r6 == 0) {
0x0000b0f8 cbz r6, 0xb120 | goto label_53;
| }
0x0000b0fa str r2, [sp, 0x28] | var_28h = r2;
0x0000b0fc blx 0x1b80 | r0 = fcn_00001b80 ();
0x0000b100 ldr r3, [r0] | r3 = *(r0);
0x0000b102 ldrh.w r3, [r3, r6, lsl 1] | offset_2 = r6 << 1;
| r3 = *((r3 + offset_2));
0x0000b106 ands r3, r3, 0x2000 | r3 &= 0x2000;
| if (r3 == r3) {
0x0000b10a beq.w 0xb224 | goto label_54;
| }
0x0000b10e ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000b110 cmp.w r8, 0 |
| if (r8 != 0) {
0x0000b114 bne.w 0xb228 | goto label_55;
| }
0x0000b118 cmp r2, r7 |
0x0000b11a mov.w r8, 1 | r8 = 1;
0x0000b11e bls 0xb0f2 |
| } while (r2 < r7);
| label_53:
0x0000b120 subs r2, r2, r7 | r2 -= r7;
0x0000b122 cmp r2, 4 |
| if (r2 == 4) {
0x0000b124 beq 0xb1ea | goto label_56;
| }
0x0000b126 cmp r2, 5 |
| if (r2 == 5) {
0x0000b128 beq 0xb20e | goto label_57;
| }
| label_13:
0x0000b12a cmp r6, 0 |
0x0000b12c ite ne |
| if (r6 == 0) {
0x0000b12e movne r3, 0 | r3 = 0;
| }
| if (r6 != 0) {
0x0000b130 andeq r3, r8, 1 | r3 = r8 & 1;
| }
| if (r3 != 0) {
0x0000b134 cbnz r3, 0xb14c | goto label_58;
| }
0x0000b136 ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0000b138 cmp r1, 1 |
| if (r1 == 1) {
0x0000b13a beq.w 0xb244 | goto label_59;
| }
0x0000b13e ldr r1, [sp, 0x2c] | r1 = var_2ch;
0x0000b140 cmp r1, 2 |
| if (r1 == 2) {
0x0000b142 beq.w 0xb272 | goto label_60;
| }
| label_14:
0x0000b146 mov r7, r5 | r7 = r5;
0x0000b148 cmp r6, 0 |
| if (r6 != 0) {
0x0000b14a bne 0xb0f2 | goto label_10;
| }
| label_58:
0x0000b14c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000b14e ldr r1, [sp, 0x30] | r1 = var_30h;
0x0000b150 ldr r0, [r3, 0x18] | r0 = *((r3 + 0x18));
0x0000b152 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000b156 cmp r0, 0 |
| if (r0 == 0) {
0x0000b158 beq.w 0xb2a8 | goto label_61;
| }
0x0000b15c ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000b15e str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
0x0000b160 b 0xaaa0 | goto label_1;
| label_49:
0x0000b18c ldrb.w r0, [r8] | r0 = *(r8);
0x0000b190 cmp r0, 0x70 |
| if (r0 != 0x70) {
0x0000b192 bne.w 0xb064 | goto label_11;
| }
0x0000b196 ldrb.w r0, [r8, 1] | r0 = *((r8 + 1));
0x0000b19a add.w r1, r8, 1 | r1 = r8 + 1;
0x0000b19e cmp r0, 0x72 |
| if (r0 != 0x72) {
0x0000b1a0 bne.w 0xb064 | goto label_11;
| }
0x0000b1a4 ldrb r0, [r1, 1]! | r0 = *((r1 += 1));
0x0000b1a8 cmp r0, 0x65 |
| if (r0 != 0x65) {
0x0000b1aa bne.w 0xb064 | goto label_11;
| }
0x0000b1ae ldrb r1, [r1, 1] | r1 = *((r1 + 1));
0x0000b1b0 cmp r1, 0x3a |
0x0000b1b2 itt eq |
| if (r1 != 0x3a) {
0x0000b1b4 moveq r3, 1 | r3 = 1;
| }
| if (r1 == 0x3a) {
0x0000b1b6 streq r3, [sp, 0x30] | var_30h = r3;
| goto label_62;
| }
| if (r1 != 0x3a) {
| label_62:
0x0000b1b8 bne.w 0xb064 | goto label_11;
| }
0x0000b1bc b 0xb08e | goto label_12;
| label_50:
0x0000b1be ldr r1, [sp, 0x38] | r1 = var_38h;
0x0000b1c0 mov r0, r8 | r0 = r8;
0x0000b1c2 str r2, [sp, 0x2c] | var_2ch = r2;
0x0000b1c4 blx 0x19f8 | uname ();
0x0000b1c8 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000b1ca cmp r0, 0 |
| if (r0 != 0) {
0x0000b1cc bne.w 0xb064 | goto label_11;
| }
0x0000b1d0 movs r3, 2 | r3 = 2;
0x0000b1d2 str r3, [sp, 0x30] | var_30h = r3;
0x0000b1d4 b 0xb08e | goto label_12;
| label_47:
0x0000b1d6 str r0, [sp, 0x28] | var_28h = r0;
0x0000b1d8 b 0xb024 | goto label_9;
| label_52:
0x0000b1da ldr r1, [sp, 0x34] | r1 = var_34h;
0x0000b1dc adds r1, 1 | r1++;
0x0000b1de adds r3, r1, r2 | r3 = r1 + r2;
0x0000b1e0 str r3, [sp, 0x34] | var_34h = r3;
0x0000b1e2 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000b1e4 adds r3, 1 | r3++;
0x0000b1e6 str r3, [sp, 0x40] | var_40h = r3;
0x0000b1e8 b 0xb08e | goto label_12;
| label_56:
0x0000b1ea ldrb r3, [r7] | r3 = *(r7);
0x0000b1ec cmp r3, 0x70 |
| if (r3 != 0x70) {
0x0000b1ee bne 0xb12a | goto label_13;
| }
0x0000b1f0 ldrb r3, [r7, 1] | r3 = *((r7 + 1));
0x0000b1f2 adds r1, r7, 1 | r1 = r7 + 1;
0x0000b1f4 cmp r3, 0x72 |
| if (r3 != 0x72) {
0x0000b1f6 bne 0xb12a | goto label_13;
| }
0x0000b1f8 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x0000b1fc cmp r3, 0x65 |
| if (r3 != 0x65) {
0x0000b1fe bne 0xb12a | goto label_13;
| }
0x0000b200 ldrb r3, [r1, 1] | r3 = *((r1 + 1));
0x0000b202 cmp r3, 0x3a |
0x0000b204 itt eq |
| if (r3 != 0x3a) {
0x0000b206 moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0x3a) {
0x0000b208 streq r3, [sp, 0x2c] | var_2ch = r3;
| goto label_63;
| }
| if (r3 != 0x3a) {
| label_63:
0x0000b20a bne 0xb12a | goto label_13;
| }
0x0000b20c b 0xb146 | goto label_14;
| label_57:
0x0000b20e ldr r1, [sp, 0x3c] | r1 = var_3ch;
0x0000b210 mov r0, r7 | r0 = r7;
0x0000b212 str r2, [sp, 0x28] | var_28h = r2;
0x0000b214 blx 0x19f8 | uname ();
0x0000b218 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000b21a cmp r0, 0 |
| if (r0 != 0) {
0x0000b21c bne 0xb12a | goto label_13;
| }
0x0000b21e movs r3, 2 | r3 = 2;
0x0000b220 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000b222 b 0xb146 | goto label_14;
| label_54:
0x0000b224 mov r8, r3 | r8 = r3;
0x0000b226 b 0xb0f2 | goto label_10;
| label_55:
0x0000b228 mov r7, r5 | r7 = r5;
0x0000b22a b 0xb0f2 | goto label_10;
| label_48:
0x0000b22c mov r8, r6 | r8 = r6;
0x0000b22e b 0xb024 | goto label_9;
| label_43:
0x0000b230 mov r6, r4 | r6 = r4;
0x0000b232 movs r2, 3 | r2 = 3;
0x0000b234 b 0xad34 | goto label_7;
| label_59:
0x0000b244 str r3, [sp, 0x48] | var_48h = r3;
0x0000b246 mov r1, r7 | r1 = r7;
0x0000b248 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000b24a ldr r6, [sp, 0x34] | r6 = var_34h;
0x0000b24c ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x0000b24e ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000b250 str.w r6, [r0, r3, lsl 2] | __asm ("str.w r6, [r0, r3, lsl 2]");
0x0000b254 adds r3, 1 | r3++;
0x0000b256 str r3, [sp, 0x40] | var_40h = r3;
| do {
0x0000b258 mov r0, r6 | r0 = r6;
0x0000b25a str r2, [sp, 0x28] | var_28h = r2;
0x0000b25c blx 0x19c8 | mmap64 ()
0x0000b260 ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000b262 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000b264 strb r3, [r6, r2] | *((r6 + r2)) = r3;
0x0000b266 adds r2, 1 | r2++;
0x0000b268 adds r3, r6, r2 | r3 = r6 + r2;
0x0000b26a str r3, [sp, 0x34] | var_34h = r3;
0x0000b26c ldrb r6, [r5, -0x1] | r6 = *((r5 - 0x1));
0x0000b270 b 0xb146 | goto label_14;
| label_60:
0x0000b272 str r3, [sp, 0x48] | var_48h = r3;
0x0000b274 mov r1, r7 | r1 = r7;
0x0000b276 ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000b278 ldr r6, [sp, 0x34] | r6 = var_34h;
0x0000b27a ldr r0, [r3, 8] | r0 = *((r3 + 8));
0x0000b27c ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000b27e str.w r6, [r0, r3, lsl 2] | __asm ("str.w r6, [r0, r3, lsl 2]");
0x0000b282 adds r3, 1 | r3++;
0x0000b284 str r3, [sp, 0x44] | var_44h = r3;
0x0000b286 b 0xb258 |
| } while (1);
| label_40:
0x0000b288 rsbs r0, r6, 0 | r0 = r6 - ;
0x0000b28a blx 0x1b18 | system (r0);
0x0000b28e b 0xae1a | goto label_15;
| label_18:
0x0000b290 mov r7, r5 | r7 = r5;
0x0000b292 b.w 0xa99c | goto label_16;
| label_22:
0x0000b296 ldr r7, [sp, 0x18] | r7 = var_18h;
0x0000b298 b 0xaf9a | goto label_17;
| label_27:
0x0000b29a mov r0, r4 | r0 = r4;
0x0000b29c blx 0x1dbc | fcn_00001dbc ();
0x0000b2a0 b.w 0xa9d8 | goto label_5;
| label_42:
0x0000b2a4 blx 0x1a1c | stat64 ();
| label_61:
0x0000b2a8 ldr r0, [sp, 0x30] | r0 = var_30h;
0x0000b2aa blx 0x19a0 | fcn_000019a0 ();
0x0000b2ae b.w 0xaaa0 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xb4e8 */
| #include <stdint.h>
|
| #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
| ((n & 0x0000ff00) << 8) | \
| ((n & 0x00ff0000) >> 8) | \
| ((n & 0xff000000) >> 24)))
|
; (fcn) fcn.0000b4e8 () | void fcn_0000b4e8 (int16_t arg_3d8h, int16_t arg1, uint32_t arg2) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_0h;
| int16_t var_90h;
| int16_t var_118h;
| int16_t var_20ch;
| int16_t var_214h;
| r0 = arg1;
| r1 = arg2;
0x0000b4e8 ldr r2, [pc, 0x15c] |
0x0000b4ea ldr r3, [pc, 0x160] | r3 = *(0xb64e);
0x0000b4ec push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000b4f0 sub.w sp, sp, 0x214 |
0x0000b4f4 add r2, pc | r2 = 0x16b40;
0x0000b4f6 ldr r5, [r0, 4] | r5 = *((r0 + 4));
0x0000b4f8 ldr r3, [r2, r3] |
0x0000b4fa ldr r3, [r3] | r3 = *(0x16b40);
0x0000b4fc str r3, [sp, 0x20c] | var_20ch = r3;
0x0000b4fe mov.w r3, 0 | r3 = 0;
0x0000b502 bics r3, r1, 0xf0000000 | __asm ("bics r3, r1, 0xf0000000");
| if (? == ?) {
0x0000b506 beq.w 0xb63c | goto label_4;
| }
0x0000b50a cmp r1, 0 |
0x0000b50c mov fp, r0 |
0x0000b50e mov r6, r1 | r6 = r1;
0x0000b510 add r5, r3 | r5 += r3;
| if (r1 < 0) {
0x0000b512 blt 0xb5ec | goto label_5;
| }
0x0000b514 ldr r3, [pc, 0x138] |
0x0000b516 ands r4, r6, 0x20000000 | r4 = r6 & 0x20000000;
0x0000b51a add r3, pc | r3 = 0x16b6e;
0x0000b51c str r3, [sp, 4] | var_4h = r3;
| if (r4 == r6) {
0x0000b51e beq 0xb600 | goto label_6;
| }
| label_0:
0x0000b520 ldrb.w sb, [r5] | sb = *(r5);
0x0000b524 adds r7, r5, 2 | r7 = r5 + 2;
0x0000b526 ldrb.w sl, [r5, 1] | sl = *((r5 + 1));
0x0000b52a sub.w lr, sl, sb | lr = sl - sb;
0x0000b52e add.w r4, lr, 1 | r4 = lr + 1;
0x0000b532 add.w r0, lr, 6 | r0 = lr + 6;
0x0000b536 cmp r4, 0 |
0x0000b538 mov ip, r4 |
| if (r4 <= 0) {
0x0000b53a ble.w 0xb640 | goto label_7;
| }
0x0000b53e add.w lr, r5, lr, lsl 2 | lr = r5 + (lr << 2);
0x0000b542 mov r2, r7 | r2 = r7;
0x0000b544 add r5, sp, 0xc | r5 += var_ch;
0x0000b546 add.w lr, lr, 6 | lr += 6;
| do {
0x0000b54a ldr r3, [r2], 4 | r3 = *(r2);
| r2 += 4;
0x0000b54e cmp lr, r2 |
0x0000b550 rev r3, r3 | r3 = SWAP32 (r3);
0x0000b552 str r3, [r5], 4 | *(r5) = r3;
| r5 += 4;
0x0000b556 bne 0xb54a |
| } while (lr != r2);
0x0000b558 add.w r5, r7, ip, lsl 2 | r5 = r7 + (ip << 2);
| label_3:
0x0000b55c lsls r3, r6, 1 | r3 = r6 << 1;
| if (r3 >= r6) {
0x0000b55e bpl 0xb60e | goto label_8;
| }
| label_1:
0x0000b560 ldr r7, [r5], 4 | r7 = *(r5);
| r5 += 4;
0x0000b564 rev r7, r7 | r7 = SWAP32 (r7);
0x0000b566 add.w r8, r7, r7, lsl 1 | r8 = r7 + (r7 << 1);
0x0000b56a add r0, r8 | r0 += r8;
0x0000b56c lsls r0, r0, 2 | r0 <<= 2;
0x0000b56e blx 0x1b0c | r0 = strerror (r0);
0x0000b572 mov r6, r0 | r6 = r0;
0x0000b574 cmp r0, 0 |
| if (r0 == 0) {
0x0000b576 beq 0xb63c | goto label_4;
| }
0x0000b578 ldr r3, [sp, 4] | r3 = var_4h;
0x0000b57a lsls r2, r4, 2 | r2 = r4 << 2;
0x0000b57c str.w fp, [r0] | __asm ("str.w fp, [r0]");
0x0000b580 adds r0, 0x14 | r0 += 0x14;
0x0000b582 str r3, [r0, -0x10] | *((r0 - 0x10)) = r3;
0x0000b586 cmp r7, 0 |
| if (r7 == 0) {
0x0000b588 beq 0xb626 | goto label_9;
| }
0x0000b58a add.w r4, r2, 0x14 | r4 = r2 + 0x14;
0x0000b58e add r1, sp, 0xc | r1 += var_ch;
0x0000b590 add r4, r6 | r4 += r6;
0x0000b592 strb.w sb, [r6, 0x10] | *((r6 + 0x10)) = sb;
0x0000b596 strb.w sl, [r6, 0x11] | *((r6 + 0x11)) = sl;
0x0000b59a str r7, [r6, 0xc] | *((r6 + 0xc)) = r7;
0x0000b59c str r4, [r6, 8] | *((r6 + 8)) = r4;
0x0000b59e blx 0x19c8 | mmap64 ()
0x0000b5a2 cmp r7, 0 |
| if (r7 <= 0) {
0x0000b5a4 ble 0xb5ce | goto label_2;
| }
0x0000b5a6 add.w r8, r4, r8, lsl 2 | r8 = r4 + (r8 << 2);
| do {
0x0000b5aa ldr r3, [r5], 4 | r3 = *(r5);
| r5 += 4;
0x0000b5ae adds r4, 0xc | r4 += 0xc;
0x0000b5b0 rev r3, r3 | r3 = SWAP32 (r3);
0x0000b5b2 mov r0, r5 | r0 = r5;
0x0000b5b4 str r3, [r4, -0xc] | *((r4 - 0xc)) = r3;
0x0000b5b8 blx 0x1bb0 | fcn_00001bb0 ();
0x0000b5bc cmp r8, r4 |
0x0000b5be add.w r3, r0, 1 | r3 = r0 + 1;
0x0000b5c2 str r5, [r4, -0x4] | *((r4 - 0x4)) = r5;
0x0000b5c6 add r5, r3 | r5 += r3;
0x0000b5c8 str r0, [r4, -0x8] | *((r4 - 0x8)) = r0;
0x0000b5cc bne 0xb5aa |
| } while (r8 != r4);
| label_2:
0x0000b5ce ldr r2, [pc, 0x84] |
0x0000b5d0 ldr r3, [pc, 0x78] | r3 = *(0xb64c);
0x0000b5d2 add r2, pc | r2 = 0x16c2c;
0x0000b5d4 ldr r3, [r2, r3] | r3 = *(0x16c2c);
0x0000b5d6 ldr r2, [r3] | r2 = *(0x16c2c);
0x0000b5d8 ldr r3, [sp, 0x20c] | r3 = var_20ch;
0x0000b5da eors r2, r3 | r2 ^= r3;
0x0000b5dc mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000b5e0 bne 0xb644 | goto label_10;
| }
0x0000b5e2 mov r0, r6 | r0 = r6;
0x0000b5e4 add.w sp, sp, 0x214 |
0x0000b5e8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_5:
0x0000b5ec mov r0, r5 | r0 = r5;
0x0000b5ee str r5, [sp, 4] | var_4h = r5;
0x0000b5f0 blx 0x1bb0 | fcn_00001bb0 ();
0x0000b5f4 ands r4, r6, 0x20000000 | r4 = r6 & 0x20000000;
0x0000b5f8 add.w r0, r0, 1 | r0++;
0x0000b5fc add r5, r0 | r5 += r0;
| if (r4 != r6) {
0x0000b5fe bne 0xb520 | goto label_0;
| }
| label_6:
0x0000b600 lsls r3, r6, 1 | r3 = r6 << 1;
0x0000b602 mov.w r0, 5 | r0 = 5;
0x0000b606 mov sl, r4 | sl = r4;
0x0000b608 mov.w sb, 0x80 | sb = 0x80;
| if (r3 < r6) {
0x0000b60c bmi 0xb560 | goto label_1;
| }
| label_8:
0x0000b60e lsls r0, r0, 2 | r0 <<= 2;
0x0000b610 blx 0x1b0c | r0 = strerror (r0);
0x0000b614 mov r6, r0 | r6 = r0;
| if (r0 != 0) {
0x0000b616 cbz r0, 0xb63c |
0x0000b618 ldr r3, [sp, 4] | r3 = var_4h;
0x0000b61a lsls r2, r4, 2 | r2 = r4 << 2;
0x0000b61c add.w r0, r6, 0x14 | r0 = r6 + 0x14;
0x0000b620 str.w fp, [r6] | __asm ("str.w fp, [r6]");
0x0000b624 str r3, [r6, 4] | *((r6 + 4)) = r3;
| label_9:
0x0000b626 movs r3, 0 | r3 = 0;
0x0000b628 add r1, sp, 0xc | r1 += var_ch;
0x0000b62a strb.w sb, [r6, 0x10] | *((r6 + 0x10)) = sb;
0x0000b62e strb.w sl, [r6, 0x11] | *((r6 + 0x11)) = sl;
0x0000b632 strd r3, r3, [r6, 8] | __asm ("strd r3, r3, [r6, 8]");
0x0000b636 blx 0x19c8 | mmap64 ()
0x0000b63a b 0xb5ce | goto label_2;
| }
| label_4:
0x0000b63c movs r6, 0 | r6 = 0;
0x0000b63e b 0xb5ce | goto label_2;
| label_7:
0x0000b640 mov r5, r7 | r5 = r7;
0x0000b642 b 0xb55c | goto label_3;
| label_10:
0x0000b644 blx 0x1a1c | stat64 ();
0x0000b648 add r1, sp, 0x90 | r1 += var_90h;
0x0000b64a movs r1, r0 | r1 = r0;
0x0000b64c lsls r4, r7, 6 | r4 = r7 << 6;
0x0000b64e movs r0, r0 |
0x0000b650 str r4, [sp, 0x3d8] | *(arg_3d8h) = r4;
0x0000b652 movs r0, r0 |
0x0000b654 add r0, sp, 0x118 | r0 += var_118h;
0x0000b656 movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xb658 */
| #include <stdint.h>
|
; (fcn) fcn.0000b658 () | void fcn_0000b658 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000b658 invalid |
0x0000b65c mov r5, r0 | r5 = r0;
0x0000b65e ldr r4, [r0] | r4 = *(r0);
0x0000b660 mov sb, r1 | sb = r1;
0x0000b662 mov r8, r2 | r8 = r2;
0x0000b664 mov r6, r3 | r6 = r3;
| if (r4 != 0) {
0x0000b666 cbnz r4, 0xb670 | goto label_0;
| }
0x0000b668 b 0xb676 | goto label_1;
| do {
0x0000b66a mov r5, r4 | r5 = r4;
0x0000b66c ldr r4, [r4] | r4 = *(r4);
| if (r4 == 0) {
0x0000b66e cbz r4, 0xb676 | goto label_1;
| }
| label_0:
0x0000b670 ldr r3, [r4, 4] | r3 = *((r4 + 4));
0x0000b672 cmp r3, r6 |
0x0000b674 blo 0xb66a |
| } while (r3 <= r6);
| label_1:
0x0000b676 add.w r0, r8, 0xd | r0 = r8 + 0xd;
0x0000b67a blx 0x1b0c | r0 = strerror (r0);
0x0000b67e mov r7, r0 | r7 = r0;
| if (r0 != 0) {
0x0000b680 cbz r0, 0xb69e |
0x0000b682 str.w r8, [r0, 8] | __asm ("str.w r8, [r0, 8]");
0x0000b686 mov r2, r8 | r2 = r8;
0x0000b688 str r4, [r0] | *(r0) = r4;
0x0000b68a mov r1, sb | r1 = sb;
0x0000b68c str r6, [r0, 4] | *((r0 + 4)) = r6;
0x0000b68e adds r0, 0xc | r0 += 0xc;
0x0000b690 blx 0x19c8 | mmap64 ()
0x0000b694 add r8, r7 | r8 += r7;
0x0000b696 movs r3, 0 | r3 = 0;
0x0000b698 strb.w r3, [r8, 0xc] | *((r8 + 0xc)) = r3;
0x0000b69c str r7, [r5] | *(r5) = r7;
| }
0x0000b69e pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xc4d4 */
| #include <stdint.h>
|
; (fcn) fcn.0000c4d4 () | void fcn_0000c4d4 (int16_t arg1, int16_t arg2, char * arg3, char * arg4) {
| int16_t var_20h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000c4d4 invalid |
0x0000c4d8 mov r7, r0 | r7 = r0;
0x0000c4da ldr r5, [sp, 0x20] | r5 = var_20h;
0x0000c4dc mov r6, r2 | r6 = r2;
0x0000c4de mov sb, r1 | sb = r1;
0x0000c4e0 mov r8, r3 | r8 = r3;
0x0000c4e2 adds r0, r5, 6 | r0 = r5 + 6;
0x0000c4e4 add r0, r2 | r0 += r2;
0x0000c4e6 blx 0x1b0c | r0 = strerror (r0);
0x0000c4ea mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000c4ec cbz r0, 0xc538 | goto label_0;
| }
0x0000c4ee adds r0, r5, 5 | r0 = r5 + 5;
0x0000c4f0 mov r1, sb | r1 = sb;
0x0000c4f2 add r0, r4 | r0 += r4;
0x0000c4f4 mov r2, r6 | r2 = r6;
0x0000c4f6 str r0, [r4] | *(r4) = r0;
0x0000c4f8 blx 0x19c8 | mmap64 ()
0x0000c4fc mov r0, r4 | r0 = r4;
0x0000c4fe mov r1, r8 | r1 = r8;
0x0000c500 ldr r3, [r0], 4 | r3 = *(r0);
| r0 += 4;
0x0000c504 mov.w r8, 0 | r8 = 0;
0x0000c508 mov r2, r5 | r2 = r5;
0x0000c50a add r5, r4 | r5 += r4;
0x0000c50c strb.w r8, [r3, r6] | *((r3 + r6)) = r8;
0x0000c510 blx 0x19c8 | mmap64 ()
0x0000c514 strb.w r8, [r5, 4] | *((r5 + 4)) = r8;
0x0000c518 mov r1, r4 | r1 = r4;
0x0000c51a ldr r0, [r7] | r0 = *(r7);
0x0000c51c bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000c520 mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000c522 cbz r0, 0xc52c | goto label_1;
| }
0x0000c524 str r0, [r7] | *(r7) = r0;
| do {
0x0000c526 mov r0, r5 | r0 = r5;
0x0000c528 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x0000c52c mov r0, r4 | r0 = r4;
0x0000c52e blx 0x19a0 | fcn_000019a0 ();
0x0000c532 mov r0, r5 | r0 = r5;
0x0000c534 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_0:
0x0000c538 mov r5, r0 | r5 = r0;
0x0000c53a b 0xc526 |
| } while (1);
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xc7f0 */
| #include <stdint.h>
|
; (fcn) fcn.0000c7f0 () | void fcn_0000c7f0 (int16_t arg_20h, int16_t arg_24h, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000c7f0 push.w {r3, r4, r5, r6, r7, r8, sb, lr} |
0x0000c7f4 mov r7, r0 | r7 = r0;
0x0000c7f6 mov r5, r2 | r5 = r2;
0x0000c7f8 mov r8, r3 | r8 = r3;
0x0000c7fa mov sb, r1 | sb = r1;
0x0000c7fc bl 0x9c64 | r0 = fcn_00009c64 (r0, r1);
0x0000c800 cmp r0, 0 |
| if (r0 != 0) {
0x0000c802 bne 0xc874 | goto label_0;
| }
0x0000c804 cmp.w r8, 0 |
| if (r8 == 0) {
0x0000c808 beq 0xc884 | goto label_1;
| }
0x0000c80a ldr r3, [sp, 0x20] | r3 = *(arg_20h);
0x0000c80c mov r6, r0 | r6 = r0;
0x0000c80e add.w r8, r3, 2 | r8 = r3 + 2;
0x0000c810 lsrs r2, r0, 0x20 | r2 = r0 >> 0x20;
0x0000c812 add r8, r5 | r8 += r5;
0x0000c814 lsl.w r0, r8, 1 | r0 = r8 << 1;
0x0000c816 lsls r0, r1, 1 | r0 = r1 << 1;
0x0000c818 adds r0, 0x3c | r0 += 0x3c;
0x0000c81a blx 0x1b0c | strerror (r0);
0x0000c81c ldrd r4, r6, [r8, -0x10]! | __asm ("ldrd r4, r6, [r8, -0x10]!");
0x0000c81e mov r4, r0 | r4 = r0;
0x0000c820 cmp r0, 0 |
| if (r0 == 0) {
0x0000c822 beq 0xc8ba | goto label_2;
| }
0x0000c824 movs r2, 0x3c | r2 = 0x3c;
0x0000c826 mov r1, r6 | r1 = r6;
0x0000c828 blx 0x1c2c | strtoull (r0, r1, r2);
0x0000c82c mov r0, r7 | r0 = r7;
0x0000c82e bl 0x9afc | fcn_00009afc (r0);
0x0000c832 mov r3, r4 | r3 = r4;
0x0000c834 mov r2, r8 | r2 = r8;
0x0000c836 str r0, [r3], 0x3c | *(r3) = r0;
| r3 += 0x3c;
0x0000c838 lsrs r4, r7, 0xc | r4 = r7 >> 0xc;
0x0000c83a mov r1, sb | r1 = sb;
0x0000c83c mov r0, r3 | r0 = r3;
0x0000c83e str r3, [r4, 8] | *((r4 + 8)) = r3;
0x0000c840 blx 0x19c8 | mmap64 ()
0x0000c844 strb r6, [r0, r5] | *((r0 + r5)) = r6;
0x0000c846 adds r5, 1 | r5++;
0x0000c848 ldr r0, [r4, 8] | r0 = *((r4 + 8));
0x0000c84a mov r1, sb | r1 = sb;
0x0000c84c mov r2, r8 | r2 = r8;
0x0000c84e add r5, r0 | r5 += r0;
0x0000c850 add r0, r8 | r0 += r8;
0x0000c852 str r5, [r4, 0x20] | *((r4 + 0x20)) = r5;
0x0000c854 str r0, [r4, 4] | *((r4 + 4)) = r0;
0x0000c856 blx 0x19c8 | mmap64 ()
0x0000c85a ldr r5, [r4, 4] | r5 = *((r4 + 4));
| do {
0x0000c85c movs r3, 1 | r3 = 1;
0x0000c85e mov r0, r7 | r0 = r7;
0x0000c860 str r3, [r4, 0x2c] | *((r4 + 0x2c)) = r3;
0x0000c862 mov r2, r5 | r2 = r5;
0x0000c864 mov r1, r4 | r1 = r4;
0x0000c866 bl 0x9c6c | fcn_00009c6c (r0, r1, r2);
0x0000c86a ldr r3, [sp, 0x24] | r3 = *(arg_24h);
0x0000c86c movs r0, 0 | r0 = 0;
0x0000c86e str r4, [r3] | *(r3) = r4;
0x0000c870 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_0:
0x0000c874 bl 0xc7e4 | fcn_0000c7e4 (r0);
0x0000c878 ldr r2, [sp, 0x24] | r2 = *(arg_24h);
0x0000c87a mov r3, r0 | r3 = r0;
0x0000c87c movs r0, 0 | r0 = 0;
0x0000c87e str r3, [r2] | *(r2) = r3;
0x0000c880 pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| label_1:
0x0000c884 add.w r0, r5, 0x3d | r0 = r5 + 0x3d;
0x0000c888 adds r6, r5, 1 | r6 = r5 + 1;
0x0000c88a blx 0x1b0c | r0 = strerror (r0);
0x0000c88e mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000c890 cbz r0, 0xc8ba | goto label_2;
| }
0x0000c892 movs r2, 0x3c | r2 = 0x3c;
0x0000c894 mov r1, r8 | r1 = r8;
0x0000c896 mov r5, r4 | r5 = r4;
0x0000c898 blx 0x1c2c | strtoull (r0, r1, r2);
0x0000c89a strd r4, r6, [r8, 0xe0] | __asm ("strd r4, r6, [r8, 0xe0]");
0x0000c89e bl 0x9afc | fcn_00009afc (r0);
0x0000c8a2 mov r2, r6 | r2 = r6;
0x0000c8a4 str r0, [r5], 0x3c | *(r5) = r0;
| r5 += 0x3c;
0x0000c8a8 mov r1, sb | r1 = sb;
0x0000c8aa mov r0, r5 | r0 = r5;
0x0000c8ac str r5, [r4, 8] | *((r4 + 8)) = r5;
0x0000c8ae blx 0x19c8 | mmap64 ()
0x0000c8b2 str r5, [r4, 4] | *((r4 + 4)) = r5;
0x0000c8b4 str.w r8, [r4, 0x20] | __asm ("str.w r8, [r4, 0x20]");
0x0000c8b8 b 0xc85c |
| } while (1);
| label_2:
0x0000c8ba mvn r0, 0xb | r0 = ~0xb;
0x0000c8be pop.w {r3, r4, r5, r6, r7, r8, sb, pc} |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xca04 */
| #include <stdint.h>
|
; (fcn) fcn.0000ca04 () | void fcn_0000ca04 (int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_0h;
| void * ptr;
| int16_t var_10h;
| int16_t var_230h;
| int16_t var_1000h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000ca04 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000ca08 mov r5, r1 | r5 = r1;
0x0000ca0a ldr r1, [pc, 0xa4] |
0x0000ca0c mov r7, r2 | r7 = r2;
0x0000ca0e mov r8, r0 | r8 = r0;
0x0000ca10 mov r0, r2 | r0 = r2;
0x0000ca12 ldr r2, [pc, 0xa0] | r2 = *(0xcab6);
0x0000ca14 sub.w sp, sp, 0x1000 |
0x0000ca18 add r1, pc | r1 = 0x194ce;
0x0000ca1a sub sp, 0x10 |
0x0000ca1c add.w r4, sp, 0x1000 | r4 += var_1000h;
0x0000ca20 mov sb, r3 | sb = r3;
0x0000ca22 ldr r2, [r1, r2] |
0x0000ca24 adds r4, 0xc | r4 += 0xc;
0x0000ca26 ldr r2, [r2] | r2 = *(0x194ce);
0x0000ca28 str r2, [r4] | *(r4) = r2;
0x0000ca2a mov.w r2, 0 | r2 = 0;
0x0000ca2e blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000ca32 mov r4, r0 | r4 = r0;
0x0000ca34 mov r0, r5 | r0 = r5;
0x0000ca36 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000ca3a adds r2, r4, r0 | r2 = r4 + r0;
0x0000ca3c adds r2, 2 | r2 += 2;
0x0000ca3e cmp.w r2, 0x1000 |
| if (r2 > 0x1000) {
0x0000ca42 bhi 0xcaa6 | goto label_0;
| }
0x0000ca44 add.w sl, sp, 0xc | sl += ptr;
0x0000ca48 mov r6, r0 | r6 = r0;
0x0000ca4a mov r1, r7 | r1 = r7;
0x0000ca4c mov.w r3, 0x1000 | r3 = 0x1000;
0x0000ca50 mov r2, r4 | r2 = r4;
0x0000ca52 mov r0, sl | r0 = sl;
0x0000ca54 blx 0x1a4c | fwrite (r0, r1, r2, r3);
0x0000ca58 adds r0, r4, 1 | r0 = r4 + 1;
0x0000ca5a adds r2, r6, 1 | r2 = r6 + 1;
0x0000ca5c mov r1, r5 | r1 = r5;
0x0000ca5e add r7, sp, 0x10 | r7 += var_10h;
0x0000ca60 add r0, sl | r0 += sl;
0x0000ca62 add r7, r4 | r7 += r4;
0x0000ca64 blx 0x19c8 | mmap64 ()
0x0000ca66 vext.16 d4, d0, d18, 3 | __asm ("vext.16 d4, d0, d18, 3");
0x0000ca6a movs r4, 0x5c | r4 = 0x5c;
0x0000ca6c strd r6, sb, [sp] | __asm ("strd r6, sb, [sp]");
0x0000ca70 mov r3, r5 | r3 = r5;
0x0000ca72 mov r1, sl | r1 = sl;
0x0000ca74 mov r0, r8 | r0 = r8;
0x0000ca76 strb r4, [r7, -0x4] | *((r7 - 0x4)) = r4;
0x0000ca7a bl 0xc7f0 | r0 = fcn_0000c7f0 (r0, r1, r2, r3, r4, r5);
0x0000ca7e and.w r0, r0, r0, asr 31 | r0 &= (r0 >> 31);
| do {
0x0000ca82 ldr r2, [pc, 0x34] |
0x0000ca84 add.w r1, sp, 0x1000 | r1 += var_1000h;
0x0000ca88 ldr r3, [pc, 0x28] | r3 = *(0xcab4);
0x0000ca8a adds r1, 0xc | r1 += 0xc;
0x0000ca8c add r2, pc | r2 = 0x1954a;
0x0000ca8e ldr r3, [r2, r3] | r3 = *(0x1954a);
0x0000ca90 ldr r2, [r3] | r2 = *(0x1954a);
0x0000ca92 ldr r3, [r1] | r3 = *(r1);
0x0000ca94 eors r2, r3 | r2 ^= r3;
0x0000ca96 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000ca9a bne 0xcaac | goto label_1;
| }
0x0000ca9c add.w sp, sp, 0x1000 |
0x0000caa0 add sp, 0x10 |
0x0000caa2 pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_0:
0x0000caa6 mvn r0, 0x23 | r0 = ~0x23;
0x0000caaa b 0xca82 |
| } while (1);
| label_1:
0x0000caac blx 0x1a1c | stat64 ();
0x0000cab0 str r4, [sp] | *(sp) = r4;
0x0000cab2 movs r1, r0 | r1 = r0;
0x0000cab4 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000cab6 movs r0, r0 |
0x0000cab8 str r3, [sp, 0x230] | var_230h = r3;
0x0000caba movs r1, r0 | r1 = r0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xcb70 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0000cb70 () | void fcn_0000cb70 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_ch_2;
| int32_t var_8h_2;
| FILE * stream;
| int16_t var_20h;
| int16_t var_190h;
| int16_t var_270h;
| int16_t var_1000h;
| int32_t var_0h_2;
| int16_t var_1020h;
| r0 = arg1;
| r1 = arg2;
0x0000cb70 blmi 0x1cdf540 | __asm ("blmi 0x1cdf540");
0x0000cb74 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000cb78 sub.w sp, sp, 0x1020 |
0x0000cb7c add r2, pc | r2 += pc;
0x0000cb7e sub sp, 4 |
0x0000cb80 mov r6, r0 | r6 = r0;
0x0000cb82 add.w r0, sp, 0x1000 | r0 += var_1000h;
0x0000cb86 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000cb88 adds r0, 0x1c | r0 += 0x1c;
0x0000cb8a ldr r3, [r3] | r3 = *(r3);
0x0000cb8c str r3, [r0] | *(r0) = r3;
0x0000cb8e mov.w r3, 0 | r3 = 0;
0x0000cb92 ldrb.w r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0000cb96 lsls r2, r3, 0x1f | r2 = r3 << 0x1f;
0x0000cb98 it mi |
| if (r2 >= r3) {
0x0000cb9a ldrmi r4, [r6, 0x28] | r4 = *((r6 + 0x28));
| }
| if (r2 < r3) {
0x0000cb9c bmi.w 0xccaa | goto label_2;
| }
0x0000cba0 ldr r5, [r6, 0x10] | r5 = *((r6 + 0x10));
0x0000cba2 ldr.w sb, [r6] | sb = *(r6);
0x0000cba6 cmp r5, 0 |
| if (r5 != 0) {
0x0000cba8 bne.w 0xcd28 | goto label_6;
| }
0x0000cbac mov r4, r1 | r4 = r1;
0x0000cbae orr r3, r3, 1 | r3 |= 1;
0x0000cbb2 movs r1, 0x3a | r1 = 0x3a;
0x0000cbb4 mov r0, r4 | r0 = r4;
0x0000cbb6 strb.w r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
0x0000cbba blx 0x1bbc | r0 = fcn_00001bbc ();
0x0000cbbe mov r8, r0 | r8 = r0;
0x0000cbc0 cmp r0, 0 |
| if (r0 == 0) {
0x0000cbc2 beq.w 0xcce6 | goto label_4;
| }
0x0000cbc6 strb r5, [r0] | *(r0) = r5;
0x0000cbc8 ldr r0, [r6] | r0 = *(r6);
0x0000cbca bl 0x9af8 | r0 = fcn_00009af8 (r0);
0x0000cbce mov r7, r0 | r7 = r0;
0x0000cbd0 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000cbd4 adds r3, r0, 2 | r3 = r0 + 2;
0x0000cbd6 mov sl, r0 | sl = r0;
0x0000cbd8 cmp.w r3, 0x1000 |
0x0000cbdc str r3, [sp] | *(sp) = r3;
| if (r3 >= 0x1000) {
0x0000cbde bhs.w 0xcce6 | goto label_4;
| }
0x0000cbe2 mov r1, r7 | r1 = r7;
0x0000cbe4 add r7, sp, 0x20 | r7 += var_20h;
0x0000cbe6 subs r3, r7, 4 | r3 -= stream;
0x0000cbe8 mov r2, sl | r2 = sl;
0x0000cbea mov r0, r3 | r0 = r3;
0x0000cbec str r3, [sp, 4] | var_4h = r3;
0x0000cbee mov.w r3, 0x1000 | r3 = 0x1000;
0x0000cbf2 add.w fp, sl, 1 |
0x0000cbf6 blx 0x1a4c | fwrite (r0, r1, r2, r3);
0x0000cbfa ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x0000cbfc movs r2, 0x2f | r2 = 0x2f;
0x0000cbfe add sl, r7 | sl += r7;
0x0000cc00 strb r2, [sl, -0x4] | *((sl - 0x4)) = r2;
0x0000cc04 add.w r2, r7, fp | r2 = r7 + fp;
0x0000cc08 strb r5, [r2, -0x4] | *((r2 - 0x4)) = r5;
0x0000cc0c cmp r3, 0 |
| if (r3 == 0) {
0x0000cc0e beq 0xccd0 | goto label_7;
| }
| label_3:
0x0000cc10 ldr r1, [pc, 0x130] |
0x0000cc12 sub.w sl, r7, 0xc | sl -= var_ch_2;
0x0000cc16 add.w r0, r8, 1 | r0 = r8 + 1;
0x0000cc1a mov r2, sl | r2 = sl;
0x0000cc1c add r1, pc | r1 = 0x19964;
0x0000cc1e blx 0x1aac | r0 = opendir ();
0x0000cc22 cmp r0, 0 |
| if (r0 == 0) {
0x0000cc24 beq 0xcd1e | goto label_8;
| }
0x0000cc26 ldr r3, [sp, 4] | r3 = var_4h;
0x0000cc28 mov.w r8, 0 | r8 = 0;
0x0000cc2c str r6, [sp, 0xc] | var_ch = r6;
0x0000cc2e mov r4, r8 | r4 = r8;
0x0000cc30 mov r6, r0 | r6 = r0;
0x0000cc32 add r3, fp | r3 += fp;
0x0000cc34 ldr.w fp, [pc, 0x110] |
0x0000cc38 str r3, [sp, 8] | var_8h = r3;
0x0000cc3a add fp, pc | fp = 0x19986;
0x0000cc3c b 0xcc7a | goto label_9;
| label_0:
0x0000cc3e mov r1, r6 | r1 = r6;
0x0000cc40 adds r2, r0, 1 | r2 = r0 + 1;
0x0000cc42 ldr r0, [sp, 8] | r0 = var_8h;
0x0000cc44 blx 0x19c8 | mmap64 ()
0x0000cc48 ldr r6, [sp, 4] | r6 = var_4h;
| do {
0x0000cc4a mov r1, r6 | r1 = r6;
0x0000cc4c sub.w r2, r7, 8 | r2 -= var_8h_2;
0x0000cc50 mov r0, sb | r0 = sb;
0x0000cc52 bl 0xc8c4 | r0 = fcn_0000c8c4 (r0, r1, r2);
0x0000cc56 subs r4, r0, 0 | r4 = r0 - 0;
| if (r4 < r0) {
0x0000cc58 blt 0xccea | goto label_10;
| }
0x0000cc5a ldr r1, [r7, -0x8] | r1 = *((r7 - 0x8));
0x0000cc5e mov r0, r5 | r0 = r5;
0x0000cc60 bl 0xa3c8 | fcn_0000a3c8 (r0, r1);
0x0000cc64 mov r2, sl | r2 = sl;
0x0000cc66 mov r5, r0 | r5 = r0;
0x0000cc68 mov r1, fp | r1 = fp;
0x0000cc6a movs r0, 0 | r0 = 0;
0x0000cc6c blx 0x1aac | opendir ();
0x0000cc70 add.w r8, r8, 1 | r8++;
0x0000cc74 mov r6, r0 | r6 = r0;
0x0000cc76 cmp r0, 0 |
| if (r0 == 0) {
0x0000cc78 beq 0xccf4 | goto label_11;
| }
| label_9:
0x0000cc7a movs r3, 0 | r3 = 0;
0x0000cc7c str r3, [r7, -0x8] | *((r7 - 0x8)) = r3;
0x0000cc80 ldrb r3, [r6] | r3 = *(r6);
0x0000cc82 cmp r3, 0x2f |
0x0000cc84 beq 0xcc4a |
| } while (r3 == 0x2f);
0x0000cc86 mov r0, r6 | r0 = r6;
0x0000cc88 blx 0x1bb0 | fcn_00001bb0 ();
0x0000cc8c ldr r3, [sp] | r3 = *(sp);
0x0000cc8e add r3, r0 | r3 += r0;
0x0000cc90 cmp.w r3, 0x1000 |
| if (r3 <= 0x1000) {
0x0000cc94 blo 0xcc3e | goto label_0;
| }
0x0000cc96 ldr r6, [sp, 0xc] | r6 = var_ch;
| label_1:
0x0000cc98 mov r0, r5 | r0 = r5;
0x0000cc9a bl 0xcb50 | fcn_0000cb50 (r0);
0x0000cc9e ldrb.w r3, [r6, 0x30] | r3 = *((r6 + 0x30));
0x0000cca2 bfc r3, 0, 1 | value_0 = BIT_MASK (1, );
| value_0 = ~value_0;
| r3 &= value_0;
0x0000cca6 strb.w r3, [r6, 0x30] | *((r6 + 0x30)) = r3;
| do {
| label_2:
0x0000ccaa ldr r2, [pc, 0xa0] |
0x0000ccac add.w r1, sp, 0x1000 | r1 += var_1000h;
0x0000ccb0 ldr r3, [pc, 0x8c] | r3 = *(0xcd40);
0x0000ccb2 adds r1, 0x1c | r1 += 0x1c;
0x0000ccb4 add r2, pc | r2 = 0x19a06;
0x0000ccb6 ldr r3, [r2, r3] | r3 = *(0x19a06);
0x0000ccb8 ldr r2, [r3] | r2 = *(0x19a06);
0x0000ccba ldr r3, [r1] | r3 = *(r1);
0x0000ccbc eors r2, r3 | r2 ^= r3;
0x0000ccbe mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000ccc2 bne 0xcd24 | goto label_12;
| }
0x0000ccc4 mov r0, r4 | r0 = r4;
0x0000ccc6 add.w sp, sp, 0x1020 |
0x0000ccca add sp, 4 |
0x0000cccc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x0000ccd0 ldrb r3, [r4] | r3 = *(r4);
0x0000ccd2 cmp r3, 0x2f |
| if (r3 == 0x2f) {
0x0000ccd4 beq 0xcd0e | goto label_13;
| }
0x0000ccd6 mov r0, r4 | r0 = r4;
0x0000ccd8 blx 0x1bb0 | fcn_00001bb0 ();
0x0000ccdc ldr r3, [sp] | r3 = *(sp);
0x0000ccde add r3, r0 | r3 += r0;
0x0000cce0 cmp.w r3, 0x1000 |
0x0000cce2 ldrsh r0, [r0, r6] | r0 = *((r0 + r6));
| if (r3 <= 0x1000) {
0x0000cce4 blo 0xcd00 | goto label_14;
| }
| label_4:
0x0000cce6 movs r4, 0 | r4 = 0;
0x0000cce8 b 0xccaa |
| } while (1);
| label_10:
0x0000ccea rsbs r0, r4, 0 | r0 = r4 - ;
0x0000ccec ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000ccee blx 0x1b18 | system (r0);
0x0000ccf2 b 0xcc98 | goto label_1;
| label_11:
0x0000ccf4 ldr r6, [sp, 0xc] | r6 = var_ch;
| label_5:
0x0000ccf6 mov r4, r8 | r4 = r8;
0x0000ccf8 str r5, [r6, 0x10] | *((r6 + 0x10)) = r5;
0x0000ccfa str.w r8, [r6, 0x28] | __asm ("str.w r8, [r6, 0x28]");
0x0000ccfe b 0xccaa | goto label_2;
| label_14:
0x0000cd00 mov r1, r4 | r1 = r4;
0x0000cd02 ldr r4, [sp, 4] | r4 = var_4h;
0x0000cd04 adds r2, r0, 1 | r2 = r0 + 1;
0x0000cd06 add.w r0, r4, fp | r0 = r4 + fp;
0x0000cd0a blx 0x19c8 | mmap64 ()
| label_13:
0x0000cd0e mov r0, r4 | r0 = r4;
0x0000cd10 blx 0x1a10 | stack_chk_fail ();
0x0000cd14 str r0, [r6, 0xc] | *((r6 + 0xc)) = r0;
0x0000cd16 cmp r0, 0 |
| if (r0 != 0) {
0x0000cd18 bne.w 0xcc10 | goto label_3;
| }
0x0000cd1c b 0xcce6 | goto label_4;
| label_8:
0x0000cd1e mov r5, r0 | r5 = r0;
0x0000cd20 mov r8, r0 | r8 = r0;
0x0000cd22 b 0xccf6 | goto label_5;
| label_12:
0x0000cd24 blx 0x1a1c | stat64 ();
| label_6:
0x0000cd28 ldr r3, [pc, 0x24] |
0x0000cd2a movs r2, 0x95 | r2 = 0x95;
0x0000cd2c ldr r1, [pc, 0x24] |
0x0000cd2e ldr r0, [pc, 0x28] |
0x0000cd30 add r3, pc | r3 = 0x19a84;
0x0000cd32 add r1, pc | r1 = 0x19a8a;
0x0000cd34 add r0, pc | r0 = 0x19a92;
0x0000cd36 blx 0x1de0 | fcn_00001de0 ();
0x0000cd3a nop |
0x0000cd3c str r2, [sp, 0x270] | var_270h = r2;
0x0000cd3e movs r1, r0 | r1 = r0;
0x0000cd40 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000cd42 movs r0, r0 |
0x0000cd44 ldr r0, [r6, 0x48] | r0 = *((r6 + 0x48));
0x0000cd46 movs r0, r0 |
0x0000cd48 ldr r2, [r2, 0x48] | r2 = *((r2 + 0x48));
0x0000cd4a movs r0, r0 |
0x0000cd4c str r1, [sp, 0x190] | var_190h = r1;
0x0000cd4e movs r1, r0 | r1 = r0;
0x0000cd50 ldrb r0, [r1, 0x1b] | r0 = *((r1 + 0x1b));
0x0000cd52 movs r0, r0 |
0x0000cd54 ldrb r2, [r4, 0x14] | r2 = *((r4 + 0x14));
0x0000cd56 movs r0, r0 |
0x0000cd58 ldrb r0, [r0, 0x15] | r0 = *((r0 + 0x15));
0x0000cd5a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xd1cc */
| #include <stdint.h>
|
; (fcn) fcn.0000d1cc () | void fcn_0000d1cc (int16_t arg_0h, uint32_t arg1) {
| r0 = arg1;
0x0000d1cc svcmi 0xf8e92d | __asm ("svcmi 0xf8e92d");
0x0000d1d0 mov r5, r0 | r5 = r0;
0x0000d1d2 cmp r0, 0 |
| if (arg_0h == ) {
0x0000d1d4 beq 0xd276 | goto label_2;
| }
0x0000d1d6 ldrb.w r6, [r0, 0x30] | r6 = *(arg_0hx30);
0x0000d1da ubfx r6, r6, 1, 1 | r6 = (r6 >> 1) & ((1 << 1) - 1);
| if (r6 != 0) {
0x0000d1de cbz r6, 0xd1ea |
0x0000d1e0 ldr.w sb, [r0, 0x14] | sb = *(arg_0hx14);
| label_1:
0x0000d1e4 mov r0, sb | r0 = sb;
0x0000d1e6 pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| }
0x0000d1ea ldr r0, [r0] | r0 = *(r0);
0x0000d1ec mov sb, r6 | sb = r6;
0x0000d1ee bl 0xa34c | fcn_0000a34c (r0);
0x0000d1f2 ldr r4, [r0, 0xc] | r4 = *((r0 + 0xc));
0x0000d1f4 mov r8, r0 | r8 = r0;
| if (r4 == 0) {
| do {
0x0000d1f6 cbz r4, 0xd25c | goto label_3;
| }
0x0000d1f8 mov r0, r4 | r0 = r4;
0x0000d1fa bl 0xa7d4 | fcn_0000a7d4 (r0);
0x0000d1fe ldr r1, [r5, 8] | r1 = *((r5 + 8));
0x0000d200 mov r7, r0 | r7 = r0;
0x0000d202 blx 0x1924 | fcn_00001924 ();
0x0000d206 ldr r1, [r5, 0x20] | r1 = *((r5 + 0x20));
| if (r0 != 0) {
0x0000d208 cbz r0, 0xd214 |
| if (r1 == 0) {
0x0000d20a cbz r1, 0xd252 | goto label_4;
| }
0x0000d20c mov r0, r7 | r0 = r7;
0x0000d20e blx 0x1924 | r0 = fcn_00001924 ();
| if (r0 != 0) {
0x0000d212 cbnz r0, 0xd252 | goto label_4;
| }
| }
0x0000d214 mov r0, r4 | r0 = r4;
0x0000d216 bl 0xa4f4 | r0 = fcn_0000a4f4 (r0);
0x0000d21a mov r7, r0 | r7 = r0;
0x0000d21c blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000d220 mov sl, r0 | sl = r0;
| if (r0 != 0) {
0x0000d222 cbz r0, 0xd252 |
0x0000d224 adds r1, r6, 2 | r1 = r6 + 2;
0x0000d226 add r1, r0 | r1 += r0;
0x0000d228 mov r0, sb | r0 = sb;
0x0000d22a blx 0x1a34 | r0 = regexec ();
0x0000d22e mov fp, r0 |
| if (r0 == 0) {
0x0000d230 cbz r0, 0xd27a | goto label_5;
| }
| if (r6 == 0) {
0x0000d232 cbz r6, 0xd272 | goto label_6;
| }
0x0000d234 mov.w r3, 0x20 | r3 = 0x20;
0x0000d238 strb r3, [r0, r6] | *((r0 + r6)) = r3;
0x0000d23a adds r6, 1 | r6++;
0x0000d23c add r0, r6 | r0 += r6;
0x0000d23e add r6, sl | r6 += sl;
| label_0:
0x0000d240 mov r2, sl | r2 = sl;
0x0000d242 mov r1, r7 | r1 = r7;
0x0000d244 mov sb, fp | sb = fp;
0x0000d246 blx 0x19c8 | mmap64 ()
0x0000d24a mov.w r3, 0 | r3 = 0;
0x0000d24e strb.w r3, [fp, r6] | *((fp + r6)) = r3;
| }
| label_4:
0x0000d252 ldr r4, [r4] | r4 = *(r4);
0x0000d254 ldr.w r3, [r8, 0xc] | r3 = *((r8 + 0xc));
0x0000d258 cmp r4, r3 |
0x0000d25a bne 0xd1f6 |
| } while (r4 != r3);
| label_3:
0x0000d25c ldrb.w r3, [r5, 0x30] | r3 = *((r5 + 0x30));
0x0000d260 mov r0, sb | r0 = sb;
0x0000d262 str.w sb, [r5, 0x14] | __asm ("str.w sb, [r5, 0x14]");
0x0000d266 orr r3, r3, 2 | r3 |= 2;
0x0000d26a strb.w r3, [r5, 0x30] | *((r5 + 0x30)) = r3;
0x0000d26e pop.w {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0000d272 mov r6, sl | r6 = sl;
0x0000d274 b 0xd240 | goto label_0;
| label_2:
0x0000d276 mov sb, r0 | sb = r0;
0x0000d278 b 0xd1e4 | goto label_1;
| label_5:
0x0000d27a mov r0, sb | r0 = sb;
0x0000d27c mov sb, fp | sb = fp;
0x0000d27e blx 0x19a0 | fcn_000019a0 ();
0x0000d282 b 0xd1e4 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xd77c */
| #include <stdint.h>
|
; (fcn) fcn.0000d77c () | void fcn_0000d77c (int16_t arg_38h, int16_t arg_78h, int16_t arg_7ch, int16_t arg1, int16_t arg2, int16_t arg3, int16_t arg4) {
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int32_t var_30h_2;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
| r3 = arg4;
0x0000d77c push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000d780 sub sp, 0x54 |
0x0000d782 str r2, [sp, 0x1c] | var_1ch = r2;
0x0000d784 ldr.w r2, [pc, 0x488] | r2 = *(0x0000dc10);
0x0000d788 str r3, [sp, 0x28] | var_28h = r3;
0x0000d78a ldr.w r3, [pc, 0x488] |
0x0000d78e add r2, pc | r2 += pc;
0x0000d790 str r1, [sp, 8] | var_8h = r1;
0x0000d792 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000d794 ldr r3, [r3] | r3 = *(0xdc16);
0x0000d796 str r3, [sp, 0x4c] | var_4ch = r3;
0x0000d798 mov.w r3, 0 | r3 = 0;
0x0000d79c movs r3, 0 | r3 = 0;
0x0000d79e str r3, [sp, 0x44] | var_44h = r3;
0x0000d7a0 ldr r3, [sp, 0x78] | r3 = *(arg_78h);
0x0000d7a2 str r0, [sp, 0xc] | var_ch = r0;
0x0000d7a4 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000d7a6 ldr r3, [sp, 0x7c] | r3 = *(arg_7ch);
0x0000d7a8 str r3, [sp, 0x18] | var_18h = r3;
0x0000d7aa cmp r0, 0 |
| if (r0 == 0) {
0x0000d7ac beq.w 0xdb9e | goto label_22;
| }
0x0000d7b0 ands r3, r1, 8 | r3 = r1 & 8;
0x0000d7b4 str r3, [sp, 0x24] | var_24h = r3;
| if (r3 == r1) {
0x0000d7b6 beq.w 0xdb02 | goto label_23;
| }
| label_17:
0x0000d7ba ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000d7bc ldr r3, [r3, 0x20] | r3 = *((r3 + 0x20));
0x0000d7be cmp r3, 0 |
| if (r3 == 0) {
0x0000d7c0 beq.w 0xd8f4 | goto label_24;
| }
0x0000d7c4 ldr r3, [sp, 8] | r3 = var_8h;
0x0000d7c6 ands r5, r3, 0x40000 | r5 = r3 & 0x40000;
| if (r5 == r3) {
0x0000d7ca beq.w 0xd8f4 | goto label_24;
| }
| label_0:
0x0000d7ce ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000d7d0 bl 0xc53c | r0 = fcn_0000c53c (r0);
0x0000d7d4 cmp r0, 0 |
| if (r0 != 0) {
0x0000d7d6 bne 0xd8d6 | goto label_2;
| }
| label_1:
0x0000d7d8 ldr r4, [sp, 0xc] | r4 = var_ch;
0x0000d7da movs r1, 0 | r1 = 0;
0x0000d7dc ldr r0, [r4] | r0 = *(r4);
0x0000d7de bl 0xa060 | fcn_0000a060 (r0, r1);
0x0000d7e2 ldr r0, [r4] | r0 = *(r4);
0x0000d7e4 movs r1, 0 | r1 = 0;
0x0000d7e6 bl 0xa0c4 | fcn_0000a0c4 (r0, r1);
0x0000d7ea ldrb.w r3, [r4, 0x38] | r3 = *((r4 + 0x38));
0x0000d7ee lsls r0, r3, 0x1f | r0 = r3 << 0x1f;
| if (r0 >= r3) {
0x0000d7f0 bpl.w 0xd908 | goto label_25;
| }
0x0000d7f4 movs r3, 0 | r3 = 0;
0x0000d7f6 mov r5, r3 | r5 = r3;
0x0000d7f8 str r3, [sp, 0x20] | var_20h = r3;
0x0000d7fa ldr r3, [sp, 8] | r3 = var_8h;
0x0000d7fc lsls r2, r3, 0xf | r2 = r3 << 0xf;
| if (r2 < r3) {
0x0000d7fe bmi.w 0xdb28 | goto label_26;
| }
| label_18:
0x0000d802 ldr.w r3, [pc, 0x414] |
0x0000d806 add r3, pc | r3 = 0x1b424;
0x0000d808 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000d80a ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000d80c str r3, [sp, 4] | var_4h = r3;
| do {
0x0000d80e ldr r3, [sp, 4] | r3 = var_4h;
0x0000d810 cmp r3, 0 |
| if (r3 == 0) {
0x0000d812 beq 0xd8d0 | goto label_5;
| }
0x0000d814 ldr r3, [sp, 4] | r3 = var_4h;
0x0000d816 ldr.w fp, [r3, 8] | fp = *((r3 + 8));
0x0000d81a mov r0, fp | r0 = fp;
0x0000d81c bl 0xd1cc | r0 = fcn_0000d1cc (r0, r1);
0x0000d820 mov r4, r0 | r4 = r0;
0x0000d822 mov r0, fp | r0 = fp;
0x0000d824 bl 0xd284 | fcn_0000d284 (r0);
0x0000d828 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000d82a mov r7, r0 | r7 = r0;
0x0000d82c cmp r3, 0 |
| if (r3 == 0) {
0x0000d82e beq.w 0xd99e | goto label_27;
| }
| label_7:
0x0000d832 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000d834 cmp r3, fp |
| if (r3 == fp) {
0x0000d836 beq.w 0xd9b2 | goto label_28;
| }
0x0000d83a cmp r4, 0 |
| if (r4 == 0) {
0x0000d83c beq.w 0xd9d6 | goto label_29;
| }
0x0000d840 mov r0, r4 | r0 = r4;
0x0000d842 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000d846 mov sb, r0 | sb = r0;
| label_10:
0x0000d848 cmp.w sb, 0 |
| if (sb == 0) {
0x0000d84c beq.w 0xd9d6 | goto label_29;
| }
0x0000d850 add.w r0, sb, 2 | r0 = sb + 2;
0x0000d854 mov.w r8, 0 | r8 = 0;
0x0000d858 blx 0x1b0c | strerror (r0);
0x0000d85c mov r6, r8 | r6 = r8;
0x0000d85e mov sl, r0 | sl = r0;
| label_21:
0x0000d860 mov r1, r4 | r1 = r4;
0x0000d862 mov r2, sb | r2 = sb;
0x0000d864 mov r0, sl | r0 = sl;
0x0000d866 blx 0x19c8 | mmap64 ()
0x0000d86a movs r3, 0x20 | r3 = 0x20;
0x0000d86c add.w r0, sb, 1 | r0 = sb + 1;
0x0000d870 adds r4, r0, r6 | r4 = r0 + r6;
0x0000d872 strb.w r3, [sl, sb] | *((sl + sb)) = r3;
0x0000d876 cmp.w r8, 0 |
| if (r8 != 0) {
0x0000d87a bne.w 0xd992 | goto label_30;
| }
| label_6:
0x0000d87e mov.w r3, 0 | r3 = 0;
0x0000d882 strb.w r3, [sl, r4] | *((sl + r4)) = r3;
0x0000d886 cmp r7, 0 |
| if (r7 == 0) {
0x0000d888 beq 0xd926 | goto label_31;
| }
0x0000d88a ldrb.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0000d88e lsls r1, r3, 0x1e | r1 = r3 << 0x1e;
| if (r1 < r3) {
0x0000d890 bmi 0xd926 | goto label_31;
| }
0x0000d892 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x0000d894 cbz r3, 0xd8a8 |
0x0000d896 cmp.w sl, 0 |
| if (sl == 0) {
0x0000d89a beq.w 0xdb92 | goto label_32;
| }
0x0000d89e mov r2, sl | r2 = sl;
| label_12:
0x0000d8a0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000d8a2 movs r1, 1 | r1 = 1;
0x0000d8a4 mov r0, fp | r0 = fp;
0x0000d8a6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
| label_11:
0x0000d8a8 ldr r3, [sp, 8] | r3 = var_8h;
0x0000d8aa ands r3, r3, 0x10 | r3 &= 0x10;
0x0000d8ae mov r6, r3 | r6 = r3;
| if (r3 == r3) {
0x0000d8b0 beq.w 0xda20 | goto label_33;
| }
| label_3:
0x0000d8b4 mov r0, sl | r0 = sl;
0x0000d8b6 blx 0x19a0 | fcn_000019a0 ();
0x0000d8ba ldrb.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0000d8be lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x0000d8c0 bmi 0xd8c4 |
| label_4:
0x0000d8c2 movs r5, 0 | r5 = 0;
| }
| label_15:
0x0000d8c4 ldr r3, [sp, 4] | r3 = var_4h;
0x0000d8c6 ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000d8c8 ldr r3, [r3] | r3 = *(r3);
0x0000d8ca cmp r3, r2 |
0x0000d8cc str r3, [sp, 4] | var_4h = r3;
0x0000d8ce bne 0xd80e |
| } while (r3 != r2);
| label_5:
0x0000d8d0 ldr r0, [sp, 0x20] | r0 = var_20h;
0x0000d8d2 bl 0xcb50 | fcn_0000cb50 (r0);
| label_2:
0x0000d8d6 ldr r2, [pc, 0x344] |
0x0000d8d8 ldr r3, [pc, 0x338] | r3 = *(0xdc14);
0x0000d8da add r2, pc | r2 = 0x1b4fc;
0x0000d8dc ldr r3, [r2, r3] | r3 = *(0x1b4fc);
0x0000d8de ldr r2, [r3] | r2 = *(0x1b4fc);
0x0000d8e0 ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0000d8e2 eors r2, r3 | r2 ^= r3;
0x0000d8e4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000d8e8 bne.w 0xdc0a | goto label_34;
| }
0x0000d8ec mov r0, r5 | r0 = r5;
0x0000d8ee add sp, 0x54 |
0x0000d8f0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_24:
0x0000d8f4 ldr r3, [sp, 8] | r3 = var_8h;
0x0000d8f6 ands r5, r3, 0x10000 | r5 = r3 & 0x10000;
| if (r5 != r3) {
0x0000d8fa bne.w 0xd7ce | goto label_0;
| }
0x0000d8fe ands r5, r3, 0x20000 | r5 = r3 & 0x20000;
| if (r5 != r3) {
0x0000d902 bne.w 0xd7ce | goto label_0;
| }
0x0000d906 b 0xd7d8 | goto label_1;
| label_25:
0x0000d908 ldr r2, [sp, 8] | r2 = var_8h;
0x0000d90a add r3, sp, 0x44 | r3 += var_44h;
0x0000d90c ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000d90e movs r1, 1 | r1 = 1;
0x0000d910 ubfx r2, r2, 2, 1 | r2 = (r2 >> 2) & ((1 << 1) - 1);
0x0000d914 bl 0xd4ec | r0 = fcn_0000d4ec (r0, r1, r2, r3);
0x0000d918 subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 >= r0) {
0x0000d91a bge.w 0xdb1c | goto label_35;
| }
0x0000d91e ldr r0, [sp, 0x44] | r0 = var_44h;
0x0000d920 bl 0xcb50 | fcn_0000cb50 (r0);
0x0000d924 b 0xd8d6 | goto label_2;
| label_31:
0x0000d926 ldr r3, [sp, 0x18] | r3 = var_18h;
| if (r3 != 0) {
0x0000d928 cbz r3, 0xd93c |
0x0000d92a cmp.w sl, 0 |
| if (sl == 0) {
0x0000d92e beq.w 0xdbf0 | goto label_36;
| }
0x0000d932 mov r2, sl | r2 = sl;
| label_14:
0x0000d934 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000d936 movs r1, 0 | r1 = 0;
0x0000d938 mov r0, fp | r0 = fp;
0x0000d93a blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
| }
| label_13:
0x0000d93c ldr r3, [sp, 8] | r3 = var_8h;
0x0000d93e lsls r6, r3, 0x1b | r6 = r3 << 0x1b;
| if (r6 < r3) {
0x0000d940 bmi 0xd8b4 | goto label_3;
| }
0x0000d942 mov r1, r3 | r1 = r3;
0x0000d944 mov r2, sl | r2 = sl;
0x0000d946 mov r0, fp | r0 = fp;
0x0000d948 bl 0xd050 | fcn_0000d050 (r0, r1, r2);
0x0000d94c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000d94e mov r5, r0 | r5 = r0;
0x0000d950 cmp r3, fp |
0x0000d952 it eq |
| if (r3 == fp) {
0x0000d954 cmneq r0, 0x11 | __asm ("cmneq r0, 0x11");
| }
0x0000d958 ite eq |
| if (r3 != fp) {
0x0000d95a moveq r4, 1 | r4 = 1;
| }
| if (r3 == fp) {
0x0000d95c movne r4, 0 | r4 = 0;
| }
| label_16:
0x0000d95e mov r0, sl | r0 = sl;
0x0000d960 blx 0x19a0 | fcn_000019a0 ();
0x0000d964 cmp r4, 0 |
| if (r4 == 0) {
0x0000d966 beq 0xda06 | goto label_37;
| }
| label_8:
0x0000d968 ldr r3, [sp, 8] | r3 = var_8h;
0x0000d96a lsls r0, r3, 0x1a | r0 = r3 << 0x1a;
| if (r0 >= r3) {
0x0000d96c bpl 0xd8c2 | goto label_4;
| }
0x0000d96e mvn r5, 0x10 | r5 = ~0x10;
0x0000d972 b 0xd8d0 | goto label_5;
| label_9:
0x0000d974 ldr r3, [sp, 0x1c] | r3 = var_1ch;
| if (r3 == 0) {
0x0000d976 cbz r3, 0xd9d6 | goto label_29;
| }
0x0000d978 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000d97a blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000d97e mov r6, r0 | r6 = r0;
| if (r0 == 0) {
0x0000d980 cbz r0, 0xd9d6 | goto label_29;
| }
0x0000d982 adds r0, 2 | r0 += 2;
0x0000d984 blx 0x1b0c | strerror (r0);
0x0000d988 ldr.w r8, [sp, 0x1c] | r8 = var_1ch;
0x0000d98c mov sl, r0 | sl = r0;
0x0000d98e mov r0, r4 | r0 = r4;
0x0000d990 mov r4, r6 | r4 = r6;
| label_30:
0x0000d992 mov r2, r6 | r2 = r6;
0x0000d994 mov r1, r8 | r1 = r8;
0x0000d996 add r0, sl | r0 += sl;
0x0000d998 blx 0x19c8 | mmap64 ()
0x0000d99c b 0xd87e | goto label_6;
| label_27:
0x0000d99e mov r0, fp | r0 = fp;
0x0000d9a0 bl 0xd74c | r0 = fcn_0000d74c (r0);
0x0000d9a4 cmp r0, 1 |
| if (r0 > 1) {
0x0000d9a6 bhi.w 0xd832 | goto label_7;
| }
0x0000d9aa ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000d9ac cmp r3, fp |
| if (r3 == fp) {
0x0000d9ae beq 0xd968 | goto label_8;
| }
0x0000d9b0 b 0xd8c2 | goto label_4;
| label_28:
0x0000d9b2 cmp r4, 0 |
| if (r4 == 0) {
0x0000d9b4 beq 0xd974 | goto label_9;
| }
0x0000d9b6 mov r0, r4 | r0 = r4;
0x0000d9b8 blx 0x1bb0 | fcn_00001bb0 ();
0x0000d9bc ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000d9be mov sb, r0 | sb = r0;
0x0000d9c0 cmp r3, 0 |
| if (r3 == 0) {
0x0000d9c2 beq.w 0xd848 | goto label_10;
| }
0x0000d9c4 add r7, sp, 0x104 | r7 = sp + 0x104;
0x0000d9c6 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000d9c8 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000d9cc orrs.w r3, sb, r0 | r3 = sb | r0;
0x0000d9d0 mov r6, r0 | r6 = r0;
| if (r3 != sb) {
0x0000d9d2 bne.w 0xdbde | goto label_38;
| }
| if (r7 == 0) {
| label_29:
0x0000d9d6 cbz r7, 0xd9f4 | goto label_39;
| }
0x0000d9d8 ldrb.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0000d9dc ubfx r3, r3, 1, 1 | r3 = (r3 >> 1) & ((1 << 1) - 1);
| if (r3 != 0) {
0x0000d9e0 cbnz r3, 0xd9f4 | goto label_39;
| }
0x0000d9e2 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000d9e4 mov sl, r2 | sl = r2;
0x0000d9e6 cmp r2, 0 |
| if (r2 == 0) {
0x0000d9e8 beq.w 0xd8a8 | goto label_11;
| }
0x0000d9ec ldr r2, [pc, 0x230] |
0x0000d9ee mov sl, r3 | sl = r3;
0x0000d9f0 add r2, pc | r2 = 0x1b614;
0x0000d9f2 b 0xd8a0 | goto label_12;
| label_39:
0x0000d9f4 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000d9f6 mov sl, r3 | sl = r3;
0x0000d9f8 cmp r3, 0 |
| if (r3 == 0) {
0x0000d9fa beq 0xd93c | goto label_13;
| }
0x0000d9fc ldr r2, [pc, 0x224] |
0x0000d9fe mov.w sl, 0 | sl = 0;
0x0000da02 add r2, pc | r2 = 0x1b62a;
0x0000da04 b 0xd934 | goto label_14;
| label_37:
0x0000da06 cmn.w r5, 0x11 |
| if (r5 == 0x11) {
0x0000da0a beq.w 0xd8c2 | goto label_4;
| }
0x0000da0e ldrb.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0000da12 lsls r1, r3, 0x1d | r1 = r3 << 0x1d;
| if (r1 >= r3) {
0x0000da14 bpl.w 0xd8c2 | goto label_4;
| }
0x0000da18 cmp r5, 0 |
| if (r5 >= 0) {
0x0000da1a bge.w 0xd8c4 | goto label_15;
| }
0x0000da1e b 0xd8d0 | goto label_5;
| label_33:
0x0000da20 mov r0, fp | r0 = fp;
0x0000da22 bl 0xd284 | r0 = fcn_0000d284 (r0);
0x0000da26 mov r4, r0 | r4 = r0;
0x0000da28 cmp r0, 0 |
| if (r0 == 0) {
0x0000da2a beq.w 0xdbf6 | goto label_40;
| }
0x0000da2e cmp.w sl, 0 |
| if (sl == 0) {
0x0000da32 beq.w 0xdb52 | goto label_41;
| }
0x0000da36 mov r0, sl | r0 = sl;
0x0000da38 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000da3c mov r6, r0 | r6 = r0;
0x0000da3e str.w sl, [sp, 0x14] | __asm ("str.w sl, [var_14h]");
| label_19:
0x0000da42 mov r0, r4 | r0 = r4;
0x0000da44 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000da48 mov r7, r0 | r7 = r0;
0x0000da4a mov r0, r4 | r0 = r4;
0x0000da4c adds r1, r7, 1 | r1 = r7 + 1;
0x0000da4e bl 0x92ac | fcn_000092ac (r0, r1);
0x0000da52 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000da54 mov sb, r0 | sb = r0;
0x0000da56 sub.w r3, r3, fp | r3 -= fp;
0x0000da5a clz r3, r3 | r3 &= r3;
0x0000da5e lsrs r3, r3, 5 | r3 >>= 5;
0x0000da60 str r3, [sp, 0x38] | var_38h = r3;
0x0000da62 cmp r0, 0 |
| if (r0 == 0) {
0x0000da64 beq.w 0xdbae | goto label_42;
| }
0x0000da68 sub.w r2, r6, 0xd | r2 = r6 - 0xd;
0x0000da6c strd fp, sl, [sp, 0x30] | __asm ("strd fp, sl, [var_30h]");
0x0000da70 str r2, [sp, 0x10] | var_10h = r2;
0x0000da72 mov sl, r6 | sl = r6;
0x0000da74 ldr.w fp, [sp, 0x3c] | fp = var_3ch;
0x0000da78 b 0xdaca |
| while (r0 != 0) {
0x0000da7a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000da7c sub.w r8, r7, 0xd | r8 = r7 - 0xd;
0x0000da80 sub.w r6, r0, sb | r6 = r0 - sb;
0x0000da84 add.w r5, r0, 0xd | r5 = r0 + 0xd;
0x0000da88 sub.w r8, r8, r6 | r8 -= r6;
0x0000da8c add r7, r3 | r7 += r3;
0x0000da8e adds r0, r7, 1 | r0 = r7 + 1;
0x0000da90 blx 0x1b0c | r0 = strerror (r0);
0x0000da94 mov r4, r0 | r4 = r0;
0x0000da96 cmp r0, 0 |
| if (r0 == 0) {
0x0000da98 beq.w 0xdba4 | goto label_43;
| }
0x0000da9c mov r1, sb | r1 = sb;
0x0000da9e mov r2, r6 | r2 = r6;
0x0000daa0 blx 0x19c8 | mmap64 ()
0x0000daa4 ldr r1, [sp, 0x14] | r1 = var_14h;
0x0000daa6 mov r2, sl | r2 = sl;
0x0000daa8 adds r0, r4, r6 | r0 = r4 + r6;
0x0000daaa blx 0x19c8 | mmap64 ()
0x0000daae add.w r0, sl, r6 | r0 = sl + r6;
0x0000dab2 mov r2, r8 | r2 = r8;
0x0000dab4 mov r1, r5 | r1 = r5;
0x0000dab6 add r0, r4 | r0 += r4;
0x0000dab8 blx 0x19c8 | mmap64 ()
0x0000dabc mov r0, sb | r0 = sb;
0x0000dabe mov.w r3, 0 | r3 = 0;
0x0000dac2 mov sb, r4 | sb = r4;
0x0000dac4 strb r3, [r4, r7] | *((r4 + r7)) = r3;
0x0000dac6 blx 0x19a0 | fcn_000019a0 ();
0x0000daca mov r1, fp | r1 = fp;
0x0000dacc mov r0, sb | r0 = sb;
0x0000dace blx 0x18e4 | r0 = strstr (r0, r1);
0x0000dad2 cmp r0, 0 |
0x0000dad4 bne 0xda7a |
| }
0x0000dad6 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000dad8 ldrd fp, sl, [sp, 0x30] | __asm ("ldrd fp, sl, [var_30h]");
0x0000dadc cmp r3, 0 |
| if (r3 == 0) {
0x0000dade beq 0xdb5a | goto label_44;
| }
0x0000dae0 ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000dae2 mov r1, sb | r1 = sb;
0x0000dae4 mov r0, fp | r0 = fp;
0x0000dae6 blx r3 | uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r2);
0x0000dae8 ldr r3, [sp, 0x38] | r3 = var_38h;
0x0000daea cmn.w r0, 0x11 |
0x0000daee ite ne |
| if (r0 == 0x11) {
0x0000daf0 movne r4, 0 | r4 = 0;
| }
| if (r0 != 0x11) {
0x0000daf2 moveq r4, 1 | r4 = 1;
| }
0x0000daf4 mov r5, r0 | r5 = r0;
0x0000daf6 ands r3, r4 | r3 &= r4;
0x0000daf8 mov r4, r3 | r4 = r3;
| label_20:
0x0000dafa mov r0, sb | r0 = sb;
0x0000dafc blx 0x19a0 | fcn_000019a0 ();
0x0000db00 b 0xd95e | goto label_16;
| label_23:
0x0000db02 bl 0xd74c | r0 = fcn_0000d74c (r0);
0x0000db06 cmp r0, 1 |
| if (r0 > 1) {
0x0000db08 bhi.w 0xd7ba | goto label_17;
| }
0x0000db0c ldr r3, [sp, 8] | r3 = var_8h;
0x0000db0e tst.w r3, 0x20 |
0x0000db12 ite ne |
| if ((r3 & 0x20) == 0) {
0x0000db14 mvnne r5, 0x10 | r5 = ~0x10;
| }
| if ((r3 & 0x20) == 0) {
0x0000db18 movs r5, 0 | r5 = 0;
| }
0x0000db1a b 0xd8d6 | goto label_2;
| label_35:
0x0000db1c ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000db1e str r3, [sp, 0x20] | var_20h = r3;
0x0000db20 ldr r3, [sp, 8] | r3 = var_8h;
0x0000db22 lsls r2, r3, 0xf | r2 = r3 << 0xf;
| if (r2 >= r3) {
0x0000db24 bpl.w 0xd802 | goto label_18;
| }
| label_26:
0x0000db28 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000db2a movs r1, 1 | r1 = 1;
0x0000db2c ldr r4, [sp, 0x20] | r4 = var_20h;
0x0000db2e ldr r0, [r3] | r0 = *(r3);
0x0000db30 movs r3, 0 | r3 = 0;
0x0000db32 str r3, [sp, 0x48] | var_48h = r3;
0x0000db34 mov r2, r4 | r2 = r4;
0x0000db36 add r3, sp, 0x48 | r3 += var_48h;
0x0000db38 bl 0xd13c | r0 = fcn_0000d13c (r0, r1, r2, r3);
0x0000db3c subs r5, r0, 0 | r5 = r0 - 0;
| if (r5 < r0) {
0x0000db3e blt.w 0xd8d6 | goto label_2;
| }
0x0000db42 mov r0, r4 | r0 = r4;
0x0000db44 bl 0xcb50 | fcn_0000cb50 (r0);
0x0000db48 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000db4a str r3, [sp, 0x20] | var_20h = r3;
| if (r3 != 0) {
0x0000db4c cbz r3, 0xdb98 |
0x0000db4e str r3, [sp, 0x44] | var_44h = r3;
0x0000db50 b 0xd802 | goto label_18;
| label_41:
0x0000db52 ldr r3, [pc, 0xd4] |
0x0000db54 add r3, pc | r3 = 0x1b782;
0x0000db56 str r3, [sp, 0x14] | var_14h = r3;
0x0000db58 b 0xda42 | goto label_19;
| label_44:
0x0000db5a ldr r4, [pc, 0xd0] |
0x0000db5c mov r0, fp | r0 = fp;
0x0000db5e bl 0xcfb4 | fcn_0000cfb4 (r0);
0x0000db62 movs r2, 1 | r2 = 1;
0x0000db64 mov r1, r0 | r1 = r0;
0x0000db66 add r4, pc | r4 = 0x1b798;
0x0000db68 mov r0, r4 | r0 = r4;
0x0000db6a blx 0x1bcc | errno_location ();
0x0000db6e mov r0, sb | r0 = sb;
0x0000db70 blx 0x1b24 | vfprintf_chk ();
0x0000db72 invalid |
0x0000db76 mov r0, r4 | r0 = r4;
0x0000db78 blx 0x1d8c | fcn_00001d8c ();
0x0000db7c adds r2, r5, 1 | r2 = r5 + 1;
0x0000db7e it eq |
| if (r2 != r5) {
0x0000db80 moveq r0, sb | r0 = sb;
| }
| if (r2 == r5) {
0x0000db82 beq 0xdbc4 | goto label_45;
| }
0x0000db84 ubfx r5, r5, 8, 8 | r5 = (r5 >> 8) & ((1 << 8) - 1);
0x0000db88 mov r0, sb | r0 = sb;
| if (r5 != 0) {
0x0000db8a cbnz r5, 0xdbc4 | goto label_45;
| }
0x0000db8c blx 0x19a0 | fcn_000019a0 ();
0x0000db90 b 0xd8b4 | goto label_3;
| label_32:
0x0000db92 ldr r2, [pc, 0x9c] |
0x0000db94 add r2, pc | r2 = 0x1b7ca;
0x0000db96 b 0xd8a0 | goto label_12;
| }
0x0000db98 mov.w r5, 0x10000 | r5 = 0x10000;
0x0000db9c b 0xd8d6 | goto label_2;
| label_22:
0x0000db9e mvn r5, 1 | r5 = ~1;
0x0000dba2 b 0xd8d6 | goto label_2;
| label_43:
0x0000dba4 ldrd fp, sl, [sp, 0x30] | __asm ("ldrd fp, sl, [var_30h]");
0x0000dba8 mvn r5, 0xb | r5 = ~0xb;
0x0000dbac b 0xdafa | goto label_20;
| label_42:
0x0000dbae mov r0, sl | r0 = sl;
0x0000dbb0 blx 0x19a0 | fcn_000019a0 ();
0x0000dbb4 ldrb.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0000dbb8 lsls r7, r3, 0x1d | r7 = r3 << 0x1d;
| if (r7 >= r3) {
0x0000dbba bpl.w 0xd8c2 | goto label_4;
| }
0x0000dbbe mvn r5, 0xb | r5 = ~0xb;
0x0000dbc2 b 0xd8d0 | goto label_5;
| label_45:
0x0000dbc4 blx 0x19a0 | fcn_000019a0 ();
0x0000dbc8 mov r0, sl | r0 = sl;
0x0000dbca blx 0x19a0 | fcn_000019a0 ();
0x0000dbce ldrb.w r3, [fp, 0x38] | r3 = *(arg_38h);
0x0000dbd2 lsls r3, r3, 0x1d | r3 <<= 0x1d;
| if (r3 >= r3) {
0x0000dbd4 bpl.w 0xd8c2 | goto label_4;
| }
0x0000dbd8 mvn r5, 0x15 | r5 = ~0x15;
0x0000dbdc b 0xd8d0 | goto label_5;
| label_38:
0x0000dbde add.w r0, sb, r6 | r0 = sb + r6;
0x0000dbe2 adds r0, 2 | r0 += 2;
0x0000dbe4 blx 0x1b0c | strerror (r0);
0x0000dbe8 ldr.w r8, [sp, 0x1c] | r8 = var_1ch;
0x0000dbec mov sl, r0 | sl = r0;
0x0000dbee b 0xd860 | goto label_21;
| label_36:
0x0000dbf0 ldr r2, [pc, 0x40] |
0x0000dbf2 add r2, pc | r2 = 0x1b82a;
0x0000dbf4 b 0xd934 | goto label_14;
| label_40:
0x0000dbf6 ldr r3, [pc, 0x40] |
0x0000dbf8 movw r2, 0x3f5 | r2 = 0x3f5;
0x0000dbfc ldr r1, [pc, 0x3c] |
0x0000dbfe ldr r0, [pc, 0x40] |
0x0000dc00 add r3, pc | r3 = 0x1b83e;
0x0000dc02 add r1, pc | r1 = 0x1b842;
0x0000dc04 add r0, pc | r0 = 0x1b84a;
0x0000dc06 blx 0x1de0 | fcn_00001de0 ();
| label_34:
0x0000dc0a blx 0x1a1c | stat64 ();
0x0000dc0e nop |
0x0000dc10 strh r2, [r1, 0x34] | *((r1 + 0x34)) = r2;
0x0000dc12 movs r1, r0 | r1 = r0;
0x0000dc14 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000dc16 movs r0, r0 |
0x0000dc18 ldr r2, [pc, 0x1d8] | r2 = *(0xddf4);
0x0000dc1a movs r0, r0 |
0x0000dc1c strh r6, [r7, 0x28] | *((r7 + 0x28)) = r6;
0x0000dc1e movs r1, r0 | r1 = r0;
0x0000dc20 str r4, [r4, 0x20] | *((r4 + 0x20)) = r4;
0x0000dc22 movs r0, r0 |
0x0000dc24 str r2, [r2, 0x20] | *((r2 + 0x20)) = r2;
0x0000dc26 movs r0, r0 |
0x0000dc28 str r0, [r0, 0xc] | *((r0 + 0xc)) = r0;
0x0000dc2a movs r0, r0 |
0x0000dc2c bx r5 | return uint32_t (*r5)() ();
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xe230 */
| #include <stdint.h>
|
; (fcn) fcn.0000e230 () | void fcn_0000e230 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0000e230 stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr} | __asm ("stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}");
0x0000e234 it ne |
| if (? != ?) {
0x0000e236 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0000e238 ldr r3, [pc, 0xec] |
0x0000e23a push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000e23e sub sp, 0xc |
0x0000e240 add r2, pc | r2 += pc;
0x0000e242 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000e244 ldr r3, [r3] | r3 = *(0xe328);
0x0000e246 str r3, [sp, 4] | var_4h = r3;
0x0000e248 mov.w r3, 0 | r3 = 0;
| if (? == ?) {
0x0000e24c beq 0xe306 | goto label_3;
| }
0x0000e24e ldr r6, [r1] | r6 = *(r1);
0x0000e250 mov r7, r1 | r7 = r1;
0x0000e252 cmp r6, 0 |
| if (r6 != 0) {
0x0000e254 bne 0xe30c | goto label_4;
| }
0x0000e256 bl 0xcff8 | r0 = fcn_0000cff8 (r0);
0x0000e25a cmp r0, 0 |
| if (r0 == 0) {
0x0000e25c beq 0xe2e6 | goto label_5;
| }
0x0000e25e mov r1, sp | r1 = sp;
0x0000e260 bl 0xf22c | r0 = fcn_0000f22c (r0, r1, r2);
0x0000e264 subs.w r8, r0, 0 | r8 = r0 - 0;
| if (r8 < r0) {
0x0000e268 blt 0xe272 | goto label_2;
| }
| if (r8 != r0) {
0x0000e26a bne 0xe296 | goto label_6;
| }
| do {
| label_1:
0x0000e26c ldr r0, [sp] | r0 = *(sp);
0x0000e26e blx 0x19a0 | fcn_000019a0 ();
| label_2:
0x0000e272 ldr r2, [pc, 0xb8] |
0x0000e274 ldr r3, [pc, 0xb0] | r3 = *(0xe328);
0x0000e276 add r2, pc | r2 = 0x1c5a8;
0x0000e278 ldr r3, [r2, r3] | r3 = *(0x1c5a8);
0x0000e27a ldr r2, [r3] | r2 = *(0x1c5a8);
0x0000e27c ldr r3, [sp, 4] | r3 = var_4h;
0x0000e27e eors r2, r3 | r2 ^= r3;
0x0000e280 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e284 bne 0xe320 | goto label_7;
| }
0x0000e286 mov r0, r8 | r0 = r8;
0x0000e288 add sp, 0xc |
0x0000e28a pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x0000e28e adds r6, 1 | r6++;
0x0000e290 str r0, [r7] | *(r7) = r0;
0x0000e292 cmp r8, r6 |
0x0000e294 beq 0xe26c |
| } while (r8 == r6);
| label_6:
0x0000e296 ldr r3, [sp] | r3 = *(sp);
0x0000e298 add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0000e29a asrs r6, r0, 0xc | r6 = r0 >> 0xc;
0x0000e29c ldr.w sb, [r3, 0xc] | sb = *((r3 + 0xc));
0x0000e29e str r0, [sp, 0x30] | *((sp + 0x30)) = r0;
0x0000e2a0 ldrd sl, fp, [r3] | __asm ("ldrd sl, fp, [r3]");
0x0000e2a4 mov r0, sb | r0 = sb;
0x0000e2a6 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000e2aa mov r2, r0 | r2 = r0;
0x0000e2ac adds r0, 9 | r0 += 9;
0x0000e2ae adds r4, r2, 1 | r4 = r2 + 1;
0x0000e2b0 blx 0x1b0c | strerror (r0);
0x0000e2b2 stc p6, c4, [ip], -0x14 | __asm ("stc p6, c4, [ip], -0x14");
| if (r0 == 0) {
0x0000e2b6 cbz r0, 0xe2f2 | goto label_8;
| }
0x0000e2b8 mov r2, r4 | r2 = r4;
0x0000e2ba mov r1, sb | r1 = sb;
0x0000e2bc strd sl, fp, [r0], 8 | __asm ("strd sl, fp, [r0], 8");
0x0000e2c0 blx 0x19c8 | mmap64 ()
0x0000e2c4 ldr r0, [r7] | r0 = *(r7);
0x0000e2c6 mov r1, r5 | r1 = r5;
0x0000e2c8 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000e2cc mov r4, r0 | r4 = r0;
0x0000e2ce cmp r0, 0 |
| if (r0 != 0) {
0x0000e2d0 bne 0xe28e | goto label_0;
| }
0x0000e2d2 mov r0, r5 | r0 = r5;
0x0000e2d4 mvn r8, 0xb | r8 = ~0xb;
0x0000e2d8 blx 0x19a0 | fcn_000019a0 ();
0x0000e2dc ldr r0, [r7] | r0 = *(r7);
0x0000e2de bl 0xe214 | fcn_0000e214 (r0);
0x0000e2e2 str r4, [r7] | *(r7) = r4;
0x0000e2e4 b 0xe26c | goto label_1;
| label_5:
0x0000e2e6 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000e2ea ldr r3, [r0] | r3 = *(r0);
0x0000e2ec rsb.w r8, r3, 0 | r8 = r3 - ;
0x0000e2f0 b 0xe272 | goto label_2;
| label_8:
0x0000e2f2 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000e2f6 ldr r3, [r0] | r3 = *(r0);
0x0000e2f8 ldr r0, [r7] | r0 = *(r7);
0x0000e2fa rsb.w r8, r3, 0 | r8 = r3 - ;
0x0000e2fc lsrs r0, r0, 0x20 | r0 >>= 0x20;
0x0000e2fe bl 0xe214 | fcn_0000e214 (r0);
0x0000e302 str r5, [r7] | *(r7) = r5;
0x0000e304 b 0xe26c | goto label_1;
| label_3:
0x0000e306 mvn r8, 1 | r8 = ~1;
0x0000e30a b 0xe272 | goto label_2;
| label_4:
0x0000e30c ldr r3, [pc, 0x20] |
0x0000e30e movw r2, 0x9bc | r2 = 0x9bc;
0x0000e312 ldr r1, [pc, 0x20] |
0x0000e314 ldr r0, [pc, 0x20] |
0x0000e316 add r3, pc | r3 = 0x1c64a;
0x0000e318 add r1, pc | r1 = 0x1c652;
0x0000e31a add r0, pc | r0 = 0x1c656;
0x0000e31c blx 0x1de0 | fcn_00001de0 ();
| label_7:
0x0000e320 blx 0x1a1c | stat64 ();
0x0000e324 ldrb r0, [r3, 0xf] | r0 = *((r3 + 0xf));
0x0000e326 movs r1, r0 | r1 = r0;
0x0000e328 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000e32a movs r0, r0 |
0x0000e32c ldrb r2, [r4, 0xe] | r2 = *((r4 + 0xe));
0x0000e32e movs r1, r0 | r1 = r0;
0x0000e330 ldr r6, [r6, 4] | r6 = *((r6 + 4));
0x0000e332 movs r0, r0 |
0x0000e334 str r4, [r7, 0x70] | *((r7 + 0x70)) = r4;
0x0000e336 movs r0, r0 |
0x0000e338 str r6, [r3, 0x58] | *((r3 + 0x58)) = r6;
0x0000e33a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xe378 */
| #include <stdint.h>
|
; (fcn) fcn.0000e378 () | void fcn_0000e378 (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0000e378 stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr} | __asm ("stmdbhs r0, {r2, r3, r4, r5, sb, fp, lr}");
0x0000e37c it ne |
| if (? != ?) {
0x0000e37e cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0000e380 ldr r3, [pc, 0xec] |
0x0000e382 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000e386 sub sp, 0xc |
0x0000e388 add r2, pc | r2 += pc;
0x0000e38a ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000e38c ldr r3, [r3] | r3 = *(0xe470);
0x0000e38e str r3, [sp, 4] | var_4h = r3;
0x0000e390 mov.w r3, 0 | r3 = 0;
| if (? == ?) {
0x0000e394 beq 0xe44e | goto label_3;
| }
0x0000e396 ldr r6, [r1] | r6 = *(r1);
0x0000e398 mov r7, r1 | r7 = r1;
0x0000e39a cmp r6, 0 |
| if (r6 != 0) {
0x0000e39c bne 0xe454 | goto label_4;
| }
0x0000e39e bl 0xcff8 | r0 = fcn_0000cff8 (r0);
0x0000e3a2 cmp r0, 0 |
| if (r0 == 0) {
0x0000e3a4 beq 0xe42e | goto label_5;
| }
0x0000e3a6 mov r1, sp | r1 = sp;
0x0000e3a8 bl 0xf7bc | r0 = fcn_0000f7bc (r0, r1, r2, r3);
0x0000e3ac subs.w r8, r0, 0 | r8 = r0 - 0;
0x0000e3ae lsrs r0, r0, 0x20 | r0 >>= 0x20;
| if (r0 < r0) {
0x0000e3b0 blt 0xe3ba | goto label_2;
| }
| if (r0 != r0) {
0x0000e3b2 bne 0xe3de | goto label_6;
| }
| do {
| label_1:
0x0000e3b4 ldr r0, [sp] | r0 = *(sp);
0x0000e3b6 blx 0x19a0 | fcn_000019a0 ();
| label_2:
0x0000e3ba ldr r2, [pc, 0xb8] |
0x0000e3bc ldr r3, [pc, 0xb0] | r3 = *(0xe470);
0x0000e3be add r2, pc | r2 = 0x1c838;
0x0000e3c0 ldr r3, [r2, r3] | r3 = *(0x1c838);
0x0000e3c2 ldr r2, [r3] | r2 = *(0x1c838);
0x0000e3c4 ldr r3, [sp, 4] | r3 = var_4h;
0x0000e3c6 eors r2, r3 | r2 ^= r3;
0x0000e3c8 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e3cc bne 0xe468 | goto label_7;
| }
0x0000e3ce mov r0, r8 | r0 = r8;
0x0000e3d0 add sp, 0xc |
0x0000e3d2 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_0:
0x0000e3d6 adds r6, 1 | r6++;
0x0000e3d8 str r0, [r7] | *(r7) = r0;
0x0000e3da cmp r8, r6 |
0x0000e3dc beq 0xe3b4 |
| } while (r8 == r6);
| label_6:
0x0000e3de ldr r3, [sp] | r3 = *(sp);
0x0000e3e0 add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0000e3e4 ldr.w sb, [r3, 0xc] | sb = *((r3 + 0xc));
0x0000e3e8 ldrd sl, fp, [r3] | __asm ("ldrd sl, fp, [r3]");
0x0000e3ec mov r0, sb | r0 = sb;
0x0000e3ee blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000e3f2 mov r2, r0 | r2 = r0;
0x0000e3f4 adds r0, 9 | r0 += 9;
0x0000e3f6 adds r4, r2, 1 | r4 = r2 + 1;
0x0000e3f8 blx 0x1b0c | r0 = strerror (r0);
0x0000e3fc mov r5, r0 | r5 = r0;
| if (r0 == 0) {
0x0000e3fe cbz r0, 0xe43a | goto label_8;
| }
0x0000e400 mov r2, r4 | r2 = r4;
0x0000e402 mov r1, sb | r1 = sb;
0x0000e404 strd sl, fp, [r0], 8 | __asm ("strd sl, fp, [r0], 8");
0x0000e408 blx 0x19c8 | mmap64 ()
0x0000e40c ldr r0, [r7] | r0 = *(r7);
0x0000e40e mov r1, r5 | r1 = r5;
0x0000e410 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000e414 mov r4, r0 | r4 = r0;
0x0000e416 cmp r0, 0 |
| if (r0 != 0) {
0x0000e418 bne 0xe3d6 | goto label_0;
| }
0x0000e41a mov r0, r5 | r0 = r5;
0x0000e41c mvn r8, 0xb | r8 = ~0xb;
0x0000e420 blx 0x19a0 | fcn_000019a0 ();
0x0000e424 ldr r0, [r7] | r0 = *(r7);
0x0000e426 bl 0xe35c | fcn_0000e35c (r0);
0x0000e42a str r4, [r7] | *(r7) = r4;
0x0000e42c b 0xe3b4 | goto label_1;
| label_5:
0x0000e42e blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000e432 ldr r3, [r0] | r3 = *(r0);
0x0000e434 rsb.w r8, r3, 0 | r8 = r3 - ;
0x0000e438 b 0xe3ba | goto label_2;
| label_8:
0x0000e43a blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000e43e ldr r3, [r0] | r3 = *(r0);
0x0000e440 ldr r0, [r7] | r0 = *(r7);
0x0000e442 rsb.w r8, r3, 0 | r8 = r3 - ;
0x0000e446 bl 0xe35c | fcn_0000e35c (r0);
0x0000e44a str r5, [r7] | *(r7) = r5;
0x0000e44c b 0xe3b4 | goto label_1;
| label_3:
0x0000e44e mvn r8, 1 | r8 = ~1;
0x0000e452 b 0xe3ba | goto label_2;
| label_4:
0x0000e454 ldr r3, [pc, 0x20] |
0x0000e456 movw r2, 0xa48 | r2 = 0xa48;
0x0000e45a ldr r1, [pc, 0x20] |
0x0000e45c ldr r0, [pc, 0x20] |
0x0000e45e add r3, pc | r3 = 0x1c8da;
0x0000e460 add r1, pc | r1 = 0x1c8e2;
0x0000e462 add r0, pc | r0 = 0x1c8e6;
0x0000e464 blx 0x1de0 | fcn_00001de0 ();
| label_7:
0x0000e468 blx 0x1a1c | stat64 ();
0x0000e46c ldrb r0, [r2, 0xa] | r0 = *((r2 + 0xa));
0x0000e46e movs r1, r0 | r1 = r0;
0x0000e470 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000e472 movs r0, r0 |
0x0000e474 ldrb r2, [r3, 9] | r2 = *((r3 + 9));
0x0000e476 movs r1, r0 | r1 = r0;
0x0000e478 str r6, [r2, 0x70] | *((r2 + 0x70)) = r6;
0x0000e47a movs r0, r0 |
0x0000e47c str r4, [r6, 0x5c] | *((r6 + 0x5c)) = r4;
0x0000e47e movs r0, r0 |
0x0000e480 str r6, [r2, 0x44] | *((r2 + 0x44)) = r6;
0x0000e482 movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xe4cc */
| #include <stdint.h>
|
; (fcn) fcn.0000e4cc () | void fcn_0000e4cc (uint32_t arg1, uint32_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| r0 = arg1;
| r1 = arg2;
0x0000e4cc stmdbhs r0, {r0, r6, sb, fp, lr} | __asm ("stmdbhs r0, {r0, r6, sb, fp, lr}");
0x0000e4d0 it ne |
| if (? != ?) {
0x0000e4d2 cmpne r0, 0 | __asm ("cmpne r0, 0");
| }
0x0000e4d4 ldr r3, [pc, 0x100] |
0x0000e4d6 push.w {r4, r5, r6, r7, r8, sb, sl, lr} |
0x0000e4da add r2, pc | r2 += pc;
0x0000e4dc vpush {d8} | __asm ("vpush {d8}");
0x0000e4e0 sub sp, 8 |
0x0000e4e2 ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000e4e4 ldr r3, [r3] | r3 = *(0xe5d8);
0x0000e4e6 str r3, [sp, 4] | var_4h = r3;
0x0000e4e8 mov.w r3, 0 | r3 = 0;
| if (? == ?) {
0x0000e4ec beq 0xe5b4 | goto label_3;
| }
0x0000e4ee ldr r6, [r1] | r6 = *(r1);
0x0000e4f0 mov r7, r1 | r7 = r1;
0x0000e4f2 cmp r6, 0 |
| if (r6 != 0) {
0x0000e4f4 bne 0xe5ba | goto label_4;
| }
0x0000e4f6 bl 0xcff8 | r0 = fcn_0000cff8 (r0);
0x0000e4fa cmp r0, 0 |
| if (r0 == 0) {
0x0000e4fc beq 0xe594 | goto label_5;
| }
0x0000e4fe mov r1, sp | r1 = sp;
0x0000e500 bl 0xff58 | fcn_0000ff58 (r0, r1, r2, r3, r4, r5, r6);
0x0000e502 stc2 p1, c15, [sl, -0x2c0]! | __asm ("stc2 p1, c15, [sl, -0x2c0]!");
0x0000e506 lsrs r0, r0, 0x20 | r0 >>= 0x20;
| if (r0 < r0) {
0x0000e508 blt 0xe512 | goto label_2;
| }
| if (r0 != r0) {
0x0000e50a bne 0xe53a | goto label_6;
| }
| do {
| label_1:
0x0000e50c ldr r0, [sp] | r0 = *(sp);
0x0000e50e blx 0x19a0 | fcn_000019a0 ();
| label_2:
0x0000e512 ldr r2, [pc, 0xc8] |
0x0000e514 ldr r3, [pc, 0xc0] | r3 = *(0xe5d8);
0x0000e516 add r2, pc | r2 = 0x1caf8;
0x0000e518 ldr r3, [r2, r3] | r3 = *(0x1caf8);
0x0000e51a ldr r2, [r3] | r2 = *(0x1caf8);
0x0000e51c ldr r3, [sp, 4] | r3 = var_4h;
0x0000e51e eors r2, r3 | r2 ^= r3;
0x0000e520 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000e524 bne 0xe5ce | goto label_7;
| }
0x0000e526 mov r0, r8 | r0 = r8;
0x0000e528 add sp, 8 |
0x0000e52a vpop {d8} | __asm ("vpop {d8}");
0x0000e52e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_0:
0x0000e532 adds r6, 1 | r6++;
0x0000e534 str r0, [r7] | *(r7) = r0;
0x0000e536 cmp r8, r6 |
0x0000e538 beq 0xe50c |
| } while (r8 == r6);
| label_6:
0x0000e53a ldr r3, [sp] | r3 = *(sp);
0x0000e53c add.w r3, r3, r6, lsl 4 | r3 += (r6 << 4);
0x0000e540 ldr.w sb, [r3, 0xc] | sb = *((r3 + 0xc));
0x0000e544 vldr d8, [r3] | __asm ("vldr d8, [r3]");
0x0000e548 ldrb.w sl, [r3, 8] | sl = *((r3 + 8));
0x0000e54c mov r0, sb | r0 = sb;
0x0000e54e blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000e552 mov r2, r0 | r2 = r0;
0x0000e554 adds r0, 0x11 | r0 += 0x11;
0x0000e556 adds r5, r2, 1 | r5 = r2 + 1;
0x0000e558 blx 0x1b0c | r0 = strerror (r0);
0x0000e55c mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x0000e55e cbz r0, 0xe5a0 | goto label_8;
| }
0x0000e560 mov r2, r5 | r2 = r5;
0x0000e562 mov r1, sb | r1 = sb;
0x0000e564 adds r0, 9 | r0 += 9;
0x0000e566 vstr d8, [r4] | __asm ("vstr d8, [r4]");
0x0000e56a strb.w sl, [r4, 8] | *((r4 + 8)) = sl;
0x0000e56e blx 0x19c8 | mmap64 ()
0x0000e572 ldr r0, [r7] | r0 = *(r7);
0x0000e574 mov r1, r4 | r1 = r4;
0x0000e576 bl 0xa350 | r0 = fcn_0000a350 (r0, r1);
0x0000e57a mov r5, r0 | r5 = r0;
0x0000e57c cmp r0, 0 |
| if (r0 != 0) {
0x0000e57e bne 0xe532 | goto label_0;
| }
0x0000e580 mov r0, r4 | r0 = r4;
0x0000e582 mvn r8, 0xb | r8 = ~0xb;
0x0000e586 blx 0x19a0 | fcn_000019a0 ();
0x0000e58a ldr r0, [r7] | r0 = *(r7);
0x0000e58c bl 0xe4b0 | fcn_0000e4b0 (r0);
0x0000e590 str r5, [r7] | *(r7) = r5;
0x0000e592 b 0xe50c | goto label_1;
| label_5:
0x0000e594 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000e598 ldr r3, [r0] | r3 = *(r0);
0x0000e59a rsb.w r8, r3, 0 | r8 = r3 - ;
0x0000e59e b 0xe512 | goto label_2;
| label_8:
0x0000e5a0 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000e5a4 ldr r3, [r0] | r3 = *(r0);
0x0000e5a6 ldr r0, [r7] | r0 = *(r7);
0x0000e5a8 rsb.w r8, r3, 0 | r8 = r3 - ;
0x0000e5ac bl 0xe4b0 | fcn_0000e4b0 (r0);
0x0000e5b0 str r4, [r7] | *(r7) = r4;
0x0000e5b2 b 0xe50c | goto label_1;
| label_3:
0x0000e5b4 mvn r8, 1 | r8 = ~1;
0x0000e5b8 b 0xe512 | goto label_2;
| label_4:
0x0000e5ba ldr r3, [pc, 0x24] |
0x0000e5bc movw r2, 0xad7 | r2 = 0xad7;
0x0000e5c0 ldr r1, [pc, 0x20] |
0x0000e5c2 ldr r0, [pc, 0x24] |
0x0000e5c4 add r3, pc | r3 = 0x1cbaa;
0x0000e5c6 add r1, pc | r1 = 0x1cbae;
0x0000e5c8 add r0, pc | r0 = 0x1cbb6;
0x0000e5ca blx 0x1de0 | fcn_00001de0 ();
| label_7:
0x0000e5ce blx 0x1a1c | stat64 ();
0x0000e5d2 nop |
0x0000e5d4 ldrb r6, [r7, 4] | r6 = *((r7 + 4));
0x0000e5d6 movs r1, r0 | r1 = r0;
0x0000e5d8 lsls r4, r7, 6 | r4 = r7 << 6;
0x0000e5da movs r0, r0 |
0x0000e5dc ldrb r2, [r0, 4] | r2 = *((r0 + 4));
0x0000e5de movs r1, r0 | r1 = r0;
0x0000e5e0 str r4, [r1, 0x58] | *((r1 + 0x58)) = r4;
0x0000e5e2 movs r0, r0 |
0x0000e5e4 str r6, [r1, 0x48] | *((r1 + 0x48)) = r6;
0x0000e5e6 movs r0, r0 |
0x0000e5e8 str r0, [r6, 0x2c] | *((r6 + 0x2c)) = r0;
0x0000e5ea movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xf09c */
| #include <stdint.h>
|
; (fcn) fcn.0000f09c () | void fcn_0000f09c (int16_t arg3) {
| int16_t var_4h;
| int16_t var_8h;
| int32_t var_8h_2;
| int16_t var_14h;
| r2 = arg3;
| if (? >= ?) {
0x0000f09c ldrbmi lr, [r0, sp, lsr 18]! |
| }
0x0000f0a0 mov r8, r2 | r8 = r2;
0x0000f0a2 ldr r2, [pc, 0x17c] |
0x0000f0a4 sub sp, 0x18 |
0x0000f0a6 movs r4, 0 | r4 = 0;
0x0000f0a8 ldr r3, [pc, 0x178] | r3 = *(0xf224);
0x0000f0aa add r2, pc | r2 = 0x1e2d0;
0x0000f0ac ldr r3, [r2, r3] |
0x0000f0ae add r2, sp, 4 | r2 += var_4h;
0x0000f0b0 ldr r3, [r3] | r3 = *(0x1e2d0);
0x0000f0b2 str r3, [sp, 0x14] | var_14h = r3;
0x0000f0b4 mov.w r3, 0 | r3 = 0;
0x0000f0b8 add r3, sp, 8 | r3 += var_8h;
0x0000f0ba str.w r4, [r8] | __asm ("str.w r4, [r8]");
0x0000f0be bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000f0c2 cmp r0, 0 |
| if (r0 < 0) {
0x0000f0c4 blt 0xf0f6 | goto label_2;
| }
0x0000f0c6 ldr r6, [sp, 4] | r6 = var_4h;
| if (r6 == 0) {
0x0000f0c8 cbz r6, 0xf0f4 | goto label_4;
| }
0x0000f0ca ldrd r4, r5, [sp, 8] | __asm ("ldrd r4, r5, [var_8h]");
0x0000f0ce orrs.w r3, r4, r5 | r3 = r4 | r5;
| if (r3 == r4) {
0x0000f0d2 beq 0xf0f4 | goto label_4;
| }
0x0000f0d4 ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x0000f0d6 cbnz r3, 0xf116 | goto label_5;
| }
0x0000f0d8 adds r3, r6, 1 | r3 = r6 + 1;
0x0000f0da b 0xf0ec |
| while (r1 != r2) {
0x0000f0dc subs r4, 1 | r4--;
0x0000f0de mov r6, r3 | r6 = r3;
0x0000f0e0 mov r4, r2 | r4 = r2;
0x0000f0e2 ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0000f0e6 sbc r5, r5, 0 | __asm ("sbc r5, r5, 0");
| if (r2 != 0) {
0x0000f0ea cbnz r2, 0xf112 | goto label_6;
| }
0x0000f0ec subs r2, r4, 1 | r2 = r4 - 1;
0x0000f0ee orrs.w r1, r2, r5 | r1 = r2 | r5;
0x0000f0f2 bne 0xf0dc |
| }
| do {
| label_4:
0x0000f0f4 movs r0, 0 | r0 = 0;
| label_2:
0x0000f0f6 ldr r2, [pc, 0x130] |
0x0000f0f8 ldr r3, [pc, 0x128] | r3 = *(0xf224);
0x0000f0fa add r2, pc | r2 = 0x1e328;
0x0000f0fc ldr r3, [r2, r3] | r3 = *(0x1e328);
0x0000f0fe ldr r2, [r3] | r2 = *(0x1e328);
0x0000f100 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000f102 eors r2, r3 | r2 ^= r3;
0x0000f104 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000f108 bne.w 0xf212 | goto label_7;
| }
0x0000f10c add sp, 0x18 |
0x0000f10e pop.w {r4, r5, r6, r7, r8, sb, sl, pc} |
| label_6:
0x0000f112 strd r4, r5, [sp, 8] | __asm ("strd r4, r5, [var_8h]");
| label_5:
0x0000f116 subs r3, r4, 1 | r3 = r4 - 1;
0x0000f118 orrs r3, r5 | r3 |= r5;
0x0000f11a beq 0xf0f4 |
| } while (r3 == r5);
0x0000f11c movs r7, 0 | r7 = 0;
0x0000f11e mov r3, r6 | r3 = r6;
0x0000f120 mov r2, r7 | r2 = r7;
0x0000f122 mov lr, r7 | lr = r7;
0x0000f124 rsb.w ip, r6, 1 |
0x0000f128 b 0xf138 |
| while (r1 != 0) {
0x0000f12a adds r2, 1 | r2++;
0x0000f12c movs r1, 0 | r1 = 0;
0x0000f12e cmp r2, r4 |
0x0000f130 add.w r3, r6, r2 | r3 = r6 + r2;
0x0000f134 sbcs r1, r5 | __asm ("sbcs r1, r5");
| if (r2 >= r4) {
0x0000f136 bhs 0xf16a | goto label_8;
| }
| label_0:
0x0000f138 ldrb r1, [r3] | r1 = *(r3);
0x0000f13a cmp r1, 0 |
0x0000f13c bne 0xf12a |
| }
0x0000f13e cmp r2, r4 |
0x0000f140 sbcs.w r0, r1, r5 | __asm ("sbcs.w r0, r1, r5");
| if (r2 <= r4) {
0x0000f144 blo 0xf150 | goto label_9;
| }
0x0000f146 b 0xf160 | goto label_10;
| do {
0x0000f148 cmp r2, r4 |
0x0000f14a sbcs.w r0, lr, r5 | __asm ("sbcs.w r0, lr, r5");
| if (r2 >= r4) {
0x0000f14e bhs 0xf15e | goto label_11;
| }
| label_9:
0x0000f150 add.w r2, ip, r3 | r2 = ip + r3;
0x0000f154 ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x0000f158 movs r1, 0 | r1 = 0;
0x0000f15a cmp r0, 0 |
0x0000f15c beq 0xf148 |
| } while (r0 == 0);
| label_11:
0x0000f15e adds r3, r6, r2 | r3 = r6 + r2;
| label_10:
0x0000f160 cmp r2, r4 |
0x0000f162 add.w r7, r7, 1 | r7++;
0x0000f166 sbcs r1, r5 | __asm ("sbcs r1, r5");
| if (r2 <= r4) {
0x0000f168 blo 0xf138 | goto label_0;
| }
| label_8:
0x0000f16a ldrb r3, [r3, -0x1] | r3 = *((r3 - 0x1));
0x0000f16e cmp r3, 0 |
| if (r3 != 0) {
0x0000f170 bne 0xf20e | goto label_12;
| }
| label_3:
0x0000f172 add.w sl, r7, 1 | sl = r7 + 1;
0x0000f176 adds r0, r4, 1 | r0 = r4 + 1;
0x0000f178 lsl.w sl, sl, 2 | sl <<= 2;
0x0000f17c add r0, sl | r0 += sl;
0x0000f17e blx 0x1b0c | r0 = strerror (r0);
0x0000f182 mov sb, r0 | sb = r0;
0x0000f184 str.w r0, [r8] | __asm ("str.w r0, [r8]");
0x0000f188 cmp r0, 0 |
| if (r0 == 0) {
0x0000f18a beq 0xf216 | goto label_13;
| }
0x0000f18c add.w r8, r0, sl | r8 = r0 + sl;
0x0000f190 mov r2, r4 | r2 = r4;
0x0000f192 mov r1, r6 | r1 = r6;
0x0000f194 mov r0, r8 | r0 = r8;
0x0000f196 blx 0x19c8 | mmap64 ()
0x0000f19a cmp r7, 1 |
0x0000f19c mov.w r2, 0 | r2 = 0;
0x0000f1a0 it hi |
| if (r7 <= 1) {
0x0000f1a2 movhi ip, 1 |
| }
0x0000f1a6 strb.w r2, [r8, r4] | *((r8 + r4)) = r2;
0x0000f1aa it hi |
| if (r7 <= 1) {
0x0000f1ac subhi r0, ip, r6 | r0 = ip - r6;
| }
0x0000f1ae movs r6, r0 | r6 = r0;
0x0000f1b0 str r2, [r8, -0x4] | *((r8 - 0x4)) = r2;
0x0000f1b4 it hi |
| if (r6 <= r0) {
0x0000f1b6 movhi lr, r2 | lr = r2;
| }
0x0000f1b8 str.w r8, [sb] | __asm ("str.w r8, [sb]");
| if (r6 > r0) {
0x0000f1bc bhi 0xf1d0 | goto label_14;
| }
0x0000f1be b 0xf20a | goto label_15;
| do {
0x0000f1c0 cmp ip, r7 |
0x0000f1c2 add.w r2, r2, 1 | r2++;
| if (ip >= r7) {
0x0000f1c6 bhs 0xf20a | goto label_15;
| }
| label_1:
0x0000f1c8 cmp r2, r4 |
0x0000f1ca sbcs.w r3, lr, r5 | __asm ("sbcs.w r3, lr, r5");
| if (r2 >= r4) {
0x0000f1ce bhs 0xf20a | goto label_15;
| }
| label_14:
0x0000f1d0 ldrb.w r3, [r8, r2] | r3 = *((r8 + r2));
0x0000f1d4 add.w sl, r8, r2 | sl = r8 + r2;
0x0000f1d8 cmp r3, 0 |
0x0000f1da bne 0xf1c0 |
| } while (r3 != 0);
0x0000f1dc ldrb r3, [r6, r2] | r3 = *((r6 + r2));
0x0000f1de adds r1, r6, r2 | r1 = r6 + r2;
| if (r3 != 0) {
0x0000f1e0 cbnz r3, 0xf1fe | goto label_16;
| }
0x0000f1e2 cmp r2, r4 |
0x0000f1e4 sbcs r3, r5 | __asm ("sbcs r3, r5");
| if (r2 <= r4) {
0x0000f1e6 blo 0xf1f0 | goto label_17;
| }
0x0000f1e8 b 0xf1fe | goto label_16;
| do {
0x0000f1ea cmp r2, r4 |
0x0000f1ec sbcs r3, r5 | __asm ("sbcs r3, r5");
| if (r2 >= r4) {
0x0000f1ee bhs 0xf1fa | goto label_18;
| }
| label_17:
0x0000f1f0 adds r2, r0, r1 | r2 = r0 + r1;
0x0000f1f2 ldrb r3, [r1, 1]! | r3 = *((r1 += 1));
0x0000f1f6 cmp r3, 0 |
0x0000f1f8 beq 0xf1ea |
| } while (r3 == 0);
| label_18:
0x0000f1fa add.w sl, r8, r2 | sl = r8 + r2;
| label_16:
0x0000f1fe str.w sl, [sb, ip, lsl 2] | __asm ("str.w sl, [sb, ip, lsl 2]");
0x0000f202 add.w ip, ip, 1 |
0x0000f206 cmp ip, r7 |
| if (ip <= r7) {
0x0000f208 blo 0xf1c8 | goto label_1;
| }
| label_15:
0x0000f20a mov r0, r7 | r0 = r7;
0x0000f20c b 0xf0f6 | goto label_2;
| label_12:
0x0000f20e adds r7, 1 | r7++;
0x0000f210 b 0xf172 | goto label_3;
| label_7:
0x0000f212 blx 0x1a1c | stat64 ();
| label_13:
0x0000f216 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000f21a ldr r0, [r0] | r0 = *(r0);
0x0000f21c rsbs r0, r0, 0 | r0 -= ;
0x0000f21e b 0xf0f6 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xf22c */
| #include <stdint.h>
|
; (fcn) fcn.0000f22c () | void fcn_0000f22c (int16_t arg_1h, int16_t arg1, int16_t arg2) {
| int16_t var_1h;
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_1ch;
| int16_t var_20h;
| int32_t var_20h_2;
| int16_t var_2ch;
| r0 = arg1;
| r1 = arg2;
0x0000f22c ldr r3, [r0, 0x10] | r3 = *((r0 + 0x10));
0x0000f22e push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f232 sub sp, 0x34 |
0x0000f234 ldr r2, [pc, 0x214] |
0x0000f236 movs r5, 0 | r5 = 0;
0x0000f238 movs r2, r0 | r2 = r0;
0x0000f23a movs r0, r0 |
0x0000f23c str r3, [sp, 8] | var_8h = r3;
0x0000f23e tst.w r4, 2 |
0x0000f242 ldr r3, [pc, 0x20c] | r3 = *(0xf452);
0x0000f244 add r2, pc | r2 = 0x1e694;
0x0000f246 str r1, [sp, 4] | var_4h = r1;
0x0000f248 ite ne |
| if ((r4 & 2) == 0) {
0x0000f24a movne r6, 4 | r6 = 4;
| }
| if ((r4 & 2) != 0) {
0x0000f24c moveq r6, 8 | r6 = 8;
| }
0x0000f24e ldr r3, [r2, r3] |
0x0000f250 add r2, sp, 0x1c | r2 += var_1ch;
0x0000f252 ldr r3, [r3] | r3 = *(0x1e694);
0x0000f254 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000f256 mov.w r3, 0 | r3 = 0;
0x0000f25a str r5, [r1] | *(r1) = r5;
0x0000f25c ldr r1, [pc, 0x1f4] |
0x0000f25e add r3, sp, 0x20 | r3 += var_20h;
0x0000f260 str r6, [sp] | *(sp) = r6;
0x0000f262 add r1, pc | r1 = 0x1e6ba;
0x0000f264 bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000f268 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0000f26a blt.w 0xf3c4 | goto label_2;
| }
0x0000f26e ldr r4, [sp, 0x1c] | r4 = var_1ch;
0x0000f270 cmp r4, 0 |
| if (r4 == 0) {
0x0000f272 beq.w 0xf3fe | goto label_3;
| }
0x0000f276 ldrd r3, r2, [sp, 0x20] | __asm ("ldrd r3, r2, [var_20h]");
0x0000f27a orrs.w r1, r3, r2 | r1 = r3 | r2;
| if (r1 == r3) {
0x0000f27e beq.w 0xf3e0 | goto label_4;
| }
0x0000f282 ands r0, r3, 0x3f | r0 = r3 & 0x3f;
0x0000f286 str r0, [sp, 0xc] | var_ch = r0;
| if (r0 != r3) {
0x0000f288 bne.w 0xf438 | goto label_5;
| }
0x0000f28c lsr.w r8, r3, 6 | r8 = r3 >> 6;
0x0000f290 ldr.w sb, [r7] | sb = *(r7);
0x0000f294 orr.w r8, r8, r2, lsl 26 | r8 |= (r2 << 26);
0x0000f298 sub.w r5, r4, sb | r5 = r4 - sb;
0x0000f29c cmp.w r8, 0 |
| if (r8 <= 0) {
0x0000f2a0 ble.w 0xf402 | goto label_6;
| }
0x0000f2a4 adds r1, r5, 1 | r1 = r5 + 1;
0x0000f2a6 strd r4, r5, [sp, 0x10] | __asm ("strd r4, r5, [var_10h]");
0x0000f2aa add r1, r6 | r1 += r6;
0x0000f2ac mov r4, r8 | r4 = r8;
0x0000f2ae add.w sl, sb, r1 | sl = sb + r1;
0x0000f2b2 ldrd r6, r7, [r7, 8] | __asm ("ldrd r6, r7, [r7, 8]");
0x0000f2b6 mov fp, sl |
0x0000f2b8 mov r5, r0 | r5 = r0;
0x0000f2ba mov sl, r0 | sl = r0;
0x0000f2bc mov r8, r0 | r8 = r0;
0x0000f2be b 0xf2c2 |
| while (r4 != r3) {
0x0000f2c0 mov r8, r3 | r8 = r3;
0x0000f2c2 sub.w r3, fp, sb | r3 = fp - sb;
0x0000f2c6 subs r3, 1 | r3--;
0x0000f2c8 cmp r3, r6 |
0x0000f2ca sbcs.w r3, sl, r7 | __asm ("sbcs.w r3, sl, r7");
| if (r3 >= r6) {
0x0000f2ce bhs.w 0xf414 | goto label_7;
| }
0x0000f2d2 ldrb r3, [fp, -0x1] | r3 = *((fp - 0x1));
0x0000f2d6 cmp r3, 0x2e |
0x0000f2d8 ite eq |
| if (r3 != 0x2e) {
0x0000f2da moveq r0, fp | r0 = fp;
| }
| if (r3 == 0x2e) {
0x0000f2dc subne r0, fp, 1 | r0 = fp - 1;
| }
0x0000f2e0 add.w fp, fp, 0x40 |
0x0000f2e4 blx 0x1bb0 | fcn_00001bb0 ();
0x0000f2e8 add.w r3, r8, 1 | r3 = r8 + 1;
0x0000f2ec adds r0, 1 | r0++;
0x0000f2ee cmp r4, r3 |
0x0000f2f0 add r5, r0 | r5 += r0;
0x0000f2f2 bne 0xf2c0 |
| }
0x0000f2f4 ldr r4, [sp, 0x10] | r4 = var_10h;
0x0000f2f6 mov fp, r5 |
0x0000f2f8 str.w r8, [sp, 0x10] | __asm ("str.w r8, [var_10h]");
0x0000f2fc lsl.w r8, r3, 4 | r8 = r3 << 4;
0x0000f300 ldr r5, [sp, 0x14] | r5 = var_14h;
0x0000f302 add.w r0, r8, fp | r0 = r8 + fp;
0x0000f306 str r3, [sp, 0x14] | var_14h = r3;
0x0000f308 blx 0x1b0c | strerror (r0);
0x0000f30c ldr r3, [sp, 4] | r3 = var_4h;
0x0000f30e str r0, [r3] | *(r3) = r0;
0x0000f310 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000f312 cmp r0, 0 |
| if (r0 == 0) {
0x0000f314 beq.w 0xf442 | goto label_8;
| }
0x0000f318 ldr r2, [sp, 8] | r2 = var_8h;
0x0000f31a add.w sl, r0, r8 | sl = r0 + r8;
0x0000f31e str r3, [sp, 0x14] | var_14h = r3;
0x0000f320 mov r3, r7 | r3 = r7;
0x0000f322 mov r8, r0 | r8 = r0;
0x0000f324 mov r7, r6 | r7 = r6;
0x0000f326 and r2, r2, 0x10 | r2 &= 0x10;
0x0000f32a mov r6, sl | r6 = sl;
0x0000f32c str r2, [sp, 8] | var_8h = r2;
0x0000f32e mov.w fp, 0 |
0x0000f332 ldr r2, [sp] | r2 = *(sp);
0x0000f334 mov sl, r3 | sl = r3;
0x0000f336 add r2, r5 | r2 += r5;
0x0000f338 add sb, r2 | sb += r2;
| label_0:
0x0000f33a ldr r3, [sp] | r3 = *(sp);
0x0000f33c adds r1, r5, r3 | r1 = r5 + r3;
0x0000f33e mov.w r3, 0 | r3 = 0;
0x0000f342 adc r2, r3, 0 | __asm ("adc r2, r3, 0");
0x0000f346 cmp r7, r1 |
0x0000f348 sbcs.w r2, sl, r2 | __asm ("sbcs.w r2, sl, r2");
| if (r7 <= r1) {
0x0000f34c blo 0xf426 | goto label_9;
| }
0x0000f34e ldr r3, [sp, 8] | r3 = var_8h;
0x0000f350 cmp r3, 0 |
| if (r3 == 0) {
0x0000f352 beq 0xf3e4 | goto label_10;
| }
0x0000f354 ldr r0, [sp, 0xc] | r0 = var_ch;
0x0000f356 mov ip, r4 |
0x0000f358 movs r2, 0 | r2 = 0;
| do {
0x0000f35a ldrb r3, [ip], 1 | r3 = *(ip);
| ip++;
0x0000f35e lsls r2, r2, 8 | r2 <<= 8;
0x0000f360 orr.w r2, r2, r0, lsr 24 | r2 |= (r0 >> 24);
0x0000f364 cmp sb, ip |
0x0000f366 orr.w r0, r3, r0, lsl 8 | r0 = r3 | (r0 << 8);
0x0000f36a bne 0xf35a |
| } while (sb != ip);
| label_1:
0x0000f36c cmp r1, r7 |
0x0000f36e mov.w r3, 0 | r3 = 0;
0x0000f372 sbcs.w r1, r3, sl | __asm ("sbcs.w r1, r3, sl");
| if (r1 >= r7) {
0x0000f376 bhs 0xf414 | goto label_7;
| }
0x0000f378 ldr r3, [sp] | r3 = *(sp);
0x0000f37a adds r5, 0x40 | r5 += 0x40;
0x0000f37c ldrb r1, [r4, r3] | r1 = *((r4 + r3));
0x0000f37e adds r4, 0x40 | r4 += 0x40;
0x0000f380 strd r0, r2, [r8] | __asm ("strd r0, r2, [r8]");
0x0000f384 movs r2, 0x55 | r2 = 0x55;
0x0000f386 str.w r6, [r8, 0xc] | __asm ("str.w r6, [r8, 0xc]");
0x0000f38a add.w r8, r8, 0x10 | r8 += 0x10;
0x0000f38e cmp r1, 0x2e |
0x0000f390 str r2, [r8, -0x8] | *((r8 - 0x8)) = r2;
0x0000f394 ite eq |
| if (r1 != 0x2e) {
0x0000f396 addeq r1, sb, 1 | r1 = sb + 1;
| }
| if (r1 != 0x2e) {
0x0000f39a mov r1, sb | r1 = sb;
| }
0x0000f39c mov r0, r1 | r0 = r1;
0x0000f39e str r1, [sp, 4] | var_4h = r1;
0x0000f3a0 blx 0x1bb0 | fcn_00001bb0 ();
0x0000f3a4 ldr r1, [sp, 4] | r1 = var_4h;
0x0000f3a6 adds r2, r0, 1 | r2 = r0 + 1;
0x0000f3a8 mov r0, r6 | r0 = r6;
0x0000f3aa add r6, r2 | r6 += r2;
0x0000f3ac blx 0x19c8 | mmap64 ()
0x0000f3b0 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000f3b2 add.w sb, sb, 0x40 | sb += 0x40;
0x0000f3b6 add.w r2, fp, 1 | r2 += arg_1h;
0x0000f3ba cmp fp, r3 |
| if (fp != r3) {
0x0000f3bc beq 0xf3c2 |
0x0000f3be mov fp, r2 |
0x0000f3c0 b 0xf33a | goto label_0;
| }
0x0000f3c2 ldr r3, [sp, 0x14] | r3 = var_14h;
| do {
| label_2:
0x0000f3c4 ldr r1, [pc, 0x90] |
0x0000f3c6 ldr r2, [pc, 0x88] | r2 = *(0xf452);
0x0000f3c8 add r1, pc | r1 = 0x1e824;
0x0000f3ca ldr r2, [r1, r2] | r2 = *(0x1e824);
0x0000f3cc ldr r1, [r2] | r1 = *(0x1e824);
0x0000f3ce ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0000f3d0 eors r1, r2 | r1 ^= r2;
0x0000f3d2 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0000f3d6 bne 0xf43e | goto label_11;
| }
0x0000f3d8 mov r0, r3 | r0 = r3;
0x0000f3da add sp, 0x34 |
0x0000f3dc pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_4:
0x0000f3e0 mov r3, r5 | r3 = r5;
0x0000f3e2 b 0xf3c4 |
| } while (1);
| label_10:
0x0000f3e4 ldrd r2, r0, [sp, 8] | __asm ("ldrd r2, r0, [var_8h]");
0x0000f3e8 mov ip, sb |
| do {
0x0000f3ea ldrb r3, [ip, -0x1]! | r3 = *((ip -= 0x1));
0x0000f3ee lsls r2, r2, 8 | r2 <<= 8;
0x0000f3f0 orr.w r2, r2, r0, lsr 24 | r2 |= (r0 >> 24);
0x0000f3f4 cmp r4, ip |
0x0000f3f6 orr.w r0, r3, r0, lsl 8 | r0 = r3 | (r0 << 8);
0x0000f3f8 movs r0, 0 | r0 = 0;
0x0000f3fa bne 0xf3ea |
| } while (r0 != 0);
0x0000f3fc b 0xf36c | goto label_1;
| label_3:
0x0000f3fe mov r3, r4 | r3 = r4;
0x0000f400 b 0xf3c4 | goto label_2;
| label_6:
0x0000f402 lsl.w r0, r8, 4 | r0 = r8 << 4;
0x0000f406 blx 0x1b0c | strerror (r0);
0x0000f40a ldr r3, [sp, 4] | r3 = var_4h;
0x0000f40c str r0, [r3] | *(r3) = r0;
| if (r0 != 0) {
0x0000f40e cbz r0, 0xf442 |
0x0000f410 mov r3, r8 | r3 = r8;
0x0000f412 b 0xf3c4 | goto label_2;
| label_7:
0x0000f414 ldr r3, [pc, 0x44] |
0x0000f416 movs r2, 0xca | r2 = 0xca;
0x0000f418 ldr r1, [pc, 0x44] |
0x0000f41a ldr r0, [pc, 0x48] |
0x0000f41c add r3, pc | r3 = 0x1e87c;
0x0000f41e add r1, pc | r1 = 0x1e882;
0x0000f420 add r0, pc | r0 = 0x1e88a;
0x0000f422 blx 0x1de0 | fcn_00001de0 ();
| label_9:
0x0000f426 ldr r3, [pc, 0x40] |
0x0000f428 movs r2, 0x89 | r2 = 0x89;
0x0000f42a ldr r1, [pc, 0x40] |
0x0000f42c ldr r0, [pc, 0x40] |
0x0000f42e add r3, pc | r3 = 0x1e89c;
0x0000f430 add r1, pc | r1 = 0x1e8a2;
0x0000f432 add r0, pc | r0 = 0x1e8a6;
0x0000f434 blx 0x1de0 | fcn_00001de0 ();
| label_5:
0x0000f438 mvn r3, 0x15 | r3 = ~0x15;
0x0000f43c b 0xf3c4 | goto label_2;
| label_11:
0x0000f43e blx 0x1a1c | stat64 ();
| }
| label_8:
0x0000f442 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000f446 ldr r3, [r0] | r3 = *(r0);
0x0000f448 rsbs r3, r3, 0 | r3 -= ;
0x0000f44a b 0xf3c4 | goto label_2;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xf474 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.0000f474 () | void fcn_0000f474 (int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_30h;
| int16_t var_3ch;
| r0 = arg1;
| r1 = arg2;
0x0000f474 ldr r2, [pc, 0x1ec] |
0x0000f476 ldr r3, [pc, 0x1f0] | r3 = *(0xf66a);
0x0000f478 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f47c sub sp, 0x44 |
0x0000f47e add r2, pc | r2 = 0x1eae6;
0x0000f480 ldr.w r8, [r0, 0x38] | r8 = *((r0 + 0x38));
0x0000f484 mov r7, r1 | r7 = r1;
0x0000f486 ldr r3, [r2, r3] |
0x0000f488 ldr r2, [r0, 0x30] | r2 = *((r0 + 0x30));
0x0000f48a ldr.w fp, [r0, 8] | fp = *((r0 + 8));
0x0000f48e ldr r3, [r3] | r3 = *(0x1eae6);
0x0000f490 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000f492 mov.w r3, 0 | r3 = 0;
0x0000f496 ldr r3, [r0, 0x3c] | r3 = *((r0 + 0x3c));
0x0000f498 str r2, [sp, 0x14] | var_14h = r2;
0x0000f49a ldr r2, [r0, 0xc] | r2 = *((r0 + 0xc));
0x0000f49c cmp r8, fp |
0x0000f49e ldr r1, [r0, 0x34] | r1 = *((r0 + 0x34));
0x0000f4a0 sbcs r3, r2 | __asm ("sbcs r3, r2");
0x0000f4a2 str r2, [sp, 0x1c] | var_1ch = r2;
0x0000f4a4 str r1, [sp, 0x18] | var_18h = r1;
| if (r8 >= fp) {
0x0000f4a6 bhs.w 0xf648 | goto label_5;
| }
0x0000f4aa ldrh r6, [r0, 0x20] | r6 = *((r0 + 0x20));
0x0000f4ac mov r4, r0 | r4 = r0;
0x0000f4ae ldr r3, [r0] | r3 = *(r0);
0x0000f4b0 cmp r6, 1 |
0x0000f4b2 str r3, [sp, 0x10] | var_10h = r3;
| if (r6 < 1) {
0x0000f4b4 bls 0xf5ac | goto label_6;
| }
0x0000f4b6 movs r5, 1 | r5 = 1;
0x0000f4b8 add.w sl, sp, 0x30 | sl += var_30h;
0x0000f4bc add.w sb, sp, 0x28 | sb += var_28h;
0x0000f4c0 add r3, sp, 0x24 | r3 += var_24h;
0x0000f4c2 str r3, [sp, 0xc] | var_ch = r3;
| label_0:
0x0000f4c4 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f4c6 mov r2, sb | r2 = sb;
0x0000f4c8 mov r1, r5 | r1 = r5;
0x0000f4ca mov r0, r4 | r0 = r4;
0x0000f4cc str r3, [sp] | *(sp) = r3;
0x0000f4ce mov r3, sl | r3 = sl;
0x0000f4d0 bl 0xea20 | r0 = fcn_0000ea20 (r0, r1, r2, r3);
0x0000f4d4 cmp r0, 0 |
| if (r0 < 0) {
0x0000f4d6 blt 0xf5a4 | goto label_7;
| }
0x0000f4d8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000f4da movs r2, 0 | r2 = 0;
0x0000f4dc ldr r1, [sp, 0x24] | r1 = var_24h;
0x0000f4de cmp r1, r3 |
0x0000f4e0 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000f4e2 sbcs.w r3, r2, r3 | __asm ("sbcs.w r3, r2, r3");
| if (r1 >= r3) {
0x0000f4e6 bhs 0xf5a4 | goto label_7;
| }
0x0000f4e8 ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000f4ea add r1, r8 | r1 += r8;
0x0000f4ec mov r0, r7 | r0 = r7;
0x0000f4ee add r1, r3 | r1 += r3;
0x0000f4f0 blx 0x1924 | r0 = fcn_00001924 ();
0x0000f4f4 mov r3, r0 | r3 = r0;
0x0000f4f6 cmp r0, 0 |
| if (r0 != 0) {
0x0000f4f8 bne 0xf5a4 | goto label_7;
| }
0x0000f4fa cmp r5, r6 |
| if (r5 >= r6) {
0x0000f4fc bhs.w 0xf654 | goto label_8;
| }
0x0000f500 ldrh r2, [r4, 0x22] | r2 = *((r4 + 0x22));
0x0000f502 ldr r7, [r4, 0x18] | r7 = *((r4 + 0x18));
0x0000f504 ldr r1, [r4, 0x1c] | r1 = *((r4 + 0x1c));
0x0000f506 mul r2, r5, r2 | r2 = r5 * r2;
0x0000f50a adds r7, r2, r7 | r7 = r2 + r7;
0x0000f50c adc.w r1, r1, r2, asr 31 | __asm ("adc.w r1, r1, r2, asr 31");
0x0000f510 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000f512 cmp r7, fp |
0x0000f514 sbcs r1, r2 | __asm ("sbcs r1, r2");
| if (r7 >= fp) {
0x0000f516 bhs.w 0xf648 | goto label_5;
| }
0x0000f51a ldr r1, [r4, 0x10] | r1 = *((r4 + 0x10));
0x0000f51c asrs r2, r7, 0x1f | r2 = r7 >> 0x1f;
0x0000f51e adds r7, 8 | r7 += 8;
0x0000f520 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000f524 lsls r0, r1, 0x1e | r0 = r1 << 0x1e;
0x0000f526 itt pl |
| if (r0 < r1) {
0x0000f528 movpl r5, 8 | r5 = 8;
| }
| if (r0 < r1) {
0x0000f52a movpl r6, r5 | r6 = r5;
| }
| if (r0 < r1) {
0x0000f52c bmi 0xf5b2 | goto label_9;
| }
| label_2:
0x0000f52e adds r0, r7, r6 | r0 = r7 + r6;
0x0000f530 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000f534 cmp fp, r0 |
0x0000f536 ldr r0, [sp, 0x1c] | r0 = var_1ch;
0x0000f538 sbcs r0, r2 | __asm ("sbcs r0, r2");
| if (fp <= r0) {
0x0000f53a blo.w 0xf64c | goto label_10;
| }
0x0000f53e ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000f540 ands r1, r1, 0x10 | r1 &= 0x10;
0x0000f544 add.w r0, r2, r7 | r0 = r2 + r7;
| if (r1 == r1) {
0x0000f548 beq 0xf5b8 | goto label_11;
| }
0x0000f54a subs r0, 1 | r0--;
0x0000f54c movs r1, 0 | r1 = 0;
0x0000f54e add r5, r0 | r5 += r0;
0x0000f550 mov r2, r1 | r2 = r1;
| do {
0x0000f552 ldrb ip, [r0, 1]! | ip = *((r0 += 1));
0x0000f556 lsls r2, r2, 8 | r2 <<= 8;
0x0000f558 orr.w r2, r2, r1, lsr 24 | r2 |= (r1 >> 24);
0x0000f55c cmp r0, r5 |
0x0000f55e orr.w r1, ip, r1, lsl 8 | r1 = ip | (r1 << 8);
0x0000f560 movs r1, 1 | r1 = 1;
0x0000f562 bne 0xf552 |
| } while (r1 != 1);
0x0000f564 bic r8, r1, 2 | r8 = BIT_MASK (r1, 2);
0x0000f568 ldr r1, [r4, 4] | r1 = *((r4 + 4));
0x0000f56a mov r5, r2 | r5 = r2;
0x0000f56c cmp r1, 0 |
| if (r1 == 0) {
0x0000f56e beq 0xf622 | goto label_12;
| }
0x0000f570 add r1, r7 | r1 += r7;
| label_4:
0x0000f572 add r6, r1 | r6 += r1;
| do {
0x0000f574 strb r8, [r6, -0x1]! | *((r6 -= 0x1)) = r8;
0x0000f578 lsr.w r2, r8, 8 | r2 = r8 >> 8;
0x0000f57c cmp r1, r6 |
0x0000f57e orr.w r8, r2, r5, lsl 24 | r8 = r2 | (r5 << 24);
0x0000f582 lsr.w r5, r5, 8 | r5 >>= 8;
0x0000f586 bne 0xf574 |
| } while (r1 != r6);
| label_1:
0x0000f588 ldr r1, [pc, 0xe0] |
0x0000f58a ldr r2, [pc, 0xdc] | r2 = *(0xf66a);
0x0000f58c add r1, pc | r1 = 0x1ebfc;
0x0000f58e ldr r2, [r1, r2] | r2 = *(0x1ebfc);
0x0000f590 ldr r1, [r2] | r1 = *(0x1ebfc);
0x0000f592 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000f594 eors r1, r2 | r1 ^= r2;
0x0000f596 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0000f59a bne 0xf650 | goto label_13;
| }
0x0000f59c mov r0, r3 | r0 = r3;
0x0000f59e add sp, 0x44 |
0x0000f5a0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_7:
0x0000f5a4 adds r5, 1 | r5++;
0x0000f5a6 uxth r5, r5 | r5 = (int16_t) r5;
0x0000f5a8 cmp r5, r6 |
| if (r5 != r6) {
0x0000f5aa bne 0xf4c4 | goto label_0;
| }
| label_6:
0x0000f5ac mvn r3, 1 | r3 = ~1;
0x0000f5b0 b 0xf588 | goto label_1;
| label_9:
0x0000f5b2 movs r5, 4 | r5 = 4;
0x0000f5b4 mov r6, r5 | r6 = r5;
0x0000f5b6 b 0xf52e | goto label_2;
| label_11:
0x0000f5b8 add.w ip, r0, r5 |
0x0000f5bc mov lr, r1 | lr = r1;
| do {
0x0000f5be ldrb r2, [ip, -0x1]! | r2 = *((ip -= 0x1));
0x0000f5c2 lsl.w lr, lr, 8 | lr <<= 8;
0x0000f5c4 cmp r6, 0xe |
0x0000f5c6 orr.w lr, lr, r1, lsr 24 | lr |= (r1 >> 24);
0x0000f5ca orr.w r1, r2, r1, lsl 8 | r1 = r2 | (r1 << 8);
0x0000f5ce rsb.w r2, ip, 1 | r2 = 1 - ip;
0x0000f5d2 add r2, r0 | r2 += r0;
0x0000f5d4 add r2, r5 | r2 += r5;
0x0000f5d6 cmp r2, r5 |
0x0000f5d8 bls 0xf5be |
| } while (r2 < r5);
0x0000f5da ldr r2, [r4, 4] | r2 = *((r4 + 4));
0x0000f5dc bic r5, r1, 2 | r5 = BIT_MASK (r1, 2);
0x0000f5e0 mov r8, lr | r8 = lr;
| if (r2 == 0) {
0x0000f5e2 cbz r2, 0xf5fc | goto label_14;
| }
0x0000f5e4 add r2, r7 | r2 += r7;
| label_3:
0x0000f5e6 add r6, r2 | r6 += r2;
| do {
0x0000f5e8 strb r5, [r2], 1 | *(r2) = r5;
| r2++;
0x0000f5ec lsrs r1, r5, 8 | r1 = r5 >> 8;
0x0000f5ee cmp r6, r2 |
0x0000f5f0 orr.w r5, r1, r8, lsl 24 | r5 = r1 | (r8 << 24);
0x0000f5f4 lsr.w r8, r8, 8 | r8 >>= 8;
0x0000f5f8 bne 0xf5e8 |
| } while (r6 != r2);
0x0000f5fa b 0xf588 | goto label_1;
| label_14:
0x0000f5fc mov r0, fp | r0 = fp;
0x0000f5fe str r3, [sp, 0xc] | var_ch = r3;
0x0000f600 blx 0x1b0c | strerror (r0);
0x0000f604 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f606 mov sb, r0 | sb = r0;
0x0000f608 str r0, [r4, 4] | *((r4 + 4)) = r0;
| if (r0 != 0) {
0x0000f60a cbz r0, 0xf658 |
0x0000f60c mov r2, fp | r2 = fp;
0x0000f60e ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000f610 str r3, [sp, 0xc] | var_ch = r3;
0x0000f612 blx 0x19c8 | mmap64 ()
0x0000f616 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f618 add.w r2, sb, r7 | r2 = sb + r7;
0x0000f61c str.w sb, [r4] | __asm ("str.w sb, [r4]");
0x0000f620 b 0xf5e6 | goto label_3;
| label_12:
0x0000f622 mov r0, fp | r0 = fp;
0x0000f624 str r3, [sp, 0xc] | var_ch = r3;
0x0000f626 blx 0x1b0c | strerror (r0);
0x0000f62a ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f62c mov sb, r0 | sb = r0;
0x0000f62e str r0, [r4, 4] | *((r4 + 4)) = r0;
| if (r0 == 0) {
0x0000f630 cbz r0, 0xf658 | goto label_15;
| }
0x0000f632 ldr r1, [sp, 0x10] | r1 = var_10h;
0x0000f634 mov r2, fp | r2 = fp;
0x0000f636 str r3, [sp, 0xc] | var_ch = r3;
0x0000f638 blx 0x19c8 | mmap64 ()
0x0000f63c ldr r3, [sp, 0xc] | r3 = var_ch;
0x0000f63e add.w r1, sb, r7 | r1 = sb + r7;
0x0000f642 str.w sb, [r4] | __asm ("str.w sb, [r4]");
0x0000f646 b 0xf572 | goto label_4;
| label_5:
0x0000f648 bl 0xe9c0 | fcn_0000e9c0 ();
| label_10:
0x0000f64c bl 0xe9e0 | fcn_0000e9e0 ();
| label_13:
0x0000f650 blx 0x1a1c | stat64 ();
| label_8:
0x0000f654 bl 0xea00 | fcn_0000ea00 ();
| }
| label_15:
0x0000f658 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000f65c ldr r3, [r0] | r3 = *(r0);
0x0000f65e rsbs r3, r3, 0 | r3 -= ;
0x0000f660 b 0xf588 | goto label_1;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xf670 */
| #include <stdint.h>
|
; (fcn) fcn.0000f670 () | void fcn_0000f670 (int16_t arg1) {
| int16_t var_4h;
| int16_t var_ch;
| int16_t var_10h;
| int32_t var_10h_2;
| int16_t var_1ch;
| r0 = arg1;
0x0000f670 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f674 sub sp, 0x24 |
0x0000f676 ldr r5, [pc, 0x130] |
0x0000f678 add r3, sp, 0x10 | r3 += var_10h;
0x0000f67a add r2, sp, 0xc | r2 += var_ch;
0x0000f67c mov r7, r0 | r7 = r0;
0x0000f67e ldr r4, [pc, 0x12c] | r4 = *(0xf7ae);
0x0000f680 add r5, pc | r5 = 0x1ee2e;
0x0000f682 ldr r1, [pc, 0x12c] |
0x0000f684 ldr r4, [r5, r4] |
0x0000f686 add r1, pc | r1 = 0x1ee3c;
0x0000f688 ldr r4, [r4] | r4 = *(0x1ee2e);
0x0000f68a str r4, [sp, 0x1c] | var_1ch = r4;
0x0000f68c mov.w r4, 0 | r4 = 0;
0x0000f690 bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000f694 subs r3, r0, 0 | r3 = r0 - 0;
| if (r3 < r0) {
0x0000f696 blt 0xf6c8 | goto label_0;
| }
0x0000f698 ldr r6, [sp, 0xc] | r6 = var_ch;
| if (r6 == 0) {
0x0000f69a cbz r6, 0xf6c6 | goto label_4;
| }
0x0000f69c ldrd r4, r5, [sp, 0x10] | __asm ("ldrd r4, r5, [var_10h]");
0x0000f6a0 orrs.w r3, r4, r5 | r3 = r4 | r5;
| if (r3 == r4) {
0x0000f6a4 beq 0xf6c6 | goto label_4;
| }
0x0000f6a6 ldrb r3, [r6] | r3 = *(r6);
| if (r3 != 0) {
0x0000f6a8 cbnz r3, 0xf6e8 | goto label_5;
| }
0x0000f6aa adds r3, r6, 1 | r3 = r6 + 1;
0x0000f6ac b 0xf6be |
| while (r1 != r2) {
0x0000f6ae subs r4, 1 | r4--;
0x0000f6b0 mov r6, r3 | r6 = r3;
0x0000f6b2 mov r4, r2 | r4 = r2;
0x0000f6b4 ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0000f6b8 sbc r5, r5, 0 | __asm ("sbc r5, r5, 0");
| if (r2 != 0) {
0x0000f6bc cbnz r2, 0xf6e4 | goto label_6;
| }
0x0000f6be subs r2, r4, 1 | r2 = r4 - 1;
0x0000f6c0 orrs.w r1, r2, r5 | r1 = r2 | r5;
0x0000f6c4 bne 0xf6ae |
| }
| do {
| label_4:
0x0000f6c6 movs r3, 0 | r3 = 0;
| label_0:
0x0000f6c8 ldr r1, [pc, 0xe8] |
0x0000f6ca ldr r2, [pc, 0xe0] | r2 = *(0xf7ae);
0x0000f6cc add r1, pc | r1 = 0x1ee84;
0x0000f6ce ldr r2, [r1, r2] | r2 = *(0x1ee84);
0x0000f6d0 ldr r1, [r2] | r1 = *(0x1ee84);
0x0000f6d2 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000f6d4 eors r1, r2 | r1 ^= r2;
0x0000f6d6 mov.w r2, 0 | r2 = 0;
| if (r1 != r2) {
0x0000f6da bne 0xf798 | goto label_7;
| }
0x0000f6dc mov r0, r3 | r0 = r3;
0x0000f6de add sp, 0x24 |
0x0000f6e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_6:
0x0000f6e4 strd r4, r5, [sp, 0x10] | __asm ("strd r4, r5, [var_10h]");
| label_5:
0x0000f6e8 subs r3, r4, 1 | r3 = r4 - 1;
0x0000f6ea orrs r3, r5 | r3 |= r5;
0x0000f6ec beq 0xf6c6 |
| } while (r3 == r5);
0x0000f6ee ldr.w fp, [pc, 0xc8] |
0x0000f6f2 movs r3, 0 | r3 = 0;
0x0000f6f4 mov r2, r3 | r2 = r3;
0x0000f6f6 add fp, pc | fp = 0x1eeb4;
| do {
| label_2:
0x0000f6f8 ldrb r1, [r6, r3] | r1 = *((r6 + r3));
0x0000f6fa adds.w r8, r3, 1 | r8 = r3 + 1;
0x0000f6fe add.w sl, r6, r3 | sl = r6 + r3;
0x0000f702 adc sb, r2, 0 | __asm ("adc sb, r2, 0");
| if (r1 != 0) {
0x0000f706 cbz r1, 0xf74a |
0x0000f708 cmp r8, r4 |
0x0000f70a sbcs.w r1, sb, r5 | __asm ("sbcs.w r1, sb, r5");
| if (r8 >= r4) {
0x0000f70e bhs 0xf756 | goto label_8;
| }
0x0000f710 adds r3, 9 | r3 += 9;
0x0000f712 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000f716 cmp r3, r4 |
0x0000f718 sbcs r2, r5 | __asm ("sbcs r2, r5");
| if (r3 >= r4) {
0x0000f71a bhs 0xf782 | goto label_9;
| }
0x0000f71c movs r2, 9 | r2 = 9;
0x0000f71e mov r1, fp | r1 = fp;
0x0000f720 mov r0, sl | r0 = sl;
0x0000f722 blx 0x1da4 | r0 = fcn_00001da4 ();
0x0000f726 mov r3, r0 | r3 = r0;
| if (r0 != 0) {
0x0000f728 cbnz r0, 0xf788 | goto label_10;
| }
0x0000f72a ldr r4, [r7, 4] | r4 = *((r7 + 4));
0x0000f72c ldr r5, [r7] | r5 = *(r7);
0x0000f72e sub.w r6, sl, r5 | r6 = sl - r5;
| if (r4 == 0) {
0x0000f732 cbz r4, 0xf75c | goto label_11;
| }
| label_1:
0x0000f734 mov r0, sl | r0 = sl;
0x0000f736 str r3, [sp, 4] | var_4h = r3;
0x0000f738 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000f73a bics.w r1, sl, r0, lsl 8 | __asm ("bics.w r1, sl, r0, lsl 8");
0x0000f73e mov r2, r0 | r2 = r0;
0x0000f740 adds r0, r4, r6 | r0 = r4 + r6;
0x0000f742 blx 0x1c2c | strtoull (r0, r1, r2);
0x0000f746 ldr r3, [sp, 4] | r3 = var_4h;
0x0000f748 b 0xf6c8 | goto label_0;
| }
0x0000f74a mov r3, r8 | r3 = r8;
0x0000f74c mov r2, sb | r2 = sb;
| label_3:
0x0000f74e cmp r3, r4 |
0x0000f750 sbcs.w r1, r2, r5 | __asm ("sbcs.w r1, r2, r5");
0x0000f754 blo 0xf6f8 |
| } while (r3 <= r4);
| label_8:
0x0000f756 mvn r3, 1 | r3 = ~1;
0x0000f75a b 0xf6c8 | goto label_0;
| label_11:
0x0000f75c ldr.w r8, [r7, 8] | r8 = *((r7 + 8));
0x0000f760 str r0, [sp, 4] | var_4h = r0;
0x0000f762 mov r0, r8 | r0 = r8;
0x0000f764 blx 0x1b0c | strerror (r0);
0x0000f768 ldr r3, [sp, 4] | r3 = var_4h;
0x0000f76a mov r4, r0 | r4 = r0;
0x0000f76c str r0, [r7, 4] | *((r7 + 4)) = r0;
| if (r0 != 0) {
0x0000f76e cbz r0, 0xf79c |
0x0000f770 mov r2, r8 | r2 = r8;
0x0000f772 mov r1, r5 | r1 = r5;
0x0000f774 str r3, [sp, 4] | var_4h = r3;
0x0000f776 blx 0x19c8 | mmap64 ()
0x0000f77a str r4, [r7] | *(r7) = r4;
0x0000f77c ldr r3, [sp, 4] | r3 = var_4h;
0x0000f77e ldr r4, [r7, 4] | r4 = *((r7 + 4));
0x0000f780 b 0xf734 | goto label_1;
| label_9:
0x0000f782 mov r3, r8 | r3 = r8;
0x0000f784 mov r2, sb | r2 = sb;
0x0000f786 b 0xf6f8 | goto label_2;
| label_10:
0x0000f788 mov r0, sl | r0 = sl;
0x0000f78a blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000f78e adds.w r3, r0, r8 | r3 = r0 + r8;
0x0000f792 adc r2, sb, 0 | __asm ("adc r2, sb, 0");
0x0000f796 b 0xf74e | goto label_3;
| label_7:
0x0000f798 blx 0x1a1c | stat64 ();
| }
0x0000f79c blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000f7a0 ldr r3, [r0] | r3 = *(r0);
0x0000f7a2 rsbs r3, r3, 0 | r3 -= ;
0x0000f7a4 b 0xf6c8 | goto label_0;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xf7bc */
| #include <stdint.h>
|
; (fcn) fcn.0000f7bc () | void fcn_0000f7bc (int16_t arg_1h, int16_t arg_4h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t var_50h;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int32_t var_80h_2;
| int16_t var_88h;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_9ch;
| r0 = arg1;
| r1 = arg2;
0x0000f7bc push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000f7c0 mov r5, r0 | r5 = r0;
0x0000f7c2 vpush {d8} | __asm ("vpush {d8}");
0x0000f7c6 sub sp, 0xa4 |
0x0000f7c8 add r3, sp, 0x78 | r3 += var_78h;
0x0000f7ca add r2, sp, 0x6c | r2 += var_6ch;
0x0000f7cc ldr.w r4, [pc, 0x758] | r4 = *(0x0000ff28);
0x0000f7d0 strd r0, r1, [sp, 0x38] | __asm ("strd r0, r1, [var_38h]");
0x0000f7d4 ldr.w r1, [pc, 0x754] |
0x0000f7d8 add r4, pc | r4 += pc;
0x0000f7da ldr r1, [r4, r1] | r1 = *((r4 + r1));
0x0000f7dc ldr r1, [r1] | r1 = *(0xff2c);
0x0000f7de str r1, [sp, 0x9c] | var_9ch = r1;
0x0000f7e0 mov.w r1, 0 | r1 = 0;
0x0000f7e4 ldr.w r1, [pc, 0x748] |
0x0000f7e8 add r1, pc | r1 = 0x1f71c;
0x0000f7ea bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000f7ee cmp r0, 0 |
| if (r0 < 0) {
0x0000f7f0 blt.w 0xf974 | goto label_7;
| }
0x0000f7f4 ldr.w r1, [pc, 0x73c] |
0x0000f7f8 add r3, sp, 0x80 | r3 += var_80h;
0x0000f7fa add r2, sp, 0x70 | r2 += var_70h;
0x0000f7fc mov r0, r5 | r0 = r5;
0x0000f7fe add r1, pc | r1 = 0x1f736;
0x0000f800 bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000f804 cmp r0, 0 |
| if (r0 < 0) {
0x0000f806 blt.w 0xf974 | goto label_7;
| }
0x0000f80a ldr r4, [r5, 0x10] | r4 = *((r5 + 0x10));
0x0000f80c ldrd r0, r1, [sp, 0x80] | __asm ("ldrd r0, r1, [var_80h]");
0x0000f810 ands r3, r4, 2 | r3 = r4 & 2;
0x0000f814 str r3, [sp, 0x18] | var_18h = r3;
0x0000f816 ite eq |
| if (r3 != r4) {
0x0000f818 moveq r3, 0x18 | r3 = 0x18;
| }
| if (r3 == r4) {
0x0000f81a movne r3, 0x10 | r3 = 0x10;
| }
0x0000f81c str r3, [sp, 0x10] | var_10h = r3;
0x0000f81e mov r5, r3 | r5 = r3;
0x0000f820 ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000f822 movs r3, 0 | r3 = 0;
0x0000f824 bl 0x113b0 | fcn_000113b0 (r0, r1, r2, r3);
0x0000f828 str r3, [sp, 0x4c] | var_4ch = r3;
0x0000f82a orrs r3, r2 | r3 |= r2;
0x0000f82c str r0, [sp, 0x2c] | var_2ch = r0;
0x0000f82e str r2, [sp, 0xc] | var_ch = r2;
| if (r3 != r2) {
0x0000f830 bne.w 0xf974 | goto label_7;
| }
0x0000f834 ldr r1, [sp, 0x38] | r1 = var_38h;
0x0000f836 cmp r0, 1 |
0x0000f838 ldr r3, [sp, 0x70] | r3 = var_70h;
0x0000f83a ldr.w r8, [r1] | r8 = *(r1);
0x0000f83e sub.w r3, r3, r8 | r3 -= r8;
0x0000f842 add.w r2, r3, r5 | r2 = r3 + r5;
0x0000f846 ldr r3, [sp, 0x6c] | r3 = var_6ch;
0x0000f848 str r2, [sp, 0x54] | var_54h = r2;
0x0000f84a str r2, [sp, 0x58] | var_58h = r2;
0x0000f84c sub.w r3, r3, r8 | r3 -= r8;
0x0000f850 str r3, [sp, 0x20] | var_20h = r3;
0x0000f852 asr.w r3, r3, 0x1f | r3 >>= 0x1f;
0x0000f856 str r3, [sp, 0x24] | var_24h = r3;
0x0000f858 mov r3, r2 | r3 = r2;
0x0000f85a mov.w r2, 0 | r2 = 0;
0x0000f85e str r2, [sp, 0x28] | var_28h = r2;
| if (r0 <= 1) {
0x0000f860 ble.w 0xf974 | goto label_7;
| }
0x0000f864 mov sb, r3 | sb = r3;
0x0000f866 ldr.w fp, [pc, 0x6d0] |
0x0000f86a movs r3, 1 | r3 = 1;
0x0000f86c and r2, r4, 0x10 | r2 = r4 & 0x10;
0x0000f870 str r3, [sp, 8] | var_8h = r3;
0x0000f872 add.w r3, r8, 4 | r3 = r8 + 4;
0x0000f876 str r3, [sp, 0x40] | var_40h = r3;
0x0000f878 add.w r3, r8, -1 | r3 = r8 + -1;
0x0000f87c add fp, pc | fp = 0x1f7ba;
0x0000f87e str r2, [sp, 0x14] | var_14h = r2;
0x0000f880 str r3, [sp, 0x44] | var_44h = r3;
0x0000f882 add.w r3, r8, 3 | r3 = r8 + 3;
0x0000f886 ldr r2, [sp, 0x78] | r2 = var_78h;
0x0000f888 movs r5, 0 | r5 = 0;
0x0000f88a str r3, [sp, 0x48] | var_48h = r3;
0x0000f88c mov r3, fp | r3 = fp;
0x0000f88e mov fp, sb |
0x0000f890 mov sb, r3 | sb = r3;
0x0000f892 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000f894 mov r6, r5 | r6 = r5;
0x0000f896 str r2, [sp, 0x30] | var_30h = r2;
0x0000f898 ldr r2, [sp, 0x7c] | r2 = var_7ch;
0x0000f89a ldrd r7, sl, [r1, 8] | __asm ("ldrd r7, sl, [r1, 8]");
0x0000f89e adds.w r1, fp, 4 | r1 += arg_4h;
0x0000f8a2 str r5, [sp, 0x1c] | var_1ch = r5;
0x0000f8a4 str r2, [sp, 0x34] | var_34h = r2;
0x0000f8a6 adc r2, r5, 0 | __asm ("adc r2, r5, 0");
0x0000f8aa cmp r3, 0 |
| if (r3 == 0) {
0x0000f8ac beq 0xf944 | goto label_11;
| }
| label_0:
0x0000f8ae cmp r7, r1 |
0x0000f8b0 sbcs.w r2, sl, r2 | __asm ("sbcs.w r2, sl, r2");
| if (r7 <= r1) {
0x0000f8b4 blo.w 0xfefc | goto label_12;
| }
0x0000f8b8 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000f8ba add.w r0, r8, fp | r0 = r8 + fp;
0x0000f8be cmp r3, 0 |
| if (r3 == 0) {
0x0000f8c0 beq.w 0xf9ea | goto label_13;
| }
0x0000f8c4 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000f8c6 ldr r4, [sp, 0xc] | r4 = var_ch;
0x0000f8c8 add.w r2, r3, fp | r2 = r3 + fp;
0x0000f8ca lsls r3, r1, 8 | r3 = r1 << 8;
0x0000f8cc ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000f8ce add.w r0, r3, fp | r0 = r3 + fp;
| do {
0x0000f8d2 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x0000f8d6 cmp r2, r0 |
0x0000f8d8 orr.w r4, r3, r4, lsl 8 | r4 = r3 | (r4 << 8);
0x0000f8da movs r4, 4 | r4 = 4;
0x0000f8dc bne 0xf8d2 |
| } while (r4 != 4);
| label_1:
0x0000f8de ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000f8e0 movs r2, 0 | r2 = 0;
0x0000f8e2 cmp r4, r3 |
0x0000f8e4 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000f8e6 sbcs r2, r3 | __asm ("sbcs r2, r3");
| if (r4 >= r3) {
0x0000f8e8 bhs 0xf974 | goto label_7;
| }
0x0000f8ea ldr r3, [sp, 0x20] | r3 = var_20h;
0x0000f8ec adds r4, r4, r3 | r4 += r3;
0x0000f8ee ldr r3, [sp, 0x24] | r3 = var_24h;
0x0000f8f0 adc r2, r3, 0 | __asm ("adc r2, r3, 0");
0x0000f8f4 cmp r4, r7 |
0x0000f8f6 sbcs.w r2, r2, sl | __asm ("sbcs.w r2, r2, sl");
| if (r4 >= r7) {
0x0000f8fa bhs.w 0xff00 | goto label_14;
| }
0x0000f8fe add r4, r8 | r4 += r8;
0x0000f900 movs r2, 6 | r2 = 6;
0x0000f902 mov r1, sb | r1 = sb;
0x0000f904 mov r0, r4 | r0 = r4;
0x0000f906 blx 0x1da4 | r0 = fcn_00001da4 ();
| if (r0 == 0) {
0x0000f90a cbnz r0, 0xf91c |
0x0000f90c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000f90e adds r0, r4, 6 | r0 = r4 + 6;
0x0000f910 adds r6, 1 | r6++;
0x0000f912 adds r3, 1 | r3++;
0x0000f914 str r3, [sp, 0x1c] | var_1ch = r3;
0x0000f916 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000f91a add r6, r0 | r6 += r0;
| }
0x0000f91c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000f91e adds.w r3, r3, fp | r3 += fp;
0x0000f922 mov fp, r3 |
0x0000f924 ldr r3, [sp, 8] | r3 = var_8h;
0x0000f926 adc r5, r5, 0 | __asm ("adc r5, r5, 0");
0x0000f92a adds r2, r3, 1 | r2 = r3 + 1;
0x0000f92c ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000f92e cmp r3, r2 |
| if (r3 == r2) {
0x0000f930 beq.w 0xfb42 | goto label_15;
| }
0x0000f934 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000f936 adds.w r1, fp, 4 | r1 += arg_4h;
0x0000f93a str r2, [sp, 8] | var_8h = r2;
0x0000f93c adc r2, r5, 0 | __asm ("adc r2, r5, 0");
0x0000f940 cmp r3, 0 |
| if (r3 != 0) {
0x0000f942 bne 0xf8ae | goto label_0;
| }
| label_11:
0x0000f944 cmp r7, r1 |
0x0000f946 sbcs.w r2, sl, r2 | __asm ("sbcs.w r2, sl, r2");
| if (r7 <= r1) {
0x0000f94a blo.w 0xfefc | goto label_12;
| }
0x0000f94e ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000f950 add.w r0, r8, fp | r0 = r8 + fp;
0x0000f954 cmp r3, 0 |
| if (r3 == 0) {
0x0000f956 beq 0xfa00 | goto label_16;
| }
0x0000f958 ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000f95a ldr r4, [sp, 0xc] | r4 = var_ch;
0x0000f95c add.w r2, r3, fp | r2 = r3 + fp;
0x0000f960 ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000f962 add.w r0, r3, fp | r0 = r3 + fp;
| do {
0x0000f966 ldrb r3, [r2, 1]! | r3 = *((r2 += 1));
0x0000f96a cmp r2, r0 |
0x0000f96c orr.w r4, r3, r4, lsl 8 | r4 = r3 | (r4 << 8);
0x0000f970 bne 0xf966 |
| } while (r2 != r0);
0x0000f972 b 0xf8de | goto label_1;
| label_7:
0x0000f974 ldrd r0, r4, [sp, 0x38] | __asm ("ldrd r0, r4, [var_38h]");
0x0000f978 movs r2, 0 | r2 = 0;
0x0000f97a ldr.w r1, [pc, 0x5c0] |
0x0000f97e add r3, sp, 0x90 | r3 += var_90h;
0x0000f980 str r2, [r4] | *(r4) = r2;
0x0000f982 add r2, sp, 0x88 | r2 += var_88h;
0x0000f984 add r1, pc | r1 = 0x1f8c6;
0x0000f986 bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000f98a subs.w sb, r0, 0 | sb = r0 - 0;
| if (sb < r0) {
0x0000f98e blt 0xf9c4 | goto label_5;
| }
0x0000f990 ldr r6, [sp, 0x88] | r6 = var_88h;
| if (r6 == 0) {
0x0000f992 cbz r6, 0xf9c0 | goto label_2;
| }
0x0000f994 ldrd r4, r5, [sp, 0x90] | __asm ("ldrd r4, r5, [var_90h]");
0x0000f998 orrs.w r3, r4, r5 | r3 = r4 | r5;
| if (r3 == r4) {
0x0000f99c beq 0xf9c0 | goto label_2;
| }
0x0000f99e ldrb r3, [r6] | r3 = *(r6);
0x0000f9a0 cmp r3, 0 |
| if (r3 != 0) {
0x0000f9a2 bne 0xfa1a | goto label_17;
| }
0x0000f9a4 adds r3, r6, 1 | r3 = r6 + 1;
0x0000f9a6 b 0xf9b8 |
| while (r1 != r2) {
0x0000f9a8 subs r4, 1 | r4--;
0x0000f9aa mov r6, r3 | r6 = r3;
0x0000f9ac mov r4, r2 | r4 = r2;
0x0000f9ae ldrb r2, [r3], 1 | r2 = *(r3);
| r3++;
0x0000f9b2 sbc r5, r5, 0 | __asm ("sbc r5, r5, 0");
| if (r2 != 0) {
0x0000f9b6 cbnz r2, 0xfa16 | goto label_18;
| }
0x0000f9b8 subs r2, r4, 1 | r2 = r4 - 1;
0x0000f9ba orrs.w r1, r2, r5 | r1 = r2 | r5;
0x0000f9be bne 0xf9a8 |
| }
| label_2:
0x0000f9c0 mov.w sb, 0 | sb = 0;
| label_5:
0x0000f9c4 ldr.w r2, [pc, 0x578] | r2 = *(0x0000ff40);
0x0000f9c8 ldr.w r3, [pc, 0x560] | r3 = *(0xff2c);
0x0000f9cc add r2, pc | r2 += pc;
0x0000f9ce ldr r3, [r2, r3] | r3 = *((r2 + r3));
0x0000f9d0 ldr r2, [r3] | r2 = *(0xff2c);
0x0000f9d2 ldr r3, [sp, 0x9c] | r3 = var_9ch;
0x0000f9d4 eors r2, r3 | r2 ^= r3;
0x0000f9d6 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000f9da bne.w 0xff16 | goto label_19;
| }
0x0000f9de mov r0, sb | r0 = sb;
0x0000f9e0 add sp, 0xa4 |
0x0000f9e2 vpop {d8} | __asm ("vpop {d8}");
0x0000f9e6 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_13:
0x0000f9ea ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000f9ec ldr r4, [sp, 0xc] | r4 = var_ch;
0x0000f9ee add.w r2, r3, fp | r2 = r3 + fp;
| do {
0x0000f9f2 ldrb r3, [r2, -0x1]! | r3 = *((r2 -= 0x1));
0x0000f9f6 cmp r2, r0 |
0x0000f9f8 orr.w r4, r3, r4, lsl 8 | r4 = r3 | (r4 << 8);
0x0000f9fc bne 0xf9f2 |
| } while (r2 != r0);
0x0000f9fe b 0xf8de | goto label_1;
| label_16:
0x0000fa00 ldr r3, [sp, 0x40] | r3 = var_40h;
0x0000fa02 ldr r4, [sp, 0xc] | r4 = var_ch;
0x0000fa04 add.w r2, r3, fp | r2 = r3 + fp;
| do {
0x0000fa08 ldrb r3, [r2, -0x1]! | r3 = *((r2 -= 0x1));
0x0000fa0c cmp r2, r0 |
0x0000fa0e orr.w r4, r3, r4, lsl 8 | r4 = r3 | (r4 << 8);
0x0000fa12 bne 0xfa08 |
| } while (r2 != r0);
0x0000fa14 b 0xf8de | goto label_1;
| label_18:
0x0000fa16 strd r4, r5, [sp, 0x90] | __asm ("strd r4, r5, [var_90h]");
| label_17:
0x0000fa1a add.w fp, r4, -1 |
0x0000fa1e orrs.w r3, fp, r5 | r3 = fp | r5;
| if (r3 == fp) {
0x0000fa22 beq 0xf9c0 | goto label_2;
| }
0x0000fa24 movs r3, 0 | r3 = 0;
0x0000fa26 add.w r8, r6, r4 | r8 = r6 + r4;
0x0000fa2a add.w r8, r8, -1 | r8 += -1;
0x0000fa2e subs r0, r6, 1 | r0 = r6 - 1;
0x0000fa30 mov sl, r3 | sl = r3;
0x0000fa32 mov sb, r3 | sb = r3;
0x0000fa34 mov r2, r3 | r2 = r3;
0x0000fa36 mov r1, r3 | r1 = r3;
| do {
0x0000fa38 ldrb r7, [r0, 1]! | r7 = *((r0 += 1));
0x0000fa3c adds.w ip, r2, 1 |
0x0000fa40 mov lr, r2 | lr = r2;
0x0000fa42 mov r2, ip | r2 = ip;
0x0000fa44 mov ip, r1 |
0x0000fa46 adc r1, r1, 0 | __asm ("adc r1, r1, 0");
| if (r7 == 0) {
0x0000fa4a cbnz r7, 0xfa5a |
0x0000fa4c cmp ip, sb |
0x0000fa4e it eq |
| if (ip == sb) {
0x0000fa50 cmpeq lr, sl | __asm ("cmpeq lr, sl");
| }
0x0000fa52 mov sl, r2 | sl = r2;
0x0000fa54 it ne |
| if (ip == sb) {
0x0000fa56 addne r3, 1 | r3++;
| }
0x0000fa58 mov sb, r1 | sb = r1;
| }
0x0000fa5a cmp r8, r0 |
0x0000fa5c bne 0xfa38 |
| } while (r8 != r0);
0x0000fa5e ldrb.w r2, [r6, fp] | r2 = *((r6 + fp));
0x0000fa62 add.w r1, r6, fp | r1 = r6 + fp;
0x0000fa66 str r1, [sp, 0x18] | var_18h = r1;
0x0000fa68 cmp r2, 0 |
| if (r2 != 0) {
0x0000fa6a bne 0xfb3e | goto label_20;
| }
| label_6:
0x0000fa6c lsls r7, r3, 4 | r7 = r3 << 4;
0x0000fa6e adds r0, r4, 1 | r0 = r4 + 1;
0x0000fa70 add r0, r7 | r0 += r7;
0x0000fa72 blx 0x1b0c | strerror (r0);
0x0000fa76 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000fa78 str r0, [sp, 0x14] | var_14h = r0;
0x0000fa7a str r0, [r2] | *(r2) = r0;
0x0000fa7c cmp r0, 0 |
| if (r0 == 0) {
0x0000fa7e beq.w 0xff1a | goto label_21;
| }
0x0000fa82 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000fa84 mov.w sb, 0 | sb = 0;
0x0000fa88 vmov.i32 d8, 0 | __asm ("vmov.i32 d8, 0");
0x0000fa8c mov r1, sb | r1 = sb;
0x0000fa8e mov ip, sb |
0x0000fa90 mov sl, sb | sl = sb;
0x0000fa92 add r3, r7 | r3 += r7;
0x0000fa94 mov fp, sb |
0x0000fa96 mov r7, sb | r7 = sb;
0x0000fa98 strd r4, r5, [sp, 8] | __asm ("strd r4, r5, [var_8h]");
0x0000fa9c b 0xfad8 | goto label_4;
| label_3:
0x0000fa9e ldr r0, [sp, 0x14] | r0 = var_14h;
0x0000faa0 movs r4, 0x47 | r4 = 0x47;
0x0000faa2 subs r2, r2, r1 | r2 -= r1;
0x0000faa4 add r1, r6 | r1 += r6;
0x0000faa6 str r2, [sp, 0x10] | var_10h = r2;
0x0000faa8 add.w r0, r0, fp, lsl 4 | r0 += (fp << 4);
0x0000faac add.w fp, fp, 1 |
0x0000fab0 str r3, [r0, 0xc] | *((r0 + 0xc)) = r3;
0x0000fab2 vstr d8, [r0] | __asm ("vstr d8, [r0]");
0x0000fab6 str r4, [r0, 8] | *((r0 + 8)) = r4;
0x0000fab8 mov r0, r3 | r0 = r3;
0x0000faba blx 0x19c8 | mmap64 ()
0x0000fabe ldr r2, [sp, 0x10] | r2 = var_10h;
0x0000fac0 mov r3, r0 | r3 = r0;
0x0000fac2 mov r1, sb | r1 = sb;
0x0000fac4 mov ip, r8 |
0x0000fac6 strb r5, [r0, r2] | *((r0 + r2)) = r5;
0x0000fac8 adds r2, 1 | r2++;
0x0000faca add r3, r2 | r3 += r2;
| do {
0x0000facc ldrd r0, r2, [sp, 8] | __asm ("ldrd r0, r2, [var_8h]");
0x0000fad0 cmp r8, r2 |
0x0000fad2 it eq |
| if (r8 == r2) {
0x0000fad4 cmpeq sb, r0 | __asm ("cmpeq sb, r0");
| }
| if (r8 == r2) {
0x0000fad6 beq 0xfb08 | goto label_22;
| }
| label_4:
0x0000fad8 ldrb.w r5, [r6, sl] | r5 = *((r6 + sl));
0x0000fadc adds.w sb, sl, 1 | sb = sl + 1;
0x0000fae0 adc r8, r7, 0 | __asm ("adc r8, r7, 0");
0x0000fae4 mov r2, sl | r2 = sl;
0x0000fae6 mov r0, r7 | r0 = r7;
0x0000fae8 mov sl, sb | sl = sb;
0x0000faea mov r7, r8 | r7 = r8;
0x0000faec cmp r5, 0 |
0x0000faee bne 0xfacc |
| } while (r5 != 0);
0x0000faf0 cmp r0, ip |
0x0000faf2 it eq |
| if (r0 != ip) {
0x0000faf4 cmpeq r2, r1 | __asm ("cmpeq r2, r1");
| goto label_23;
| }
| if (r0 != ip) {
| label_23:
0x0000faf6 bne 0xfa9e | goto label_3;
| }
0x0000faf8 ldrd r0, r2, [sp, 8] | __asm ("ldrd r0, r2, [var_8h]");
0x0000fafc mov r1, sb | r1 = sb;
0x0000fafe mov ip, r8 |
0x0000fb00 cmp r8, r2 |
0x0000fb02 it eq |
| if (r8 != r2) {
0x0000fb04 cmpeq sb, r0 | __asm ("cmpeq sb, r0");
| goto label_24;
| }
| if (r8 != r2) {
| label_24:
0x0000fb06 bne 0xfad8 | goto label_4;
| }
| label_22:
0x0000fb08 ldr r2, [sp, 0x18] | r2 = var_18h;
0x0000fb0a mov sb, fp | sb = fp;
0x0000fb0c ldrb r2, [r2] | r2 = *(r2);
0x0000fb0e cmp r2, 0 |
| if (r2 == 0) {
0x0000fb10 beq.w 0xf9c4 | goto label_5;
| }
0x0000fb14 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000fb16 subs r4, r0, r1 | r4 = r0 - r1;
0x0000fb18 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x0000fb1c movs r0, 0x47 | r0 = 0x47;
0x0000fb1e add r1, r6 | r1 += r6;
0x0000fb20 add.w sb, fp, 1 | sb += arg_1h;
0x0000fb24 add.w r2, r2, fp, lsl 4 | r2 += (fp << 4);
0x0000fb28 str r0, [r2, 8] | *((r2 + 8)) = r0;
0x0000fb2a mov r0, r3 | r0 = r3;
0x0000fb2c str r3, [r2, 0xc] | *((r2 + 0xc)) = r3;
0x0000fb2e vstr d16, [r2] | __asm ("vstr d16, [r2]");
0x0000fb32 mov r2, r4 | r2 = r4;
0x0000fb34 blx 0x19c8 | mmap64 ()
0x0000fb38 movs r2, 0 | r2 = 0;
0x0000fb3a strb r2, [r0, r4] | *((r0 + r4)) = r2;
0x0000fb3c b 0xf9c4 | goto label_5;
| label_20:
0x0000fb3e adds r3, 1 | r3++;
0x0000fb40 b 0xfa6c | goto label_6;
| label_15:
0x0000fb42 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000fb44 cmp r3, 0 |
| if (r3 == 0) {
0x0000fb46 beq.w 0xf974 | goto label_7;
| }
0x0000fb4a lsls r4, r3, 4 | r4 = r3 << 4;
0x0000fb4c adds r0, r4, r6 | r0 = r4 + r6;
0x0000fb4e blx 0x1b0c | strerror (r0);
0x0000fb52 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000fb54 str r0, [sp, 0x48] | var_48h = r0;
0x0000fb56 str r0, [r2] | *(r2) = r0;
0x0000fb58 cmp r0, 0 |
| if (r0 == 0) {
0x0000fb5a beq.w 0xff1a | goto label_21;
| }
0x0000fb5e ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000fb60 movs r1, 0 | r1 = 0;
0x0000fb62 mov sb, sl | sb = sl;
0x0000fb64 str r1, [sp, 0x34] | var_34h = r1;
0x0000fb66 add r3, r4 | r3 += r4;
0x0000fb68 str r3, [sp, 0x50] | var_50h = r3;
0x0000fb6a ldr r3, [sp, 0x54] | r3 = var_54h;
0x0000fb6c adds.w r2, r3, 8 | r2 = r3 + 8;
0x0000fb70 str r2, [sp, 0x1c] | var_1ch = r2;
0x0000fb72 adc r2, r1, 0 | __asm ("adc r2, r1, 0");
0x0000fb76 adds.w fp, r3, 4 |
0x0000fb7a str r2, [sp, 0x30] | var_30h = r2;
0x0000fb7c adc r3, r1, 0 | __asm ("adc r3, r1, 0");
0x0000fb80 mov sl, fp | sl = fp;
0x0000fb82 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000fb84 mov fp, r7 |
0x0000fb86 ldr r3, [pc, 0x3bc] |
0x0000fb88 ldr r7, [sp, 0x58] | r7 = var_58h;
0x0000fb8a add r3, pc | r3 = 0x1fad4;
0x0000fb8c str r3, [sp, 0x5c] | var_5ch = r3;
0x0000fb8e ldr r3, [pc, 0x3b8] |
0x0000fb90 add r3, pc | r3 = 0x1fade;
0x0000fb92 str r3, [sp, 0x64] | var_64h = r3;
0x0000fb94 movs r3, 1 | r3 = 1;
0x0000fb96 str r3, [sp, 0x40] | var_40h = r3;
0x0000fb98 add.w r3, r8, 4 | r3 = r8 + 4;
0x0000fb9c str r3, [sp, 0x60] | var_60h = r3;
0x0000fb9e ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000fba0 cmp r3, 0 |
| if (r3 == 0) {
0x0000fba2 beq.w 0xfd6a | goto label_25;
| }
| label_8:
0x0000fba6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000fba8 cmp fp, sl |
0x0000fbaa sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= sl) {
0x0000fbae blo.w 0xfefc | goto label_12;
| }
0x0000fbb2 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000fbb4 add.w r2, r7, r8 | r2 = r7 + r8;
0x0000fbb8 cmp r3, 0 |
| if (r3 == 0) {
0x0000fbba beq.w 0xfe68 | goto label_26;
| }
0x0000fbbe ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000fbc0 add.w r3, r8, -1 | r3 = r8 + -1;
0x0000fbc4 add.w r1, r8, 3 | r1 = r8 + 3;
0x0000fbc8 add r3, r7 | r3 += r7;
0x0000fbca add r1, r7 | r1 += r7;
| do {
0x0000fbcc ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x0000fbd0 cmp r1, r3 |
0x0000fbd2 orr.w r6, r0, r6, lsl 8 | r6 = r0 | (r6 << 8);
0x0000fbd6 bne 0xfbcc |
| } while (r1 != r3);
0x0000fbd8 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000fbda cmp fp, r3 |
0x0000fbdc ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000fbde sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r3) {
0x0000fbe2 blo.w 0xfefc | goto label_12;
| }
0x0000fbe6 ldr r1, [sp, 0x60] | r1 = var_60h;
0x0000fbe8 add.w r3, r8, sl | r3 = r8 + sl;
0x0000fbec ldr r5, [sp, 0xc] | r5 = var_ch;
0x0000fbee ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0000fbf0 add.w r0, r1, sl | r0 = r1 + sl;
| do {
0x0000fbf4 ldrb r1, [r3], 1 | r1 = *(r3);
| r3++;
0x0000fbf8 lsls r4, r4, 8 | r4 <<= 8;
0x0000fbfa orr.w r4, r4, r5, lsr 24 | r4 |= (r5 >> 24);
0x0000fbfe cmp r0, r3 |
0x0000fc00 orr.w r5, r1, r5, lsl 8 | r5 = r1 | (r5 << 8);
0x0000fc04 bne 0xfbf4 |
| } while (r0 != r3);
0x0000fc06 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fc08 adds.w r1, r7, 0xd | r1 = r7 + 0xd;
0x0000fc0c adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fc10 cmp fp, r1 |
0x0000fc12 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fc16 blo.w 0xfefc | goto label_12;
| }
0x0000fc1a add.w r3, r8, 0xc | r3 = r8 + 0xc;
0x0000fc1e adds.w r1, r7, 0x10 | r1 = r7 + 0x10;
0x0000fc22 ldrb r3, [r3, r7] | r3 = *((r3 + r7));
0x0000fc24 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000fc26 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fc28 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fc2c cmp fp, r1 |
0x0000fc2e sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fc32 blo.w 0xfefc | goto label_12;
| }
0x0000fc36 ldrh r3, [r2, 0xe] | r3 = *((r2 + 0xe));
0x0000fc38 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0000fc3a uxth r3, r3 | r3 = (int16_t) r3;
| label_9:
0x0000fc3c ldr r2, [sp, 0x20] | r2 = var_20h;
0x0000fc3e adds r6, r6, r2 | r6 += r2;
0x0000fc40 ldr r2, [sp, 0x24] | r2 = var_24h;
0x0000fc42 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000fc46 cmp r6, fp |
0x0000fc48 sbcs.w r2, r2, sb | __asm ("sbcs.w r2, r2, sb");
| if (r6 >= fp) {
0x0000fc4c bhs.w 0xff12 | goto label_27;
| }
0x0000fc50 add r6, r8 | r6 += r8;
0x0000fc52 ldr r1, [sp, 0x5c] | r1 = var_5ch;
0x0000fc54 movs r2, 6 | r2 = 6;
0x0000fc56 mov r0, r6 | r0 = r6;
0x0000fc58 str r3, [sp, 0x44] | var_44h = r3;
0x0000fc5a blx 0x1da4 | r0 = fcn_00001da4 ();
0x0000fc5e cmp r0, 0 |
| if (r0 != 0) {
0x0000fc60 bne 0xfd2a | goto label_28;
| }
0x0000fc62 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0000fc64 movw r2, 0xfff1 | r2 = 0xfff1;
0x0000fc68 ldr r1, [sp, 0x48] | r1 = var_48h;
0x0000fc6a adds r6, 6 | r6 += 6;
0x0000fc6c lsrs r3, r3, 4 | r3 >>= 4;
0x0000fc6e str r3, [sp, 0x54] | var_54h = r3;
0x0000fc70 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000fc72 lsls r3, r3, 4 | r3 <<= 4;
0x0000fc74 str r3, [sp, 0x58] | var_58h = r3;
0x0000fc76 adds r3, r1, r3 | r3 = r1 + r3;
0x0000fc78 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000fc7a ldr r3, [sp, 0x44] | r3 = var_44h;
0x0000fc7c cmp r3, 0 |
0x0000fc7e it ne |
| if (r3 != 0) {
0x0000fc80 cmpne r3, r2 | __asm ("cmpne r3, r2");
| }
| if (r3 == 0) {
0x0000fc82 beq 0xfcea | goto label_10;
| }
0x0000fc84 mov r1, r3 | r1 = r3;
0x0000fc86 add r3, sp, 0x74 | r3 += var_74h;
0x0000fc88 str r3, [sp] | *(sp) = r3;
0x0000fc8a add r2, sp, 0x88 | r2 += var_88h;
0x0000fc8c ldr r0, [sp, 0x38] | r0 = var_38h;
0x0000fc8e add r3, sp, 0x90 | r3 += var_90h;
0x0000fc90 bl 0xea20 | r0 = fcn_0000ea20 (r0, r1, r2, r3);
0x0000fc94 cmp r0, 0 |
| if (r0 < 0) {
0x0000fc96 blt.w 0xfed4 | goto label_29;
| }
0x0000fc9a ldr r3, [sp, 0x90] | r3 = var_90h;
0x0000fc9c ldr r2, [sp, 0x94] | r2 = var_94h;
0x0000fc9e subs r3, 4 | r3 -= 4;
0x0000fca0 adc r2, r2, -1 | __asm ("adc r2, r2, -1");
0x0000fca4 cmp r3, r5 |
0x0000fca6 sbcs r2, r4 | __asm ("sbcs r2, r4");
| if (r3 <= r5) {
0x0000fca8 blo.w 0xfed4 | goto label_29;
| }
0x0000fcac ldr r3, [sp, 0x88] | r3 = var_88h;
0x0000fcae ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x0000fcb0 adds r3, r5, r3 | r3 = r5 + r3;
0x0000fcb2 adc.w r2, r4, r2 | __asm ("adc.w r2, r4, r2");
0x0000fcb6 adds r1, r3, 4 | r1 = r3 + 4;
0x0000fcb8 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000fcbc cmp fp, r1 |
0x0000fcbe sbcs.w r2, sb, r2 | __asm ("sbcs.w r2, sb, r2");
| if (fp <= r1) {
0x0000fcc2 blo.w 0xfefc | goto label_12;
| }
0x0000fcc6 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000fcc8 add r3, r8 | r3 += r8;
0x0000fcca cmp r2, 0 |
| if (r2 == 0) {
0x0000fccc beq.w 0xfedc | goto label_30;
| }
0x0000fcd0 ldr r5, [sp, 0xc] | r5 = var_ch;
0x0000fcd2 subs r2, r3, 1 | r2 = r3 - 1;
0x0000fcd4 ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0000fcd6 adds r3, 3 | r3 += 3;
| do {
0x0000fcd8 ldrb r1, [r2, 1]! | r1 = *((r2 += 1));
0x0000fcdc lsls r4, r4, 8 | r4 <<= 8;
0x0000fcde orr.w r4, r4, r5, lsr 24 | r4 |= (r5 >> 24);
0x0000fce2 cmp r3, r2 |
0x0000fce4 orr.w r5, r1, r5, lsl 8 | r5 = r1 | (r5 << 8);
0x0000fce8 bne 0xfcd8 |
| } while (r3 != r2);
| label_10:
0x0000fcea ldr r2, [sp, 0x58] | r2 = var_58h;
0x0000fcec mov r0, r6 | r0 = r6;
0x0000fcee ldr r3, [sp, 0x48] | r3 = var_48h;
0x0000fcf0 str r5, [r3, r2] | *((r3 + r2)) = r5;
0x0000fcf2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0000fcf4 ldr r5, [sp, 0x50] | r5 = var_50h;
0x0000fcf6 str r4, [r3, 4] | *((r3 + 4)) = r4;
0x0000fcf8 ldr r3, [sp, 0x54] | r3 = var_54h;
0x0000fcfa cmp r3, 2 |
0x0000fcfc itet ls |
| if (r3 > 2) {
0x0000fcfe ldrls r2, [sp, 0x64] | r2 = var_64h;
| }
| if (r3 <= 2) {
0x0000fd00 movhi r3, 0 | r3 = 0;
| }
| if (r3 > 2) {
0x0000fd02 ldrbls r3, [r2, r3] | r3 = *((r2 + r3));
| }
0x0000fd04 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x0000fd06 str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0000fd08 ldr r3, [sp, 0x34] | r3 = var_34h;
0x0000fd0a str r5, [r2, 0xc] | *((r2 + 0xc)) = r5;
0x0000fd0c adds r3, 1 | r3++;
0x0000fd0e str r3, [sp, 0x34] | var_34h = r3;
0x0000fd10 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x0000fd14 mov r4, r0 | r4 = r0;
0x0000fd16 mov r1, r6 | r1 = r6;
0x0000fd18 mov r2, r4 | r2 = r4;
0x0000fd1a mov r0, r5 | r0 = r5;
0x0000fd1c blx 0x19c8 | mmap64 ()
0x0000fd20 movs r3, 0 | r3 = 0;
0x0000fd22 strb r3, [r5, r4] | *((r5 + r4)) = r3;
0x0000fd24 adds r4, 1 | r4++;
0x0000fd26 adds r3, r5, r4 | r3 = r5 + r4;
0x0000fd28 str r3, [sp, 0x50] | var_50h = r3;
| label_28:
0x0000fd2a ldr r3, [sp, 0x10] | r3 = var_10h;
0x0000fd2c ldr r2, [sp, 0x28] | r2 = var_28h;
0x0000fd2e ldr r1, [sp, 0x30] | r1 = var_30h;
0x0000fd30 adds r7, r3, r7 | r7 = r3 + r7;
0x0000fd32 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x0000fd36 str r2, [sp, 0x28] | var_28h = r2;
0x0000fd38 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x0000fd3a adds r2, r2, r3 | r2 += r3;
0x0000fd3c adc r1, r1, 0 | __asm ("adc r1, r1, 0");
0x0000fd40 adds.w r3, sl, r3 | r3 = sl + r3;
0x0000fd44 mov sl, r3 | sl = r3;
0x0000fd46 str r1, [sp, 0x30] | var_30h = r1;
0x0000fd48 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000fd4a ldr r1, [sp, 8] | r1 = var_8h;
0x0000fd4c str r2, [sp, 0x1c] | var_1ch = r2;
0x0000fd4e ldr r2, [sp, 0x40] | r2 = var_40h;
0x0000fd50 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fd54 str r3, [sp, 0x2c] | var_2ch = r3;
0x0000fd56 cmp r2, r1 |
0x0000fd58 add.w r3, r2, 1 | r3 = r2 + 1;
| if (r2 == r1) {
0x0000fd5c beq.w 0xfef6 | goto label_31;
| }
0x0000fd60 str r3, [sp, 0x40] | var_40h = r3;
0x0000fd62 ldr r3, [sp, 0x18] | r3 = var_18h;
0x0000fd64 cmp r3, 0 |
| if (r3 != 0) {
0x0000fd66 bne.w 0xfba6 | goto label_8;
| }
| label_25:
0x0000fd6a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000fd6c cmp fp, sl |
0x0000fd6e sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= sl) {
0x0000fd72 blo.w 0xfefc | goto label_12;
| }
0x0000fd76 ldr r3, [sp, 0x14] | r3 = var_14h;
0x0000fd78 add.w r2, r8, r7 | r2 = r8 + r7;
0x0000fd7c cmp r3, 0 |
| if (r3 == 0) {
0x0000fd7e beq 0xfdfc | goto label_32;
| }
0x0000fd80 ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000fd82 add.w r3, r8, -1 | r3 = r8 + -1;
0x0000fd86 add.w r1, r8, 3 | r1 = r8 + 3;
0x0000fd8a add r3, r7 | r3 += r7;
0x0000fd8c add r1, r7 | r1 += r7;
| do {
0x0000fd8e ldrb r0, [r3, 1]! | r0 = *((r3 += 1));
0x0000fd92 cmp r3, r1 |
0x0000fd94 orr.w r6, r0, r6, lsl 8 | r6 = r0 | (r6 << 8);
0x0000fd98 bne 0xfd8e |
| } while (r3 != r1);
0x0000fd9a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fd9c adds.w r1, r7, 0x10 | r1 = r7 + 0x10;
0x0000fda0 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fda4 cmp fp, r1 |
0x0000fda6 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fdaa blo.w 0xfefc | goto label_12;
| }
0x0000fdae ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000fdb0 add.w r3, r8, 0x10 | r3 = r8 + 0x10;
0x0000fdb4 ldr r5, [sp, 0xc] | r5 = var_ch;
0x0000fdb6 add r3, r7 | r3 += r7;
0x0000fdb8 ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0000fdba add r1, r8 | r1 += r8;
| do {
0x0000fdbc ldrb r0, [r1], 1 | r0 = *(r1);
| r1++;
0x0000fdc0 lsls r4, r4, 8 | r4 <<= 8;
0x0000fdc2 orr.w r4, r4, r5, lsr 24 | r4 |= (r5 >> 24);
0x0000fdc6 cmp r1, r3 |
0x0000fdc8 orr.w r5, r0, r5, lsl 8 | r5 = r0 | (r5 << 8);
0x0000fdcc bne 0xfdbc |
| } while (r1 != r3);
0x0000fdce ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fdd0 adds r1, r7, 5 | r1 = r7 + 5;
0x0000fdd2 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fdd6 cmp fp, r1 |
0x0000fdd8 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fddc blo.w 0xfefc | goto label_12;
| }
0x0000fde0 ldrb.w r3, [r8, sl] | r3 = *((r8 + sl));
0x0000fde4 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000fde6 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000fde8 cmp fp, r3 |
0x0000fdea ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000fdec sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r3) {
0x0000fdf0 blo.w 0xfefc | goto label_12;
| }
0x0000fdf4 ldrh r3, [r2, 6] | r3 = *((r2 + 6));
0x0000fdf6 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x0000fdf8 uxth r3, r3 | r3 = (int16_t) r3;
0x0000fdfa b 0xfc3c | goto label_9;
| label_32:
0x0000fdfc ldr r3, [sp, 0x60] | r3 = var_60h;
0x0000fdfe ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000fe00 add r3, r7 | r3 += r7;
| do {
0x0000fe02 ldrb r1, [r3, -0x1]! | r1 = *((r3 -= 0x1));
0x0000fe06 cmp r3, r2 |
0x0000fe08 orr.w r6, r1, r6, lsl 8 | r6 = r1 | (r6 << 8);
0x0000fe0c bne 0xfe02 |
| } while (r3 != r2);
0x0000fe0e ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fe10 adds.w r1, r7, 0x10 | r1 = r7 + 0x10;
0x0000fe14 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fe18 cmp fp, r1 |
0x0000fe1a sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fe1e blo 0xfefc | goto label_12;
| }
0x0000fe20 ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x0000fe22 add.w r3, r8, 0x10 | r3 = r8 + 0x10;
0x0000fe26 ldr r5, [sp, 0xc] | r5 = var_ch;
0x0000fe28 add r3, r7 | r3 += r7;
0x0000fe2a ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0000fe2c add.w r0, r8, r1 | r0 = r8 + r1;
| do {
0x0000fe30 ldrb r1, [r3, -0x1]! | r1 = *((r3 -= 0x1));
0x0000fe34 lsls r4, r4, 8 | r4 <<= 8;
0x0000fe36 orr.w r4, r4, r5, lsr 24 | r4 |= (r5 >> 24);
0x0000fe3a cmp r0, r3 |
0x0000fe3c orr.w r5, r1, r5, lsl 8 | r5 = r1 | (r5 << 8);
0x0000fe40 bne 0xfe30 |
| } while (r0 != r3);
0x0000fe42 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fe44 adds r1, r7, 5 | r1 = r7 + 5;
0x0000fe46 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fe4a cmp fp, r1 |
0x0000fe4c sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fe50 blo 0xfefc | goto label_12;
| }
0x0000fe52 ldrb.w r3, [r8, sl] | r3 = *((r8 + sl));
0x0000fe56 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000fe58 ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000fe5a cmp fp, r3 |
0x0000fe5c ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000fe5e sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r3) {
0x0000fe62 blo 0xfefc | goto label_12;
| }
0x0000fe64 ldrh r3, [r2, 6] | r3 = *((r2 + 6));
0x0000fe66 b 0xfc3c | goto label_9;
| label_26:
0x0000fe68 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0000fe6a ldr r6, [sp, 0xc] | r6 = var_ch;
0x0000fe6c add r3, r7 | r3 += r7;
| do {
0x0000fe6e ldrb r1, [r3, -0x1]! | r1 = *((r3 -= 0x1));
0x0000fe72 cmp r3, r2 |
0x0000fe74 orr.w r6, r1, r6, lsl 8 | r6 = r1 | (r6 << 8);
0x0000fe78 bne 0xfe6e |
| } while (r3 != r2);
0x0000fe7a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0000fe7c cmp fp, r3 |
0x0000fe7e ldr r3, [sp, 0x30] | r3 = var_30h;
0x0000fe80 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r3) {
0x0000fe84 blo 0xfefc | goto label_12;
| }
0x0000fe86 ldr r3, [sp, 0x60] | r3 = var_60h;
0x0000fe88 add.w r0, r8, sl | r0 = r8 + sl;
0x0000fe8c ldr r5, [sp, 0xc] | r5 = var_ch;
0x0000fe8e ldr r4, [sp, 0x4c] | r4 = var_4ch;
0x0000fe90 add r3, sl | r3 += sl;
| do {
0x0000fe92 ldrb r1, [r3, -0x1]! | r1 = *((r3 -= 0x1));
0x0000fe96 lsls r4, r4, 8 | r4 <<= 8;
0x0000fe98 orr.w r4, r4, r5, lsr 24 | r4 |= (r5 >> 24);
0x0000fe9c cmp r0, r3 |
0x0000fe9e orr.w r5, r1, r5, lsl 8 | r5 = r1 | (r5 << 8);
0x0000fea2 bne 0xfe92 |
| } while (r0 != r3);
0x0000fea4 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fea6 adds.w r1, r7, 0xd | r1 = r7 + 0xd;
0x0000feaa adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000feae cmp fp, r1 |
0x0000feb0 sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000feb4 blo 0xfefc | goto label_12;
| }
0x0000feb6 add.w r3, r8, 0xc | r3 = r8 + 0xc;
0x0000feba adds.w r1, r7, 0x10 | r1 = r7 + 0x10;
0x0000febe ldrb r3, [r3, r7] | r3 = *((r3 + r7));
0x0000fec0 str r3, [sp, 0x3c] | var_3ch = r3;
0x0000fec2 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0000fec4 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x0000fec8 cmp fp, r1 |
0x0000feca sbcs.w r3, sb, r3 | __asm ("sbcs.w r3, sb, r3");
| if (fp <= r1) {
0x0000fece blo 0xfefc | goto label_12;
| }
0x0000fed0 ldrh r3, [r2, 0xe] | r3 = *((r2 + 0xe));
0x0000fed2 b 0xfc3c | goto label_9;
| label_29:
0x0000fed4 mov.w r5, -1 | r5 = -1;
0x0000fed8 mov r4, r5 | r4 = r5;
0x0000feda b 0xfcea | goto label_10;
| label_30:
0x0000fedc ldr r5, [sp, 0xc] | r5 = var_ch;
0x0000fede adds r2, r3, 4 | r2 = r3 + 4;
0x0000fee0 ldr r4, [sp, 0x4c] | r4 = var_4ch;
| do {
0x0000fee2 ldrb r1, [r2, -0x1]! | r1 = *((r2 -= 0x1));
0x0000fee6 lsls r4, r4, 8 | r4 <<= 8;
0x0000fee8 orr.w r4, r4, r5, lsr 24 | r4 |= (r5 >> 24);
0x0000feec cmp r3, r2 |
0x0000feee orr.w r5, r1, r5, lsl 8 | r5 = r1 | (r5 << 8);
0x0000fef2 bne 0xfee2 |
| } while (r3 != r2);
0x0000fef4 b 0xfcea | goto label_10;
| label_31:
0x0000fef6 ldr.w sb, [sp, 0x34] | sb = var_34h;
0x0000fefa b 0xf9c4 | goto label_5;
| label_12:
0x0000fefc bl 0xe9e0 | fcn_0000e9e0 ();
| label_14:
0x0000ff00 ldr r3, [pc, 0x48] |
0x0000ff02 movs r2, 0xca | r2 = 0xca;
0x0000ff04 ldr r1, [pc, 0x48] |
0x0000ff06 ldr r0, [pc, 0x4c] |
0x0000ff08 add r3, pc | r3 = 0x1fe58;
0x0000ff0a add r1, pc | r1 = 0x1fe5e;
0x0000ff0c add r0, pc | r0 = 0x1fe66;
0x0000ff0e blx 0x1de0 | fcn_00001de0 ();
| label_27:
0x0000ff12 bl 0xe9c0 | fcn_0000e9c0 ();
| label_19:
0x0000ff16 blx 0x1a1c | stat64 ();
| label_21:
0x0000ff1a blx 0x1be4 | r0 = isoc99_sscanf ();
0x0000ff1e ldr r3, [r0] | r3 = *(r0);
0x0000ff20 rsb.w sb, r3, 0 | sb = r3 - ;
0x0000ff24 b 0xf9c4 | goto label_5;
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0xff58 */
| #include <stdint.h>
|
; (fcn) fcn.0000ff58 () | void fcn_0000ff58 (int16_t arg_0h, int16_t arg_3h, int16_t arg_4h, int16_t arg_ch, int16_t arg_1h, int16_t arg1, int16_t arg2) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| int16_t var_18h;
| int16_t var_1ch;
| int16_t var_20h;
| int16_t var_24h;
| int16_t var_28h;
| int16_t var_2ch;
| int16_t var_30h;
| int16_t var_34h;
| int16_t var_38h;
| int16_t var_3ch;
| int16_t var_40h;
| int16_t var_44h;
| int16_t var_48h;
| int16_t var_4ch;
| int16_t errnum;
| int16_t var_54h;
| int16_t var_58h;
| int16_t var_5ch;
| int16_t var_60h;
| int16_t var_64h;
| int16_t var_68h;
| int16_t var_6ch;
| int16_t var_70h;
| int16_t var_74h;
| int16_t var_78h;
| int16_t var_7ch;
| int16_t var_80h;
| int16_t var_84h;
| char * s;
| int16_t var_8ch;
| int16_t var_90h;
| int16_t var_94h;
| int16_t var_98h;
| int16_t var_9ch;
| int16_t var_a0h;
| int16_t var_a4h;
| int16_t var_ach;
| int16_t var_b0h;
| int16_t var_b4h;
| int16_t var_b8h;
| int16_t var_bch;
| int16_t var_c0h;
| int16_t var_c4h;
| int16_t var_c8h;
| int32_t var_c8h_2;
| int16_t var_d4h;
| r0 = arg1;
| r1 = arg2;
0x0000ff58 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x0000ff5c sub sp, 0xdc |
0x0000ff5e ldr.w r4, [pc, 0x8dc] | r4 = *(0x0001083c);
0x0000ff62 add r3, sp, 0xb8 | r3 += var_b8h;
0x0000ff64 add r2, sp, 0xac | r2 += var_ach;
0x0000ff66 str r1, [sp, 0x9c] | var_9ch = r1;
0x0000ff68 ldr.w r1, [pc, 0x8d4] |
0x0000ff6c add r4, pc | r4 += pc;
0x0000ff6e str r0, [sp, 0x2c] | var_2ch = r0;
0x0000ff70 ldr r1, [r4, r1] | r1 = *((r4 + r1));
0x0000ff72 ldr r1, [r1] | r1 = *(0x10840);
0x0000ff74 str r1, [sp, 0xd4] | var_d4h = r1;
0x0000ff76 mov.w r1, 0 | r1 = 0;
0x0000ff7a ldr.w r1, [pc, 0x8c8] |
0x0000ff7e add r1, pc | r1 = 0x207c8;
0x0000ff80 bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000ff84 cmp r0, 0 |
| if (r0 < 0) {
0x0000ff86 blt.w 0x1077c | goto label_20;
| }
0x0000ff8a ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x0000ff8c movs r1, 0 | r1 = 0;
0x0000ff8e ldr r2, [r3, 0x10] | r2 = *((r3 + 0x10));
0x0000ff90 ldr r3, [sp, 0xb8] | r3 = var_b8h;
0x0000ff92 tst.w r2, 2 |
0x0000ff96 ite ne |
| if ((r2 & 2) == 0) {
0x0000ff98 movne r2, 4 | r2 = 4;
| }
| if ((r2 & 2) != 0) {
0x0000ff9a moveq r2, 8 | r2 = 8;
| }
0x0000ff9c lsls r3, r3, 0x1a | r3 <<= 0x1a;
0x0000ff9e str r2, [sp, 0x20] | var_20h = r2;
0x0000ffa0 itt eq |
| if (r3 != r3) {
0x0000ffa2 moveq r3, 0x40 | r3 = 0x40;
| }
| if (r3 != r3) {
0x0000ffa4 streq r3, [sp, 0x3c] | var_3ch = r3;
| }
| if (r3 != r3) {
0x0000ffa6 bne.w 0x10244 | goto label_21;
| }
| label_1:
0x0000ffaa ldr.w r1, [pc, 0x89c] |
0x0000ffae add r3, sp, 0xc0 | r3 += var_c0h;
0x0000ffb0 ldr r0, [sp, 0x2c] | r0 = var_2ch;
0x0000ffb2 add r2, sp, 0xb0 | r2 += var_b0h;
0x0000ffb4 add r1, pc | r1 = 0x20802;
0x0000ffb6 bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000ffba cmp r0, 0 |
| if (r0 < 0) {
0x0000ffbc blt.w 0x107f0 | goto label_22;
| }
0x0000ffc0 ldr r4, [sp, 0x2c] | r4 = var_2ch;
0x0000ffc2 add r3, sp, 0xc8 | r3 += var_c8h;
0x0000ffc4 ldr.w r1, [pc, 0x884] |
0x0000ffc8 add r2, sp, 0xb4 | r2 += var_b4h;
0x0000ffca mov r0, r4 | r0 = r4;
0x0000ffcc add r1, pc | r1 = 0x2081c;
0x0000ffce bl 0xefac | r0 = fcn_0000efac (r0, r1, r2, r3);
0x0000ffd2 cmp r0, 0 |
| if (r0 < 0) {
0x0000ffd4 blt.w 0x107f0 | goto label_22;
| }
0x0000ffd8 ldr r3, [r4, 0x10] | r3 = *((r4 + 0x10));
0x0000ffda ldrd r0, r1, [sp, 0xc8] | __asm ("ldrd r0, r1, [var_c8h]");
0x0000ffde str r3, [sp, 0x8c] | var_8ch = r3;
0x0000ffe0 ands r3, r3, 2 | r3 &= 2;
0x0000ffe4 str r3, [sp, 0x10] | var_10h = r3;
0x0000ffe6 ite eq |
| if (r3 != r3) {
0x0000ffe8 moveq r3, 0x18 | r3 = 0x18;
| }
| if (r3 == r3) {
0x0000ffea movne r3, 0x10 | r3 = 0x10;
| }
0x0000ffec str r3, [sp, 0x14] | var_14h = r3;
0x0000ffee mov r4, r3 | r4 = r3;
0x0000fff0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x0000fff2 movs r3, 0 | r3 = 0;
0x0000fff4 bl 0x113b0 | fcn_000113b0 (r0, r1, r2, r3);
0x0000fff8 str r3, [sp, 0x44] | var_44h = r3;
0x0000fffa orrs r3, r2 | r3 |= r2;
0x0000fffc str r0, [sp, 0x90] | var_90h = r0;
0x0000fffe movs r2, r0 | r2 = r0;
0x00010000 movs r0, r0 |
0x00010002 movs r0, r0 |
0x00010004 movs r0, r0 |
0x00010006 stc2 p0, c9, [r0, -0x5c] | __asm ("stc2 p0, c9, [r0, -0x5c]");
0x0001000a orrs.w r3, r0, r1 | r3 = r0 | r1;
0x0001000e str r1, [sp, 0x60] | var_60h = r1;
| if (r3 == r0) {
0x00010010 beq.w 0x1023c | goto label_23;
| }
0x00010014 ldr r2, [sp, 0x3c] | r2 = var_3ch;
0x00010016 movs r3, 0 | r3 = 0;
0x00010018 bl 0x113b0 | fcn_000113b0 (r0, r1, r2, r3);
0x0001001c movs r1, 1 | r1 = 1;
0x0001001e str r0, [sp, 0x98] | var_98h = r0;
0x00010020 blx 0x18d8 | calloc (r0, r1);
0x00010024 str r0, [sp, 0x64] | var_64h = r0;
0x00010026 cmp r0, 0 |
| if (r0 == 0) {
0x00010028 beq.w 0x10832 | goto label_24;
| }
| label_0:
0x0001002c ldr r2, [sp, 0x2c] | r2 = var_2ch;
0x0001002e movs r1, 8 | r1 = 8;
0x00010030 ldr r3, [sp, 0xb4] | r3 = var_b4h;
0x00010032 ldr r6, [sp, 0x90] | r6 = var_90h;
0x00010034 ldr.w fp, [r2] | fp = *(r2);
0x00010038 mov r0, r6 | r0 = r6;
0x0001003a sub.w r3, r3, fp | r3 -= fp;
0x0001003e adds r4, r3, r4 | r4 = r3 + r4;
0x00010040 ldrh.w r3, [r2, 0x48] | r3 = *((r2 + 0x48));
0x00010044 str r4, [sp, 0x94] | var_94h = r4;
0x00010046 cmp r3, 0x2b |
0x00010048 it ne |
| if (r3 != 0x2b) {
0x0001004a cmpne r3, 2 | __asm ("cmpne r3, 2");
| }
0x0001004c ite eq |
| if (r3 != 0x2b) {
0x0001004e moveq r3, 1 | r3 = 1;
| }
| if (r3 == 0x2b) {
0x00010050 movne r3, 0 | r3 = 0;
| }
0x00010052 str r3, [sp, 0x30] | var_30h = r3;
0x00010054 ldr r3, [sp, 0xb0] | r3 = var_b0h;
0x00010056 sub.w r3, r3, fp | r3 -= fp;
0x0001005a mov r5, r3 | r5 = r3;
0x0001005c str r3, [sp, 0x34] | var_34h = r3;
0x0001005e blx 0x18d8 | calloc (r0, r1);
0x00010062 asrs r2, r5, 0x1f | r2 = r5 >> 0x1f;
0x00010064 str r6, [sp, 0x18] | var_18h = r6;
0x00010066 str r4, [sp, 0xa0] | var_a0h = r4;
0x00010068 str r2, [sp, 0x38] | var_38h = r2;
0x0001006a movs r2, 0 | r2 = 0;
0x0001006c str r2, [sp, 0xa4] | var_a4h = r2;
0x0001006e str r0, [sp, 0x88] | s = r0;
0x00010070 cmp r0, 0 |
| if (r0 == 0) {
0x00010072 beq.w 0x1080e | goto label_25;
| }
0x00010076 cmp r6, 1 |
| if (r6 <= 1) {
0x00010078 ble.w 0x107a0 | goto label_26;
| }
0x0001007c ldr r3, [sp, 0x10] | r3 = var_10h;
0x0001007e movs r2, 0 | r2 = 0;
0x00010080 ldr r5, [sp, 0x94] | r5 = var_94h;
0x00010082 str r2, [sp, 0x4c] | var_4ch = r2;
0x00010084 cmp r3, 0 |
0x00010086 ldr r3, [sp, 0xac] | r3 = var_ach;
0x00010088 ite ne |
| if (r3 == 0) {
0x0001008a movne sb, 4 | sb = 4;
| }
| if (r3 == 0) {
0x0001008e mov.w sb, 8 | sb = 8;
| }
0x00010092 sub.w r3, r3, fp | r3 -= fp;
0x00010096 str r3, [sp, 0x84] | var_84h = r3;
0x00010098 adds.w r3, sb, r3 | r3 = sb + r3;
0x0001009c str r3, [sp, 0x40] | var_40h = r3;
0x0001009e ldr r3, [sp, 0xc0] | r3 = var_c0h;
0x000100a0 str r3, [sp, 0x54] | var_54h = r3;
0x000100a2 ldr r3, [sp, 0xc4] | r3 = var_c4h;
0x000100a4 str r3, [sp, 0x58] | var_58h = r3;
0x000100a6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000100a8 ldrd r8, r7, [r3, 8] | __asm ("ldrd r8, r7, [r3, 8]");
0x000100ac adc.w r3, r2, r2 | __asm ("adc.w r3, r2, r2");
0x000100b0 str r3, [sp, 0x68] | var_68h = r3;
0x000100b2 adds.w sl, r5, 4 | sl = r5 + 4;
0x000100b6 ldr r3, [sp, 0x88] | r3 = s;
0x000100b8 add.w r3, r3, 8 | r3 += 8;
0x000100bc str r3, [sp, 4] | var_4h = r3;
0x000100be adc r3, r2, 0 | __asm ("adc r3, r2, 0");
0x000100c2 str r3, [sp] | *(sp) = r3;
0x000100c4 mov r3, r2 | r3 = r2;
0x000100c6 movs r2, 1 | r2 = 1;
0x000100c8 str r3, [sp, 0x50] | errnum = r3;
0x000100ca str r2, [sp, 0xc] | var_ch = r2;
0x000100cc ldr r2, [sp, 0x8c] | r2 = var_8ch;
0x000100ce and r2, r2, 0x10 | r2 &= 0x10;
0x000100d2 str r2, [sp, 0x1c] | var_1ch = r2;
0x000100d4 add.w r2, fp, 4 | r2 += arg_4h;
0x000100d8 str r2, [sp, 0x6c] | var_6ch = r2;
0x000100da add.w r2, fp, -1 | r2 = fp + -1;
0x000100de str r2, [sp, 0x70] | var_70h = r2;
0x000100e0 add.w r2, fp, 3 | r2 += arg_3h;
0x000100e4 str r2, [sp, 0x74] | var_74h = r2;
0x000100e6 add.w r2, fp, 0xc | r2 += arg_ch;
0x000100ea str r2, [sp, 0x78] | var_78h = r2;
0x000100ec mov r2, sl | r2 = sl;
0x000100ee mov sl, sb | sl = sb;
0x000100f0 mov sb, r2 | sb = r2;
| label_2:
0x000100f2 ldr r2, [sp, 0x10] | r2 = var_10h;
0x000100f4 cmp r2, 0 |
| if (r2 == 0) {
0x000100f6 beq.w 0x105e4 | goto label_27;
| }
0x000100fa ldr r2, [sp] | r2 = *(sp);
0x000100fc cmp r8, sb |
0x000100fe sbcs.w r2, r7, r2 | __asm ("sbcs.w r2, r7, r2");
| if (r8 <= sb) {
0x00010102 blo.w 0x107f6 | goto label_28;
| }
0x00010106 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x00010108 add.w r1, r5, fp | r1 = r5 + fp;
0x0001010c cmp r2, 0 |
| if (r2 == 0) {
0x0001010e beq.w 0x1063c | goto label_29;
| }
0x00010112 ldr r2, [sp, 0x70] | r2 = var_70h;
0x00010114 ldr r0, [sp, 0x74] | r0 = var_74h;
0x00010116 ldr r4, [sp, 8] | r4 = var_8h;
0x00010118 add r2, r5 | r2 += r5;
0x0001011a adds r6, r0, r5 | r6 = r0 + r5;
| do {
0x0001011c ldrb r0, [r2, 1]! | r0 = *((r2 += 1));
0x00010120 cmp r6, r2 |
0x00010122 orr.w r4, r0, r4, lsl 8 | r4 = r0 | (r4 << 8);
0x00010126 bne 0x1011c |
| } while (r6 != r2);
0x00010128 adds.w r0, r5, 0x10 | r0 = r5 + 0x10;
0x0001012c adc r2, r3, 0 | __asm ("adc r2, r3, 0");
0x00010130 cmp r8, r0 |
0x00010132 sbcs.w r2, r7, r2 | __asm ("sbcs.w r2, r7, r2");
| if (r8 <= r0) {
0x00010136 blo.w 0x107f6 | goto label_28;
| }
0x0001013a ldrh r2, [r1, 0xe] | r2 = *((r1 + 0xe));
0x0001013c rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0001013e uxth r2, r2 | r2 = (int16_t) r2;
| label_8:
0x00010140 adds.w r0, r5, 0xd | r0 = r5 + 0xd;
0x00010144 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x00010148 lsls r0, r0 | r0 <<= r0;
0x0001014a eors r0, r0 | r0 = 0;
0x0001014c lsls r0, r0, 4 | r0 <<= 4;
| if (r0 <= r0) {
0x0001014e blo.w 0x107f6 | goto label_28;
| }
0x00010152 ldr r1, [sp, 0x78] | r1 = var_78h;
0x00010154 ldrb r1, [r1, r5] | r1 = *((r1 + r5));
| label_7:
0x00010156 cmp r2, 0 |
| if (r2 != 0) {
0x00010158 bne.w 0x102b0 | goto label_18;
| }
0x0001015c ldr r2, [sp, 0x30] | r2 = var_30h;
| if (r2 != 0) {
0x0001015e cbz r2, 0x1016a |
0x00010160 and r1, r1, 0xf | r1 &= 0xf;
0x00010164 cmp r1, 0xd |
| if (r1 == 0xd) {
0x00010166 beq.w 0x102b0 | goto label_18;
| }
| }
0x0001016a ldr r2, [sp, 0x54] | r2 = var_54h;
0x0001016c movs r1, 0 | r1 = 0;
0x0001016e cmp r4, r2 |
0x00010170 ldr r2, [sp, 0x58] | r2 = var_58h;
0x00010172 sbcs.w r2, r1, r2 | __asm ("sbcs.w r2, r1, r2");
| if (r4 >= r2) {
0x00010176 bhs.w 0x1078e | goto label_30;
| }
0x0001017a ldr r2, [sp, 0x34] | r2 = var_34h;
0x0001017c adds r4, r4, r2 | r4 += r2;
0x0001017e ldr r2, [sp, 0x38] | r2 = var_38h;
0x00010180 adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00010184 cmp r4, r8 |
0x00010186 sbcs r2, r7 | __asm ("sbcs r2, r7");
| if (r4 >= r8) {
0x00010188 bhs 0x10224 | goto label_3;
| }
0x0001018a ldrb.w r2, [fp, r4] | r2 = *((fp + r4));
0x0001018e add r4, fp | r4 += fp;
0x00010190 cmp r2, 0 |
| if (r2 == 0) {
0x00010192 beq.w 0x102b0 | goto label_18;
| }
0x00010196 str r3, [sp, 0x24] | var_24h = r3;
0x00010198 mov r0, r4 | r0 = r4;
0x0001019a ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001019c adds r3, 1 | r3++;
0x0001019e str r3, [sp, 0x4c] | var_4ch = r3;
0x000101a0 blx 0x1bb0 | fcn_00001bb0 ();
0x000101a4 ldr r2, [sp, 0x50] | r2 = errnum;
0x000101a6 adds r2, 1 | r2++;
0x000101a8 adds r3, r0, r2 | r3 = r0 + r2;
0x000101aa str r3, [sp, 0x50] | errnum = r3;
0x000101ac ldrd r3, r2, [sp, 0x5c] | __asm ("ldrd r3, r2, [var_5ch]");
0x000101b0 orrs r2, r3 | r2 |= r3;
0x000101b2 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000101b4 it eq |
| if (r2 == r3) {
0x000101b6 ldrdeq r0, r1, [sp, 0x5c] | __asm ("ldrdeq r0, r1, [var_5ch]");
| }
| if (r2 == r3) {
0x000101ba beq 0x102aa | goto label_31;
| }
0x000101bc ldr r2, [sp, 0x40] | r2 = var_40h;
0x000101be cmp r2, r8 |
0x000101c0 ldr r2, [sp, 0x68] | r2 = var_68h;
0x000101c2 sbcs r2, r7 | __asm ("sbcs r2, r7");
| if (r2 >= r8) {
0x000101c4 bhs 0x10224 | goto label_3;
| }
0x000101c6 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000101c8 movs r2, 0 | r2 = 0;
0x000101ca str r2, [sp, 0x28] | var_28h = r2;
0x000101cc ldr r2, [sp, 8] | r2 = var_8h;
0x000101ce str r1, [sp, 0x24] | var_24h = r1;
0x000101d0 ldr r6, [sp, 0x84] | r6 = var_84h;
0x000101d2 ldr r1, [sp, 0x40] | r1 = var_40h;
0x000101d4 strd r5, r3, [sp, 0x7c] | __asm ("strd r5, r3, [var_80h]");
0x000101d8 mov r5, r2 | r5 = r2;
0x000101da add r1, fp | r1 += fp;
0x000101dc str r1, [sp, 0x48] | var_48h = r1;
| do {
0x000101de ldr r3, [sp, 0x48] | r3 = var_48h;
0x000101e0 mov r0, r4 | r0 = r4;
0x000101e2 adds r1, r3, r5 | r1 = r3 + r5;
0x000101e4 blx 0x1924 | r0 = fcn_00001924 ();
0x000101e8 cmp r0, 0 |
| if (r0 == 0) {
0x000101ea beq 0x10254 | goto label_32;
| }
0x000101ec adds.w r2, r5, 0x40 | r2 = r5 + 0x40;
0x000101f0 ldr r3, [sp, 0x24] | r3 = var_24h;
0x000101f2 mov r5, r2 | r5 = r2;
0x000101f4 ldr r2, [sp, 0x5c] | r2 = var_5ch;
0x000101f6 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000101fa cmp r5, r2 |
0x000101fc ldr r2, [sp, 0x60] | r2 = var_60h;
0x000101fe str r3, [sp, 0x24] | var_24h = r3;
0x00010200 sbcs.w r1, r3, r2 | __asm ("sbcs.w r1, r3, r2");
| if (r5 >= r2) {
0x00010204 bhs.w 0x107e0 | goto label_33;
| }
0x00010208 ldr r3, [sp, 0x28] | r3 = var_28h;
0x0001020a adds r6, 0x40 | r6 += 0x40;
0x0001020c ldr r2, [sp, 0x68] | r2 = var_68h;
0x0001020e adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x00010212 str r3, [sp, 0x28] | var_28h = r3;
0x00010214 ldr r3, [sp, 0x40] | r3 = var_40h;
0x00010216 adds r0, r5, r3 | r0 = r5 + r3;
0x00010218 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001021a adc.w r1, r3, r2 | __asm ("adc.w r1, r3, r2");
0x0001021e cmp r0, r8 |
0x00010220 sbcs r1, r7 | __asm ("sbcs r1, r7");
0x00010222 blo 0x101de |
| } while (r0 <= r8);
| label_3:
0x00010224 ldr.w r3, [pc, 0x628] |
0x00010228 movs r2, 0xca | r2 = 0xca;
0x0001022a ldr.w r1, [pc, 0x628] |
0x0001022e ldr.w r0, [pc, 0x628] |
0x00010232 add r3, pc | r3 = 0x20a86;
0x00010234 add r1, pc | r1 = 0x20a8e;
0x00010236 add r0, pc | r0 = 0x20a94;
0x00010238 blx 0x1de0 | fcn_00001de0 ();
| label_23:
0x0001023c movs r3, 0 | r3 = 0;
0x0001023e str r3, [sp, 0x64] | var_64h = r3;
0x00010240 str r3, [sp, 0x98] | var_98h = r3;
0x00010242 b 0x1002c | goto label_0;
| label_21:
0x00010244 vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00010248 movs r3, 0x40 | r3 = 0x40;
0x0001024a str r3, [sp, 0x3c] | var_3ch = r3;
0x0001024c str r1, [sp, 0xac] | var_ach = r1;
0x0001024e vstr d16, [sp, 0xb8] | __asm ("vstr d16, [sp, 0xb8]");
0x00010252 b 0xffaa | goto label_1;
| label_32:
0x00010254 ldr r0, [sp, 0x28] | r0 = var_28h;
0x00010256 adds.w r1, sl, r6 | r1 = sl + r6;
0x0001025a mov r2, r5 | r2 = r5;
0x0001025c ldr r3, [sp, 0x80] | r3 = var_80h;
0x0001025e ldr r5, [sp, 0x7c] | r5 = var_7ch;
0x00010260 adc r0, r0, 0 | __asm ("adc r0, r0, 0");
0x00010264 cmp r8, r1 |
0x00010266 sbcs.w r1, r7, r0 | __asm ("sbcs.w r1, r7, r0");
| if (r8 <= r1) {
0x0001026a blo.w 0x107f6 | goto label_28;
| }
0x0001026e ldr r1, [sp, 0x1c] | r1 = var_1ch;
0x00010270 add r6, fp | r6 += fp;
0x00010272 cmp r1, 0 |
| if (r1 == 0) {
0x00010274 beq.w 0x106ea | goto label_34;
| }
0x00010278 ldr r0, [sp, 8] | r0 = var_8h;
0x0001027a add.w ip, r6, -1 |
0x0001027e ldr r1, [sp, 0x44] | r1 = var_44h;
| do {
0x00010280 mov r4, ip | r4 = ip;
0x00010282 ldrb lr, [ip, 1]! |
0x00010286 adds r4, 2 | r4 += 2;
0x00010288 lsls r1, r1, 8 | r1 <<= 8;
0x0001028a subs r4, r4, r6 | r4 -= r6;
0x0001028c cmp r4, sl |
0x0001028e orr.w r1, r1, r0, lsr 24 | r1 |= (r0 >> 24);
0x00010292 orr.w r0, lr, r0, lsl 8 | r0 = lr | (r0 << 8);
0x00010296 blo 0x10280 |
| } while (r4 <= sl);
| label_11:
0x00010298 ldr r4, [sp, 0x64] | r4 = var_64h;
| if (r4 != 0) {
0x0001029a cbz r4, 0x102aa |
0x0001029c lsrs r4, r2, 6 | r4 = r2 >> 6;
0x0001029e ldr r2, [sp, 0x24] | r2 = var_24h;
0x000102a0 ldr r6, [sp, 0x64] | r6 = var_64h;
0x000102a2 orr.w r4, r4, r2, lsl 26 | r4 |= (r2 << 26);
0x000102a6 movs r2, 1 | r2 = 1;
0x000102a8 strb r2, [r6, r4] | *((r6 + r4)) = r2;
| }
| label_31:
0x000102aa ldr r2, [sp, 4] | r2 = var_4h;
0x000102ac strd r0, r1, [r2] | __asm ("strd r0, r1, [r2]");
| label_18:
0x000102b0 ldr r2, [sp, 0x14] | r2 = var_14h;
0x000102b2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x000102b4 ldr r0, [sp, 4] | r0 = var_4h;
0x000102b6 adds r5, r5, r2 | r5 += r2;
0x000102b8 adc r3, r3, 0 | __asm ("adc r3, r3, 0");
0x000102bc adds.w r2, r2, sb | r2 += sb;
0x000102c0 mov sb, r2 | sb = r2;
0x000102c2 ldr r2, [sp] | r2 = *(sp);
0x000102c4 add.w r1, r1, 1 | r1++;
0x000102c8 add.w r0, r0, 8 | r0 += 8;
0x000102cc str r1, [sp, 0xc] | var_ch = r1;
0x000102ce adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x000102d2 str r0, [sp, 4] | var_4h = r0;
0x000102d4 str r2, [sp] | *(sp) = r2;
0x000102d6 ldr r2, [sp, 0x18] | r2 = var_18h;
0x000102d8 cmp r2, r1 |
| if (r2 != r1) {
0x000102da bne.w 0x100f2 | goto label_2;
| }
0x000102de ldr r3, [sp, 0x64] | r3 = var_64h;
0x000102e0 cmp r3, 0 |
| if (r3 == 0) {
0x000102e2 beq 0x1035c | goto label_35;
| }
0x000102e4 ldr r3, [sp, 0x98] | r3 = var_98h;
0x000102e6 ldr r5, [sp, 0x84] | r5 = var_84h;
0x000102e8 cmp r3, 0 |
0x000102ea asr.w r6, r5, 0x1f | r6 = r5 >> 0x1f;
| if (r3 <= 0) {
0x000102ee ble 0x1035c | goto label_35;
| }
| label_16:
0x000102f0 ldr r3, [sp, 0x64] | r3 = var_64h;
0x000102f2 movs r7, 0 | r7 = 0;
0x000102f4 str.w fp, [sp] | __asm ("str.w fp, [sp]");
0x000102f8 str r5, [sp, 4] | var_4h = r5;
0x000102fa str r6, [sp, 0xc] | var_ch = r6;
0x000102fc add.w r8, r3, -1 | r8 = r3 + -1;
0x00010300 ldr.w fp, [sp, 0x4c] | fp = var_4ch;
0x00010304 mov sl, r3 | sl = r3;
0x00010306 ldr.w sb, [sp, 0x98] | sb = var_98h;
0x0001030a ldr r5, [sp, 0x50] | r5 = errnum;
0x0001030c ldr r6, [sp, 0x2c] | r6 = var_2ch;
| label_4:
0x0001030e mov r4, r8 | r4 = r8;
0x00010310 ldrb r3, [r8, 1]! | r3 = *((r8 += 1));
| if (r3 != 0) {
0x00010314 cbnz r3, 0x10346 | goto label_36;
| }
0x00010316 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00010318 ldr r1, [sp, 4] | r1 = var_4h;
0x0001031a ldr r2, [r6, 8] | r2 = *((r6 + 8));
0x0001031c adds r0, r3, r1 | r0 = r3 + r1;
0x0001031e ldr r1, [sp, 0xc] | r1 = var_ch;
0x00010320 ldr r3, [r6, 0xc] | r3 = *((r6 + 0xc));
0x00010322 adc ip, r1, 0 | __asm ("adc ip, r1, 0");
0x00010326 adds r0, r0, r7 | r0 += r7;
0x00010328 adc ip, ip, 0 | __asm ("adc ip, ip, 0");
0x0001032c cmp r0, r2 |
0x0001032e sbcs.w ip, ip, r3 | __asm ("sbcs.w ip, ip, r3");
| if (r0 >= r2) {
0x00010332 bhs.w 0x10224 | goto label_3;
| }
0x00010336 ldr r3, [sp] | r3 = *(sp);
0x00010338 adds r5, 1 | r5++;
0x0001033a add.w fp, fp, 1 |
0x0001033e add r0, r3 | r0 += r3;
0x00010340 blx 0x1bb0 | r0 = fcn_00001bb0 ();
0x00010344 add r5, r0 | r5 += r0;
| label_36:
0x00010346 adds r4, 2 | r4 += 2;
0x00010348 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x0001034a sub.w r4, r4, sl | r4 -= sl;
0x0001034e cmp sb, r4 |
0x00010350 add r7, r3 | r7 += r3;
| if (sb > r4) {
0x00010352 bgt 0x1030e | goto label_4;
| }
0x00010354 strd fp, r5, [sp, 0x4c] | __asm ("strd fp, r5, [var_4ch]");
0x00010358 ldr.w fp, [sp] | fp = *(sp);
| label_35:
0x0001035c ldr r3, [sp, 0x4c] | r3 = var_4ch;
0x0001035e cmp r3, 0 |
| if (r3 == 0) {
0x00010360 beq.w 0x107c0 | goto label_37;
| }
0x00010364 ldr r0, [sp, 0x50] | r0 = errnum;
0x00010366 lsls r4, r3, 4 | r4 = r3 << 4;
0x00010368 add r0, r4 | r0 += r4;
0x0001036a blx 0x1b0c | strerror (r0);
0x0001036e ldr r2, [sp, 0x9c] | r2 = var_9ch;
0x00010370 str r0, [sp, 0x1c] | var_1ch = r0;
0x00010372 str r0, [r2] | *(r2) = r0;
0x00010374 cmp r0, 0 |
| if (r0 == 0) {
0x00010376 beq.w 0x1081a | goto label_38;
| }
0x0001037a ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001037c add r4, r3 | r4 += r3;
0x0001037e ldr r3, [sp, 0x90] | r3 = var_90h;
0x00010380 cmp r3, 1 |
| if (r3 <= 1) {
0x00010382 ble.w 0x10808 | goto label_39;
| }
0x00010386 ldr r3, [sp, 0x94] | r3 = var_94h;
0x00010388 movs r6, 1 | r6 = 1;
0x0001038a str r4, [sp] | *(sp) = r4;
0x0001038c mov.w sl, 0 | sl = 0;
0x00010390 ldrd r4, sb, [sp, 0xa0] | __asm ("ldrd r4, sb, [var_a0h]");
0x00010394 adds r5, r3, 4 | r5 = r3 + 4;
0x00010396 mov.w r3, 0 | r3 = 0;
0x0001039a adc r7, r3, 0 | __asm ("adc r7, r3, 0");
0x0001039e ldr r3, [sp, 0x88] | r3 = s;
0x000103a0 str.w sl, [sp, 0xc] | __asm ("str.w sl, [var_ch]");
0x000103a4 add.w r8, r3, 8 | r8 = r3 + 8;
0x000103a8 ldr r3, [sp, 0x8c] | r3 = var_8ch;
0x000103aa and r3, r3, 0x10 | r3 &= 0x10;
0x000103ae str r3, [sp, 4] | var_4h = r3;
0x000103b0 add.w r3, fp, 4 | r3 += arg_4h;
0x000103b4 str r3, [sp, 0x28] | var_28h = r3;
| label_5:
0x000103b6 ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x000103b8 ldrd ip, r0, [r3, 8] | __asm ("ldrd ip, r0, [r3, 8]");
0x000103bc ldr r3, [sp, 0x10] | r3 = var_10h;
0x000103be cmp r3, 0 |
| if (r3 == 0) {
0x000103c0 beq.w 0x1068c | goto label_40;
| }
0x000103c4 cmp ip, r5 |
0x000103c6 sbcs.w r3, r0, r7 | __asm ("sbcs.w r3, r0, r7");
| if (ip <= r5) {
0x000103ca blo.w 0x107f6 | goto label_28;
| }
0x000103ce ldr r3, [sp, 4] | r3 = var_4h;
0x000103d0 add.w r1, fp, r4 | r1 = fp + r4;
0x000103d4 cmp r3, 0 |
| if (r3 == 0) {
0x000103d6 beq.w 0x10756 | goto label_41;
| }
0x000103da ldr r3, [sp, 8] | r3 = var_8h;
0x000103dc add.w r2, fp, -1 | r2 = fp + -1;
0x000103e0 add.w lr, fp, 3 | lr += arg_3h;
0x000103e4 add r2, r4 | r2 += r4;
0x000103e6 add lr, r4 | lr += r4;
| do {
0x000103e8 ldrb sl, [r2, 1]! | sl = *((r2 += 1));
0x000103ec cmp lr, r2 |
0x000103ee orr.w r3, sl, r3, lsl 8 | r3 = sl | (r3 << 8);
0x000103f2 bne 0x103e8 |
| } while (lr != r2);
0x000103f4 adds.w lr, r4, 0x10 | lr = r4 + 0x10;
0x000103f8 adc r2, sb, 0 | __asm ("adc r2, sb, 0");
0x000103fc cmp ip, lr |
0x000103fe sbcs.w r2, r0, r2 | __asm ("sbcs.w r2, r0, r2");
| if (ip <= lr) {
0x00010402 blo.w 0x107f6 | goto label_28;
| }
0x00010406 ldrh r2, [r1, 0xe] | r2 = *((r1 + 0xe));
0x00010408 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x0001040a uxth r2, r2 | r2 = (int16_t) r2;
| label_14:
0x0001040c adds.w lr, r4, 0xd | lr = r4 + 0xd;
0x00010410 adc r1, sb, 0 | __asm ("adc r1, sb, 0");
0x00010414 cmp ip, lr |
0x00010416 sbcs.w r1, r0, r1 | __asm ("sbcs.w r1, r0, r1");
| if (ip <= lr) {
0x0001041a blo.w 0x107f6 | goto label_28;
| }
0x0001041e add.w r1, fp, 0xc | r1 += arg_ch;
0x00010422 ldrb.w lr, [r1, r4] |
| label_10:
0x00010426 cmp r2, 0 |
| if (r2 != 0) {
0x00010428 bne 0x104a6 | goto label_42;
| }
0x0001042a ldr r2, [sp, 0x30] | r2 = var_30h;
| if (r2 != 0) {
0x0001042c cbz r2, 0x10436 |
0x0001042e and r2, lr, 0xf | r2 = lr & 0xf;
0x00010432 cmp r2, 0xd |
| if (r2 == 0xd) {
0x00010434 beq 0x104a6 | goto label_42;
| }
| }
0x00010436 ldr r2, [sp, 0x34] | r2 = var_34h;
0x00010438 adds r3, r3, r2 | r3 += r2;
0x0001043a ldr r2, [sp, 0x38] | r2 = var_38h;
0x0001043c adc r2, r2, 0 | __asm ("adc r2, r2, 0");
0x00010440 cmp r3, ip |
0x00010442 sbcs r2, r0 | __asm ("sbcs r2, r0");
| if (r3 >= ip) {
0x00010444 bhs.w 0x10224 | goto label_3;
| }
0x00010448 ldrb.w r2, [fp, r3] | r2 = *((fp + r3));
0x0001044c add.w sl, fp, r3 | sl = fp + r3;
| if (r2 != 0) {
0x00010450 cbz r2, 0x104a6 |
0x00010452 lsr.w lr, lr, 4 | lr >>= 4;
0x00010456 mov r0, sl | r0 = sl;
0x00010458 cmp.w lr, 2 |
0x0001045c ite eq |
| if (lr != 2) {
0x0001045e moveq r3, 0x57 | r3 = 0x57;
| }
| if (lr == 2) {
0x00010460 movne r3, 0x55 | r3 = 0x55;
| }
0x00010462 str r3, [sp, 0x24] | var_24h = r3;
0x00010464 blx 0x1bb0 | fcn_00001bb0 ();
0x00010468 ldr r2, [sp, 0xc] | r2 = var_ch;
0x0001046a mov r1, sl | r1 = sl;
0x0001046c ldr r3, [sp, 0x1c] | r3 = var_1ch;
0x0001046e mov sl, r0 | sl = r0;
0x00010470 vldr d16, [r8] | __asm ("vldr d16, [r8]");
0x00010474 add.w ip, r3, r2, lsl 4 |
0x00010478 ldr r3, [sp, 0x24] | r3 = var_24h;
0x0001047a adds r2, 1 | r2++;
0x0001047c str r2, [sp, 0xc] | var_ch = r2;
0x0001047e mov r2, sl | r2 = sl;
0x00010480 str.w r3, [ip, 8] | __asm ("str.w r3, [ip, 8]");
0x00010484 ldr r3, [sp] | r3 = *(sp);
0x00010486 vstr d16, [ip] | __asm ("vstr d16, [ip]");
0x0001048a mov r0, r3 | r0 = r3;
0x0001048c str.w r3, [ip, 0xc] | __asm ("str.w r3, [ip, 0xc]");
0x00010490 blx 0x19c8 | mmap64 ()
0x00010494 ldr r2, [sp] | r2 = *(sp);
0x00010496 movs r3, 0 | r3 = 0;
0x00010498 strb.w r3, [r2, sl] | *((r2 + sl)) = r3;
0x0001049c add.w sl, sl, 1 | sl++;
0x000104a0 add.w r3, r2, sl | r3 = r2 + sl;
0x000104a4 str r3, [sp] | *(sp) = r3;
| }
| label_42:
0x000104a6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000104a8 adds r6, 1 | r6++;
0x000104aa add.w r8, r8, 8 | r8 += 8;
0x000104ae adds r4, r4, r3 | r4 += r3;
0x000104b0 adc sb, sb, 0 | __asm ("adc sb, sb, 0");
0x000104b4 adds r5, r3, r5 | r5 = r3 + r5;
0x000104b6 ldr r3, [sp, 0x18] | r3 = var_18h;
0x000104b8 adc r7, r7, 0 | __asm ("adc r7, r7, 0");
0x000104bc cmp r3, r6 |
| if (r3 != r6) {
0x000104be bne.w 0x103b6 | goto label_5;
| }
0x000104c2 ldr r4, [sp] | r4 = *(sp);
0x000104c4 ldr.w sl, [sp, 0xc] | sl = var_ch;
| label_19:
0x000104c8 ldr r0, [sp, 0x88] | r0 = s;
0x000104ca blx 0x19a0 | fcn_000019a0 ();
0x000104ce ldr r2, [sp, 0x64] | r2 = var_64h;
0x000104d0 cmp r2, 0 |
| if (r2 == 0) {
0x000104d2 beq 0x105c6 | goto label_15;
| }
0x000104d4 ldr r3, [sp, 0xac] | r3 = var_ach;
0x000104d6 sub.w r3, r3, fp | r3 -= fp;
0x000104da str r3, [sp, 0x18] | var_18h = r3;
0x000104dc asrs r3, r3, 0x1f | r3 >>= 0x1f;
0x000104de str r3, [sp, 0x24] | var_24h = r3;
0x000104e0 ldr r3, [sp, 0x98] | r3 = var_98h;
0x000104e2 cmp r3, 0 |
| if (r3 <= 0) {
0x000104e4 ble 0x105c0 | goto label_43;
| }
0x000104e6 add r3, r2 | r3 += r2;
0x000104e8 ldr r1, [sp, 0x8c] | r1 = var_8ch;
0x000104ea subs r3, 1 | r3--;
0x000104ec add.w sb, r2, -1 | sb = r2 + -1;
0x000104f0 str r3, [sp, 0x14] | var_14h = r3;
0x000104f2 movs r3, 0 | r3 = 0;
0x000104f4 mov r8, r3 | r8 = r3;
0x000104f6 and r1, r1, 0x10 | r1 &= 0x10;
0x000104fa str r1, [sp, 0x28] | var_28h = r1;
0x000104fc str.w fp, [sp, 0x30] | __asm ("str.w fp, [var_30h]");
0x00010500 str.w sl, [sp] | __asm ("str.w sl, [sp]");
| label_6:
0x00010504 ldrb r3, [sb, 1]! | r3 = *((sb += 1));
0x00010508 cmp r3, 0 |
| if (r3 != 0) {
0x0001050a bne 0x105b2 | goto label_44;
| }
0x0001050c ldr r1, [sp, 0x18] | r1 = var_18h;
0x0001050e ldr r3, [sp, 0x2c] | r3 = var_2ch;
0x00010510 ldr r6, [sp, 0x20] | r6 = var_20h;
0x00010512 adds.w r5, r8, r1 | r5 = r8 + r1;
0x00010516 ldr r1, [sp, 0x24] | r1 = var_24h;
0x00010518 ldr r2, [r3, 8] | r2 = *((r3 + 8));
0x0001051a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0001051c adc sl, r1, 0 | __asm ("adc sl, r1, 0");
0x00010520 adds.w fp, r6, r5 |
0x00010524 adc r1, sl, 0 | __asm ("adc r1, sl, 0");
0x00010528 cmp fp, r2 |
0x0001052a sbcs r1, r3 | __asm ("sbcs r1, r3");
0x0001052c str r2, [sp, 0x10] | var_10h = r2;
0x0001052e str r3, [sp, 0xc] | var_ch = r3;
| if (fp >= r2) {
0x00010530 bhs.w 0x10224 | goto label_3;
| }
0x00010534 ldr r7, [sp, 0x30] | r7 = var_30h;
0x00010536 add.w r1, r7, fp | r1 = r7 + fp;
0x0001053a mov r0, r1 | r0 = r1;
0x0001053c str r1, [sp, 4] | var_4h = r1;
0x0001053e blx 0x1bb0 | fcn_00001bb0 ();
0x00010542 mov r3, r6 | r3 = r6;
0x00010544 ldr r2, [sp, 0x10] | r2 = var_10h;
0x00010546 adds r6, r3, r5 | r6 = r3 + r5;
0x00010548 ldr r3, [sp, 0xc] | r3 = var_ch;
0x0001054a adc sl, sl, 0 | __asm ("adc sl, sl, 0");
0x0001054e mov r6, r0 | r6 = r0;
0x00010550 cmp r2, fp |
0x00010552 sbcs.w sl, r3, sl | __asm ("sbcs.w sl, r3, sl");
| if (r2 <= fp) {
0x00010556 blo.w 0x107f6 | goto label_28;
| }
0x0001055a ldr r3, [sp, 0x28] | r3 = var_28h;
0x0001055c add r5, r7 | r5 += r7;
0x0001055e ldr r1, [sp, 4] | r1 = var_4h;
0x00010560 cmp r3, 0 |
| if (r3 != 0) {
0x00010562 bne.w 0x1070e | goto label_45;
| }
0x00010566 ldr r3, [sp, 0x20] | r3 = var_20h;
0x00010568 cmp r3, 0 |
| if (r3 == 0) {
0x0001056a beq.w 0x107d6 | goto label_46;
| }
0x0001056e ldr r7, [sp, 0x20] | r7 = var_20h;
0x00010570 ldr r2, [sp, 8] | r2 = var_8h;
0x00010572 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00010574 adds r0, r5, r7 | r0 = r5 + r7;
| do {
0x00010576 ldrb ip, [r0, -0x1]! | ip = *((r0 -= 0x1));
0x0001057a lsls r3, r3, 8 | r3 <<= 8;
0x0001057c orr.w r3, r3, r2, lsr 24 | r3 |= (r2 >> 24);
0x00010580 cmp r0, r5 |
0x00010582 orr.w r2, ip, r2, lsl 8 | r2 = ip | (r2 << 8);
0x00010586 bne 0x10576 |
| } while (r0 != r5);
| label_12:
0x00010588 str r7, [sp, 0x20] | var_20h = r7;
| label_17:
0x0001058a ldr r5, [sp] | r5 = *(sp);
0x0001058c ldr r7, [sp, 0x1c] | r7 = var_1ch;
0x0001058e lsls r0, r5, 4 | r0 = r5 << 4;
0x00010590 str r2, [r7, r0] | *((r7 + r0)) = r2;
0x00010592 adds r2, r7, r0 | r2 = r7 + r0;
0x00010594 str r3, [r2, 4] | *((r2 + 4)) = r3;
0x00010596 movs r3, 0x55 | r3 = 0x55;
0x00010598 str r4, [r2, 0xc] | *((r2 + 0xc)) = r4;
0x0001059a mov r0, r4 | r0 = r4;
0x0001059c str r3, [r2, 8] | *((r2 + 8)) = r3;
0x0001059e adds r3, r5, 1 | r3 = r5 + 1;
0x000105a0 mov r2, r6 | r2 = r6;
0x000105a2 str r3, [sp] | *(sp) = r3;
0x000105a4 blx 0x19c8 | mmap64 ()
0x000105a8 mov.w r3, 0 | r3 = 0;
0x000105ac strb r3, [r4, r6] | *((r4 + r6)) = r3;
0x000105ae adds r6, 1 | r6++;
0x000105b0 add r4, r6 | r4 += r6;
| label_44:
0x000105b2 ldr r3, [sp, 0x3c] | r3 = var_3ch;
0x000105b4 add r8, r3 | r8 += r3;
0x000105b6 ldr r3, [sp, 0x14] | r3 = var_14h;
0x000105b8 cmp sb, r3 |
| if (sb != r3) {
0x000105ba bne 0x10504 | goto label_6;
| }
0x000105bc ldr.w sl, [sp] | sl = *(sp);
| label_43:
0x000105c0 ldr r0, [sp, 0x64] | r0 = var_64h;
0x000105c2 blx 0x19a0 | fcn_000019a0 ();
| label_15:
0x000105c6 ldr r2, [pc, 0x294] |
0x000105c8 ldr r3, [pc, 0x274] | r3 = *(0x10840);
0x000105ca add r2, pc | r2 = 0x20e2c;
0x000105cc ldr r3, [r2, r3] | r3 = *(0x20e2c);
0x000105ce ldr r2, [r3] | r2 = *(0x20e2c);
0x000105d0 ldr r3, [sp, 0xd4] | r3 = var_d4h;
0x000105d2 eors r2, r3 | r2 ^= r3;
0x000105d4 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x000105d8 bne.w 0x10838 | goto label_47;
| }
0x000105dc mov r0, sl | r0 = sl;
0x000105de add sp, 0xdc |
0x000105e0 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_27:
0x000105e4 ldr r2, [sp] | r2 = *(sp);
0x000105e6 cmp r8, sb |
0x000105e8 sbcs.w r2, r7, r2 | __asm ("sbcs.w r2, r7, r2");
| if (r8 <= sb) {
0x000105ec blo.w 0x107f6 | goto label_28;
| }
0x000105f0 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x000105f2 add.w r1, r5, fp | r1 = r5 + fp;
| if (r2 == 0) {
0x000105f6 cbz r2, 0x10664 | goto label_48;
| }
0x000105f8 ldr r2, [sp, 0x70] | r2 = var_70h;
0x000105fa ldr r0, [sp, 0x74] | r0 = var_74h;
0x000105fc ldr r4, [sp, 8] | r4 = var_8h;
0x000105fe add r2, r5 | r2 += r5;
0x00010600 adds r6, r0, r5 | r6 = r0 + r5;
| do {
0x00010602 ldrb r0, [r2, 1]! | r0 = *((r2 += 1));
0x00010606 cmp r6, r2 |
0x00010608 orr.w r4, r0, r4, lsl 8 | r4 = r0 | (r4 << 8);
0x0001060c bne 0x10602 |
| } while (r6 != r2);
0x0001060e adds.w r0, r5, 8 | r0 = r5 + 8;
0x00010612 adc r2, r3, 0 | __asm ("adc r2, r3, 0");
0x00010616 cmp r8, r0 |
0x00010618 sbcs.w r2, r7, r2 | __asm ("sbcs.w r2, r7, r2");
| if (r8 <= r0) {
0x0001061c blo.w 0x107f6 | goto label_28;
| }
0x00010620 ldrh r2, [r1, 6] | r2 = *((r1 + 6));
0x00010622 rev16 r2, r2 | __asm ("rev16 r2, r2");
0x00010624 uxth r2, r2 | r2 = (int16_t) r2;
| label_9:
0x00010626 adds r0, r5, 5 | r0 = r5 + 5;
0x00010628 adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0001062c cmp r8, r0 |
0x0001062e sbcs.w r1, r7, r1 | __asm ("sbcs.w r1, r7, r1");
| if (r8 <= r0) {
0x00010632 blo.w 0x107f6 | goto label_28;
| }
0x00010636 ldrb.w r1, [fp, sb] | r1 = *((fp + sb));
0x0001063a b 0x10156 | goto label_7;
| label_29:
0x0001063c ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x0001063e ldr r4, [sp, 8] | r4 = var_8h;
0x00010640 add r2, r5 | r2 += r5;
| do {
0x00010642 ldrb r0, [r2, -0x1]! | r0 = *((r2 -= 0x1));
0x00010646 cmp r1, r2 |
0x00010648 orr.w r4, r0, r4, lsl 8 | r4 = r0 | (r4 << 8);
0x0001064c bne 0x10642 |
| } while (r1 != r2);
0x0001064e adds.w r0, r5, 0x10 | r0 = r5 + 0x10;
0x00010652 adc r2, r3, 0 | __asm ("adc r2, r3, 0");
0x00010656 cmp r8, r0 |
0x00010658 sbcs.w r2, r7, r2 | __asm ("sbcs.w r2, r7, r2");
| if (r8 <= r0) {
0x0001065c blo.w 0x107f6 | goto label_28;
| }
0x00010660 ldrh r2, [r1, 0xe] | r2 = *((r1 + 0xe));
0x00010662 b 0x10140 | goto label_8;
| label_48:
0x00010664 ldr r2, [sp, 0x6c] | r2 = var_6ch;
0x00010666 ldr r4, [sp, 8] | r4 = var_8h;
0x00010668 add r2, r5 | r2 += r5;
| do {
0x0001066a ldrb r0, [r2, -0x1]! | r0 = *((r2 -= 0x1));
0x0001066e cmp r2, r1 |
0x00010670 orr.w r4, r0, r4, lsl 8 | r4 = r0 | (r4 << 8);
0x00010674 bne 0x1066a |
| } while (r2 != r1);
0x00010676 adds.w r0, r5, 8 | r0 = r5 + 8;
0x0001067a adc r1, r3, 0 | __asm ("adc r1, r3, 0");
0x0001067e cmp r8, r0 |
0x00010680 sbcs.w r1, r7, r1 | __asm ("sbcs.w r1, r7, r1");
| if (r8 <= r0) {
0x00010684 blo.w 0x107f6 | goto label_28;
| }
0x00010688 ldrh r2, [r2, 6] | r2 = *((r2 + 6));
0x0001068a b 0x10626 | goto label_9;
| label_40:
0x0001068c cmp ip, r5 |
0x0001068e sbcs.w r3, r0, r7 | __asm ("sbcs.w r3, r0, r7");
| if (ip <= r5) {
0x00010692 blo.w 0x107f6 | goto label_28;
| }
0x00010696 ldr r3, [sp, 4] | r3 = var_4h;
0x00010698 add.w r1, r4, fp | r1 = r4 + fp;
0x0001069c cmp r3, 0 |
| if (r3 == 0) {
0x0001069e beq 0x10730 | goto label_49;
| }
0x000106a0 ldr r3, [sp, 8] | r3 = var_8h;
0x000106a2 add.w r2, fp, -1 | r2 = fp + -1;
0x000106a6 add.w lr, fp, 3 | lr += arg_3h;
0x000106aa add r2, r4 | r2 += r4;
0x000106ac add lr, r4 | lr += r4;
| do {
0x000106ae ldrb sl, [r2, 1]! | sl = *((r2 += 1));
0x000106b2 cmp lr, r2 |
0x000106b4 orr.w r3, sl, r3, lsl 8 | r3 = sl | (r3 << 8);
0x000106b8 bne 0x106ae |
| } while (lr != r2);
0x000106ba adds.w lr, r4, 8 | lr = r4 + 8;
0x000106be adc r2, sb, 0 | __asm ("adc r2, sb, 0");
0x000106c2 cmp ip, lr |
0x000106c4 sbcs.w r2, r0, r2 | __asm ("sbcs.w r2, r0, r2");
| if (ip <= lr) {
0x000106c8 blo.w 0x107f6 | goto label_28;
| }
0x000106cc ldrh r2, [r1, 6] | r2 = *((r1 + 6));
0x000106ce rev16 r2, r2 | __asm ("rev16 r2, r2");
0x000106d0 uxth r2, r2 | r2 = (int16_t) r2;
| label_13:
0x000106d2 adds.w lr, r4, 5 | lr = r4 + 5;
0x000106d6 adc r1, sb, 0 | __asm ("adc r1, sb, 0");
0x000106da cmp ip, lr |
0x000106dc sbcs.w r1, r0, r1 | __asm ("sbcs.w r1, r0, r1");
| if (ip <= lr) {
0x000106e0 blo.w 0x107f6 | goto label_28;
| }
0x000106e4 ldrb.w lr, [fp, r5] |
0x000106e8 b 0x10426 | goto label_10;
| label_34:
0x000106ea ldr r0, [sp, 8] | r0 = var_8h;
0x000106ec add.w ip, r6, sl |
0x000106f0 ldr r1, [sp, 0x44] | r1 = var_44h;
| do {
0x000106f2 ldrb r4, [ip, -0x1]! | r4 = *((ip -= 0x1));
0x000106f6 lsls r1, r1, 8 | r1 <<= 8;
0x000106f8 orr.w r1, r1, r0, lsr 24 | r1 |= (r0 >> 24);
0x000106fc orr.w r0, r4, r0, lsl 8 | r0 = r4 | (r0 << 8);
0x00010700 rsb.w r4, ip, 1 | r4 = 1 - ip;
0x00010704 add r4, sl | r4 += sl;
0x00010706 add r4, r6 | r4 += r6;
0x00010708 cmp r4, sl |
0x0001070a bls 0x106f2 |
| } while (r4 < sl);
0x0001070c b 0x10298 | goto label_11;
| label_45:
0x0001070e ldr r7, [sp, 0x20] | r7 = var_20h;
0x00010710 ldr r2, [sp, 8] | r2 = var_8h;
0x00010712 cmp r7, 0 |
| if (r7 == 0) {
0x00010714 beq 0x107dc | goto label_50;
| }
0x00010716 ldr r3, [sp, 0x44] | r3 = var_44h;
0x00010718 add.w ip, r5, r7 |
| do {
0x0001071c ldrb r0, [r5], 1 | r0 = *(r5);
| r5++;
0x00010720 lsls r3, r3, 8 | r3 <<= 8;
0x00010722 orr.w r3, r3, r2, lsr 24 | r3 |= (r2 >> 24);
0x00010726 cmp ip, r5 |
0x00010728 orr.w r2, r0, r2, lsl 8 | r2 = r0 | (r2 << 8);
0x0001072c bne 0x1071c |
| } while (ip != r5);
0x0001072e b 0x10588 | goto label_12;
| label_49:
0x00010730 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00010732 adds r2, r3, r4 | r2 = r3 + r4;
0x00010734 ldr r3, [sp, 8] | r3 = var_8h;
| do {
0x00010736 ldrb lr, [r2, -0x1]! |
0x0001073a cmp r1, r2 |
0x0001073c orr.w r3, lr, r3, lsl 8 | r3 = lr | (r3 << 8);
0x00010740 bne 0x10736 |
| } while (r1 != r2);
0x00010742 adds.w lr, r4, 8 | lr = r4 + 8;
0x00010746 adc r2, sb, 0 | __asm ("adc r2, sb, 0");
0x0001074a cmp ip, lr |
0x0001074c sbcs.w r2, r0, r2 | __asm ("sbcs.w r2, r0, r2");
| if (ip <= lr) {
0x00010750 blo 0x107f6 | goto label_28;
| }
0x00010752 ldrh r2, [r1, 6] | r2 = *((r1 + 6));
0x00010754 b 0x106d2 | goto label_13;
| label_41:
0x00010756 ldr r3, [sp, 0x28] | r3 = var_28h;
0x00010758 adds r2, r3, r4 | r2 = r3 + r4;
0x0001075a ldr r3, [sp, 8] | r3 = var_8h;
| do {
0x0001075c ldrb lr, [r2, -0x1]! |
0x00010760 cmp r1, r2 |
0x00010762 orr.w r3, lr, r3, lsl 8 | r3 = lr | (r3 << 8);
0x00010766 bne 0x1075c |
| } while (r1 != r2);
0x00010768 adds.w lr, r4, 0x10 | lr = r4 + 0x10;
0x0001076c adc r2, sb, 0 | __asm ("adc r2, sb, 0");
0x00010770 cmp ip, lr |
0x00010772 sbcs.w r2, r0, r2 | __asm ("sbcs.w r2, r0, r2");
| if (ip <= lr) {
0x00010776 blo 0x107f6 | goto label_28;
| }
0x00010778 ldrh r2, [r1, 0xe] | r2 = *((r1 + 0xe));
0x0001077a b 0x1040c | goto label_14;
| label_20:
0x0001077c vmov.i32 d16, 0 | __asm ("vmov.i32 d16, 0");
0x00010780 movs r3, 0 | r3 = 0;
0x00010782 str r3, [sp, 0x20] | var_20h = r3;
0x00010784 str r3, [sp, 0xac] | var_ach = r3;
0x00010786 str r3, [sp, 0x3c] | var_3ch = r3;
0x00010788 vstr d16, [sp, 0xb8] | __asm ("vstr d16, [sp, 0xb8]");
0x0001078c b 0xffaa | goto label_1;
| label_30:
0x0001078e ldr r0, [sp, 0x64] | r0 = var_64h;
0x00010790 mvn sl, 0x15 | sl = ~0x15;
0x00010794 blx 0x19a0 | fcn_000019a0 ();
0x00010798 ldr r0, [sp, 0x88] | r0 = s;
0x0001079a blx 0x19a0 | fcn_000019a0 ();
0x0001079e b 0x105c6 | goto label_15;
| label_26:
0x000107a0 ldr r3, [sp, 0x64] | r3 = var_64h;
| if (r3 == 0) {
0x000107a2 cbz r3, 0x107c0 | goto label_37;
| }
0x000107a4 ldr r3, [sp, 0x98] | r3 = var_98h;
0x000107a6 ldr r5, [sp, 0xac] | r5 = var_ach;
0x000107a8 cmp r3, 0 |
0x000107aa sub.w r5, r5, fp | r5 -= fp;
0x000107ae it gt |
| if (r3 <= 0) {
0x000107b0 movgt r3, 0 | r3 = 0;
| }
0x000107b2 asr.w r6, r5, 0x1f | r6 = r5 >> 0x1f;
0x000107b6 it gt |
| if (r3 <= 0) {
0x000107b8 strdgt r3, r3, [sp, 0x4c] | __asm ("strdgt r3, r3, [sp, 0x4c]");
| goto label_51;
| }
| if (r3 > 0) {
| label_51:
0x000107bc bgt.w 0x102f0 | goto label_16;
| }
| label_37:
0x000107c0 ldr r0, [sp, 0x64] | r0 = var_64h;
0x000107c2 blx 0x19a0 | fcn_000019a0 ();
0x000107c6 ldr r0, [sp, 0x88] | r0 = s;
0x000107c8 blx 0x19a0 | fcn_000019a0 ();
0x000107cc ldr r2, [sp, 0x9c] | r2 = var_9ch;
0x000107ce movs r3, 0 | r3 = 0;
0x000107d0 mov sl, r3 | sl = r3;
0x000107d2 str r3, [r2] | *(r2) = r3;
0x000107d4 b 0x105c6 | goto label_15;
| label_46:
0x000107d6 ldr r2, [sp, 8] | r2 = var_8h;
0x000107d8 ldr r3, [sp, 0x44] | r3 = var_44h;
0x000107da b 0x1058a | goto label_17;
| label_50:
0x000107dc ldr r3, [sp, 0x44] | r3 = var_44h;
0x000107de b 0x1058a | goto label_17;
| label_33:
0x000107e0 ldr r0, [sp, 8] | r0 = var_8h;
0x000107e2 ldr r1, [sp, 0x44] | r1 = var_44h;
0x000107e4 ldr r2, [sp, 4] | r2 = var_4h;
0x000107e6 ldrd r5, r3, [sp, 0x7c] | __asm ("ldrd r5, r3, [var_80h]");
0x000107ea strd r0, r1, [r2] | __asm ("strd r0, r1, [r2]");
0x000107ee b 0x102b0 | goto label_18;
| label_22:
0x000107f0 mvn sl, 0x15 | sl = ~0x15;
0x000107f4 b 0x105c6 | goto label_15;
| label_28:
0x000107f6 ldr r3, [pc, 0x68] |
0x000107f8 movs r2, 0x89 | r2 = 0x89;
0x000107fa ldr r1, [pc, 0x68] |
0x000107fc ldr r0, [pc, 0x68] |
0x000107fe add r3, pc | r3 = 0x21064;
0x00010800 add r1, pc | r1 = 0x2106a;
0x00010802 add r0, pc | r0 = 0x2106e;
0x00010804 blx 0x1de0 | fcn_00001de0 ();
| label_39:
0x00010808 mov.w sl, 0 | sl = 0;
0x0001080c b 0x104c8 | goto label_19;
| label_25:
0x0001080e ldr r0, [sp, 0x64] | r0 = var_64h;
0x00010810 mvn sl, 0xb | sl = ~0xb;
0x00010814 blx 0x19a0 | fcn_000019a0 ();
0x00010818 b 0x105c6 | goto label_15;
| label_38:
0x0001081a ldr r0, [sp, 0x64] | r0 = var_64h;
0x0001081c blx 0x19a0 | fcn_000019a0 ();
0x00010820 ldr r0, [sp, 0x88] | r0 = s;
0x00010822 blx 0x19a0 | fcn_000019a0 ();
0x00010826 blx 0x1be4 | r0 = isoc99_sscanf ();
0x0001082a ldr r3, [r0] | r3 = *(r0);
0x0001082c rsb.w sl, r3, 0 | sl = r3 - ;
0x00010830 b 0x105c6 | goto label_15;
| label_24:
0x00010832 mvn sl, 0xb | sl = ~0xb;
0x00010836 b 0x105c6 | goto label_15;
| label_47:
0x00010838 blx 0x1a1c | stat64 ();
0x0001083c ldrsh r4, [r5, r2] | r4 = *((r5 + r2));
0x0001083e movs r1, r0 | r1 = r0;
0x00010840 lsls r4, r7, 6 | r4 = r7 << 6;
0x00010842 movs r0, r0 |
0x00010844 ldr r3, [pc, 0x28] | r3 = *(0x10870);
0x00010846 movs r0, r0 |
0x00010848 ldr r4, [pc, 0x3e0] | r4 = *(0x10c2c);
0x0001084a movs r0, r0 |
0x0001084c ldr r4, [pc, 0x3a0] | r4 = *(0x10bf0);
0x0001084e movs r0, r0 |
0x00010850 ldr r2, [pc, 0x328] | r2 = *(0x10b7c);
0x00010852 movs r0, r0 |
0x00010854 ldr r1, [pc, 0x3a0] | r1 = *(0x10bf8);
0x00010856 movs r0, r0 |
0x00010858 ldr r2, [pc, 0x18] | r2 = *(0x10874);
0x0001085a movs r0, r0 |
0x0001085c ldr r6, [r1, r1] | r6 = *(0x10bf8);
0x0001085e movs r1, r0 | r1 = r0;
0x00010860 add lr, sp, lr | lr = sp + lr;
0x00010862 movs r0, r0 |
0x00010864 add r4, r3 | r4 += r3;
0x00010866 movs r0, r0 |
0x00010868 add r6, sb | r6 += sb;
0x0001086a movs r0, r0 |
| }
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/bin/kmod @ 0x10a3c */
| #include <stdint.h>
|
; (fcn) fcn.00010a3c () | void fcn_00010a3c (int16_t arg1, uint32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00010a3c stmdbhs r0, {r3, r4, r5, r6, r7, r8, sl, ip, sp, pc} | __asm ("stmdbhs r0, {r3, r4, r5, r6, r7, r8, sl, ip, sp, pc}");
| if (? != ?) {
0x00010a40 beq 0x10aac |
0x00010a42 mov r4, r0 | r4 = r0;
| if (r0 != 0) {
0x00010a44 cbz r0, 0x10a9a |
0x00010a46 mov r0, r1 | r0 = r1;
0x00010a48 mov r6, r1 | r6 = r1;
0x00010a4a blx 0x1bb0 | fcn_00001bb0 ();
0x00010a4e ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00010a50 mov r5, r0 | r5 = r0;
0x00010a52 adds r7, r3, r0 | r7 = r3 + r0;
0x00010a54 ldrd r0, r2, [r4] | __asm ("ldrd r0, r2, [r4]");
0x00010a58 cmp r7, r2 |
| if (r7 >= r2) {
0x00010a5a bls 0x10a80 |
0x00010a5c lsls r3, r7, 0x19 | r3 = r7 << 0x19;
0x00010a5e itt ne |
| if (r3 != r7) {
0x00010a60 bicne r7, r7, 0x7f | __asm ("bicne r7, r7, 0x7f");
| }
| if (r3 != r7) {
0x00010a64 adds r7, 0x80 | r7 += 0x80;
| }
0x00010a66 mov r1, r7 | r1 = r7;
0x00010a68 blx 0x1a34 | regexec ();
0x00010a6c subs r3, r7, 0 | r3 = r7 - 0;
0x00010a6e it ne |
| if (r3 == r7) {
0x00010a70 movne r3, 1 | r3 = 1;
| }
0x00010a72 cmp r0, 0 |
0x00010a74 it ne |
| if (r0 == 0) {
0x00010a76 movne r3, 0 | r3 = 0;
| }
| if (r3 != 0) {
0x00010a78 cbnz r3, 0x10a94 | goto label_0;
| }
0x00010a7a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00010a7c strd r0, r7, [r4] | __asm ("strd r0, r7, [r4]");
| }
0x00010a80 add r0, r3 | r0 += r3;
0x00010a82 mov r1, r6 | r1 = r6;
0x00010a84 mov r2, r5 | r2 = r5;
0x00010a86 blx 0x19c8 | mmap64 ()
0x00010a8a ldr r3, [r4, 8] | r3 = *((r4 + 8));
0x00010a8c mov r0, r5 | r0 = r5;
0x00010a8e add r3, r5 | r3 += r5;
0x00010a90 str r3, [r4, 8] | *((r4 + 8)) = r3;
0x00010a92 pop {r3, r4, r5, r6, r7, pc} |
| label_0:
0x00010a94 movs r5, 0 | r5 = 0;
0x00010a96 mov r0, r5 | r0 = r5;
0x00010a98 pop {r3, r4, r5, r6, r7, pc} |
| }
0x00010a9a ldr r3, [pc, 0x24] |
0x00010a9c movs r2, 0x63 | r2 = 0x63;
0x00010a9e ldr r1, [pc, 0x24] |
0x00010aa0 ldr r0, [pc, 0x24] |
0x00010aa2 add r3, pc | r3 = 0x21568;
0x00010aa4 add r1, pc | r1 = 0x2156e;
0x00010aa6 add r0, pc | r0 = 0x21572;
0x00010aa8 blx 0x1de0 | fcn_00001de0 ();
| }
0x00010aac ldr r3, [pc, 0x1c] |
0x00010aae movs r2, 0x62 | r2 = 0x62;
0x00010ab0 ldr r1, [pc, 0x1c] |
0x00010ab2 ldr r0, [pc, 0x20] |
0x00010ab4 add r3, pc | r3 = 0x21584;
0x00010ab6 add r1, pc | r1 = 0x2158a;
0x00010ab8 add r0, pc | r0 = 0x21592;
0x00010aba blx 0x1de0 | fcn_00001de0 ();
0x00010abc invalid |
0x00010ac0 muls r2, r3, r2 | r2 = r3 * r2;
0x00010ac2 movs r0, r0 |
0x00010ac4 cmn r0, r5 |
0x00010ac6 movs r0, r0 |
0x00010ac8 orrs r2, r1 | r2 |= r1;
0x00010aca movs r0, r0 |
0x00010acc muls r0, r1, r0 | r0 = r1 * r0;
0x00010ace movs r0, r0 |
0x00010ad0 cmn r6, r2 |
0x00010ad2 movs r0, r0 |
0x00010ad4 cmn r4, r5 |
0x00010ad6 movs r0, r0 |
| }
[*] Function mmap used 66 times kmod