[*] Binary protection state of veth.ko

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


[*] Function strcpy tear down of veth.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/veth.ko @ 0x8000910 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.veth_poll_controller ()          | void veth_poll_controller () {
    0x08000910 bx lr                             |     return;
                                                 | }
    ; 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/veth.ko @ 0x80017a8 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.veth_poll ()                                             | void veth_poll (int32_t arg1, uint32_t arg2) {
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_8h;
                                                                         |     int32_t var_ch;
                                                                         |     int32_t var_10h;
                                                                         |     int32_t var_14h;
                                                                         |     int32_t var_18h;
                                                                         |     int32_t var_1ch;
                                                                         |     int32_t var_20h;
                                                                         |     int32_t var_24h;
                                                                         |     int32_t var_28h;
                                                                         |     int32_t var_2ch;
                                                                         |     int32_t var_30h;
                                                                         |     int32_t var_34h;
                                                                         |     int32_t var_38h;
                                                                         |     int32_t var_3ch;
                                                                         |     int32_t var_40h;
                                                                         |     int32_t var_44h;
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_60h;
                                                                         |     int32_t var_64h;
                                                                         |     int32_t var_68h;
                                                                         |     int32_t var_6ch;
                                                                         |     int32_t var_70h;
                                                                         |     int32_t var_78h;
                                                                         |     int32_t var_7ch;
                                                                         |     int32_t var_bch;
                                                                         |     int32_t var_c4h;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x080017a8 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x080017ac stmdaeq r0, {r0, r2, r3, r4, r6, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r6, sl, fp, lr}");
    0x080017b0 stmdaeq r0, {r0, r2, r3, r4, r6, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r6, sl, fp, lr}");
    0x080017b4 sub sp, sp, 0xc4                                          |     
    0x080017b8 mov sl, r0                                                |     sl = r0;
    0x080017bc mov r0, r3                                                |     r0 = r3;
    0x080017c0 cmp r1, 0                                                 |     
    0x080017c4 mov r2, 0                                                 |     r2 = 0;
    0x080017c8 str r3, [sp, 0x3c]                                        |     var_3ch = r3;
    0x080017cc ldr r3, [r3, 0x10]                                        |     r3 = *((r3 + 0x10));
    0x080017d0 str r1, [sp, 0xc]                                         |     var_ch = r1;
    0x080017d4 orr r3, r3, 1                                             |     r3 |= 1;
    0x080017d8 str r2, [sp, 0xbc]                                        |     var_bch = r2;
    0x080017dc str r3, [r0, 0x10]                                        |     *((r0 + 0x10)) = r3;
                                                                         |     if (r1 <= 0) {
    0x080017e0 ble 0x80022fc                                             |         goto label_14;
                                                                         |     }
    0x080017e4 mov fp, r2                                                |     
    0x080017e8 str r2, [sp, 0x20]                                        |     var_20h = r2;
    0x080017ec str r2, [sp, 0x24]                                        |     var_24h = r2;
    0x080017f0 movw r2, 0x8e39                                           |     
                                                                         |     /* if there is a right shift of 1, then it's a division by 1/9 */
    0x080017f4 movt r2, 0x38e3                                           |     r2 = 0x38e38e39;
    0x080017f8 str fp, [sp, 0x18]                                        |     var_18h = fp;
    0x080017fc str r2, [sp, 0x38]                                        |     var_38h = r2;
    0x08001800 str fp, [sp, 0x1c]                                        |     var_1ch = fp;
    0x08001804 str fp, [sp, 0x28]                                        |     var_28h = fp;
    0x08001808 str fp, [sp, 0x2c]                                        |     var_2ch = fp;
    0x0800180c str fp, [sp, 4]                                           |     var_4h = fp;
    0x08001810 str fp, [sp, 8]                                           |     var_8h = fp;
    0x08001814 str fp, [sp, 0x10]                                        |     var_10h = fp;
    0x08001818 str fp, [sp, 0x14]                                        |     var_14h = fp;
                                                                         |     do {
    0x0800181c ldr r0, [sl, 0x148]                                       |         r0 = *((sl + 0x148));
    0x08001820 cmp r0, 0                                                 |         
                                                                         |         if (r0 == 0) {
    0x08001824 beq 0x8001d20                                             |             goto label_15;
                                                                         |         }
    0x08001828 ldr r2, [sl, 0x150]                                       |         r2 = *((sl + 0x150));
    0x0800182c ldr r3, [sl, 0x140]                                       |         r3 = *((sl + 0x140));
    0x08001830 ldr r7, [r2, r3, lsl 2]                                   |         offset_0 = r3 << 2;
                                                                         |         r7 = *((r2 + offset_0));
    0x08001834 cmp r7, 0                                                 |         
                                                                         |         if (r7 == 0) {
    0x08001838 beq 0x8001d20                                             |             goto label_15;
                                                                         |         }
    0x0800183c add r1, r3, 1                                             |         r1 = r3 + 1;
    0x08001840 ldr lr, [sl, 0x144]                                       |         
    0x08001844 cmp r0, r1                                                |         
    0x08001848 ldr r4, [sl, 0x14c]                                       |         r4 = *((sl + 0x14c));
    0x0800184c sub r5, r1, lr                                            |         r5 = r1 - lr;
                                                                         |         if (r0 <= r1) {
    0x08001850 movgt ip, 0                                               |             
                                                                         |         }
                                                                         |         if (r0 > r1) {
    0x08001854 movle ip, 1                                               |             
                                                                         |         }
    0x08001858 cmp r5, r4                                                |         
                                                                         |         if (r5 < r4) {
    0x0800185c orrge ip, ip, 1                                           |             
                                                                         |         }
    0x08001860 cmp ip, 0                                                 |         
                                                                         |         if (ip != 0) {
    0x08001864 bne 0x8001e3c                                             |             goto label_16;
                                                                         |         }
                                                                         | label_2:
    0x08001868 ands r4, r7, 1                                            |         r4 = r7 & 1;
    0x0800186c str r1, [sl, 0x140]                                       |         *((sl + 0x140)) = r1;
                                                                         |         if (r4 == r7) {
    0x08001870 beq 0x8001af4                                             |             goto label_17;
                                                                         |         }
    0x08001874 bic r4, r7, 1                                             |         r4 = BIT_MASK (r7, 1);
    0x08001878 ldr r3, [sp, 4]                                           |         r3 = var_4h;
    0x0800187c ldr r2, [sp, 8]                                           |         r2 = var_8h;
    0x08001880 ldrh r6, [r4, 4]                                          |         r6 = *((r4 + 4));
    0x08001884 ldr r8, [r4]                                              |         r8 = *(r4);
    0x08001888 adds r3, r6, r3                                           |         r3 = r6 + r3;
    0x0800188c ldrh sb, [r4, 6]                                          |         sb = *((r4 + 6));
    0x08001890 adc r2, r2, 0                                             |         __asm ("adc r2, r2, 0");
    0x08001894 str r3, [sp, 4]                                           |         var_4h = r3;
    0x08001898 str r2, [sp, 8]                                           |         var_8h = r2;
    0x0800189c stmdaeq r0, {r0, r2, r6, r7, r8, sb, fp, lr}              |         __asm ("stmdaeq r0, {r0, r2, r6, r7, r8, sb, fp, lr}");
    0x080018a0 ldr r5, [sl, 0xe4]                                        |         r5 = *((sl + 0xe4));
    0x080018a4 cmp r5, 0                                                 |         
                                                                         |         if (r5 == 0) {
    0x080018a8 beq 0x8001a70                                             |             goto label_18;
                                                                         |         }
    0x080018ac ldrh r1, [r4, 6]                                          |         r1 = *((r4 + 6));
    0x080018b0 mvn r2, 0x17                                              |         r2 = ~0x17;
    0x080018b4 ldr r3, [r4]                                              |         r3 = *(r4);
    0x080018b8 add r6, r5, 0x28                                          |         r6 = r5 + 0x28;
    0x080018bc sub r2, r2, r1                                            |         r2 -= r1;
    0x080018c0 add r3, r3, r2                                            |         r3 += r2;
    0x080018c4 str r3, [sp, 0x6c]                                        |         var_6ch = r3;
    0x080018c8 stmdaeq r0, {r0, r5, r6, sl, fp, lr}                      |         __asm ("stmdaeq r0, {r0, r5, r6, sl, fp, lr}");
    0x080018cc stmdaeq r0, {r0, r5, r6, sl, fp, lr}                      |         __asm ("stmdaeq r0, {r0, r5, r6, sl, fp, lr}");
    0x080018d0 add r2, sl, 0x180                                         |         r2 = sl + 0x180;
    0x080018d4 ldr r3, [r3]                                              |         r3 = *(r3);
    0x080018d8 cmp r3, 0                                                 |         
    0x080018dc ldr r3, [r4]                                              |         r3 = *(r4);
    0x080018e0 str r3, [sp, 0x60]                                        |         var_60h = r3;
    0x080018e4 ldrh r1, [r4, 4]                                          |         r1 = *((r4 + 4));
    0x080018e8 add r3, r3, r1                                            |         r3 += r1;
    0x080018ec str r3, [sp, 0x64]                                        |         var_64h = r3;
    0x080018f0 ldrb r1, [r4, 8]                                          |         r1 = *((r4 + 8));
    0x080018f4 ldr r3, [r4]                                              |         r3 = *(r4);
    0x080018f8 sub r3, r3, r1                                            |         r3 -= r1;
    0x080018fc str r3, [sp, 0x68]                                        |         var_68h = r3;
    0x08001900 ldr r3, [r4, 8]                                           |         r3 = *((r4 + 8));
    0x08001904 str r2, [sp, 0x70]                                        |         var_70h = r2;
    0x08001908 ubfx r3, r3, 8, 0x18                                      |         r3 = (r3 >> 8) & ((1 << 0x18) - 1);
    0x0800190c str r3, [sp, 0x78]                                        |         var_78h = r3;
                                                                         |         if (r3 > 0) {
    0x08001910 bgt 0x8002098                                             |             goto label_19;
                                                                         |         }
    0x08001914 add r7, sp, 0x60                                          |         r7 += var_60h;
    0x08001918 mov r1, r6                                                |         r1 = r6;
    0x0800191c ldr r3, [r5, 0x24]                                        |         r3 = *((r5 + 0x24));
    0x08001920 mov r0, r7                                                |         r0 = r7;
    0x08001924 blx r3                                                    |         r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x08001928 mov r6, r0                                                |         r6 = r0;
                                                                         | label_6:
    0x0800192c cmp r6, 4                                                 |         
                                                                         |         if (r6 > 4) {
                                                                         |             /* switch table (5 cases) at 0x8001938 */
    0x08001930 ldrls pc, [pc, r6, lsl 2]                                 |             offset_1 = r6 << 2;
                                                                         |             pc = *((pc + offset_1));
                                                                         |         }
    0x08001934 b 0x800194c                                               |         
    0x0800194c mov r0, r6                                                |         r0 = r6;
    0x08001950 stmdaeq r0, {r0, r2, r5, r6, sl, fp, lr}                  |         __asm ("stmdaeq r0, {r0, r2, r5, r6, sl, fp, lr}");
    0x08001954 ldr r3, [sp, 0x18]                                        |         r3 = var_18h;
    0x08001958 adds r3, r3, 1                                            |         r3++;
    0x0800195c str r3, [sp, 0x18]                                        |         var_18h = r3;
    0x08001960 ldr r3, [sp, 0x1c]                                        |         r3 = var_1ch;
    0x08001964 adc r3, r3, 0                                             |         __asm ("adc r3, r3, 0");
    0x08001968 str r3, [sp, 0x1c]                                        |         var_1ch = r3;
    0x0800196c stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}              |         __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}");
    0x08001970 mov r0, r4                                                |         r0 = r4;
    0x08001974 stmdaeq r0, {r0, r2, r3, r6, r7, r8, sb, fp, lr}          |         __asm ("stmdaeq r0, {r0, r2, r3, r6, r7, r8, sb, fp, lr}");
                                                                         | label_0:
    0x08001978 ldr r3, [sp, 0xc]                                         |         r3 = var_ch;
    0x0800197c add fp, fp, 1                                             |         
    0x08001980 cmp r3, fp                                                |         
    0x08001984 bne 0x800181c                                             |         
                                                                         |     } while (r3 != fp);
    0x08001988 mov r2, r3                                                |     r2 = r3;
    0x0800198c asr r1, r3, 0x1f                                          |     r1 = r3 >> 0x1f;
    0x08001990 b 0x8001d28                                               |     goto label_13;
                                                                         | label_18:
    0x08001a70 stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}");
    0x08001a74 ldr r1, [r4, 8]                                           |     r1 = *((r4 + 8));
    0x08001a78 ldrh r3, [r4, 6]                                          |     r3 = *((r4 + 6));
    0x08001a7c sub r0, r8, sb                                            |     r0 = r8 - sb;
    0x08001a80 sub r0, r0, 0x18                                          |     r0 -= 0x18;
    0x08001a84 add r3, r3, 0x18                                          |     r3 += 0x18;
    0x08001a88 lsr r1, r1, 8                                             |     r1 >>= 8;
    0x08001a8c sub r5, r3, r5                                            |     r5 = r3 - r5;
    0x08001a90 stmdaeq r0, {r0, r2, r3, r5, r6, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r3, r5, r6, sl, fp, lr}");
    0x08001a94 subs r7, r0, 0                                            |     r7 = r0 - 0;
                                                                         |     if (r7 == r0) {
    0x08001a98 beq 0x8002218                                             |         goto label_20;
                                                                         |     }
    0x08001a9c ldr r3, [r7, 0xa8]                                        |     r3 = *((r7 + 0xa8));
    0x08001aa0 mov r1, r6                                                |     r1 = r6;
    0x08001aa4 add r3, r3, r5                                            |     r3 += r5;
    0x08001aa8 str r3, [r7, 0xa8]                                        |     *((r7 + 0xa8)) = r3;
    0x08001aac ldr r3, [r7, 0x9c]                                        |     r3 = *((r7 + 0x9c));
    0x08001ab0 add r3, r3, r5                                            |     r3 += r5;
    0x08001ab4 str r3, [r7, 0x9c]                                        |     *((r7 + 0x9c)) = r3;
    0x08001ab8 stmdaeq r0, {r0, r4, r5, r6, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r4, r5, r6, sl, fp, lr}");
    0x08001abc ldr r3, [r4, 0xc]                                         |     r3 = *((r4 + 0xc));
    0x08001ac0 cmp r3, 2                                                 |     
                                                                         |     if (r3 == 2) {
    0x08001ac4 beq 0x800223c                                             |         goto label_21;
                                                                         |     }
                                                                         | label_11:
    0x08001ac8 mov r3, 0                                                 |     r3 = 0;
    0x08001acc str r3, [r4]                                              |     *(r4) = r3;
    0x08001ad0 str r3, [r4, 0x14]                                        |     *((r4 + 0x14)) = r3;
    0x08001ad4 mov r0, r7                                                |     r0 = r7;
    0x08001ad8 ldr r1, [sl, 0xe0]                                        |     r1 = *((sl + 0xe0));
    0x08001adc stmdaeq r0, {r0, r2, r4, r5, r6, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r4, r5, r6, sl, fp, lr}");
    0x08001ae0 strh r0, [r7, 0x94]                                       |     *((r7 + 0x94)) = r0;
                                                                         | label_5:
    0x08001ae4 mov r1, r7                                                |     r1 = r7;
    0x08001ae8 mov r0, sl                                                |     r0 = sl;
    0x08001aec stmdaeq r0, {r0, r3, r4, r5, r6, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r4, r5, r6, sl, fp, lr}");
    0x08001af0 b 0x8001978                                               |     goto label_0;
                                                                         | label_17:
    0x08001af4 ldr r2, [sp, 4]                                           |     r2 = var_4h;
    0x08001af8 ldr r3, [r7, 0x54]                                        |     r3 = *((r7 + 0x54));
    0x08001afc adds r3, r3, r2                                           |     r3 += r2;
    0x08001b00 ldr r2, [sp, 8]                                           |     r2 = var_8h;
    0x08001b04 str r3, [sp, 4]                                           |     var_4h = r3;
    0x08001b08 ldr r3, [r7, 0x4c]                                        |     r3 = *((r7 + 0x4c));
    0x08001b0c adc r2, r2, 0                                             |     __asm ("adc r2, r2, 0");
    0x08001b10 str r2, [sp, 8]                                           |     var_8h = r2;
    0x08001b14 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x08001b18 beq 0x8001e2c                                             |         goto label_22;
                                                                         |     }
    0x08001b1c mov r0, r7                                                |     r0 = r7;
    0x08001b20 blx r3                                                    |     uint32_t (*r3)(uint32_t) (r0);
    0x08001b24 str r4, [r7, 0x4c]                                        |     *((r7 + 0x4c)) = r4;
    0x08001b28 str r4, [r7, 0xc]                                         |     *((r7 + 0xc)) = r4;
                                                                         | label_1:
    0x08001b2c stmdaeq r0, {r0, r2, r6, r7, r8, sb, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r6, r7, r8, sb, fp, lr}");
    0x08001b30 ldr sb, [sl, 0xe4]                                        |     sb = *((sl + 0xe4));
    0x08001b34 cmp sb, 0                                                 |     
                                                                         |     if (sb == 0) {
    0x08001b38 beq 0x8002090                                             |         goto label_23;
                                                                         |     }
    0x08001b3c ldr r3, [r7, 0xa4]                                        |     r3 = *((r7 + 0xa4));
    0x08001b40 ldrh r5, [r7, 0x9a]                                       |     r5 = *((r7 + 0x9a));
    0x08001b44 ldr r2, [r7, 0xa8]                                        |     r2 = *((r7 + 0xa8));
    0x08001b48 ldr r6, [r7, 0x54]                                        |     r6 = *((r7 + 0x54));
    0x08001b4c add r5, r3, r5                                            |     r5 = r3 + r5;
    0x08001b50 ldr r1, [r7, 0xb0]                                        |     r1 = *((r7 + 0xb0));
    0x08001b54 sub r8, r2, r5                                            |     r8 = r2 - r5;
    0x08001b58 add r6, r8, r6                                            |     r6 = r8 + r6;
    0x08001b5c cmp r1, 1                                                 |     
                                                                         |     if (r1 == 1) {
    0x08001b60 beq 0x8001e80                                             |         goto label_24;
                                                                         |     }
                                                                         | label_3:
    0x08001b64 add r3, r6, 0x140                                         |     r3 = r6 + 0x140;
    0x08001b68 add r3, r3, 1                                             |     r3++;
    0x08001b6c bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08001b70 add r3, r3, 0x100                                         |     r3 += 0x100;
    0x08001b74 cmp r3, 0x1000                                            |     
                                                                         |     if (r3 > 0x1000) {
    0x08001b78 bhi 0x8001e10                                             |         goto label_25;
                                                                         |     }
    0x08001b7c mov r3, 0                                                 |     r3 = 0;
    0x08001b80 movw r0, 0x2a20                                           |     r0 = 0x2a20;
    0x08001b84 mov r2, r3                                                |     r2 = r3;
    0x08001b88 mov r1, r3                                                |     r1 = r3;
    0x08001b8c stmdaeq r0, {r0, r2, r3, r4, r5, r6, sl, fp, lr}          |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r5, r6, sl, fp, lr}");
    0x08001b90 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x08001b94 beq 0x8001e10                                             |         goto label_25;
                                                                         |     }
    0x08001b98 stmdaeq r0, {r0, r7, sl, fp, lr}                          |     __asm ("stmdaeq r0, {r0, r7, sl, fp, lr}");
    0x08001b9c stmdaeq r0, {r0, r7, sl, fp, lr}                          |     __asm ("stmdaeq r0, {r0, r7, sl, fp, lr}");
    0x08001ba0 rsb r1, r8, 0                                             |     r1 = r8 - ;
    0x08001ba4 movw r4, 0x102                                            |     r4 = 0x102;
    0x08001ba8 ldr r3, [r3]                                              |     r3 = *(r3);
    0x08001bac sub r0, r0, r3                                            |     r0 -= r3;
    0x08001bb0 stmdaeq r0, {r0, r2, r7, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r2, r7, sl, fp, lr}");
    0x08001bb4 stmdaeq r0, {r0, r2, r7, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r2, r7, sl, fp, lr}");
    0x08001bb8 asr r0, r0, 2                                             |     r0 >>= 2;
    0x08001bbc ldr r5, [r3]                                              |     r5 = *(r3);
    0x08001bc0 ldr r3, [sp, 0x38]                                        |     r3 = var_38h;
    0x08001bc4 mla r5, r3, r0, r5                                        |     __asm ("mla r5, r3, r0, r5");
    0x08001bc8 mov r3, r6                                                |     r3 = r6;
    0x08001bcc mov r0, r7                                                |     r0 = r7;
    0x08001bd0 lsl r5, r5, 0xc                                           |     r5 <<= 0xc;
    0x08001bd4 sub r5, r5, 0x81000000                                    |     r5 -= 0x81000000;
    0x08001bd8 add r2, r5, r4                                            |     r2 = r5 + r4;
    0x08001bdc stmdaeq r0, {r0, r3, r7, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r3, r7, sl, fp, lr}");
    0x08001be0 cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x08001be4 bne 0x8001e08                                             |         goto label_26;
                                                                         |     }
    0x08001be8 ldr r2, [r7, 0x54]                                        |     r2 = *((r7 + 0x54));
    0x08001bec mov r0, r5                                                |     r0 = r5;
    0x08001bf0 mov r1, 0x1000                                            |     r1 = 0x1000;
    0x08001bf4 add r3, r8, r4                                            |     r3 = r8 + r4;
    0x08001bf8 str r2, [sp, 0x30]                                        |     var_30h = r2;
    0x08001bfc str r3, [sp, 0x34]                                        |     var_34h = r3;
    0x08001c00 stmdaeq r0, {r0, r2, r3, r5, r6, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r3, r5, r6, sl, fp, lr}");
    0x08001c04 ldrd r2, r3, [sp, 0x30]                                   |     __asm ("ldrd r2, r3, [var_30h]");
    0x08001c08 subs r4, r0, 0                                            |     r4 = r0 - 0;
                                                                         |     if (r4 == r0) {
    0x08001c0c beq 0x8001e08                                             |         goto label_26;
                                                                         |     }
    0x08001c10 mov r1, r2                                                |     r1 = r2;
    0x08001c14 ldr r2, [r4, 0xa8]                                        |     r2 = *((r4 + 0xa8));
    0x08001c18 add r2, r2, r3                                            |     r2 += r3;
    0x08001c1c str r2, [r4, 0xa8]                                        |     *((r4 + 0xa8)) = r2;
    0x08001c20 ldr r2, [r4, 0x9c]                                        |     r2 = *((r4 + 0x9c));
    0x08001c24 add r3, r2, r3                                            |     r3 = r2 + r3;
    0x08001c28 str r3, [r4, 0x9c]                                        |     *((r4 + 0x9c)) = r3;
    0x08001c2c stmdaeq r0, {r0, r4, r5, r6, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r4, r5, r6, sl, fp, lr}");
    0x08001c30 mov r1, r7                                                |     r1 = r7;
    0x08001c34 mov r0, r4                                                |     r0 = r4;
    0x08001c38 stmdaeq r0, {r0, r2, r3, r7, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r2, r3, r7, sl, fp, lr}");
    0x08001c3c ldr r3, [r4, 0xa4]                                        |     r3 = *((r4 + 0xa4));
    0x08001c40 ldr r1, [r4, 0xa8]                                        |     r1 = *((r4 + 0xa8));
    0x08001c44 mov r0, r4                                                |     r0 = r4;
    0x08001c48 sub r1, r1, r3                                            |     r1 -= r3;
    0x08001c4c ldrd r2, r3, [r7, 0xa4]                                   |     __asm ("ldrd r2, r3, [r7, 0xa4]");
    0x08001c50 sub r3, r3, r2                                            |     r3 -= r2;
    0x08001c54 sub r1, r1, r3                                            |     r1 -= r3;
    0x08001c58 stmdaeq r0, {r0, r4, r7, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r4, r7, sl, fp, lr}");
    0x08001c5c mov r0, r7                                                |     r0 = r7;
    0x08001c60 stmdaeq r0, {r0, r4, r6, r7, r8, sb, fp, lr}              |     __asm ("stmdaeq r0, {r0, r4, r6, r7, r8, sb, fp, lr}");
    0x08001c64 ldr r3, [r4, 0xa4]                                        |     r3 = *((r4 + 0xa4));
    0x08001c68 ldrh r5, [r4, 0x9a]                                       |     r5 = *((r4 + 0x9a));
    0x08001c6c add r5, r3, r5                                            |     r5 = r3 + r5;
                                                                         | label_4:
    0x08001c70 add r2, sl, 0x180                                         |     r2 = sl + 0x180;
    0x08001c74 str r2, [sp, 0x70]                                        |     var_70h = r2;
    0x08001c78 stmdaeq r0, {r0, r5, r6, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r5, r6, sl, fp, lr}");
    0x08001c7c stmdaeq r0, {r0, r5, r6, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r5, r6, sl, fp, lr}");
    0x08001c80 str r3, [sp, 0x6c]                                        |     var_6ch = r3;
    0x08001c84 add r6, r5, r6                                            |     r6 = r5 + r6;
    0x08001c88 str r5, [sp, 0x60]                                        |     var_60h = r5;
    0x08001c8c ldr r2, [r2]                                              |     r2 = *(r2);
    0x08001c90 str r6, [sp, 0x64]                                        |     var_64h = r6;
    0x08001c94 str r5, [sp, 0x68]                                        |     var_68h = r5;
    0x08001c98 cmp r2, 0                                                 |     
    0x08001c9c ldr r2, [r4, 0xa0]                                        |     r2 = *((r4 + 0xa0));
    0x08001ca0 sub r3, r2, r3                                            |     r3 = r2 - r3;
    0x08001ca4 add r3, r3, 0x100                                         |     r3 += 0x100;
    0x08001ca8 str r3, [sp, 0x78]                                        |     var_78h = r3;
    0x08001cac add r3, sb, 0x28                                          |     r3 = sb + 0x28;
                                                                         |     if (r2 > 0) {
    0x08001cb0 bgt 0x800224c                                             |         goto label_27;
                                                                         |     }
    0x08001cb4 add r7, sp, 0x60                                          |     r7 += var_60h;
    0x08001cb8 mov r1, r3                                                |     r1 = r3;
    0x08001cbc mov r0, r7                                                |     r0 = r7;
    0x08001cc0 ldr r3, [sb, 0x24]                                        |     r3 = *((sb + 0x24));
    0x08001cc4 blx r3                                                    |     r0 = uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x08001cc8 mov r3, r0                                                |     r3 = r0;
                                                                         | label_12:
    0x08001ccc cmp r3, 4                                                 |     
                                                                         |     if (r3 > 4) {
                                                                         |         /* switch table (5 cases) at 0x8001cd8 */
    0x08001cd0 ldrls pc, [pc, r3, lsl 2]                                 |         offset_2 = r3 << 2;
                                                                         |         pc = *((pc + offset_2));
                                                                         |     }
    0x08001cd4 b 0x8001cec                                               |     
    0x08001cec mov r0, r3                                                |     r0 = r3;
    0x08001cf0 stmdaeq r0, {r0, r2, r5, r6, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r2, r5, r6, sl, fp, lr}");
    0x08001cf4 ldr r3, [sp, 0x18]                                        |     r3 = var_18h;
    0x08001cf8 mov r7, r4                                                |     r7 = r4;
    0x08001cfc adds r3, r3, 1                                            |     r3++;
    0x08001d00 str r3, [sp, 0x18]                                        |     var_18h = r3;
    0x08001d04 ldr r3, [sp, 0x1c]                                        |     r3 = var_1ch;
    0x08001d08 adc r3, r3, 0                                             |     __asm ("adc r3, r3, 0");
    0x08001d0c str r3, [sp, 0x1c]                                        |     var_1ch = r3;
                                                                         |     do {
    0x08001d10 stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}              |         __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}");
    0x08001d14 mov r0, r7                                                |         r0 = r7;
    0x08001d18 stmdaeq r0, {r0, r4, r6, r7, r8, sb, fp, lr}              |         __asm ("stmdaeq r0, {r0, r4, r6, r7, r8, sb, fp, lr}");
    0x08001d1c b 0x8001978                                               |         goto label_0;
                                                                         | label_15:
    0x08001d20 mov r2, fp                                                |         r2 = fp;
    0x08001d24 asr r1, fp, 0x1f                                          |         r1 = fp >> 0x1f;
                                                                         | label_13:
    0x08001d28 ldr r3, [sl, 0x108]                                       |         r3 = *((sl + 0x108));
    0x08001d2c ldr r0, [sp, 0x28]                                        |         r0 = var_28h;
    0x08001d30 ldr lr, [sp, 4]                                           |         lr = var_4h;
    0x08001d34 adds r3, r3, r0                                           |         r3 += r0;
    0x08001d38 ldr r0, [sp, 0x2c]                                        |         r0 = var_2ch;
    0x08001d3c str r3, [sl, 0x108]                                       |         *((sl + 0x108)) = r3;
    0x08001d40 ldr r3, [sl, 0x10c]                                       |         r3 = *((sl + 0x10c));
    0x08001d44 ldr ip, [sp, 0x18]                                        |         ip = var_18h;
    0x08001d48 adc r3, r0, r3                                            |         __asm ("adc r3, r0, r3");
    0x08001d4c str r3, [sl, 0x10c]                                       |         *((sl + 0x10c)) = r3;
    0x08001d50 ldr r3, [sl, 0x100]                                       |         r3 = *((sl + 0x100));
    0x08001d54 ldr r0, [sp, 0x10]                                        |         r0 = var_10h;
    0x08001d58 adds r3, r3, lr                                           |         r3 += lr;
    0x08001d5c ldr lr, [sl, 0x104]                                       |         
    0x08001d60 str r3, [sl, 0x100]                                       |         *((sl + 0x100)) = r3;
    0x08001d64 ldr r3, [sp, 8]                                           |         r3 = var_8h;
    0x08001d68 adc r3, r3, lr                                            |         __asm ("adc r3, r3, lr");
    0x08001d6c str r3, [sl, 0x104]                                       |         *((sl + 0x104)) = r3;
    0x08001d70 ldr r3, [sl, 0x110]                                       |         r3 = *((sl + 0x110));
    0x08001d74 adds r3, r3, ip                                           |         r3 += ip;
    0x08001d78 ldr ip, [sl, 0x114]                                       |         ip = *((sl + 0x114));
    0x08001d7c str r3, [sl, 0x110]                                       |         *((sl + 0x110)) = r3;
    0x08001d80 ldr r3, [sp, 0x1c]                                        |         r3 = var_1ch;
    0x08001d84 adc r3, r3, ip                                            |         __asm ("adc r3, r3, ip");
    0x08001d88 str r3, [sl, 0x114]                                       |         *((sl + 0x114)) = r3;
    0x08001d8c ldr r3, [sl, 0xf0]                                        |         r3 = *((sl + 0xf0));
    0x08001d90 adds r3, r3, r0                                           |         r3 += r0;
    0x08001d94 ldr r0, [sp, 0x14]                                        |         r0 = var_14h;
    0x08001d98 str r3, [sl, 0xf0]                                        |         *((sl + 0xf0)) = r3;
    0x08001d9c ldr r3, [sl, 0xf4]                                        |         r3 = *((sl + 0xf4));
    0x08001da0 adc r3, r0, r3                                            |         __asm ("adc r3, r0, r3");
    0x08001da4 str r3, [sl, 0xf4]                                        |         *((sl + 0xf4)) = r3;
    0x08001da8 ldr r3, [sl, 0xf8]                                        |         r3 = *((sl + 0xf8));
    0x08001dac adds r3, r3, r2                                           |         r3 += r2;
    0x08001db0 str r3, [sl, 0xf8]                                        |         *((sl + 0xf8)) = r3;
    0x08001db4 ldr r3, [sl, 0xfc]                                        |         r3 = *((sl + 0xfc));
    0x08001db8 adc r1, r1, r3                                            |         __asm ("adc r1, r1, r3");
    0x08001dbc ldr r3, [sp, 0xc]                                         |         r3 = var_ch;
    0x08001dc0 str r1, [sl, 0xfc]                                        |         *((sl + 0xfc)) = r1;
    0x08001dc4 cmp r3, fp                                                |         
                                                                         |         if (r3 > fp) {
    0x08001dc8 bgt 0x8002164                                             |             goto label_28;
                                                                         |         }
                                                                         | label_9:
    0x08001dcc ldr r3, [sp, 0x20]                                        |         r3 = var_20h;
    0x08001dd0 ldr r2, [sp, 0x24]                                        |         r2 = var_24h;
    0x08001dd4 orrs r3, r3, r2                                           |         r3 |= r2;
                                                                         |         if (r3 != r3) {
    0x08001dd8 bne 0x8002120                                             |             goto label_29;
                                                                         |         }
                                                                         | label_8:
    0x08001ddc ldr r3, [sp, 0x28]                                        |         r3 = var_28h;
    0x08001de0 ldr r2, [sp, 0x2c]                                        |         r2 = var_2ch;
    0x08001de4 orrs r3, r3, r2                                           |         r3 |= r2;
                                                                         |         if (r3 != r3) {
    0x08001de8 bne 0x8002118                                             |             goto label_30;
                                                                         |         }
                                                                         | label_7:
    0x08001dec ldr r2, [sp, 0x3c]                                        |         r2 = var_3ch;
    0x08001df0 mov r0, fp                                                |         r0 = fp;
    0x08001df4 ldr r3, [r2, 0x10]                                        |         r3 = *((r2 + 0x10));
    0x08001df8 bic r3, r3, 1                                             |         r3 = BIT_MASK (r3, 1);
    0x08001dfc str r3, [r2, 0x10]                                        |         *((r2 + 0x10)) = r3;
    0x08001e00 add sp, sp, 0xc4                                          |         
    0x08001e04 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
                                                                         | label_26:
    0x08001e08 mov r0, r5                                                |         r0 = r5;
    0x08001e0c stmdaeq r0, {r0, r2, r4, r7, sl, fp, lr}                  |         __asm ("stmdaeq r0, {r0, r2, r4, r7, sl, fp, lr}");
                                                                         | label_25:
    0x08001e10 ldr r3, [sp, 0x10]                                        |         r3 = var_10h;
    0x08001e14 adds r3, r3, 1                                            |         r3++;
    0x08001e18 str r3, [sp, 0x10]                                        |         var_10h = r3;
    0x08001e1c ldr r3, [sp, 0x14]                                        |         r3 = var_14h;
    0x08001e20 adc r3, r3, 0                                             |         __asm ("adc r3, r3, 0");
    0x08001e24 str r3, [sp, 0x14]                                        |         var_14h = r3;
    0x08001e28 b 0x8001d10                                               |         
                                                                         |     } while (1);
                                                                         | label_22:
    0x08001e2c ldr r3, [r7, 0xc]                                         |     r3 = *((r7 + 0xc));
    0x08001e30 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x08001e34 beq 0x8001b2c                                             |         goto label_1;
                                                                         |     }
    0x08001e38 udf 0x12                                                  |     __asm ("udf 0x12");
                                                                         | label_16:
    0x08001e3c cmp r3, lr                                                |     
                                                                         |     if (r3 >= lr) {
    0x08001e40 bge 0x8001e4c                                             |         goto label_31;
                                                                         |     }
    0x08001e44 b 0x8001e68                                               |     goto label_32;
                                                                         |     do {
    0x08001e48 ldr r2, [sl, 0x150]                                       |         r2 = *((sl + 0x150));
                                                                         | label_31:
    0x08001e4c mov r0, 0                                                 |         r0 = 0;
    0x08001e50 str r0, [r2, r3, lsl 2]                                   |         offset_3 = r3 << 2;
                                                                         |         *((r2 + offset_3)) = r0;
    0x08001e54 sub r3, r3, 1                                             |         r3--;
    0x08001e58 ldr r2, [sl, 0x144]                                       |         r2 = *((sl + 0x144));
    0x08001e5c cmp r2, r3                                                |         
    0x08001e60 ble 0x8001e48                                             |         
                                                                         |     } while (r2 <= r3);
    0x08001e64 ldr r0, [sl, 0x148]                                       |     r0 = *((sl + 0x148));
                                                                         | label_32:
    0x08001e68 cmp r1, r0                                                |     
                                                                         |     if (r1 >= r0) {
    0x08001e6c strlt r1, [sl, 0x144]                                     |         *((sl + 0x144)) = r1;
                                                                         |     }
                                                                         |     if (r1 < r0) {
    0x08001e70 movge r3, 0                                               |         r3 = 0;
                                                                         |     }
                                                                         |     if (r1 < r0) {
    0x08001e74 movge r1, r3                                              |         r1 = r3;
                                                                         |     }
                                                                         |     if (r1 < r0) {
    0x08001e78 strge r3, [sl, 0x144]                                     |         *((sl + 0x144)) = r3;
                                                                         |     }
    0x08001e7c b 0x8001868                                               |     goto label_2;
                                                                         | label_24:
    0x08001e80 ldrb r1, [r7, 0x62]                                       |     r1 = *((r7 + 0x62));
    0x08001e84 tst r1, 0x20                                              |     
                                                                         |     if ((r1 & 0x20) == 0) {
    0x08001e88 beq 0x8001b64                                             |         goto label_3;
                                                                         |     }
    0x08001e8c tst r1, 1                                                 |     
                                                                         |     if ((r1 & 1) == 0) {
    0x08001e90 beq 0x8001ea8                                             |         goto label_33;
                                                                         |     }
    0x08001e94 ldr r1, [r7, 0xa0]                                        |     r1 = *((r7 + 0xa0));
    0x08001e98 ldr r1, [r1, 0x20]                                        |     r1 = *((r1 + 0x20));
    0x08001e9c uxth r1, r1                                               |     r1 = (int16_t) r1;
    0x08001ea0 cmp r1, 1                                                 |     
                                                                         |     if (r1 != 1) {
    0x08001ea4 bne 0x8001b64                                             |         goto label_3;
                                                                         |     }
                                                                         | label_33:
    0x08001ea8 ldr r1, [r7, 0x58]                                        |     r1 = *((r7 + 0x58));
    0x08001eac sub r2, r2, r3                                            |     r2 -= r3;
    0x08001eb0 sub r2, r2, r8                                            |     r2 -= r8;
    0x08001eb4 subs r1, r1, 0                                            |     
                                                                         |     if (r1 == r1) {
    0x08001eb8 movne r1, 1                                               |         r1 = 1;
                                                                         |     }
    0x08001ebc cmp r2, 0xff                                              |     
                                                                         |     if (r2 > 0xff) {
    0x08001ec0 orrls r1, r1, 1                                           |         r1 |= 1;
                                                                         |     }
    0x08001ec4 cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x08001ec8 moveq r4, r7                                              |         r4 = r7;
                                                                         |         goto label_34;
                                                                         |     }
                                                                         |     if (r1 != 0) {
                                                                         | label_34:
    0x08001ecc bne 0x8001b64                                             |         goto label_3;
                                                                         |     }
    0x08001ed0 b 0x8001c70                                               |     goto label_4;
                                                                         | label_23:
    0x08002090 stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}");
    0x08002094 b 0x8001ae4                                               |     goto label_5;
                                                                         | label_19:
    0x08002098 add r7, sp, 0x60                                          |     r7 += var_60h;
    0x0800209c stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}");
    0x080020a0 mov r3, r1                                                |     r3 = r1;
    0x080020a4 str r0, [sp, 0x40]                                        |     var_40h = r0;
    0x080020a8 mov r1, r6                                                |     r1 = r6;
    0x080020ac str r3, [sp, 0x30]                                        |     var_30h = r3;
    0x080020b0 mov r0, r7                                                |     r0 = r7;
    0x080020b4 ldr r3, [r5, 0x24]                                        |     r3 = *((r5 + 0x24));
    0x080020b8 blx r3                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t) (r0, r1, r3);
    0x080020bc ldr r3, [r5, 0x1c]                                        |     r3 = *((r5 + 0x1c));
    0x080020c0 mov r6, r0                                                |     r6 = r0;
    0x080020c4 ldr r3, [r3, 0x198]                                       |     r3 = *((r3 + 0x198));
    0x080020c8 str r3, [sp, 0x34]                                        |     var_34h = r3;
    0x080020cc ldr r1, [r3]                                              |     r1 = *(r3);
    0x080020d0 adds r1, r1, 1                                            |     r1++;
    0x080020d4 str r1, [r3]                                              |     *(r3) = r1;
    0x080020d8 ldr r1, [r3, 4]                                           |     r1 = *((r3 + 4));
    0x080020dc adc r1, r1, 0                                             |     __asm ("adc r1, r1, 0");
    0x080020e0 str r1, [r3, 4]                                           |     *((r3 + 4)) = r1;
    0x080020e4 stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}");
    0x080020e8 ldr r3, [sp, 0x34]                                        |     r3 = var_34h;
    0x080020ec ldr r2, [sp, 0x40]                                        |     r2 = var_40h;
    0x080020f0 ldr ip, [r3, 8]                                           |     ip = *((r3 + 8));
    0x080020f4 adds r0, r0, ip                                           |     r0 += ip;
    0x080020f8 ldr ip, [r3, 0xc]                                         |     ip = *((r3 + 0xc));
    0x080020fc adc ip, ip, r1                                            |     __asm ("adc ip, ip, r1");
    0x08002100 subs r0, r0, r2                                           |     r0 -= r2;
    0x08002104 ldr r2, [sp, 0x30]                                        |     r2 = var_30h;
    0x08002108 str r0, [r3, 8]                                           |     *((r3 + 8)) = r0;
    0x0800210c sbc ip, ip, r2                                            |     __asm ("sbc ip, ip, r2");
    0x08002110 str ip, [r3, 0xc]                                         |     *((r3 + 0xc)) = ip;
    0x08002114 b 0x800192c                                               |     goto label_6;
                                                                         | label_30:
    0x08002118 stmdaeq r0, {r0, r2, r3, r4, r7, sl, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r7, sl, fp, lr}");
    0x0800211c b 0x8001dec                                               |     goto label_7;
                                                                         | label_29:
    0x08002120 ldr r4, [sl, 0xe0]                                        |     r4 = *((sl + 0xe0));
    0x08002124 stmdaeq r0, {r0, r2, r6, r7, r8, sb, fp, lr}              |     __asm ("stmdaeq r0, {r0, r2, r6, r7, r8, sb, fp, lr}");
    0x08002128 mov r0, sl                                                |     r0 = sl;
    0x0800212c add r1, sp, 0x7c                                          |     r1 += var_7ch;
    0x08002130 bl 0x8000d84                                              |     veth_xdp_flush_bq ();
    0x08002134 ldr r3, [r4, 0x540]                                       |     r3 = *((r4 + 0x540));
    0x08002138 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0800213c beq 0x800215c                                             |         
    0x08002140 ldr r4, [r3, 0x554]                                       |         r4 = *((r3 + 0x554));
    0x08002144 ldr r3, [r4, 0xe4]                                        |         r3 = *((r4 + 0xe4));
    0x08002148 cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x0800214c beq 0x800215c                                             |             goto label_10;
                                                                         |         }
    0x08002150 ldrb r3, [r4, 0x138]                                      |         r3 = *((r4 + 0x138));
    0x08002154 cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x08002158 beq 0x80021f4                                             |             goto label_35;
                                                                         |         }
                                                                         |     }
                                                                         | label_10:
    0x0800215c stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}              |     __asm ("stmdaeq r0, {r0, r3, r6, r7, r8, sb, fp, lr}");
    0x08002160 b 0x8001ddc                                               |     goto label_8;
                                                                         | label_28:
    0x08002164 mov r1, fp                                                |     r1 = fp;
    0x08002168 mov r0, sl                                                |     r0 = sl;
    0x0800216c stmdaeq r0, {r0, r5, r7, sl, fp, lr}                      |     __asm ("stmdaeq r0, {r0, r5, r7, sl, fp, lr}");
    0x08002170 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x08002174 beq 0x8001dcc                                             |         goto label_9;
                                                                         |     }
    0x08002178 mov r3, 0                                                 |     r3 = 0;
    0x0800217c strb r3, [sl, 0x138]                                      |     *((sl + 0x138)) = r3;
    0x08002180 ldr r3, [sl, 0x148]                                       |     r3 = *((sl + 0x148));
    0x08002184 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x08002188 beq 0x8001dcc                                             |         goto label_9;
                                                                         |     }
    0x0800218c ldr r2, [sl, 0x140]                                       |     r2 = *((sl + 0x140));
    0x08002190 ldr r3, [sl, 0x150]                                       |     r3 = *((sl + 0x150));
    0x08002194 ldr r3, [r3, r2, lsl 2]                                   |     offset_4 = r2 << 2;
                                                                         |     r3 = *((r3 + offset_4));
    0x08002198 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0800219c beq 0x8001dcc                                             |         goto label_9;
                                                                         |     }
    0x080021a0 mov r3, 1                                                 |     r3 = 1;
    0x080021a4 mov r0, sl                                                |     r0 = sl;
    0x080021a8 strb r3, [sl, 0x138]                                      |     *((sl + 0x138)) = r3;
    0x080021ac stmdaeq r0, {r0, r2, sl, fp, lr}                          |     __asm ("stmdaeq r0, {r0, r2, sl, fp, lr}");
    0x080021b0 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x080021b4 beq 0x8001dcc                                             |         goto label_9;
                                                                         |     }
    0x080021b8 mov r0, sl                                                |     r0 = sl;
    0x080021bc stmdaeq r0, {r0, r3, sl, fp, lr}                          |     __asm ("stmdaeq r0, {r0, r3, sl, fp, lr}");
    0x080021c0 b 0x8001dcc                                               |     goto label_9;
                                                                         | label_35:
    0x080021f4 mov r3, 1                                                 |     r3 = 1;
    0x080021f8 mov r0, r4                                                |     r0 = r4;
    0x080021fc strb r3, [r4, 0x138]                                      |     *((r4 + 0x138)) = r3;
    0x08002200 stmdaeq r0, {r0, r2, sl, fp, lr}                          |     __asm ("stmdaeq r0, {r0, r2, sl, fp, lr}");
    0x08002204 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x08002208 beq 0x800215c                                             |         goto label_10;
                                                                         |     }
    0x0800220c mov r0, r4                                                |     r0 = r4;
    0x08002210 stmdaeq r0, {r0, r3, sl, fp, lr}                          |     __asm ("stmdaeq r0, {r0, r3, sl, fp, lr}");
    0x08002214 b 0x800215c                                               |     goto label_10;
                                                                         | label_20:
    0x08002218 mov r0, r4                                                |     r0 = r4;
    0x0800221c stmdaeq r0, {r0, r2, r3, r6, r7, r8, sb, fp, lr}          |     __asm ("stmdaeq r0, {r0, r2, r3, r6, r7, r8, sb, fp, lr}");
    0x08002220 ldr r3, [sp, 0x10]                                        |     r3 = var_10h;
    0x08002224 adds r3, r3, 1                                            |     r3++;
    0x08002228 str r3, [sp, 0x10]                                        |     var_10h = r3;
    0x0800222c ldr r3, [sp, 0x14]                                        |     r3 = var_14h;
    0x08002230 adc r3, r3, 0                                             |     __asm ("adc r3, r3, 0");
    0x08002234 str r3, [sp, 0x14]                                        |     var_14h = r3;
    0x08002238 b 0x8001978                                               |     goto label_0;
                                                                         | label_21:
    0x0800223c mov r1, r4                                                |     r1 = r4;
    0x08002240 ldr r0, [r1], 0xc                                         |     r0 = *(r1);
                                                                         |     r1 += 0xc;
    0x08002244 stmdaeq r0, {r0, r2, r5, r7, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r2, r5, r7, sl, fp, lr}");
    0x08002248 b 0x8001ac8                                               |     goto label_11;
                                                                         | label_27:
    0x0800224c add r7, sp, 0x60                                          |     r7 += var_60h;
    0x08002250 str r3, [sp, 0x30]                                        |     var_30h = r3;
    0x08002254 stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}");
    0x08002258 ldr r3, [sp, 0x30]                                        |     r3 = var_30h;
    0x0800225c mov r2, r1                                                |     r2 = r1;
    0x08002260 str r0, [sp, 0x30]                                        |     var_30h = r0;
    0x08002264 mov r1, r3                                                |     r1 = r3;
    0x08002268 mov r0, r7                                                |     r0 = r7;
    0x0800226c ldr r3, [sb, 0x24]                                        |     r3 = *((sb + 0x24));
    0x08002270 str r2, [sp, 0x34]                                        |     var_34h = r2;
    0x08002274 blx r3                                                    |     uint32_t (*r3)(uint32_t, uint32_t, uint32_t, uint32_t) (r0, r1, r2, r3);
    0x08002278 ldr r2, [sb, 0x1c]                                        |     r2 = *((sb + 0x1c));
    0x0800227c str r0, [sp, 0x44]                                        |     var_44h = r0;
    0x08002280 ldr r2, [r2, 0x198]                                       |     r2 = *((r2 + 0x198));
    0x08002284 str r2, [sp, 0x40]                                        |     var_40h = r2;
    0x08002288 ldr r1, [r2]                                              |     r1 = *(r2);
    0x0800228c adds r1, r1, 1                                            |     r1++;
    0x08002290 str r1, [r2]                                              |     *(r2) = r1;
    0x08002294 ldr r1, [r2, 4]                                           |     r1 = *((r2 + 4));
    0x08002298 adc r1, r1, 0                                             |     __asm ("adc r1, r1, 0");
    0x0800229c str r1, [r2, 4]                                           |     *((r2 + 4)) = r1;
    0x080022a0 stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}                  |     __asm ("stmdaeq r0, {r0, r3, r4, r7, sl, fp, lr}");
    0x080022a4 ldr r2, [sp, 0x40]                                        |     r2 = var_40h;
    0x080022a8 ldr r3, [sp, 0x30]                                        |     r3 = var_30h;
    0x080022ac ldr ip, [r2, 8]                                           |     ip = *((r2 + 8));
    0x080022b0 adds r0, r0, ip                                           |     r0 += ip;
    0x080022b4 ldr ip, [r2, 0xc]                                         |     ip = *((r2 + 0xc));
    0x080022b8 adc r1, ip, r1                                            |     __asm ("adc r1, ip, r1");
    0x080022bc subs r0, r0, r3                                           |     r0 -= r3;
    0x080022c0 ldr r3, [sp, 0x34]                                        |     r3 = var_34h;
    0x080022c4 sbc r1, r1, r3                                            |     __asm ("sbc r1, r1, r3");
    0x080022c8 ldr r3, [sp, 0x44]                                        |     r3 = var_44h;
    0x080022cc strd r0, r1, [r2, 8]                                      |     __asm ("strd r0, r1, [r2, 8]");
    0x080022d0 b 0x8001ccc                                               |     goto label_12;
                                                                         | label_14:
    0x080022fc mov r1, r2                                                |     r1 = r2;
    0x08002300 mov fp, r2                                                |     
    0x08002304 str r2, [sp, 0x20]                                        |     var_20h = r2;
    0x08002308 str r2, [sp, 0x24]                                        |     var_24h = r2;
    0x0800230c str r2, [sp, 0x18]                                        |     var_18h = r2;
    0x08002310 str r2, [sp, 0x1c]                                        |     var_1ch = r2;
    0x08002314 str r2, [sp, 0x28]                                        |     var_28h = r2;
    0x08002318 str r2, [sp, 0x2c]                                        |     var_2ch = r2;
    0x0800231c str r2, [sp, 4]                                           |     var_4h = r2;
    0x08002320 str r2, [sp, 8]                                           |     var_8h = r2;
    0x08002324 str r2, [sp, 0x10]                                        |     var_10h = r2;
    0x08002328 str r2, [sp, 0x14]                                        |     var_14h = r2;
    0x0800232c b 0x8001d28                                               |     goto label_13;
                                                                         | }

[*] Function strcpy used 1 times veth.ko