[*] Binary protection state of tun.ko

  
  	No RELRO       No Canary found   NX disabled  REL          No RPATH     No RUNPATH   Symbols


[*] Function strcat 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 strcat used 1 times tun.ko