[*] Binary protection state of ip_vs.ko

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


[*] Function mmap tear down of ip_vs.ko

    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x800bc48 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.do_ip_vs_get_ctl ()                                      | void do_ip_vs_get_ctl (int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_8h;
                                                                         |     int32_t var_ch;
                                                                         |     int32_t var_1ch;
                                                                         |     int32_t var_20h;
                                                                         |     int32_t var_24h;
                                                                         |     int32_t var_34h;
                                                                         |     int32_t var_48h;
                                                                         |     int32_t var_b4h;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0800bc48 push {r4, r5, r6, r7, r8, sb, lr}                         |     
    0x0800bc4c mov r5, r2                                                |     r5 = r2;
    0x0800bc50 ldr r2, [r0, 0x24]                                        |     r2 = *((r0 + 0x24));
    0x0800bc54 sub sp, sp, 0xb4                                          |     
    0x0800bc58 cmp r2, 0                                                 |     
    0x0800bc5c ldr r7, [r2, 0x888]                                       |     r7 = *((r2 + 0x888));
                                                                         |     if (r2 == 0) {
    0x0800bc60 beq 0x800c048                                             |         goto label_4;
                                                                         |     }
    0x0800bc64 ldr r0, [r2, 0x30]                                        |     r0 = *((r2 + 0x30));
    0x0800bc68 mov r4, r1                                                |     r4 = r1;
    0x0800bc6c mov r1, 0xc                                               |     r1 = 0xc;
    0x0800bc70 mov r6, r3                                                |     r6 = r3;
    0x0800bc74 stmdaeq r2, {r0, r3, r6, r7, r8, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r3, r6, r7, r8, ip, sp, lr}");
    0x0800bc78 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x0800bc7c beq 0x800c23c                                             |         goto label_5;
                                                                         |     }
    0x0800bc80 sub r8, r4, 0x480                                         |     r8 = r4 - 0x480;
    0x0800bc84 cmp r8, 7                                                 |     
                                                                         |     if (r8 > 7) {
    0x0800bc88 bhi 0x800c234                                             |         goto label_6;
                                                                         |     }
    0x0800bc8c stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}");
    0x0800bc90 stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}");
    0x0800bc94 add r3, r3, r4                                            |     r3 += r4;
    0x0800bc98 ldrb r2, [r3, -0x2a0]                                     |     r2 = *((r3 - 0x2a0));
    0x0800bc9c ldr r3, [r6]                                              |     r3 = *(r6);
    0x0800bca0 cmp r3, r2                                                |     
                                                                         |     if (r3 < r2) {
    0x0800bca4 blt 0x800c234                                             |         goto label_6;
                                                                         |     }
    0x0800bca8 cmp r2, 0x68                                              |     
                                                                         |     if (r2 > 0x68) {
    0x0800bcac bhi 0x800c204                                             |         goto label_7;
                                                                         |     }
    0x0800bcb0 mov r3, sp                                                |     r3 = sp;
    0x0800bcb4 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x0800bcb8 bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x0800bcbc ldr r1, [r3, 8]                                           |     r1 = *((r3 + 8));
    0x0800bcc0 adds r0, r5, r2                                           |     r0 = r5 + r2;
    0x0800bcc4 sbcslo r0, r0, r1                                         |     __asm ("sbcslo r0, r0, r1");
                                                                         |     if (r0 >= r5) {
    0x0800bcc8 movlo r1, 0                                               |         r1 = 0;
                                                                         |     }
    0x0800bccc cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x0800bcd0 bne 0x800bd00                                             |         
    0x0800bcd4 mrc p15, 0, sb, c3, c0, 0                                 |         __asm ("mrc p15, 0, sb, c3, c0, 0");
    0x0800bcd8 bic r3, sb, 0xc                                           |         r3 = BIT_MASK (sb, 0xc);
    0x0800bcdc orr r3, r3, 4                                             |         r3 |= 4;
    0x0800bce0 mcr p15, 0, r3, c3, c0, 0                                 |         __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x0800bce4 isb sy                                                    |         __asm ("isb sy");
    0x0800bce8 mov r1, r5                                                |         r1 = r5;
    0x0800bcec add r0, sp, 0x48                                          |         r0 += var_48h;
    0x0800bcf0 stmdaeq r2, {r0, r2, r3, r6, r7, r8, ip, sp, lr}          |         __asm ("stmdaeq r2, {r0, r2, r3, r6, r7, r8, ip, sp, lr}");
    0x0800bcf4 mov r2, r0                                                |         r2 = r0;
    0x0800bcf8 mcr p15, 0, sb, c3, c0, 0                                 |         __asm ("mcr p15, 0, sb, c3, c0, 0");
    0x0800bcfc isb sy                                                    |         __asm ("isb sy");
                                                                         |     }
    0x0800bd00 cmp r2, 0                                                 |     
                                                                         |     if (r2 != 0) {
    0x0800bd04 bne 0x800c04c                                             |         goto label_8;
                                                                         |     }
    0x0800bd08 movw r3, 0x487                                            |     r3 = 0x487;
    0x0800bd0c cmp r4, r3                                                |     
                                                                         |     if (r4 == r3) {
    0x0800bd10 beq 0x800bfd4                                             |         goto label_9;
                                                                         |     }
    0x0800bd14 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |     __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800bd18 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |     __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800bd1c stmdaeq r2, {r0, r3, r5, r7, r8, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r3, r5, r7, r8, ip, sp, lr}");
    0x0800bd20 cmp r8, 6                                                 |     
                                                                         |     if (r8 > 6) {
                                                                         |         /* switch table (7 cases) at 0x800bd2c */
    0x0800bd24 ldrls pc, [pc, r8, lsl 2]                                 |         offset_0 = r8 << 2;
                                                                         |         pc = *((pc + offset_0));
                                                                         |     }
    0x0800bd28 b 0x800bfcc                                               |     
                                                                         |     while (1) {
    0x0800bde8 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |         __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800bdec stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |         __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800bdf0 stmdaeq r2, {r0, r2, r3, r5, r7, r8, ip, sp, lr}          |         __asm ("stmdaeq r2, {r0, r2, r3, r5, r7, r8, ip, sp, lr}");
                                                                         | label_0:
    0x0800bdf4 mov r0, r4                                                |         r0 = r4;
    0x0800bdf8 add sp, sp, 0xb4                                          |         
    0x0800bdfc pop {r4, r5, r6, r7, r8, sb, pc}                          |         
    0x0800bfcc mvn r4, 0x15                                              |         r4 = ~0x15;
    0x0800bfd0 b 0x800bde8                                               |         
                                                                         |     }
                                                                         | label_9:
    0x0800bfd4 add r6, r7, 0x4a0                                         |     r6 = r7 + 0x4a0;
    0x0800bfd8 mov r1, r2                                                |     r1 = r2;
    0x0800bfdc add r6, r6, 0xc                                           |     r6 += 0xc;
    0x0800bfe0 mov r2, 0x30                                              |     r2 = 0x30;
    0x0800bfe4 add r0, sp, 8                                             |     r0 += var_8h;
    0x0800bfe8 stmdaeq r2, {r0, r4, r5, r8, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r0, r4, r5, r8, ip, sp, lr}");
    0x0800bfec mov r0, r6                                                |     r0 = r6;
    0x0800bff0 stmdaeq r2, {r0, r3, r5, r7, r8, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r3, r5, r7, r8, ip, sp, lr}");
    0x0800bff4 ldr r3, [r7, 0x4a8]                                       |     r3 = *((r7 + 0x4a8));
    0x0800bff8 tst r3, 1                                                 |     
                                                                         |     if ((r3 & 1) != 0) {
    0x0800bffc bne 0x800c0f4                                             |         goto label_10;
                                                                         |     }
                                                                         | label_3:
    0x0800c000 ldr r3, [r7, 0x4a8]                                       |     r3 = *((r7 + 0x4a8));
    0x0800c004 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) != 0) {
    0x0800c008 bne 0x800c0cc                                             |         goto label_11;
                                                                         |     }
                                                                         | label_2:
    0x0800c00c mov r3, sp                                                |     r3 = sp;
    0x0800c010 bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x0800c014 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x0800c018 ldr r3, [r2, 8]                                           |     r3 = *((r2 + 8));
    0x0800c01c adds r1, r5, 0x30                                         |     r1 = r5 + 0x30;
    0x0800c020 sbcslo r1, r1, r3                                         |     __asm ("sbcslo r1, r1, r3");
                                                                         |     if (r1 >= r5) {
    0x0800c024 movlo r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x0800c028 cmp r3, 0                                                 |     
    0x0800c02c beq 0x800c090                                             |     
                                                                         |     while (r0 != 0) {
    0x0800c030 mvn r4, 0xd                                               |         r4 = ~0xd;
                                                                         | label_1:
    0x0800c034 mov r0, r6                                                |         r0 = r6;
    0x0800c038 stmdaeq r2, {r0, r2, r3, r5, r7, r8, ip, sp, lr}          |         __asm ("stmdaeq r2, {r0, r2, r3, r5, r7, r8, ip, sp, lr}");
    0x0800c03c mov r0, r4                                                |         r0 = r4;
    0x0800c040 add sp, sp, 0xb4                                          |         
    0x0800c044 pop {r4, r5, r6, r7, r8, sb, pc}                          |         
                                                                         | label_4:
    0x0800c048 udf 0x12                                                  |         __asm ("udf 0x12");
                                                                         | label_8:
    0x0800c04c mvn r4, 0xd                                               |         r4 = ~0xd;
    0x0800c050 b 0x800bdf4                                               |         goto label_0;
    0x0800c090 mrc p15, 0, r4, c3, c0, 0                                 |         __asm ("mrc p15, 0, r4, c3, c0, 0");
    0x0800c094 bic r3, r4, 0xc                                           |         r3 = BIT_MASK (r4, 0xc);
    0x0800c098 orr r3, r3, 4                                             |         r3 |= 4;
    0x0800c09c mcr p15, 0, r3, c3, c0, 0                                 |         __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x0800c0a0 isb sy                                                    |         __asm ("isb sy");
    0x0800c0a4 mov r2, 0x30                                              |         r2 = 0x30;
    0x0800c0a8 add r1, sp, 8                                             |         r1 += var_8h;
    0x0800c0ac mov r0, r5                                                |         r0 = r5;
    0x0800c0b0 stmdaeq r2, {r0, r2, r4, r5, r7, r8, ip, sp, lr}          |         __asm ("stmdaeq r2, {r0, r2, r4, r5, r7, r8, ip, sp, lr}");
    0x0800c0b4 mcr p15, 0, r4, c3, c0, 0                                 |         __asm ("mcr p15, 0, r4, c3, c0, 0");
    0x0800c0b8 isb sy                                                    |         __asm ("isb sy");
    0x0800c0bc cmp r0, 0                                                 |         
    0x0800c0c0 bne 0x800c030                                             |         
                                                                         |     }
    0x0800c0c4 mov r4, r0                                                |     r4 = r0;
    0x0800c0c8 b 0x800c034                                               |     goto label_1;
                                                                         | label_11:
    0x0800c0cc add r1, r7, 0x4f0                                         |     r1 = r7 + 0x4f0;
    0x0800c0d0 add r0, sp, 0x24                                          |     r0 += var_24h;
    0x0800c0d4 add r1, r1, 0xe                                           |     r1 += 0xe;
    0x0800c0d8 mov r2, 0x10                                              |     r2 = 0x10;
    0x0800c0dc mov r3, 2                                                 |     r3 = 2;
    0x0800c0e0 str r3, [sp, 0x20]                                        |     var_20h = r3;
    0x0800c0e4 stmdaeq r2, {r0, r3, r4, r5, r6, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r3, r4, r5, r6, r8, ip, sp, lr}");
    0x0800c0e8 ldr r3, [r7, 0x4f4]                                       |     r3 = *((r7 + 0x4f4));
    0x0800c0ec str r3, [sp, 0x34]                                        |     var_34h = r3;
    0x0800c0f0 b 0x800c00c                                               |     goto label_2;
                                                                         | label_10:
    0x0800c0f4 add r1, r7, 0x4d0                                         |     r1 = r7 + 0x4d0;
    0x0800c0f8 add r0, sp, 0xc                                           |     r0 += var_ch;
    0x0800c0fc add r1, r1, 2                                             |     r1 += 2;
    0x0800c100 mov r2, 0x10                                              |     r2 = 0x10;
    0x0800c104 mov r3, 1                                                 |     r3 = 1;
    0x0800c108 str r3, [sp, 8]                                           |     var_8h = r3;
    0x0800c10c stmdaeq r2, {r0, r3, r4, r5, r6, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r3, r4, r5, r6, r8, ip, sp, lr}");
    0x0800c110 ldr r3, [r7, 0x4c8]                                       |     r3 = *((r7 + 0x4c8));
    0x0800c114 str r3, [sp, 0x1c]                                        |     var_1ch = r3;
    0x0800c118 b 0x800c000                                               |     goto label_3;
                                                                         | label_7:
    0x0800c204 str r2, [sp, 4]                                           |     var_4h = r2;
    0x0800c208 stmdaeq r1, {r2, r5, r6, r7, sl, pc}                      |     __asm ("stmdaeq r1, {r2, r5, r6, r7, sl, pc}");
    0x0800c20c stmdaeq r1, {r2, r5, r6, r7, sl, pc}                      |     __asm ("stmdaeq r1, {r2, r5, r6, r7, sl, pc}");
    0x0800c210 mov r2, 0x68                                              |     r2 = 0x68;
    0x0800c214 mov r1, 0x93                                              |     r1 = 0x93;
    0x0800c218 str r2, [sp]                                              |     *(sp) = r2;
    0x0800c21c stmdaeq r1, {r2, r3, r8, sl, pc}                          |     __asm ("stmdaeq r1, {r2, r3, r8, sl, pc}");
    0x0800c220 stmdaeq r1, {r2, r3, r8, sl, pc}                          |     __asm ("stmdaeq r1, {r2, r3, r8, sl, pc}");
    0x0800c224 mov r2, 9                                                 |     r2 = 9;
    0x0800c228 mvn r4, 0xd                                               |     r4 = ~0xd;
    0x0800c22c stmdaeq r2, {r0, r2, r6, r7, r8, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r2, r6, r7, r8, ip, sp, lr}");
    0x0800c230 b 0x800bdf4                                               |     goto label_0;
                                                                         | label_6:
    0x0800c234 mvn r4, 0x15                                              |     r4 = ~0x15;
    0x0800c238 b 0x800bdf4                                               |     goto label_0;
                                                                         | label_5:
    0x0800c23c mvn r4, 0                                                 |     r4 = ~0;
    0x0800c240 b 0x800bdf4                                               |     goto label_0;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x800a648 */
                                                                         | #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.do_ip_vs_set_ctl ()                                      | void do_ip_vs_set_ctl (int32_t arg_e8h, int32_t arg1, int32_t arg2) {
                                                                         |     int32_t var_0h;
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_ch;
                                                                         |     int32_t var_10h;
                                                                         |     int32_t var_14h;
                                                                         |     int32_t var_1ch;
                                                                         |     int32_t var_20h;
                                                                         |     int32_t var_24h;
                                                                         |     int32_t var_30h;
                                                                         |     int32_t var_34h;
                                                                         |     int32_t var_38h;
                                                                         |     int32_t var_3ch;
                                                                         |     int32_t var_40h;
                                                                         |     int32_t var_44h;
                                                                         |     int32_t var_4ch;
                                                                         |     int32_t var_4eh;
                                                                         |     int32_t var_50h;
                                                                         |     int32_t var_54h;
                                                                         |     int32_t var_58h;
                                                                         |     int32_t var_5ch;
                                                                         |     int32_t var_60h;
                                                                         |     int32_t var_64h;
                                                                         |     int32_t var_66h;
                                                                         |     int32_t var_68h;
                                                                         |     int32_t var_6ch;
                                                                         |     int32_t var_70h;
                                                                         |     int32_t var_74h;
                                                                         |     int32_t var_78h;
                                                                         |     int32_t var_7ch;
                                                                         |     int32_t var_80h;
                                                                         |     int32_t var_84h;
                                                                         |     int32_t var_88h;
                                                                         |     int32_t var_8ch;
                                                                         |     int32_t var_90h;
                                                                         |     int32_t var_9ch;
                                                                         |     int32_t var_a0h;
                                                                         |     int32_t var_a4h;
                                                                         |     int32_t var_a8h;
                                                                         |     int32_t var_ach;
                                                                         |     int32_t var_b0h;
                                                                         |     int32_t var_b4h;
                                                                         |     int32_t var_b8h;
                                                                         |     int32_t var_bch;
                                                                         |     int32_t var_c4h;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x0800a648 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x0800a64c mov r4, r1                                                |     r4 = r1;
    0x0800a650 mov r1, 0xc                                               |     r1 = 0xc;
    0x0800a654 ldr r0, [r0, 0x24]                                        |     r0 = *(arg_e8hx24);
    0x0800a658 sub sp, sp, 0xc4                                          |     
    0x0800a65c add ip, sp, 0x10                                          |     
    0x0800a660 ldr r7, [r0, 0x888]                                       |     r7 = *((r0 + 0x888));
    0x0800a664 ldr r0, [r0, 0x30]                                        |     r0 = *((r0 + 0x30));
    0x0800a668 ldr r8, [sp, 0xe8]                                        |     r8 = *(arg_e8h);
    0x0800a66c stm ip, {r2, r3}                                          |     *(ip) = r2;
                                                                         |     *((ip + 4)) = r3;
    0x0800a670 stmdaeq r2, {r0, r3, r6, r7, r8, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r3, r6, r7, r8, ip, sp, lr}");
    0x0800a674 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x0800a678 beq 0x800abec                                             |         goto label_9;
                                                                         |     }
    0x0800a67c sub r6, r4, 0x480                                         |     r6 = r4 - 0x480;
    0x0800a680 cmp r6, 0xf                                               |     
                                                                         |     if (r6 > 0xf) {
    0x0800a684 bhi 0x800ab04                                             |         goto label_10;
                                                                         |     }
    0x0800a688 stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}");
    0x0800a68c stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r2, r5, r7, sl, ip, sp, lr}");
    0x0800a690 add r3, r3, r4                                            |     r3 += r4;
    0x0800a694 ldrb r3, [r3, -0x368]                                     |     r3 = *((r3 - 0x368));
    0x0800a698 cmp r3, r8                                                |     
                                                                         |     if (r3 != r8) {
    0x0800a69c bne 0x800ab04                                             |         goto label_10;
                                                                         |     }
    0x0800a6a0 ldrb r2, [sp, 0x14]                                       |     r2 = var_14h;
    0x0800a6a4 ldr r1, [sp, 0x10]                                        |     r1 = var_10h;
    0x0800a6a8 tst r2, 1                                                 |     
                                                                         |     if ((r2 & 1) != 0) {
    0x0800a6ac bne 0x800a778                                             |         goto label_11;
                                                                         |     }
    0x0800a6b0 cmp r3, 0x44                                              |     
                                                                         |     if (r3 > 0x44) {
    0x0800a6b4 bhi 0x800aa50                                             |         goto label_12;
                                                                         |     }
    0x0800a6b8 mov r3, sp                                                |     r3 = sp;
    0x0800a6bc bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x0800a6c0 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x0800a6c4 ldr r3, [r2, 8]                                           |     r3 = *((r2 + 8));
    0x0800a6c8 adds r0, r1, r8                                           |     r0 = r1 + r8;
    0x0800a6cc sbcslo r0, r0, r3                                         |     __asm ("sbcslo r0, r0, r3");
                                                                         |     if (r0 >= r1) {
    0x0800a6d0 movlo r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x0800a6d4 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0800a6d8 bne 0x800abd0                                             |         goto label_13;
                                                                         |     }
    0x0800a6dc mrc p15, 0, sb, c3, c0, 0                                 |     __asm ("mrc p15, 0, sb, c3, c0, 0");
    0x0800a6e0 bic r3, sb, 0xc                                           |     r3 = BIT_MASK (sb, 0xc);
    0x0800a6e4 orr r3, r3, 4                                             |     r3 |= 4;
    0x0800a6e8 mcr p15, 0, r3, c3, c0, 0                                 |     __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x0800a6ec isb sy                                                    |     __asm ("isb sy");
    0x0800a6f0 mov r2, r8                                                |     r2 = r8;
    0x0800a6f4 add r0, sp, 0x7c                                          |     r0 += var_7ch;
    0x0800a6f8 stmdaeq r2, {r0, r2, r3, r6, r7, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r3, r6, r7, r8, ip, sp, lr}");
    0x0800a6fc mcr p15, 0, sb, c3, c0, 0                                 |     __asm ("mcr p15, 0, sb, c3, c0, 0");
    0x0800a700 isb sy                                                    |     __asm ("isb sy");
                                                                         | label_8:
    0x0800a704 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x0800a708 mvnne r5, 0xd                                             |         r5 = ~0xd;
                                                                         |     }
                                                                         |     if (r0 != 0) {
    0x0800a70c bne 0x800a76c                                             |         goto label_2;
                                                                         |     }
    0x0800a710 sub r3, r6, 0xb                                           |     r3 = r6 - 0xb;
    0x0800a714 cmp r3, 1                                                 |     
                                                                         |     if (r3 > 1) {
    0x0800a718 bhi 0x800a790                                             |         goto label_14;
                                                                         |     }
                                                                         |     do {
    0x0800a71c movw r3, 0x48b                                            |         r3 = 0x48b;
    0x0800a720 cmp r4, r3                                                |         
                                                                         |         if (r4 != r3) {
    0x0800a724 bne 0x800a7d8                                             |             goto label_15;
                                                                         |         }
    0x0800a728 mov r2, 0x2c                                              |         r2 = 0x2c;
    0x0800a72c mov r1, 0                                                 |         r1 = 0;
    0x0800a730 add r0, sp, 0x4c                                          |         r0 += var_4ch;
    0x0800a734 stmdaeq r2, {r0, r4, r5, r8, ip, sp, lr}                  |         __asm ("stmdaeq r2, {r0, r4, r5, r8, ip, sp, lr}");
    0x0800a738 mov r2, 0x10                                              |         r2 = 0x10;
    0x0800a73c add r1, sp, 0x80                                          |         r1 += var_80h;
    0x0800a740 add r0, sp, 0x66                                          |         r0 += var_66h;
    0x0800a744 stmdaeq r2, {r0, r4, r6, r7, r8, ip, sp, lr}              |         __asm ("stmdaeq r2, {r0, r4, r6, r7, r8, ip, sp, lr}");
    0x0800a748 cmp r0, 0                                                 |         
                                                                         |         if (r0 <= 0) {
    0x0800a74c ble 0x800ab04                                             |             goto label_10;
                                                                         |         }
    0x0800a750 ldr r3, [sp, 0x90]                                        |         r3 = var_90h;
    0x0800a754 add r1, sp, 0x4c                                          |         r1 += var_4ch;
    0x0800a758 ldr r2, [sp, 0x7c]                                        |         r2 = var_7ch;
    0x0800a75c mov r0, r7                                                |         r0 = r7;
    0x0800a760 str r3, [sp, 0x5c]                                        |         var_5ch = r3;
    0x0800a764 stmdaeq r1, {r2, r3, r4, r5, r6, r7, r8, fp, ip}          |         __asm ("stmdaeq r1, {r2, r3, r4, r5, r6, r7, r8, fp, ip}");
    0x0800a768 mov r5, r0                                                |         r5 = r0;
                                                                         | label_2:
    0x0800a76c mov r0, r5                                                |         r0 = r5;
    0x0800a770 add sp, sp, 0xc4                                          |         
    0x0800a774 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
                                                                         | label_11:
    0x0800a778 mov r2, r8                                                |         r2 = r8;
    0x0800a77c add r0, sp, 0x7c                                          |         r0 += var_7ch;
    0x0800a780 stmdaeq r2, {r0, r2, r4, r5, r7, ip, sp, lr}              |         __asm ("stmdaeq r2, {r0, r2, r4, r5, r7, ip, sp, lr}");
    0x0800a784 sub r3, r6, 0xb                                           |         r3 = r6 - 0xb;
    0x0800a788 cmp r3, 1                                                 |         
    0x0800a78c bls 0x800a71c                                             |         
                                                                         |     } while (r3 < 1);
                                                                         | label_14:
    0x0800a790 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |     __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800a794 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |     __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800a798 stmdaeq r2, {r0, r3, r5, r7, r8, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r3, r5, r7, r8, ip, sp, lr}");
    0x0800a79c movw r3, 0x485                                            |     r3 = 0x485;
    0x0800a7a0 cmp r4, r3                                                |     
                                                                         |     if (r4 == r3) {
    0x0800a7a4 beq 0x800abbc                                             |         goto label_16;
                                                                         |     }
    0x0800a7a8 movw r3, 0x48a                                            |     r3 = 0x48a;
    0x0800a7ac cmp r4, r3                                                |     
                                                                         |     if (r4 == r3) {
    0x0800a7b0 beq 0x800abd8                                             |         goto label_17;
                                                                         |     }
    0x0800a7b4 cmp r8, 0                                                 |     
                                                                         |     if (r8 == 0) {
    0x0800a7b8 bne 0x800a7f4                                             |         
                                                                         | label_6:
    0x0800a7bc mvn r5, 0x15                                              |         r5 = ~0x15;
                                                                         | label_1:
    0x0800a7c0 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |         __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800a7c4 stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}                  |         __asm ("stmdaeq r1, {r3, r6, r7, r8, sb, ip, pc}");
    0x0800a7c8 stmdaeq r2, {r0, r2, r3, r5, r7, r8, ip, sp, lr}          |         __asm ("stmdaeq r2, {r0, r2, r3, r5, r7, r8, ip, sp, lr}");
    0x0800a7cc mov r0, r5                                                |         r0 = r5;
    0x0800a7d0 add sp, sp, 0xc4                                          |         
    0x0800a7d4 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
                                                                         | label_15:
    0x0800a7d8 ldr r1, [sp, 0x7c]                                        |         r1 = var_7ch;
    0x0800a7dc mov r0, r7                                                |         r0 = r7;
    0x0800a7e0 stmdaeq r1, {r4, sl, sp}                                  |         __asm ("stmdaeq r1, {r4, sl, sp}");
    0x0800a7e4 mov r5, r0                                                |         r5 = r0;
    0x0800a7e8 mov r0, r5                                                |         r0 = r5;
    0x0800a7ec add sp, sp, 0xc4                                          |         
    0x0800a7f0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
                                                                         |     }
    0x0800a7f4 ldr r2, [sp, 0x9c]                                        |     r2 = var_9ch;
    0x0800a7f8 mov r1, 0                                                 |     r1 = 0;
    0x0800a7fc str r2, [sp, 0x70]                                        |     var_70h = r2;
    0x0800a800 add r0, sp, 0x24                                          |     r0 += var_24h;
    0x0800a804 ldr r2, [sp, 0xa0]                                        |     r2 = var_a0h;
    0x0800a808 mov fp, 2                                                 |     
    0x0800a80c str r2, [sp, 0x74]                                        |     var_74h = r2;
    0x0800a810 ldr r2, [sp, 0xa4]                                        |     r2 = var_a4h;
    0x0800a814 ldr r3, [sp, 0x88]                                        |     r3 = var_88h;
    0x0800a818 ldr r8, [sp, 0x80]                                        |     r8 = var_80h;
    0x0800a81c ldrh sl, [sp, 0x84]                                       |     sl = var_84h;
    0x0800a820 ldrh sb, [sp, 0x7c]                                       |     sb = var_7ch;
    0x0800a824 str r2, [sp, 0x78]                                        |     var_78h = r2;
    0x0800a828 mov r2, 0x28                                              |     r2 = 0x28;
    0x0800a82c str r1, [sp, 0x60]                                        |     var_60h = r1;
    0x0800a830 str r8, [sp, 0x50]                                        |     var_50h = r8;
    0x0800a834 str r3, [sp, 0x64]                                        |     var_64h = r3;
    0x0800a838 str r3, [sp, 0xc]                                         |     var_ch = r3;
    0x0800a83c add r3, sp, 0x8c                                          |     r3 += var_8ch;
    0x0800a840 str r1, [sp, 0x54]                                        |     var_54h = r1;
    0x0800a844 str r3, [sp, 0x68]                                        |     var_68h = r3;
    0x0800a848 str r1, [sp, 0x58]                                        |     var_58h = r1;
    0x0800a84c str r1, [sp, 0x5c]                                        |     var_5ch = r1;
    0x0800a850 str r1, [sp, 0x6c]                                        |     var_6ch = r1;
    0x0800a854 strh fp, [sp, 0x4c]                                       |     var_4ch = fp;
    0x0800a858 strh sl, [sp, 0x60]                                       |     var_60h = sl;
    0x0800a85c strh sb, [sp, 0x4e]                                       |     var_4eh = sb;
    0x0800a860 stmdaeq r2, {r0, r4, r5, r8, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r0, r4, r5, r8, ip, sp, lr}");
    0x0800a864 ldr r3, [sp, 0xc]                                         |     r3 = var_ch;
    0x0800a868 strh fp, [sp, 0x44]                                       |     var_44h = fp;
    0x0800a86c orr r8, r8, r3                                            |     r8 |= r3;
    0x0800a870 ldr r3, [sp, 0xa8]                                        |     r3 = var_a8h;
    0x0800a874 str r3, [sp, 0x20]                                        |     var_20h = r3;
    0x0800a878 cmp sl, 0                                                 |     
    0x0800a87c cmpeq r8, 0                                               |     __asm ("cmpeq r8, 0");
    0x0800a880 ldrh r3, [sp, 0xac]                                       |     r3 = var_ach;
    0x0800a884 strh r3, [sp, 0x30]                                       |     var_30h = r3;
                                                                         |     if (sl != 0) {
    0x0800a888 moveq r8, 1                                               |         r8 = 1;
                                                                         |     }
    0x0800a88c ldr r3, [sp, 0xb0]                                        |     r3 = var_b0h;
                                                                         |     if (sl == 0) {
    0x0800a890 movne r8, 0                                               |         r8 = 0;
                                                                         |     }
    0x0800a894 str r3, [sp, 0x34]                                        |     var_34h = r3;
    0x0800a898 ldr r3, [sp, 0xb4]                                        |     r3 = var_b4h;
    0x0800a89c str r3, [sp, 0x38]                                        |     var_38h = r3;
    0x0800a8a0 ldr r3, [sp, 0xb8]                                        |     r3 = var_b8h;
    0x0800a8a4 str r3, [sp, 0x3c]                                        |     var_3ch = r3;
    0x0800a8a8 ldr r3, [sp, 0xbc]                                        |     r3 = var_bch;
    0x0800a8ac str r3, [sp, 0x40]                                        |     var_40h = r3;
    0x0800a8b0 movw r3, 0x48f                                            |     r3 = 0x48f;
    0x0800a8b4 cmp r4, r3                                                |     
                                                                         |     if (r4 == r3) {
    0x0800a8b8 movne r8, 0                                               |         r8 = 0;
                                                                         |     }
                                                                         |     if (r4 != r3) {
    0x0800a8bc andeq r8, r8, 1                                           |         r8 &= 1;
                                                                         |     }
    0x0800a8c0 cmp r8, 0                                                 |     
                                                                         |     if (r8 != 0) {
    0x0800a8c4 bne 0x800abf4                                             |         goto label_18;
                                                                         |     }
    0x0800a8c8 sub r3, r6, 2                                             |     r3 = r6 - 2;
    0x0800a8cc cmp r3, 1                                                 |     
                                                                         |     if (r3 < 1) {
    0x0800a8d0 bls 0x800aaec                                             |         goto label_19;
                                                                         |     }
                                                                         | label_5:
    0x0800a8d4 cmp sb, 6                                                 |     
    0x0800a8d8 cmpne sb, 0x11                                            |     __asm ("cmpne sb, 0x11");
                                                                         |     if (sb == 6) {
    0x0800a8dc movne r3, 1                                               |         r3 = 1;
                                                                         |     }
                                                                         |     if (sb != 6) {
    0x0800a8e0 moveq r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x0800a8e4 cmp sb, 0x84                                              |     
                                                                         |     if (sb != 0x84) {
    0x0800a8e8 moveq r3, 0                                               |         r3 = 0;
                                                                         |     }
                                                                         |     if (sb == 0x84) {
    0x0800a8ec andne r3, r3, 1                                           |         r3 &= 1;
                                                                         |     }
    0x0800a8f0 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x0800a8f4 bne 0x800ac04                                             |         goto label_20;
                                                                         |     }
    0x0800a8f8 stmdaeq r2, {r0, r3, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r3, r7, ip, sp, lr}");
    0x0800a8fc ldr r1, [sp, 0x64]                                        |     r1 = var_64h;
    0x0800a900 lsr r3, r7, 8                                             |     r3 = r7 >> 8;
    0x0800a904 cmp r1, 0                                                 |     
                                                                         |     if (r1 != 0) {
    0x0800a908 bne 0x800aa80                                             |         goto label_21;
                                                                         |     }
    0x0800a90c ldrh r1, [sp, 0x4c]                                       |     r1 = var_4ch;
    0x0800a910 ldr r0, [sp, 0x50]                                        |     r0 = var_50h;
    0x0800a914 cmp r1, 0xa                                               |     
    0x0800a918 ldrh ip, [sp, 0x60]                                       |     ip = var_60h;
    0x0800a91c ldrh lr, [sp, 0x4e]                                       |     lr = var_4eh;
                                                                         |     if (r1 == 0xa) {
    0x0800a920 movne r2, r0                                              |         r2 = r0;
                                                                         |     }
    0x0800a924 rev16 r8, ip                                              |     __asm ("rev16 r8, ip");
                                                                         |     if (r1 != 0xa) {
    0x0800a928 ldreq r2, [sp, 0x54]                                      |         r2 = var_54h;
                                                                         |     }
    0x0800a92c eor r3, r3, lr                                            |     r3 ^= lr;
                                                                         |     if (r1 != 0xa) {
    0x0800a930 ldreq sb, [sp, 0x58]                                      |         sb = var_58h;
                                                                         |     }
    0x0800a934 uxth r8, r8                                               |     r8 = (int16_t) r8;
                                                                         |     if (r1 != 0xa) {
    0x0800a938 eoreq r2, r2, r0                                          |         r2 ^= r0;
                                                                         |     }
    0x0800a93c eor r3, r3, r8                                            |     r3 ^= r8;
                                                                         |     if (r1 != 0xa) {
    0x0800a940 eoreq r2, r2, sb                                          |         r2 ^= sb;
                                                                         |     }
                                                                         |     if (r1 != 0xa) {
    0x0800a944 ldreq sb, [sp, 0x5c]                                      |         sb = var_5ch;
                                                                         |     }
    0x0800a948 eor r3, r3, r8, lsr 8                                     |     r3 ^= (r8 >> 8);
                                                                         |     if (r1 != 0xa) {
    0x0800a94c eoreq r2, r2, sb                                          |         r2 ^= sb;
                                                                         |     }
    0x0800a950 rev r2, r2                                                |     r2 = SWAP32 (r2);
    0x0800a954 eor r3, r3, r2                                            |     r3 ^= r2;
    0x0800a958 stmdaeq r1, {r2, r5, fp, sp, pc}                          |     __asm ("stmdaeq r1, {r2, r5, fp, sp, pc}");
    0x0800a95c stmdaeq r1, {r2, r5, fp, sp, pc}                          |     __asm ("stmdaeq r1, {r2, r5, fp, sp, pc}");
    0x0800a960 uxtb r3, r3                                               |     r3 = (int8_t) r3;
    0x0800a964 ldr r3, [r2, r3, lsl 2]                                   |     offset_0 = r3 << 2;
                                                                         |     r3 = *((r2 + offset_0));
    0x0800a968 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0800a96c beq 0x800a9d0                                             |         goto label_3;
                                                                         |     }
    0x0800a970 ldr sl, [sp, 0x54]                                        |     sl = var_54h;
    0x0800a974 ldr sb, [sp, 0x58]                                        |     sb = var_58h;
    0x0800a978 ldr r8, [sp, 0x5c]                                        |     r8 = var_5ch;
    0x0800a97c b 0x800a98c                                               |     
                                                                         |     while (r1 != r2) {
                                                                         | label_0:
    0x0800a980 ldr r3, [r3]                                              |         r3 = *(r3);
    0x0800a984 cmp r3, 0                                                 |         
                                                                         |         if (r3 == 0) {
    0x0800a988 beq 0x800a9d0                                             |             goto label_3;
                                                                         |         }
    0x0800a98c ldrh r2, [r3, 0x14]                                       |         r2 = *((r3 + 0x14));
    0x0800a990 cmp r1, r2                                                |         
    0x0800a994 bne 0x800a980                                             |         
                                                                         |     }
    0x0800a998 ldr r2, [r3, 0x18]                                        |     r2 = *((r3 + 0x18));
    0x0800a99c cmp r1, 0xa                                               |     
                                                                         |     if (r1 == 0xa) {
    0x0800a9a0 beq 0x800ab8c                                             |         goto label_22;
                                                                         |     }
    0x0800a9a4 cmp r2, r0                                                |     
                                                                         |     if (r2 != r0) {
    0x0800a9a8 bne 0x800a980                                             |         goto label_0;
                                                                         |     }
                                                                         | label_7:
    0x0800a9ac ldrh r2, [r3, 0x28]                                       |     r2 = *((r3 + 0x28));
    0x0800a9b0 cmp r2, ip                                                |     
                                                                         |     if (r2 != ip) {
    0x0800a9b4 bne 0x800a980                                             |         goto label_0;
                                                                         |     }
    0x0800a9b8 ldrh r2, [r3, 0x16]                                       |     r2 = *((r3 + 0x16));
    0x0800a9bc cmp r2, lr                                                |     
                                                                         |     if (r2 != lr) {
    0x0800a9c0 bne 0x800a980                                             |         goto label_0;
                                                                         |     }
    0x0800a9c4 ldr r2, [r3, 0x3c]                                        |     r2 = *((r3 + 0x3c));
    0x0800a9c8 cmp r7, r2                                                |     
                                                                         |     if (r7 != r2) {
    0x0800a9cc bne 0x800a980                                             |         goto label_0;
                                                                         |     }
                                                                         |     do {
                                                                         | label_3:
    0x0800a9d0 str r3, [sp, 0x1c]                                        |         var_1ch = r3;
    0x0800a9d4 stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}                  |         __asm ("stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}");
    0x0800a9d8 movw r3, 0x482                                            |         r3 = 0x482;
    0x0800a9dc ldr r0, [sp, 0x1c]                                        |         r0 = var_1ch;
    0x0800a9e0 cmp r4, r3                                                |         
                                                                         |         if (r4 == r3) {
    0x0800a9e4 beq 0x800ab0c                                             |             goto label_23;
                                                                         |         }
    0x0800a9e8 cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x0800a9ec beq 0x800aa00                                             |             
    0x0800a9f0 ldrh r2, [r0, 0x16]                                       |             r2 = *((r0 + 0x16));
    0x0800a9f4 ldrh r3, [sp, 0x4e]                                       |             r3 = var_4eh;
    0x0800a9f8 cmp r2, r3                                                |             
                                                                         |             if (r2 == r3) {
    0x0800a9fc beq 0x800aa08                                             |                 goto label_24;
                                                                         |             }
                                                                         |         }
    0x0800aa00 mvn r5, 2                                                 |         r5 = ~2;
    0x0800aa04 b 0x800a7c0                                               |         goto label_1;
                                                                         | label_24:
    0x0800aa08 sub r6, r6, 2                                             |         r6 -= 2;
    0x0800aa0c cmp r6, 0xd                                               |         
                                                                         |         if (r6 > 0xd) {
                                                                         |             /* switch table (14 cases) at 0x800aa18 */
    0x0800aa10 ldrls pc, [pc, r6, lsl 2]                                 |             offset_1 = r6 << 2;
                                                                         |             pc = *((pc + offset_1));
                                                                         |         }
    0x0800aa14 b 0x800a7c0                                               |         goto label_1;
                                                                         | label_12:
    0x0800aa50 mov r2, 0x44                                              |         r2 = 0x44;
    0x0800aa54 str r3, [sp, 4]                                           |         var_4h = r3;
    0x0800aa58 str r2, [sp]                                              |         *(sp) = r2;
    0x0800aa5c stmdaeq r1, {r2, r5, r6, r7, sl, pc}                      |         __asm ("stmdaeq r1, {r2, r5, r6, r7, sl, pc}");
    0x0800aa60 stmdaeq r1, {r2, r5, r6, r7, sl, pc}                      |         __asm ("stmdaeq r1, {r2, r5, r6, r7, sl, pc}");
    0x0800aa64 mov r2, 9                                                 |         r2 = 9;
    0x0800aa68 mov r1, 0x93                                              |         r1 = 0x93;
    0x0800aa6c stmdaeq r1, {r2, r3, r8, sl, pc}                          |         __asm ("stmdaeq r1, {r2, r3, r8, sl, pc}");
    0x0800aa70 stmdaeq r1, {r2, r3, r8, sl, pc}                          |         __asm ("stmdaeq r1, {r2, r3, r8, sl, pc}");
    0x0800aa74 mvn r5, 0xd                                               |         r5 = ~0xd;
    0x0800aa78 stmdaeq r2, {r0, r2, r6, r7, r8, ip, sp, lr}              |         __asm ("stmdaeq r2, {r0, r2, r6, r7, r8, ip, sp, lr}");
    0x0800aa7c b 0x800a76c                                               |         goto label_2;
                                                                         | label_21:
    0x0800aa80 eor r3, r3, r1                                            |         r3 ^= r1;
    0x0800aa84 stmdaeq r1, {r2, r5, fp, sp, pc}                          |         __asm ("stmdaeq r1, {r2, r5, fp, sp, pc}");
    0x0800aa88 stmdaeq r1, {r2, r5, fp, sp, pc}                          |         __asm ("stmdaeq r1, {r2, r5, fp, sp, pc}");
    0x0800aa8c uxtb r3, r3                                               |         r3 = (int8_t) r3;
    0x0800aa90 add r2, r2, r3, lsl 2                                     |         r2 += (r3 << 2);
    0x0800aa94 ldr r3, [r2, 0x400]                                       |         r3 = *((r2 + 0x400));
    0x0800aa98 cmp r3, 0                                                 |         
    0x0800aa9c beq 0x800a9d0                                             |         
                                                                         |     } while (r3 == 0);
    0x0800aaa0 subs r3, r3, 8                                            |     r3 -= 8;
                                                                         |     if (r3 == r3) {
    0x0800aaa4 beq 0x800a9d0                                             |         goto label_3;
                                                                         |     }
    0x0800aaa8 ldrh r0, [sp, 0x4c]                                       |     r0 = var_4ch;
    0x0800aaac b 0x800aac4                                               |     goto label_25;
                                                                         | label_4:
    0x0800aab0 ldr r3, [r3, 8]                                           |     r3 = *((r3 + 8));
    0x0800aab4 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x0800aab8 beq 0x800a9d0                                             |         goto label_3;
                                                                         |     }
    0x0800aabc subs r3, r3, 8                                            |     r3 -= 8;
                                                                         |     if (r3 == r3) {
    0x0800aac0 beq 0x800a9d0                                             |         goto label_3;
                                                                         |     }
                                                                         | label_25:
    0x0800aac4 ldr r2, [r3, 0x2c]                                        |     r2 = *((r3 + 0x2c));
    0x0800aac8 cmp r1, r2                                                |     
                                                                         |     if (r1 != r2) {
    0x0800aacc bne 0x800aab0                                             |         goto label_4;
                                                                         |     }
    0x0800aad0 ldrh r2, [r3, 0x14]                                       |     r2 = *((r3 + 0x14));
    0x0800aad4 cmp r2, r0                                                |     
                                                                         |     if (r2 != r0) {
    0x0800aad8 bne 0x800aab0                                             |         goto label_4;
                                                                         |     }
    0x0800aadc ldr r2, [r3, 0x3c]                                        |     r2 = *((r3 + 0x3c));
    0x0800aae0 cmp r7, r2                                                |     
                                                                         |     if (r7 != r2) {
    0x0800aae4 bne 0x800aab0                                             |         goto label_4;
                                                                         |     }
    0x0800aae8 b 0x800a9d0                                               |     goto label_3;
                                                                         | label_19:
    0x0800aaec add r0, sp, 0x8c                                          |     r0 += var_8ch;
    0x0800aaf0 mov r1, 0x10                                              |     r1 = 0x10;
    0x0800aaf4 stmdaeq r2, {r0, r2, r4, r6, r7, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r4, r6, r7, r8, ip, sp, lr}");
    0x0800aaf8 cmp r0, 0x10                                              |     
                                                                         |     if (r0 != 0x10) {
    0x0800aafc bne 0x800a8d4                                             |         goto label_5;
                                                                         |     }
    0x0800ab00 b 0x800a7bc                                               |     goto label_6;
                                                                         | label_10:
    0x0800ab04 mvn r5, 0x15                                              |     r5 = ~0x15;
    0x0800ab08 b 0x800a76c                                               |     goto label_2;
                                                                         | label_23:
    0x0800ab0c cmp r0, 0                                                 |     
                                                                         |     if (r0 != 0) {
    0x0800ab10 mvnne r5, 0x10                                            |         r5 = ~0x10;
                                                                         |         goto label_26;
                                                                         |     }
                                                                         |     if (r0 != 0) {
                                                                         | label_26:
    0x0800ab14 bne 0x800a7c0                                             |         goto label_1;
                                                                         |     }
    0x0800ab18 add r2, sp, 0x1c                                          |     r2 += var_1ch;
    0x0800ab1c add r1, sp, 0x4c                                          |     r1 += var_4ch;
    0x0800ab20 mov r0, r7                                                |     r0 = r7;
    0x0800ab24 bl 0x8007afc                                              |     r0 = ip_vs_add_service ();
    0x0800ab28 mov r5, r0                                                |     r5 = r0;
    0x0800ab2c b 0x800a7c0                                               |     goto label_1;
                                                                         | label_22:
    0x0800ab8c ldr fp, [r3, 0x1c]                                        |     fp = *((r3 + 0x1c));
    0x0800ab90 eor r2, r2, r0                                            |     r2 ^= r0;
    0x0800ab94 eor fp, fp, sl                                            |     
    0x0800ab98 orr r2, fp, r2                                            |     r2 = fp | r2;
    0x0800ab9c ldr fp, [r3, 0x20]                                        |     fp = *((r3 + 0x20));
    0x0800aba0 eor fp, fp, sb                                            |     
    0x0800aba4 orr r2, r2, fp                                            |     r2 |= fp;
    0x0800aba8 ldr fp, [r3, 0x24]                                        |     fp = *((r3 + 0x24));
    0x0800abac eor fp, fp, r8                                            |     
    0x0800abb0 orrs fp, r2, fp                                           |     
                                                                         |     if (fp == r2) {
    0x0800abb4 beq 0x800a9ac                                             |         goto label_7;
                                                                         |     }
    0x0800abb8 b 0x800a980                                               |     goto label_0;
                                                                         | label_16:
    0x0800abbc mov r0, r7                                                |     r0 = r7;
    0x0800abc0 mov r1, 0                                                 |     r1 = 0;
    0x0800abc4 bl 0x80097c4                                              |     r0 = ip_vs_flush ();
    0x0800abc8 mov r5, r0                                                |     r5 = r0;
    0x0800abcc b 0x800a7c0                                               |     goto label_1;
                                                                         | label_13:
    0x0800abd0 mov r0, r8                                                |     r0 = r8;
    0x0800abd4 b 0x800a704                                               |     goto label_8;
                                                                         | label_17:
    0x0800abd8 add r1, sp, 0x7c                                          |     r1 += var_7ch;
    0x0800abdc mov r0, r7                                                |     r0 = r7;
    0x0800abe0 bl 0x80077a4                                              |     r0 = ip_vs_set_timeout ();
    0x0800abe4 mov r5, r0                                                |     r5 = r0;
    0x0800abe8 b 0x800a7c0                                               |     goto label_1;
                                                                         | label_9:
    0x0800abec mvn r5, 0                                                 |     r5 = ~0;
    0x0800abf0 b 0x800a76c                                               |     goto label_2;
                                                                         | label_18:
    0x0800abf4 mov r0, r7                                                |     r0 = r7;
    0x0800abf8 bl 0x80083ec                                              |     r0 = ip_vs_zero_all ();
    0x0800abfc mov r5, r0                                                |     r5 = r0;
    0x0800ac00 b 0x800a7c0                                               |     goto label_1;
                                                                         | label_20:
    0x0800ac04 rev16 r3, sl                                              |     __asm ("rev16 r3, sl");
    0x0800ac08 add r2, sp, 0x50                                          |     r2 += var_50h;
    0x0800ac0c mov r1, sb                                                |     r1 = sb;
    0x0800ac10 stmdaeq r1, {r3, r5, r8, sl, pc}                          |     __asm ("stmdaeq r1, {r3, r5, r8, sl, pc}");
    0x0800ac14 stmdaeq r1, {r3, r5, r8, sl, pc}                          |     __asm ("stmdaeq r1, {r3, r5, r8, sl, pc}");
    0x0800ac18 uxth r3, r3                                               |     r3 = (int16_t) r3;
    0x0800ac1c mvn r5, 0xd                                               |     r5 = ~0xd;
    0x0800ac20 stmdaeq r2, {r0, r3, r4, r6, r7, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r3, r4, r6, r7, ip, sp, lr}");
    0x0800ac24 b 0x800a7c0                                               |     goto label_1;
                                                                         | }
    ; assembly                                                                   | /* r2dec pseudo code output */
                                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8001ed0 */
                                                                                 | #include <stdint.h>
                                                                                 |  
                                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                                 |  
    ; (fcn) sym.ip_vs_conn_new ()                                                | void ip_vs_conn_new (int32_t arg_ch, int32_t arg_40h, int32_t arg_44h, int32_t arg_48h, int32_t arg1, int32_t arg2) {
                                                                                 |     int32_t var_0h;
                                                                                 |     int32_t var_ch;
                                                                                 |     int32_t var_10h;
                                                                                 |     int32_t var_14h;
                                                                                 |     r0 = arg1;
                                                                                 |     r1 = arg2;
    0x08001ed0 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                         |     
    0x08001ed4 stmdaeq r1, {r2, r3, r4, r5, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r1, {r2, r3, r4, r5, r7, r8, sl, fp, ip, pc}");
    0x08001ed8 stmdaeq r1, {r2, r3, r4, r5, r7, r8, sl, fp, ip, pc}              |     __asm ("stmdaeq r1, {r2, r3, r4, r5, r7, r8, sl, fp, ip, pc}");
    0x08001edc sub sp, sp, 0x1c                                                  |     
    0x08001ee0 ldr r8, [r0]                                                      |     r8 = *(r0);
    0x08001ee4 mov r5, r0                                                        |     r5 = r0;
    0x08001ee8 mov r6, r1                                                        |     r6 = r1;
    0x08001eec ldrh r1, [r0, 0x10]                                               |     r1 = *(var_0hx10);
    0x08001ef0 mov r0, r8                                                        |     r0 = r8;
    0x08001ef4 mov sb, r2                                                        |     sb = r2;
    0x08001ef8 str lr, [sp, 0x10]                                                |     var_10h = lr;
    0x08001efc str r3, [sp, 0xc]                                                 |     *(arg_ch) = r3;
    0x08001f00 ldr r7, [sp, 0x44]                                                |     r7 = *(arg_44h);
    0x08001f04 stmdaeq r1, {r2, r3, r4, r5, sl, fp, sp}                          |     __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, sp}");
    0x08001f08 mov r1, 0xa20                                                     |     r1 = 0xa20;
    0x08001f0c mov fp, r0                                                        |     
    0x08001f10 ldr r0, [sl, 8]                                                   |     r0 = *((sl + 8));
    0x08001f14 stmdaeq r2, {r0, r5, r6, r7, ip, sp, lr}                          |     __asm ("stmdaeq r2, {r0, r5, r6, r7, ip, sp, lr}");
    0x08001f18 subs r4, r0, 0                                                    |     r4 = r0 - 0;
                                                                                 |     if (r4 == r0) {
    0x08001f1c beq 0x8002444                                                     |         goto label_11;
                                                                                 |     }
    0x08001f20 mov r3, 0                                                         |     r3 = 0;
    0x08001f24 add r0, r4, 0x50                                                  |     r0 = r4 + 0x50;
    0x08001f28 mov r2, r3                                                        |     r2 = r3;
    0x08001f2c str r3, [r4]                                                      |     *(r4) = r3;
    0x08001f30 str r3, [r4, 4]                                                   |     *((r4 + 4)) = r3;
    0x08001f34 stmdaeq r0, {r2, sb, fp}                                          |     __asm ("stmdaeq r0, {r2, sb, fp}");
    0x08001f38 stmdaeq r0, {r2, sb, fp}                                          |     __asm ("stmdaeq r0, {r2, sb, fp}");
    0x08001f3c str r3, [sp]                                                      |     *(sp) = r3;
    0x08001f40 stmdaeq r2, {r0, r2, r5, r6, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r2, r5, r6, r7, ip, sp, lr}");
    0x08001f44 ldrh r2, [r5, 0x12]                                               |     r2 = *((r5 + 0x12));
    0x08001f48 ldrh r1, [r5, 0x10]                                               |     r1 = *((r5 + 0x10));
    0x08001f4c mov r3, 0                                                         |     r3 = 0;
    0x08001f50 cmp r2, 0xa                                                       |     
    0x08001f54 strh r2, [r4, 0xe]                                                |     *((r4 + 0xe)) = r2;
    0x08001f58 str r8, [r4, 0x48]                                                |     *((r4 + 0x48)) = r8;
    0x08001f5c ldr r2, [r5, 4]                                                   |     r2 = *((r5 + 4));
    0x08001f60 strh r6, [r4, 0x46]                                               |     *((r4 + 0x46)) = r6;
    0x08001f64 strh r1, [r4, 0x44]                                               |     *((r4 + 0x44)) = r1;
                                                                                 |     if (r2 == 0xa) {
    0x08001f68 beq 0x8002338                                                     |         goto label_12;
                                                                                 |     }
    0x08001f6c ldr r2, [r2]                                                      |     r2 = *(r2);
    0x08001f70 ldr ip, [r5, 8]                                                   |     ip = *((r5 + 8));
    0x08001f74 strd r2, r3, [r4, 0x10]                                           |     __asm ("strd r2, r3, [r4, 0x10]");
    0x08001f78 str r3, [r4, 0x18]                                                |     *((r4 + 0x18)) = r3;
    0x08001f7c str r3, [r4, 0x1c]                                                |     *((r4 + 0x1c)) = r3;
    0x08001f80 ldrh r3, [r5, 0xc]                                                |     r3 = *((r5 + 0xc));
    0x08001f84 strh r3, [r4, 8]                                                  |     *((r4 + 8)) = r3;
                                                                                 | label_3:
    0x08001f88 ldr r3, [ip]                                                      |     r3 = *(ip);
    0x08001f8c str r3, [r4, 0x20]                                                |     *((r4 + 0x20)) = r3;
    0x08001f90 mov r3, 0                                                         |     r3 = 0;
    0x08001f94 str r3, [r4, 0x24]                                                |     *((r4 + 0x24)) = r3;
    0x08001f98 str r3, [r4, 0x28]                                                |     *((r4 + 0x28)) = r3;
    0x08001f9c str r3, [r4, 0x2c]                                                |     *((r4 + 0x2c)) = r3;
                                                                                 | label_4:
    0x08001fa0 uxth r6, r6                                                       |     r6 = (int16_t) r6;
    0x08001fa4 ldrh r3, [r5, 0xe]                                                |     r3 = *((r5 + 0xe));
    0x08001fa8 cmp r6, 0xa                                                       |     
    0x08001fac strh r3, [r4, 0xc]                                                |     *((r4 + 0xc)) = r3;
                                                                                 |     if (r6 != 0xa) {
    0x08001fb0 addeq ip, r4, 0x30                                                |         
                                                                                 |     }
                                                                                 |     if (r6 == 0xa) {
    0x08001fb4 ldrne r3, [sb]                                                    |         r3 = *(sb);
                                                                                 |     }
                                                                                 |     if (r6 != 0xa) {
    0x08001fb8 ldmeq sb, {r0, r1, r2, r3}                                        |         r0 = *(sb);
                                                                                 |         r1 = *((sb + 4));
                                                                                 |         r2 = *((sb + 8));
                                                                                 |         r3 = *((sb + 12));
                                                                                 |     }
                                                                                 |     if (r6 != 0xa) {
    0x08001fbc stmeq ip, {r0, r1, r2, r3}                                        |         *(ip) = r0;
                                                                                 |         *((ip + 4)) = r1;
                                                                                 |         *((ip + 8)) = r2;
                                                                                 |         *((ip + 12)) = r3;
                                                                                 |     }
                                                                                 |     if (r6 == 0xa) {
    0x08001fc0 strne r3, [r4, 0x30]                                              |         *((r4 + 0x30)) = r3;
                                                                                 |     }
                                                                                 |     if (r6 == 0xa) {
    0x08001fc4 movne r3, 0                                                       |         r3 = 0;
                                                                                 |     }
                                                                                 |     if (r6 == 0xa) {
    0x08001fc8 strne r3, [r4, 0x34]                                              |         *((r4 + 0x34)) = r3;
                                                                                 |     }
                                                                                 |     if (r6 == 0xa) {
    0x08001fcc strne r3, [r4, 0x38]                                              |         *((r4 + 0x38)) = r3;
                                                                                 |     }
                                                                                 |     if (r6 == 0xa) {
    0x08001fd0 strne r3, [r4, 0x3c]                                              |         *((r4 + 0x3c)) = r3;
                                                                                 |     }
    0x08001fd4 ldr r3, [sp, 0xc]                                                 |     r3 = *(arg_ch);
    0x08001fd8 strh r3, [r4, 0xa]                                                |     *((r4 + 0xa)) = r3;
    0x08001fdc ldr r3, [sp, 0x40]                                                |     r3 = *(arg_40h);
    0x08001fe0 str r3, [r4, 0x40]                                                |     *((r4 + 0x40)) = r3;
    0x08001fe4 tst r3, 0x1000                                                    |     
    0x08001fe8 ldr r3, [sp, 0x48]                                                |     r3 = *(arg_48h);
    0x08001fec str r3, [r4, 0x6c]                                                |     *((r4 + 0x6c)) = r3;
                                                                                 |     if ((r3 & 0x1000) != 0) {
    0x08001ff0 beq 0x8002028                                                     |         
    0x08001ff4 ldr r3, [r5, 0x14]                                                |         r3 = *((r5 + 0x14));
    0x08001ff8 cmp r3, 0                                                         |         
                                                                                 |         if (r3 != 0) {
    0x08001ffc beq 0x8002028                                                     |             
    0x08002000 ldr r0, [r3, 0x10]                                                |             r0 = *((r3 + 0x10));
    0x08002004 cmp r0, 0                                                         |             
                                                                                 |             if (r0 != 0) {
    0x08002008 beq 0x8002014                                                     |                 
    0x0800200c stmdaeq r2, {r0, r3, r5, r6, r7, ip, sp, lr}                      |                 __asm ("stmdaeq r2, {r0, r3, r5, r6, r7, ip, sp, lr}");
    0x08002010 ldr r3, [r5, 0x14]                                                |                 r3 = *((r5 + 0x14));
                                                                                 |             }
    0x08002014 str r3, [r4, 0xa8]                                                |             *((r4 + 0xa8)) = r3;
    0x08002018 ldr r3, [r5, 0x18]                                                |             r3 = *((r5 + 0x18));
    0x0800201c str r3, [r4, 0xac]                                                |             *((r4 + 0xac)) = r3;
    0x08002020 ldrb r3, [r5, 0x1c]                                               |             r3 = *((r5 + 0x1c));
    0x08002024 b 0x8002034                                                       |             
                                                                                 |         }
                                                                                 |     } else {
    0x08002028 mov r3, 0                                                         |         r3 = 0;
    0x0800202c str r3, [r4, 0xa8]                                                |         *((r4 + 0xa8)) = r3;
    0x08002030 str r3, [r4, 0xac]                                                |         *((r4 + 0xac)) = r3;
                                                                                 |     }
    0x08002034 strb r3, [r4, 0xb0]                                               |     *((r4 + 0xb0)) = r3;
    0x08002038 add r3, r8, 0x250                                                 |     r3 = r8 + 0x250;
    0x0800203c mov r2, 0                                                         |     r2 = 0;
    0x08002040 mov r1, 1                                                         |     r1 = 1;
    0x08002044 pld [r3]                                                          |     __asm ("pld [r3]");
    0x08002048 str r1, [r4, 0x4c]                                                |     *((r4 + 0x4c)) = r1;
    0x0800204c str r2, [r4, 0x74]                                                |     *((r4 + 0x74)) = r2;
    0x08002050 str r2, [r4, 0x78]                                                |     *((r4 + 0x78)) = r2;
    0x08002054 str r2, [r4, 0x84]                                                |     *((r4 + 0x84)) = r2;
    0x08002058 str r2, [r4, 0x88]                                                |     *((r4 + 0x88)) = r2;
    0x0800205c str r2, [r4, 0x8c]                                                |     *((r4 + 0x8c)) = r2;
    0x08002060 str r2, [r4, 0x94]                                                |     *((r4 + 0x94)) = r2;
    0x08002064 str r2, [r4, 0xa0]                                                |     *((r4 + 0xa0)) = r2;
    0x08002068 str r2, [r4, 0x80]                                                |     *((r4 + 0x80)) = r2;
                                                                                 |     do {
    0x0800206c ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x08002070 add r2, r2, 1                                                     |         r2++;
    0x08002074 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x08002078 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x0800207c bne 0x800206c                                                     |         
                                                                                 |     } while (r0 != 0);
    0x08002080 ldr r3, [sp, 0x40]                                                |     r3 = *(arg_40h);
    0x08002084 tst r3, 0x800                                                     |     
                                                                                 |     if ((r3 & 0x800) != 0) {
    0x08002088 bne 0x8002200                                                     |         goto label_13;
                                                                                 |     }
                                                                                 | label_0:
    0x0800208c mov r3, 0                                                         |     r3 = 0;
    0x08002090 cmp r7, 0                                                         |     
    0x08002094 str r3, [r4, 0x7c]                                                |     *((r4 + 0x7c)) = r3;
                                                                                 |     if (r7 == 0) {
    0x08002098 beq 0x8002154                                                     |         goto label_14;
                                                                                 |     }
    0x0800209c add r0, r7, 0x3c                                                  |     r0 = r7 + 0x3c;
    0x080020a0 pld [r0]                                                          |     __asm ("pld [r0]");
                                                                                 |     do {
    0x080020a4 ldrex r3, [r0]                                                    |         __asm ("ldrex r3, [r0]");
    0x080020a8 add r2, r3, 1                                                     |         r2 = r3 + 1;
    0x080020ac strex r1, r2, [r0]                                                |         __asm ("strex r1, r2, [r0]");
    0x080020b0 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x080020b4 bne 0x80020a4                                                     |         
                                                                                 |     } while (r7 != 0);
    0x080020b8 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x080020bc beq 0x800242c                                                     |         goto label_15;
                                                                                 |     }
    0x080020c0 add r2, r3, 1                                                     |     r2 = r3 + 1;
    0x080020c4 orrs r2, r2, r3                                                   |     r2 |= r3;
                                                                                 |     if (r2 < r2) {
    0x080020c8 bmi 0x80023f8                                                     |         goto label_16;
                                                                                 |     }
                                                                                 | label_6:
    0x080020cc ldrh r3, [r4, 0x44]                                               |     r3 = *((r4 + 0x44));
    0x080020d0 cmp r3, 0x11                                                      |     
    0x080020d4 ldr r3, [r7, 0x28]                                                |     r3 = *((r7 + 0x28));
    0x080020d8 ldr r2, [r4, 0x40]                                                |     r2 = *((r4 + 0x40));
    0x080020dc bicne r3, r3, 0x2000                                              |     __asm ("bicne r3, r3, 0x2000");
    0x080020e0 tst r2, 0x20                                                      |     
                                                                                 |     if ((r2 & 0x20) != 0) {
    0x080020e4 beq 0x80020f4                                                     |         
    0x080020e8 tst r2, 0x1000                                                    |         
    0x080020ec bic r2, r2, 0x87                                                  |         r2 = BIT_MASK (r2, 0x87);
    0x080020f0 biceq r3, r3, 0x100                                               |         __asm ("biceq r3, r3, 0x100");
                                                                                 |     }
    0x080020f4 orr r3, r3, r2                                                    |     r3 |= r2;
    0x080020f8 str r7, [r4, 0x7c]                                                |     *((r4 + 0x7c)) = r7;
    0x080020fc tst r3, 0x1000                                                    |     
    0x08002100 str r3, [r4, 0x40]                                                |     *((r4 + 0x40)) = r3;
                                                                                 |     if ((r3 & 0x1000) != 0) {
    0x08002104 bne 0x8002224                                                     |         goto label_17;
                                                                                 |     }
    0x08002108 tst r3, 0x100                                                     |     
                                                                                 |     if ((r3 & 0x100) != 0) {
    0x0800210c addeq r3, r7, 0x144                                               |         r3 = r7 + 0x144;
                                                                                 |     }
                                                                                 |     if ((r3 & 0x100) == 0) {
    0x08002110 addne r3, r7, 0x148                                               |         r3 = r7 + 0x148;
                                                                                 |     }
    0x08002114 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x08002118 ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x0800211c add r2, r2, 1                                                     |         r2++;
    0x08002120 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x08002124 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x08002128 bne 0x8002118                                                     |         
                                                                                 |     } while ((r3 & 0x100) != 0);
                                                                                 | label_1:
    0x0800212c ldr r3, [r7, 0x150]                                               |     r3 = *((r7 + 0x150));
    0x08002130 cmp r3, 0                                                         |     
                                                                                 |     if (r3 != 0) {
    0x08002134 beq 0x8002154                                                     |         
    0x08002138 ldr r2, [r7, 0x144]                                               |         r2 = *((r7 + 0x144));
    0x0800213c ldr r1, [r7, 0x148]                                               |         r1 = *((r7 + 0x148));
    0x08002140 add r2, r2, r1                                                    |         r2 += r1;
    0x08002144 cmp r3, r2                                                        |         
                                                                                 |         if (r3 > r2) {
    0x08002148 ldrls r3, [r7, 0x24]                                              |             r3 = *((r7 + 0x24));
                                                                                 |         }
                                                                                 |         if (r3 > r2) {
    0x0800214c orrls r3, r3, 2                                                   |             r3 |= 2;
                                                                                 |         }
                                                                                 |         if (r3 <= r2) {
    0x08002150 strls r3, [r7, 0x24]                                              |             *((r7 + 0x24)) = r3;
                                                                                 |             goto label_14;
                                                                                 |         }
                                                                                 |     }
                                                                                 | label_14:
    0x08002154 ldrh r3, [r5, 0x12]                                               |     r3 = *((r5 + 0x12));
    0x08002158 mov r2, 0                                                         |     r2 = 0;
    0x0800215c strh r2, [r4, 0x68]                                               |     *((r4 + 0x68)) = r2;
    0x08002160 cmp r3, 0xa                                                       |     
    0x08002164 stmdaeq r2, {r0, r5, r7, ip, sp, lr}                              |     __asm ("stmdaeq r2, {r0, r5, r7, ip, sp, lr}");
    0x08002168 stmdaeq r2, {r0, r5, r7, ip, sp, lr}                              |     __asm ("stmdaeq r2, {r0, r5, r7, ip, sp, lr}");
    0x0800216c strh r2, [r4, 0x6a]                                               |     *((r4 + 0x6a)) = r2;
    0x08002170 mov r2, 0x12c                                                     |     r2 = 0x12c;
    0x08002174 str r2, [r4, 0x64]                                                |     *((r4 + 0x64)) = r2;
    0x08002178 ldr r3, [r3]                                                      |     r3 = *(r3);
    0x0800217c bic r3, r3, 3                                                     |     r3 = BIT_MASK (r3, 3);
    0x08002180 str r3, [r4, 0x70]                                                |     *((r4 + 0x70)) = r3;
    0x08002184 ldr r3, [r4, 0x40]                                                |     r3 = *((r4 + 0x40));
    0x08002188 and r3, r3, 7                                                     |     r3 &= 7;
                                                                                 |     if (r3 == 0xa) {
    0x0800218c beq 0x8002318                                                     |         goto label_18;
                                                                                 |     }
    0x08002190 cmp r3, 4                                                         |     
                                                                                 |     if (r3 > 4) {
                                                                                 |         /* switch table (5 cases) at 0x800219c */
    0x08002194 ldrls pc, [pc, r3, lsl 2]                                         |         offset_0 = r3 << 2;
                                                                                 |         pc = *((pc + offset_0));
                                                                                 |     }
    0x08002198 b 0x80021cc                                                       |     
                                                                                 | label_2:
    0x080021cc cmp fp, 0                                                         |     
                                                                                 |     if (fp != 0) {
    0x080021d0 bne 0x8002404                                                     |         goto label_19;
                                                                                 |     }
                                                                                 | label_7:
    0x080021d4 ldr r3, [r8, 0x40c]                                               |     r3 = *((r8 + 0x40c));
    0x080021d8 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x080021dc ldrne r3, [r4, 0x40]                                              |         r3 = *((r4 + 0x40));
                                                                                 |     }
                                                                                 |     if (r3 == 0) {
    0x080021e0 orrne r3, r3, 0x10000                                             |         r3 |= 0x10000;
                                                                                 |     }
                                                                                 |     if (r3 == 0) {
    0x080021e4 strne r3, [r4, 0x40]                                              |         *((r4 + 0x40)) = r3;
                                                                                 |     }
    0x080021e8 ldr r3, [r4, 0x40]                                                |     r3 = *((r4 + 0x40));
    0x080021ec tst r3, 0x2000                                                    |     
                                                                                 |     if ((r3 & 0x2000) == 0) {
    0x080021f0 beq 0x8002244                                                     |         goto label_20;
                                                                                 |     }
                                                                                 | label_9:
    0x080021f4 mov r0, r4                                                        |     r0 = r4;
    0x080021f8 add sp, sp, 0x1c                                                  |     
    0x080021fc pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_13:
    0x08002200 stmdaeq r1, {r2, r3, r4, r5, r6, r7, r8, sb, sl, sp, pc}          |     __asm ("stmdaeq r1, {r2, r3, r4, r5, r6, r7, r8, sb, sl, sp, pc}");
    0x08002204 stmdaeq r1, {r2, r3, r4, r5, r6, r7, r8, sb, sl, sp, pc}          |     __asm ("stmdaeq r1, {r2, r3, r4, r5, r6, r7, r8, sb, sl, sp, pc}");
    0x08002208 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x0800220c ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x08002210 add r2, r2, 1                                                     |         r2++;
    0x08002214 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x08002218 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x0800221c bne 0x800220c                                                     |         
                                                                                 |     } while ((r3 & 0x2000) != 0);
    0x08002220 b 0x800208c                                                       |     goto label_0;
                                                                                 | label_17:
    0x08002224 add r3, r7, 0x14c                                                 |     r3 = r7 + 0x14c;
    0x08002228 pld [r3]                                                          |     __asm ("pld [r3]");
                                                                                 |     do {
    0x0800222c ldrex r2, [r3]                                                    |         __asm ("ldrex r2, [r3]");
    0x08002230 add r2, r2, 1                                                     |         r2++;
    0x08002234 strex r1, r2, [r3]                                                |         __asm ("strex r1, r2, [r3]");
    0x08002238 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x0800223c bne 0x800222c                                                     |         
                                                                                 |     } while ((r3 & 0x2000) != 0);
    0x08002240 b 0x800212c                                                       |     goto label_1;
                                                                                 | label_20:
    0x08002244 mov r0, r4                                                        |     r0 = r4;
    0x08002248 bl 0x8000990                                                      |     ip_vs_conn_hashkey_conn ();
    0x0800224c mov r3, sp                                                        |     r3 = sp;
    0x08002250 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08002254 mov r5, r0                                                        |     r5 = r0;
    0x08002258 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x0800225c ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x08002260 add r2, r2, 0x200                                                 |     r2 += 0x200;
    0x08002264 add r2, r2, 1                                                     |     r2++;
    0x08002268 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x0800226c ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x08002270 add r2, r2, 1                                                     |     r2++;
    0x08002274 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x08002278 ldr r3, [r4, 0x40]                                                |     r3 = *((r4 + 0x40));
    0x0800227c tst r3, 0x40                                                      |     
                                                                                 |     if ((r3 & 0x40) != 0) {
    0x08002280 bne 0x8002464                                                     |         goto label_21;
                                                                                 |     }
    0x08002284 add r0, r4, 0x4c                                                  |     r0 = r4 + 0x4c;
    0x08002288 ldr r3, [r4, 0x40]                                                |     r3 = *((r4 + 0x40));
    0x0800228c orr r3, r3, 0x40                                                  |     r3 |= 0x40;
    0x08002290 str r3, [r4, 0x40]                                                |     *((r4 + 0x40)) = r3;
    0x08002294 pld [r0]                                                          |     __asm ("pld [r0]");
                                                                                 |     do {
    0x08002298 ldrex r3, [r0]                                                    |         __asm ("ldrex r3, [r0]");
    0x0800229c add r2, r3, 1                                                     |         r2 = r3 + 1;
    0x080022a0 strex r1, r2, [r0]                                                |         __asm ("strex r1, r2, [r0]");
    0x080022a4 teq r1, 0                                                         |         __asm ("teq r1, 0");
    0x080022a8 bne 0x8002298                                                     |         
                                                                                 |     } while ((r3 & 0x40) != 0);
    0x080022ac cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x080022b0 beq 0x8002438                                                     |         goto label_22;
                                                                                 |     }
    0x080022b4 add r2, r3, 1                                                     |     r2 = r3 + 1;
    0x080022b8 orrs r2, r2, r3                                                   |     r2 |= r3;
                                                                                 |     if (r2 < r2) {
    0x080022bc bmi 0x8002420                                                     |         goto label_23;
                                                                                 |     }
                                                                                 | label_8:
    0x080022c0 ldr r3, [sl, 4]                                                   |     r3 = *((sl + 4));
    0x080022c4 ldr r2, [r3, r5, lsl 2]                                           |     offset_1 = r5 << 2;
                                                                                 |     r2 = *((r3 + offset_1));
    0x080022c8 add r1, r3, r5, lsl 2                                             |     r1 = r3 + (r5 << 2);
    0x080022cc str r2, [r4]                                                      |     *(r4) = r2;
    0x080022d0 str r1, [r4, 4]                                                   |     *((r4 + 4)) = r1;
    0x080022d4 cmp r2, 0                                                         |     
    0x080022d8 str r4, [r3, r5, lsl 2]                                           |     offset_2 = r5 << 2;
                                                                                 |     *((r3 + offset_2)) = r4;
                                                                                 |     if (r2 == 0) {
    0x080022dc strne r4, [r2, 4]                                                 |         *((r2 + 4)) = r4;
                                                                                 |     }
                                                                                 | label_10:
    0x080022e0 mov r3, sp                                                        |     r3 = sp;
    0x080022e4 bic r3, r3, 0x1fc0                                                |     r3 = BIT_MASK (r3, 0x1fc0);
    0x080022e8 bic r3, r3, 0x3f                                                  |     r3 = BIT_MASK (r3, 0x3f);
    0x080022ec ldr r2, [r3, 4]                                                   |     r2 = *((r3 + 4));
    0x080022f0 sub r2, r2, 1                                                     |     r2--;
    0x080022f4 str r2, [r3, 4]                                                   |     *((r3 + 4)) = r2;
    0x080022f8 cmp r2, 0                                                         |     
                                                                                 |     if (r2 == 0) {
    0x080022fc beq 0x80023e4                                                     |         goto label_24;
                                                                                 |     }
                                                                                 | label_5:
    0x08002300 ldr r0, [pc, 0x178]                                               |     r0 = *(0x800247c);
    0x08002304 movw r1, 0x201                                                    |     r1 = 0x201;
    0x08002308 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}                          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x0800230c mov r0, r4                                                        |     r0 = r4;
    0x08002310 add sp, sp, 0x1c                                                  |     
    0x08002314 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                          |     
                                                                                 | label_18:
    0x08002318 cmp r3, 4                                                         |     
                                                                                 |     if (r3 > 4) {
                                                                                 |         /* switch table (5 cases) at 0x8002324 */
    0x0800231c ldrls pc, [pc, r3, lsl 2]                                         |         offset_3 = r3 << 2;
                                                                                 |         pc = *((pc + offset_3));
                                                                                 |     }
    0x08002320 b 0x80021cc                                                       |     goto label_2;
                                                                                 | label_12:
    0x08002338 add lr, r4, 0x10                                                  |     lr = r4 + 0x10;
    0x0800233c cmp r1, r3                                                        |     
    0x08002340 ldrh r3, [r5, 0xc]                                                |     r3 = *((r5 + 0xc));
    0x08002344 str r3, [sp, 0x14]                                                |     var_14h = r3;
    0x08002348 ldm r2, {r0, r1, r2, r3}                                          |     r0 = *(r2);
                                                                                 |     r1 = *((r2 + 4));
                                                                                 |     r2 = *((r2 + 8));
                                                                                 |     r3 = *((r2 + 12));
    0x0800234c stm lr, {r0, r1, r2, r3}                                          |     *(lr) = r0;
                                                                                 |     *((lr + 4)) = r1;
                                                                                 |     *((lr + 8)) = r2;
                                                                                 |     *((lr + 12)) = r3;
    0x08002350 ldr r3, [sp, 0x14]                                                |     r3 = var_14h;
    0x08002354 ldr ip, [r5, 8]                                                   |     ip = *((r5 + 8));
    0x08002358 strh r3, [r4, 8]                                                  |     *((r4 + 8)) = r3;
                                                                                 |     if (r1 == r3) {
    0x0800235c beq 0x8001f88                                                     |         goto label_3;
                                                                                 |     }
    0x08002360 add lr, r4, 0x20                                                  |     lr = r4 + 0x20;
    0x08002364 ldm ip, {r0, r1, r2, r3}                                          |     r0 = *(ip);
                                                                                 |     r1 = *((ip + 4));
                                                                                 |     r2 = *((ip + 8));
                                                                                 |     r3 = *((ip + 12));
    0x08002368 mov ip, lr                                                        |     
    0x0800236c stm lr, {r0, r1, r2, r3}                                          |     *(lr) = r0;
                                                                                 |     *((lr + 4)) = r1;
                                                                                 |     *((lr + 8)) = r2;
                                                                                 |     *((lr + 12)) = r3;
    0x08002370 b 0x8001fa0                                                       |     goto label_4;
                                                                                 | label_24:
    0x080023e4 ldr r3, [r3]                                                      |     r3 = *(r3);
    0x080023e8 tst r3, 2                                                         |     
                                                                                 |     if ((r3 & 2) == 0) {
    0x080023ec beq 0x8002300                                                     |         goto label_5;
                                                                                 |     }
    0x080023f0 stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}");
    0x080023f4 b 0x8002300                                                       |     goto label_5;
                                                                                 | label_16:
    0x080023f8 mov r1, 1                                                         |     r1 = 1;
    0x080023fc stmdaeq r2, {r0, r6, r7, ip, sp, lr}                              |     __asm ("stmdaeq r2, {r0, r6, r7, ip, sp, lr}");
    0x08002400 b 0x80020cc                                                       |     goto label_6;
                                                                                 | label_19:
    0x08002404 ldr r3, [fp, 0xc]                                                 |     r3 = *(arg_ch);
    0x08002408 cmp r3, 0                                                         |     
                                                                                 |     if (r3 == 0) {
    0x0800240c beq 0x80021d4                                                     |         goto label_7;
                                                                                 |     }
    0x08002410 ldr r1, [fp, 4]                                                   |     r1 = *(arg_44h);
    0x08002414 mov r0, r4                                                        |     r0 = r4;
    0x08002418 stmdaeq r1, {r2, r3, r4, r6, fp}                                  |     __asm ("stmdaeq r1, {r2, r3, r4, r6, fp}");
    0x0800241c b 0x80021d4                                                       |     goto label_7;
                                                                                 | label_23:
    0x08002420 mov r1, 1                                                         |     r1 = 1;
    0x08002424 stmdaeq r2, {r0, r6, r7, ip, sp, lr}                              |     __asm ("stmdaeq r2, {r0, r6, r7, ip, sp, lr}");
    0x08002428 b 0x80022c0                                                       |     goto label_8;
                                                                                 | label_15:
    0x0800242c mov r1, 2                                                         |     r1 = 2;
    0x08002430 stmdaeq r2, {r0, r6, r7, ip, sp, lr}                              |     __asm ("stmdaeq r2, {r0, r6, r7, ip, sp, lr}");
    0x08002434 b 0x80020cc                                                       |     goto label_6;
                                                                                 | label_22:
    0x08002438 mov r1, 2                                                         |     r1 = 2;
    0x0800243c stmdaeq r2, {r0, r6, r7, ip, sp, lr}                              |     __asm ("stmdaeq r2, {r0, r6, r7, ip, sp, lr}");
    0x08002440 b 0x80022c0                                                       |     goto label_8;
                                                                                 | label_11:
    0x08002444 stmdaeq r2, {r0, r2, r3, r5, r6, r7, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r0, r2, r3, r5, r6, r7, ip, sp, lr}");
    0x08002448 cmp r0, 0                                                         |     
                                                                                 |     if (r0 == 0) {
    0x0800244c beq 0x80021f4                                                     |         goto label_9;
                                                                                 |     }
    0x08002450 ldr r1, [pc, 0x2c]                                                |     r1 = .text;
    0x08002454 stmdaeq r1, {r2, r3, r4, sb, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r2, r3, r4, sb, sl, fp, ip, sp, lr}");
    0x08002458 stmdaeq r1, {r2, r3, r4, sb, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r2, r3, r4, sb, sl, fp, ip, sp, lr}");
    0x0800245c stmdaeq r2, {r0, r3, r4, r6, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r3, r4, r6, r7, ip, sp, lr}");
    0x08002460 b 0x80021f4                                                       |     goto label_9;
                                                                                 | label_21:
    0x08002464 ldr r2, [sp, 0x10]                                                |     r2 = var_10h;
    0x08002468 stmdaeq r1, {r3, r5, r8, sb, ip, sp, lr}                          |     __asm ("stmdaeq r1, {r3, r5, r8, sb, ip, sp, lr}");
    0x0800246c stmdaeq r1, {r3, r5, r8, sb, ip, sp, lr}                          |     __asm ("stmdaeq r1, {r3, r5, r8, sb, ip, sp, lr}");
    0x08002470 stmdaeq r1, {r5, r6, r7, r8, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r5, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08002474 stmdaeq r1, {r5, r6, r7, r8, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r5, r6, r7, r8, sl, fp, ip, sp, lr}");
    0x08002478 stmdaeq r2, {r0, r3, r4, r6, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r3, r4, r6, r7, ip, sp, lr}");
    0x0800247c b 0x80022e0                                                       |     goto label_10;
                                                                                 | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8000190 */
                                                             | #include <stdint.h>
                                                             |  
    ; (fcn) sym.ip_vs_conn_seq_start ()                      | void ip_vs_conn_seq_start (int32_t arg1, int32_t arg2) {
                                                             |     r0 = arg1;
                                                             |     r1 = arg2;
    0x08000190 push {r4, r5, r6, lr}                         |     
    0x08000194 mov r4, r1                                    |     r4 = r1;
    0x08000198 mov r2, 0                                     |     r2 = 0;
    0x0800019c ldr r3, [r0, 0x40]                            |     r3 = *((r0 + 0x40));
    0x080001a0 mov r5, r0                                    |     r5 = r0;
    0x080001a4 str r2, [r3, 4]                               |     *((r3 + 4)) = r2;
    0x080001a8 stmdaeq r2, {r0, r3, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r3, r7, ip, sp, lr}");
    0x080001ac ldrd r2, r3, [r4]                             |     __asm ("ldrd r2, r3, [r4]");
    0x080001b0 orrs r1, r2, r3                               |     r1 = r2 | r3;
                                                             |     if (r1 == r2) {
    0x080001b4 bne 0x80001c0                                 |         
    0x080001b8 mov r0, 1                                     |         r0 = 1;
    0x080001bc pop {r4, r5, r6, pc}                          |         
                                                             |     }
    0x080001c0 subs r2, r2, 1                                |     r2--;
    0x080001c4 mov r0, r5                                    |     r0 = r5;
    0x080001c8 sbc r3, r3, 0                                 |     __asm ("sbc r3, r3, 0");
    0x080001cc pop {r4, r5, r6, lr}                          |     
    0x080001d0 b 0x8000070                                   |     return void (*0x8000070)() ();
                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8006ba4 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ip_vs_copy_stats ()                              | void ip_vs_copy_stats (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x08006ba4 push {r4, r5, r6, lr}                             |     
    0x08006ba8 movw r4, 0x201                                    |     r4 = 0x201;
    0x08006bac mov r3, sp                                        |     r3 = sp;
    0x08006bb0 bic ip, r3, 0x1fc0                                |     ip = BIT_MASK (r3, 0x1fc0);
    0x08006bb4 bic ip, ip, 0x3f                                  |     ip = BIT_MASK (ip, 0x3f);
    0x08006bb8 ldr lr, [ip, 4]                                   |     
    0x08006bbc add lr, lr, r4                                    |     lr += r4;
    0x08006bc0 str lr, [ip, 4]                                   |     
    0x08006bc4 ldr lr, [r1, 0xb0]                                |     
    0x08006bc8 ldr ip, [r1]                                      |     ip = *(r1);
    0x08006bcc ldr r5, [r1, 0xb4]                                |     r5 = *((r1 + 0xb4));
    0x08006bd0 subs ip, ip, lr                                   |     
    0x08006bd4 ldr lr, [r1, 4]                                   |     
    0x08006bd8 str ip, [r0]                                      |     *(r0) = ip;
    0x08006bdc sbc ip, lr, r5                                    |     __asm ("sbc ip, lr, r5");
    0x08006be0 str ip, [r0, 4]                                   |     *((r0 + 4)) = ip;
    0x08006be4 ldr lr, [r1, 0xb8]                                |     
    0x08006be8 ldr ip, [r1, 8]                                   |     ip = *((r1 + 8));
    0x08006bec ldr r5, [r1, 0xbc]                                |     r5 = *((r1 + 0xbc));
    0x08006bf0 subs ip, ip, lr                                   |     
    0x08006bf4 ldr lr, [r1, 0xc]                                 |     
    0x08006bf8 str ip, [r0, 8]                                   |     *((r0 + 8)) = ip;
    0x08006bfc sbc ip, lr, r5                                    |     __asm ("sbc ip, lr, r5");
    0x08006c00 str ip, [r0, 0xc]                                 |     *((r0 + 0xc)) = ip;
    0x08006c04 ldr lr, [r1, 0xc0]                                |     
    0x08006c08 ldr ip, [r1, 0x10]                                |     ip = *((r1 + 0x10));
    0x08006c0c ldr r5, [r1, 0xc4]                                |     r5 = *((r1 + 0xc4));
    0x08006c10 subs ip, ip, lr                                   |     
    0x08006c14 ldr lr, [r1, 0x14]                                |     
    0x08006c18 str ip, [r0, 0x10]                                |     *((r0 + 0x10)) = ip;
    0x08006c1c sbc ip, lr, r5                                    |     __asm ("sbc ip, lr, r5");
    0x08006c20 str ip, [r0, 0x14]                                |     *((r0 + 0x14)) = ip;
    0x08006c24 ldr lr, [r1, 0xc8]                                |     
    0x08006c28 ldr ip, [r1, 0x18]                                |     ip = *((r1 + 0x18));
    0x08006c2c ldr r5, [r1, 0xcc]                                |     r5 = *((r1 + 0xcc));
    0x08006c30 subs ip, ip, lr                                   |     
    0x08006c34 ldr lr, [r1, 0x1c]                                |     
    0x08006c38 str ip, [r0, 0x18]                                |     *((r0 + 0x18)) = ip;
    0x08006c3c sbc ip, lr, r5                                    |     __asm ("sbc ip, lr, r5");
    0x08006c40 str ip, [r0, 0x1c]                                |     *((r0 + 0x1c)) = ip;
    0x08006c44 ldr lr, [r1, 0xd0]                                |     
    0x08006c48 ldr ip, [r1, 0x20]                                |     ip = *((r1 + 0x20));
    0x08006c4c ldr r3, [r1, 0xd4]                                |     r3 = *((r1 + 0xd4));
    0x08006c50 subs ip, ip, lr                                   |     
    0x08006c54 ldr lr, [r1, 0x24]                                |     
    0x08006c58 str ip, [r0, 0x20]                                |     *((r0 + 0x20)) = ip;
    0x08006c5c sbc r3, lr, r3                                    |     __asm ("sbc r3, lr, r3");
    0x08006c60 str r3, [r0, 0x24]                                |     *((r0 + 0x24)) = r3;
    0x08006c64 stmdaeq r1, {r3, r4, r6, r7, sb, fp, sp}          |     __asm ("stmdaeq r1, {r3, r4, r6, r7, sb, fp, sp}");
    0x08006c68 mov r1, r4                                        |     r1 = r4;
    0x08006c6c ldr r0, [pc, 4]                                   |     r0 = sym.ip_vs_conn_array;
    0x08006c70 pop {r4, r5, r6, lr}                              |     
    0x08006c74 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x08006c78 stmdaeq r0, {r4, r5, r6}                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                 | }


r2dec has crashed (info: /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x800b738).
Please report the bug at https://github.com/radareorg/r2dec-js/issues
Use the option '--issue' or the command 'pddi' to generate 
the needed data for the issue.
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x800d8a4 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.ip_vs_nat_send_or_cont ()                            | void ip_vs_nat_send_or_cont (int32_t arg1, int32_t arg2) {
                                                                     |     int32_t var_24h;
                                                                     |     r0 = arg1;
                                                                     |     r1 = arg2;
    0x0800d8a4 push {r4, r5, r6, r7, lr}                             |     
    0x0800d8a8 mov r6, r3                                            |     r6 = r3;
    0x0800d8ac mov r4, r1                                            |     r4 = r1;
    0x0800d8b0 ldrb r3, [r1, 0x67]                                   |     r3 = *((r1 + 0x67));
    0x0800d8b4 sub sp, sp, 0x24                                      |     
    0x0800d8b8 mov r5, r2                                            |     r5 = r2;
    0x0800d8bc mov r7, r0                                            |     r7 = r0;
    0x0800d8c0 orr r3, r3, 1                                         |     r3 |= 1;
    0x0800d8c4 strb r3, [r1, 0x67]                                   |     *((r1 + 0x67)) = r3;
    0x0800d8c8 ldr r3, [r2, 0x40]                                    |     r3 = *((r2 + 0x40));
    0x0800d8cc tst r3, 0x10000                                       |     
                                                                     |     if ((r3 & 0x10000) != 0) {
    0x0800d8d0 bne 0x800dae8                                         |         goto label_7;
                                                                     |     }
    0x0800d8d4 ldr r2, [r1, 0x50]                                    |     r2 = *((r1 + 0x50));
    0x0800d8d8 bics r0, r2, 7                                        |     __asm ("bics r0, r2, 7");
                                                                     |     if ((r3 & 0x10000) != 0) {
    0x0800d8dc bne 0x800d9e8                                         |         goto label_8;
                                                                     |     }
                                                                     | label_0:
    0x0800d8e0 cmp r6, 0                                             |     
                                                                     |     if (r6 == 0) {
    0x0800d8e4 beq 0x800d938                                         |         goto label_9;
                                                                     |     }
    0x0800d8e8 ldrh r2, [r5, 0xc]                                    |     r2 = *((r5 + 0xc));
    0x0800d8ec ldrh r3, [r5, 0xa]                                    |     r3 = *((r5 + 0xa));
    0x0800d8f0 cmp r2, r3                                            |     
                                                                     |     if (r2 == r3) {
    0x0800d8f4 beq 0x800da14                                         |         goto label_10;
                                                                     |     }
                                                                     | label_1:
    0x0800d8f8 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0800d8fc cmp r3, 0                                             |     
    0x0800d900 beq 0x800d92c                                         |     
                                                                     |     while (r3 != 0) {
    0x0800d904 ldr r3, [r4, 0x4c]                                    |         r3 = *((r4 + 0x4c));
    0x0800d908 cmp r3, 0                                             |         
                                                                     |         if (r3 == 0) {
    0x0800d90c beq 0x800daac                                         |             goto label_11;
                                                                     |         }
    0x0800d910 mov r0, r4                                            |         r0 = r4;
    0x0800d914 blx r3                                                |         uint32_t (*r3)(uint32_t) (r0);
    0x0800d918 mov r3, 0                                             |         r3 = 0;
    0x0800d91c str r3, [r4, 0x4c]                                    |         *((r4 + 0x4c)) = r3;
    0x0800d920 str r3, [r4, 0xc]                                     |         *((r4 + 0xc)) = r3;
                                                                     | label_4:
    0x0800d924 cmp r6, 0                                             |         
                                                                     |         if (r6 == 0) {
    0x0800d928 beq 0x800dabc                                         |             goto label_12;
                                                                     |         }
                                                                     | label_2:
    0x0800d92c mov r0, 1                                             |         r0 = 1;
    0x0800d930 add sp, sp, 0x24                                      |         
    0x0800d934 pop {r4, r5, r6, r7, pc}                              |         
                                                                     | label_9:
    0x0800d938 ldr r3, [r4, 8]                                       |         r3 = *((r4 + 8));
    0x0800d93c cmp r3, 0                                             |         
    0x0800d940 bne 0x800d904                                         |         
                                                                     |     }
    0x0800d944 ldrb r3, [r4, 0x64]                                   |     r3 = *((r4 + 0x64));
    0x0800d948 and r2, r3, 0x60                                      |     r2 = r3 & 0x60;
    0x0800d94c cmp r2, 0x40                                          |     
    0x0800d950 bfieq r3, r6, 5, 2                                    |     __asm ("bfieq r3, r6, 5, 2");
                                                                     |     if (r2 != 0x40) {
    0x0800d954 strbeq r3, [r4, 0x64]                                 |         *((r4 + 0x64)) = r3;
                                                                     |     }
                                                                     | label_5:
    0x0800d958 ldr r3, [r4, 0x48]                                    |     r3 = *((r4 + 0x48));
    0x0800d95c uxtb r7, r7                                           |     r7 = (int8_t) r7;
    0x0800d960 ldr r2, [r5, 0x48]                                    |     r2 = *((r5 + 0x48));
    0x0800d964 bic r3, r3, 1                                         |     r3 = BIT_MASK (r3, 1);
    0x0800d968 ldr r5, [r2, 0x510]                                   |     r5 = *((r2 + 0x510));
    0x0800d96c ldr r6, [r3]                                          |     r6 = *(r3);
    0x0800d970 stmdaeq r2, {r0, r3, r7, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r0, r3, r7, ip, sp, lr}");
    0x0800d974 sub r3, r7, 2                                         |     r3 = r7 - 2;
    0x0800d978 cmp r3, 8                                             |     
                                                                     |     if (r3 > 8) {
                                                                     |         /* switch table (9 cases) at 0x800d984 */
    0x0800d97c ldrls pc, [pc, r3, lsl 2]                             |         offset_0 = r3 << 2;
                                                                     |         pc = *((pc + offset_0));
                                                                     |     }
    0x0800d980 b 0x800d9a8                                           |     
    0x0800d9a8 stmdaeq r1, {r3, r4, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r1, {r3, r4, sb, sl, fp, ip, pc}");
    0x0800d9ac stmdaeq r1, {r3, r4, sb, sl, fp, ip, pc}              |     __asm ("stmdaeq r1, {r3, r4, sb, sl, fp, ip, pc}");
    0x0800d9b0 ldrb r3, [r2]                                         |     r3 = *(r2);
    0x0800d9b4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0800d9b8 beq 0x800dafc                                         |         goto label_13;
                                                                     |     }
                                                                     | label_6:
    0x0800d9bc stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}              |     __asm ("stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}");
    0x0800d9c0 ldr r3, [r4, 0x48]                                    |     r3 = *((r4 + 0x48));
    0x0800d9c4 mov r2, r4                                            |     r2 = r4;
    0x0800d9c8 mov r0, r5                                            |     r0 = r5;
    0x0800d9cc mov r1, 0                                             |     r1 = 0;
    0x0800d9d0 bic r3, r3, 1                                         |     r3 = BIT_MASK (r3, 1);
    0x0800d9d4 ldr r3, [r3, 0x18]                                    |     r3 = *((r3 + 0x18));
    0x0800d9d8 blx r3                                                |     uint32_t (*r3)(uint32_t) (r3);
    0x0800d9dc mov r0, 2                                             |     r0 = 2;
    0x0800d9e0 add sp, sp, 0x24                                      |     
    0x0800d9e4 pop {r4, r5, r6, r7, pc}                              |     
                                                                     | label_8:
    0x0800d9e8 pld [r0]                                              |     __asm ("pld [r0]");
                                                                     |     do {
    0x0800d9ec ldrex r3, [r0]                                        |         __asm ("ldrex r3, [r0]");
    0x0800d9f0 sub r3, r3, 1                                         |         r3--;
    0x0800d9f4 strex r1, r3, [r0]                                    |         __asm ("strex r1, r3, [r0]");
    0x0800d9f8 teq r1, 0                                             |         __asm ("teq r1, 0");
    0x0800d9fc bne 0x800d9ec                                         |         
                                                                     |     } while (r3 != 0);
    0x0800da00 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0800da04 beq 0x800da34                                         |         goto label_14;
                                                                     |     }
                                                                     | label_3:
    0x0800da08 mov r3, 7                                             |     r3 = 7;
    0x0800da0c str r3, [r4, 0x50]                                    |     *((r4 + 0x50)) = r3;
    0x0800da10 b 0x800d8e0                                           |     goto label_0;
                                                                     | label_10:
    0x0800da14 ldrh r2, [r5, 0xe]                                    |     r2 = *((r5 + 0xe));
    0x0800da18 ldr r3, [r5, 0x20]                                    |     r3 = *((r5 + 0x20));
    0x0800da1c cmp r2, 0xa                                           |     
    0x0800da20 ldr r2, [r5, 0x30]                                    |     r2 = *((r5 + 0x30));
                                                                     |     if (r2 == 0xa) {
    0x0800da24 beq 0x800db1c                                         |         goto label_15;
                                                                     |     }
    0x0800da28 cmp r3, r2                                            |     
                                                                     |     if (r3 != r2) {
    0x0800da2c bne 0x800d8f8                                         |         goto label_1;
                                                                     |     }
    0x0800da30 b 0x800d92c                                           |     goto label_2;
                                                                     | label_14:
    0x0800da34 stmdaeq r2, {r0, r2, r3, r5, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r3, r5, r8, ip, sp, lr}");
    0x0800da38 b 0x800da08                                           |     goto label_3;
                                                                     | label_11:
    0x0800daac ldr r3, [r4, 0xc]                                     |     r3 = *((r4 + 0xc));
    0x0800dab0 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0800dab4 beq 0x800d924                                         |         goto label_4;
                                                                     |     }
    0x0800dab8 udf 0x12                                              |     __asm ("udf 0x12");
                                                                     | label_12:
    0x0800dabc ldrb r2, [r4, 0x64]                                   |     r2 = *((r4 + 0x64));
    0x0800dac0 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0800dac4 and r1, r2, 0x60                                      |     r1 = r2 & 0x60;
    0x0800dac8 cmp r1, 0x40                                          |     
    0x0800dacc bfieq r2, r6, 5, 2                                    |     __asm ("bfieq r2, r6, 5, 2");
                                                                     |     if (r1 != 0x40) {
    0x0800dad0 strbeq r2, [r4, 0x64]                                 |         *((r4 + 0x64)) = r2;
                                                                     |     }
    0x0800dad4 cmp r3, 0                                             |     
                                                                     |     if (r3 == 0) {
    0x0800dad8 movne r2, 0                                           |         r2 = 0;
                                                                     |     }
                                                                     |     if (r3 == 0) {
    0x0800dadc movne r3, 0                                           |         r3 = 0;
                                                                     |     }
    0x0800dae0 strdne r2, r3, [r4, 0x10]                             |     __asm ("strdne r2, r3, [r4, 0x10]");
    0x0800dae4 b 0x800d958                                           |     goto label_5;
                                                                     | label_7:
    0x0800dae8 mov r1, r5                                            |     r1 = r5;
    0x0800daec mov r0, r4                                            |     r0 = r4;
    0x0800daf0 mov r2, 1                                             |     r2 = 1;
    0x0800daf4 stmdaeq r1, {r2, r4, r5, r8, sl, fp, ip, lr}          |     __asm ("stmdaeq r1, {r2, r4, r5, r8, sl, fp, ip, lr}");
    0x0800daf8 b 0x800d8e0                                           |     goto label_0;
                                                                     | label_13:
    0x0800dafc mov r1, 1                                             |     r1 = 1;
    0x0800db00 stmdaeq r1, {r4, r5, r6, r7, r8, fp, pc}              |     __asm ("stmdaeq r1, {r4, r5, r6, r7, r8, fp, pc}");
    0x0800db04 stmdaeq r1, {r4, r5, r6, r7, r8, fp, pc}              |     __asm ("stmdaeq r1, {r4, r5, r6, r7, r8, fp, pc}");
    0x0800db08 strb r1, [r2]                                         |     *(r2) = r1;
    0x0800db0c mov r2, 9                                             |     r2 = 9;
    0x0800db10 mov r1, 0xf6                                          |     r1 = 0xf6;
    0x0800db14 stmdaeq r2, {r0, r2, r6, r7, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, r8, ip, sp, lr}");
    0x0800db18 b 0x800d9bc                                           |     goto label_6;
                                                                     | label_15:
    0x0800db1c ldr r1, [r5, 0x34]                                    |     r1 = *((r5 + 0x34));
    0x0800db20 eor r3, r3, r2                                        |     r3 ^= r2;
    0x0800db24 ldr r2, [r5, 0x24]                                    |     r2 = *((r5 + 0x24));
    0x0800db28 eor r2, r2, r1                                        |     r2 ^= r1;
    0x0800db2c ldr r1, [r5, 0x38]                                    |     r1 = *((r5 + 0x38));
    0x0800db30 orr r3, r2, r3                                        |     r3 = r2 | r3;
    0x0800db34 ldr r2, [r5, 0x28]                                    |     r2 = *((r5 + 0x28));
    0x0800db38 eor r2, r2, r1                                        |     r2 ^= r1;
    0x0800db3c ldr r1, [r5, 0x3c]                                    |     r1 = *((r5 + 0x3c));
    0x0800db40 orr r3, r3, r2                                        |     r3 |= r2;
    0x0800db44 ldr r2, [r5, 0x2c]                                    |     r2 = *((r5 + 0x2c));
    0x0800db48 eor r2, r2, r1                                        |     r2 ^= r1;
    0x0800db4c orrs r3, r3, r2                                       |     r3 |= r2;
                                                                     |     if (r3 != r3) {
    0x0800db50 bne 0x800d8f8                                         |         goto label_1;
                                                                     |     }
    0x0800db54 b 0x800d92c                                           |     goto label_2;
                                                                     | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8002b08 */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.ip_vs_proto_name ()                                          | void ip_vs_proto_name (uint32_t arg1) {
                                                                             |     r0 = arg1;
    0x08002b08 mov r2, r0                                                    |     r2 = r0;
    0x08002b0c cmp r0, 0x11                                                  |     
                                                                             |     if (r0 <= 0x11) {
    0x08002b10 bhi 0x8002b68                                                 |         
    0x08002b14 cmp r0, 0x11                                                  |         
                                                                             |         if (r0 > 0x11) {
                                                                             |             /* switch table (18 cases) at 0x8002b20 */
    0x08002b18 ldrls pc, [pc, r0, lsl 2]                                     |             offset_0 = r0 << 2;
                                                                             |             pc = *((pc + offset_0));
                                                                             |         }
    0x08002b1c b 0x8002b90                                                   |         
                                                                             |     } else {
    0x08002b68 cmp r0, 0x3a                                                  |         
                                                                             |         if (r0 != 0x3a) {
    0x08002b6c beq 0x8002b84                                                 |             
    0x08002b70 cmp r0, 0x84                                                  |             
                                                                             |             if (r0 != 0x84) {
    0x08002b74 bne 0x8002b90                                                 |                 goto label_0;
                                                                             |             }
    0x08002b78 stmdaeq r1, {r2, r5, r7, sb, sl, fp, ip, sp, lr}              |             __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, fp, ip, sp, lr}");
    0x08002b7c stmdaeq r1, {r2, r5, r7, sb, sl, fp, ip, sp, lr}              |             __asm ("stmdaeq r1, {r2, r5, r7, sb, sl, fp, ip, sp, lr}");
    0x08002b80 bx lr                                                         |             return;
                                                                             |         }
    0x08002b84 stmdaeq r1, {r2, r4, r5, r7, sb, sl, fp, ip, sp, lr}          |         __asm ("stmdaeq r1, {r2, r4, r5, r7, sb, sl, fp, ip, sp, lr}");
    0x08002b88 stmdaeq r1, {r2, r4, r5, r7, sb, sl, fp, ip, sp, lr}          |         __asm ("stmdaeq r1, {r2, r4, r5, r7, sb, sl, fp, ip, sp, lr}");
    0x08002b8c bx lr                                                         |         return;
                                                                             |     }
                                                                             | label_0:
    0x08002b90 push {r4, lr}                                                 |     
    0x08002b94 stmdaeq r1, {r6, r7, sb, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r6, r7, sb, sl, fp, ip, sp, lr}");
    0x08002b98 stmdaeq r1, {r6, r7, sb, sl, fp, ip, sp, lr}                  |     __asm ("stmdaeq r1, {r6, r7, sb, sl, fp, ip, sp, lr}");
    0x08002b9c ldr r0, [pc, 0x38]                                            |     r0 = *(0x8002bd8);
    0x08002ba0 stmdaeq r2, {r0, r2, r3, r8, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r2, r3, r8, ip, sp, lr}");
    0x08002ba4 ldr r0, [pc, 0x30]                                            |     r0 = *(0x8002bd8);
    0x08002ba8 pop {r4, pc}                                                  |     
                                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x80129dc */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ip_vs_start_estimator ()                         | void ip_vs_start_estimator (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x080129dc str lr, [sp, -4]!                                 |     
    0x080129e0 add ip, r1, 0x50                                  |     
    0x080129e4 mov r2, r0                                        |     r2 = r0;
    0x080129e8 mov r3, sp                                        |     r3 = sp;
    0x080129ec str ip, [r1, 0x50]                                |     *((r1 + 0x50)) = ip;
    0x080129f0 bic lr, r3, 0x1fc0                                |     lr = BIT_MASK (r3, 0x1fc0);
    0x080129f4 str ip, [r1, 0x54]                                |     *((r1 + 0x54)) = ip;
    0x080129f8 bic lr, lr, 0x3f                                  |     lr = BIT_MASK (lr, 0x3f);
    0x080129fc mov r3, r1                                        |     r3 = r1;
    0x08012a00 movw r1, 0x201                                    |     r1 = 0x201;
    0x08012a04 ldr r0, [lr, 4]                                   |     r0 = *((lr + 4));
    0x08012a08 add r0, r0, r1                                    |     r0 += r1;
    0x08012a0c str r0, [lr, 4]                                   |     *((lr + 4)) = r0;
    0x08012a10 ldr r0, [r2, 0x47c]                               |     r0 = *((r2 + 0x47c));
    0x08012a14 str ip, [r0, 4]                                   |     *((r0 + 4)) = ip;
    0x08012a18 str r0, [r3, 0x50]                                |     *((r3 + 0x50)) = r0;
    0x08012a1c add r0, r2, 0x470                                 |     r0 = r2 + 0x470;
    0x08012a20 add r0, r0, 0xc                                   |     r0 += 0xc;
    0x08012a24 str r0, [r3, 0x54]                                |     *((r3 + 0x54)) = r0;
    0x08012a28 str ip, [r2, 0x47c]                               |     *((r2 + 0x47c)) = ip;
    0x08012a2c ldr r0, [pc, 4]                                   |     r0 = sym.ip_vs_conn_array;
    0x08012a30 pop {lr}                                          |     
    0x08012a34 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x08012a38 stmdaeq r0, {r4, r5, r6}                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8012a3c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ip_vs_stop_estimator ()                          | void ip_vs_stop_estimator (int32_t arg2) {
                                                                 |     r1 = arg2;
    0x08012a3c mov r3, sp                                        |     r3 = sp;
    0x08012a40 bic r2, r3, 0x1fc0                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08012a44 mov r3, r1                                        |     r3 = r1;
    0x08012a48 bic r2, r2, 0x3f                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x08012a4c movw r1, 0x201                                    |     r1 = 0x201;
    0x08012a50 ldr r0, [r2, 4]                                   |     r0 = *((r2 + 4));
    0x08012a54 add r0, r0, r1                                    |     r0 += r1;
    0x08012a58 str r0, [r2, 4]                                   |     *((r2 + 4)) = r0;
    0x08012a5c ldr r2, [r3, 0x54]                                |     r2 = *((r3 + 0x54));
    0x08012a60 mov ip, 0x100                                     |     
    0x08012a64 ldr r0, [r3, 0x50]                                |     r0 = *((r3 + 0x50));
    0x08012a68 str r2, [r0, 4]                                   |     *((r0 + 4)) = r2;
    0x08012a6c str r0, [r2]                                      |     *(r2) = r0;
    0x08012a70 movw r2, 0x122                                    |     r2 = 0x122;
    0x08012a74 ldr r0, [pc, 8]                                   |     r0 = sym.ip_vs_conn_array;
    0x08012a78 str ip, [r3, 0x50]                                |     *((r3 + 0x50)) = ip;
    0x08012a7c str r2, [r3, 0x54]                                |     *((r3 + 0x54)) = r2;
    0x08012a80 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x08012a84 stmdaeq r0, {r4, r5, r6}                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                 | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x80142c8 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ip_vs_tcp_conn_listen ()                         | void ip_vs_tcp_conn_listen (uint32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
    0x080142c8 push {r4, lr}                                     |     
    0x080142cc mov r1, 6                                         |     r1 = 6;
    0x080142d0 mov r4, r0                                        |     r4 = r0;
    0x080142d4 ldr r0, [r0, 0x48]                                |     r0 = *((r0 + 0x48));
    0x080142d8 stmdaeq r1, {r2, r3, r4, r5, sl, fp, sp}          |     __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, sp}");
    0x080142dc mov r3, sp                                        |     r3 = sp;
    0x080142e0 bic r2, r3, 0x1fc0                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080142e4 bic r2, r2, 0x3f                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x080142e8 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x080142ec add r3, r3, 0x200                                 |     r3 += 0x200;
    0x080142f0 add r3, r3, 1                                     |     r3++;
    0x080142f4 str r3, [r2, 4]                                   |     *((r2 + 4)) = r3;
    0x080142f8 cmp r0, 0                                         |     
    0x080142fc mov r3, 9                                         |     r3 = 9;
    0x08014300 strh r3, [r4, 0x68]                               |     *((r4 + 0x68)) = r3;
    0x08014304 movw r1, 0x201                                    |     r1 = 0x201;
    0x08014308 movweq r3, 0x2ee0                                 |     __asm ("movweq r3, 0x2ee0");
                                                                 |     if (r0 == 0) {
    0x0801430c ldrne r3, [r0, 8]                                 |         r3 = *((r0 + 8));
                                                                 |     }
    0x08014310 ldr r0, [pc, 0xc]                                 |     r0 = *(0x8014320);
                                                                 |     if (r0 == 0) {
    0x08014314 ldrne r3, [r3, 0x24]                              |         r3 = *((r3 + 0x24));
                                                                 |     }
    0x08014318 str r3, [r4, 0x64]                                |     *((r4 + 0x64)) = r3;
    0x0801431c pop {r4, lr}                                      |     
    0x08014320 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x08014324 stmdaeq r0, {r4, r5, r6}                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                 | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x80018fc */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.ip_vs_try_bind_dest ()                                       | void ip_vs_try_bind_dest (int32_t arg1) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_1ch;
                                                                             |     r0 = arg1;
    0x080018fc push {r4, r5, lr}                                             |     
    0x08001900 mov r4, r0                                                    |     r4 = r0;
    0x08001904 sub sp, sp, 0x1c                                              |     
    0x08001908 stmdaeq r2, {r0, r3, r7, ip, sp, lr}                          |     __asm ("stmdaeq r2, {r0, r3, r7, ip, sp, lr}");
    0x0800190c add r2, r4, 0x20                                              |     r2 = r4 + 0x20;
    0x08001910 str r2, [sp, 4]                                               |     var_4h = r2;
    0x08001914 add r3, r4, 0x30                                              |     r3 = r4 + 0x30;
    0x08001918 ldr r0, [r4, 0x40]                                            |     r0 = *((r4 + 0x40));
    0x0800191c ldr r1, [r4, 0x6c]                                            |     r1 = *((r4 + 0x6c));
    0x08001920 ldrh r2, [r4, 0xe]                                            |     r2 = *((r4 + 0xe));
    0x08001924 str r0, [sp, 0x14]                                            |     var_14h = r0;
    0x08001928 str r1, [sp, 0x10]                                            |     var_10h = r1;
    0x0800192c ldrh r0, [r4, 0x44]                                           |     r0 = *((r4 + 0x44));
    0x08001930 ldrh r1, [r4, 0xc]                                            |     r1 = *((r4 + 0xc));
    0x08001934 str r1, [sp, 8]                                               |     var_8h = r1;
    0x08001938 mov r1, r2                                                    |     r1 = r2;
    0x0800193c str r0, [sp, 0xc]                                             |     var_ch = r0;
    0x08001940 ldrh r0, [r4, 0xa]                                            |     r0 = *((r4 + 0xa));
    0x08001944 str r0, [sp]                                                  |     *(sp) = r0;
    0x08001948 ldr r0, [r4, 0x48]                                            |     r0 = *((r4 + 0x48));
    0x0800194c stmdaeq r0, {r2, r7, fp, lr, pc}                              |     __asm ("stmdaeq r0, {r2, r7, fp, lr, pc}");
    0x08001950 subs r5, r0, 0                                                |     r5 = r0 - 0;
                                                                             |     if (r5 == r0) {
    0x08001954 beq 0x8001a9c                                                 |         goto label_0;
                                                                             |     }
    0x08001958 mov r3, sp                                                    |     r3 = sp;
    0x0800195c movw r1, 0x201                                                |     r1 = 0x201;
    0x08001960 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08001964 bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08001968 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x0800196c add r2, r2, r1                                                |     r2 += r1;
    0x08001970 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08001974 ldr r3, [r4, 0x7c]                                            |     r3 = *((r4 + 0x7c));
    0x08001978 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x0800197c bne 0x8001a94                                                 |         goto label_4;
                                                                             |     }
    0x08001980 ldr r3, [r4, 0x88]                                            |     r3 = *((r4 + 0x88));
    0x08001984 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08001988 beq 0x8001994                                                 |         
    0x0800198c mov r0, r4                                                    |         r0 = r4;
    0x08001990 stmdaeq r1, {r2, r5, r6, fp}                                  |         __asm ("stmdaeq r1, {r2, r5, r6, fp}");
                                                                             |     }
    0x08001994 add r0, r5, 0x3c                                              |     r0 = r5 + 0x3c;
    0x08001998 pld [r0]                                                      |     __asm ("pld [r0]");
                                                                             |     do {
    0x0800199c ldrex r3, [r0]                                                |         __asm ("ldrex r3, [r0]");
    0x080019a0 add r2, r3, 1                                                 |         r2 = r3 + 1;
    0x080019a4 strex r1, r2, [r0]                                            |         __asm ("strex r1, r2, [r0]");
    0x080019a8 teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x080019ac bne 0x800199c                                                 |         
                                                                             |     } while (r3 != 0);
    0x080019b0 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x080019b4 beq 0x8001b3c                                                 |         goto label_5;
                                                                             |     }
    0x080019b8 add r2, r3, 1                                                 |     r2 = r3 + 1;
    0x080019bc orrs r2, r2, r3                                               |     r2 |= r3;
                                                                             |     if (r2 < r2) {
    0x080019c0 bmi 0x8001b88                                                 |         goto label_6;
                                                                             |     }
                                                                             | label_2:
    0x080019c4 ldrh r2, [r4, 0x44]                                           |     r2 = *((r4 + 0x44));
    0x080019c8 ldr r3, [r5, 0x28]                                            |     r3 = *((r5 + 0x28));
    0x080019cc cmp r2, 0x11                                                  |     
    0x080019d0 ldr r2, [r4, 0x40]                                            |     r2 = *((r4 + 0x40));
    0x080019d4 bicne r3, r3, 0x2000                                          |     __asm ("bicne r3, r3, 0x2000");
    0x080019d8 tst r2, 0x20                                                  |     
                                                                             |     if ((r2 & 0x20) != 0) {
    0x080019dc beq 0x80019ec                                                 |         
    0x080019e0 tst r2, 0x1000                                                |         
    0x080019e4 bic r2, r2, 0x87                                              |         r2 = BIT_MASK (r2, 0x87);
    0x080019e8 biceq r3, r3, 0x100                                           |         __asm ("biceq r3, r3, 0x100");
                                                                             |     }
    0x080019ec orr r3, r3, r2                                                |     r3 |= r2;
    0x080019f0 str r5, [r4, 0x7c]                                            |     *((r4 + 0x7c)) = r5;
    0x080019f4 tst r3, 0x1000                                                |     
    0x080019f8 str r3, [r4, 0x40]                                            |     *((r4 + 0x40)) = r3;
                                                                             |     if ((r3 & 0x1000) != 0) {
    0x080019fc bne 0x8001b68                                                 |         goto label_7;
                                                                             |     }
    0x08001a00 tst r3, 0x100                                                 |     
                                                                             |     if ((r3 & 0x100) != 0) {
    0x08001a04 addeq r3, r5, 0x144                                           |         r3 = r5 + 0x144;
                                                                             |     }
                                                                             |     if ((r3 & 0x100) == 0) {
    0x08001a08 addne r3, r5, 0x148                                           |         r3 = r5 + 0x148;
                                                                             |     }
    0x08001a0c pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x08001a10 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x08001a14 add r2, r2, 1                                                 |         r2++;
    0x08001a18 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x08001a1c teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x08001a20 bne 0x8001a10                                                 |         
                                                                             |     } while ((r3 & 0x100) != 0);
                                                                             | label_3:
    0x08001a24 ldr r3, [r5, 0x150]                                           |     r3 = *((r5 + 0x150));
    0x08001a28 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08001a2c beq 0x8001a4c                                                 |         
    0x08001a30 ldr r2, [r5, 0x144]                                           |         r2 = *((r5 + 0x144));
    0x08001a34 ldr r1, [r5, 0x148]                                           |         r1 = *((r5 + 0x148));
    0x08001a38 add r2, r2, r1                                                |         r2 += r1;
    0x08001a3c cmp r3, r2                                                    |         
                                                                             |         if (r3 > r2) {
    0x08001a40 ldrls r3, [r5, 0x24]                                          |             r3 = *((r5 + 0x24));
                                                                             |         }
                                                                             |         if (r3 > r2) {
    0x08001a44 orrls r3, r3, 2                                               |             r3 |= 2;
                                                                             |         }
                                                                             |         if (r3 <= r2) {
    0x08001a48 strls r3, [r5, 0x24]                                          |             *((r5 + 0x24)) = r3;
                                                                             |             goto label_8;
                                                                             |         }
                                                                             |     }
                                                                             | label_8:
    0x08001a4c ldr r0, [pc, 0x170]                                           |     r0 = *(0x8001bc0);
    0x08001a50 movw r1, 0x201                                                |     r1 = 0x201;
    0x08001a54 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x08001a58 ldrh r3, [r4, 0xe]                                            |     r3 = *((r4 + 0xe));
    0x08001a5c mov r2, 0                                                     |     r2 = 0;
    0x08001a60 str r2, [r4, 0x84]                                            |     *((r4 + 0x84)) = r2;
    0x08001a64 cmp r3, 0xa                                                   |     
    0x08001a68 ldr r3, [r4, 0x40]                                            |     r3 = *((r4 + 0x40));
    0x08001a6c and r3, r3, 7                                                 |     r3 &= 7;
                                                                             |     if (r3 == 0xa) {
    0x08001a70 beq 0x8001b48                                                 |         goto label_9;
                                                                             |     }
    0x08001a74 cmp r3, 4                                                     |     
                                                                             |     if (r3 > 4) {
                                                                             |         /* switch table (5 cases) at 0x8001a80 */
    0x08001a78 ldrls pc, [pc, r3, lsl 2]                                     |         offset_0 = r3 << 2;
                                                                             |         pc = *((pc + offset_0));
                                                                             |     }
    0x08001a7c b 0x8001ac4                                                   |     goto label_1;
                                                                             | label_4:
    0x08001a94 ldr r0, [pc, 0x12c]                                           |     r0 = .text;
    0x08001a98 stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
                                                                             |     do {
                                                                             | label_0:
    0x08001a9c add sp, sp, 0x1c                                              |         
    0x08001aa0 pop {r4, r5, lr}                                              |         
    0x08001aa4 stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}                      |         __asm ("stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}");
    0x08001aa8 ldrh r3, [r4, 0x46]                                           |         r3 = *((r4 + 0x46));
    0x08001aac cmp r3, 0xa                                                   |         
    0x08001ab0 stmdaeq r0, {r2, r3, r5, r7, r8, sl, ip, sp, lr, pc}          |         __asm ("stmdaeq r0, {r2, r3, r5, r7, r8, sl, ip, sp, lr, pc}");
    0x08001ab4 stmdaeq r0, {r4, r7, r8, ip, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r4, r7, r8, ip, sp, lr, pc}");
    0x08001ab8 stmdaeq r0, {r2, r3, r5, r7, r8, sl, ip, sp, lr, pc}          |         __asm ("stmdaeq r0, {r2, r3, r5, r7, r8, sl, ip, sp, lr, pc}");
    0x08001abc stmdaeq r0, {r4, r7, r8, ip, sp, lr, pc}                      |         __asm ("stmdaeq r0, {r4, r7, r8, ip, sp, lr, pc}");
    0x08001ac0 str r3, [r4, 0x84]                                            |         *((r4 + 0x84)) = r3;
                                                                             | label_1:
    0x08001ac4 ldrh r1, [r4, 0x44]                                           |         r1 = *((r4 + 0x44));
    0x08001ac8 ldr r0, [r4, 0x48]                                            |         r0 = *((r4 + 0x48));
    0x08001acc stmdaeq r1, {r2, r3, r4, r5, sl, fp, sp}                      |         __asm ("stmdaeq r1, {r2, r3, r4, r5, sl, fp, sp}");
    0x08001ad0 cmp r0, 0                                                     |         
    0x08001ad4 beq 0x8001a9c                                                 |         
                                                                             |     } while (r0 == 0);
    0x08001ad8 ldr r3, [r0, 0xc]                                             |     r3 = *((r0 + 0xc));
    0x08001adc cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08001ae0 beq 0x8001a9c                                                 |         goto label_0;
                                                                             |     }
    0x08001ae4 ldr r1, [r0, 4]                                               |     r1 = *((r0 + 4));
    0x08001ae8 mov r0, r4                                                    |     r0 = r4;
    0x08001aec stmdaeq r1, {r2, r3, r4, r6, fp}                              |     __asm ("stmdaeq r1, {r2, r3, r4, r6, fp}");
    0x08001af0 add sp, sp, 0x1c                                              |     
    0x08001af4 pop {r4, r5, lr}                                              |     
    0x08001af8 stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}                      |     __asm ("stmdaeq r2, {r0, r2, r3, r7, ip, sp, lr}");
    0x08001afc stmdaeq r0, {r4, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r4, r5, r7, fp, sp, lr, pc}");
    0x08001b00 stmdaeq r0, {r4, r5, r7, fp, sp, lr, pc}                      |     __asm ("stmdaeq r0, {r4, r5, r7, fp, sp, lr, pc}");
    0x08001b04 str r3, [r4, 0x84]                                            |     *((r4 + 0x84)) = r3;
    0x08001b08 b 0x8001ac4                                                   |     goto label_1;
                                                                             | label_5:
    0x08001b3c mov r1, 2                                                     |     r1 = 2;
    0x08001b40 stmdaeq r2, {r0, r6, r7, ip, sp, lr}                          |     __asm ("stmdaeq r2, {r0, r6, r7, ip, sp, lr}");
    0x08001b44 b 0x80019c4                                                   |     goto label_2;
                                                                             | label_9:
    0x08001b48 cmp r3, 4                                                     |     
                                                                             |     if (r3 > 4) {
                                                                             |         /* switch table (5 cases) at 0x8001b54 */
    0x08001b4c ldrls pc, [pc, r3, lsl 2]                                     |         offset_1 = r3 << 2;
                                                                             |         pc = *((pc + offset_1));
                                                                             |     }
    0x08001b50 b 0x8001ac4                                                   |     goto label_1;
                                                                             | label_7:
    0x08001b68 add r3, r5, 0x14c                                             |     r3 = r5 + 0x14c;
    0x08001b6c pld [r3]                                                      |     __asm ("pld [r3]");
                                                                             |     do {
    0x08001b70 ldrex r2, [r3]                                                |         __asm ("ldrex r2, [r3]");
    0x08001b74 add r2, r2, 1                                                 |         r2++;
    0x08001b78 strex r1, r2, [r3]                                            |         __asm ("strex r1, r2, [r3]");
    0x08001b7c teq r1, 0                                                     |         __asm ("teq r1, 0");
    0x08001b80 bne 0x8001b70                                                 |         
                                                                             |     } while (r3 != 4);
    0x08001b84 b 0x8001a24                                                   |     goto label_3;
                                                                             | label_6:
    0x08001b88 mov r1, 1                                                     |     r1 = 1;
    0x08001b8c stmdaeq r2, {r0, r6, r7, ip, sp, lr}                          |     __asm ("stmdaeq r2, {r0, r6, r7, ip, sp, lr}");
    0x08001b90 b 0x80019c4                                                   |     goto label_2;
                                                                             | }
    ; assembly                                                   | /* r2dec pseudo code output */
                                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8007874 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.ip_vs_zero_stats ()                              | void ip_vs_zero_stats (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
    0x08007874 push {r4, r6, r7, lr}                             |     
    0x08007878 movw r4, 0x201                                    |     r4 = 0x201;
    0x0800787c mov r3, sp                                        |     r3 = sp;
    0x08007880 bic r2, r3, 0x1fc0                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08007884 bic r2, r2, 0x3f                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x08007888 ldr ip, [r2, 4]                                   |     ip = *((r2 + 4));
    0x0800788c add ip, ip, r4                                    |     
    0x08007890 str ip, [r2, 4]                                   |     *((r2 + 4)) = ip;
    0x08007894 ldrd r6, r7, [r0]                                 |     __asm ("ldrd r6, r7, [r0]");
    0x08007898 strd r6, r7, [r0, 0xb0]                           |     __asm ("strd r6, r7, [r0, 0xb0]");
    0x0800789c ldrd r6, r7, [r0, 8]                              |     __asm ("ldrd r6, r7, [r0, 8]");
    0x080078a0 strd r6, r7, [r0, 0xb8]                           |     __asm ("strd r6, r7, [r0, 0xb8]");
    0x080078a4 ldrd r6, r7, [r0, 0x10]                           |     __asm ("ldrd r6, r7, [r0, 0x10]");
    0x080078a8 strd r6, r7, [r0, 0xc0]                           |     __asm ("strd r6, r7, [r0, 0xc0]");
    0x080078ac ldrd r6, r7, [r0, 0x18]                           |     __asm ("ldrd r6, r7, [r0, 0x18]");
    0x080078b0 strd r6, r7, [r0, 0xc8]                           |     __asm ("strd r6, r7, [r0, 0xc8]");
    0x080078b4 ldrd r6, r7, [r0, 0x20]                           |     __asm ("ldrd r6, r7, [r0, 0x20]");
    0x080078b8 strd r6, r7, [r0, 0xd0]                           |     __asm ("strd r6, r7, [r0, 0xd0]");
    0x080078bc stmdaeq r1, {r3, r7, sb, fp, sp}                  |     __asm ("stmdaeq r1, {r3, r7, sb, fp, sp}");
    0x080078c0 mov r1, r4                                        |     r1 = r4;
    0x080078c4 ldr r0, [pc, 4]                                   |     r0 = sym.ip_vs_conn_array;
    0x080078c8 pop {r4, r6, r7, lr}                              |     
    0x080078cc stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x080078d0 stmdaeq r0, {r4, r5, r6}                          |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8010f54 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.master_wakeup_work_handler ()                            | void master_wakeup_work_handler (int32_t arg1) {
                                                                         |     int32_t var_0h;
                                                                         |     r0 = arg1;
    0x08010f54 push {r4, lr}                                             |     
    0x08010f58 mov r3, sp                                                |     r3 = sp;
    0x08010f5c ldr r1, [r0, 0x2c]                                        |     r1 = *((r0 + 0x2c));
    0x08010f60 bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08010f64 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08010f68 ldr r3, [r2, 4]                                           |     r3 = *((r2 + 4));
    0x08010f6c add r3, r3, 0x200                                         |     r3 += 0x200;
    0x08010f70 add r3, r3, 1                                             |     r3++;
    0x08010f74 str r3, [r2, 4]                                           |     *((r2 + 4)) = r3;
    0x08010f78 ldr r3, [r0, -8]                                          |     r3 = *((r0 - 8));
    0x08010f7c cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x08010f80 beq 0x8010f90                                             |         
    0x08010f84 ldr r3, [r0, -4]                                          |         r3 = *((r0 - 4));
    0x08010f88 cmp r3, 7                                                 |         
                                                                         |         if (r3 < 7) {
    0x08010f8c bls 0x8010fa0                                             |             goto label_0;
                                                                         |         }
                                                                         |     }
    0x08010f90 pop {r4, lr}                                              |     
    0x08010f94 movw r1, 0x201                                            |     r1 = 0x201;
    0x08010f98 ldr r0, [pc, 0x40]                                        |     r0 = *(0x8010fdc);
    0x08010f9c stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
                                                                         | label_0:
    0x08010fa0 ldr ip, [r1, 0x498]                                       |     ip = *((r1 + 0x498));
    0x08010fa4 sub r3, r0, 0x14                                          |     r3 = r0 - 0x14;
    0x08010fa8 movw r2, 0xd2d4                                           |     
    0x08010fac movt r2, 0xd2d2                                           |     r2 = 0xd2d2d2d4;
    0x08010fb0 sub r3, r3, ip                                            |     r3 -= ip;
    0x08010fb4 mov ip, 8                                                 |     
    0x08010fb8 str ip, [r0, -4]                                          |     *((r0 - 4)) = ip;
    0x08010fbc asr r3, r3, 2                                             |     r3 >>= 2;
    0x08010fc0 ldr r1, [r1, 0x49c]                                       |     r1 = *((r1 + 0x49c));
    0x08010fc4 mul r2, r3, r2                                            |     r2 = r3 * r2;
    0x08010fc8 ldr r0, [r1, r2]                                          |     r0 = *((r1 + r2));
    0x08010fcc stmdaeq r2, {r0, r2, r3, r5, r6, sb, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r3, r5, r6, sb, ip, sp, lr}");
    0x08010fd0 ldr r0, [pc, 8]                                           |     r0 = sym.ip_vs_conn_array;
    0x08010fd4 pop {r4, lr}                                              |     
    0x08010fd8 movw r1, 0x201                                            |     r1 = 0x201;
    0x08010fdc stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}                  |     __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x08010fe0 stmdaeq r0, {r4, r5, r6}                                  |     __asm ("stmdaeq r0, {r4, r5, r6}");
                                                                         | }
    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/netfilter/ipvs/ip_vs.ko @ 0x8007124 */
                                                                     | #include <stdint.h>
                                                                     |  
                                                                     | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                     |  
    ; (fcn) sym.update_defense_level ()                              | void update_defense_level (int32_t arg1) {
                                                                     |     int32_t var_14h;
                                                                     |     int32_t var_1ch;
                                                                     |     r0 = arg1;
    0x08007124 push {r4, r5, r6, r7, lr}                             |     
    0x08007128 mov r4, r0                                            |     r4 = r0;
    0x0800712c sub sp, sp, 0x44                                      |     
    0x08007130 mov r0, sp                                            |     r0 = sp;
    0x08007134 stmdaeq r2, {r0, r2, r5, r6, r8, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r5, r6, r8, ip, sp, lr}");
    0x08007138 mov r3, sp                                            |     r3 = sp;
    0x0800713c bic r3, r3, 0x1fc0                                    |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08007140 ldr r2, [sp, 0x1c]                                    |     r2 = var_1ch;
    0x08007144 bic r3, r3, 0x3f                                      |     r3 = BIT_MASK (r3, 0x3f);
    0x08007148 ldr r5, [sp, 0x14]                                    |     r5 = var_14h;
    0x0800714c ldr r6, [r4, 0x3f8]                                   |     r6 = *((r4 + 0x3f8));
    0x08007150 add r5, r5, r2                                        |     r5 += r2;
    0x08007154 ldr r2, [r3, 4]                                       |     r2 = *((r3 + 4));
    0x08007158 add r2, r2, 0x200                                     |     r2 += 0x200;
    0x0800715c str r2, [r3, 4]                                       |     *((r3 + 4)) = r2;
    0x08007160 ldr r2, [r3, 4]                                       |     r2 = *((r3 + 4));
    0x08007164 add r2, r2, 1                                         |     r2++;
    0x08007168 str r2, [r3, 4]                                       |     *((r3 + 4)) = r2;
    0x0800716c ldr r3, [r4, 0x400]                                   |     r3 = *((r4 + 0x400));
    0x08007170 cmp r3, 3                                             |     
                                                                     |     if (r3 > 3) {
                                                                     |         /* switch table (4 cases) at 0x800717c */
    0x08007174 ldrls pc, [pc, r3, lsl 2]                             |         offset_0 = r3 << 2;
                                                                     |         pc = *((pc + offset_0));
                                                                     |     }
    0x08007178 b 0x800719c                                           |     
    0x0800719c mov r7, 0xe000                                        |     
    0x080071a0 movt r7, 0xffff                                       |     r7 = 0x-2000;
    0x080071a4 mov r3, sp                                            |     r3 = sp;
    0x080071a8 and r3, r3, r7                                        |     r3 &= r7;
    0x080071ac ldr r2, [r3, 4]                                       |     r2 = *((r3 + 4));
    0x080071b0 sub r2, r2, 1                                         |     r2--;
    0x080071b4 str r2, [r3, 4]                                       |     *((r3 + 4)) = r2;
    0x080071b8 cmp r2, 0                                             |     
    0x080071bc beq 0x8007348                                         |     
                                                                     |     while ((r2 & 2) == 0) {
                                                                     | label_0:
    0x080071c0 ldr r2, [r3, 4]                                       |         r2 = *((r3 + 4));
    0x080071c4 add r2, r2, 1                                         |         r2++;
    0x080071c8 str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
    0x080071cc ldr r3, [r4, 0x404]                                   |         r3 = *((r4 + 0x404));
    0x080071d0 cmp r3, 3                                             |         
                                                                     |         if (r3 > 3) {
                                                                     |             /* switch table (4 cases) at 0x80071dc */
    0x080071d4 ldrls pc, [pc, r3, lsl 2]                             |             offset_1 = r3 << 2;
                                                                     |             pc = *((pc + offset_1));
                                                                     |         }
    0x080071d8 b 0x80071fc                                           |         
    0x080071fc mov r7, 0xe000                                        |         
    0x08007200 movt r7, 0xffff                                       |         r7 = 0x-2000;
    0x08007204 mov r3, sp                                            |         r3 = sp;
    0x08007208 and r3, r3, r7                                        |         r3 &= r7;
    0x0800720c ldr r2, [r3, 4]                                       |         r2 = *((r3 + 4));
    0x08007210 sub r2, r2, 1                                         |         r2--;
    0x08007214 str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
    0x08007218 cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x0800721c beq 0x8007378                                         |             goto label_4;
                                                                     |         }
                                                                     | label_2:
    0x08007220 ldr r2, [r3, 4]                                       |         r2 = *((r3 + 4));
    0x08007224 add r2, r2, 1                                         |         r2++;
    0x08007228 str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
    0x0800722c ldr r3, [r4, 0x408]                                   |         r3 = *((r4 + 0x408));
    0x08007230 cmp r3, 3                                             |         
                                                                     |         if (r3 > 3) {
                                                                     |             /* switch table (4 cases) at 0x800723c */
    0x08007234 ldrls pc, [pc, r3, lsl 2]                             |             offset_2 = r3 << 2;
                                                                     |             pc = *((pc + offset_2));
                                                                     |         }
    0x08007238 b 0x8007444                                           |         goto label_5;
                                                                     | label_3:
    0x08007274 mov r3, sp                                            |         r3 = sp;
    0x08007278 bic r3, r3, 0x1fc0                                    |         r3 = BIT_MASK (r3, 0x1fc0);
    0x0800727c bic r3, r3, 0x3f                                      |         r3 = BIT_MASK (r3, 0x3f);
    0x08007280 ldr r2, [r3, 4]                                       |         r2 = *((r3 + 4));
    0x08007284 sub r2, r2, 1                                         |         r2--;
    0x08007288 str r2, [r3, 4]                                       |         *((r3 + 4)) = r2;
    0x0800728c cmp r2, 0                                             |         
                                                                     |         if (r2 == 0) {
    0x08007290 beq 0x8007364                                         |             goto label_6;
                                                                     |         }
                                                                     | label_1:
    0x08007294 ldr r0, [pc, 0x1b0]                                   |         r0 = *(0x8007448);
    0x08007298 mov r1, 0x200                                         |         r1 = 0x200;
    0x0800729c stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}              |         __asm ("stmdaeq r2, {r0, r2, r6, r7, ip, sp, lr}");
    0x080072a0 add sp, sp, 0x44                                      |         
    0x080072a4 pop {r4, r5, r6, r7, pc}                              |         
    0x08007348 ldr r2, [r3]                                          |         r2 = *(r3);
    0x0800734c tst r2, 2                                             |         
    0x08007350 beq 0x80071c0                                         |         
                                                                     |     }
    0x08007354 stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}");
    0x08007358 mov r3, sp                                            |     r3 = sp;
    0x0800735c and r3, r3, r7                                        |     r3 &= r7;
    0x08007360 b 0x80071c0                                           |     goto label_0;
                                                                     | label_6:
    0x08007364 ldr r3, [r3]                                          |     r3 = *(r3);
    0x08007368 tst r3, 2                                             |     
                                                                     |     if ((r3 & 2) == 0) {
    0x0800736c beq 0x8007294                                         |         goto label_1;
                                                                     |     }
    0x08007370 stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}");
    0x08007374 b 0x8007294                                           |     goto label_1;
                                                                     | label_4:
    0x08007378 ldr r2, [r3]                                          |     r2 = *(r3);
    0x0800737c tst r2, 2                                             |     
                                                                     |     if ((r2 & 2) == 0) {
    0x08007380 beq 0x8007220                                         |         goto label_2;
                                                                     |     }
    0x08007384 stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}          |     __asm ("stmdaeq r2, {r0, r2, r4, r6, r7, ip, sp, lr}");
    0x08007388 mov r3, sp                                            |     r3 = sp;
    0x0800738c and r3, r3, r7                                        |     r3 &= r7;
    0x08007390 b 0x8007220                                           |     goto label_2;
                                                                     | label_5:
    0x08007444 str r3, [r4, 0x3e8]                                   |     *((r4 + 0x3e8)) = r3;
    0x08007448 b 0x8007274                                           |     goto label_3;
                                                                     | }

[*] Function mmap used 1 times ip_vs.ko