[*] Binary protection state of vxlan.ko

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


[*] Function strcat tear down of vxlan.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/vxlan.ko @ 0x8005428 */
                                                                                 | #include <stdint.h>
                                                                                 |  
    ; (fcn) sym.encap_bypass_if_local ()                                         | void encap_bypass_if_local (int32_t arg_20h, int32_t arg_24h, int32_t arg_28h, int32_t arg_2ch, int32_t arg_30h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_8h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08005428 push {r4, r5, r6, r7, r8, lr}                                     |     
    0x0800542c mov r4, r3                                                        |     r4 = r3;
    0x08005430 sub sp, sp, 8                                                     |     
    0x08005434 ldr r3, [sp, 0x30]                                                |     r3 = *(arg_30h);
    0x08005438 ldrh r8, [sp, 0x20]                                               |     r8 = *(arg_20h);
    0x0800543c cmp r3, 0                                                         |     
    0x08005440 blt 0x8005450                                                     |     
                                                                                 |     while ((r3 & 0x30000000) != 0) {
    0x08005444 mov r0, 0                                                         |         r0 = 0;
                                                                                 | label_0:
    0x08005448 add sp, sp, 8                                                     |         
    0x0800544c pop {r4, r5, r6, r7, r8, pc}                                      |         
    0x08005450 tst r3, 0x30000000                                                |         
    0x08005454 bne 0x8005444                                                     |         
                                                                                 |     }
    0x08005458 mov r6, r0                                                        |     r6 = r0;
    0x0800545c ldr r0, [sp, 0x2c]                                                |     r0 = *(arg_2ch);
    0x08005460 mov r5, r2                                                        |     r5 = r2;
    0x08005464 mov r7, r1                                                        |     r7 = r1;
    0x08005468 stmdaeq r0, {r0, r2, r3, r6, r7, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r0, r2, r3, r6, r7, r8, sb, sl, sp, lr, pc}");
    0x0800546c ldr r3, [sp, 0x24]                                                |     r3 = *(arg_24h);
    0x08005470 ldrh r1, [r4]                                                     |     r1 = *(r4);
    0x08005474 mov r2, r8                                                        |     r2 = r8;
    0x08005478 str r3, [sp]                                                      |     *(sp) = r3;
    0x0800547c ldr r3, [r5, 0xe0]                                                |     r3 = *((r5 + 0xe0));
    0x08005480 ldr r0, [r5, 0x2c]                                                |     r0 = *((r5 + 0x2c));
    0x08005484 bl 0x8001468                                                      |     r0 = vxlan_find_sock ();
    0x08005488 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x0800548c beq 0x80054c8                                                     |         
    0x08005490 ldr r2, [sp, 0x28]                                                |         r2 = *(arg_28h);
    0x08005494 ldr r1, [sp, 0x24]                                                |         r1 = *(arg_24h);
    0x08005498 bl 0x8000070                                                      |         r0 = vxlan_vs_find_vni ();
    0x0800549c subs r2, r0, 0                                                    |         r2 = r0 - 0;
                                                                                 |         if (r2 == r0) {
    0x080054a0 beq 0x80054c8                                                     |             goto label_1;
                                                                                 |         }
    0x080054a4 mov r0, r6                                                        |         r0 = r6;
    0x080054a8 mov r4, 1                                                         |         r4 = 1;
    0x080054ac ldr r3, [sp, 0x28]                                                |         r3 = *(arg_28h);
    0x080054b0 mov r1, r5                                                        |         r1 = r5;
    0x080054b4 str r4, [sp]                                                      |         *(sp) = r4;
    0x080054b8 bl 0x8005294                                                      |         vxlan_encap_bypass ();
    0x080054bc mov r0, r4                                                        |         r0 = r4;
    0x080054c0 add sp, sp, 8                                                     |         
    0x080054c4 pop {r4, r5, r6, r7, r8, pc}                                      |         
                                                                                 |     }
                                                                                 | label_1:
    0x080054c8 ldr r3, [r7, 0xc4]                                                |     r3 = *((r7 + 0xc4));
    0x080054cc mov r0, r6                                                        |     r0 = r6;
    0x080054d0 add r3, r3, 1                                                     |     r3++;
    0x080054d4 str r3, [r7, 0xc4]                                                |     *((r7 + 0xc4)) = r3;
    0x080054d8 stmdaeq r0, {r0, r2, r3, r5, r6, fp, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r0, r2, r3, r5, r6, fp, sp, lr, pc}");
    0x080054dc mvn r0, 1                                                         |     r0 = ~1;
    0x080054e0 b 0x8005448                                                       |     goto label_0;
                                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/drivers/net/vxlan.ko @ 0x8002df8 */
                                                                     | #include <stdint.h>
                                                                     |  
    ; (fcn) sym.vxlan_err_lookup ()                                  | void vxlan_err_lookup (int32_t arg1, int32_t arg2) {
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x08002df8 push {r4, r5, r6, lr}                                 |     
    0x08002dfc mov r4, r1                                            |     r4 = r1;
    0x08002e00 mov r5, r0                                            |     r5 = r0;
    0x08002e04 ldr ip, [r1, 0xa4]                                    |     ip = *((r1 + 0xa4));
    0x08002e08 ldrh r2, [r1, 0x96]                                   |     r2 = *((r1 + 0x96));
    0x08002e0c ldr r1, [r1, 0xa8]                                    |     r1 = *((r1 + 0xa8));
    0x08002e10 add r3, ip, r2                                        |     r3 = ip + r2;
    0x08002e14 sub r3, r3, r1                                        |     r3 -= r1;
    0x08002e18 ldrd r0, r1, [r4, 0x54]                               |     __asm ("ldrd r0, r1, [r4, 0x54]");
    0x08002e1c add r3, r3, 0x10                                      |     r3 += 0x10;
    0x08002e20 sub lr, r0, r1                                        |     lr = r0 - r1;
    0x08002e24 cmp r3, lr                                            |     
    0x08002e28 bhi 0x8002e70                                         |     
                                                                     |     while (1) {
    0x08002e2c add r2, r2, 8                                         |         r2 += 8;
    0x08002e30 add r1, ip, r2                                        |         r1 = ip + r2;
    0x08002e34 ldr r3, [ip, r2]                                      |         r3 = *((ip + r2));
    0x08002e38 tst r3, 8                                             |         
                                                                     |         if ((r3 & 8) == 0) {
    0x08002e3c beq 0x8002ea4                                         |             goto label_0;
                                                                     |         }
    0x08002e40 ldr r0, [r5, 0x1b8]                                   |         r0 = *((r5 + 0x1b8));
    0x08002e44 bics r0, r0, 3                                        |         __asm ("bics r0, r0, 3");
                                                                     |         if ((r3 & 8) == 0) {
    0x08002e48 beq 0x8002e9c                                         |             goto label_1;
                                                                     |         }
    0x08002e4c ldr r2, [r1, 4]                                       |         r2 = *((r1 + 4));
    0x08002e50 ldr r3, [r4, 8]                                       |         r3 = *((r4 + 8));
    0x08002e54 lsl r2, r2, 8                                         |         r2 <<= 8;
    0x08002e58 ldr r1, [r3, 0xa8]                                    |         r1 = *((r3 + 0xa8));
    0x08002e5c bl 0x8000070                                          |         r0 = vxlan_vs_find_vni ();
    0x08002e60 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x08002e64 beq 0x8002e9c                                         |             goto label_1;
                                                                     |         }
    0x08002e68 mov r0, 0                                             |         r0 = 0;
    0x08002e6c pop {r4, r5, r6, pc}                                  |         
    0x08002e70 cmp r3, r0                                            |         
                                                                     |         if (r3 > r0) {
    0x08002e74 bhi 0x8002ea4                                         |             goto label_0;
                                                                     |         }
    0x08002e78 sub r1, r1, r0                                        |         r1 -= r0;
    0x08002e7c mov r0, r4                                            |         r0 = r4;
    0x08002e80 add r1, r1, r3                                        |         r1 += r3;
    0x08002e84 stmdaeq r0, {r0, r2, r3, r6, fp, sp, lr, pc}          |         __asm ("stmdaeq r0, {r0, r2, r3, r6, fp, sp, lr, pc}");
    0x08002e88 cmp r0, 0                                             |         
                                                                     |         if (r0 == 0) {
    0x08002e8c beq 0x8002ea4                                         |             goto label_0;
                                                                     |         }
    0x08002e90 ldr ip, [r4, 0xa4]                                    |         ip = *((r4 + 0xa4));
    0x08002e94 ldrh r2, [r4, 0x96]                                   |         r2 = *((r4 + 0x96));
    0x08002e98 b 0x8002e2c                                           |         
                                                                     |     }
                                                                     | label_1:
    0x08002e9c mvn r0, 1                                             |     r0 = ~1;
    0x08002ea0 pop {r4, r5, r6, pc}                                  |     
                                                                     | label_0:
    0x08002ea4 mvn r0, 0x15                                          |     r0 = ~0x15;
    0x08002ea8 pop {r4, r5, r6, pc}                                  |     
                                                                     | }
    ; 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/vxlan.ko @ 0x8006068 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 | #define SWAP32(n) ((uint32_t) (((n & 0x000000ff) << 24) | \
                                                                                 |                                ((n & 0x0000ff00) <<  8) | \
                                                                                 |                                ((n & 0x00ff0000) >>  8) | \
                                                                                 |                                ((n & 0xff000000) >> 24)))
                                                                                 |  
    ; (fcn) sym.vxlan_rcv ()                                                     | void vxlan_rcv (int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_2h;
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_1ch;
                                                                                 |     int32_t var_20h;
                                                                                 |     int32_t var_24h;
                                                                                 |     int32_t var_25h;
                                                                                 |     int32_t var_26h;
                                                                                 |     int32_t var_2ch;
                                                                                 |     int32_t var_30h;
                                                                                 |     int32_t var_34h;
                                                                                 |     int32_t var_4ch;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08006068 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x0800606c mov r4, r1                                                        |     r4 = r1;
    0x08006070 mov r6, r0                                                        |     r6 = r0;
    0x08006074 ldr r1, [r1, 0x54]                                                |     r1 = *((r1 + 0x54));
    0x08006078 sub sp, sp, 0x4c                                                  |     
    0x0800607c ldr r3, [r4, 0x58]                                                |     r3 = *((r4 + 0x58));
    0x08006080 sub r2, r1, r3                                                    |     r2 = r1 - r3;
    0x08006084 cmp r2, 0xf                                                       |     
                                                                                 |     if (r2 < 0xf) {
    0x08006088 bls 0x8006160                                                     |         goto label_24;
                                                                                 |     }
                                                                                 | label_1:
    0x0800608c ldrh r2, [r4, 0x96]                                               |     r2 = *((r4 + 0x96));
    0x08006090 add ip, sp, 0x24                                                  |     
    0x08006094 ldr r3, [r4, 0xa4]                                                |     r3 = *((r4 + 0xa4));
    0x08006098 add r2, r2, 8                                                     |     r2 += 8;
    0x0800609c add r3, r3, r2                                                    |     r3 += r2;
    0x080060a0 ldm r3, {r0, r1}                                                  |     r0 = *(r3);
                                                                                 |     r1 = *((r3 + 4));
    0x080060a4 stm ip, {r0, r1}                                                  |     *(ip) = r0;
                                                                                 |     *((ip + 4)) = r1;
    0x080060a8 mov fp, r0                                                        |     
    0x080060ac mov r5, r1                                                        |     r5 = r1;
    0x080060b0 tst r0, 8                                                         |     
                                                                                 |     if ((r0 & 8) == 0) {
    0x080060b4 beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x080060b8 ldr r6, [r6, 0x1b8]                                               |     r6 = *((r6 + 0x1b8));
    0x080060bc bic r8, r0, 8                                                     |     r8 = BIT_MASK (r0, 8);
    0x080060c0 str r8, [sp, 0x24]                                                |     var_24h = r8;
    0x080060c4 bics r6, r6, 3                                                    |     __asm ("bics r6, r6, 3");
    0x080060c8 bne 0x80060e0                                                     |     
                                                                                 |     while (r7 == r0) {
                                                                                 | label_0:
    0x080060cc mov r0, r4                                                        |         r0 = r4;
    0x080060d0 stmdaeq r0, {r0, r2, r3, r5, r6, fp, sp, lr, pc}                  |         __asm ("stmdaeq r0, {r0, r2, r3, r5, r6, fp, sp, lr, pc}");
                                                                                 | label_2:
    0x080060d4 mov r0, 0                                                         |         r0 = 0;
    0x080060d8 add sp, sp, 0x4c                                                  |         
    0x080060dc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
    0x080060e0 ldr r3, [r4, 8]                                                   |         r3 = *((r4 + 8));
    0x080060e4 lsl sl, r5, 8                                                     |         sl = r5 << 8;
    0x080060e8 mov r2, sl                                                        |         r2 = sl;
    0x080060ec mov r0, r6                                                        |         r0 = r6;
    0x080060f0 ldr r1, [r3, 0xa8]                                                |         r1 = *((r3 + 0xa8));
    0x080060f4 bl 0x8000070                                                      |         r0 = vxlan_vs_find_vni ();
    0x080060f8 subs r7, r0, 0                                                    |         r7 = r0 - 0;
    0x080060fc beq 0x80060cc                                                     |         
                                                                                 |     }
    0x08006100 add sb, r6, 0x1000                                                |     sb = r6 + 0x1000;
    0x08006104 ldr r3, [sb, 0x10]                                                |     r3 = *((sb + 0x10));
    0x08006108 ands r3, r3, 0x4000                                               |     r3 &= 0x4000;
                                                                                 |     if (r3 == r3) {
    0x0800610c beq 0x8006184                                                     |         goto label_25;
                                                                                 |     }
    0x08006110 tst r8, 4                                                         |     
    0x08006114 uxtb r3, r8                                                       |     r3 = (int8_t) r8;
                                                                                 |     if ((r8 & 4) == 0) {
    0x08006118 beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x0800611c tst r3, 0x31                                                      |     
                                                                                 |     if ((r3 & 0x31) != 0) {
    0x08006120 bne 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006124 ubfx r3, r8, 0x18, 8                                              |     r3 = (r8 >> 0x18) & ((1 << 8) - 1);
    0x08006128 sub r3, r3, 1                                                     |     r3--;
    0x0800612c uxtb r3, r3                                                       |     r3 = (int8_t) r3;
    0x08006130 cmp r3, 4                                                         |     
                                                                                 |     if (r3 > 4) {
    0x08006134 bhi 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006138 ldr r2, [pc, 0x824]                                               |     r2 = *(0x8006960);
    0x0800613c lsl r3, r3, 1                                                     |     r3 <<= 1;
    0x08006140 ldrh r2, [r2, r3]                                                 |     r2 = *((r2 + r3));
    0x08006144 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x08006148 beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x0800614c bic fp, fp, 0xff000000                                            |     fp = BIT_MASK (fp, 0xff000000);
    0x08006150 mov r8, 1                                                         |     r8 = 1;
    0x08006154 bic fp, fp, 0x3d                                                  |     fp = BIT_MASK (fp, 0x3d);
    0x08006158 str fp, [sp, 0x24]                                                |     var_24h = fp;
    0x0800615c b 0x800618c                                                       |     goto label_26;
                                                                                 | label_24:
    0x08006160 cmp r1, 0xf                                                       |     
                                                                                 |     if (r1 < 0xf) {
    0x08006164 bls 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006168 add r3, r3, 0x10                                                  |     r3 += 0x10;
    0x0800616c mov r0, r4                                                        |     r0 = r4;
    0x08006170 sub r1, r3, r1                                                    |     r1 = r3 - r1;
    0x08006174 stmdaeq r0, {r0, r2, r3, r6, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r0, r2, r3, r6, fp, sp, lr, pc}");
    0x08006178 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800617c beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006180 b 0x800608c                                                       |     goto label_1;
                                                                                 | label_25:
    0x08006184 mov r8, r3                                                        |     r8 = r3;
    0x08006188 movw r2, 0x5865                                                   |     r2 = 0x5865;
                                                                                 | label_26:
    0x0800618c ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x08006190 mov r0, r4                                                        |     r0 = r4;
    0x08006194 ldr r1, [r7, 0x2c]                                                |     r1 = *((r7 + 0x2c));
    0x08006198 ldr r3, [r3, 0x2b4]                                               |     r3 = *((r3 + 0x2b4));
    0x0800619c subs r3, r3, r1                                                   |     r3 -= r1;
    0x080061a0 mov r1, 0x10                                                      |     r1 = 0x10;
                                                                                 |     if (r3 == r3) {
    0x080061a4 movne r3, 1                                                       |         r3 = 1;
                                                                                 |     }
    0x080061a8 str r3, [sp]                                                      |     *(sp) = r3;
    0x080061ac mov r3, r8                                                        |     r3 = r8;
    0x080061b0 stmdaeq r0, {r0, r2, r3, r4, r5, r7, fp, sp, lr, pc}              |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r5, r7, fp, sp, lr, pc}");
    0x080061b4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x080061b8 bne 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x080061bc ldr r2, [sb, 0x10]                                                |     r2 = *((sb + 0x10));
    0x080061c0 and fp, r5, 0xff000000                                            |     
    0x080061c4 tst r2, 0x400                                                     |     
                                                                                 |     if ((r2 & 0x400) != 0) {
    0x080061c8 bne 0x8006354                                                     |         goto label_27;
                                                                                 |     }
                                                                                 | label_4:
    0x080061cc ands r0, r2, 0x2000                                               |     r0 = r2 & 0x2000;
                                                                                 |     if (r0 != r2) {
    0x080061d0 bne 0x8006310                                                     |         goto label_28;
                                                                                 |     }
    0x080061d4 stmdaeq r0, {r0, r6, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r0, r6, r7, fp, sp, lr, pc}");
    0x080061d8 stmdaeq r0, {r0, r6, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r0, r6, r7, fp, sp, lr, pc}");
    0x080061dc ldr r1, [r1]                                                      |     r1 = *(r1);
    0x080061e0 cmp r1, 0                                                         |     
                                                                                 |     if (r1 > 0) {
    0x080061e4 strle r0, [sp, 0x20]                                              |         var_20h = r0;
                                                                                 |     }
                                                                                 |     if (r1 > 0) {
    0x080061e8 addle r0, sp, 0x20                                                |         r0 += var_20h;
                                                                                 |     }
                                                                                 |     if (r1 > 0) {
    0x080061ec bgt 0x8006310                                                     |         goto label_28;
                                                                                 |     }
                                                                                 | label_3:
    0x080061f0 ldr r1, [sp, 0x24]                                                |     r1 = var_24h;
    0x080061f4 tst r2, 0x800                                                     |     
                                                                                 |     if ((r2 & 0x800) != 0) {
    0x080061f8 bne 0x8006454                                                     |         goto label_29;
                                                                                 |     }
                                                                                 | label_5:
    0x080061fc orrs r1, r1, fp                                                   |     r1 |= fp;
                                                                                 |     if (r1 != r1) {
    0x08006200 bne 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006204 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006208 cmp r8, 0                                                         |     
    0x0800620c ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x08006210 sub r3, r0, ip                                                    |     r3 = r0 - ip;
    0x08006214 uxth r3, r3                                                       |     r3 = (int16_t) r3;
                                                                                 |     if (r8 == 0) {
    0x08006218 beq 0x80064c0                                                     |         goto label_30;
                                                                                 |     }
    0x0800621c ldrb r2, [r4, 0x64]                                               |     r2 = *((r4 + 0x64));
    0x08006220 strh r3, [r4, 0x9a]                                               |     *((r4 + 0x9a)) = r3;
    0x08006224 ldrh lr, [r4, 0x98]                                               |     
    0x08006228 bfi r2, r1, 0, 3                                                  |     value_0 = BIT_MASK (0, 3);
                                                                                 |     value_1 = r1 & value_0;
                                                                                 |     value_0 = ~value_0;
                                                                                 |     r2 &= value_0;
                                                                                 |     r2 |= value_1;
    0x0800622c ldr r1, [r7, 0x28]                                                |     r1 = *((r7 + 0x28));
    0x08006230 str r1, [r4, 8]                                                   |     *((r4 + 8)) = r1;
    0x08006234 strb r2, [r4, 0x64]                                               |     *((r4 + 0x64)) = r2;
                                                                                 | label_6:
    0x08006238 strh r3, [r4, 0x98]                                               |     *((r4 + 0x98)) = r3;
    0x0800623c add r8, ip, lr                                                    |     r8 = ip + lr;
    0x08006240 ldrh r3, [r4, 0x94]                                               |     r3 = *((r4 + 0x94));
    0x08006244 ldr r2, [r6, 8]                                                   |     r2 = *((r6 + 8));
    0x08006248 ldrh r5, [r4, 0x5c]                                               |     r5 = *((r4 + 0x5c));
    0x0800624c ldr r2, [r2, 0x10]                                                |     r2 = *((r2 + 0x10));
    0x08006250 ldrh r2, [r2, 0x10]                                               |     r2 = *((r2 + 0x10));
    0x08006254 cmp r2, 2                                                         |     
                                                                                 |     if (r2 == 2) {
    0x08006258 beq 0x8006594                                                     |         goto label_31;
                                                                                 |     }
    0x0800625c cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x08006260 beq 0x80065e4                                                     |         goto label_32;
                                                                                 |     }
    0x08006264 movw r2, 0xa888                                                   |     r2 = 0xa888;
    0x08006268 cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x0800626c beq 0x80065e4                                                     |         goto label_32;
                                                                                 |     }
                                                                                 | label_9:
    0x08006270 cmp r3, 8                                                         |     
                                                                                 |     if (r3 == 8) {
    0x08006274 beq 0x8006668                                                     |         goto label_33;
                                                                                 |     }
    0x08006278 movw r2, 0xdd86                                                   |     r2 = 0xdd86;
    0x0800627c cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x08006280 bne 0x80062b8                                                     |         
    0x08006284 ldrh r3, [r4, 0x98]                                               |         r3 = *((r4 + 0x98));
    0x08006288 ldr r2, [r4, 0xa4]                                                |         r2 = *((r4 + 0xa4));
    0x0800628c ldrh r2, [r2, r3]                                                 |         r2 = *((r2 + r3));
    0x08006290 rev16 r2, r2                                                      |         __asm ("rev16 r2, r2");
    0x08006294 ubfx r2, r2, 4, 8                                                 |         r2 = (r2 >> 4) & ((1 << 8) - 1);
                                                                                 | label_11:
    0x08006298 ldrh r1, [r8]                                                     |         r1 = *(r8);
    0x0800629c mov r0, r4                                                        |         r0 = r4;
    0x080062a0 rev16 r1, r1                                                      |         __asm ("rev16 r1, r1");
    0x080062a4 ubfx r1, r1, 4, 8                                                 |         r1 = (r1 >> 4) & ((1 << 8) - 1);
    0x080062a8 bl 0x80024b4                                                      |         r0 = INET_ECN_decapsulate ();
    0x080062ac mov r5, r0                                                        |         r5 = r0;
                                                                                 | label_8:
    0x080062b0 cmp r5, 0                                                         |         
                                                                                 |         if (r5 != 0) {
    0x080062b4 bne 0x8006728                                                     |             goto label_34;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_7:
    0x080062b8 stmdaeq r0, {r0, r2, r3, r4, r6, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r6, r8, sb, sl, sp, lr, pc}");
    0x080062bc ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x080062c0 ldr r2, [r3, 0x130]                                               |     r2 = *((r3 + 0x130));
    0x080062c4 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) == 0) {
    0x080062c8 beq 0x8006838                                                     |         goto label_35;
                                                                                 |     }
    0x080062cc ldr r3, [r3, 0x2c0]                                               |     r3 = *((r3 + 0x2c0));
    0x080062d0 mov r1, r4                                                        |     r1 = r4;
    0x080062d4 ldr ip, [r4, 0x54]                                                |     ip = *((r4 + 0x54));
    0x080062d8 add r0, r7, 0x8c                                                  |     r0 = r7 + 0x8c;
    0x080062dc ldr r2, [r3, 8]                                                   |     r2 = *((r3 + 8));
    0x080062e0 ldr lr, [r3, 0xc]                                                 |     
    0x080062e4 adds r2, r2, ip                                                   |     r2 += ip;
    0x080062e8 str r2, [r3, 8]                                                   |     *((r3 + 8)) = r2;
    0x080062ec ldm r3, {r2, ip}                                                  |     r2 = *(r3);
                                                                                 |     ip = *((r3 + 4));
    0x080062f0 adc lr, lr, 0                                                     |     __asm ("adc lr, lr, 0");
    0x080062f4 str lr, [r3, 0xc]                                                 |     
    0x080062f8 adds r2, r2, 1                                                    |     r2++;
    0x080062fc adc ip, ip, 0                                                     |     __asm ("adc ip, ip, 0");
    0x08006300 stm r3, {r2, ip}                                                  |     *(r3) = r2;
                                                                                 |     *((r3 + 4)) = ip;
    0x08006304 stmdaeq r0, {r0, r2, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r0, r2, r6, r7, fp, sp, lr, pc}");
    0x08006308 stmdaeq r0, {r0, r5, r6, r8, sb, sl, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r0, r5, r6, r8, sb, sl, sp, lr, pc}");
    0x0800630c b 0x80060d4                                                       |     goto label_2;
                                                                                 | label_28:
    0x08006310 ldr r2, [r6, 8]                                                   |     r2 = *((r6 + 8));
    0x08006314 mov r0, r4                                                        |     r0 = r4;
    0x08006318 ldr r2, [r2, 0x10]                                                |     r2 = *((r2 + 0x10));
    0x0800631c ldrh r1, [r2, 0x10]                                               |     r1 = *((r2 + 0x10));
    0x08006320 mov r2, 4                                                         |     r2 = 4;
    0x08006324 str sl, [sp, 4]                                                   |     var_4h = sl;
    0x08006328 str r2, [sp, 8]                                                   |     var_8h = r2;
    0x0800632c mov r2, 0                                                         |     r2 = 0;
    0x08006330 str r2, [sp]                                                      |     *(sp) = r2;
    0x08006334 mov r2, 0x400                                                     |     r2 = 0x400;
    0x08006338 stmdaeq r0, {r0, r3, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r0, r3, r6, r7, fp, sp, lr, pc}");
    0x0800633c cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x08006340 beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006344 str r0, [r4, 0x48]                                                |     *((r4 + 0x48)) = r0;
    0x08006348 add r0, r0, 0x90                                                  |     r0 += 0x90;
    0x0800634c ldr r2, [sb, 0x10]                                                |     r2 = *((sb + 0x10));
    0x08006350 b 0x80061f0                                                       |     goto label_3;
                                                                                 | label_27:
    0x08006354 ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x08006358 str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x0800635c tst r3, 0x2000                                                    |     
                                                                                 |     if ((r3 & 0x2000) != 0) {
    0x08006360 beq 0x8006440                                                     |         
    0x08006364 ldrb r1, [r4, 0x67]                                               |         r1 = *((r4 + 0x67));
    0x08006368 tst r1, 4                                                         |         
                                                                                 |         if ((r1 & 4) != 0) {
    0x0800636c bne 0x8006440                                                     |             goto label_20;
                                                                                 |         }
    0x08006370 and r5, r5, 0x7f000000                                            |         r5 &= 0x7f000000;
    0x08006374 cmp fp, 0                                                         |         
    0x08006378 rev r5, r5                                                        |         r5 = SWAP32 (r5);
    0x0800637c ldr r0, [r4, 0x54]                                                |         r0 = *((r4 + 0x54));
                                                                                 |         if (fp < 0) {
    0x08006380 movge r3, 0x10                                                    |             r3 = 0x10;
                                                                                 |         }
                                                                                 |         if (fp >= 0) {
    0x08006384 movlt r3, 6                                                       |             r3 = 6;
                                                                                 |         }
    0x08006388 lsl r5, r5, 1                                                     |         r5 <<= 1;
    0x0800638c mov r1, r3                                                        |         r1 = r3;
    0x08006390 str r3, [sp, 0x18]                                                |         var_18h = r3;
    0x08006394 add fp, r5, r1                                                    |         
    0x08006398 ldr r3, [r4, 0x58]                                                |         r3 = *((r4 + 0x58));
    0x0800639c add r1, fp, 2                                                     |         r1 += var_2h;
    0x080063a0 sub ip, r0, r3                                                    |         
    0x080063a4 cmp r1, ip                                                        |         
                                                                                 |         if (r1 > ip) {
    0x080063a8 bhi 0x8006860                                                     |             goto label_36;
                                                                                 |         }
                                                                                 | label_21:
    0x080063ac ldrh r3, [r4, 0x96]                                               |         r3 = *((r4 + 0x96));
    0x080063b0 tst r2, 0x1000                                                    |         
    0x080063b4 ldr r2, [r4, 0xa4]                                                |         r2 = *((r4 + 0xa4));
    0x080063b8 add r3, r3, 0x10                                                  |         r3 += 0x10;
    0x080063bc add r3, r2, r3                                                    |         r3 = r2 + r3;
                                                                                 |         if ((r2 & 0x1000) == 0) {
    0x080063c0 beq 0x8006810                                                     |             goto label_37;
                                                                                 |         }
    0x080063c4 ldrb r2, [r4, 0x64]                                               |         r2 = *((r4 + 0x64));
    0x080063c8 and r2, r2, 0x60                                                  |         r2 &= 0x60;
    0x080063cc cmp r2, 0x40                                                      |         
                                                                                 |         if (r2 != 0x40) {
    0x080063d0 bne 0x80068cc                                                     |             goto label_38;
                                                                                 |         }
                                                                                 | label_23:
    0x080063d4 mov r1, r5                                                        |         r1 = r5;
    0x080063d8 ldr r5, [r4, 0x6c]                                                |         r5 = *((r4 + 0x6c));
    0x080063dc mov r0, r3                                                        |         r0 = r3;
    0x080063e0 mov r2, 0                                                         |         r2 = 0;
    0x080063e4 str r3, [sp, 0x18]                                                |         var_18h = r3;
    0x080063e8 stmdaeq r0, {r0, r3, r7, fp, sp, lr, pc}                          |         __asm ("stmdaeq r0, {r0, r3, r7, fp, sp, lr, pc}");
    0x080063ec sub r2, r5, 1                                                     |         r2 = r5 - 1;
    0x080063f0 ldr r3, [sp, 0x18]                                                |         r3 = var_18h;
    0x080063f4 sub r2, r2, r0                                                    |         r2 -= r0;
    0x080063f8 mvn r0, r0                                                        |         r0 = ~r0;
    0x080063fc cmp r0, r2                                                        |         
                                                                                 |         if (r0 <= r2) {
    0x08006400 addhi r2, r2, 1                                                   |             r2++;
                                                                                 |         }
    0x08006404 add r2, r2, r2, ror 16                                            |         r2 += (r2 >>> 16);
    0x08006408 mvn r2, r2                                                        |         r2 = ~r2;
    0x0800640c ldrh r1, [r3, fp]                                                 |         r1 = *((r3 + fp));
    0x08006410 lsr r2, r2, 0x10                                                  |         r2 >>= 0x10;
    0x08006414 strh r2, [r3, fp]                                                 |         *((r3 + fp)) = r2;
    0x08006418 sub r3, r2, r1                                                    |         r3 = r2 - r1;
    0x0800641c mvn r1, r1                                                        |         r1 = ~r1;
    0x08006420 ldr r2, [r4, 0x6c]                                                |         r2 = *((r4 + 0x6c));
    0x08006424 sub r3, r3, 1                                                     |         r3--;
    0x08006428 cmp r1, r3                                                        |         
                                                                                 |         if (r1 <= r3) {
    0x0800642c addhi r3, r3, 1                                                   |             r3++;
                                                                                 |         }
    0x08006430 adds r3, r2, r3                                                   |         r3 = r2 + r3;
    0x08006434 adc r3, r3, 0                                                     |         __asm ("adc r3, r3, 0");
    0x08006438 str r3, [r4, 0x6c]                                                |         *((r4 + 0x6c)) = r3;
    0x0800643c ldr r2, [sb, 0x10]                                                |         r2 = *((sb + 0x10));
                                                                                 |     }
                                                                                 | label_20:
    0x08006440 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08006444 bic fp, r3, 0x2000                                                |     fp = BIT_MASK (r3, 0x2000);
    0x08006448 str fp, [sp, 0x24]                                                |     var_24h = fp;
    0x0800644c mov fp, 0                                                         |     
    0x08006450 b 0x80061cc                                                       |     goto label_4;
                                                                                 | label_29:
    0x08006454 tst r1, 0x80                                                      |     
                                                                                 |     if ((r1 & 0x80) != 0) {
    0x08006458 beq 0x80064b8                                                     |         
    0x0800645c ldrh ip, [sp, 0x26]                                               |         ip = var_26h;
    0x08006460 rev16 ip, ip                                                      |         __asm ("rev16 ip, ip");
    0x08006464 uxth ip, ip                                                       |         ip = (int16_t) ip;
    0x08006468 str ip, [r0]                                                      |         *(r0) = ip;
    0x0800646c ldr ip, [r4, 0x48]                                                |         ip = *((r4 + 0x48));
    0x08006470 bics ip, ip, 1                                                    |         __asm ("bics ip, ip, 1");
    0x08006474 ldrhne lr, [ip, 0x70]                                             |         __asm ("ldrhne lr, [ip, 0x70]");
                                                                                 |         if ((r1 & 0x80) == 0) {
    0x08006478 orrne lr, lr, 0x10                                                |             lr |= 0x10;
                                                                                 |         }
    0x0800647c strhne lr, [ip, 0x70]                                             |         __asm ("strhne lr, [ip, 0x70]");
                                                                                 |         if ((r1 & 0x80) == 0) {
    0x08006480 movne lr, 4                                                       |             lr = 4;
                                                                                 |         }
                                                                                 |         if ((r1 & 0x80) == 0) {
    0x08006484 strbne lr, [ip, 0x88]                                             |             
                                                                                 |         }
    0x08006488 ldrb ip, [sp, 0x25]                                               |         ip = var_25h;
    0x0800648c tst ip, 0x40                                                      |         
                                                                                 |         if ((ip & 0x40) == 0) {
    0x08006490 ldrne lr, [r0]                                                    |             
                                                                                 |         }
                                                                                 |         if ((ip & 0x40) == 0) {
    0x08006494 orrne lr, lr, 0x400000                                            |             lr |= 0x400000;
                                                                                 |         }
                                                                                 |         if ((ip & 0x40) == 0) {
    0x08006498 strne lr, [r0]                                                    |             
                                                                                 |         }
    0x0800649c tst ip, 8                                                         |         
                                                                                 |         if ((ip & 8) == 0) {
    0x080064a0 ldrne ip, [r0]                                                    |             ip = *(r0);
                                                                                 |         }
                                                                                 |         if ((ip & 8) == 0) {
    0x080064a4 orrne ip, ip, 0x80000                                             |             
                                                                                 |         }
                                                                                 |         if ((ip & 8) == 0) {
    0x080064a8 strne ip, [r0]                                                    |             *(r0) = ip;
                                                                                 |         }
    0x080064ac tst r2, 0x2000                                                    |         
                                                                                 |         if ((r2 & 0x2000) != 0) {
    0x080064b0 ldreq r2, [r0]                                                    |             r2 = *(r0);
                                                                                 |         }
                                                                                 |         if ((r2 & 0x2000) == 0) {
    0x080064b4 streq r2, [r4, 0x88]                                              |             *((r4 + 0x88)) = r2;
                                                                                 |             goto label_39;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_39:
    0x080064b8 and r1, r1, 0x7f                                                  |     r1 &= 0x7f;
    0x080064bc b 0x80061fc                                                       |     goto label_5;
                                                                                 | label_30:
    0x080064c0 ldr r2, [r4, 8]                                                   |     r2 = *((r4 + 8));
    0x080064c4 mov r0, r4                                                        |     r0 = r4;
    0x080064c8 ldr r5, [r2, 0xa8]                                                |     r5 = *((r2 + 0xa8));
    0x080064cc strh r3, [r4, 0x9a]                                               |     *((r4 + 0x9a)) = r3;
    0x080064d0 ldr r1, [r7, 0x28]                                                |     r1 = *((r7 + 0x28));
    0x080064d4 stmdaeq r0, {r0, r2, r3, r6, r7, fp, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r0, r2, r3, r6, r7, fp, sp, lr, pc}");
    0x080064d8 ldrb r2, [r4, 0x64]                                               |     r2 = *((r4 + 0x64));
    0x080064dc ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x080064e0 ldrh sb, [r4, 0x9a]                                               |     sb = *((r4 + 0x9a));
    0x080064e4 and r3, r2, 0x60                                                  |     r3 = r2 & 0x60;
    0x080064e8 cmp r3, 0x40                                                      |     
    0x080064ec strh r0, [r4, 0x94]                                               |     *((r4 + 0x94)) = r0;
    0x080064f0 add sb, ip, sb                                                    |     sb = ip + sb;
                                                                                 |     if (r3 == 0x40) {
    0x080064f4 beq 0x80067d4                                                     |         goto label_40;
                                                                                 |     }
    0x080064f8 cmp r3, 0x60                                                      |     
                                                                                 |     if (r3 == 0x60) {
    0x080064fc bne 0x8006518                                                     |         
    0x08006500 ldr r3, [r4, 0xa8]                                                |         r3 = *((r4 + 0xa8));
    0x08006504 ldrh r1, [r4, 0x6c]                                               |         r1 = *((r4 + 0x6c));
    0x08006508 sub r3, ip, r3                                                    |         r3 = ip - r3;
    0x0800650c cmn r3, r1                                                        |         
    0x08006510 bfimi r2, r8, 5, 2                                                |         __asm ("bfimi r2, r8, 5, 2");
                                                                                 |         if (r3 < r1) {
    0x08006514 strbmi r2, [r4, 0x64]                                             |             *((r4 + 0x64)) = r2;
                                                                                 |             goto label_19;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_19:
    0x08006518 ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x0800651c ldrh r2, [sb, 0xa]                                                |     r2 = *((sb + 0xa));
    0x08006520 ldr r1, [r3, 0x1c8]                                               |     r1 = *((r3 + 0x1c8));
    0x08006524 ldr r3, [sb, 6]                                                   |     r3 = *((sb + 6));
    0x08006528 ldr r0, [r1]                                                      |     r0 = *(r1);
    0x0800652c ldrh r1, [r1, 4]                                                  |     r1 = *((r1 + 4));
    0x08006530 eor r3, r3, r0                                                    |     r3 ^= r0;
    0x08006534 eor r2, r2, r1                                                    |     r2 ^= r1;
    0x08006538 orrs r3, r3, r2                                                   |     r3 |= r2;
                                                                                 |     if (r3 == r3) {
    0x0800653c beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006540 ldr r3, [r6, 8]                                                   |     r3 = *((r6 + 8));
    0x08006544 ldrh lr, [r4, 0x98]                                               |     
    0x08006548 ldr r3, [r3, 0x10]                                                |     r3 = *((r3 + 0x10));
    0x0800654c ldrh r8, [r3, 0x10]                                               |     r8 = *((r3 + 0x10));
    0x08006550 add r3, ip, lr                                                    |     r3 = ip + lr;
    0x08006554 cmp r8, 2                                                         |     
                                                                                 |     if (r8 == 2) {
    0x08006558 addne r3, r3, 8                                                   |         r3 += 8;
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x0800655c addne fp, sp, 0x34                                                |         
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x08006560 movne r8, 0xa                                                     |         r8 = 0xa;
                                                                                 |     }
                                                                                 |     if (r8 != 2) {
    0x08006564 ldreq r3, [r3, 0xc]                                               |         r3 = *((r3 + 0xc));
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x08006568 ldmne r3, {r0, r1, r2, r3}                                        |         r0 = *(r3);
                                                                                 |         r1 = *((r3 + 4));
                                                                                 |         r2 = *((r3 + 8));
                                                                                 |         r3 = *((r3 + 12));
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x0800656c stmne fp, {r0, r1, r2, r3}                                        |         *(fp) = r0;
                                                                                 |         *((fp + 4)) = r1;
                                                                                 |         *((fp + 8)) = r2;
                                                                                 |         *((fp + 12)) = r3;
                                                                                 |     }
                                                                                 |     if (r8 != 2) {
    0x08006570 streq r3, [sp, 0x30]                                              |         var_30h = r3;
                                                                                 |     }
    0x08006574 strh r8, [sp, 0x2c]                                               |     var_2ch = r8;
    0x08006578 ldr r3, [r7, 0xe0]                                                |     r3 = *((r7 + 0xe0));
    0x0800657c tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) != 0) {
    0x08006580 bne 0x800679c                                                     |         goto label_41;
                                                                                 |     }
    0x08006584 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006588 sub r3, r0, ip                                                    |     r3 = r0 - ip;
    0x0800658c uxth r3, r3                                                       |     r3 = (int16_t) r3;
    0x08006590 b 0x8006238                                                       |     goto label_6;
                                                                                 | label_31:
    0x08006594 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x08006598 beq 0x8006688                                                     |         goto label_42;
                                                                                 |     }
    0x0800659c movw r2, 0xa888                                                   |     r2 = 0xa888;
    0x080065a0 cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x080065a4 beq 0x8006688                                                     |         goto label_42;
                                                                                 |     }
                                                                                 | label_13:
    0x080065a8 cmp r3, 8                                                         |     
                                                                                 |     if (r3 == 8) {
    0x080065ac beq 0x8006714                                                     |         goto label_43;
                                                                                 |     }
    0x080065b0 movw r2, 0xdd86                                                   |     r2 = 0xdd86;
    0x080065b4 cmp r3, r2                                                        |     
                                                                                 |     if (r3 != r2) {
    0x080065b8 bne 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
    0x080065bc ldrh r3, [r4, 0x98]                                               |     r3 = *((r4 + 0x98));
    0x080065c0 ldr r2, [r4, 0xa4]                                                |     r2 = *((r4 + 0xa4));
    0x080065c4 ldrh r2, [r2, r3]                                                 |     r2 = *((r2 + r3));
    0x080065c8 rev16 r2, r2                                                      |     __asm ("rev16 r2, r2");
    0x080065cc ubfx r2, r2, 4, 8                                                 |     r2 = (r2 >> 4) & ((1 << 8) - 1);
                                                                                 | label_16:
    0x080065d0 ldrb r1, [r8, 1]                                                  |     r1 = *((r8 + 1));
    0x080065d4 mov r0, r4                                                        |     r0 = r4;
    0x080065d8 bl 0x80024b4                                                      |     r0 = INET_ECN_decapsulate ();
    0x080065dc mov r5, r0                                                        |     r5 = r0;
    0x080065e0 b 0x80062b0                                                       |     goto label_8;
                                                                                 | label_32:
    0x080065e4 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x080065e8 beq 0x800670c                                                     |         goto label_44;
                                                                                 |     }
    0x080065ec cmp r5, 3                                                         |     
                                                                                 |     if (r5 <= 3) {
    0x080065f0 subhi r5, r5, 4                                                   |         r5 -= 4;
                                                                                 |     }
                                                                                 |     if (r5 < 3) {
    0x080065f4 bls 0x800688c                                                     |         goto label_45;
                                                                                 |     }
                                                                                 | label_15:
    0x080065f8 add sb, r5, 0x1c                                                  |     sb = r5 + 0x1c;
    0x080065fc movw sl, 0xa888                                                   |     sl = 0xa888;
                                                                                 | label_10:
    0x08006600 ldr ip, [r4, 0x54]                                                |     ip = *((r4 + 0x54));
    0x08006604 mov r1, r5                                                        |     r1 = r5;
    0x08006608 ldr lr, [r4, 0x58]                                                |     
    0x0800660c add r2, sp, 0x2c                                                  |     r2 += var_2ch;
    0x08006610 mov r3, 4                                                         |     r3 = 4;
    0x08006614 sub ip, ip, lr                                                    |     
    0x08006618 sub ip, ip, r5                                                    |     
    0x0800661c cmp ip, 3                                                         |     
                                                                                 |     if (ip > 3) {
    0x08006620 bgt 0x800667c                                                     |         goto label_46;
                                                                                 |     }
    0x08006624 cmp r4, 0                                                         |     
                                                                                 |     if (r4 == 0) {
    0x08006628 beq 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
    0x0800662c mov r0, r4                                                        |     r0 = r4;
    0x08006630 stmdaeq r0, {r0, r2, r3, r4, r5, fp, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r5, fp, sp, lr, pc}");
    0x08006634 add r3, sp, 0x2c                                                  |     r3 += var_2ch;
    0x08006638 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x0800663c blt 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_12:
    0x08006640 cmp r5, sb                                                        |     
                                                                                 |     if (r5 == sb) {
    0x08006644 beq 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
    0x08006648 ldrh r3, [r3, 2]                                                  |     r3 = *((r3 + 2));
    0x0800664c add r5, r5, 4                                                     |     r5 += 4;
    0x08006650 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x08006654 beq 0x8006660                                                     |         goto label_47;
                                                                                 |     }
    0x08006658 cmp r3, sl                                                        |     
                                                                                 |     if (r3 != sl) {
    0x0800665c bne 0x8006270                                                     |         goto label_9;
                                                                                 |     }
                                                                                 | label_47:
    0x08006660 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006664 b 0x8006600                                                       |     goto label_10;
                                                                                 | label_33:
    0x08006668 ldrh r2, [r4, 0x98]                                               |     r2 = *((r4 + 0x98));
    0x0800666c ldr r3, [r4, 0xa4]                                                |     r3 = *((r4 + 0xa4));
    0x08006670 add r3, r3, r2                                                    |     r3 += r2;
    0x08006674 ldrb r2, [r3, 1]                                                  |     r2 = *((r3 + 1));
    0x08006678 b 0x8006298                                                       |     goto label_11;
                                                                                 | label_46:
    0x0800667c adds r3, r0, r5                                                   |     r3 = r0 + r5;
                                                                                 |     if (r3 != r0) {
    0x08006680 bne 0x8006640                                                     |         goto label_12;
                                                                                 |     }
    0x08006684 b 0x80062b8                                                       |     goto label_7;
                                                                                 | label_42:
    0x08006688 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x0800668c beq 0x8006794                                                     |         goto label_48;
                                                                                 |     }
    0x08006690 cmp r5, 3                                                         |     
                                                                                 |     if (r5 <= 3) {
    0x08006694 subhi r5, r5, 4                                                   |         r5 -= 4;
                                                                                 |     }
                                                                                 |     if (r5 < 3) {
    0x08006698 bls 0x800688c                                                     |         goto label_45;
                                                                                 |     }
                                                                                 | label_18:
    0x0800669c add sl, r5, 0x1c                                                  |     sl = r5 + 0x1c;
    0x080066a0 movw sb, 0xa888                                                   |     sb = 0xa888;
                                                                                 | label_14:
    0x080066a4 ldr ip, [r4, 0x54]                                                |     ip = *((r4 + 0x54));
    0x080066a8 mov r1, r5                                                        |     r1 = r5;
    0x080066ac ldr lr, [r4, 0x58]                                                |     
    0x080066b0 add r2, sp, 0x2c                                                  |     r2 += var_2ch;
    0x080066b4 mov r3, 4                                                         |     r3 = 4;
    0x080066b8 sub ip, ip, lr                                                    |     
    0x080066bc sub ip, ip, r5                                                    |     
    0x080066c0 cmp ip, 3                                                         |     
                                                                                 |     if (ip > 3) {
    0x080066c4 bgt 0x8006788                                                     |         goto label_49;
                                                                                 |     }
    0x080066c8 cmp r4, 0                                                         |     
                                                                                 |     if (r4 == 0) {
    0x080066cc beq 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
    0x080066d0 mov r0, r4                                                        |     r0 = r4;
    0x080066d4 stmdaeq r0, {r0, r2, r3, r4, r5, fp, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r5, fp, sp, lr, pc}");
    0x080066d8 add r3, sp, 0x2c                                                  |     r3 += var_2ch;
    0x080066dc cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x080066e0 blt 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_17:
    0x080066e4 cmp r5, sl                                                        |     
                                                                                 |     if (r5 == sl) {
    0x080066e8 beq 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
    0x080066ec ldrh r3, [r3, 2]                                                  |     r3 = *((r3 + 2));
    0x080066f0 add r5, r5, 4                                                     |     r5 += 4;
    0x080066f4 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x080066f8 beq 0x8006704                                                     |         goto label_50;
                                                                                 |     }
    0x080066fc cmp r3, sb                                                        |     
                                                                                 |     if (r3 != sb) {
    0x08006700 bne 0x80065a8                                                     |         goto label_13;
                                                                                 |     }
                                                                                 | label_50:
    0x08006704 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006708 b 0x80066a4                                                       |     goto label_14;
                                                                                 | label_44:
    0x0800670c mov r5, 0xe                                                       |     r5 = 0xe;
    0x08006710 b 0x80065f8                                                       |     goto label_15;
                                                                                 | label_43:
    0x08006714 ldrh r2, [r4, 0x98]                                               |     r2 = *((r4 + 0x98));
    0x08006718 ldr r3, [r4, 0xa4]                                                |     r3 = *((r4 + 0xa4));
    0x0800671c add r3, r3, r2                                                    |     r3 += r2;
    0x08006720 ldrb r2, [r3, 1]                                                  |     r2 = *((r3 + 1));
    0x08006724 b 0x80065d0                                                       |     goto label_16;
                                                                                 | label_34:
    0x08006728 stmdaeq r0, {r5, r6, r7, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r0, {r5, r6, r7, sb, sl, fp, ip, pc}");
    0x0800672c stmdaeq r0, {r5, r6, r7, sb, sl, fp, ip, pc}                      |     __asm ("stmdaeq r0, {r5, r6, r7, sb, sl, fp, ip, pc}");
    0x08006730 ldrb r3, [r3, 0x18]                                               |     r3 = *((r3 + 0x18));
    0x08006734 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08006738 beq 0x800675c                                                     |         
    0x0800673c ldr r3, [r6, 8]                                                   |         r3 = *((r6 + 8));
    0x08006740 ldr r3, [r3, 0x10]                                                |         r3 = *((r3 + 0x10));
    0x08006744 ldrh r3, [r3, 0x10]                                               |         r3 = *((r3 + 0x10));
    0x08006748 cmp r3, 2                                                         |         
                                                                                 |         if (r3 == 2) {
    0x0800674c beq 0x80068a8                                                     |             goto label_51;
                                                                                 |         }
    0x08006750 stmdaeq r0, {r0, r2, r4, r7, fp, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r0, r2, r4, r7, fp, sp, lr, pc}");
    0x08006754 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x08006758 bne 0x8006950                                                     |             goto label_52;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_22:
    0x0800675c cmp r5, 1                                                         |     
                                                                                 |     if (r5 <= 1) {
    0x08006760 ble 0x80062b8                                                     |         goto label_7;
                                                                                 |     }
    0x08006764 ldr r2, [r7, 0x28]                                                |     r2 = *((r7 + 0x28));
    0x08006768 ldr r3, [r2, 0xe4]                                                |     r3 = *((r2 + 0xe4));
    0x0800676c add r3, r3, 1                                                     |     r3++;
    0x08006770 str r3, [r2, 0xe4]                                                |     *((r2 + 0xe4)) = r3;
    0x08006774 ldr r2, [r7, 0x28]                                                |     r2 = *((r7 + 0x28));
    0x08006778 ldr r3, [r2, 0xc0]                                                |     r3 = *((r2 + 0xc0));
    0x0800677c add r3, r3, 1                                                     |     r3++;
    0x08006780 str r3, [r2, 0xc0]                                                |     *((r2 + 0xc0)) = r3;
    0x08006784 b 0x80060cc                                                       |     goto label_0;
                                                                                 | label_49:
    0x08006788 adds r3, r0, r5                                                   |     r3 = r0 + r5;
                                                                                 |     if (r3 != r0) {
    0x0800678c bne 0x80066e4                                                     |         goto label_17;
                                                                                 |     }
    0x08006790 b 0x80062b8                                                       |     goto label_7;
                                                                                 | label_48:
    0x08006794 mov r5, 0xe                                                       |     r5 = 0xe;
    0x08006798 b 0x800669c                                                       |     goto label_18;
                                                                                 | label_41:
    0x0800679c str sl, [sp]                                                      |     *(sp) = sl;
    0x080067a0 mov r3, r5                                                        |     r3 = r5;
    0x080067a4 add r2, sb, 6                                                     |     r2 = sb + 6;
    0x080067a8 add r1, sp, 0x2c                                                  |     r1 += var_2ch;
    0x080067ac ldr r0, [r4, 8]                                                   |     r0 = *((r4 + 8));
    0x080067b0 bl 0x800503c                                                      |     r0 = vxlan_snoop ();
    0x080067b4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x080067b8 bne 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x080067bc ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x080067c0 ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x080067c4 ldrh lr, [r4, 0x98]                                               |     
    0x080067c8 sub r3, r0, ip                                                    |     r3 = r0 - ip;
    0x080067cc uxth r3, r3                                                       |     r3 = (int16_t) r3;
    0x080067d0 b 0x8006238                                                       |     goto label_6;
                                                                                 | label_40:
    0x080067d4 mov r2, r8                                                        |     r2 = r8;
    0x080067d8 ldr r8, [r4, 0x6c]                                                |     r8 = *((r4 + 0x6c));
    0x080067dc mov r0, sb                                                        |     r0 = sb;
    0x080067e0 mov r1, 0xe                                                       |     r1 = 0xe;
    0x080067e4 stmdaeq r0, {r0, r3, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r0, r3, r7, fp, sp, lr, pc}");
    0x080067e8 ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x080067ec ldrh sb, [r4, 0x9a]                                               |     sb = *((r4 + 0x9a));
    0x080067f0 sub r3, r8, 1                                                     |     r3 = r8 - 1;
    0x080067f4 sub r3, r3, r0                                                    |     r3 -= r0;
    0x080067f8 mvn r0, r0                                                        |     r0 = ~r0;
    0x080067fc cmp r0, r3                                                        |     
                                                                                 |     if (r0 <= r3) {
    0x08006800 addhi r3, r3, 1                                                   |         r3++;
                                                                                 |     }
    0x08006804 add sb, ip, sb                                                    |     sb = ip + sb;
    0x08006808 str r3, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r3;
    0x0800680c b 0x8006518                                                       |     goto label_19;
                                                                                 | label_37:
    0x08006810 add r3, r3, r5                                                    |     r3 += r5;
    0x08006814 ldr r1, [sp, 0x18]                                                |     r1 = var_18h;
    0x08006818 sub r3, r3, r2                                                    |     r3 -= r2;
    0x0800681c strh r3, [r4, 0x6c]                                               |     *((r4 + 0x6c)) = r3;
    0x08006820 ldrb r3, [r4, 0x64]                                               |     r3 = *((r4 + 0x64));
    0x08006824 strh r1, [r4, 0x6e]                                               |     *((r4 + 0x6e)) = r1;
    0x08006828 orr r3, r3, 0x60                                                  |     r3 |= 0x60;
    0x0800682c strb r3, [r4, 0x64]                                               |     *((r4 + 0x64)) = r3;
    0x08006830 ldr r2, [sb, 0x10]                                                |     r2 = *((sb + 0x10));
    0x08006834 b 0x8006440                                                       |     goto label_20;
                                                                                 | label_35:
    0x08006838 stmdaeq r0, {r0, r5, r6, r8, sb, sl, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r0, r5, r6, r8, sb, sl, sp, lr, pc}");
    0x0800683c ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x08006840 add r3, r3, 0x10c                                                 |     r3 += 0x10c;
    0x08006844 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x08006848 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x0800684c add r2, r2, 1                                                     |         r2++;
    0x08006850 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x08006854 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x08006858 bne 0x8006848                                                     |         
                                                                                 |     } while (r0 != r3);
    0x0800685c b 0x80060cc                                                       |     goto label_0;
                                                                                 | label_36:
    0x08006860 cmp r1, r0                                                        |     
    0x08006864 str r2, [sp, 0x1c]                                                |     var_1ch = r2;
                                                                                 |     if (r1 > r0) {
    0x08006868 bhi 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x0800686c sub r3, r3, r0                                                    |     r3 -= r0;
    0x08006870 mov r0, r4                                                        |     r0 = r4;
    0x08006874 add r1, r3, r1                                                    |     r1 = r3 + r1;
    0x08006878 stmdaeq r0, {r0, r2, r3, r6, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r0, r2, r3, r6, fp, sp, lr, pc}");
    0x0800687c ldr r2, [sp, 0x1c]                                                |     r2 = var_1ch;
    0x08006880 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x08006884 beq 0x80060cc                                                     |         goto label_0;
                                                                                 |     }
    0x08006888 b 0x80063ac                                                       |     goto label_21;
                                                                                 | label_45:
    0x0800688c mov r3, 0                                                         |     r3 = 0;
    0x08006890 mov r2, 9                                                         |     r2 = 9;
    0x08006894 movw r1, 0x251                                                    |     r1 = 0x251;
    0x08006898 stmdaeq r0, {r2, r3, r5, r7, r8, sb, sl, fp, pc}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r7, r8, sb, sl, fp, pc}");
    0x0800689c stmdaeq r0, {r2, r3, r5, r7, r8, sb, sl, fp, pc}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r7, r8, sb, sl, fp, pc}");
    0x080068a0 stmdaeq r0, {r0, r3, r4, r5, r7, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r0, r3, r4, r5, r7, r8, sb, sl, sp, lr, pc}");
    0x080068a4 b 0x80062b8                                                       |     goto label_7;
                                                                                 | label_51:
    0x080068a8 stmdaeq r0, {r0, r2, r4, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r0, r2, r4, r7, fp, sp, lr, pc}");
    0x080068ac cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x080068b0 beq 0x800675c                                                     |         goto label_22;
                                                                                 |     }
    0x080068b4 ldrb r2, [r8, 1]                                                  |     r2 = *((r8 + 1));
    0x080068b8 add r1, r8, 0xc                                                   |     r1 = r8 + 0xc;
    0x080068bc stmdaeq r0, {r3, r5, r6, ip, pc}                                  |     __asm ("stmdaeq r0, {r3, r5, r6, ip, pc}");
    0x080068c0 stmdaeq r0, {r3, r5, r6, ip, pc}                                  |     __asm ("stmdaeq r0, {r3, r5, r6, ip, pc}");
    0x080068c4 stmdaeq r0, {r0, r4, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r0, r4, r7, fp, sp, lr, pc}");
    0x080068c8 b 0x800675c                                                       |     goto label_22;
                                                                                 | label_38:
    0x080068cc mov r0, r4                                                        |     r0 = r4;
    0x080068d0 str r3, [sp, 0x18]                                                |     var_18h = r3;
    0x080068d4 stmdaeq r0, {r0, r4, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r0, r4, r6, r7, fp, sp, lr, pc}");
    0x080068d8 ldrb r2, [r4, 0x64]                                               |     r2 = *((r4 + 0x64));
    0x080068dc ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x080068e0 and r1, r2, 0x60                                                  |     r1 = r2 & 0x60;
    0x080068e4 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x080068e8 cmp r1, 0x40                                                      |     
                                                                                 |     if (r1 == 0x40) {
    0x080068ec beq 0x8006914                                                     |         goto label_53;
                                                                                 |     }
    0x080068f0 cmp r1, 0x60                                                      |     
                                                                                 |     if (r1 != 0x60) {
    0x080068f4 bne 0x80063d4                                                     |         goto label_23;
                                                                                 |     }
    0x080068f8 ldr r1, [r4, 0xa4]                                                |     r1 = *((r4 + 0xa4));
    0x080068fc sub r1, r1, r0                                                    |     r1 -= r0;
    0x08006900 ldrh r0, [r4, 0x6c]                                               |     r0 = *((r4 + 0x6c));
    0x08006904 cmn r1, r0                                                        |     
    0x08006908 bfcmi r2, 5, 2                                                    |     __asm ("bfcmi r2, 5, 2");
                                                                                 |     if (r1 >= r0) {
    0x0800690c strbmi r2, [r4, 0x64]                                             |         *((r4 + 0x64)) = r2;
                                                                                 |     }
    0x08006910 b 0x80063d4                                                       |     goto label_23;
                                                                                 | label_53:
    0x08006914 ldr r2, [r4, 0x6c]                                                |     r2 = *((r4 + 0x6c));
    0x08006918 sub r1, r3, r0                                                    |     r1 = r3 - r0;
    0x0800691c str r2, [sp, 0x18]                                                |     var_18h = r2;
    0x08006920 mov r2, 0                                                         |     r2 = 0;
    0x08006924 str r3, [sp, 0x1c]                                                |     var_1ch = r3;
    0x08006928 stmdaeq r0, {r0, r3, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r0, r3, r7, fp, sp, lr, pc}");
    0x0800692c ldr r2, [sp, 0x18]                                                |     r2 = var_18h;
    0x08006930 mvn r1, r0                                                        |     r1 = ~r0;
    0x08006934 ldr r3, [sp, 0x1c]                                                |     r3 = var_1ch;
    0x08006938 sub r2, r2, 1                                                     |     r2--;
    0x0800693c sub r2, r2, r0                                                    |     r2 -= r0;
    0x08006940 cmp r1, r2                                                        |     
                                                                                 |     if (r1 <= r2) {
    0x08006944 addhi r2, r2, 1                                                   |         r2++;
                                                                                 |     }
    0x08006948 str r2, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r2;
    0x0800694c b 0x80063d4                                                       |     goto label_23;
                                                                                 | label_52:
    0x08006950 add r1, r8, 8                                                     |     r1 = r8 + 8;
    0x08006954 stmdaeq r0, {r2, r4, r7, ip, pc}                                  |     __asm ("stmdaeq r0, {r2, r4, r7, ip, pc}");
    0x08006958 stmdaeq r0, {r2, r4, r7, ip, pc}                                  |     __asm ("stmdaeq r0, {r2, r4, r7, ip, pc}");
    0x0800695c stmdaeq r0, {r0, r4, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r0, r4, r7, fp, sp, lr, pc}");
    0x08006960 b 0x800675c                                                       |     goto label_22;
                                                                                 | }
    ; 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/vxlan.ko @ 0x8003d30 */
                                                                                     | #include <stdint.h>
                                                                                     |  
                                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                     |  
    ; (fcn) sym.vxlan_uninit ()                                                      | void vxlan_uninit (int32_t arg1) {
                                                                                     |     r0 = arg1;
    0x08003d30 push {r4, r5, r6, lr}                                                 |     
    0x08003d34 add r5, r0, 0x540                                                     |     r5 = r0 + 0x540;
    0x08003d38 mov r4, r0                                                            |     r4 = r0;
    0x08003d3c add r0, r5, 0x8c                                                      |     r0 = r5 + 0x8c;
    0x08003d40 stmdaeq r0, {r0, r7, fp, sp, lr, pc}                                  |     __asm ("stmdaeq r0, {r0, r7, fp, sp, lr, pc}");
    0x08003d44 mov r3, sp                                                            |     r3 = sp;
    0x08003d48 bic r1, r3, 0x1fc0                                                    |     r1 = BIT_MASK (r3, 0x1fc0);
    0x08003d4c ldr r2, [r4, 0x608]                                                   |     r2 = *((r4 + 0x608));
    0x08003d50 bic r1, r1, 0x3f                                                      |     r1 = BIT_MASK (r1, 0x3f);
    0x08003d54 ldr r3, [r1, 4]                                                       |     r3 = *((r1 + 4));
    0x08003d58 add r3, r3, 0x200                                                     |     r3 += 0x200;
    0x08003d5c add r3, r3, 1                                                         |     r3++;
    0x08003d60 str r3, [r1, 4]                                                       |     *((r1 + 4)) = r3;
    0x08003d64 ldr r1, [pc, 0x34]                                                    |     r1 = *(0x8003d9c);
    0x08003d68 mov r0, r5                                                            |     r0 = r5;
    0x08003d6c bl 0x8001dac                                                          |     r0 = vxlan_find_mac ();
    0x08003d70 subs r1, r0, 0                                                        |     r1 = r0 - 0;
                                                                                     |     if (r1 != r0) {
    0x08003d74 beq 0x8003d88                                                         |         
    0x08003d78 mov r3, 1                                                             |         r3 = 1;
    0x08003d7c mov r0, r5                                                            |         r0 = r5;
    0x08003d80 mov r2, r3                                                            |         r2 = r3;
    0x08003d84 bl 0x80038b8                                                          |         vxlan_fdb_destroy ();
                                                                                     |     }
    0x08003d88 ldr r0, [pc, 0x14]                                                    |     r0 = "Provided_link_layer_address_is_not_Ethernet";
    0x08003d8c movw r1, 0x201                                                        |     r1 = 0x201;
    0x08003d90 stmdaeq r0, {r0, r3, r5, fp, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r0, r3, r5, fp, sp, lr, pc}");
    0x08003d94 ldr r0, [r4, 0x2c0]                                                   |     r0 = *((r4 + 0x2c0));
    0x08003d98 pop {r4, r5, r6, lr}                                                  |     
    0x08003d9c stmdaeq r0, {r0, r2, r3, r4, r5, r6, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r5, r6, r8, sb, sl, sp, lr, pc}");
    0x08003da0 stmdaeq r0, {r6, r7, ip, pc}                                          |     __asm ("stmdaeq r0, {r6, r7, ip, pc}");
    0x08003da4 stmdaeq r0, {r4, r5, r6}                                              |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                                     | }

[*] Function strcat used 1 times vxlan.ko