[*] Binary protection state of bridge.ko

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


[*] Function popen tear down of bridge.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/bridge/bridge.ko @ 0x80029c0 */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.br_fdb_flush ()                                  | void br_fdb_flush (int32_t arg1) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
    0x080029c0 push {r4, r5, r6, lr}                             |     
    0x080029c4 mov r3, sp                                        |     r3 = sp;
    0x080029c8 bic r2, r3, 0x1fc0                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080029cc bic r2, r2, 0x3f                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x080029d0 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x080029d4 add r3, r3, 0x200                                 |     r3 += 0x200;
    0x080029d8 add r3, r3, 1                                     |     r3++;
    0x080029dc str r3, [r2, 4]                                   |     *((r2 + 4)) = r3;
    0x080029e0 ldr r1, [r0, 0x360]                               |     r1 = *((r0 + 0x360));
    0x080029e4 cmp r1, 0                                         |     
                                                                 |     if (r1 == 0) {
    0x080029e8 beq 0x8002a30                                     |         goto label_1;
                                                                 |     }
    0x080029ec mov r5, r0                                        |     r5 = r0;
    0x080029f0 subs r1, r1, 0x10                                 |     r1 -= 0x10;
                                                                 |     if (r1 != r1) {
    0x080029f4 bne 0x8002a0c                                     |         goto label_2;
                                                                 |     }
    0x080029f8 b 0x8002a30                                       |     goto label_1;
                                                                 |     do {
    0x080029fc cmp r4, 0                                         |         
                                                                 |         if (r4 == 0) {
    0x08002a00 beq 0x8002a30                                     |             goto label_1;
                                                                 |         }
                                                                 | label_0:
    0x08002a04 subs r1, r4, 0x10                                 |         r1 = r4 - 0x10;
                                                                 |         if (r1 == r4) {
    0x08002a08 beq 0x8002a30                                     |             goto label_1;
                                                                 |         }
                                                                 | label_2:
    0x08002a0c ldr r3, [r1, 0x18]                                |         r3 = *((r1 + 0x18));
    0x08002a10 ldr r4, [r1, 0x10]                                |         r4 = *((r1 + 0x10));
    0x08002a14 tst r3, 2                                         |         
    0x08002a18 bne 0x80029fc                                     |         
                                                                 |     } while ((r3 & 2) != 0);
    0x08002a1c mov r0, r5                                        |     r0 = r5;
    0x08002a20 mov r2, 1                                         |     r2 = 1;
    0x08002a24 bl 0x8001ecc                                      |     fdb_delete ();
    0x08002a28 cmp r4, 0                                         |     
                                                                 |     if (r4 != 0) {
    0x08002a2c bne 0x8002a04                                     |         goto label_0;
                                                                 |     }
                                                                 | label_1:
    0x08002a30 pop {r4, r5, r6, lr}                              |     
    0x08002a34 movw r1, 0x201                                    |     r1 = 0x201;
    0x08002a38 ldr r0, [pc]                                      |     r0 = *(0x8002a38);
    0x08002a3c stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}");
    0x08002a40 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/bridge/bridge.ko @ 0x8003c58 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.br_fdb_offloaded_set ()                                  | void br_fdb_offloaded_set (int32_t arg_18h, int32_t arg1) {
                                                                         |     int32_t var_0h;
                                                                         |     r0 = arg1;
    0x08003c58 push {r4, r5, r6, r7, r8, lr}                             |     
    0x08003c5c mov r4, r0                                                |     r4 = r0;
    0x08003c60 mov r5, r2                                                |     r5 = r2;
    0x08003c64 mov r1, sp                                                |     r1 = sp;
    0x08003c68 ldrb r6, [sp, 0x18]                                       |     r6 = *(arg_18h);
    0x08003c6c bic lr, r1, 0x1fc0                                        |     lr = BIT_MASK (r1, 0x1fc0);
    0x08003c70 mov r7, r3                                                |     r7 = r3;
    0x08003c74 bic lr, lr, 0x3f                                          |     lr = BIT_MASK (lr, 0x3f);
    0x08003c78 ldr ip, [lr, 4]                                           |     ip = *((lr + 4));
    0x08003c7c add ip, ip, 0x200                                         |     
    0x08003c80 add ip, ip, 1                                             |     
    0x08003c84 str ip, [lr, 4]                                           |     *((lr + 4)) = ip;
    0x08003c88 stmdaeq r3, {r1, r2, r4, r5, r6, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r4, r5, r6, r8, fp, ip, sp}");
    0x08003c8c mov r2, r7                                                |     r2 = r7;
    0x08003c90 mov r1, r5                                                |     r1 = r5;
    0x08003c94 add r0, r4, 0x1c                                          |     r0 = r4 + 0x1c;
    0x08003c98 bl 0x8001558                                              |     r0 = fdb_find_rcu ();
    0x08003c9c mov r4, r0                                                |     r4 = r0;
    0x08003ca0 stmdaeq r3, {r1, r7, r8, fp, ip, sp}                      |     __asm ("stmdaeq r3, {r1, r7, r8, fp, ip, sp}");
    0x08003ca4 cmp r4, 0                                                 |     
                                                                         |     if (r4 != 0) {
    0x08003ca8 beq 0x8003cd4                                             |         
    0x08003cac ldr r3, [r4, 0x18]                                        |         r3 = *((r4 + 0x18));
    0x08003cb0 ubfx r3, r3, 5, 1                                         |         r3 = (r3 >> 5) & ((1 << 1) - 1);
    0x08003cb4 cmp r6, r3                                                |         
                                                                         |         if (r6 == r3) {
    0x08003cb8 beq 0x8003cd4                                             |             goto label_0;
                                                                         |         }
    0x08003cbc mrs r2, apsr                                              |         r2 = apsr;
    0x08003cc0 cpsid i                                                   |         __asm ("cpsid i");
    0x08003cc4 ldr r3, [r4, 0x18]                                        |         r3 = *((r4 + 0x18));
    0x08003cc8 eor r3, r3, 0x20                                          |         r3 ^= 0x20;
    0x08003ccc str r3, [r4, 0x18]                                        |         *((r4 + 0x18)) = r3;
    0x08003cd0 msr cpsr_c, r2                                            |         cpsr_c = r2;
                                                                         |     }
                                                                         | label_0:
    0x08003cd4 pop {r4, r5, r6, r7, r8, lr}                              |     
    0x08003cd8 movw r1, 0x201                                            |     r1 = 0x201;
    0x08003cdc ldr r0, [pc]                                              |     r0 = *(0x8003cdc);
    0x08003ce0 stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}                  |     __asm ("stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}");
    0x08003ce4 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/bridge/bridge.ko @ 0x80129b8 */
                                                                         | #include <stdint.h>
                                                                         |  
    ; (fcn) sym.br_multicast_count ()                                    | void br_multicast_count (int32_t arg_18h, int32_t arg1, uint32_t arg2) {
                                                                         |     int32_t var_ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x080129b8 push {r4, r5, lr}                                         |     
    0x080129bc cmp r3, 0                                                 |     
    0x080129c0 sub sp, sp, 0xc                                           |     
    0x080129c4 ldrb r4, [sp, 0x18]                                       |     r4 = *(arg_18h);
                                                                         |     if (r3 == 0) {
    0x080129c8 beq 0x8012a04                                             |         goto label_0;
                                                                         |     }
    0x080129cc ldr ip, [r0, 0x10]                                        |     ip = *(arg_18hx10);
    0x080129d0 tst ip, 0x200                                             |     
                                                                         |     if ((ip & 0x200) == 0) {
    0x080129d4 beq 0x8012a04                                             |         goto label_0;
                                                                         |     }
    0x080129d8 cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x080129dc ldrne r5, [r1, 0xe0]                                      |         r5 = *((r1 + 0xe0));
                                                                         |     }
                                                                         |     if (r1 != 0) {
    0x080129e0 ldreq r5, [r0, 0x284]                                     |         r5 = *((r0 + 0x284));
                                                                         |     }
    0x080129e4 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x080129e8 beq 0x8012c24                                             |         goto label_1;
                                                                         |     }
    0x080129ec ldrh r1, [r2, 0x94]                                       |     r1 = *((r2 + 0x94));
    0x080129f0 cmp r1, 8                                                 |     
                                                                         |     if (r1 == 8) {
    0x080129f4 beq 0x8012a68                                             |         goto label_2;
                                                                         |     }
    0x080129f8 movw r0, 0xdd86                                           |     r0 = 0xdd86;
    0x080129fc cmp r1, r0                                                |     
    0x08012a00 beq 0x8012a0c                                             |     
                                                                         |     while (1) {
                                                                         | label_0:
    0x08012a04 add sp, sp, 0xc                                           |         
    0x08012a08 pop {r4, r5, pc}                                          |         
    0x08012a0c ldrh r0, [r2, 0x98]                                       |         r0 = *((r2 + 0x98));
    0x08012a10 sub r3, r3, 0x82                                          |         r3 -= 0x82;
    0x08012a14 ldr r1, [r2, 0xa4]                                        |         r1 = *((r2 + 0xa4));
    0x08012a18 ldrh ip, [r2, 0x96]                                       |         ip = *((r2 + 0x96));
    0x08012a1c add r1, r1, r0                                            |         r1 += r0;
    0x08012a20 ldrh r2, [r1, 4]                                          |         r2 = *((r1 + 4));
    0x08012a24 cmp r3, 0xd                                               |         
                                                                         |         if (r3 > 0xd) {
                                                                         |             /* switch table (14 cases) at 0x8012a30 */
    0x08012a28 ldrls pc, [pc, r3, lsl 2]                                 |             offset_0 = r3 << 2;
                                                                         |             pc = *((pc + offset_0));
                                                                         |         }
    0x08012a2c b 0x8012a04                                               |         
                                                                         |     }
                                                                         | label_2:
    0x08012a68 ldrh r0, [r2, 0x98]                                       |     r0 = *((r2 + 0x98));
    0x08012a6c sub r3, r3, 0x11                                          |     r3 -= 0x11;
    0x08012a70 ldr r1, [r2, 0xa4]                                        |     r1 = *((r2 + 0xa4));
    0x08012a74 add ip, r1, r0                                            |     
    0x08012a78 ldrb r0, [r1, r0]                                         |     r0 = *((r1 + r0));
    0x08012a7c ldrh ip, [ip, 2]                                          |     ip = *((ip + 2));
    0x08012a80 and r0, r0, 0xf                                           |     r0 &= 0xf;
    0x08012a84 cmp r3, 0x11                                              |     
                                                                         |     if (r3 > 0x11) {
                                                                         |         /* switch table (18 cases) at 0x8012a90 */
    0x08012a88 ldrls pc, [pc, r3, lsl 2]                                 |         offset_1 = r3 << 2;
                                                                         |         pc = *((pc + offset_1));
                                                                         |     }
    0x08012a8c b 0x8012a04                                               |     goto label_0;
                                                                         | label_1:
    0x08012c24 mov r3, r5                                                |     r3 = r5;
    0x08012c28 stmdaeq r1, {r2, r3, r6, r8, sl, ip, sp, lr, pc}          |     __asm ("stmdaeq r1, {r2, r3, r6, r8, sl, ip, sp, lr, pc}");
    0x08012c2c stmdaeq r1, {r2, r3, r6, r8, sl, ip, sp, lr, pc}          |     __asm ("stmdaeq r1, {r2, r3, r6, r8, sl, ip, sp, lr, pc}");
    0x08012c30 mov r2, 9                                                 |     r2 = 9;
    0x08012c34 movw r1, 0xeff                                            |     r1 = 0xeff;
    0x08012c38 add sp, sp, 0xc                                           |     
    0x08012c3c pop {r4, r5, lr}                                          |     
    0x08012c40 stmdaeq r3, {r1, r2, r4, r5, r8, fp, ip, sp}              |     __asm ("stmdaeq r3, {r1, r2, r4, r5, r8, fp, ip, sp}");
    0x08012c44 ldr r3, [r5, 0x78]                                        |     r3 = *((r5 + 0x78));
    0x08012c48 ldr r2, [r5, 0x7c]                                        |     r2 = *((r5 + 0x7c));
    0x08012c4c adds r3, r3, 1                                            |     r3++;
    0x08012c50 str r3, [r5, 0x78]                                        |     *((r5 + 0x78)) = r3;
    0x08012c54 adc r3, r2, 0                                             |     __asm ("adc r3, r2, 0");
    0x08012c58 str r3, [r5, 0x7c]                                        |     *((r5 + 0x7c)) = r3;
    0x08012c5c b 0x8012a04                                               |     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/bridge/bridge.ko @ 0x8014b2c */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.br_multicast_rcv ()                                          | void br_multicast_rcv (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_34h;
                                                                             |     int32_t var_5ch;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08014b2c push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                     |     
    0x08014b30 sub sp, sp, 0x5c                                              |     
    0x08014b34 str r3, [sp, 0xc]                                             |     var_ch = r3;
    0x08014b38 ldrh r3, [r2, 0x1e]                                           |     r3 = *((r2 + 0x1e));
    0x08014b3c and r3, r3, 0xfe00                                            |     r3 &= 0xfe00;
    0x08014b40 strh r3, [r2, 0x1e]                                           |     *((r2 + 0x1e)) = r3;
    0x08014b44 ldr r3, [r0, 0x10]                                            |     r3 = *((r0 + 0x10));
    0x08014b48 tst r3, 0x40                                                  |     
                                                                             |     if ((r3 & 0x40) == 0) {
    0x08014b4c beq 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08014b50 ldrh r3, [r2, 0x94]                                           |     r3 = *((r2 + 0x94));
    0x08014b54 mov r4, r2                                                    |     r4 = r2;
    0x08014b58 mov sl, r0                                                    |     sl = r0;
    0x08014b5c mov r6, r1                                                    |     r6 = r1;
    0x08014b60 cmp r3, 8                                                     |     
                                                                             |     if (r3 == 8) {
    0x08014b64 beq 0x8014c0c                                                 |         goto label_4;
                                                                             |     }
    0x08014b68 movw r2, 0xdd86                                               |     r2 = 0xdd86;
    0x08014b6c cmp r3, r2                                                    |     
    0x08014b70 beq 0x8014b84                                                 |     
                                                                             |     while (r5 != 0x3d) {
                                                                             | label_0:
    0x08014b74 mov r5, 0                                                     |         r5 = 0;
                                                                             | label_1:
    0x08014b78 mov r0, r5                                                    |         r0 = r5;
    0x08014b7c add sp, sp, 0x5c                                              |         
    0x08014b80 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |         
    0x08014b84 mov r0, r4                                                    |         r0 = r4;
    0x08014b88 stmdaeq r3, {r1, r4, r6, r7, r8, sb, fp, ip, sp}              |         __asm ("stmdaeq r3, {r1, r4, r6, r7, r8, sb, fp, ip, sp}");
    0x08014b8c cmn r0, 0x2a                                                  |         
    0x08014b90 cmnne r0, 0x3d                                                |         __asm ("cmnne r0, 0x3d");
    0x08014b94 mov r5, r0                                                    |         r5 = r0;
                                                                             |         if (r0 != 0x2a) {
    0x08014b98 moveq r3, 1                                                   |             r3 = 1;
                                                                             |         }
                                                                             |         if (r0 == 0x2a) {
    0x08014b9c movne r3, 0                                                   |             r3 = 0;
                                                                             |         }
    0x08014ba0 str r3, [sp, 0x14]                                            |         var_14h = r3;
                                                                             |         if (r0 != 0x2a) {
    0x08014ba4 beq 0x8014f50                                                 |             
    0x08014ba8 cmp r0, 0                                                     |             
                                                                             |             if (r0 < 0) {
    0x08014bac blt 0x8015a0c                                                 |                 goto label_5;
                                                                             |             }
    0x08014bb0 ldrh r0, [r4, 0x96]                                           |             r0 = *((r4 + 0x96));
    0x08014bb4 ldr ip, [r4, 0xa4]                                            |             ip = *((r4 + 0xa4));
    0x08014bb8 add r2, ip, r0                                                |             r2 = ip + r0;
    0x08014bbc ldrb r3, [ip, r0]                                             |             r3 = *((ip + r0));
    0x08014bc0 strb r3, [r4, 0x1e]                                           |             *((r4 + 0x1e)) = r3;
    0x08014bc4 sub r1, r3, 0x82                                              |             r1 = r3 - 0x82;
    0x08014bc8 cmp r1, 0xd                                                   |             
                                                                             |             if (r1 > 0xd) {
                                                                             |                 /* switch table (14 cases) at 0x8014bd4 */
    0x08014bcc ldrls pc, [pc, r1, lsl 2]                                     |                 offset_0 = r1 << 2;
                                                                             |                 pc = *((pc + offset_0));
                                                                             |             }
    0x08014bd0 b 0x8014f2c                                                   |             goto label_6;
                                                                             | label_4:
    0x08014c0c mov r0, r2                                                    |             r0 = r2;
    0x08014c10 stmdaeq r3, {r1, r2, r4, r6, r7, r8, sb, fp, ip, sp}          |             __asm ("stmdaeq r3, {r1, r2, r4, r6, r7, r8, sb, fp, ip, sp}");
    0x08014c14 mov r5, r0                                                    |             r5 = r0;
    0x08014c18 cmn r0, 0x2a                                                  |             
                                                                             |             if (r0 == 0x2a) {
    0x08014c1c beq 0x8015024                                                 |                 goto label_7;
                                                                             |             }
    0x08014c20 cmp r0, 0                                                     |             
                                                                             |             if (r0 < 0) {
    0x08014c24 blt 0x8015a0c                                                 |                 goto label_5;
                                                                             |             }
    0x08014c28 ldrh r2, [r4, 0x96]                                           |             r2 = *((r4 + 0x96));
    0x08014c2c ldr r0, [r4, 0xa4]                                            |             r0 = *((r4 + 0xa4));
    0x08014c30 ldrh r7, [r4, 0x9a]                                           |             r7 = *((r4 + 0x9a));
    0x08014c34 add ip, r0, r2                                                |             
    0x08014c38 ldrb r3, [r0, r2]                                             |             r3 = *((r0 + r2));
    0x08014c3c add r7, r0, r7                                                |             r7 = r0 + r7;
    0x08014c40 add r7, r7, 6                                                 |             r7 += 6;
    0x08014c44 strb r3, [r4, 0x1e]                                           |             *((r4 + 0x1e)) = r3;
    0x08014c48 sub r1, r3, 0x11                                              |             r1 = r3 - 0x11;
    0x08014c4c cmp r1, 0x11                                                  |             
                                                                             |             if (r1 > 0x11) {
                                                                             |                 /* switch table (18 cases) at 0x8014c58 */
    0x08014c50 ldrls pc, [pc, r1, lsl 2]                                     |                 offset_1 = r1 << 2;
                                                                             |                 pc = *((pc + offset_1));
                                                                             |             }
    0x08014c54 b 0x8014f2c                                                   |             
                                                                             | label_6:
    0x08014f2c mov r0, sl                                                    |             r0 = sl;
    0x08014f30 mov ip, 0                                                     |             
    0x08014f34 mov r2, r4                                                    |             r2 = r4;
    0x08014f38 mov r1, r6                                                    |             r1 = r6;
    0x08014f3c str ip, [sp]                                                  |             *(sp) = ip;
    0x08014f40 stmdaeq r1, {r3, r4, r5, r7, r8, fp, sp}                      |             __asm ("stmdaeq r1, {r3, r4, r5, r7, r8, fp, sp}");
    0x08014f44 mov r0, r5                                                    |             r0 = r5;
    0x08014f48 add sp, sp, 0x5c                                              |             
    0x08014f4c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                      |             
                                                                             |         }
    0x08014f50 ldr r0, [r4, 0xa4]                                            |         r0 = *((r4 + 0xa4));
    0x08014f54 ldrh r3, [r4, 0x98]                                           |         r3 = *((r4 + 0x98));
    0x08014f58 add r3, r0, r3                                                |         r3 = r0 + r3;
    0x08014f5c ldr r1, [r3, 0x18]                                            |         r1 = *((r3 + 0x18));
    0x08014f60 ldr r2, [r3, 0x1c]                                            |         r2 = *((r3 + 0x1c));
    0x08014f64 ldr ip, [r3, 0x20]                                            |         ip = *((r3 + 0x20));
    0x08014f68 eor r1, r1, 0x2fc                                             |         r1 ^= 0x2fc;
    0x08014f6c eor r1, r1, 3                                                 |         r1 ^= 3;
    0x08014f70 orr r2, r2, ip                                                |         r2 |= ip;
    0x08014f74 orr r2, r2, r1                                                |         r2 |= r1;
    0x08014f78 ldr r1, [r3, 0x24]                                            |         r1 = *((r3 + 0x24));
    0x08014f7c eor r1, r1, 0x1000000                                         |         r1 ^= 0x1000000;
    0x08014f80 orrs r2, r2, r1                                               |         r2 |= r1;
                                                                             |         if (r2 == r2) {
    0x08014f84 ldrbne r2, [r4, 0x1f]                                         |             r2 = *((r4 + 0x1f));
                                                                             |         }
                                                                             |         if (r2 == r2) {
    0x08014f88 orrne r2, r2, 1                                               |             r2 |= 1;
                                                                             |         }
                                                                             |         if (r2 == r2) {
    0x08014f8c strbne r2, [r4, 0x1f]                                         |             *((r4 + 0x1f)) = r2;
                                                                             |         }
    0x08014f90 cmn r5, 0x3d                                                  |         
    0x08014f94 bne 0x8014b74                                                 |         
                                                                             |     }
    0x08014f98 ldr r1, [r3, 0x18]                                            |     r1 = *((r3 + 0x18));
    0x08014f9c ldr r2, [r3, 0x1c]                                            |     r2 = *((r3 + 0x1c));
    0x08014fa0 ldr ip, [r3, 0x20]                                            |     ip = *((r3 + 0x20));
    0x08014fa4 eor r1, r1, 0x2fc                                             |     r1 ^= 0x2fc;
    0x08014fa8 ldr r3, [r3, 0x24]                                            |     r3 = *((r3 + 0x24));
    0x08014fac eor r1, r1, 3                                                 |     r1 ^= 3;
    0x08014fb0 orr r2, r2, ip                                                |     r2 |= ip;
    0x08014fb4 orr r2, r2, r1                                                |     r2 |= r1;
    0x08014fb8 eor r3, r3, 0x6a000000                                        |     r3 ^= 0x6a000000;
    0x08014fbc orrs r2, r2, r3                                               |     r2 |= r3;
                                                                             |     if (r2 != r2) {
    0x08014fc0 bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08014fc4 ldrh r3, [r4, 0x96]                                           |     r3 = *((r4 + 0x96));
    0x08014fc8 ldrb r3, [r0, r3]                                             |     r3 = *((r0 + r3));
    0x08014fcc cmp r3, 0x97                                                  |     
                                                                             |     if (r3 != 0x97) {
    0x08014fd0 bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
                                                                             | label_2:
    0x08014fd4 mov r3, sp                                                    |     r3 = sp;
    0x08014fd8 bic r4, r3, 0x1fc0                                            |     r4 = BIT_MASK (r3, 0x1fc0);
    0x08014fdc bic r4, r4, 0x3f                                              |     r4 = BIT_MASK (r4, 0x3f);
    0x08014fe0 ldr r3, [r4, 4]                                               |     r3 = *((r4 + 4));
    0x08014fe4 add r3, r3, 1                                                 |     r3++;
    0x08014fe8 str r3, [r4, 4]                                               |     *((r4 + 4)) = r3;
    0x08014fec mov r1, r6                                                    |     r1 = r6;
    0x08014ff0 mov r0, sl                                                    |     r0 = sl;
    0x08014ff4 bl 0x800f1c4                                                  |     br_multicast_mark_router ();
    0x08014ff8 ldr r3, [r4, 4]                                               |     r3 = *((r4 + 4));
    0x08014ffc sub r3, r3, 1                                                 |     r3--;
    0x08015000 str r3, [r4, 4]                                               |     *((r4 + 4)) = r3;
    0x08015004 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08015008 bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x0801500c ldr r3, [r4]                                                  |     r3 = *(r4);
    0x08015010 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08015014 beq 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015018 mov r5, 0                                                     |     r5 = 0;
    0x0801501c stmdaeq r3, {r1, r2, r3, r4, r5, r7, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r3, r4, r5, r7, r8, fp, ip, sp}");
    0x08015020 b 0x8014b78                                                   |     goto label_1;
                                                                             | label_7:
    0x08015024 ldr r1, [r4, 0xa4]                                            |     r1 = *((r4 + 0xa4));
    0x08015028 ldrh r3, [r4, 0x98]                                           |     r3 = *((r4 + 0x98));
    0x0801502c add r3, r1, r3                                                |     r3 = r1 + r3;
    0x08015030 ldr r2, [r3, 0x10]                                            |     r2 = *((r3 + 0x10));
    0x08015034 bic r0, r2, 0xff000000                                        |     r0 = BIT_MASK (r2, 0xff000000);
    0x08015038 cmp r0, 0xe0                                                  |     
                                                                             |     if (r0 != 0xe0) {
    0x0801503c beq 0x8015a84                                                 |         
    0x08015040 ldrb r3, [r4, 0x1f]                                           |         r3 = *((r4 + 0x1f));
    0x08015044 mov r5, 0                                                     |         r5 = 0;
    0x08015048 orr r3, r3, 1                                                 |         r3 |= 1;
    0x0801504c strb r3, [r4, 0x1f]                                           |         *((r4 + 0x1f)) = r3;
    0x08015050 b 0x8014b78                                                   |         goto label_1;
                                                                             | label_5:
    0x08015a0c ldrh r2, [r4, 0x94]                                           |         r2 = *((r4 + 0x94));
    0x08015a10 mov r1, r6                                                    |         r1 = r6;
    0x08015a14 mov r0, sl                                                    |         r0 = sl;
    0x08015a18 bl 0x800f0a0                                                  |         br_multicast_err_count ();
    0x08015a1c b 0x8014b78                                                   |         goto label_1;
                                                                             |     }
    0x08015a84 mov r0, 0xe0                                                  |     
    0x08015a88 movt r0, 0xd00                                                |     r0 = 0xd0000e0;
    0x08015a8c cmp r2, r0                                                    |     
                                                                             |     if (r2 == r0) {
    0x08015a90 beq 0x8015d28                                                 |         goto label_8;
                                                                             |     }
    0x08015a94 mov r0, 0xe0                                                  |     
    0x08015a98 movt r0, 0x6a00                                               |     r0 = 0x6a0000e0;
    0x08015a9c cmp r2, r0                                                    |     
                                                                             |     if (r2 != r0) {
    0x08015aa0 bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015aa4 ldrb r3, [r3, 9]                                              |     r3 = *((r3 + 9));
    0x08015aa8 cmp r3, 2                                                     |     
                                                                             |     if (r3 != 2) {
    0x08015aac bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015ab0 ldrh r3, [r4, 0x96]                                           |     r3 = *((r4 + 0x96));
    0x08015ab4 ldrb r3, [r1, r3]                                             |     r3 = *((r1 + r3));
    0x08015ab8 cmp r3, 0x30                                                  |     
                                                                             |     if (r3 == 0x30) {
    0x08015abc beq 0x8014fd4                                                 |         goto label_2;
                                                                             |     }
    0x08015ac0 b 0x8014b74                                                   |     goto label_0;
                                                                             | label_8:
    0x08015d28 ldrb r3, [r3, 9]                                              |     r3 = *((r3 + 9));
    0x08015d2c cmp r3, 0x67                                                  |     
                                                                             |     if (r3 != 0x67) {
    0x08015d30 bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015d34 ldrh r3, [r4, 0x96]                                           |     r3 = *((r4 + 0x96));
    0x08015d38 ldr r2, [r4, 0x54]                                            |     r2 = *((r4 + 0x54));
    0x08015d3c add r3, r1, r3                                                |     r3 = r1 + r3;
    0x08015d40 ldr r0, [r4, 0x58]                                            |     r0 = *((r4 + 0x58));
    0x08015d44 ldr r1, [r4, 0xa8]                                            |     r1 = *((r4 + 0xa8));
    0x08015d48 sub r2, r2, r0                                                |     r2 -= r0;
    0x08015d4c sub r1, r3, r1                                                |     r1 = r3 - r1;
    0x08015d50 sub r2, r2, r1                                                |     r2 -= r1;
    0x08015d54 cmp r2, 3                                                     |     
                                                                             |     if (r2 > 3) {
    0x08015d58 bgt 0x8015fc4                                                 |         goto label_9;
                                                                             |     }
    0x08015d5c cmp r4, 0                                                     |     
                                                                             |     if (r4 == 0) {
    0x08015d60 beq 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015d64 mov r0, r4                                                    |     r0 = r4;
    0x08015d68 add r2, sp, 0x34                                              |     r2 += var_34h;
    0x08015d6c mov r3, 4                                                     |     r3 = 4;
    0x08015d70 stmdaeq r3, {r1, r5, sb, fp, ip, sp}                          |     __asm ("stmdaeq r3, {r1, r5, sb, fp, ip, sp}");
    0x08015d74 cmp r0, 0                                                     |     
                                                                             |     if (r0 < 0) {
    0x08015d78 blt 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015d7c add r3, sp, 0x34                                              |     r3 += var_34h;
                                                                             | label_3:
    0x08015d80 ldrb r3, [r3]                                                 |     r3 = *(r3);
    0x08015d84 lsr r2, r3, 4                                                 |     r2 = r3 >> 4;
    0x08015d88 cmp r2, 2                                                     |     
                                                                             |     if (r2 != 2) {
    0x08015d8c bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015d90 tst r3, 0xf                                                   |     
                                                                             |     if ((r3 & 0xf) != 0) {
    0x08015d94 bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015d98 mov r3, sp                                                    |     r3 = sp;
    0x08015d9c bic r4, r3, 0x1fc0                                            |     r4 = BIT_MASK (r3, 0x1fc0);
    0x08015da0 bic r4, r4, 0x3f                                              |     r4 = BIT_MASK (r4, 0x3f);
    0x08015da4 ldr r3, [r4, 4]                                               |     r3 = *((r4 + 4));
    0x08015da8 add r3, r3, 1                                                 |     r3++;
    0x08015dac str r3, [r4, 4]                                               |     *((r4 + 4)) = r3;
    0x08015db0 mov r1, r6                                                    |     r1 = r6;
    0x08015db4 mov r0, sl                                                    |     r0 = sl;
    0x08015db8 bl 0x800f1c4                                                  |     br_multicast_mark_router ();
    0x08015dbc ldr r3, [r4, 4]                                               |     r3 = *((r4 + 4));
    0x08015dc0 sub r3, r3, 1                                                 |     r3--;
    0x08015dc4 str r3, [r4, 4]                                               |     *((r4 + 4)) = r3;
    0x08015dc8 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08015dcc bne 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015dd0 ldr r3, [r4]                                                  |     r3 = *(r4);
    0x08015dd4 tst r3, 2                                                     |     
                                                                             |     if ((r3 & 2) == 0) {
    0x08015dd8 beq 0x8014b74                                                 |         goto label_0;
                                                                             |     }
    0x08015ddc stmdaeq r3, {r1, r2, r3, r4, r5, r7, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r3, r4, r5, r7, r8, fp, ip, sp}");
    0x08015de0 b 0x8014b74                                                   |     goto label_0;
                                                                             | label_9:
    0x08015fc4 cmp r3, 0                                                     |     
                                                                             |     if (r3 != 0) {
    0x08015fc8 bne 0x8015d80                                                 |         goto label_3;
                                                                             |     }
    0x08015fcc b 0x8014b74                                                   |     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/bridge/bridge.ko @ 0x8012540 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.br_multicast_set_port_router ()                              | void br_multicast_set_port_router (int32_t arg1, uint32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08012540 push {r4, r5, r6, lr}                                         |     
    0x08012544 stmdaeq r3, {r1, r2, r3, r4, r5, r6, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r3, r4, r5, r6, r8, fp, ip, sp}");
    0x08012548 stmdaeq r3, {r1, r2, r3, r4, r5, r6, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r3, r4, r5, r6, r8, fp, ip, sp}");
    0x0801254c mov r3, sp                                                    |     r3 = sp;
    0x08012550 ldr r6, [r0]                                                  |     r6 = *(r0);
    0x08012554 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08012558 mov r4, r0                                                    |     r4 = r0;
    0x0801255c bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x08012560 ldr ip, [r2]                                                  |     ip = *(r2);
    0x08012564 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x08012568 add r2, r2, 1                                                 |     r2++;
    0x0801256c str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x08012570 ldrb r3, [r0, 0xdc]                                           |     r3 = *((r0 + 0xdc));
    0x08012574 cmp r3, r1                                                    |     
                                                                             |     if (r3 != r1) {
    0x08012578 beq 0x8012598                                                 |         
    0x0801257c cmp r1, 3                                                     |         
                                                                             |         if (r1 > 3) {
                                                                             |             /* switch table (4 cases) at 0x8012588 */
    0x08012580 ldrls pc, [pc, r1, lsl 2]                                     |             offset_0 = r1 << 2;
                                                                             |             pc = *((pc + offset_0));
                                                                             |         }
    0x08012584 b 0x80126fc                                                   |         goto label_1;
                                                                             |     }
    0x08012598 cmp r3, 3                                                     |     
                                                                             |     if (r3 == 3) {
    0x0801259c beq 0x80126e4                                                 |         goto label_2;
                                                                             |     }
    0x080125a0 mov r5, 0                                                     |     r5 = 0;
                                                                             | label_0:
    0x080125a4 mov r3, sp                                                    |     r3 = sp;
    0x080125a8 bic r3, r3, 0x1fc0                                            |     r3 = BIT_MASK (r3, 0x1fc0);
    0x080125ac bic r3, r3, 0x3f                                              |     r3 = BIT_MASK (r3, 0x3f);
    0x080125b0 ldr r2, [r3, 4]                                               |     r2 = *((r3 + 4));
    0x080125b4 sub r2, r2, 1                                                 |     r2--;
    0x080125b8 str r2, [r3, 4]                                               |     *((r3 + 4)) = r2;
    0x080125bc cmp r2, 0                                                     |     
    0x080125c0 beq 0x80125cc                                                 |     
                                                                             |     while ((r3 & 2) == 0) {
    0x080125c4 mov r0, r5                                                    |         r0 = r5;
    0x080125c8 pop {r4, r5, r6, pc}                                          |         
    0x080125cc ldr r3, [r3]                                                  |         r3 = *(r3);
    0x080125d0 tst r3, 2                                                     |         
    0x080125d4 beq 0x80125c4                                                 |         
                                                                             |     }
    0x080125d8 stmdaeq r3, {r1, r2, r3, r4, r5, r7, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r3, r4, r5, r7, r8, fp, ip, sp}");
    0x080125dc mov r0, r5                                                    |     r0 = r5;
    0x080125e0 pop {r4, r5, r6, pc}                                          |     
                                                                             | label_2:
    0x080126e4 ldr r1, [r6, 0x164]                                           |     r1 = *((r6 + 0x164));
    0x080126e8 add r0, r0, 0xe4                                              |     r0 += 0xe4;
    0x080126ec mov r5, 0                                                     |     r5 = 0;
    0x080126f0 add r1, ip, r1                                                |     r1 = ip + r1;
    0x080126f4 stmdaeq r3, {r1, r2, r3, r6, r7, sb, fp, ip, sp}              |     __asm ("stmdaeq r3, {r1, r2, r3, r6, r7, sb, fp, ip, sp}");
    0x080126f8 b 0x80125a4                                                   |     goto label_0;
                                                                             | label_1:
    0x080126fc mvn r5, 0x15                                                  |     r5 = ~0x15;
    0x08012700 b 0x80125a4                                                   |     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/bridge/bridge.ko @ 0x800486c */
                                                                 | #include <stdint.h>
                                                                 |  
                                                                 | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                 |  
    ; (fcn) sym.br_port_carrier_check ()                         | void br_port_carrier_check (int32_t arg1, int32_t arg2) {
                                                                 |     int32_t var_0h;
                                                                 |     r0 = arg1;
                                                                 |     r1 = arg2;
    0x0800486c push {r4, r5, r6, r7, r8, lr}                     |     
    0x08004870 mov r4, r0                                        |     r4 = r0;
    0x08004874 mov r5, r1                                        |     r5 = r1;
    0x08004878 ldr r3, [r0, 0x10]                                |     r3 = *((r0 + 0x10));
    0x0800487c ldrd r6, r7, [r0]                                 |     __asm ("ldrd r6, r7, [r0]");
    0x08004880 tst r3, 0x10                                      |     
                                                                 |     if ((r3 & 0x10) == 0) {
    0x08004884 bne 0x8004894                                     |         
    0x08004888 ldr r3, [r7, 0x28]                                |         r3 = *((r7 + 0x28));
    0x0800488c tst r3, 1                                         |         
                                                                 |         if ((r3 & 1) != 0) {
    0x08004890 bne 0x8004920                                     |             goto label_2;
                                                                 |         }
                                                                 |     }
                                                                 | label_1:
    0x08004894 mov r3, 0                                         |     r3 = 0;
    0x08004898 strb r3, [r5]                                     |     *(r5) = r3;
    0x0800489c ldr r3, [r6, 8]                                   |     r3 = *((r6 + 8));
    0x080048a0 ldr r3, [r3, 0x28]                                |     r3 = *((r3 + 0x28));
    0x080048a4 tst r3, 1                                         |     
    0x080048a8 popeq {r4, r5, r6, r7, r8, pc}                    |     
    0x080048ac mov r3, sp                                        |     r3 = sp;
    0x080048b0 bic r2, r3, 0x1fc0                                |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080048b4 bic r2, r2, 0x3f                                  |     r2 = BIT_MASK (r2, 0x3f);
    0x080048b8 ldr r3, [r2, 4]                                   |     r3 = *((r2 + 4));
    0x080048bc add r3, r3, 0x200                                 |     r3 += 0x200;
    0x080048c0 add r3, r3, 1                                     |     r3++;
    0x080048c4 str r3, [r2, 4]                                   |     *((r2 + 4)) = r3;
    0x080048c8 ldr r3, [r7, 0x28]                                |     r3 = *((r7 + 0x28));
    0x080048cc tst r3, 1                                         |     
    0x080048d0 bne 0x80048f0                                     |     
                                                                 |     while (r3 != 0) {
    0x080048d4 ldrb r3, [r4, 0x1d]                               |         r3 = *((r4 + 0x1d));
    0x080048d8 cmp r3, 0                                         |         
                                                                 |         if (r3 != 0) {
    0x080048dc bne 0x8004940                                     |             goto label_3;
                                                                 |         }
                                                                 | label_0:
    0x080048e0 pop {r4, r5, r6, r7, r8, lr}                      |         
    0x080048e4 movw r1, 0x201                                    |         r1 = 0x201;
    0x080048e8 ldr r0, [pc, 0x70]                                |         r0 = *(0x800495c);
    0x080048ec stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}          |         __asm ("stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}");
    0x080048f0 ldrb r3, [r7, 0x13c]                              |         r3 = *((r7 + 0x13c));
    0x080048f4 cmp r3, 0                                         |         
    0x080048f8 cmpne r3, 6                                       |         __asm ("cmpne r3, 6");
    0x080048fc bne 0x80048d4                                     |         
                                                                 |     }
    0x08004900 ldrb r3, [r4, 0x1d]                               |     r3 = *((r4 + 0x1d));
    0x08004904 cmp r3, 0                                         |     
                                                                 |     if (r3 != 0) {
    0x08004908 bne 0x80048e0                                     |         goto label_0;
                                                                 |     }
    0x0800490c mov r0, r4                                        |     r0 = r4;
    0x08004910 stmdaeq r0, {r3, r5, sb, sl, pc}                  |     __asm ("stmdaeq r0, {r3, r5, sb, sl, pc}");
    0x08004914 mov r3, 1                                         |     r3 = 1;
    0x08004918 strb r3, [r5]                                     |     *(r5) = r3;
    0x0800491c b 0x80048e0                                       |     goto label_0;
                                                                 | label_2:
    0x08004920 ldrb r3, [r7, 0x13c]                              |     r3 = *((r7 + 0x13c));
    0x08004924 cmp r3, 0                                         |     
    0x08004928 cmpne r3, 6                                       |     __asm ("cmpne r3, 6");
                                                                 |     if (r3 != 0) {
    0x0800492c bne 0x8004894                                     |         goto label_1;
                                                                 |     }
    0x08004930 mov r0, r7                                        |     r0 = r7;
    0x08004934 bl 0x80047fc                                      |     port_cost ();
    0x08004938 str r0, [r4, 0x38]                                |     *((r4 + 0x38)) = r0;
    0x0800493c b 0x8004894                                       |     goto label_1;
                                                                 | label_3:
    0x08004940 mov r0, r4                                        |     r0 = r4;
    0x08004944 stmdaeq r0, {r4, r6, sb, sl, pc}                  |     __asm ("stmdaeq r0, {r4, r6, sb, sl, pc}");
    0x08004948 mov r3, 1                                         |     r3 = 1;
    0x0800494c strb r3, [r5]                                     |     *(r5) = r3;
    0x08004950 movw r1, 0x201                                    |     r1 = 0x201;
    0x08004954 ldr r0, [pc, 4]                                   |     r0 = sym.br_device_event;
    0x08004958 pop {r4, r5, r6, r7, r8, lr}                      |     
    0x0800495c stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}");
    0x08004960 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/bridge/bridge.ko @ 0x8008724 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.br_stp_disable_bridge ()                                 | void br_stp_disable_bridge (uint32_t arg1) {
                                                                         |     int32_t var_0h;
                                                                         |     r0 = arg1;
    0x08008724 push {r4, r5, r6, lr}                                     |     
    0x08008728 mov r5, r0                                                |     r5 = r0;
    0x0800872c mov r3, sp                                                |     r3 = sp;
    0x08008730 bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08008734 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08008738 ldr r3, [r2, 4]                                           |     r3 = *((r2 + 4));
    0x0800873c add r3, r3, 0x200                                         |     r3 += 0x200;
    0x08008740 add r3, r3, 1                                             |     r3++;
    0x08008744 str r3, [r2, 4]                                           |     *((r2 + 4)) = r3;
    0x08008748 ldr r3, [r0]                                              |     r3 = *(r0);
    0x0800874c cmp r0, r3                                                |     
                                                                         |     if (r0 == r3) {
    0x08008750 beq 0x8008790                                             |         goto label_1;
                                                                         |     }
    0x08008754 sub r4, r3, 8                                             |     r4 = r3 - 8;
    0x08008758 b 0x800876c                                               |     
                                                                         |     while (r3 == 0) {
    0x0800875c ldr r3, [r4, 8]                                           |         r3 = *((r4 + 8));
    0x08008760 sub r4, r3, 8                                             |         r4 = r3 - 8;
    0x08008764 cmp r5, r3                                                |         
                                                                         |         if (r5 == r3) {
    0x08008768 beq 0x8008790                                             |             goto label_1;
                                                                         |         }
                                                                         | label_0:
    0x0800876c ldrb r3, [r4, 0x1d]                                       |         r3 = *((r4 + 0x1d));
    0x08008770 cmp r3, 0                                                 |         
    0x08008774 beq 0x800875c                                             |         
                                                                         |     }
    0x08008778 mov r0, r4                                                |     r0 = r4;
    0x0800877c stmdaeq r0, {r4, r6, sb, sl, pc}                          |     __asm ("stmdaeq r0, {r4, r6, sb, sl, pc}");
    0x08008780 ldr r3, [r4, 8]                                           |     r3 = *((r4 + 8));
    0x08008784 sub r4, r3, 8                                             |     r4 = r3 - 8;
    0x08008788 cmp r5, r3                                                |     
                                                                         |     if (r5 != r3) {
    0x0800878c bne 0x800876c                                             |         goto label_0;
                                                                         |     }
                                                                         | label_1:
    0x08008790 mov r0, r5                                                |     r0 = r5;
    0x08008794 mov r1, 0                                                 |     r1 = 0;
    0x08008798 stmdaeq r0, {r2, r3, r4, r7, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r0, {r2, r3, r4, r7, sb, sl, ip, sp, lr}");
    0x0800879c mov r3, 0                                                 |     r3 = 0;
    0x080087a0 movw r1, 0x201                                            |     r1 = 0x201;
    0x080087a4 strb r3, [r5, 0x119]                                      |     *((r5 + 0x119)) = r3;
    0x080087a8 ldr r0, [pc, 0x24]                                        |     r0 = *(0x80087d0);
    0x080087ac stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}                  |     __asm ("stmdaeq r3, {r1, r3, r4, r8, fp, ip, sp}");
    0x080087b0 add r0, r5, 0x2f0                                         |     r0 = r5 + 0x2f0;
    0x080087b4 stmdaeq r3, {r1, r2, r4, r6, r7, sb, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r4, r6, r7, sb, fp, ip, sp}");
    0x080087b8 add r0, r5, 0x318                                         |     r0 = r5 + 0x318;
    0x080087bc stmdaeq r3, {r1, r2, r4, r6, r7, sb, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r4, r6, r7, sb, fp, ip, sp}");
    0x080087c0 add r0, r5, 0x304                                         |     r0 = r5 + 0x304;
    0x080087c4 stmdaeq r3, {r1, r2, r4, r6, r7, sb, fp, ip, sp}          |     __asm ("stmdaeq r3, {r1, r2, r4, r6, r7, sb, fp, ip, sp}");
    0x080087c8 add r0, r5, 0x32c                                         |     r0 = r5 + 0x32c;
    0x080087cc pop {r4, r5, r6, lr}                                      |     
    0x080087d0 stmdaeq r3, {r1, r2, r5, r6, sb, fp, ip, sp}              |     __asm ("stmdaeq r3, {r1, r2, r5, r6, sb, fp, ip, sp}");
    0x080087d4 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/bridge/bridge.ko @ 0x801b99c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.br_vlan_bridge_event ()          | void br_vlan_bridge_event (int32_t arg1, int32_t arg2) {
                                                 |     int32_t var_13h;
                                                 |     int32_t var_20h;
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0801b99c push {r4, r5, r6, lr}             |     
    0x0801b9a0 sub r1, r1, 1                     |     r1--;
    0x0801b9a4 mov r3, 0                         |     r3 = 0;
    0x0801b9a8 sub sp, sp, 0x20                  |     
    0x0801b9ac add r5, r0, 0x540                 |     r5 = r0 + 0x540;
    0x0801b9b0 strb r3, [sp, 0x13]               |     var_13h = r3;
    0x0801b9b4 cmp r1, 0x14                      |     
                                                 |     if (r1 > 0x14) {
                                                 |         /* switch table (21 cases) at 0x801b9c0 */
    0x0801b9b8 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0801b9bc b 0x801ba20                       |     
    0x0801ba20 mov r4, 0                         |     r4 = 0;
    0x0801ba24 mov r0, r4                        |     r0 = r4;
    0x0801ba28 add sp, sp, 0x20                  |     
    0x0801ba2c pop {r4, r5, r6, pc}              |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/bridge/bridge.ko @ 0x800108c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash ()                         | void jhash (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0800108c push {r4, r5, lr}                 |     
    0x08001090 movw r4, 0xbeef                   |     
    0x08001094 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x08001098 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0800109c mov lr, r0                        |     lr = r0;
    0x080010a0 add r4, r4, r1                    |     r4 += r1;
    0x080010a4 cmp r1, 0xc                       |     
    0x080010a8 mov r0, r4                        |     r0 = r4;
    0x080010ac mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x080010b0 bls 0x8001120                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x080010b4 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x080010b8 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x080010bc ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x080010c0 cmp r1, 0xc                       |         
    0x080010c4 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x080010c8 add ip, ip, r0                    |         
    0x080010cc add r3, r3, r5                    |         r3 += r5;
    0x080010d0 sub r2, r2, ip                    |         r2 -= ip;
    0x080010d4 add r0, r3, ip                    |         r0 = r3 + ip;
    0x080010d8 add r2, r2, r4                    |         r2 += r4;
    0x080010dc eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x080010e0 sub r3, r3, r2                    |         r3 -= r2;
    0x080010e4 add ip, r2, r0                    |         
    0x080010e8 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x080010ec sub r0, r0, r3                    |         r0 -= r3;
    0x080010f0 add r2, r3, ip                    |         r2 = r3 + ip;
    0x080010f4 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x080010f8 sub ip, ip, r3                    |         
    0x080010fc add r0, r3, r2                    |         r0 = r3 + r2;
    0x08001100 eor ip, ip, r3, ror 16            |         
    0x08001104 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x08001108 add r4, ip, r0                    |         r4 = ip + r0;
    0x0800110c eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x08001110 sub r0, r0, r3                    |         r0 -= r3;
    0x08001114 add r5, r3, r4                    |         r5 = r3 + r4;
    0x08001118 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0800111c bhi 0x80010b4                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x08001120 sub r1, r1, 1                     |     r1--;
    0x08001124 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x8001130 */
    0x08001128 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0800112c b 0x80011f8                       |     
    0x080011f8 pop {r4, r5, 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/bridge/bridge.ko @ 0x800e9a4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_1 ()                       | void jhash_1 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0800e9a4 push {r4, r5, lr}                 |     
    0x0800e9a8 movw r4, 0xbeef                   |     
    0x0800e9ac movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0800e9b0 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0800e9b4 mov lr, r0                        |     lr = r0;
    0x0800e9b8 add r4, r4, r1                    |     r4 += r1;
    0x0800e9bc cmp r1, 0xc                       |     
    0x0800e9c0 mov r0, r4                        |     r0 = r4;
    0x0800e9c4 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0800e9c8 bls 0x800ea38                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0800e9cc ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0800e9d0 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0800e9d4 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0800e9d8 cmp r1, 0xc                       |         
    0x0800e9dc ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0800e9e0 add ip, ip, r0                    |         
    0x0800e9e4 add r3, r3, r5                    |         r3 += r5;
    0x0800e9e8 sub r2, r2, ip                    |         r2 -= ip;
    0x0800e9ec add r0, r3, ip                    |         r0 = r3 + ip;
    0x0800e9f0 add r2, r2, r4                    |         r2 += r4;
    0x0800e9f4 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0800e9f8 sub r3, r3, r2                    |         r3 -= r2;
    0x0800e9fc add ip, r2, r0                    |         
    0x0800ea00 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0800ea04 sub r0, r0, r3                    |         r0 -= r3;
    0x0800ea08 add r2, r3, ip                    |         r2 = r3 + ip;
    0x0800ea0c eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0800ea10 sub ip, ip, r3                    |         
    0x0800ea14 add r0, r3, r2                    |         r0 = r3 + r2;
    0x0800ea18 eor ip, ip, r3, ror 16            |         
    0x0800ea1c sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0800ea20 add r4, ip, r0                    |         r4 = ip + r0;
    0x0800ea24 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0800ea28 sub r0, r0, r3                    |         r0 -= r3;
    0x0800ea2c add r5, r3, r4                    |         r5 = r3 + r4;
    0x0800ea30 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0800ea34 bhi 0x800e9cc                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0800ea38 sub r1, r1, 1                     |     r1--;
    0x0800ea3c cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x800ea48 */
    0x0800ea40 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0800ea44 b 0x800eb10                       |     
    0x0800eb10 pop {r4, r5, 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/bridge/bridge.ko @ 0x8017ee8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_2 ()                       | void jhash_2 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x08017ee8 push {r4, r5, lr}                 |     
    0x08017eec movw r4, 0xbeef                   |     
    0x08017ef0 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x08017ef4 add r4, r2, r4                    |     r4 = r2 + r4;
    0x08017ef8 mov lr, r0                        |     lr = r0;
    0x08017efc add r4, r4, r1                    |     r4 += r1;
    0x08017f00 cmp r1, 0xc                       |     
    0x08017f04 mov r0, r4                        |     r0 = r4;
    0x08017f08 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x08017f0c bls 0x8017f7c                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x08017f10 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x08017f14 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x08017f18 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x08017f1c cmp r1, 0xc                       |         
    0x08017f20 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x08017f24 add ip, ip, r0                    |         
    0x08017f28 add r3, r3, r5                    |         r3 += r5;
    0x08017f2c sub r2, r2, ip                    |         r2 -= ip;
    0x08017f30 add r0, r3, ip                    |         r0 = r3 + ip;
    0x08017f34 add r2, r2, r4                    |         r2 += r4;
    0x08017f38 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x08017f3c sub r3, r3, r2                    |         r3 -= r2;
    0x08017f40 add ip, r2, r0                    |         
    0x08017f44 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x08017f48 sub r0, r0, r3                    |         r0 -= r3;
    0x08017f4c add r2, r3, ip                    |         r2 = r3 + ip;
    0x08017f50 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x08017f54 sub ip, ip, r3                    |         
    0x08017f58 add r0, r3, r2                    |         r0 = r3 + r2;
    0x08017f5c eor ip, ip, r3, ror 16            |         
    0x08017f60 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x08017f64 add r4, ip, r0                    |         r4 = ip + r0;
    0x08017f68 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x08017f6c sub r0, r0, r3                    |         r0 -= r3;
    0x08017f70 add r5, r3, r4                    |         r5 = r3 + r4;
    0x08017f74 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x08017f78 bhi 0x8017f10                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x08017f7c sub r1, r1, 1                     |     r1--;
    0x08017f80 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x8017f8c */
    0x08017f84 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x08017f88 b 0x8018054                       |     
    0x08018054 pop {r4, r5, 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/bridge/bridge.ko @ 0x801bc44 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_3 ()                       | void jhash_3 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0801bc44 push {r4, r5, lr}                 |     
    0x0801bc48 movw r4, 0xbeef                   |     
    0x0801bc4c movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0801bc50 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0801bc54 mov lr, r0                        |     lr = r0;
    0x0801bc58 add r4, r4, r1                    |     r4 += r1;
    0x0801bc5c cmp r1, 0xc                       |     
    0x0801bc60 mov r0, r4                        |     r0 = r4;
    0x0801bc64 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0801bc68 bls 0x801bcd8                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0801bc6c ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0801bc70 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0801bc74 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0801bc78 cmp r1, 0xc                       |         
    0x0801bc7c ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0801bc80 add ip, ip, r0                    |         
    0x0801bc84 add r3, r3, r5                    |         r3 += r5;
    0x0801bc88 sub r2, r2, ip                    |         r2 -= ip;
    0x0801bc8c add r0, r3, ip                    |         r0 = r3 + ip;
    0x0801bc90 add r2, r2, r4                    |         r2 += r4;
    0x0801bc94 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0801bc98 sub r3, r3, r2                    |         r3 -= r2;
    0x0801bc9c add ip, r2, r0                    |         
    0x0801bca0 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0801bca4 sub r0, r0, r3                    |         r0 -= r3;
    0x0801bca8 add r2, r3, ip                    |         r2 = r3 + ip;
    0x0801bcac eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0801bcb0 sub ip, ip, r3                    |         
    0x0801bcb4 add r0, r3, r2                    |         r0 = r3 + r2;
    0x0801bcb8 eor ip, ip, r3, ror 16            |         
    0x0801bcbc sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0801bcc0 add r4, ip, r0                    |         r4 = ip + r0;
    0x0801bcc4 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0801bcc8 sub r0, r0, r3                    |         r0 -= r3;
    0x0801bccc add r5, r3, r4                    |         r5 = r3 + r4;
    0x0801bcd0 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0801bcd4 bhi 0x801bc6c                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0801bcd8 sub r1, r1, 1                     |     r1--;
    0x0801bcdc cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x801bce8 */
    0x0801bce0 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0801bce4 b 0x801bdb0                       |     
    0x0801bdb0 pop {r4, r5, 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/bridge/bridge.ko @ 0x800e9a4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_1 ()                       | void jhash_1 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0800e9a4 push {r4, r5, lr}                 |     
    0x0800e9a8 movw r4, 0xbeef                   |     
    0x0800e9ac movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0800e9b0 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0800e9b4 mov lr, r0                        |     lr = r0;
    0x0800e9b8 add r4, r4, r1                    |     r4 += r1;
    0x0800e9bc cmp r1, 0xc                       |     
    0x0800e9c0 mov r0, r4                        |     r0 = r4;
    0x0800e9c4 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0800e9c8 bls 0x800ea38                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0800e9cc ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0800e9d0 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0800e9d4 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0800e9d8 cmp r1, 0xc                       |         
    0x0800e9dc ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0800e9e0 add ip, ip, r0                    |         
    0x0800e9e4 add r3, r3, r5                    |         r3 += r5;
    0x0800e9e8 sub r2, r2, ip                    |         r2 -= ip;
    0x0800e9ec add r0, r3, ip                    |         r0 = r3 + ip;
    0x0800e9f0 add r2, r2, r4                    |         r2 += r4;
    0x0800e9f4 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0800e9f8 sub r3, r3, r2                    |         r3 -= r2;
    0x0800e9fc add ip, r2, r0                    |         
    0x0800ea00 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0800ea04 sub r0, r0, r3                    |         r0 -= r3;
    0x0800ea08 add r2, r3, ip                    |         r2 = r3 + ip;
    0x0800ea0c eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0800ea10 sub ip, ip, r3                    |         
    0x0800ea14 add r0, r3, r2                    |         r0 = r3 + r2;
    0x0800ea18 eor ip, ip, r3, ror 16            |         
    0x0800ea1c sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0800ea20 add r4, ip, r0                    |         r4 = ip + r0;
    0x0800ea24 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0800ea28 sub r0, r0, r3                    |         r0 -= r3;
    0x0800ea2c add r5, r3, r4                    |         r5 = r3 + r4;
    0x0800ea30 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0800ea34 bhi 0x800e9cc                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0800ea38 sub r1, r1, 1                     |     r1--;
    0x0800ea3c cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x800ea48 */
    0x0800ea40 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0800ea44 b 0x800eb10                       |     
    0x0800eb10 pop {r4, r5, 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/bridge/bridge.ko @ 0x8017ee8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_2 ()                       | void jhash_2 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x08017ee8 push {r4, r5, lr}                 |     
    0x08017eec movw r4, 0xbeef                   |     
    0x08017ef0 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x08017ef4 add r4, r2, r4                    |     r4 = r2 + r4;
    0x08017ef8 mov lr, r0                        |     lr = r0;
    0x08017efc add r4, r4, r1                    |     r4 += r1;
    0x08017f00 cmp r1, 0xc                       |     
    0x08017f04 mov r0, r4                        |     r0 = r4;
    0x08017f08 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x08017f0c bls 0x8017f7c                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x08017f10 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x08017f14 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x08017f18 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x08017f1c cmp r1, 0xc                       |         
    0x08017f20 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x08017f24 add ip, ip, r0                    |         
    0x08017f28 add r3, r3, r5                    |         r3 += r5;
    0x08017f2c sub r2, r2, ip                    |         r2 -= ip;
    0x08017f30 add r0, r3, ip                    |         r0 = r3 + ip;
    0x08017f34 add r2, r2, r4                    |         r2 += r4;
    0x08017f38 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x08017f3c sub r3, r3, r2                    |         r3 -= r2;
    0x08017f40 add ip, r2, r0                    |         
    0x08017f44 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x08017f48 sub r0, r0, r3                    |         r0 -= r3;
    0x08017f4c add r2, r3, ip                    |         r2 = r3 + ip;
    0x08017f50 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x08017f54 sub ip, ip, r3                    |         
    0x08017f58 add r0, r3, r2                    |         r0 = r3 + r2;
    0x08017f5c eor ip, ip, r3, ror 16            |         
    0x08017f60 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x08017f64 add r4, ip, r0                    |         r4 = ip + r0;
    0x08017f68 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x08017f6c sub r0, r0, r3                    |         r0 -= r3;
    0x08017f70 add r5, r3, r4                    |         r5 = r3 + r4;
    0x08017f74 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x08017f78 bhi 0x8017f10                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x08017f7c sub r1, r1, 1                     |     r1--;
    0x08017f80 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x8017f8c */
    0x08017f84 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x08017f88 b 0x8018054                       |     
    0x08018054 pop {r4, r5, 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/bridge/bridge.ko @ 0x801bc44 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_3 ()                       | void jhash_3 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0801bc44 push {r4, r5, lr}                 |     
    0x0801bc48 movw r4, 0xbeef                   |     
    0x0801bc4c movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0801bc50 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0801bc54 mov lr, r0                        |     lr = r0;
    0x0801bc58 add r4, r4, r1                    |     r4 += r1;
    0x0801bc5c cmp r1, 0xc                       |     
    0x0801bc60 mov r0, r4                        |     r0 = r4;
    0x0801bc64 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0801bc68 bls 0x801bcd8                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0801bc6c ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0801bc70 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0801bc74 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0801bc78 cmp r1, 0xc                       |         
    0x0801bc7c ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0801bc80 add ip, ip, r0                    |         
    0x0801bc84 add r3, r3, r5                    |         r3 += r5;
    0x0801bc88 sub r2, r2, ip                    |         r2 -= ip;
    0x0801bc8c add r0, r3, ip                    |         r0 = r3 + ip;
    0x0801bc90 add r2, r2, r4                    |         r2 += r4;
    0x0801bc94 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0801bc98 sub r3, r3, r2                    |         r3 -= r2;
    0x0801bc9c add ip, r2, r0                    |         
    0x0801bca0 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0801bca4 sub r0, r0, r3                    |         r0 -= r3;
    0x0801bca8 add r2, r3, ip                    |         r2 = r3 + ip;
    0x0801bcac eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0801bcb0 sub ip, ip, r3                    |         
    0x0801bcb4 add r0, r3, r2                    |         r0 = r3 + r2;
    0x0801bcb8 eor ip, ip, r3, ror 16            |         
    0x0801bcbc sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0801bcc0 add r4, ip, r0                    |         r4 = ip + r0;
    0x0801bcc4 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0801bcc8 sub r0, r0, r3                    |         r0 -= r3;
    0x0801bccc add r5, r3, r4                    |         r5 = r3 + r4;
    0x0801bcd0 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0801bcd4 bhi 0x801bc6c                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0801bcd8 sub r1, r1, 1                     |     r1--;
    0x0801bcdc cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x801bce8 */
    0x0801bce0 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0801bce4 b 0x801bdb0                       |     
    0x0801bdb0 pop {r4, r5, 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/bridge/bridge.ko @ 0x8006348 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.old_dev_ioctl.constprop.0 ()                                 | void old_dev_ioctl_constprop_0 (int32_t arg1, int32_t arg2) {
                                                                             |     int32_t var_0h;
                                                                             |     int32_t var_58h;
                                                                             |     r0 = arg1;
                                                                             |     r1 = arg2;
    0x08006348 push {r4, r5, r6, r7, r8, lr}                                 |     
    0x0800634c mov r4, r0                                                    |     r4 = r0;
    0x08006350 add r6, r0, 0x540                                             |     r6 = r0 + 0x540;
    0x08006354 sub sp, sp, 0x58                                              |     
    0x08006358 ldr r1, [r1, 0x10]                                            |     r1 = *((r1 + 0x10));
    0x0800635c mov r3, sp                                                    |     r3 = sp;
    0x08006360 bic r2, r3, 0x1fc0                                            |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08006364 bic r2, r2, 0x3f                                              |     r2 = BIT_MASK (r2, 0x3f);
    0x08006368 ldr r3, [r2, 8]                                               |     r3 = *((r2 + 8));
    0x0800636c adds r0, r1, 0x10                                             |     r0 = r1 + 0x10;
    0x08006370 sbcslo r0, r0, r3                                             |     __asm ("sbcslo r0, r0, r3");
                                                                             |     if (r0 >= r1) {
    0x08006374 movlo r3, 0                                                   |         r3 = 0;
                                                                             |     }
    0x08006378 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0800637c bne 0x8006514                                                 |         
    0x08006380 mrc p15, 0, r5, c3, c0, 0                                     |         __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x08006384 bic r3, r5, 0xc                                               |         r3 = BIT_MASK (r5, 0xc);
    0x08006388 orr r3, r3, 4                                                 |         r3 |= 4;
    0x0800638c mcr p15, 0, r3, c3, c0, 0                                     |         __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08006390 isb sy                                                        |         __asm ("isb sy");
    0x08006394 mov r2, 0x10                                                  |         r2 = 0x10;
    0x08006398 mov r0, sp                                                    |         r0 = sp;
    0x0800639c stmdaeq r3, {r1, r2, r3, r4, r5, r7, sb, fp, ip, sp}          |         __asm ("stmdaeq r3, {r1, r2, r3, r4, r5, r7, sb, fp, ip, sp}");
    0x080063a0 mcr p15, 0, r5, c3, c0, 0                                     |         __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x080063a4 isb sy                                                        |         __asm ("isb sy");
    0x080063a8 cmp r0, 0                                                     |         
                                                                             |         if (r0 != 0) {
    0x080063ac bne 0x8006514                                                 |             goto label_0;
                                                                             |         }
    0x080063b0 ldr r2, [sp]                                                  |         r2 = *(sp);
    0x080063b4 sub r3, r2, 4                                                 |         r3 = r2 - 4;
    0x080063b8 cmp r3, 0xe                                                   |         
                                                                             |         if (r3 > 0xe) {
                                                                             |             /* switch table (15 cases) at 0x80063c4 */
    0x080063bc ldrls pc, [pc, r3, lsl 2]                                     |             offset_0 = r3 << 2;
                                                                             |             pc = *((pc + offset_0));
                                                                             |         }
    0x080063c0 b 0x8006994                                                   |         goto label_1;
                                                                             |     }
                                                                             | label_0:
    0x08006514 mvn r5, 0xd                                                   |     r5 = ~0xd;
                                                                             |     do {
    0x08006518 mov r0, r5                                                    |         r0 = r5;
    0x0800651c add sp, sp, 0x58                                              |         
    0x08006520 pop {r4, r5, r6, r7, r8, pc}                                  |         
                                                                             | label_1:
    0x08006994 mvn r5, 0x5e                                                  |         r5 = ~0x5e;
    0x08006998 b 0x8006518                                                   |         
                                                                             |     } while (1);
                                                                             | }

[*] Function popen used 1 times bridge.ko