[*] Binary protection state of vxlan.ko

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


[*] Function popen tear down of vxlan.ko

    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/drivers/net/vxlan.ko @ 0x8005348 */
                                                                             | #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;
    0x08005348 push {r4, r5, r6, r7, r8, lr}                                 |     
    0x0800534c mov r4, r3                                                    |     r4 = r3;
    0x08005350 sub sp, sp, 8                                                 |     
    0x08005354 ldr r3, [sp, 0x30]                                            |     r3 = *(arg_30h);
    0x08005358 ldrh r8, [sp, 0x20]                                           |     r8 = *(arg_20h);
    0x0800535c cmp r3, 0                                                     |     
    0x08005360 blt 0x8005370                                                 |     
                                                                             |     while ((r3 & 0x30000000) != 0) {
    0x08005364 mov r0, 0                                                     |         r0 = 0;
                                                                             | label_0:
    0x08005368 add sp, sp, 8                                                 |         
    0x0800536c pop {r4, r5, r6, r7, r8, pc}                                  |         
    0x08005370 tst r3, 0x30000000                                            |         
    0x08005374 bne 0x8005364                                                 |         
                                                                             |     }
    0x08005378 mov r6, r0                                                    |     r6 = r0;
    0x0800537c ldr r0, [sp, 0x2c]                                            |     r0 = *(arg_2ch);
    0x08005380 mov r5, r2                                                    |     r5 = r2;
    0x08005384 mov r7, r1                                                    |     r7 = r1;
    0x08005388 stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r4, r5, r6, r7, r8, sb, sl, sp, lr, pc}");
    0x0800538c ldr r3, [sp, 0x24]                                            |     r3 = *(arg_24h);
    0x08005390 ldrh r1, [r4]                                                 |     r1 = *(r4);
    0x08005394 mov r2, r8                                                    |     r2 = r8;
    0x08005398 str r3, [sp]                                                  |     *(sp) = r3;
    0x0800539c ldr r3, [r5, 0xe0]                                            |     r3 = *((r5 + 0xe0));
    0x080053a0 ldr r0, [r5, 0x2c]                                            |     r0 = *((r5 + 0x2c));
    0x080053a4 bl 0x8001408                                                  |     r0 = vxlan_find_sock ();
    0x080053a8 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x080053ac beq 0x80053e8                                                 |         
    0x080053b0 ldr r2, [sp, 0x28]                                            |         r2 = *(arg_28h);
    0x080053b4 ldr r1, [sp, 0x24]                                            |         r1 = *(arg_24h);
    0x080053b8 bl 0x8000070                                                  |         r0 = vxlan_vs_find_vni ();
    0x080053bc subs r2, r0, 0                                                |         r2 = r0 - 0;
                                                                             |         if (r2 == r0) {
    0x080053c0 beq 0x80053e8                                                 |             goto label_1;
                                                                             |         }
    0x080053c4 mov r0, r6                                                    |         r0 = r6;
    0x080053c8 mov r4, 1                                                     |         r4 = 1;
    0x080053cc ldr r3, [sp, 0x28]                                            |         r3 = *(arg_28h);
    0x080053d0 mov r1, r5                                                    |         r1 = r5;
    0x080053d4 str r4, [sp]                                                  |         *(sp) = r4;
    0x080053d8 bl 0x80051b4                                                  |         vxlan_encap_bypass ();
    0x080053dc mov r0, r4                                                    |         r0 = r4;
    0x080053e0 add sp, sp, 8                                                 |         
    0x080053e4 pop {r4, r5, r6, r7, r8, pc}                                  |         
                                                                             |     }
                                                                             | label_1:
    0x080053e8 ldr r3, [r7, 0xc4]                                            |     r3 = *((r7 + 0xc4));
    0x080053ec mov r0, r6                                                    |     r0 = r6;
    0x080053f0 add r3, r3, 1                                                 |     r3++;
    0x080053f4 str r3, [r7, 0xc4]                                            |     *((r7 + 0xc4)) = r3;
    0x080053f8 stmdaeq r0, {r4, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r7, fp, sp, lr, pc}");
    0x080053fc mvn r0, 1                                                     |     r0 = ~1;
    0x08005400 b 0x8005368                                                   |     goto label_0;
                                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/drivers/net/vxlan.ko @ 0x8002d28 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.vxlan_err_lookup ()                              | void vxlan_err_lookup (int32_t arg1, int32_t arg2) {
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x08002d28 push {r4, r5, r6, lr}                             |     
    0x08002d2c mov r4, r1                                        |     r4 = r1;
    0x08002d30 mov r5, r0                                        |     r5 = r0;
    0x08002d34 ldr ip, [r1, 0xa4]                                |     ip = *((r1 + 0xa4));
    0x08002d38 ldrh r2, [r1, 0x96]                               |     r2 = *((r1 + 0x96));
    0x08002d3c ldr r1, [r1, 0xa8]                                |     r1 = *((r1 + 0xa8));
    0x08002d40 add r3, ip, r2                                    |     r3 = ip + r2;
    0x08002d44 sub r3, r3, r1                                    |     r3 -= r1;
    0x08002d48 ldrd r0, r1, [r4, 0x54]                           |     __asm ("ldrd r0, r1, [r4, 0x54]");
    0x08002d4c add r3, r3, 0x10                                  |     r3 += 0x10;
    0x08002d50 sub lr, r0, r1                                    |     lr = r0 - r1;
    0x08002d54 cmp r3, lr                                        |     
    0x08002d58 bhi 0x8002da4                                     |     
                                                                 |     while (1) {
    0x08002d5c add r2, r2, 8                                     |         r2 += 8;
    0x08002d60 add r1, ip, r2                                    |         r1 = ip + r2;
    0x08002d64 ldr r3, [ip, r2]                                  |         r3 = *((ip + r2));
    0x08002d68 tst r3, 8                                         |         
                                                                 |         if ((r3 & 8) == 0) {
    0x08002d6c beq 0x8002dd8                                     |             goto label_0;
                                                                 |         }
    0x08002d70 ldr r3, [r5, 0x1b8]                               |         r3 = *((r5 + 0x1b8));
    0x08002d74 bic r0, r3, 3                                     |         r0 = BIT_MASK (r3, 3);
    0x08002d78 cmp r3, 3                                         |         
                                                                 |         if (r3 < 3) {
    0x08002d7c bls 0x8002dd0                                     |             goto label_1;
                                                                 |         }
    0x08002d80 ldr r2, [r1, 4]                                   |         r2 = *((r1 + 4));
    0x08002d84 ldr r3, [r4, 8]                                   |         r3 = *((r4 + 8));
    0x08002d88 lsl r2, r2, 8                                     |         r2 <<= 8;
    0x08002d8c ldr r1, [r3, 0xa8]                                |         r1 = *((r3 + 0xa8));
    0x08002d90 bl 0x8000070                                      |         r0 = vxlan_vs_find_vni ();
    0x08002d94 cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x08002d98 beq 0x8002dd0                                     |             goto label_1;
                                                                 |         }
    0x08002d9c mov r0, 0                                         |         r0 = 0;
    0x08002da0 pop {r4, r5, r6, pc}                              |         
    0x08002da4 cmp r3, r0                                        |         
                                                                 |         if (r3 > r0) {
    0x08002da8 bhi 0x8002dd8                                     |             goto label_0;
                                                                 |         }
    0x08002dac sub r1, r1, r0                                    |         r1 -= r0;
    0x08002db0 mov r0, r4                                        |         r0 = r4;
    0x08002db4 add r1, r1, r3                                    |         r1 += r3;
    0x08002db8 stmdaeq r0, {r4, r5, r6, fp, sp, lr, pc}          |         __asm ("stmdaeq r0, {r4, r5, r6, fp, sp, lr, pc}");
    0x08002dbc cmp r0, 0                                         |         
                                                                 |         if (r0 == 0) {
    0x08002dc0 beq 0x8002dd8                                     |             goto label_0;
                                                                 |         }
    0x08002dc4 ldr ip, [r4, 0xa4]                                |         ip = *((r4 + 0xa4));
    0x08002dc8 ldrh r2, [r4, 0x96]                               |         r2 = *((r4 + 0x96));
    0x08002dcc b 0x8002d5c                                       |         
                                                                 |     }
                                                                 | label_1:
    0x08002dd0 mvn r0, 1                                         |     r0 = ~1;
    0x08002dd4 pop {r4, r5, r6, pc}                              |     
                                                                 | label_0:
    0x08002dd8 mvn r0, 0x15                                      |     r0 = ~0x15;
    0x08002ddc pop {r4, r5, r6, pc}                              |     
                                                                 | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/drivers/net/vxlan.ko @ 0x8005fc0 */
                                                                                 | #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_1h;
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_4h;
                                                                                 |     int32_t var_8h;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     int32_t var_18h;
                                                                                 |     int32_t var_18h_2;
                                                                                 |     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;
    0x08005fc0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08005fc4 mov r4, r1                                                        |     r4 = r1;
    0x08005fc8 mov r6, r0                                                        |     r6 = r0;
    0x08005fcc ldr r1, [r1, 0x54]                                                |     r1 = *((r1 + 0x54));
    0x08005fd0 sub sp, sp, 0x4c                                                  |     
    0x08005fd4 ldr r3, [r4, 0x58]                                                |     r3 = *((r4 + 0x58));
    0x08005fd8 sub r2, r1, r3                                                    |     r2 = r1 - r3;
    0x08005fdc cmp r2, 0xf                                                       |     
                                                                                 |     if (r2 < 0xf) {
    0x08005fe0 bls 0x80060bc                                                     |         goto label_24;
                                                                                 |     }
                                                                                 | label_1:
    0x08005fe4 ldrh r2, [r4, 0x96]                                               |     r2 = *((r4 + 0x96));
    0x08005fe8 add ip, sp, 0x24                                                  |     
    0x08005fec ldr r3, [r4, 0xa4]                                                |     r3 = *((r4 + 0xa4));
    0x08005ff0 add r2, r2, 8                                                     |     r2 += 8;
    0x08005ff4 add r3, r3, r2                                                    |     r3 += r2;
    0x08005ff8 ldm r3, {r0, r1}                                                  |     r0 = *(r3);
                                                                                 |     r1 = *((r3 + 4));
    0x08005ffc stm ip, {r0, r1}                                                  |     *(ip) = r0;
                                                                                 |     *((ip + 4)) = r1;
    0x08006000 mov fp, r0                                                        |     
    0x08006004 mov r5, r1                                                        |     r5 = r1;
    0x08006008 tst r0, 8                                                         |     
                                                                                 |     if ((r0 & 8) == 0) {
    0x0800600c beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x08006010 ldr r6, [r6, 0x1b8]                                               |     r6 = *((r6 + 0x1b8));
    0x08006014 bic r8, r0, 8                                                     |     r8 = BIT_MASK (r0, 8);
    0x08006018 str r8, [sp, 0x24]                                                |     var_24h = r8;
    0x0800601c cmp r6, 3                                                         |     
    0x08006020 bhi 0x8006038                                                     |     
                                                                                 |     while (r7 == r0) {
                                                                                 | label_0:
    0x08006024 mov r0, r4                                                        |         r0 = r4;
    0x08006028 stmdaeq r0, {r4, r7, fp, sp, lr, pc}                              |         __asm ("stmdaeq r0, {r4, r7, fp, sp, lr, pc}");
                                                                                 | label_2:
    0x0800602c mov r0, 0                                                         |         r0 = 0;
    0x08006030 add sp, sp, 0x4c                                                  |         
    0x08006034 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |         
    0x08006038 ldr r3, [r4, 8]                                                   |         r3 = *((r4 + 8));
    0x0800603c bic r6, r6, 3                                                     |         r6 = BIT_MASK (r6, 3);
    0x08006040 lsl sl, r5, 8                                                     |         sl = r5 << 8;
    0x08006044 mov r0, r6                                                        |         r0 = r6;
    0x08006048 mov r2, sl                                                        |         r2 = sl;
    0x0800604c ldr r1, [r3, 0xa8]                                                |         r1 = *((r3 + 0xa8));
    0x08006050 bl 0x8000070                                                      |         r0 = vxlan_vs_find_vni ();
    0x08006054 subs r7, r0, 0                                                    |         r7 = r0 - 0;
    0x08006058 beq 0x8006024                                                     |         
                                                                                 |     }
    0x0800605c add sb, r6, 0x1000                                                |     sb = r6 + 0x1000;
    0x08006060 ldr r3, [sb, 0x10]                                                |     r3 = *((sb + 0x10));
    0x08006064 ands r3, r3, 0x4000                                               |     r3 &= 0x4000;
                                                                                 |     if (r3 == r3) {
    0x08006068 beq 0x80060e0                                                     |         goto label_25;
                                                                                 |     }
    0x0800606c tst r8, 4                                                         |     
    0x08006070 uxtb r3, r8                                                       |     r3 = (int8_t) r8;
                                                                                 |     if ((r8 & 4) == 0) {
    0x08006074 beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x08006078 tst r3, 0x31                                                      |     
                                                                                 |     if ((r3 & 0x31) != 0) {
    0x0800607c bne 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x08006080 ubfx r3, r8, 0x18, 8                                              |     r3 = (r8 >> 0x18) & ((1 << 8) - 1);
    0x08006084 sub r3, r3, 1                                                     |     r3--;
    0x08006088 uxtb r3, r3                                                       |     r3 = (int8_t) r3;
    0x0800608c cmp r3, 4                                                         |     
                                                                                 |     if (r3 > 4) {
    0x08006090 bhi 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x08006094 ldr r2, [pc, 0x828]                                               |     r2 = *(0x80068c0);
    0x08006098 lsl r3, r3, 1                                                     |     r3 <<= 1;
    0x0800609c ldrh r2, [r2, r3]                                                 |     r2 = *((r2 + r3));
    0x080060a0 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x080060a4 beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080060a8 bic fp, fp, 0xff000000                                            |     fp = BIT_MASK (fp, 0xff000000);
    0x080060ac mov r8, 1                                                         |     r8 = 1;
    0x080060b0 bic fp, fp, 0x3d                                                  |     fp = BIT_MASK (fp, 0x3d);
    0x080060b4 str fp, [sp, 0x24]                                                |     var_24h = fp;
    0x080060b8 b 0x80060e8                                                       |     goto label_26;
                                                                                 | label_24:
    0x080060bc cmp r1, 0xf                                                       |     
                                                                                 |     if (r1 < 0xf) {
    0x080060c0 bls 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080060c4 add r3, r3, 0x10                                                  |     r3 += 0x10;
    0x080060c8 mov r0, r4                                                        |     r0 = r4;
    0x080060cc sub r1, r3, r1                                                    |     r1 = r3 - r1;
    0x080060d0 stmdaeq r0, {r4, r5, r6, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r5, r6, fp, sp, lr, pc}");
    0x080060d4 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x080060d8 beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080060dc b 0x8005fe4                                                       |     goto label_1;
                                                                                 | label_25:
    0x080060e0 mov r8, r3                                                        |     r8 = r3;
    0x080060e4 movw r2, 0x5865                                                   |     r2 = 0x5865;
                                                                                 | label_26:
    0x080060e8 ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x080060ec mov r0, r4                                                        |     r0 = r4;
    0x080060f0 ldr r1, [r7, 0x2c]                                                |     r1 = *((r7 + 0x2c));
    0x080060f4 ldr r3, [r3, 0x2b4]                                               |     r3 = *((r3 + 0x2b4));
    0x080060f8 subs r3, r3, r1                                                   |     r3 -= r1;
    0x080060fc mov r1, 0x10                                                      |     r1 = 0x10;
                                                                                 |     if (r3 == r3) {
    0x08006100 movne r3, 1                                                       |         r3 = 1;
                                                                                 |     }
    0x08006104 str r3, [sp]                                                      |     *(sp) = r3;
    0x08006108 mov r3, r8                                                        |     r3 = r8;
    0x0800610c stmdaeq r0, {r5, r6, r7, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r5, r6, r7, fp, sp, lr, pc}");
    0x08006110 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08006114 bne 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x08006118 ldr r2, [sb, 0x10]                                                |     r2 = *((sb + 0x10));
    0x0800611c and fp, r5, 0xff000000                                            |     
    0x08006120 tst r2, 0x400                                                     |     
                                                                                 |     if ((r2 & 0x400) != 0) {
    0x08006124 bne 0x80062b0                                                     |         goto label_27;
                                                                                 |     }
                                                                                 | label_4:
    0x08006128 ands r1, r2, 0x2000                                               |     r1 = r2 & 0x2000;
                                                                                 |     if (r1 != r2) {
    0x0800612c bne 0x800626c                                                     |         goto label_28;
                                                                                 |     }
    0x08006130 stmdaeq r0, {r2, r5, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r5, r6, r7, fp, sp, lr, pc}");
    0x08006134 stmdaeq r0, {r2, r5, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r5, r6, r7, fp, sp, lr, pc}");
    0x08006138 ldr r3, [r3]                                                      |     r3 = *(r3);
    0x0800613c cmp r3, 0                                                         |     
                                                                                 |     if (r3 > 0) {
    0x08006140 bgt 0x800626c                                                     |         goto label_28;
                                                                                 |     }
    0x08006144 add r0, sp, 0x20                                                  |     r0 += var_20h;
    0x08006148 str r1, [sp, 0x20]                                                |     var_20h = r1;
                                                                                 | label_3:
    0x0800614c ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x08006150 tst r2, 0x800                                                     |     
                                                                                 |     if ((r2 & 0x800) != 0) {
    0x08006154 bne 0x80063ac                                                     |         goto label_29;
                                                                                 |     }
                                                                                 | label_5:
    0x08006158 orrs r3, r3, fp                                                   |     r3 |= fp;
                                                                                 |     if (r3 != r3) {
    0x0800615c bne 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x08006160 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006164 cmp r8, 0                                                         |     
    0x08006168 ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x0800616c sub r2, r0, ip                                                    |     r2 = r0 - ip;
    0x08006170 uxth r2, r2                                                       |     r2 = (int16_t) r2;
                                                                                 |     if (r8 == 0) {
    0x08006174 beq 0x8006420                                                     |         goto label_30;
                                                                                 |     }
    0x08006178 ldrb r1, [r4, 0x64]                                               |     r1 = *((r4 + 0x64));
    0x0800617c strh r2, [r4, 0x9a]                                               |     *((r4 + 0x9a)) = r2;
    0x08006180 ldrh lr, [r4, 0x98]                                               |     
    0x08006184 bfi r1, r3, 0, 3                                                  |     value_0 = BIT_MASK (0, 3);
                                                                                 |     value_1 = r3 & value_0;
                                                                                 |     value_0 = ~value_0;
                                                                                 |     r1 &= value_0;
                                                                                 |     r1 |= value_1;
    0x08006188 ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x0800618c str r3, [r4, 8]                                                   |     *((r4 + 8)) = r3;
    0x08006190 strb r1, [r4, 0x64]                                               |     *((r4 + 0x64)) = r1;
                                                                                 | label_6:
    0x08006194 strh r2, [r4, 0x98]                                               |     *((r4 + 0x98)) = r2;
    0x08006198 add r8, ip, lr                                                    |     r8 = ip + lr;
    0x0800619c ldrh r3, [r4, 0x94]                                               |     r3 = *((r4 + 0x94));
    0x080061a0 ldr r2, [r6, 8]                                                   |     r2 = *((r6 + 8));
    0x080061a4 ldrh r5, [r4, 0x5c]                                               |     r5 = *((r4 + 0x5c));
    0x080061a8 ldr r2, [r2, 0x10]                                                |     r2 = *((r2 + 0x10));
    0x080061ac ldrh r2, [r2, 0x10]                                               |     r2 = *((r2 + 0x10));
    0x080061b0 cmp r2, 2                                                         |     
                                                                                 |     if (r2 == 2) {
    0x080061b4 beq 0x80064f4                                                     |         goto label_31;
                                                                                 |     }
    0x080061b8 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x080061bc beq 0x8006544                                                     |         goto label_32;
                                                                                 |     }
    0x080061c0 movw r2, 0xa888                                                   |     r2 = 0xa888;
    0x080061c4 cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x080061c8 beq 0x8006544                                                     |         goto label_32;
                                                                                 |     }
                                                                                 | label_9:
    0x080061cc cmp r3, 8                                                         |     
                                                                                 |     if (r3 == 8) {
    0x080061d0 beq 0x80065d4                                                     |         goto label_33;
                                                                                 |     }
    0x080061d4 movw r2, 0xdd86                                                   |     r2 = 0xdd86;
    0x080061d8 cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x080061dc bne 0x8006214                                                     |         
    0x080061e0 ldrh r3, [r4, 0x98]                                               |         r3 = *((r4 + 0x98));
    0x080061e4 ldr r2, [r4, 0xa4]                                                |         r2 = *((r4 + 0xa4));
    0x080061e8 ldrh r2, [r2, r3]                                                 |         r2 = *((r2 + r3));
    0x080061ec rev16 r2, r2                                                      |         __asm ("rev16 r2, r2");
    0x080061f0 ubfx r2, r2, 4, 8                                                 |         r2 = (r2 >> 4) & ((1 << 8) - 1);
                                                                                 | label_12:
    0x080061f4 ldrh r1, [r8]                                                     |         r1 = *(r8);
    0x080061f8 mov r0, r4                                                        |         r0 = r4;
    0x080061fc rev16 r1, r1                                                      |         __asm ("rev16 r1, r1");
    0x08006200 ubfx r1, r1, 4, 8                                                 |         r1 = (r1 >> 4) & ((1 << 8) - 1);
    0x08006204 bl 0x8002430                                                      |         r0 = INET_ECN_decapsulate ();
    0x08006208 mov r5, r0                                                        |         r5 = r0;
                                                                                 | label_8:
    0x0800620c cmp r5, 0                                                         |         
                                                                                 |         if (r5 != 0) {
    0x08006210 bne 0x8006694                                                     |             goto label_34;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_7:
    0x08006214 stmdaeq r0, {r7, r8, sb, sl, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r7, r8, sb, sl, sp, lr, pc}");
    0x08006218 ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x0800621c ldr r2, [r3, 0x130]                                               |     r2 = *((r3 + 0x130));
    0x08006220 tst r2, 1                                                         |     
                                                                                 |     if ((r2 & 1) == 0) {
    0x08006224 beq 0x8006798                                                     |         goto label_35;
                                                                                 |     }
    0x08006228 ldr r3, [r3, 0x2c0]                                               |     r3 = *((r3 + 0x2c0));
    0x0800622c mov r1, r4                                                        |     r1 = r4;
    0x08006230 ldr ip, [r4, 0x54]                                                |     ip = *((r4 + 0x54));
    0x08006234 add r0, r7, 0x8c                                                  |     r0 = r7 + 0x8c;
    0x08006238 ldr r2, [r3, 8]                                                   |     r2 = *((r3 + 8));
    0x0800623c ldr lr, [r3, 0xc]                                                 |     
    0x08006240 adds r2, r2, ip                                                   |     r2 += ip;
    0x08006244 str r2, [r3, 8]                                                   |     *((r3 + 8)) = r2;
    0x08006248 ldm r3, {r2, ip}                                                  |     r2 = *(r3);
                                                                                 |     ip = *((r3 + 4));
    0x0800624c adc lr, lr, 0                                                     |     __asm ("adc lr, lr, 0");
    0x08006250 str lr, [r3, 0xc]                                                 |     
    0x08006254 adds r2, r2, 1                                                    |     r2++;
    0x08006258 adc ip, ip, 0                                                     |     __asm ("adc ip, ip, 0");
    0x0800625c stm r3, {r2, ip}                                                  |     *(r3) = r2;
                                                                                 |     *((r3 + 4)) = ip;
    0x08006260 stmdaeq r0, {r3, r5, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r5, r6, r7, fp, sp, lr, pc}");
    0x08006264 stmdaeq r0, {r2, r7, r8, sb, sl, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r7, r8, sb, sl, sp, lr, pc}");
    0x08006268 b 0x800602c                                                       |     goto label_2;
                                                                                 | label_28:
    0x0800626c ldr r3, [r6, 8]                                                   |     r3 = *((r6 + 8));
    0x08006270 mov r0, r4                                                        |     r0 = r4;
    0x08006274 mov r2, 0x400                                                     |     r2 = 0x400;
    0x08006278 ldr r3, [r3, 0x10]                                                |     r3 = *((r3 + 0x10));
    0x0800627c ldrh r1, [r3, 0x10]                                               |     r1 = *((r3 + 0x10));
    0x08006280 mov r3, 4                                                         |     r3 = 4;
    0x08006284 str sl, [sp, 4]                                                   |     var_4h = sl;
    0x08006288 str r3, [sp, 8]                                                   |     var_8h = r3;
    0x0800628c mov r3, 0                                                         |     r3 = 0;
    0x08006290 str r3, [sp]                                                      |     *(sp) = r3;
    0x08006294 stmdaeq r0, {r2, r3, r5, r6, r7, fp, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r6, r7, fp, sp, lr, pc}");
    0x08006298 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800629c beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080062a0 str r0, [r4, 0x48]                                                |     *((r4 + 0x48)) = r0;
    0x080062a4 add r0, r0, 0x90                                                  |     r0 += 0x90;
    0x080062a8 ldr r2, [sb, 0x10]                                                |     r2 = *((sb + 0x10));
    0x080062ac b 0x800614c                                                       |     goto label_3;
                                                                                 | label_27:
    0x080062b0 ldr r3, [sp, 0x24]                                                |     r3 = var_24h;
    0x080062b4 tst r3, 0x2000                                                    |     
                                                                                 |     if ((r3 & 0x2000) != 0) {
    0x080062b8 beq 0x800639c                                                     |         
    0x080062bc ldrb r1, [r4, 0x67]                                               |         r1 = *((r4 + 0x67));
    0x080062c0 tst r1, 4                                                         |         
                                                                                 |         if ((r1 & 4) != 0) {
    0x080062c4 bne 0x800639c                                                     |             goto label_20;
                                                                                 |         }
    0x080062c8 and r1, r5, 0x7f000000                                            |         r1 = r5 & 0x7f000000;
    0x080062cc cmp fp, 0                                                         |         
    0x080062d0 rev r1, r1                                                        |         r1 = SWAP32 (r1);
    0x080062d4 ldr ip, [r4, 0x54]                                                |         ip = *((r4 + 0x54));
    0x080062d8 ldr r0, [r4, 0x58]                                                |         r0 = *((r4 + 0x58));
    0x080062dc lsl fp, r1, 1                                                     |         
                                                                                 |         if (fp < 0) {
    0x080062e0 movge r1, 0x10                                                    |             r1 = 0x10;
                                                                                 |         }
                                                                                 |         if (fp >= 0) {
    0x080062e4 movlt r1, 6                                                       |             r1 = 6;
                                                                                 |         }
    0x080062e8 str r1, [sp, 0x14]                                                |         var_14h = r1;
    0x080062ec add r1, fp, r1                                                    |         r1 = fp + r1;
    0x080062f0 sub lr, ip, r0                                                    |         lr = ip - r0;
    0x080062f4 str r1, [sp, 0x10]                                                |         var_10h = r1;
    0x080062f8 add r1, r1, 2                                                     |         r1 += 2;
    0x080062fc cmp r1, lr                                                        |         
                                                                                 |         if (r1 > lr) {
    0x08006300 bhi 0x80067c0                                                     |             goto label_36;
                                                                                 |         }
                                                                                 | label_21:
    0x08006304 ldrh r5, [r4, 0x96]                                               |         r5 = *((r4 + 0x96));
    0x08006308 tst r2, 0x1000                                                    |         
    0x0800630c ldr r2, [r4, 0xa4]                                                |         r2 = *((r4 + 0xa4));
    0x08006310 add r5, r5, 0x10                                                  |         r5 += 0x10;
    0x08006314 add r5, r2, r5                                                    |         r5 = r2 + r5;
                                                                                 |         if ((r2 & 0x1000) == 0) {
    0x08006318 beq 0x8006770                                                     |             goto label_37;
                                                                                 |         }
    0x0800631c ldrb r2, [r4, 0x64]                                               |         r2 = *((r4 + 0x64));
    0x08006320 and r2, r2, 0x60                                                  |         r2 &= 0x60;
    0x08006324 cmp r2, 0x40                                                      |         
                                                                                 |         if (r2 != 0x40) {
    0x08006328 bne 0x800682c                                                     |             goto label_38;
                                                                                 |         }
                                                                                 | label_23:
    0x0800632c mov r1, fp                                                        |         r1 = fp;
    0x08006330 ldr fp, [r4, 0x6c]                                                |         fp = *((r4 + 0x6c));
    0x08006334 mov r2, 0                                                         |         r2 = 0;
    0x08006338 mov r0, r5                                                        |         r0 = r5;
    0x0800633c str r3, [sp, 0x14]                                                |         var_14h = r3;
    0x08006340 stmdaeq r0, {r2, r3, r5, r7, fp, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r2, r3, r5, r7, fp, sp, lr, pc}");
    0x08006344 sub r2, fp, 1                                                     |         r2 = fp - 1;
    0x08006348 ldr r3, [sp, 0x10]                                                |         r3 = var_10h;
    0x0800634c sub r2, r2, r0                                                    |         r2 -= r0;
    0x08006350 mvn r0, r0                                                        |         r0 = ~r0;
    0x08006354 cmp r0, r2                                                        |         
                                                                                 |         if (r0 <= r2) {
    0x08006358 addhi r2, r2, 1                                                   |             r2++;
                                                                                 |         }
    0x0800635c add r2, r2, r2, ror 16                                            |         r2 += (r2 >>> 16);
    0x08006360 mvn r2, r2                                                        |         r2 = ~r2;
    0x08006364 ldrh r1, [r5, r3]                                                 |         r1 = *((r5 + r3));
    0x08006368 lsr r2, r2, 0x10                                                  |         r2 >>= 0x10;
    0x0800636c strh r2, [r5, r3]                                                 |         *((r5 + r3)) = r2;
    0x08006370 sub r2, r2, r1                                                    |         r2 -= r1;
    0x08006374 mvn r1, r1                                                        |         r1 = ~r1;
    0x08006378 sub r2, r2, 1                                                     |         r2--;
    0x0800637c ldr r3, [sp, 0x14]                                                |         r3 = var_14h;
    0x08006380 cmp r1, r2                                                        |         
                                                                                 |         if (r1 <= r2) {
    0x08006384 addhi r2, r2, 1                                                   |             r2++;
                                                                                 |         }
    0x08006388 ldr r1, [r4, 0x6c]                                                |         r1 = *((r4 + 0x6c));
    0x0800638c adds r2, r1, r2                                                   |         r2 = r1 + r2;
    0x08006390 adc r2, r2, 0                                                     |         __asm ("adc r2, r2, 0");
    0x08006394 str r2, [r4, 0x6c]                                                |         *((r4 + 0x6c)) = r2;
    0x08006398 ldr r2, [sb, 0x10]                                                |         r2 = *((sb + 0x10));
                                                                                 |     }
                                                                                 | label_20:
    0x0800639c bic r3, r3, 0x2000                                                |     r3 = BIT_MASK (r3, 0x2000);
    0x080063a0 mov fp, 0                                                         |     
    0x080063a4 str r3, [sp, 0x24]                                                |     var_24h = r3;
    0x080063a8 b 0x8006128                                                       |     goto label_4;
                                                                                 | label_29:
    0x080063ac tst r3, 0x80                                                      |     
                                                                                 |     if ((r3 & 0x80) != 0) {
    0x080063b0 beq 0x8006418                                                     |         
    0x080063b4 ldrh r1, [sp, 0x26]                                               |         r1 = var_26h;
    0x080063b8 rev16 r1, r1                                                      |         __asm ("rev16 r1, r1");
    0x080063bc uxth r1, r1                                                       |         r1 = (int16_t) r1;
    0x080063c0 str r1, [r0]                                                      |         *(r0) = r1;
    0x080063c4 ldr r1, [r4, 0x48]                                                |         r1 = *((r4 + 0x48));
    0x080063c8 cmp r1, 1                                                         |         
                                                                                 |         if (r1 >= 1) {
    0x080063cc bls 0x80063e8                                                     |             
    0x080063d0 bic r1, r1, 1                                                     |             r1 = BIT_MASK (r1, 1);
    0x080063d4 mov ip, 4                                                         |             
    0x080063d8 strb ip, [r1, 0x88]                                               |             *((r1 + 0x88)) = ip;
    0x080063dc ldrh ip, [r1, 0x70]                                               |             ip = *((r1 + 0x70));
    0x080063e0 orr ip, ip, 0x10                                                  |             
    0x080063e4 strh ip, [r1, 0x70]                                               |             *((r1 + 0x70)) = ip;
                                                                                 |         }
    0x080063e8 ldrb r1, [sp, 0x25]                                               |         r1 = var_25h;
    0x080063ec tst r1, 0x40                                                      |         
                                                                                 |         if ((r1 & 0x40) == 0) {
    0x080063f0 ldrne ip, [r0]                                                    |             ip = *(r0);
                                                                                 |         }
                                                                                 |         if ((r1 & 0x40) == 0) {
    0x080063f4 orrne ip, ip, 0x400000                                            |             
                                                                                 |         }
                                                                                 |         if ((r1 & 0x40) == 0) {
    0x080063f8 strne ip, [r0]                                                    |             *(r0) = ip;
                                                                                 |         }
    0x080063fc tst r1, 8                                                         |         
                                                                                 |         if ((r1 & 8) == 0) {
    0x08006400 ldrne r1, [r0]                                                    |             r1 = *(r0);
                                                                                 |         }
                                                                                 |         if ((r1 & 8) == 0) {
    0x08006404 orrne r1, r1, 0x80000                                             |             r1 |= 0x80000;
                                                                                 |         }
                                                                                 |         if ((r1 & 8) == 0) {
    0x08006408 strne r1, [r0]                                                    |             *(r0) = r1;
                                                                                 |         }
    0x0800640c tst r2, 0x2000                                                    |         
                                                                                 |         if ((r2 & 0x2000) != 0) {
    0x08006410 ldreq r2, [r0]                                                    |             r2 = *(r0);
                                                                                 |         }
                                                                                 |         if ((r2 & 0x2000) == 0) {
    0x08006414 streq r2, [r4, 0x88]                                              |             *((r4 + 0x88)) = r2;
                                                                                 |             goto label_39;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_39:
    0x08006418 and r3, r3, 0x7f                                                  |     r3 &= 0x7f;
    0x0800641c b 0x8006158                                                       |     goto label_5;
                                                                                 | label_30:
    0x08006420 ldr r3, [r4, 8]                                                   |     r3 = *((r4 + 8));
    0x08006424 mov r0, r4                                                        |     r0 = r4;
    0x08006428 ldr r5, [r3, 0xa8]                                                |     r5 = *((r3 + 0xa8));
    0x0800642c strh r2, [r4, 0x9a]                                               |     *((r4 + 0x9a)) = r2;
    0x08006430 ldr r1, [r7, 0x28]                                                |     r1 = *((r7 + 0x28));
    0x08006434 stmdaeq r0, {r4, r5, r6, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r4, r5, r6, r7, fp, sp, lr, pc}");
    0x08006438 ldrb r2, [r4, 0x64]                                               |     r2 = *((r4 + 0x64));
    0x0800643c ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x08006440 ldrh sb, [r4, 0x9a]                                               |     sb = *((r4 + 0x9a));
    0x08006444 and r3, r2, 0x60                                                  |     r3 = r2 & 0x60;
    0x08006448 cmp r3, 0x40                                                      |     
    0x0800644c strh r0, [r4, 0x94]                                               |     *((r4 + 0x94)) = r0;
    0x08006450 add sb, ip, sb                                                    |     sb = ip + sb;
                                                                                 |     if (r3 == 0x40) {
    0x08006454 beq 0x8006734                                                     |         goto label_40;
                                                                                 |     }
    0x08006458 cmp r3, 0x60                                                      |     
                                                                                 |     if (r3 == 0x60) {
    0x0800645c bne 0x8006478                                                     |         
    0x08006460 ldr r3, [r4, 0xa8]                                                |         r3 = *((r4 + 0xa8));
    0x08006464 ldrh r1, [r4, 0x6c]                                               |         r1 = *((r4 + 0x6c));
    0x08006468 sub r3, ip, r3                                                    |         r3 = ip - r3;
    0x0800646c cmn r3, r1                                                        |         
    0x08006470 bfimi r2, r8, 5, 2                                                |         __asm ("bfimi r2, r8, 5, 2");
                                                                                 |         if (r3 < r1) {
    0x08006474 strbmi r2, [r4, 0x64]                                             |             *((r4 + 0x64)) = r2;
                                                                                 |             goto label_19;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_19:
    0x08006478 ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x0800647c ldrh r2, [sb, 0xa]                                                |     r2 = *((sb + 0xa));
    0x08006480 ldr r1, [r3, 0x1c8]                                               |     r1 = *((r3 + 0x1c8));
    0x08006484 ldr r3, [sb, 6]                                                   |     r3 = *((sb + 6));
    0x08006488 ldr r0, [r1]                                                      |     r0 = *(r1);
    0x0800648c ldrh r1, [r1, 4]                                                  |     r1 = *((r1 + 4));
    0x08006490 eor r3, r3, r0                                                    |     r3 ^= r0;
    0x08006494 eor r2, r2, r1                                                    |     r2 ^= r1;
    0x08006498 orrs r3, r3, r2                                                   |     r3 |= r2;
                                                                                 |     if (r3 == r3) {
    0x0800649c beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080064a0 ldr r3, [r6, 8]                                                   |     r3 = *((r6 + 8));
    0x080064a4 ldrh lr, [r4, 0x98]                                               |     
    0x080064a8 ldr r3, [r3, 0x10]                                                |     r3 = *((r3 + 0x10));
    0x080064ac ldrh r8, [r3, 0x10]                                               |     r8 = *((r3 + 0x10));
    0x080064b0 add r3, ip, lr                                                    |     r3 = ip + lr;
    0x080064b4 cmp r8, 2                                                         |     
                                                                                 |     if (r8 == 2) {
    0x080064b8 addne r3, r3, 8                                                   |         r3 += 8;
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x080064bc addne fp, sp, 0x34                                                |         
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x080064c0 movne r8, 0xa                                                     |         r8 = 0xa;
                                                                                 |     }
                                                                                 |     if (r8 != 2) {
    0x080064c4 ldreq r3, [r3, 0xc]                                               |         r3 = *((r3 + 0xc));
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x080064c8 ldmne r3, {r0, r1, r2, r3}                                        |         r0 = *(r3);
                                                                                 |         r1 = *((r3 + 4));
                                                                                 |         r2 = *((r3 + 8));
                                                                                 |         r3 = *((r3 + 12));
                                                                                 |     }
                                                                                 |     if (r8 == 2) {
    0x080064cc stmne fp, {r0, r1, r2, r3}                                        |         *(fp) = r0;
                                                                                 |         *((fp + 4)) = r1;
                                                                                 |         *((fp + 8)) = r2;
                                                                                 |         *((fp + 12)) = r3;
                                                                                 |     }
                                                                                 |     if (r8 != 2) {
    0x080064d0 streq r3, [sp, 0x30]                                              |         var_30h = r3;
                                                                                 |     }
    0x080064d4 strh r8, [sp, 0x2c]                                               |     var_2ch = r8;
    0x080064d8 ldr r3, [r7, 0xe0]                                                |     r3 = *((r7 + 0xe0));
    0x080064dc tst r3, 1                                                         |     
                                                                                 |     if ((r3 & 1) != 0) {
    0x080064e0 bne 0x80066fc                                                     |         goto label_41;
                                                                                 |     }
    0x080064e4 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x080064e8 sub r2, r0, ip                                                    |     r2 = r0 - ip;
    0x080064ec uxth r2, r2                                                       |     r2 = (int16_t) r2;
    0x080064f0 b 0x8006194                                                       |     goto label_6;
                                                                                 | label_31:
    0x080064f4 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x080064f8 beq 0x80065e8                                                     |         goto label_42;
                                                                                 |     }
    0x080064fc movw r2, 0xa888                                                   |     r2 = 0xa888;
    0x08006500 cmp r3, r2                                                        |     
                                                                                 |     if (r3 == r2) {
    0x08006504 beq 0x80065e8                                                     |         goto label_42;
                                                                                 |     }
                                                                                 | label_13:
    0x08006508 cmp r3, 8                                                         |     
                                                                                 |     if (r3 == 8) {
    0x0800650c beq 0x8006680                                                     |         goto label_43;
                                                                                 |     }
    0x08006510 movw r2, 0xdd86                                                   |     r2 = 0xdd86;
    0x08006514 cmp r3, r2                                                        |     
                                                                                 |     if (r3 != r2) {
    0x08006518 bne 0x8006214                                                     |         goto label_7;
                                                                                 |     }
    0x0800651c ldrh r3, [r4, 0x98]                                               |     r3 = *((r4 + 0x98));
    0x08006520 ldr r2, [r4, 0xa4]                                                |     r2 = *((r4 + 0xa4));
    0x08006524 ldrh r2, [r2, r3]                                                 |     r2 = *((r2 + r3));
    0x08006528 rev16 r2, r2                                                      |     __asm ("rev16 r2, r2");
    0x0800652c ubfx r2, r2, 4, 8                                                 |     r2 = (r2 >> 4) & ((1 << 8) - 1);
                                                                                 | label_17:
    0x08006530 ldrb r1, [r8, 1]                                                  |     r1 = *((r8 + 1));
    0x08006534 mov r0, r4                                                        |     r0 = r4;
    0x08006538 bl 0x8002430                                                      |     r0 = INET_ECN_decapsulate ();
    0x0800653c mov r5, r0                                                        |     r5 = r0;
    0x08006540 b 0x800620c                                                       |     goto label_8;
                                                                                 | label_32:
    0x08006544 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x08006548 beq 0x8006678                                                     |         goto label_44;
                                                                                 |     }
    0x0800654c cmp r5, 3                                                         |     
                                                                                 |     if (r5 < 3) {
    0x08006550 bls 0x80067ec                                                     |         goto label_45;
                                                                                 |     }
    0x08006554 sub r5, r5, 4                                                     |     r5 -= 4;
                                                                                 | label_16:
    0x08006558 add sb, r5, 0x1c                                                  |     sb = r5 + 0x1c;
    0x0800655c movw sl, 0xa888                                                   |     sl = 0xa888;
                                                                                 | label_10:
    0x08006560 ldr ip, [r4, 0x54]                                                |     ip = *((r4 + 0x54));
    0x08006564 mov r1, r5                                                        |     r1 = r5;
    0x08006568 ldr lr, [r4, 0x58]                                                |     
    0x0800656c add r2, sp, 0x2c                                                  |     r2 += var_2ch;
    0x08006570 mov r3, 4                                                         |     r3 = 4;
    0x08006574 sub ip, ip, lr                                                    |     
    0x08006578 sub ip, ip, r5                                                    |     
    0x0800657c cmp ip, 3                                                         |     
                                                                                 |     if (ip > 3) {
    0x08006580 bgt 0x80065c8                                                     |         goto label_46;
                                                                                 |     }
    0x08006584 cmp r4, 0                                                         |     
                                                                                 |     if (r4 == 0) {
    0x08006588 beq 0x8006214                                                     |         goto label_7;
                                                                                 |     }
    0x0800658c mov r0, r4                                                        |     r0 = r4;
    0x08006590 stmdaeq r0, {r5, r6, fp, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r5, r6, fp, sp, lr, pc}");
    0x08006594 add r3, sp, 0x2c                                                  |     r3 += var_2ch;
    0x08006598 cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x0800659c blt 0x8006214                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_11:
    0x080065a0 cmp sb, r5                                                        |     
                                                                                 |     if (sb == r5) {
    0x080065a4 beq 0x8006214                                                     |         goto label_7;
                                                                                 |     }
    0x080065a8 ldrh r3, [r3, 2]                                                  |     r3 = *((r3 + 2));
    0x080065ac add r5, r5, 4                                                     |     r5 += 4;
    0x080065b0 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x080065b4 beq 0x80065c0                                                     |         goto label_47;
                                                                                 |     }
    0x080065b8 cmp r3, sl                                                        |     
                                                                                 |     if (r3 != sl) {
    0x080065bc bne 0x80061cc                                                     |         goto label_9;
                                                                                 |     }
                                                                                 | label_47:
    0x080065c0 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x080065c4 b 0x8006560                                                       |     goto label_10;
                                                                                 | label_46:
    0x080065c8 adds r3, r0, r5                                                   |     r3 = r0 + r5;
                                                                                 |     if (r3 != r0) {
    0x080065cc bne 0x80065a0                                                     |         goto label_11;
                                                                                 |     }
    0x080065d0 b 0x8006214                                                       |     goto label_7;
                                                                                 | label_33:
    0x080065d4 ldrh r2, [r4, 0x98]                                               |     r2 = *((r4 + 0x98));
    0x080065d8 ldr r3, [r4, 0xa4]                                                |     r3 = *((r4 + 0xa4));
    0x080065dc add r3, r3, r2                                                    |     r3 += r2;
    0x080065e0 ldrb r2, [r3, 1]                                                  |     r2 = *((r3 + 1));
    0x080065e4 b 0x80061f4                                                       |     goto label_12;
                                                                                 | label_42:
    0x080065e8 cmp r5, 0                                                         |     
                                                                                 |     if (r5 == 0) {
    0x080065ec beq 0x80066f4                                                     |         goto label_48;
                                                                                 |     }
    0x080065f0 cmp r5, 3                                                         |     
                                                                                 |     if (r5 <= 3) {
    0x080065f4 subhi r5, r5, 4                                                   |         r5 -= 4;
                                                                                 |     }
                                                                                 |     if (r5 < 3) {
    0x080065f8 bls 0x80067ec                                                     |         goto label_45;
                                                                                 |     }
                                                                                 | label_18:
    0x080065fc add sb, r5, 0x1c                                                  |     sb = r5 + 0x1c;
    0x08006600 movw sl, 0xa888                                                   |     sl = 0xa888;
                                                                                 | label_14:
    0x08006604 ldr ip, [r4, 0x54]                                                |     ip = *((r4 + 0x54));
    0x08006608 mov r1, r5                                                        |     r1 = r5;
    0x0800660c ldr lr, [r4, 0x58]                                                |     
    0x08006610 add r2, sp, 0x2c                                                  |     r2 += var_2ch;
    0x08006614 mov r3, 4                                                         |     r3 = 4;
    0x08006618 sub ip, ip, lr                                                    |     
    0x0800661c sub ip, ip, r5                                                    |     
    0x08006620 cmp ip, 3                                                         |     
                                                                                 |     if (ip > 3) {
    0x08006624 bgt 0x800666c                                                     |         goto label_49;
                                                                                 |     }
    0x08006628 cmp r4, 0                                                         |     
                                                                                 |     if (r4 == 0) {
    0x0800662c beq 0x8006214                                                     |         goto label_7;
                                                                                 |     }
    0x08006630 mov r0, r4                                                        |     r0 = r4;
    0x08006634 stmdaeq r0, {r5, r6, fp, sp, lr, pc}                              |     __asm ("stmdaeq r0, {r5, r6, fp, sp, lr, pc}");
    0x08006638 add r3, sp, 0x2c                                                  |     r3 += var_2ch;
    0x0800663c cmp r0, 0                                                         |     
                                                                                 |     if (r0 < 0) {
    0x08006640 blt 0x8006214                                                     |         goto label_7;
                                                                                 |     }
                                                                                 | label_15:
    0x08006644 cmp r5, sb                                                        |     
                                                                                 |     if (r5 == sb) {
    0x08006648 beq 0x8006214                                                     |         goto label_7;
                                                                                 |     }
    0x0800664c ldrh r3, [r3, 2]                                                  |     r3 = *((r3 + 2));
    0x08006650 add r5, r5, 4                                                     |     r5 += 4;
    0x08006654 cmp r3, 0x81                                                      |     
                                                                                 |     if (r3 == 0x81) {
    0x08006658 beq 0x8006664                                                     |         goto label_50;
                                                                                 |     }
    0x0800665c cmp r3, sl                                                        |     
                                                                                 |     if (r3 != sl) {
    0x08006660 bne 0x8006508                                                     |         goto label_13;
                                                                                 |     }
                                                                                 | label_50:
    0x08006664 ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006668 b 0x8006604                                                       |     goto label_14;
                                                                                 | label_49:
    0x0800666c adds r3, r0, r5                                                   |     r3 = r0 + r5;
                                                                                 |     if (r3 != r0) {
    0x08006670 bne 0x8006644                                                     |         goto label_15;
                                                                                 |     }
    0x08006674 b 0x8006214                                                       |     goto label_7;
                                                                                 | label_44:
    0x08006678 mov r5, 0xe                                                       |     r5 = 0xe;
    0x0800667c b 0x8006558                                                       |     goto label_16;
                                                                                 | label_43:
    0x08006680 ldrh r2, [r4, 0x98]                                               |     r2 = *((r4 + 0x98));
    0x08006684 ldr r3, [r4, 0xa4]                                                |     r3 = *((r4 + 0xa4));
    0x08006688 add r3, r3, r2                                                    |     r3 += r2;
    0x0800668c ldrb r2, [r3, 1]                                                  |     r2 = *((r3 + 1));
    0x08006690 b 0x8006530                                                       |     goto label_17;
                                                                                 | label_34:
    0x08006694 stmdaeq r0, {r2, r3, r6, r7, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r0, {r2, r3, r6, r7, sb, sl, fp, ip, pc}");
    0x08006698 stmdaeq r0, {r2, r3, r6, r7, sb, sl, fp, ip, pc}                  |     __asm ("stmdaeq r0, {r2, r3, r6, r7, sb, sl, fp, ip, pc}");
    0x0800669c ldrb r3, [r3, 0x18]                                               |     r3 = *((r3 + 0x18));
    0x080066a0 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x080066a4 beq 0x80066c8                                                     |         
    0x080066a8 ldr r3, [r6, 8]                                                   |         r3 = *((r6 + 8));
    0x080066ac ldr r3, [r3, 0x10]                                                |         r3 = *((r3 + 0x10));
    0x080066b0 ldrh r3, [r3, 0x10]                                               |         r3 = *((r3 + 0x10));
    0x080066b4 cmp r3, 2                                                         |         
                                                                                 |         if (r3 == 2) {
    0x080066b8 beq 0x8006808                                                     |             goto label_51;
                                                                                 |         }
    0x080066bc stmdaeq r0, {r3, r4, r5, r7, fp, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r3, r4, r5, r7, fp, sp, lr, pc}");
    0x080066c0 cmp r0, 0                                                         |         
                                                                                 |         if (r0 != 0) {
    0x080066c4 bne 0x80068b0                                                     |             goto label_52;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_22:
    0x080066c8 cmp r5, 1                                                         |     
                                                                                 |     if (r5 <= 1) {
    0x080066cc ble 0x8006214                                                     |         goto label_7;
                                                                                 |     }
    0x080066d0 ldr r2, [r7, 0x28]                                                |     r2 = *((r7 + 0x28));
    0x080066d4 ldr r3, [r2, 0xe4]                                                |     r3 = *((r2 + 0xe4));
    0x080066d8 add r3, r3, 1                                                     |     r3++;
    0x080066dc str r3, [r2, 0xe4]                                                |     *((r2 + 0xe4)) = r3;
    0x080066e0 ldr r2, [r7, 0x28]                                                |     r2 = *((r7 + 0x28));
    0x080066e4 ldr r3, [r2, 0xc0]                                                |     r3 = *((r2 + 0xc0));
    0x080066e8 add r3, r3, 1                                                     |     r3++;
    0x080066ec str r3, [r2, 0xc0]                                                |     *((r2 + 0xc0)) = r3;
    0x080066f0 b 0x8006024                                                       |     goto label_0;
                                                                                 | label_48:
    0x080066f4 mov r5, 0xe                                                       |     r5 = 0xe;
    0x080066f8 b 0x80065fc                                                       |     goto label_18;
                                                                                 | label_41:
    0x080066fc str sl, [sp]                                                      |     *(sp) = sl;
    0x08006700 mov r3, r5                                                        |     r3 = r5;
    0x08006704 add r2, sb, 6                                                     |     r2 = sb + 6;
    0x08006708 add r1, sp, 0x2c                                                  |     r1 += var_2ch;
    0x0800670c ldr r0, [r4, 8]                                                   |     r0 = *((r4 + 8));
    0x08006710 bl 0x8004f7c                                                      |     r0 = vxlan_snoop ();
    0x08006714 cmp r0, 0                                                         |     
                                                                                 |     if (r0 != 0) {
    0x08006718 bne 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x0800671c ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006720 ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x08006724 ldrh lr, [r4, 0x98]                                               |     
    0x08006728 sub r2, r0, ip                                                    |     r2 = r0 - ip;
    0x0800672c uxth r2, r2                                                       |     r2 = (int16_t) r2;
    0x08006730 b 0x8006194                                                       |     goto label_6;
                                                                                 | label_40:
    0x08006734 mov r2, r8                                                        |     r2 = r8;
    0x08006738 ldr r8, [r4, 0x6c]                                                |     r8 = *((r4 + 0x6c));
    0x0800673c mov r0, sb                                                        |     r0 = sb;
    0x08006740 mov r1, 0xe                                                       |     r1 = 0xe;
    0x08006744 stmdaeq r0, {r2, r3, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r3, r5, r7, fp, sp, lr, pc}");
    0x08006748 ldr ip, [r4, 0xa4]                                                |     ip = *((r4 + 0xa4));
    0x0800674c ldrh sb, [r4, 0x9a]                                               |     sb = *((r4 + 0x9a));
    0x08006750 sub r3, r8, 1                                                     |     r3 = r8 - 1;
    0x08006754 sub r3, r3, r0                                                    |     r3 -= r0;
    0x08006758 mvn r0, r0                                                        |     r0 = ~r0;
    0x0800675c cmp r0, r3                                                        |     
                                                                                 |     if (r0 <= r3) {
    0x08006760 addhi r3, r3, 1                                                   |         r3++;
                                                                                 |     }
    0x08006764 add sb, ip, sb                                                    |     sb = ip + sb;
    0x08006768 str r3, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r3;
    0x0800676c b 0x8006478                                                       |     goto label_19;
                                                                                 | label_37:
    0x08006770 add r5, r5, fp                                                    |     r5 += fp;
    0x08006774 ldr r1, [sp, 0x14]                                                |     r1 = var_14h;
    0x08006778 sub r2, r5, r2                                                    |     r2 = r5 - r2;
    0x0800677c strh r2, [r4, 0x6c]                                               |     *((r4 + 0x6c)) = r2;
    0x08006780 ldrb r2, [r4, 0x64]                                               |     r2 = *((r4 + 0x64));
    0x08006784 strh r1, [r4, 0x6e]                                               |     *((r4 + 0x6e)) = r1;
    0x08006788 orr r2, r2, 0x60                                                  |     r2 |= 0x60;
    0x0800678c strb r2, [r4, 0x64]                                               |     *((r4 + 0x64)) = r2;
    0x08006790 ldr r2, [sb, 0x10]                                                |     r2 = *((sb + 0x10));
    0x08006794 b 0x800639c                                                       |     goto label_20;
                                                                                 | label_35:
    0x08006798 stmdaeq r0, {r2, r7, r8, sb, sl, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r7, r8, sb, sl, sp, lr, pc}");
    0x0800679c ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x080067a0 add r3, r3, 0x10c                                                 |     r3 += 0x10c;
    0x080067a4 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x080067a8 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x080067ac add r2, r2, 1                                                     |         r2++;
    0x080067b0 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x080067b4 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x080067b8 bne 0x80067a8                                                     |         
                                                                                 |     } while (r0 != r3);
    0x080067bc b 0x8006024                                                       |     goto label_0;
                                                                                 | label_36:
    0x080067c0 cmp r1, ip                                                        |     
    0x080067c4 strd r2, r3, [sp, 0x18]                                           |     __asm ("strd r2, r3, [var_18h]");
                                                                                 |     if (r1 > ip) {
    0x080067c8 bhi 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080067cc sub r0, r0, ip                                                    |     r0 -= ip;
    0x080067d0 add r1, r0, r1                                                    |     r1 = r0 + r1;
    0x080067d4 mov r0, r4                                                        |     r0 = r4;
    0x080067d8 stmdaeq r0, {r4, r5, r6, fp, sp, lr, pc}                          |     __asm ("stmdaeq r0, {r4, r5, r6, fp, sp, lr, pc}");
    0x080067dc cmp r0, 0                                                         |     
    0x080067e0 ldrd r2, r3, [sp, 0x18]                                           |     __asm ("ldrd r2, r3, [var_18h]");
                                                                                 |     if (r0 == 0) {
    0x080067e4 beq 0x8006024                                                     |         goto label_0;
                                                                                 |     }
    0x080067e8 b 0x8006304                                                       |     goto label_21;
                                                                                 | label_45:
    0x080067ec mov r3, 0                                                         |     r3 = 0;
    0x080067f0 mov r2, 9                                                         |     r2 = 9;
    0x080067f4 movw r1, 0x251                                                    |     r1 = 0x251;
    0x080067f8 stmdaeq r0, {r3, r4, r7, r8, sb, sl, fp, pc}                      |     __asm ("stmdaeq r0, {r3, r4, r7, r8, sb, sl, fp, pc}");
    0x080067fc stmdaeq r0, {r3, r4, r7, r8, sb, sl, fp, pc}                      |     __asm ("stmdaeq r0, {r3, r4, r7, r8, sb, sl, fp, pc}");
    0x08006800 stmdaeq r0, {r2, r3, r4, r6, r7, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r2, r3, r4, r6, r7, r8, sb, sl, sp, lr, pc}");
    0x08006804 b 0x8006214                                                       |     goto label_7;
                                                                                 | label_51:
    0x08006808 stmdaeq r0, {r3, r4, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r3, r4, r5, r7, fp, sp, lr, pc}");
    0x0800680c cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x08006810 beq 0x80066c8                                                     |         goto label_22;
                                                                                 |     }
    0x08006814 ldrb r2, [r8, 1]                                                  |     r2 = *((r8 + 1));
    0x08006818 add r1, r8, 0xc                                                   |     r1 = r8 + 0xc;
    0x0800681c stmdaeq r0, {r2, r4, r6, ip, pc}                                  |     __asm ("stmdaeq r0, {r2, r4, r6, ip, pc}");
    0x08006820 stmdaeq r0, {r2, r4, r6, ip, pc}                                  |     __asm ("stmdaeq r0, {r2, r4, r6, ip, pc}");
    0x08006824 stmdaeq r0, {r2, r4, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r4, r5, r7, fp, sp, lr, pc}");
    0x08006828 b 0x80066c8                                                       |     goto label_22;
                                                                                 | label_38:
    0x0800682c mov r0, r4                                                        |     r0 = r4;
    0x08006830 str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x08006834 stmdaeq r0, {r2, r4, r5, r6, r7, fp, sp, lr, pc}                  |     __asm ("stmdaeq r0, {r2, r4, r5, r6, r7, fp, sp, lr, pc}");
    0x08006838 ldrb r2, [r4, 0x64]                                               |     r2 = *((r4 + 0x64));
    0x0800683c ldr r0, [r4, 0xa8]                                                |     r0 = *((r4 + 0xa8));
    0x08006840 and r1, r2, 0x60                                                  |     r1 = r2 & 0x60;
    0x08006844 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08006848 cmp r1, 0x40                                                      |     
                                                                                 |     if (r1 == 0x40) {
    0x0800684c beq 0x8006874                                                     |         goto label_53;
                                                                                 |     }
    0x08006850 cmp r1, 0x60                                                      |     
                                                                                 |     if (r1 != 0x60) {
    0x08006854 bne 0x800632c                                                     |         goto label_23;
                                                                                 |     }
    0x08006858 ldr r1, [r4, 0xa4]                                                |     r1 = *((r4 + 0xa4));
    0x0800685c sub r1, r1, r0                                                    |     r1 -= r0;
    0x08006860 ldrh r0, [r4, 0x6c]                                               |     r0 = *((r4 + 0x6c));
    0x08006864 cmn r1, r0                                                        |     
    0x08006868 bfcmi r2, 5, 2                                                    |     __asm ("bfcmi r2, 5, 2");
                                                                                 |     if (r1 >= r0) {
    0x0800686c strbmi r2, [r4, 0x64]                                             |         *((r4 + 0x64)) = r2;
                                                                                 |     }
    0x08006870 b 0x800632c                                                       |     goto label_23;
                                                                                 | label_53:
    0x08006874 sub r1, r5, r0                                                    |     r1 = r5 - r0;
    0x08006878 str r3, [sp, 0x18]                                                |     var_18h = r3;
    0x0800687c mov r2, 0                                                         |     r2 = 0;
    0x08006880 ldr r3, [r4, 0x6c]                                                |     r3 = *((r4 + 0x6c));
    0x08006884 str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x08006888 stmdaeq r0, {r2, r3, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r3, r5, r7, fp, sp, lr, pc}");
    0x0800688c ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08006890 mvn r1, r0                                                        |     r1 = ~r0;
    0x08006894 sub r2, r3, 1                                                     |     r2 = r3 - 1;
    0x08006898 ldr r3, [sp, 0x18]                                                |     r3 = var_18h;
    0x0800689c sub r2, r2, r0                                                    |     r2 -= r0;
    0x080068a0 cmp r1, r2                                                        |     
                                                                                 |     if (r1 <= r2) {
    0x080068a4 addhi r2, r2, 1                                                   |         r2++;
                                                                                 |     }
    0x080068a8 str r2, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r2;
    0x080068ac b 0x800632c                                                       |     goto label_23;
                                                                                 | label_52:
    0x080068b0 add r1, r8, 8                                                     |     r1 = r8 + 8;
    0x080068b4 stmdaeq r0, {r7, ip, pc}                                          |     __asm ("stmdaeq r0, {r7, ip, pc}");
    0x080068b8 stmdaeq r0, {r7, ip, pc}                                          |     __asm ("stmdaeq r0, {r7, ip, pc}");
    0x080068bc stmdaeq r0, {r2, r4, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r2, r4, r5, r7, fp, sp, lr, pc}");
    0x080068c0 b 0x80066c8                                                       |     goto label_22;
                                                                                 | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/drivers/net/vxlan.ko @ 0x8003c78 */
                                                                     | #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;
    0x08003c78 push {r4, r5, r6, lr}                                 |     
    0x08003c7c add r5, r0, 0x540                                     |     r5 = r0 + 0x540;
    0x08003c80 mov r4, r0                                            |     r4 = r0;
    0x08003c84 add r0, r5, 0x8c                                      |     r0 = r5 + 0x8c;
    0x08003c88 stmdaeq r0, {r2, r5, r7, fp, sp, lr, pc}              |     __asm ("stmdaeq r0, {r2, r5, r7, fp, sp, lr, pc}");
    0x08003c8c mov r3, sp                                            |     r3 = sp;
    0x08003c90 bic r1, r3, 0x1fc0                                    |     r1 = BIT_MASK (r3, 0x1fc0);
    0x08003c94 ldr r2, [r4, 0x608]                                   |     r2 = *((r4 + 0x608));
    0x08003c98 bic r1, r1, 0x3f                                      |     r1 = BIT_MASK (r1, 0x3f);
    0x08003c9c ldr r3, [r1, 4]                                       |     r3 = *((r1 + 4));
    0x08003ca0 add r3, r3, 0x200                                     |     r3 += 0x200;
    0x08003ca4 add r3, r3, 1                                         |     r3++;
    0x08003ca8 str r3, [r1, 4]                                       |     *((r1 + 4)) = r3;
    0x08003cac ldr r1, [pc, 0x34]                                    |     r1 = *(0x8003ce4);
    0x08003cb0 mov r0, r5                                            |     r0 = r5;
    0x08003cb4 bl 0x8001d28                                          |     r0 = vxlan_find_mac ();
    0x08003cb8 subs r1, r0, 0                                        |     r1 = r0 - 0;
                                                                     |     if (r1 != r0) {
    0x08003cbc beq 0x8003cd0                                         |         
    0x08003cc0 mov r3, 1                                             |         r3 = 1;
    0x08003cc4 mov r0, r5                                            |         r0 = r5;
    0x08003cc8 mov r2, r3                                            |         r2 = r3;
    0x08003ccc bl 0x800380c                                          |         vxlan_fdb_destroy ();
                                                                     |     }
    0x08003cd0 ldr r0, [pc, 0x14]                                    |     r0 = "Provided_link_layer_address_is_not_Ethernet";
    0x08003cd4 movw r1, 0x201                                        |     r1 = 0x201;
    0x08003cd8 stmdaeq r0, {r2, r3, r6, fp, sp, lr, pc}              |     __asm ("stmdaeq r0, {r2, r3, r6, fp, sp, lr, pc}");
    0x08003cdc ldr r0, [r4, 0x2c0]                                   |     r0 = *((r4 + 0x2c0));
    0x08003ce0 pop {r4, r5, r6, lr}                                  |     
    0x08003ce4 stmdaeq r0, {r5, r7, r8, sb, sl, sp, lr, pc}          |     __asm ("stmdaeq r0, {r5, r7, r8, sb, sl, sp, lr, pc}");
    0x08003ce8 stmdaeq r0, {r2, r3, r5, r7, ip, pc}                  |     __asm ("stmdaeq r0, {r2, r3, r5, r7, ip, pc}");
    0x08003cec stmdaeq r0, {r4, r5, r6}                              |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                     | }

[*] Function popen used 1 times vxlan.ko