[*] Binary protection state of tun.ko
No RELRO No Canary found NX disabled REL No RPATH No RUNPATH Symbols
[*] Function system tear down of tun.ko
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/drivers/net/tun.ko @ 0x8005680 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) sym.tun_chr_ioctl () | void tun_chr_ioctl (int32_t arg_0h, int32_t arg_9cch, int32_t arg_9d4h, int32_t arg_9d8h, int32_t arg1, int32_t arg2) {
| int32_t var_0h;
| int32_t var_4h;
| int32_t var_8h;
| int32_t var_ch;
| int32_t var_1ch;
| int32_t var_20h;
| int32_t var_4h_2;
| int32_t var_2fh;
| int32_t var_30h;
| int32_t var_44h;
| r0 = arg1;
| r1 = arg2;
0x08005680 push {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x08005684 movw r3, 0x54d9 |
0x08005688 movt r3, 0x4004 | r3 = 0x400454d9;
0x0800568c ldr sb, [r0, 0x84] | sb = *(arg_0hx84);
0x08005690 mov r4, r2 | r4 = r2;
0x08005694 movw r2, 0x54ca |
0x08005698 movt r2, 0x4004 | r2 = 0x400454ca;
0x0800569c sub sp, sp, 0x44 |
0x080056a0 mov r5, r0 | r5 = r0;
0x080056a4 ldr r7, [sb, 0x24] | r7 = *((sb + 0x24));
0x080056a8 mov r8, r1 | r8 = r1;
0x080056ac cmp r1, r3 |
0x080056b0 cmpne r1, r2 | __asm ("cmpne r1, r2");
| if (r1 == r3) {
0x080056b4 beq 0x8005800 | goto label_14;
| }
0x080056b8 ubfx r1, r1, 8, 8 | r1 = (r1 >> 8) & ((1 << 8) - 1);
0x080056bc movw r3, 0x894c | r3 = 0x894c;
0x080056c0 sub r1, r1, 0x89 | r1 -= 0x89;
0x080056c4 cmp r8, r3 |
0x080056c8 clz r1, r1 | r1 &= r1;
0x080056cc lsr r1, r1, 5 | r1 >>= 5;
| if (r8 != r3) {
0x080056d0 moveq r1, 0 | r1 = 0;
| }
0x080056d4 cmp r1, 0 |
| if (r1 != 0) {
0x080056d8 bne 0x8005800 | goto label_14;
| }
0x080056dc add r6, sp, 0x20 | r6 += var_20h;
0x080056e0 mov r2, 0x20 | r2 = 0x20;
0x080056e4 mov r0, r6 | r0 = r6;
0x080056e8 stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc}");
0x080056ec movw r3, 0x54cf |
0x080056f0 movt r3, 0x8004 | r3 = 0x800454cf;
0x080056f4 cmp r8, r3 |
| if (r8 == r3) {
0x080056f8 beq 0x800590c | goto label_15;
| }
| do {
0x080056fc movw r3, 0x894c | r3 = 0x894c;
0x08005700 cmp r8, r3 |
| if (r8 == r3) {
0x08005704 beq 0x80058d8 | goto label_16;
| }
0x08005708 stmdaeq r0, {r1, r2, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r6, r7, fp, lr, pc}");
0x0800570c stmdaeq r0, {r1, r2, r3, r4, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, fp, lr, pc}");
0x08005710 ldr sl, [sb, 0x228] | sl = *((sb + 0x228));
0x08005714 cmp sl, 0 |
| if (sl == 0) {
0x08005718 beq 0x8005b60 | goto label_17;
| }
0x0800571c ldr r3, [sl, 0x410] | r3 = *((sl + 0x410));
0x08005720 mrs r1, apsr | r1 = apsr;
0x08005724 cpsid i | __asm ("cpsid i");
0x08005728 ldr r2, [r3, 0x298] | r2 = *((r3 + 0x298));
0x0800572c ldr r3, [r2] | r3 = *(r2);
0x08005730 add r3, r3, 1 | r3++;
0x08005734 str r3, [r2] | *(r2) = r3;
0x08005738 msr cpsr_c, r1 | cpsr_c = r1;
0x0800573c stmdaeq r0, {r1, r3, r5, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, fp, lr, pc}");
0x08005740 movw r3, 0x54ca |
0x08005744 movt r3, 0x4004 | r3 = 0x400454ca;
0x08005748 cmp r8, r3 |
| if (r8 == r3) {
0x0800574c beq 0x8005b98 | goto label_18;
| }
0x08005750 movw r3, 0x54da |
0x08005754 movt r3, 0x4004 | r3 = 0x400454da;
0x08005758 cmp r8, r3 |
| if (r8 == r3) {
0x0800575c beq 0x8005978 | goto label_19;
| }
0x08005760 ldr r3, [sl, 0x474] | r3 = *((sl + 0x474));
0x08005764 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x08005768 bne 0x8006e78 | goto label_20;
| }
| label_13:
0x0800576c ldr r5, [sl, 0x410] | r5 = *((sl + 0x410));
0x08005770 movw r3, 0x54e2 |
0x08005774 movt r3, 0x4004 | r3 = 0x400454e2;
0x08005778 cmp r8, r3 |
0x0800577c ldr r7, [r5, 0x2b4] | r7 = *((r5 + 0x2b4));
| if (r8 > r3) {
0x08005780 bhi 0x8005a68 | goto label_21;
| }
0x08005784 movw r3, 0x54c7 |
0x08005788 movt r3, 0x4004 | r3 = 0x400454c7;
0x0800578c cmp r8, r3 |
| if (r8 > r3) {
0x08005790 bhi 0x80059ac | goto label_22;
| }
0x08005794 movw r3, 0x8924 | r3 = 0x8924;
0x08005798 cmp r8, r3 |
| if (r8 == r3) {
0x0800579c strne r2, [r0, r6, asr 24] | offset_0 = r6 >> 24;
| *((r0 + offset_0)) = r2;
| }
| if (r8 == r3) {
0x080057a0 strne r0, [r0, r0] | *((r0 + r0)) = r0;
| }
0x080057a4 invalid |
0x080057a8 ldrsheq sl, [r5], -0xdf | __asm ("ldrsheq sl, [r5], -0xdf");
| if (r8 != r3) {
0x080057ac andeq r0, r0, r8 | r0 &= r8;
| }
| if (r8 == r3) {
0x080057b0 beq 0x80063b8 | goto label_23;
| }
0x080057b4 stmdble pc, {r3, r6, sb, sl, fp, ip, sp, lr, pc} ^ | __asm ("stmdble pc, {r3, r6, sb, sl, fp, ip, sp, lr, pc} ^");
| if (r8 != r3) {
0x080057b8 muleq r0, sl, r1 | r0 = sl * r1;
| }
0x080057bc subseq r2, r1, r0, lsl 8 | __asm ("subseq r2, r1, r0, lsl 8");
0x080057c0 bic r2, r3, 8, 26 | r2 = BIT_MASK (r3, 8);
0x080057c4 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x080057c8 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x080057cc adds r1, r4, 0x20 | r1 = r4 + 0x20;
0x080057d0 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r4) {
0x080057d4 movlo r3, 0 | r3 = 0;
| }
0x080057d8 cmp r3, 0 |
| if (r3 != 0) {
0x080057dc bne 0x8005c7c | goto label_24;
| }
0x080057e0 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x080057e4 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x080057e8 orr r3, r3, 4 | r3 |= 4;
0x080057ec mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x080057f0 isb sy | __asm ("isb sy");
0x080057f4 mov r2, 0x20 | r2 = 0x20;
0x080057f8 mov r1, r6 | r1 = r6;
0x080057fc b 0x8005ccc | goto label_25;
| label_14:
0x08005800 mov r3, sp | r3 = sp;
0x08005804 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08005808 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x0800580c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08005810 adds r1, r4, 0x20 | r1 = r4 + 0x20;
0x08005814 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r4) {
0x08005818 movlo r3, 0 | r3 = 0;
| }
0x0800581c cmp r3, 0 |
| if (r3 != 0) {
0x08005820 bne 0x8005ba0 | goto label_26;
| }
0x08005824 mrc p15, 0, fp, c3, c0, 0 | __asm ("mrc p15, 0, fp, c3, c0, 0");
0x08005828 bic r3, fp, 0xc | r3 = BIT_MASK (fp, 0xc);
0x0800582c orr r3, r3, 4 | r3 |= 4;
0x08005830 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08005834 isb sy | __asm ("isb sy");
0x08005838 add r6, sp, 0x20 | r6 += var_20h;
0x0800583c mov r1, r4 | r1 = r4;
0x08005840 mov r0, r6 | r0 = r6;
0x08005844 mov r2, 0x20 | r2 = 0x20;
0x08005848 stmdaeq r0, {r1, r3, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r6, r7, fp, lr, pc}");
0x0800584c mov sl, r0 | sl = r0;
0x08005850 mcr p15, 0, fp, c3, c0, 0 | __asm ("mcr p15, 0, fp, c3, c0, 0");
0x08005854 isb sy | __asm ("isb sy");
0x08005858 cmp r0, 0 |
| if (r0 != 0) {
0x0800585c bne 0x8005ba0 | goto label_26;
| }
0x08005860 movw r3, 0x54cf |
0x08005864 movt r3, 0x8004 | r3 = 0x800454cf;
0x08005868 cmp r8, r3 |
| if (r8 == r3) {
0x0800586c beq 0x800590c | goto label_15;
| }
0x08005870 movw r3, 0x54d9 |
0x08005874 movt r3, 0x4004 | r3 = 0x400454d9;
0x08005878 cmp r8, r3 |
0x0800587c bne 0x80056fc |
| } while (r8 != r3);
0x08005880 ldr r6, [r5, 0x84] | r6 = *((r5 + 0x84));
0x08005884 stmdaeq r0, {r1, r2, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r6, r7, fp, lr, pc}");
0x08005888 ldrh r3, [sp, 0x30] | r3 = var_30h;
0x0800588c tst r3, 0x200 |
| if ((r3 & 0x200) != 0) {
0x08005890 bne 0x8005ba8 | goto label_27;
| }
0x08005894 tst r3, 0x400 |
| if ((r3 & 0x400) == 0) {
0x08005898 beq 0x8006870 | goto label_28;
| }
0x0800589c ldr r4, [r6, 0x228] | r4 = *((r6 + 0x228));
0x080058a0 cmp r4, 0 |
| if (r4 == 0) {
0x080058a4 beq 0x8006870 | goto label_28;
| }
0x080058a8 ldr r3, [r4, 0x404] | r3 = *((r4 + 0x404));
0x080058ac tst r3, 0x100 |
| if ((r3 & 0x100) == 0) {
0x080058b0 beq 0x8006870 | goto label_28;
| }
0x080058b4 ldr r1, [r6, 0x330] | r1 = *((r6 + 0x330));
0x080058b8 cmp r1, 0 |
| if (r1 != 0) {
0x080058bc bne 0x8006870 | goto label_28;
| }
0x080058c0 mov r0, r6 | r0 = r6;
0x080058c4 mov fp, r1 |
0x080058c8 bl 0x8002a08 | tun_detach ();
| label_4:
0x080058cc ldr r0, [r4, 0x410] | r0 = *((r4 + 0x410));
0x080058d0 stmdaeq r0, {r1, r3, r5, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, fp, lr, pc}");
0x080058d4 b 0x8005b88 | goto label_5;
| label_16:
0x080058d8 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x080058dc mov r1, 0xc | r1 = 0xc;
0x080058e0 stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc}");
0x080058e4 cmp r0, 0, 4 |
| if (r0 == 0) {
0x080058e8 beq 0x8006878 | goto label_29;
| }
0x080058ec add r0, r7, 0x48 | r0 = r7 + 0x48;
0x080058f0 stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc}");
0x080058f4 stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc}");
0x080058f8 stmdaeq r0, {r1, r3, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r7, r8, fp, lr, pc}");
0x080058fc mov fp, r0 |
| label_3:
0x08005900 mov r0, fp | r0 = fp;
0x08005904 add sp, sp, 0x44 |
0x08005908 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_15:
0x0800590c mov r3, sp | r3 = sp;
0x08005910 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08005914 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08005918 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x0800591c bic r2, r5, 0xc | r2 = BIT_MASK (r5, 0xc);
0x08005920 orr r2, r2, 4 | r2 |= 4;
0x08005924 mcr p15, 0, r2, c3, c0, 0 | __asm ("mcr p15, 0, r2, c3, c0, 0");
0x08005928 isb sy | __asm ("isb sy");
0x0800592c ldr r1, [r3, 8] | r1 = *((r3 + 8));
0x08005930 mov r0, r4 | r0 = r4;
0x08005934 movw r2, 0x7133 | r2 = 0x7133;
0x08005938 sub r1, r1, 1 | r1--;
0x0800593c stmdaeq r0, {r1, r2, r3, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r7, r8, fp, lr, pc}");
0x08005940 mov fp, r0 |
0x08005944 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x08005948 isb sy | __asm ("isb sy");
0x0800594c mov r0, fp | r0 = fp;
0x08005950 add sp, sp, 0x44 |
0x08005954 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
0x08005958 movw r3, 0x54e3 | r3 = 0x54e3;
0x0800595c cmp r8, r3 |
| if (r8 != r3) {
0x08005960 bne 0x8005a60 | goto label_1;
| }
0x08005964 ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x08005968 mov r1, 0xc | r1 = 0xc;
0x0800596c stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc}");
0x08005970 cmp r0, 0 |
| if (r0 != 0) {
0x08005974 bne 0x80062f8 | goto label_30;
| }
| label_19:
0x08005978 mvn fp, 0 |
| do {
| label_2:
0x0800597c stmdaeq r0, {r1, r2, r3, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r6, r7, fp, lr, pc}");
0x08005980 ldr r2, [sl, 0x410] | r2 = *((sl + 0x410));
0x08005984 mrs r0, apsr | r0 = apsr;
0x08005988 cpsid i | __asm ("cpsid i");
0x0800598c ldr r1, [r2, 0x298] | r1 = *((r2 + 0x298));
0x08005990 ldr r2, [r1] | r2 = *(r1);
0x08005994 sub r2, r2, 1 | r2--;
0x08005998 str r2, [r1] | *(r1) = r2;
0x0800599c msr cpsr_c, r0 | cpsr_c = r0;
0x080059a0 mov r0, fp | r0 = fp;
0x080059a4 add sp, sp, 0x44 |
0x080059a8 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_22:
0x080059ac movw r3, 0xab38 |
0x080059b0 movt r3, 0xbffb | r3 = 0xbffbab38;
0x080059b4 add r3, r8, r3 | r3 = r8 + r3;
0x080059b8 cmp r3, 0x1a |
| if (r3 > 0x1a) {
| /* switch table (27 cases) at 0x80059c4 */
0x080059bc ldrls pc, [pc, r3, lsl 2] | offset_1 = r3 << 2;
| pc = *((pc + offset_1));
| }
0x080059c0 b 0x8005a60 | goto label_1;
| label_0:
0x08005a30 movw r3, 0x54d5 |
0x08005a34 movt r3, 0x4008 | r3 = 0x400854d5;
0x08005a38 cmp r8, r3 |
| if (r8 == r3) {
0x08005a3c beq 0x80068d4 | goto label_31;
| }
0x08005a40 movw r3, 0x54d6 |
0x08005a44 movt r3, 0x4008 | r3 = 0x400854d6;
0x08005a48 cmp r8, r3 |
| if (r8 == r3) {
0x08005a4c bne 0x8005a60 |
0x08005a50 ldr r3, [sl, 0x404] | r3 = *((sl + 0x404));
0x08005a54 and r3, r3, 0xf | r3 &= 0xf;
0x08005a58 cmp r3, 2 |
| if (r3 == 2) {
0x08005a5c beq 0x8006310 | goto label_32;
| }
| }
| label_1:
0x08005a60 mvn fp, 0x15 |
0x08005a64 b 0x800597c |
| } while (1);
| label_21:
0x08005a68 movw r3, 0x54e1 |
0x08005a6c movt r3, 0x8004 | r3 = 0x800454e1;
0x08005a70 cmp r8, r3 |
| if (r8 > r3) {
0x08005a74 bhi 0x8005ae0 | goto label_33;
| }
0x08005a78 movw r3, 0x54d1 |
0x08005a7c movt r3, 0x8004 | r3 = 0x800454d1;
0x08005a80 cmp r8, r3 |
| if (r8 < r3) {
0x08005a84 bls 0x8005a30 | goto label_0;
| }
0x08005a88 movw r3, 0xab2e |
0x08005a8c movt r3, 0x7ffb | r3 = 0x7ffbab2e;
0x08005a90 add r3, r8, r3 | r3 = r8 + r3;
0x08005a94 cmp r3, 0xf |
| if (r3 > 0xf) {
| /* switch table (16 cases) at 0x8005aa0 */
0x08005a98 ldrls pc, [pc, r3, lsl 2] | offset_2 = r3 << 2;
| pc = *((pc + offset_2));
| }
0x08005a9c b 0x8005a60 | goto label_1;
| label_33:
0x08005ae0 movw r3, 0x54db |
0x08005ae4 movt r3, 0x8008 | r3 = 0x800854db;
0x08005ae8 cmp r8, r3 |
| if (r8 != r3) {
0x08005aec bne 0x8005a60 | goto label_1;
| }
0x08005af0 ldr r3, [sl, 0x404] | r3 = *((sl + 0x404));
0x08005af4 and r3, r3, 0xf | r3 &= 0xf;
0x08005af8 cmp r3, 2 |
| if (r3 != 2) {
0x08005afc bne 0x8005a60 | goto label_1;
| }
0x08005b00 mov r3, sp | r3 = sp;
0x08005b04 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08005b08 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08005b0c ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x08005b10 adds r1, r4, 8 | r1 = r4 + 8;
0x08005b14 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r4) {
0x08005b18 movlo r3, 0 | r3 = 0;
| }
0x08005b1c cmp r3, 0 |
| if (r3 != 0) {
0x08005b20 bne 0x8005c7c | goto label_24;
| }
0x08005b24 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08005b28 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08005b2c orr r3, r3, 4 | r3 |= 4;
0x08005b30 mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08005b34 isb sy | __asm ("isb sy");
0x08005b38 add r1, sl, 0x460 | r1 = sl + 0x460;
0x08005b3c mov r0, r4 | r0 = r4;
0x08005b40 add r1, r1, 8 | r1 += 8;
0x08005b44 mov r2, 8 | r2 = 8;
0x08005b48 stmdaeq r0, {r1, r5, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r5, r7, r8, fp, lr, pc}");
0x08005b4c mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x08005b50 isb sy | __asm ("isb sy");
0x08005b54 cmp r0, 0 |
| if (r0 == 0) {
0x08005b58 beq 0x8005ce4 | goto label_34;
| }
0x08005b5c b 0x8005c7c | goto label_24;
| label_17:
0x08005b60 stmdaeq r0, {r1, r3, r5, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, fp, lr, pc}");
0x08005b64 movw r3, 0x54ca |
0x08005b68 movt r3, 0x4004 | r3 = 0x400454ca;
0x08005b6c cmp r8, r3 |
| if (r8 == r3) {
0x08005b70 beq 0x8006360 | goto label_35;
| }
0x08005b74 movw r3, 0x54da |
0x08005b78 movt r3, 0x4004 | r3 = 0x400454da;
0x08005b7c cmp r8, r3 |
| if (r8 == r3) {
0x08005b80 mvnne fp, 0x4c |
| }
| if (r8 == r3) {
0x08005b84 beq 0x800645c | goto label_36;
| }
| do {
| label_5:
0x08005b88 stmdaeq r0, {r1, r2, r3, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r6, r7, fp, lr, pc}");
0x08005b8c mov r0, fp | r0 = fp;
0x08005b90 add sp, sp, 0x44 |
0x08005b94 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_18:
0x08005b98 mvn fp, 0x10 |
0x08005b9c b 0x800597c | goto label_2;
| label_26:
0x08005ba0 mvn fp, 0xd |
0x08005ba4 b 0x8005900 | goto label_3;
| label_27:
0x08005ba8 ldr r4, [r6, 0x330] | r4 = *((r6 + 0x330));
0x08005bac cmp r4, 0 |
| if (r4 == 0) {
0x08005bb0 beq 0x8006870 | goto label_28;
| }
0x08005bb4 add r3, r4, 0x1000 | r3 = r4 + 0x1000;
0x08005bb8 ldr r0, [r3, 0x49c] | r0 = *((r3 + 0x49c));
0x08005bbc stmdaeq r0, {r1, r2, r5, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r5, r7, r8, fp, lr, pc}");
0x08005bc0 subs fp, r0, 0 |
0x08005bc4 blt 0x8005b88 |
| } while (fp < r0);
0x08005bc8 ldr r3, [r4, 0x404] | r3 = *((r4 + 0x404));
0x08005bcc mov r0, 1 | r0 = 1;
0x08005bd0 mov r2, sl | r2 = sl;
0x08005bd4 str r0, [sp, 4] | var_4h = r0;
0x08005bd8 mov r1, r5 | r1 = r5;
0x08005bdc ubfx r0, r3, 5, 1 | r0 = (r3 >> 5) & ((1 << 1) - 1);
0x08005be0 ubfx r3, r3, 4, 1 | r3 = (r3 >> 4) & ((1 << 1) - 1);
0x08005be4 str r0, [sp] | *(sp) = r0;
0x08005be8 mov r0, r4 | r0 = r4;
0x08005bec bl 0x80022d8 | r0 = tun_attach ();
0x08005bf0 subs fp, r0, 0 |
| if (fp >= r0) {
0x08005bf4 bge 0x80058cc | goto label_4;
| }
0x08005bf8 b 0x8005b88 | goto label_5;
| do {
| label_24:
0x08005c7c mvn fp, 0xd |
0x08005c80 b 0x800597c | goto label_2;
| label_25:
0x08005ccc mov r0, r4 | r0 = r4;
0x08005cd0 stmdaeq r0, {r1, r5, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r5, r7, r8, fp, lr, pc}");
0x08005cd4 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x08005cd8 isb sy | __asm ("isb sy");
0x08005cdc cmp r0, 0 |
0x08005ce0 bne 0x8005c7c |
| } while (r0 != 0);
| label_34:
0x08005ce4 mov fp, 0 |
0x08005ce8 b 0x800597c | goto label_2;
| label_30:
0x080062f8 add r0, r7, 0x48 | r0 = r7 + 0x48;
0x080062fc stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc}");
0x08006300 stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r7, r8, fp, lr, pc}");
0x08006304 stmdaeq r0, {r1, r3, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r7, r8, fp, lr, pc}");
0x08006308 mov fp, r0 |
0x0800630c b 0x800597c | goto label_2;
| label_32:
0x08006310 ldr r7, [sl, 0x400] | r7 = *((sl + 0x400));
0x08006314 cmp r7, 0 |
| if (r7 <= 0) {
0x08006318 subgt r6, sl, 4 | r6 = sl - 4;
| }
| if (r7 <= 0) {
0x0800631c movgt r5, 0 | r5 = 0;
| }
| if (r7 <= 0) {
0x08006320 ble 0x8006350 | goto label_37;
| }
| do {
0x08006324 ldr r4, [r6, 4]! | r4 = var_4h_2;
0x08006328 mov r1, 0 | r1 = 0;
0x0800632c add r5, r5, 1 | r5++;
0x08006330 ldr r0, [r4, 0x208] | r0 = *((r4 + 0x208));
0x08006334 stmdaeq r0, {r1, r3, r4, r5, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r5, r7, fp, lr, pc}");
0x08006338 ldr r0, [r4, 0x208] | r0 = *((r4 + 0x208));
0x0800633c stmdaeq r0, {r1, r3, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r6, r7, r8, fp, lr, pc}");
0x08006340 ldr r0, [r4, 0x208] | r0 = *((r4 + 0x208));
0x08006344 stmdaeq r0, {r1, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r6, r7, fp, lr, pc}");
0x08006348 cmp r7, r5 |
0x0800634c bne 0x8006324 |
| } while (r7 != r5);
| label_37:
0x08006350 mov r2, 0 | r2 = 0;
0x08006354 mov fp, r2 |
0x08006358 strb r2, [sl, 0x470] | *((sl + 0x470)) = r2;
0x0800635c b 0x800597c | goto label_2;
| label_35:
0x08006360 ldr sb, [r5, 0x84] | sb = *((r5 + 0x84));
0x08006364 strb sl, [sp, 0x2f] | var_2fh = sl;
0x08006368 ldr r3, [sb, 0x330] | r3 = *((sb + 0x330));
0x0800636c cmp r3, 0 |
| if (r3 != 0) {
0x08006370 bne 0x8006870 | goto label_28;
| }
0x08006374 ldrh r3, [sp, 0x30] | r3 = var_30h;
0x08006378 tst r3, 0x20 |
| if ((r3 & 0x20) != 0) {
0x0800637c beq 0x80063a0 |
0x08006380 mov r0, 0xc | r0 = 0xc;
0x08006384 stmdaeq r0, {r1, r2, r3, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r6, r7, r8, fp, lr, pc}");
0x08006388 cmp r0, 0 |
| if (r0 == 0) {
0x0800638c beq 0x8006454 | goto label_6;
| }
0x08006390 ldrh r3, [sp, 0x30] | r3 = var_30h;
0x08006394 and r3, r3, 0x1f | r3 &= 0x1f;
0x08006398 cmp r3, 0x12 |
| if (r3 != 0x12) {
0x0800639c bne 0x8006870 | goto label_28;
| }
| }
0x080063a0 mov r1, r6 | r1 = r6;
0x080063a4 mov r0, r7 | r0 = r7;
0x080063a8 stmdaeq r0, {r1, r4, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r6, r7, r8, fp, lr, pc}");
0x080063ac subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x080063b0 beq 0x80065c4 | goto label_38;
| }
0x080063b4 ldrsh r3, [sp, 0x30] | r3 = var_30h;
| label_23:
0x080063b8 cmp r3, 0 |
| if (r3 < 0) {
0x080063bc blt 0x8006dfc | goto label_39;
| }
0x080063c0 tst r3, 1 |
0x080063c4 uxth r3, r3 | r3 = (int16_t) r3;
| if ((r3 & 1) != 0) {
0x080063c8 beq 0x80063dc |
0x080063cc ldr r2, [pc, 0x7dc] | r2 = *(0x8006bac);
0x080063d0 ldr r1, [r8, 0x120] | r1 = *((r8 + 0x120));
0x080063d4 cmp r1, r2 |
| if (r1 == r2) {
0x080063d8 beq 0x80063f4 | goto label_40;
| }
| }
0x080063dc tst r3, 2 |
| if ((r3 & 2) == 0) {
0x080063e0 beq 0x8006870 | goto label_28;
| }
0x080063e4 ldr r2, [pc, 0x7c8] | r2 = "tun_tap_creation_via_rtnetlink_is_not_supported.";
0x080063e8 ldr r1, [r8, 0x120] | r1 = *((r8 + 0x120));
0x080063ec cmp r1, r2 |
| if (r1 != r2) {
0x080063f0 bne 0x8006870 | goto label_28;
| }
| label_40:
0x080063f4 ldr r2, [r8, 0x944] | r2 = *((r8 + 0x944));
0x080063f8 ubfx r3, r3, 8, 1 | r3 = (r3 >> 8) & ((1 << 1) - 1);
0x080063fc add r7, r8, 0x540 | r7 = r8 + 0x540;
0x08006400 ubfx r2, r2, 8, 1 | r2 = (r2 >> 8) & ((1 << 1) - 1);
0x08006404 cmp r3, r2 |
| if (r3 != r2) {
0x08006408 bne 0x8006870 | goto label_28;
| }
0x0800640c mov r3, sp | r3 = sp;
0x08006410 bic r3, r3, 0x1fc0 | r3 = BIT_MASK (r3, 0x1fc0);
0x08006414 bic r3, r3, 0x3f | r3 = BIT_MASK (r3, 0x3f);
0x08006418 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x0800641c ldr r2, [r3, 0x340] | r2 = *((r3 + 0x340));
0x08006420 ldr r3, [r7, 0x410] | r3 = *((r7 + 0x410));
0x08006424 ldr sb, [r3, 0x2b4] | sb = *((r3 + 0x2b4));
0x08006428 ldr r3, [r7, 0x408] | r3 = *((r7 + 0x408));
0x0800642c cmn r3, 1 |
| if (r3 == 1) {
0x08006430 beq 0x80064d4 | goto label_41;
| }
0x08006434 ldr r2, [r2, 0x14] | r2 = *((r2 + 0x14));
0x08006438 cmp r3, r2 |
0x0800643c beq 0x80064d4 |
| while (r0 == 0) {
0x08006440 ldr r0, [sb, 0x30] | r0 = *((sb + 0x30));
0x08006444 mov r1, 0xc | r1 = 0xc;
0x08006448 stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc}");
0x0800644c cmp r0, 0 |
| if (r0 != 0) {
0x08006450 bne 0x80064ec | goto label_42;
| }
| label_6:
0x08006454 mvn fp, 0 |
0x08006458 b 0x8005b88 | goto label_5;
| label_36:
0x0800645c mov r3, sp | r3 = sp;
0x08006460 bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x08006464 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x08006468 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x0800646c adds r1, r4, 4 | r1 = r4 + 4;
0x08006470 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r4) {
0x08006474 movlo r3, 0 | r3 = 0;
| }
0x08006478 cmp r3, 0 |
| if (r3 != 0) {
0x0800647c bne 0x8006c74 | goto label_43;
| }
0x08006480 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08006484 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08006488 orr r3, r3, 4 | r3 |= 4;
0x0800648c mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08006490 isb sy | __asm ("isb sy");
0x08006494 mov r2, 4 | r2 = 4;
0x08006498 mov r1, r4 | r1 = r4;
0x0800649c add r0, sp, 0x1c | r0 += var_1ch;
0x080064a0 stmdaeq r0, {r1, r3, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r6, r7, fp, lr, pc}");
0x080064a4 mov r3, r0 | r3 = r0;
0x080064a8 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x080064ac isb sy | __asm ("isb sy");
0x080064b0 cmp r0, 0 |
0x080064b4 rsbne r2, r0, 4 | __asm ("rsbne r2, r0, 4");
| if (r0 == 0) {
0x080064b8 addne r1, sp, 0x1c | r1 += var_1ch;
| }
| if (r0 == 0) {
0x080064bc addne r0, r1, r2 | r0 = r1 + r2;
| }
| if (r0 != 0) {
0x080064c0 bne 0x8006c7c | goto label_44;
| }
0x080064c4 ldr r2, [sp, 0x1c] | r2 = var_1ch;
0x080064c8 mov fp, r3 |
0x080064cc str r2, [sb, 0x234] | *((sb + 0x234)) = r2;
0x080064d0 b 0x8005b88 | goto label_5;
| label_41:
0x080064d4 ldr r0, [r7, 0x40c] | r0 = *((r7 + 0x40c));
0x080064d8 cmn r0, 1 |
| if (r0 == 1) {
0x080064dc beq 0x80064ec | goto label_42;
| }
0x080064e0 stmdaeq r0, {r1, r2, r4, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r6, r7, r8, fp, lr, pc}");
0x080064e4 cmp r0, 0 |
0x080064e8 beq 0x8006440 |
| }
| label_42:
0x080064ec add sb, r7, 0x1000 | sb = r7 + 0x1000;
0x080064f0 ldr r0, [sb, 0x49c] | r0 = *((sb + 0x49c));
0x080064f4 stmdaeq r0, {r1, r3, r4, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r6, r7, r8, fp, lr, pc}");
0x080064f8 subs fp, r0, 0 |
| if (fp < r0) {
0x080064fc blt 0x8005b88 | goto label_5;
| }
0x08006500 ldrh r2, [sp, 0x30] | r2 = var_30h;
0x08006504 mov r3, 1 | r3 = 1;
0x08006508 mov r1, r5 | r1 = r5;
0x0800650c str r3, [sp, 4] | var_4h = r3;
0x08006510 mov r0, r7 | r0 = r7;
0x08006514 ubfx r3, r2, 5, 1 | r3 = (r2 >> 5) & ((1 << 1) - 1);
0x08006518 str r3, [sp] | *(sp) = r3;
0x0800651c ubfx r3, r2, 4, 1 | r3 = (r2 >> 4) & ((1 << 1) - 1);
0x08006520 ubfx r2, r2, 0xc, 1 | r2 = (r2 >> 0xc) & ((1 << 1) - 1);
0x08006524 bl 0x80022d8 | r0 = tun_attach ();
0x08006528 subs fp, r0, 0 |
| if (fp < r0) {
0x0800652c blt 0x8005b88 | goto label_5;
| }
0x08006530 ldr r3, [r7, 0x404] | r3 = *((r7 + 0x404));
0x08006534 tst r3, 0x100 |
| if ((r3 & 0x100) != 0) {
0x08006538 beq 0x8006550 |
0x0800653c ldr r1, [sb, 0x490] | r1 = *((sb + 0x490));
0x08006540 ldr r2, [r7, 0x400] | r2 = *((r7 + 0x400));
0x08006544 add r2, r2, r1 | r2 += r1;
0x08006548 cmp r2, 1 |
| if (r2 > 1) {
0x0800654c bhi 0x8006ca0 | goto label_45;
| }
| }
0x08006550 ldrh r1, [sp, 0x30] | r1 = var_30h;
0x08006554 bic r3, r3, 0x7100 | r3 = BIT_MASK (r3, 0x7100);
0x08006558 bic r3, r3, 0x30 | r3 = BIT_MASK (r3, 0x30);
0x0800655c movw r2, 0x7130 | r2 = 0x7130;
0x08006560 and r2, r2, r1 | r2 &= r1;
0x08006564 mov r0, r8 | r0 = r8;
0x08006568 orr r3, r2, r3 | r3 = r2 | r3;
0x0800656c str r3, [r7, 0x404] | *((r7 + 0x404)) = r3;
0x08006570 stmdaeq r0, {r1, r3, r5, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, fp, lr, pc}");
| label_7:
0x08006574 ldr r0, [r7, 0x410] | r0 = *((r7 + 0x410));
0x08006578 stmdaeq r0, {r1, r2, r3, r4, r6, r7, r8, sb, sl, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r6, r7, r8, sb, sl, lr, pc}");
0x0800657c ldr r5, [r7, 0x410] | r5 = *((r7 + 0x410));
0x08006580 ldr r3, [r5, 0x28] | r3 = *((r5 + 0x28));
0x08006584 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x08006588 bne 0x8006a40 | goto label_46;
| }
| label_10:
0x0800658c mov r1, r5 | r1 = r5;
0x08006590 mov r0, r6 | r0 = r6;
0x08006594 stmdaeq r0, {r1, r3, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r6, r7, fp, lr, pc}");
| label_11:
0x08006598 mov r3, sp | r3 = sp;
0x0800659c bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x080065a0 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x080065a4 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x080065a8 adds r1, r4, 0x20 | r1 = r4 + 0x20;
0x080065ac sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r4) {
0x080065b0 movlo r3, 0 | r3 = 0;
| }
0x080065b4 cmp r3, 0 |
| if (r3 == 0) {
0x080065b8 beq 0x8006880 | goto label_47;
| }
| label_8:
0x080065bc mvn fp, 0xd |
0x080065c0 b 0x8005b88 | goto label_5;
| label_38:
0x080065c4 ldrh r3, [sp, 0x30] | r3 = var_30h;
0x080065c8 mov r1, 0xc | r1 = 0xc;
0x080065cc ldr r0, [r7, 0x30] | r0 = *((r7 + 0x30));
0x080065d0 tst r3, 0x100 |
| if ((r3 & 0x100) == 0) {
0x080065d4 movne r8, 0x100 | r8 = 0x100;
| }
| if ((r3 & 0x100) != 0) {
0x080065d8 moveq r8, 1 | r8 = 1;
| }
0x080065dc stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r7, r8, fp, lr, pc}");
0x080065e0 cmp r0, 0 |
| if (r0 == 0) {
0x080065e4 beq 0x8006454 | goto label_6;
| }
0x080065e8 stmdaeq r0, {r1, r2, r3, r4, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r6, r7, r8, fp, lr, pc}");
0x080065ec subs fp, r0, 0 |
| if (fp < r0) {
0x080065f0 blt 0x8005b88 | goto label_5;
| }
0x080065f4 ldrh r3, [sp, 0x30] | r3 = var_30h;
0x080065f8 tst r3, 1 |
| if ((r3 & 1) != 0) {
0x080065fc bne 0x80069e4 | goto label_48;
| }
0x08006600 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x08006604 beq 0x8006870 |
0x08006608 stmdaeq r0, {r2, r4, r5, r8, sb, ip, sp, lr} | __asm ("stmdaeq r0, {r2, r4, r5, r8, sb, ip, sp, lr}");
0x0800660c stmdaeq r0, {r2, r4, r5, r8, sb, ip, sp, lr} | __asm ("stmdaeq r0, {r2, r4, r5, r8, sb, ip, sp, lr}");
0x08006610 mov sl, 2 | sl = 2;
| label_9:
0x08006614 ldrb r1, [sp, 0x20] | r1 = var_20h;
0x08006618 mov r2, 0 | r2 = 0;
0x0800661c str r8, [sp, 4] | var_4h = r8;
0x08006620 movw r0, 0x1510 | r0 = 0x1510;
0x08006624 cmp r1, 0 |
0x08006628 str r8, [sp] | *(sp) = r8;
| if (r1 != 0) {
0x0800662c moveq r1, r3 | r1 = r3;
| }
| if (r1 == 0) {
0x08006630 movne r1, r6 | r1 = r6;
| }
0x08006634 stmdaeq r0, {r3, r4, fp} | __asm ("stmdaeq r0, {r3, r4, fp}");
0x08006638 stmdaeq r0, {r3, r4, fp} | __asm ("stmdaeq r0, {r3, r4, fp}");
0x0800663c stmdaeq r0, {r1, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r5, r6, r7, r8, fp, lr, pc}");
0x08006640 subs r8, r0, 0 | r8 = r0 - 0;
| if (r8 == r0) {
0x08006644 beq 0x8006e20 | goto label_49;
| }
0x08006648 str r7, [r8, 0x2b4] | *((r8 + 0x2b4)) = r7;
0x0800664c stmdaeq r0, {r4, r5, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r0, {r4, r5, r7, r8, sb, fp, ip, sp, lr}");
0x08006650 stmdaeq r0, {r4, r5, r7, r8, sb, fp, ip, sp, lr} | __asm ("stmdaeq r0, {r4, r5, r7, r8, sb, fp, ip, sp, lr}");
0x08006654 str r3, [r8, 0x494] | *((r8 + 0x494)) = r3;
0x08006658 mov r7, 0 | r7 = 0;
0x0800665c mov r2, 0xcc0 | r2 = 0xcc0;
0x08006660 ldr r3, [sb, 0x234] | r3 = *((sb + 0x234));
0x08006664 mov r1, 8 | r1 = 8;
0x08006668 str r3, [r8, 0xa8] | *((r8 + 0xa8)) = r3;
0x0800666c mov r0, 0x30 | r0 = 0x30;
0x08006670 ldr r3, [pc, 0x540] | r3 = "tun_tap_creation_via_rtnetlink_is_not_supported.";
0x08006674 str sl, [r8, 0x944] | *((r8 + 0x944)) = sl;
0x08006678 add sl, r8, 0x1000 | sl = r8 + 0x1000;
0x0800667c str r3, [r8, 0x480] | *((r8 + 0x480)) = r3;
0x08006680 mov r3, 0xa | r3 = 0xa;
0x08006684 str r8, [r8, 0x950] | *((r8 + 0x950)) = r8;
0x08006688 str r3, [r8, 0x964] | *((r8 + 0x964)) = r3;
0x0800668c mov r3, 0x40 | r3 = 0x40;
0x08006690 str r7, [r8, 0x96c] | *((r8 + 0x96c)) = r7;
0x08006694 strb r7, [r8, 0x9b0] | *((r8 + 0x9b0)) = r7;
0x08006698 str r3, [r8, 0x960] | *((r8 + 0x960)) = r3;
0x0800669c str sl, [sp, 8] | var_8h = sl;
0x080066a0 ldr r3, [sb, 0x208] | r3 = *((sb + 0x208));
0x080066a4 ldr r3, [r3, 0xdc] | r3 = *((r3 + 0xdc));
0x080066a8 str r3, [r8, 0x968] | *((r8 + 0x968)) = r3;
0x080066ac str r7, [sl, 0x9e4] | *((sl + 0x9e4)) = r7;
0x080066b0 str r7, [sl, 0x9f0] | *((sl + 0x9f0)) = r7;
0x080066b4 stmdaeq r0, {r1, r2, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r5, r6, r7, r8, fp, lr, pc}");
0x080066b8 cmp r0, r7 |
0x080066bc str r0, [sl, 0x9e8] | *((sl + 0x9e8)) = r0;
| if (r0 == r7) {
0x080066c0 beq 0x8006c90 | goto label_50;
| }
0x080066c4 add r0, r8, 0x19c0 | r0 = r8 + 0x19c0;
0x080066c8 add r0, r0, 0x1c | r0 += 0x1c;
0x080066cc stmdaeq r0, {r1, r3, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, r8, fp, lr, pc}");
0x080066d0 add r3, r8, 0x540 | r3 = r8 + 0x540;
0x080066d4 subs fp, r0, 0 |
0x080066d8 str r3, [sp, 0xc] | var_ch = r3;
| if (fp < r0) {
0x080066dc blt 0x8006a28 | goto label_51;
| }
0x080066e0 ldr r3, [r8, 0x944] | r3 = *((r8 + 0x944));
0x080066e4 and r3, r3, 0xf | r3 &= 0xf;
0x080066e8 cmp r3, 1 |
| if (r3 == 1) {
0x080066ec beq 0x8006cac | goto label_52;
| }
0x080066f0 cmp r3, 2 |
| if (r3 == 2) {
0x080066f4 bne 0x8006744 |
0x080066f8 ldr r3, [pc, 0x4b8] | r3 = "tun_tap_creation_via_rtnetlink_is_not_supported.";
0x080066fc mov r0, r8 | r0 = r8;
0x08006700 sub r7, r3, 0x120 | r7 = r3 - 0x120;
0x08006704 str r7, [r8, 0x120] | *((r8 + 0x120)) = r7;
0x08006708 stmdaeq r0, {r1, r2, r3, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r5, r6, r7, r8, fp, lr, pc}");
0x0800670c ldr r3, [r8, 0x134] | r3 = *((r8 + 0x134));
0x08006710 ldr r7, [r8, 0x1c8] | r7 = *((r8 + 0x1c8));
0x08006714 mov r1, 6 | r1 = 6;
0x08006718 bic r3, r3, 0x800 | r3 = BIT_MASK (r3, 0x800);
0x0800671c orr r3, r3, 0x8000 | r3 |= 0x8000;
0x08006720 mov r0, r7 | r0 = r7;
0x08006724 str r3, [r8, 0x134] | *((r8 + 0x134)) = r3;
0x08006728 mov r3, 1 | r3 = 1;
0x0800672c strb r3, [r8, 0x176] | *((r8 + 0x176)) = r3;
0x08006730 stmdaeq r0, {r1, r4, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r5, r6, r7, r8, fp, lr, pc}");
0x08006734 ldrb r3, [r7] | r3 = *(r7);
0x08006738 bic r3, r3, 1 | r3 = BIT_MASK (r3, 1);
0x0800673c orr r3, r3, 2 | r3 |= 2;
0x08006740 strb r3, [r7] | *(r7) = r3;
| }
0x08006744 movw r3, 0x14e |
0x08006748 ldrh r3, [r8, r3] | r3 = *((r8 + r3));
0x0800674c rsb r3, r3, 0xff00 | r3 = 0xff00 - r3;
0x08006750 add r3, r3, 0xff | r3 = 0x24d;
| label_12:
0x08006754 add r7, r8, 0x540 | r7 = r8 + 0x540;
0x08006758 str r3, [r8, 0x148] | *((r8 + 0x148)) = r3;
0x0800675c add r0, r8, 0x9b0 | r0 = r8 + 0x9b0;
0x08006760 add r3, r7, 0x1440 | r3 = r7 + 0x1440;
0x08006764 add sl, r3, 0x38 | sl = r3 + 0x38;
0x08006768 mov r2, 0x1000 | r2 = 0x1000;
0x0800676c mov r3, 0x44 | r3 = 0x44;
0x08006770 mov r1, 0 | r1 = 0;
0x08006774 str r3, [r8, 0x144] | *((r8 + 0x144)) = r3;
0x08006778 add r0, r0, 8 | r0 += 8;
0x0800677c str sl, [sp, 0xc] | var_ch = sl;
0x08006780 stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc}");
0x08006784 ldr fp, [sp, 8] | fp = var_8h;
0x08006788 mov r3, 0 | r3 = 0;
0x0800678c mov r0, sl | r0 = sl;
0x08006790 mov r2, r3 | r2 = r3;
0x08006794 mov r1, 0x12c | r1 = 0x12c;
0x08006798 str r1, [fp, 0x9cc] | *(arg_9cch) = r1;
0x0800679c stmdaeq r0, {r2, r8, sb} | __asm ("stmdaeq r0, {r2, r8, sb}");
0x080067a0 stmdaeq r0, {r2, r8, sb} | __asm ("stmdaeq r0, {r2, r8, sb}");
0x080067a4 str r3, [sp] | *(sp) = r3;
0x080067a8 stmdaeq r0, {r1, r2, r4, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, r7, r8, fp, lr, pc}");
0x080067ac stmdaeq r0, {r1, r2, r5, r7, r8, sb, sl, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r5, r7, r8, sb, sl, lr, pc}");
0x080067b0 stmdaeq r0, {r1, r2, r5, r7, r8, sb, sl, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r5, r7, r8, sb, sl, lr, pc}");
0x080067b4 str fp, [sp, 8] | var_8h = fp;
0x080067b8 ldr r0, [r3] | r0 = *(r3);
0x080067bc ldr r3, [fp, 0x9cc] | r3 = *(arg_9cch);
0x080067c0 add r0, r0, r3 | r0 += r3;
0x080067c4 stmdaeq r0, {r1, r3, r5, r7, r8, sb, sl, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, r7, r8, sb, sl, lr, pc}");
0x080067c8 mov r1, r0 | r1 = r0;
0x080067cc mov r0, sl | r0 = sl;
0x080067d0 add fp, pc, 0x3c8 |
0x080067d4 ldrd sl, fp, [fp] | __asm ("ldrd sl, fp, [fp]");
0x080067d8 stmdaeq r0, {r1, r2, r3, r5, r7, r8, sb, sl, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r5, r7, r8, sb, sl, lr, pc}");
0x080067dc ldr r0, [r8, 0x944] | r0 = *((r8 + 0x944));
0x080067e0 add ip, r7, 0x1480 |
0x080067e4 strd sl, fp, [r8, 0x70] | __asm ("strd sl, fp, [r8, 0x70]");
0x080067e8 movw lr, 0x7130 | lr = 0x7130;
0x080067ec add fp, pc, 0x3b4 |
0x080067f0 ldrd sl, fp, [fp] | __asm ("ldrd sl, fp, [fp]");
0x080067f4 strd sl, fp, [r8, 0x88] | __asm ("strd sl, fp, [r8, 0x88]");
0x080067f8 ldrh r3, [sp, 0x30] | r3 = var_30h;
0x080067fc mov fp, 0x2000 |
0x08006800 mov sl, 0xc9 |
0x08006804 movt sl, 0x15 | sl = 0x1500c9;
0x08006808 strd sl, fp, [r8, 0x78] | __asm ("strd sl, fp, [r8, 0x78]");
0x0800680c bic r0, r0, 0x7100 | r0 = BIT_MASK (r0, 0x7100);
0x08006810 ldr fp, [sp, 8] | fp = var_8h;
0x08006814 and lr, lr, r3 | lr &= r3;
0x08006818 bic r0, r0, 0x30 | r0 = BIT_MASK (r0, 0x30);
0x0800681c add ip, ip, 0x14 |
0x08006820 orr r0, r0, lr | r0 |= lr;
0x08006824 mov r2, 0 | r2 = 0;
0x08006828 str r0, [r8, 0x944] | *((r8 + 0x944)) = r0;
0x0800682c ubfx lr, r3, 5, 1 | lr = (r3 >> 5) & ((1 << 1) - 1);
0x08006830 str ip, [fp, 0x9d4] | *(arg_9d4h) = ip;
0x08006834 mov r1, r5 | r1 = r5;
0x08006838 str ip, [fp, 0x9d8] | *(arg_9d8h) = ip;
0x0800683c ubfx r3, r3, 4, 1 | r3 = (r3 >> 4) & ((1 << 1) - 1);
0x08006840 mov r0, r7 | r0 = r7;
0x08006844 str r2, [sp, 4] | var_4h = r2;
0x08006848 str lr, [sp] |
0x0800684c bl 0x80022d8 | r0 = tun_attach ();
0x08006850 subs fp, r0, 0 |
| if (fp < r0) {
0x08006854 blt 0x8006a0c | goto label_53;
| }
0x08006858 ldr r0, [r8, 0x950] | r0 = *((r8 + 0x950));
0x0800685c stmdaeq r0, {r1, r3, r4, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r5, r6, r7, r8, fp, lr, pc}");
0x08006860 subs fp, r0, 0 |
| if (fp < r0) {
0x08006864 blt 0x80069f4 | goto label_54;
| }
0x08006868 str r7, [sb, 0x228] | *((sb + 0x228)) = r7;
0x0800686c b 0x8006574 | goto label_7;
| }
| label_28:
0x08006870 mvn fp, 0x15 |
0x08006874 b 0x8005b88 | goto label_5;
| label_29:
0x08006878 mvn fp, 0 |
0x0800687c b 0x8005900 | goto label_3;
| label_47:
0x08006880 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08006884 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08006888 orr r3, r3, 4 | r3 |= 4;
0x0800688c mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08006890 isb sy | __asm ("isb sy");
0x08006894 mov r2, 0x20 | r2 = 0x20;
0x08006898 mov r1, r6 | r1 = r6;
0x0800689c mov r0, r4 | r0 = r4;
0x080068a0 stmdaeq r0, {r1, r5, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r5, r7, r8, fp, lr, pc}");
0x080068a4 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x080068a8 isb sy | __asm ("isb sy");
0x080068ac cmp r0, 0 |
| if (r0 == 0) {
0x080068b0 moveq fp, r0 | goto label_55;
| }
| if (r0 == 0) {
| label_55:
0x080068b4 beq 0x8005b88 | goto label_5;
| }
0x080068b8 b 0x80065bc | goto label_8;
0x080068bc add r1, sp, 0x30 | r1 += var_30h;
0x080068c0 mov r0, r5 | r0 = r5;
0x080068c4 mov r2, 0 | r2 = 0;
0x080068c8 stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r6, r7, r8, fp, lr, pc}");
0x080068cc mov fp, r0 |
0x080068d0 b 0x800597c | goto label_2;
| label_31:
0x080068d4 ldr r3, [sl, 0x404] | r3 = *((sl + 0x404));
0x080068d8 and r3, r3, 0xf | r3 &= 0xf;
0x080068dc cmp r3, 2 |
| if (r3 != 2) {
0x080068e0 bne 0x8005a60 | goto label_1;
| }
0x080068e4 mov r3, sp | r3 = sp;
0x080068e8 add r6, sl, 0x460 | r6 = sl + 0x460;
0x080068ec bic r2, r3, 0x1fc0 | r2 = BIT_MASK (r3, 0x1fc0);
0x080068f0 add r6, r6, 8 | r6 += 8;
0x080068f4 bic r2, r2, 0x3f | r2 = BIT_MASK (r2, 0x3f);
0x080068f8 ldr r3, [r2, 8] | r3 = *((r2 + 8));
0x080068fc adds r1, r4, 8 | r1 = r4 + 8;
0x08006900 sbcslo r1, r1, r3 | __asm ("sbcslo r1, r1, r3");
| if (r1 >= r4) {
0x08006904 movlo r3, 0 | r3 = 0;
| }
0x08006908 cmp r3, 0 |
| if (r3 != 0) {
0x0800690c bne 0x8006e04 | goto label_56;
| }
0x08006910 mrc p15, 0, r5, c3, c0, 0 | __asm ("mrc p15, 0, r5, c3, c0, 0");
0x08006914 bic r3, r5, 0xc | r3 = BIT_MASK (r5, 0xc);
0x08006918 orr r3, r3, 4 | r3 |= 4;
0x0800691c mcr p15, 0, r3, c3, c0, 0 | __asm ("mcr p15, 0, r3, c3, c0, 0");
0x08006920 isb sy | __asm ("isb sy");
0x08006924 mov r2, 8 | r2 = 8;
0x08006928 mov r1, r4 | r1 = r4;
0x0800692c mov r0, r6 | r0 = r6;
0x08006930 stmdaeq r0, {r1, r3, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r6, r7, fp, lr, pc}");
0x08006934 mov r2, r0 | r2 = r0;
0x08006938 mcr p15, 0, r5, c3, c0, 0 | __asm ("mcr p15, 0, r5, c3, c0, 0");
0x0800693c isb sy | __asm ("isb sy");
0x08006940 cmp r0, 0 |
| if (r0 != 0) {
0x08006944 bne 0x8006e08 | goto label_57;
| }
0x08006948 ldr r3, [sl, 0x400] | r3 = *((sl + 0x400));
0x0800694c cmp r3, 0 |
| if (r3 == 0) {
0x08006950 subne r7, sl, 4 | r7 = sl - 4;
| }
| if (r3 == 0) {
0x08006954 movne r4, r0 | r4 = r0;
| }
| if (r3 != 0) {
0x08006958 bne 0x8006970 | goto label_58;
| }
0x0800695c b 0x8006db0 | goto label_59;
| do {
0x08006960 ldr r3, [sl, 0x400] | r3 = *((sl + 0x400));
0x08006964 add r4, r4, 1 | r4++;
0x08006968 cmp r4, r3 |
| if (r4 >= r3) {
0x0800696c bhs 0x8006db0 | goto label_59;
| }
| label_58:
0x08006970 ldr r5, [r7, 4]! | r5 = *((r7 += 4));
0x08006974 mov r1, 0 | r1 = 0;
0x08006978 ldr r0, [r5, 0x208] | r0 = *((r5 + 0x208));
0x0800697c stmdaeq r0, {r1, r3, r4, r5, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r5, r7, fp, lr, pc}");
0x08006980 ldr r1, [r5, 0x208] | r1 = *((r5 + 0x208));
0x08006984 mov r0, r6 | r0 = r6;
0x08006988 stmdaeq r0, {r1, r2, r3, r4, r5, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r7, fp, lr, pc}");
0x0800698c mov fp, r0 |
0x08006990 ldr r0, [r5, 0x208] | r0 = *((r5 + 0x208));
0x08006994 stmdaeq r0, {r1, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r6, r7, fp, lr, pc}");
0x08006998 cmp fp, 0 |
0x0800699c beq 0x8006960 |
| } while (fp == 0);
0x080069a0 cmp r4, 0 |
| if (r4 == 0) {
0x080069a4 movne r6, sl | r6 = sl;
| }
| if (r4 == 0) {
0x080069a8 addne r4, sl, r4, lsl 2 | r4 = sl + (r4 << 2);
| }
| if (r4 == 0) {
0x080069ac beq 0x80069d8 | goto label_60;
| }
| do {
0x080069b0 ldr r5, [r6], 4 | r5 = *(r6);
| r6 += 4;
0x080069b4 mov r1, 0 | r1 = 0;
0x080069b8 ldr r0, [r5, 0x208] | r0 = *((r5 + 0x208));
0x080069bc stmdaeq r0, {r1, r3, r4, r5, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r5, r7, fp, lr, pc}");
0x080069c0 ldr r0, [r5, 0x208] | r0 = *((r5 + 0x208));
0x080069c4 stmdaeq r0, {r1, r3, r6, r7, r8, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r6, r7, r8, fp, lr, pc}");
0x080069c8 ldr r0, [r5, 0x208] | r0 = *((r5 + 0x208));
0x080069cc stmdaeq r0, {r1, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r6, r7, fp, lr, pc}");
0x080069d0 cmp r4, r6 |
0x080069d4 bne 0x80069b0 |
| } while (r4 != r6);
| label_60:
0x080069d8 mov r2, 0 | r2 = 0;
0x080069dc strb r2, [sl, 0x470] | *((sl + 0x470)) = r2;
0x080069e0 b 0x800597c | goto label_2;
| label_48:
0x080069e4 stmdaeq r0, {r2, r3, r5, r8, sb, ip, sp, lr} | __asm ("stmdaeq r0, {r2, r3, r5, r8, sb, ip, sp, lr}");
0x080069e8 stmdaeq r0, {r2, r3, r5, r8, sb, ip, sp, lr} | __asm ("stmdaeq r0, {r2, r3, r5, r8, sb, ip, sp, lr}");
0x080069ec mov sl, 1 | sl = 1;
0x080069f0 b 0x8006614 | goto label_9;
| label_54:
0x080069f4 mov r0, r8 | r0 = r8;
0x080069f8 bl 0x8002074 | tun_detach_all ();
0x080069fc ldr r3, [sp, 8] | r3 = var_8h;
0x08006a00 ldr r2, [r3, 0x9e8] | r2 = *((r3 + 0x9e8));
0x08006a04 cmp r2, 0 |
| if (r2 != 0) {
0x08006a08 beq 0x8006a34 |
| label_53:
0x08006a0c ldr r0, [sp, 0xc] | r0 = var_ch;
0x08006a10 stmdaeq r0, {r1, r3, r4, r5, r6, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r4, r5, r6, fp, lr, pc}");
0x08006a14 add r0, r8, 0x540 | r0 = r8 + 0x540;
0x08006a18 bl 0x80015e8 | tun_flow_flush ();
0x08006a1c ldr r3, [sp, 8] | r3 = var_8h;
0x08006a20 ldr r0, [r3, 0x9dc] | r0 = *((r3 + 0x9dc));
0x08006a24 stmdaeq r0, {r1, r2, r3, r4, r5, r6, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r6, fp, lr, pc}");
| label_51:
0x08006a28 ldr r3, [sp, 8] | r3 = var_8h;
0x08006a2c ldr r0, [r3, 0x9e8] | r0 = *((r3 + 0x9e8));
0x08006a30 stmdaeq r0, {r1, r2, r4, r5, r6, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r4, r5, r6, fp, lr, pc}");
| }
0x08006a34 mov r0, r8 | r0 = r8;
0x08006a38 stmdaeq r0, {r1, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r1, sb, fp, lr, pc}");
0x08006a3c b 0x8005b88 | goto label_5;
| label_46:
0x08006a40 ldr r3, [r5, 0x220] | r3 = *((r5 + 0x220));
0x08006a44 cmp r3, 0 |
| if (r3 == 0) {
0x08006a48 beq 0x800658c | goto label_10;
| }
0x08006a4c mov r8, 0 | r8 = 0;
0x08006a50 mov sb, r8 | sb = r8;
| do {
0x08006a54 ldr r0, [r5, 0x21c] | r0 = *((r5 + 0x21c));
0x08006a58 add sb, sb, 1 | sb++;
0x08006a5c add r0, r0, r8 | r0 += r8;
0x08006a60 add r8, r8, 0x7c | r8 += 0x7c;
0x08006a64 stmdaeq r0, {r1, r2, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r2, sb, fp, lr, pc}");
0x08006a68 ldr r3, [r5, 0x220] | r3 = *((r5 + 0x220));
0x08006a6c cmp sb, r3 |
0x08006a70 blo 0x8006a54 |
| } while (sb <= r3);
0x08006a74 ldr r5, [r7, 0x410] | r5 = *((r7 + 0x410));
0x08006a78 b 0x800658c | goto label_10;
| label_43:
0x08006c74 add r0, sp, 0x1c | r0 += var_1ch;
0x08006c78 mov r3, 4 | r3 = 4;
| label_44:
0x08006c7c mov r2, r3 | r2 = r3;
0x08006c80 mov r1, 0 | r1 = 0;
0x08006c84 mvn fp, 0xd |
0x08006c88 stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc}");
0x08006c8c b 0x8005b88 | goto label_5;
| label_50:
0x08006c90 mov r0, r8 | r0 = r8;
0x08006c94 mvn fp, 0xb |
0x08006c98 stmdaeq r0, {r1, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r1, sb, fp, lr, pc}");
0x08006c9c b 0x8005b88 | goto label_5;
| label_45:
0x08006ca0 mov r0, r8 | r0 = r8;
0x08006ca4 stmdaeq r0, {r1, r3, r5, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, r5, r6, r7, fp, lr, pc}");
0x08006ca8 b 0x8006598 | goto label_11;
| label_52:
0x08006cac ldr r3, [pc, -0xfc] | r3 = loc..LANCHOR0;
0x08006cb0 strb r7, [r8, 0x177] | *((r8 + 0x177)) = r7;
0x08006cb4 sub r7, r3, 0x240 | r7 = r3 - 0x240;
0x08006cb8 stmdaeq r0, {r1, r3, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, sb, fp, lr, pc}");
0x08006cbc stmdaeq r0, {r1, r3, sb, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r3, sb, fp, lr, pc}");
0x08006cc0 str r7, [r8, 0x120] | *((r8 + 0x120)) = r7;
0x08006cc4 str r3, [r8, 0x12c] | *((r8 + 0x12c)) = r3;
0x08006cc8 movw r3, 0x5dc | r3 = 0x5dc;
0x08006ccc str r3, [r8, 0x140] | *((r8 + 0x140)) = r3;
0x08006cd0 movw r3, 0xfffe | r3 = 0xfffe;
0x08006cd4 str r3, [r8, 0x14c] | *((r8 + 0x14c)) = r3;
0x08006cd8 movw r3, 0x1090 | r3 = 0x1090;
0x08006cdc str r3, [r8, 0x130] | *((r8 + 0x130)) = r3;
0x08006ce0 movw r3, 0xffff | r3 = 0xffff;
0x08006ce4 b 0x8006754 | goto label_12;
| label_59:
0x08006db0 mov r2, 1 | r2 = 1;
0x08006db4 mov fp, 0 |
0x08006db8 strb r2, [sl, 0x470] | *((sl + 0x470)) = r2;
0x08006dbc b 0x800597c | goto label_2;
| label_39:
0x08006dfc mvn fp, 0xf |
0x08006e00 b 0x8005b88 | goto label_5;
| label_56:
0x08006e04 mov r2, 8 | r2 = 8;
| label_57:
0x08006e08 rsb r0, r2, 8 | r0 = 8 - r2;
0x08006e0c mov r1, 0 | r1 = 0;
0x08006e10 add r0, r6, r0 | r0 = r6 + r0;
0x08006e14 mvn fp, 0xd |
0x08006e18 stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc} | __asm ("stmdaeq r0, {r1, r4, r6, r7, fp, lr, pc}");
0x08006e1c b 0x800597c | goto label_2;
| label_49:
0x08006e20 mvn fp, 0xb |
0x08006e24 b 0x8005b88 | goto label_5;
| label_20:
0x08006e78 ldr r0, [sl, 0x410] | r0 = *((sl + 0x410));
0x08006e7c mov r2, r8 | r2 = r8;
0x08006e80 stmdaeq r0, {r4, r6, r8, sb, ip, sp, lr} | __asm ("stmdaeq r0, {r4, r6, r8, sb, ip, sp, lr}");
0x08006e84 stmdaeq r0, {r4, r6, r8, sb, ip, sp, lr} | __asm ("stmdaeq r0, {r4, r6, r8, sb, ip, sp, lr}");
0x08006e88 stmdaeq r0, {r1, r2, r3, r4, r7, r8, sb, sl, lr, pc} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r7, r8, sb, sl, lr, pc}");
0x08006e8c b 0x800576c | goto label_13;
| }
[*] Function system used 1 times tun.ko