[*] Binary protection state of bridge.ko

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


[*] Function fprintf tear down of bridge.ko

    ; assembly                                                       | /* r2dec pseudo code output */
                                                                     | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8003ad0 */
                                                                     | #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;
    0x08003ad0 push {r4, r5, r6, r7, r8, lr}                         |     
    0x08003ad4 mov r4, r0                                            |     r4 = r0;
    0x08003ad8 mov r5, r2                                            |     r5 = r2;
    0x08003adc mov r1, sp                                            |     r1 = sp;
    0x08003ae0 ldrb r6, [sp, 0x18]                                   |     r6 = *(arg_18h);
    0x08003ae4 bic lr, r1, 0x1fc0                                    |     lr = BIT_MASK (r1, 0x1fc0);
    0x08003ae8 mov r7, r3                                            |     r7 = r3;
    0x08003aec bic lr, lr, 0x3f                                      |     lr = BIT_MASK (lr, 0x3f);
    0x08003af0 ldr ip, [lr, 4]                                       |     ip = *((lr + 4));
    0x08003af4 add ip, ip, 0x200                                     |     
    0x08003af8 add ip, ip, 1                                         |     
    0x08003afc str ip, [lr, 4]                                       |     *((lr + 4)) = ip;
    0x08003b00 stmdaeq r3, {r0, r2, r4, r5, r6, r8, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r4, r5, r6, r8, ip, sp}");
    0x08003b04 mov r2, r7                                            |     r2 = r7;
    0x08003b08 mov r1, r5                                            |     r1 = r5;
    0x08003b0c add r0, r4, 0x1c                                      |     r0 = r4 + 0x1c;
    0x08003b10 bl 0x80014bc                                          |     r0 = fdb_find_rcu ();
    0x08003b14 mov r4, r0                                            |     r4 = r0;
    0x08003b18 stmdaeq r3, {r0, r7, r8, ip, sp}                      |     __asm ("stmdaeq r3, {r0, r7, r8, ip, sp}");
    0x08003b1c cmp r4, 0                                             |     
                                                                     |     if (r4 != 0) {
    0x08003b20 beq 0x8003b4c                                         |         
    0x08003b24 ldr r3, [r4, 0x18]                                    |         r3 = *((r4 + 0x18));
    0x08003b28 ubfx r3, r3, 5, 1                                     |         r3 = (r3 >> 5) & ((1 << 1) - 1);
    0x08003b2c cmp r6, r3                                            |         
                                                                     |         if (r6 == r3) {
    0x08003b30 beq 0x8003b4c                                         |             goto label_0;
                                                                     |         }
    0x08003b34 mrs r2, apsr                                          |         r2 = apsr;
    0x08003b38 cpsid i                                               |         __asm ("cpsid i");
    0x08003b3c ldr r3, [r4, 0x18]                                    |         r3 = *((r4 + 0x18));
    0x08003b40 eor r3, r3, 0x20                                      |         r3 ^= 0x20;
    0x08003b44 str r3, [r4, 0x18]                                    |         *((r4 + 0x18)) = r3;
    0x08003b48 msr cpsr_c, r2                                        |         cpsr_c = r2;
                                                                     |     }
                                                                     | label_0:
    0x08003b4c pop {r4, r5, r6, r7, r8, lr}                          |     
    0x08003b50 movw r1, 0x201                                        |     r1 = 0x201;
    0x08003b54 ldr r0, [pc]                                          |     r0 = *(0x8003b54);
    0x08003b58 stmdaeq r3, {r0, r3, r4, r8, ip, sp}                  |     __asm ("stmdaeq r3, {r0, r3, r4, r8, ip, sp}");
    0x08003b5c 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-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8012834 */
                                                                         | #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;
    0x08012834 push {r4, r5, lr}                                         |     
    0x08012838 cmp r3, 0                                                 |     
    0x0801283c sub sp, sp, 0xc                                           |     
    0x08012840 ldrb r4, [sp, 0x18]                                       |     r4 = *(arg_18h);
                                                                         |     if (r3 == 0) {
    0x08012844 beq 0x8012880                                             |         goto label_0;
                                                                         |     }
    0x08012848 ldr ip, [r0, 0x10]                                        |     ip = *(arg_18hx10);
    0x0801284c tst ip, 0x200                                             |     
                                                                         |     if ((ip & 0x200) == 0) {
    0x08012850 beq 0x8012880                                             |         goto label_0;
                                                                         |     }
    0x08012854 cmp r1, 0                                                 |     
                                                                         |     if (r1 == 0) {
    0x08012858 ldrne r5, [r1, 0xe0]                                      |         r5 = *((r1 + 0xe0));
                                                                         |     }
                                                                         |     if (r1 != 0) {
    0x0801285c ldreq r5, [r0, 0x284]                                     |         r5 = *((r0 + 0x284));
                                                                         |     }
    0x08012860 cmp r5, 0                                                 |     
                                                                         |     if (r5 == 0) {
    0x08012864 beq 0x8012aa0                                             |         goto label_1;
                                                                         |     }
    0x08012868 ldrh r1, [r2, 0x94]                                       |     r1 = *((r2 + 0x94));
    0x0801286c cmp r1, 8                                                 |     
                                                                         |     if (r1 == 8) {
    0x08012870 beq 0x80128e4                                             |         goto label_2;
                                                                         |     }
    0x08012874 movw r0, 0xdd86                                           |     r0 = 0xdd86;
    0x08012878 cmp r1, r0                                                |     
    0x0801287c beq 0x8012888                                             |     
                                                                         |     while (1) {
                                                                         | label_0:
    0x08012880 add sp, sp, 0xc                                           |         
    0x08012884 pop {r4, r5, pc}                                          |         
    0x08012888 ldrh r0, [r2, 0x98]                                       |         r0 = *((r2 + 0x98));
    0x0801288c sub r3, r3, 0x82                                          |         r3 -= 0x82;
    0x08012890 ldr r1, [r2, 0xa4]                                        |         r1 = *((r2 + 0xa4));
    0x08012894 ldrh ip, [r2, 0x96]                                       |         ip = *((r2 + 0x96));
    0x08012898 add r1, r1, r0                                            |         r1 += r0;
    0x0801289c ldrh r2, [r1, 4]                                          |         r2 = *((r1 + 4));
    0x080128a0 cmp r3, 0xd                                               |         
                                                                         |         if (r3 > 0xd) {
                                                                         |             /* switch table (14 cases) at 0x80128ac */
    0x080128a4 ldrls pc, [pc, r3, lsl 2]                                 |             offset_0 = r3 << 2;
                                                                         |             pc = *((pc + offset_0));
                                                                         |         }
    0x080128a8 b 0x8012880                                               |         
                                                                         |     }
                                                                         | label_2:
    0x080128e4 ldrh r0, [r2, 0x98]                                       |     r0 = *((r2 + 0x98));
    0x080128e8 sub r3, r3, 0x11                                          |     r3 -= 0x11;
    0x080128ec ldr r1, [r2, 0xa4]                                        |     r1 = *((r2 + 0xa4));
    0x080128f0 add ip, r1, r0                                            |     
    0x080128f4 ldrb r0, [r1, r0]                                         |     r0 = *((r1 + r0));
    0x080128f8 ldrh ip, [ip, 2]                                          |     ip = *((ip + 2));
    0x080128fc and r0, r0, 0xf                                           |     r0 &= 0xf;
    0x08012900 cmp r3, 0x11                                              |     
                                                                         |     if (r3 > 0x11) {
                                                                         |         /* switch table (18 cases) at 0x801290c */
    0x08012904 ldrls pc, [pc, r3, lsl 2]                                 |         offset_1 = r3 << 2;
                                                                         |         pc = *((pc + offset_1));
                                                                         |     }
    0x08012908 b 0x8012880                                               |     goto label_0;
                                                                         | label_1:
    0x08012aa0 mov r3, r5                                                |     r3 = r5;
    0x08012aa4 stmdaeq r1, {r4, r5, r7, r8, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r4, r5, r7, r8, sl, fp, sp, lr, pc}");
    0x08012aa8 stmdaeq r1, {r4, r5, r7, r8, sl, fp, sp, lr, pc}          |     __asm ("stmdaeq r1, {r4, r5, r7, r8, sl, fp, sp, lr, pc}");
    0x08012aac mov r2, 9                                                 |     r2 = 9;
    0x08012ab0 movw r1, 0xeff                                            |     r1 = 0xeff;
    0x08012ab4 add sp, sp, 0xc                                           |     
    0x08012ab8 pop {r4, r5, lr}                                          |     
    0x08012abc stmdaeq r3, {r0, r2, r4, r5, r8, ip, sp}                  |     __asm ("stmdaeq r3, {r0, r2, r4, r5, r8, ip, sp}");
    0x08012ac0 ldr r3, [r5, 0x78]                                        |     r3 = *((r5 + 0x78));
    0x08012ac4 ldr r2, [r5, 0x7c]                                        |     r2 = *((r5 + 0x7c));
    0x08012ac8 adds r3, r3, 1                                            |     r3++;
    0x08012acc str r3, [r5, 0x78]                                        |     *((r5 + 0x78)) = r3;
    0x08012ad0 adc r3, r2, 0                                             |     __asm ("adc r3, r2, 0");
    0x08012ad4 str r3, [r5, 0x7c]                                        |     *((r5 + 0x7c)) = r3;
    0x08012ad8 b 0x8012880                                               |     goto label_0;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8014958 */
                                                                         | #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_8h;
                                                                         |     int32_t var_10h;
                                                                         |     int32_t var_2ch;
                                                                         |     int32_t var_54h;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x08014958 push {r4, r5, r6, r7, r8, sb, sl, fp, lr}                 |     
    0x0801495c sub sp, sp, 0x54                                          |     
    0x08014960 str r3, [sp, 8]                                           |     var_8h = r3;
    0x08014964 ldrh r3, [r2, 0x1e]                                       |     r3 = *((r2 + 0x1e));
    0x08014968 and r3, r3, 0xfe00                                        |     r3 &= 0xfe00;
    0x0801496c strh r3, [r2, 0x1e]                                       |     *((r2 + 0x1e)) = r3;
    0x08014970 ldr r7, [r0, 0x10]                                        |     r7 = *((r0 + 0x10));
    0x08014974 ubfx r7, r7, 6, 1                                         |     r7 = (r7 >> 6) & ((1 << 1) - 1);
    0x08014978 cmp r7, 0                                                 |     
                                                                         |     if (r7 == 0) {
    0x0801497c beq 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08014980 ldrh r3, [r2, 0x94]                                       |     r3 = *((r2 + 0x94));
    0x08014984 mov r4, r2                                                |     r4 = r2;
    0x08014988 mov sl, r0                                                |     sl = r0;
    0x0801498c mov r5, r1                                                |     r5 = r1;
    0x08014990 cmp r3, 8                                                 |     
                                                                         |     if (r3 == 8) {
    0x08014994 beq 0x8014a3c                                             |         goto label_4;
                                                                         |     }
    0x08014998 movw r2, 0xdd86                                           |     r2 = 0xdd86;
    0x0801499c cmp r3, r2                                                |     
    0x080149a0 beq 0x80149b4                                             |     
                                                                         |     while (r6 != 0x3d) {
                                                                         | label_0:
    0x080149a4 mov r6, 0                                                 |         r6 = 0;
                                                                         | label_1:
    0x080149a8 mov r0, r6                                                |         r0 = r6;
    0x080149ac add sp, sp, 0x54                                          |         
    0x080149b0 pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |         
    0x080149b4 mov r0, r4                                                |         r0 = r4;
    0x080149b8 stmdaeq r3, {r0, r4, r6, r7, r8, sb, ip, sp}              |         __asm ("stmdaeq r3, {r0, r4, r6, r7, r8, sb, ip, sp}");
    0x080149bc cmn r0, 0x2a                                              |         
    0x080149c0 cmnne r0, 0x3d                                            |         __asm ("cmnne r0, 0x3d");
    0x080149c4 mov r6, r0                                                |         r6 = r0;
                                                                         |         if (r0 != 0x2a) {
    0x080149c8 moveq r3, 1                                               |             r3 = 1;
                                                                         |         }
                                                                         |         if (r0 == 0x2a) {
    0x080149cc movne r3, 0                                               |             r3 = 0;
                                                                         |         }
    0x080149d0 str r3, [sp, 0x10]                                        |         var_10h = r3;
                                                                         |         if (r0 != 0x2a) {
    0x080149d4 beq 0x8014d80                                             |             
    0x080149d8 cmp r0, 0                                                 |             
                                                                         |             if (r0 < 0) {
    0x080149dc blt 0x80158e8                                             |                 goto label_5;
                                                                         |             }
    0x080149e0 ldrh lr, [r4, 0x96]                                       |             
    0x080149e4 ldr ip, [r4, 0xa4]                                        |             ip = *((r4 + 0xa4));
    0x080149e8 add r0, ip, lr                                            |             r0 = ip + lr;
    0x080149ec ldrb r3, [ip, lr]                                         |             r3 = *((ip + lr));
    0x080149f0 strb r3, [r4, 0x1e]                                       |             *((r4 + 0x1e)) = r3;
    0x080149f4 sub r2, r3, 0x82                                          |             r2 = r3 - 0x82;
    0x080149f8 cmp r2, 0xd                                               |             
                                                                         |             if (r2 > 0xd) {
                                                                         |                 /* switch table (14 cases) at 0x8014a04 */
    0x080149fc ldrls pc, [pc, r2, lsl 2]                                 |                 offset_0 = r2 << 2;
                                                                         |                 pc = *((pc + offset_0));
                                                                         |             }
    0x08014a00 b 0x8014d5c                                               |             goto label_6;
                                                                         | label_4:
    0x08014a3c mov r0, r2                                                |             r0 = r2;
    0x08014a40 stmdaeq r3, {r0, r2, r4, r6, r7, r8, sb, ip, sp}          |             __asm ("stmdaeq r3, {r0, r2, r4, r6, r7, r8, sb, ip, sp}");
    0x08014a44 mov r6, r0                                                |             r6 = r0;
    0x08014a48 cmn r0, 0x2a                                              |             
                                                                         |             if (r0 == 0x2a) {
    0x08014a4c beq 0x8014e50                                             |                 goto label_7;
                                                                         |             }
    0x08014a50 cmp r0, 0                                                 |             
                                                                         |             if (r0 < 0) {
    0x08014a54 blt 0x80158e8                                             |                 goto label_5;
                                                                         |             }
    0x08014a58 ldrh r2, [r4, 0x96]                                       |             r2 = *((r4 + 0x96));
    0x08014a5c ldr ip, [r4, 0xa4]                                        |             ip = *((r4 + 0xa4));
    0x08014a60 ldrh r8, [r4, 0x9a]                                       |             r8 = *((r4 + 0x9a));
    0x08014a64 add r1, ip, r2                                            |             r1 = ip + r2;
    0x08014a68 ldrb r3, [ip, r2]                                         |             r3 = *((ip + r2));
    0x08014a6c add r8, ip, r8                                            |             r8 = ip + r8;
    0x08014a70 add r8, r8, 6                                             |             r8 += 6;
    0x08014a74 strb r3, [r4, 0x1e]                                       |             *((r4 + 0x1e)) = r3;
    0x08014a78 sub r0, r3, 0x11                                          |             r0 = r3 - 0x11;
    0x08014a7c cmp r0, 0x11                                              |             
                                                                         |             if (r0 > 0x11) {
                                                                         |                 /* switch table (18 cases) at 0x8014a88 */
    0x08014a80 ldrls pc, [pc, r0, lsl 2]                                 |                 offset_1 = r0 << 2;
                                                                         |                 pc = *((pc + offset_1));
                                                                         |             }
    0x08014a84 b 0x8014d5c                                               |             
                                                                         | label_6:
    0x08014d5c mov r0, sl                                                |             r0 = sl;
    0x08014d60 mov ip, 0                                                 |             
    0x08014d64 mov r2, r4                                                |             r2 = r4;
    0x08014d68 mov r1, r5                                                |             r1 = r5;
    0x08014d6c str ip, [sp]                                              |             *(sp) = ip;
    0x08014d70 stmdaeq r1, {r2, r4, r5, fp, sp}                          |             __asm ("stmdaeq r1, {r2, r4, r5, fp, sp}");
    0x08014d74 mov r0, r6                                                |             r0 = r6;
    0x08014d78 add sp, sp, 0x54                                          |             
    0x08014d7c pop {r4, r5, r6, r7, r8, sb, sl, fp, pc}                  |             
                                                                         |         }
    0x08014d80 ldr r0, [r4, 0xa4]                                        |         r0 = *((r4 + 0xa4));
    0x08014d84 ldrh r3, [r4, 0x98]                                       |         r3 = *((r4 + 0x98));
    0x08014d88 add r3, r0, r3                                            |         r3 = r0 + r3;
    0x08014d8c ldr r1, [r3, 0x18]                                        |         r1 = *((r3 + 0x18));
    0x08014d90 ldr r2, [r3, 0x1c]                                        |         r2 = *((r3 + 0x1c));
    0x08014d94 ldr ip, [r3, 0x20]                                        |         ip = *((r3 + 0x20));
    0x08014d98 eor r1, r1, 0x2fc                                         |         r1 ^= 0x2fc;
    0x08014d9c eor r1, r1, 3                                             |         r1 ^= 3;
    0x08014da0 orr r2, r2, ip                                            |         r2 |= ip;
    0x08014da4 orr r2, r2, r1                                            |         r2 |= r1;
    0x08014da8 ldr r1, [r3, 0x24]                                        |         r1 = *((r3 + 0x24));
    0x08014dac eor r1, r1, 0x1000000                                     |         r1 ^= 0x1000000;
    0x08014db0 orrs r2, r2, r1                                           |         r2 |= r1;
                                                                         |         if (r2 == r2) {
    0x08014db4 ldrbne r2, [r4, 0x1f]                                     |             r2 = *((r4 + 0x1f));
                                                                         |         }
                                                                         |         if (r2 == r2) {
    0x08014db8 orrne r2, r2, 1                                           |             r2 |= 1;
                                                                         |         }
                                                                         |         if (r2 == r2) {
    0x08014dbc strbne r2, [r4, 0x1f]                                     |             *((r4 + 0x1f)) = r2;
                                                                         |         }
    0x08014dc0 cmn r6, 0x3d                                              |         
    0x08014dc4 bne 0x80149a4                                             |         
                                                                         |     }
    0x08014dc8 ldr r1, [r3, 0x18]                                        |     r1 = *((r3 + 0x18));
    0x08014dcc ldr r2, [r3, 0x1c]                                        |     r2 = *((r3 + 0x1c));
    0x08014dd0 ldr ip, [r3, 0x20]                                        |     ip = *((r3 + 0x20));
    0x08014dd4 eor r1, r1, 0x2fc                                         |     r1 ^= 0x2fc;
    0x08014dd8 ldr r3, [r3, 0x24]                                        |     r3 = *((r3 + 0x24));
    0x08014ddc eor r1, r1, 3                                             |     r1 ^= 3;
    0x08014de0 orr r2, r2, ip                                            |     r2 |= ip;
    0x08014de4 orr r2, r2, r1                                            |     r2 |= r1;
    0x08014de8 eor r3, r3, 0x6a000000                                    |     r3 ^= 0x6a000000;
    0x08014dec orrs r2, r2, r3                                           |     r2 |= r3;
                                                                         |     if (r2 != r2) {
    0x08014df0 bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08014df4 ldrh r3, [r4, 0x96]                                       |     r3 = *((r4 + 0x96));
    0x08014df8 ldrb r3, [r0, r3]                                         |     r3 = *((r0 + r3));
    0x08014dfc cmp r3, 0x97                                              |     
                                                                         |     if (r3 != 0x97) {
    0x08014e00 bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
                                                                         | label_2:
    0x08014e04 mov r3, sp                                                |     r3 = sp;
    0x08014e08 bic r4, r3, 0x1fc0                                        |     r4 = BIT_MASK (r3, 0x1fc0);
    0x08014e0c bic r4, r4, 0x3f                                          |     r4 = BIT_MASK (r4, 0x3f);
    0x08014e10 ldr r3, [r4, 4]                                           |     r3 = *((r4 + 4));
    0x08014e14 add r3, r3, 1                                             |     r3++;
    0x08014e18 str r3, [r4, 4]                                           |     *((r4 + 4)) = r3;
    0x08014e1c mov r1, r5                                                |     r1 = r5;
    0x08014e20 mov r0, sl                                                |     r0 = sl;
    0x08014e24 bl 0x800f0c4                                              |     br_multicast_mark_router ();
    0x08014e28 ldr r3, [r4, 4]                                           |     r3 = *((r4 + 4));
    0x08014e2c sub r3, r3, 1                                             |     r3--;
    0x08014e30 str r3, [r4, 4]                                           |     *((r4 + 4)) = r3;
    0x08014e34 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x08014e38 bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08014e3c ldr r3, [r4]                                              |     r3 = *(r4);
    0x08014e40 tst r3, 2                                                 |     
                                                                         |     if ((r3 & 2) == 0) {
    0x08014e44 beq 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08014e48 stmdaeq r3, {r0, r2, r3, r4, r5, r7, r8, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r3, r4, r5, r7, r8, ip, sp}");
    0x08014e4c b 0x80149a4                                               |     goto label_0;
                                                                         | label_7:
    0x08014e50 ldr r1, [r4, 0xa4]                                        |     r1 = *((r4 + 0xa4));
    0x08014e54 ldrh r3, [r4, 0x98]                                       |     r3 = *((r4 + 0x98));
    0x08014e58 add r3, r1, r3                                            |     r3 = r1 + r3;
    0x08014e5c ldr r2, [r3, 0x10]                                        |     r2 = *((r3 + 0x10));
    0x08014e60 bic r0, r2, 0xff000000                                    |     r0 = BIT_MASK (r2, 0xff000000);
    0x08014e64 cmp r0, 0xe0                                              |     
                                                                         |     if (r0 != 0xe0) {
    0x08014e68 beq 0x8015960                                             |         
    0x08014e6c ldrb r3, [r4, 0x1f]                                       |         r3 = *((r4 + 0x1f));
    0x08014e70 orr r3, r3, 1                                             |         r3 |= 1;
    0x08014e74 strb r3, [r4, 0x1f]                                       |         *((r4 + 0x1f)) = r3;
    0x08014e78 b 0x80149a4                                               |         goto label_0;
                                                                         | label_5:
    0x080158e8 ldrh r2, [r4, 0x94]                                       |         r2 = *((r4 + 0x94));
    0x080158ec mov r1, r5                                                |         r1 = r5;
    0x080158f0 mov r0, sl                                                |         r0 = sl;
    0x080158f4 bl 0x800ef10                                              |         br_multicast_err_count ();
    0x080158f8 b 0x80149a8                                               |         goto label_1;
                                                                         |     }
    0x08015960 mov r0, 0xe0                                              |     
    0x08015964 movt r0, 0xd00                                            |     r0 = 0xd0000e0;
    0x08015968 cmp r2, r0                                                |     
                                                                         |     if (r2 == r0) {
    0x0801596c beq 0x8015ad8                                             |         goto label_8;
                                                                         |     }
    0x08015970 mov r0, 0xe0                                              |     
    0x08015974 movt r0, 0x6a00                                           |     r0 = 0x6a0000e0;
    0x08015978 cmp r2, r0                                                |     
                                                                         |     if (r2 != r0) {
    0x0801597c bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08015980 ldrb r3, [r3, 9]                                          |     r3 = *((r3 + 9));
    0x08015984 cmp r3, 2                                                 |     
                                                                         |     if (r3 != 2) {
    0x08015988 bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x0801598c ldrh r3, [r4, 0x96]                                       |     r3 = *((r4 + 0x96));
    0x08015990 ldrb r3, [r1, r3]                                         |     r3 = *((r1 + r3));
    0x08015994 cmp r3, 0x30                                              |     
                                                                         |     if (r3 == 0x30) {
    0x08015998 beq 0x8014e04                                             |         goto label_2;
                                                                         |     }
    0x0801599c b 0x80149a4                                               |     goto label_0;
                                                                         | label_8:
    0x08015ad8 ldrb r3, [r3, 9]                                          |     r3 = *((r3 + 9));
    0x08015adc cmp r3, 0x67                                              |     
                                                                         |     if (r3 != 0x67) {
    0x08015ae0 bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08015ae4 ldrh r3, [r4, 0x96]                                       |     r3 = *((r4 + 0x96));
    0x08015ae8 ldr r2, [r4, 0x54]                                        |     r2 = *((r4 + 0x54));
    0x08015aec add r3, r1, r3                                            |     r3 = r1 + r3;
    0x08015af0 ldr r0, [r4, 0x58]                                        |     r0 = *((r4 + 0x58));
    0x08015af4 ldr r1, [r4, 0xa8]                                        |     r1 = *((r4 + 0xa8));
    0x08015af8 sub r2, r2, r0                                            |     r2 -= r0;
    0x08015afc sub r1, r3, r1                                            |     r1 = r3 - r1;
    0x08015b00 sub r2, r2, r1                                            |     r2 -= r1;
    0x08015b04 cmp r2, 3                                                 |     
                                                                         |     if (r2 > 3) {
    0x08015b08 bgt 0x8015dc8                                             |         goto label_9;
                                                                         |     }
    0x08015b0c cmp r4, 0                                                 |     
                                                                         |     if (r4 == 0) {
    0x08015b10 beq 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08015b14 mov r0, r4                                                |     r0 = r4;
    0x08015b18 add r2, sp, 0x2c                                          |     r2 += var_2ch;
    0x08015b1c mov r3, 4                                                 |     r3 = 4;
    0x08015b20 stmdaeq r3, {r0, r5, sb, ip, sp}                          |     __asm ("stmdaeq r3, {r0, r5, sb, ip, sp}");
    0x08015b24 cmp r0, 0                                                 |     
                                                                         |     if (r0 < 0) {
    0x08015b28 blt 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08015b2c add r3, sp, 0x2c                                          |     r3 += var_2ch;
                                                                         | label_3:
    0x08015b30 ldrb r3, [r3]                                             |     r3 = *(r3);
    0x08015b34 lsr r2, r3, 4                                             |     r2 = r3 >> 4;
    0x08015b38 cmp r2, 2                                                 |     
                                                                         |     if (r2 != 2) {
    0x08015b3c bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08015b40 tst r3, 0xf                                               |     
                                                                         |     if ((r3 & 0xf) != 0) {
    0x08015b44 bne 0x80149a4                                             |         goto label_0;
                                                                         |     }
    0x08015b48 b 0x8014e04                                               |     goto label_2;
                                                                         | label_9:
    0x08015dc8 cmp r3, 0                                                 |     
                                                                         |     if (r3 != 0) {
    0x08015dcc bne 0x8015b30                                             |         goto label_3;
                                                                         |     }
    0x08015dd0 b 0x80149a4                                               |     goto label_0;
                                                                         | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x80123c8 */
                                                                         | #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;
                                                                         |     int32_t var_4h;
                                                                         |     int32_t var_ch;
                                                                         |     r0 = arg1;
                                                                         |     r1 = arg2;
    0x080123c8 push {r4, r5, lr}                                         |     
    0x080123cc stmdaeq r3, {r0, r2, r3, r4, r5, r6, r8, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r3, r4, r5, r6, r8, ip, sp}");
    0x080123d0 stmdaeq r3, {r0, r2, r3, r4, r5, r6, r8, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r3, r4, r5, r6, r8, ip, sp}");
    0x080123d4 sub sp, sp, 0xc                                           |     
    0x080123d8 ldr r5, [r0]                                              |     r5 = *(r0);
    0x080123dc mov r3, sp                                                |     r3 = sp;
    0x080123e0 mov r4, r0                                                |     r4 = r0;
    0x080123e4 bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x080123e8 ldr ip, [r2]                                              |     ip = *(r2);
    0x080123ec bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x080123f0 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x080123f4 add r2, r2, 1                                             |     r2++;
    0x080123f8 str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x080123fc ldrb r3, [r0, 0xdc]                                       |     r3 = *((r0 + 0xdc));
    0x08012400 cmp r3, r1                                                |     
                                                                         |     if (r3 != r1) {
    0x08012404 beq 0x8012424                                             |         
    0x08012408 cmp r1, 3                                                 |         
                                                                         |         if (r1 > 3) {
                                                                         |             /* switch table (4 cases) at 0x8012414 */
    0x0801240c ldrls pc, [pc, r1, lsl 2]                                 |             offset_0 = r1 << 2;
                                                                         |             pc = *((pc + offset_0));
                                                                         |         }
    0x08012410 b 0x801257c                                               |         goto label_1;
                                                                         |     }
    0x08012424 cmp r3, 3                                                 |     
                                                                         |     if (r3 == 3) {
    0x08012428 bne 0x8012454                                             |         
    0x0801242c ldr r1, [r5, 0x164]                                       |         r1 = *((r5 + 0x164));
    0x08012430 add r0, r0, 0xe4                                          |         r0 += 0xe4;
    0x08012434 add r1, ip, r1                                            |         r1 = ip + r1;
    0x08012438 stmdaeq r3, {r0, r2, r3, r6, r7, sb, ip, sp}              |         __asm ("stmdaeq r3, {r0, r2, r3, r6, r7, sb, ip, sp}");
    0x0801243c b 0x8012454                                               |         
                                                                         |     }
    0x08012454 mov r0, 0                                                 |     r0 = 0;
                                                                         | label_0:
    0x08012458 mov r3, sp                                                |     r3 = sp;
    0x0801245c bic r3, r3, 0x1fc0                                        |     r3 = BIT_MASK (r3, 0x1fc0);
    0x08012460 bic r3, r3, 0x3f                                          |     r3 = BIT_MASK (r3, 0x3f);
    0x08012464 ldr r2, [r3, 4]                                           |     r2 = *((r3 + 4));
    0x08012468 sub r2, r2, 1                                             |     r2--;
    0x0801246c str r2, [r3, 4]                                           |     *((r3 + 4)) = r2;
    0x08012470 cmp r2, 0                                                 |     
    0x08012474 beq 0x801255c                                             |     
                                                                         |     while ((r3 & 2) == 0) {
    0x08012478 add sp, sp, 0xc                                           |         
    0x0801247c pop {r4, r5, pc}                                          |         
    0x0801255c ldr r3, [r3]                                              |         r3 = *(r3);
    0x08012560 tst r3, 2                                                 |         
    0x08012564 beq 0x8012478                                             |         
                                                                         |     }
    0x08012568 str r0, [sp, 4]                                           |     var_4h = r0;
    0x0801256c stmdaeq r3, {r0, r2, r3, r4, r5, r7, r8, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r3, r4, r5, r7, r8, ip, sp}");
    0x08012570 ldr r0, [sp, 4]                                           |     r0 = var_4h;
    0x08012574 add sp, sp, 0xc                                           |     
    0x08012578 pop {r4, r5, pc}                                          |     
                                                                         | label_1:
    0x0801257c mvn r0, 0x15                                              |     r0 = ~0x15;
    0x08012580 b 0x8012458                                               |     goto label_0;
                                                                         | }
    ; assembly                                               | /* r2dec pseudo code output */
                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x80046c0 */
                                                             | #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;
    0x080046c0 push {r4, r5, r6, r7, r8, lr}                 |     
    0x080046c4 mov r4, r0                                    |     r4 = r0;
    0x080046c8 mov r5, r1                                    |     r5 = r1;
    0x080046cc ldr r3, [r0, 0x10]                            |     r3 = *((r0 + 0x10));
    0x080046d0 ldrd r6, r7, [r0]                             |     __asm ("ldrd r6, r7, [r0]");
    0x080046d4 tst r3, 0x10                                  |     
                                                             |     if ((r3 & 0x10) == 0) {
    0x080046d8 bne 0x80046e8                                 |         
    0x080046dc ldr r3, [r7, 0x28]                            |         r3 = *((r7 + 0x28));
    0x080046e0 tst r3, 1                                     |         
                                                             |         if ((r3 & 1) != 0) {
    0x080046e4 bne 0x8004774                                 |             goto label_2;
                                                             |         }
                                                             |     }
                                                             | label_1:
    0x080046e8 mov r3, 0                                     |     r3 = 0;
    0x080046ec strb r3, [r5]                                 |     *(r5) = r3;
    0x080046f0 ldr r3, [r6, 8]                               |     r3 = *((r6 + 8));
    0x080046f4 ldr r3, [r3, 0x28]                            |     r3 = *((r3 + 0x28));
    0x080046f8 tst r3, 1                                     |     
    0x080046fc popeq {r4, r5, r6, r7, r8, pc}                |     
    0x08004700 mov r3, sp                                    |     r3 = sp;
    0x08004704 bic r2, r3, 0x1fc0                            |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08004708 bic r2, r2, 0x3f                              |     r2 = BIT_MASK (r2, 0x3f);
    0x0800470c ldr r3, [r2, 4]                               |     r3 = *((r2 + 4));
    0x08004710 add r3, r3, 0x200                             |     r3 += 0x200;
    0x08004714 add r3, r3, 1                                 |     r3++;
    0x08004718 str r3, [r2, 4]                               |     *((r2 + 4)) = r3;
    0x0800471c ldr r3, [r7, 0x28]                            |     r3 = *((r7 + 0x28));
    0x08004720 tst r3, 1                                     |     
    0x08004724 bne 0x8004744                                 |     
                                                             |     while (r3 != 0) {
    0x08004728 ldrb r3, [r4, 0x1d]                           |         r3 = *((r4 + 0x1d));
    0x0800472c cmp r3, 0                                     |         
                                                             |         if (r3 != 0) {
    0x08004730 bne 0x8004794                                 |             goto label_3;
                                                             |         }
                                                             | label_0:
    0x08004734 pop {r4, r5, r6, r7, r8, lr}                  |         
    0x08004738 movw r1, 0x201                                |         r1 = 0x201;
    0x0800473c ldr r0, [pc, 0x70]                            |         r0 = *(0x80047b0);
    0x08004740 stmdaeq r3, {r0, r3, r4, r8, ip, sp}          |         __asm ("stmdaeq r3, {r0, r3, r4, r8, ip, sp}");
    0x08004744 ldrb r3, [r7, 0x13c]                          |         r3 = *((r7 + 0x13c));
    0x08004748 cmp r3, 0                                     |         
    0x0800474c cmpne r3, 6                                   |         __asm ("cmpne r3, 6");
    0x08004750 bne 0x8004728                                 |         
                                                             |     }
    0x08004754 ldrb r3, [r4, 0x1d]                           |     r3 = *((r4 + 0x1d));
    0x08004758 cmp r3, 0                                     |     
                                                             |     if (r3 != 0) {
    0x0800475c bne 0x8004734                                 |         goto label_0;
                                                             |     }
    0x08004760 mov r0, r4                                    |     r0 = r4;
    0x08004764 stmdaeq r0, {r4, r5, r7, sl, pc}              |     __asm ("stmdaeq r0, {r4, r5, r7, sl, pc}");
    0x08004768 mov r3, 1                                     |     r3 = 1;
    0x0800476c strb r3, [r5]                                 |     *(r5) = r3;
    0x08004770 b 0x8004734                                   |     goto label_0;
                                                             | label_2:
    0x08004774 ldrb r3, [r7, 0x13c]                          |     r3 = *((r7 + 0x13c));
    0x08004778 cmp r3, 0                                     |     
    0x0800477c cmpne r3, 6                                   |     __asm ("cmpne r3, 6");
                                                             |     if (r3 != 0) {
    0x08004780 bne 0x80046e8                                 |         goto label_1;
                                                             |     }
    0x08004784 mov r0, r7                                    |     r0 = r7;
    0x08004788 bl 0x8004650                                  |     port_cost ();
    0x0800478c str r0, [r4, 0x38]                            |     *((r4 + 0x38)) = r0;
    0x08004790 b 0x80046e8                                   |     goto label_1;
                                                             | label_3:
    0x08004794 mov r0, r4                                    |     r0 = r4;
    0x08004798 stmdaeq r0, {r3, r4, r6, r7, sl, pc}          |     __asm ("stmdaeq r0, {r3, r4, r6, r7, sl, pc}");
    0x0800479c mov r3, 1                                     |     r3 = 1;
    0x080047a0 strb r3, [r5]                                 |     *(r5) = r3;
    0x080047a4 movw r1, 0x201                                |     r1 = 0x201;
    0x080047a8 ldr r0, [pc, 4]                               |     r0 = sym.br_device_event;
    0x080047ac pop {r4, r5, r6, r7, r8, lr}                  |     
    0x080047b0 stmdaeq r3, {r0, r3, r4, r8, ip, sp}          |     __asm ("stmdaeq r3, {r0, r3, r4, r8, ip, sp}");
    0x080047b4 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-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x80085ac */
                                                                     | #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;
    0x080085ac push {r4, r5, r6, lr}                                 |     
    0x080085b0 mov r5, r0                                            |     r5 = r0;
    0x080085b4 mov r3, sp                                            |     r3 = sp;
    0x080085b8 bic r2, r3, 0x1fc0                                    |     r2 = BIT_MASK (r3, 0x1fc0);
    0x080085bc bic r2, r2, 0x3f                                      |     r2 = BIT_MASK (r2, 0x3f);
    0x080085c0 ldr r3, [r2, 4]                                       |     r3 = *((r2 + 4));
    0x080085c4 add r3, r3, 0x200                                     |     r3 += 0x200;
    0x080085c8 add r3, r3, 1                                         |     r3++;
    0x080085cc str r3, [r2, 4]                                       |     *((r2 + 4)) = r3;
    0x080085d0 ldr r3, [r0]                                          |     r3 = *(r0);
    0x080085d4 cmp r0, r3                                            |     
                                                                     |     if (r0 == r3) {
    0x080085d8 beq 0x8008618                                         |         goto label_1;
                                                                     |     }
    0x080085dc sub r4, r3, 8                                         |     r4 = r3 - 8;
    0x080085e0 b 0x80085f4                                           |     
                                                                     |     while (r3 == 0) {
    0x080085e4 ldr r3, [r4, 8]                                       |         r3 = *((r4 + 8));
    0x080085e8 sub r4, r3, 8                                         |         r4 = r3 - 8;
    0x080085ec cmp r5, r3                                            |         
                                                                     |         if (r5 == r3) {
    0x080085f0 beq 0x8008618                                         |             goto label_1;
                                                                     |         }
                                                                     | label_0:
    0x080085f4 ldrb r3, [r4, 0x1d]                                   |         r3 = *((r4 + 0x1d));
    0x080085f8 cmp r3, 0                                             |         
    0x080085fc beq 0x80085e4                                         |         
                                                                     |     }
    0x08008600 mov r0, r4                                            |     r0 = r4;
    0x08008604 stmdaeq r0, {r3, r4, r6, r7, sl, pc}                  |     __asm ("stmdaeq r0, {r3, r4, r6, r7, sl, pc}");
    0x08008608 ldr r3, [r4, 8]                                       |     r3 = *((r4 + 8));
    0x0800860c sub r4, r3, 8                                         |     r4 = r3 - 8;
    0x08008610 cmp r5, r3                                            |     
                                                                     |     if (r5 != r3) {
    0x08008614 bne 0x80085f4                                         |         goto label_0;
                                                                     |     }
                                                                     | label_1:
    0x08008618 mov r0, r5                                            |     r0 = r5;
    0x0800861c mov r1, 0                                             |     r1 = 0;
    0x08008620 stmdaeq r0, {r4, r5, r8, sl, ip, sp, lr}              |     __asm ("stmdaeq r0, {r4, r5, r8, sl, ip, sp, lr}");
    0x08008624 mov r3, 0                                             |     r3 = 0;
    0x08008628 movw r1, 0x201                                        |     r1 = 0x201;
    0x0800862c strb r3, [r5, 0x119]                                  |     *((r5 + 0x119)) = r3;
    0x08008630 ldr r0, [pc, 0x24]                                    |     r0 = *(0x8008658);
    0x08008634 stmdaeq r3, {r0, r3, r4, r8, ip, sp}                  |     __asm ("stmdaeq r3, {r0, r3, r4, r8, ip, sp}");
    0x08008638 add r0, r5, 0x2f0                                     |     r0 = r5 + 0x2f0;
    0x0800863c stmdaeq r3, {r0, r2, r4, r6, r7, sb, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r4, r6, r7, sb, ip, sp}");
    0x08008640 add r0, r5, 0x318                                     |     r0 = r5 + 0x318;
    0x08008644 stmdaeq r3, {r0, r2, r4, r6, r7, sb, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r4, r6, r7, sb, ip, sp}");
    0x08008648 add r0, r5, 0x304                                     |     r0 = r5 + 0x304;
    0x0800864c stmdaeq r3, {r0, r2, r4, r6, r7, sb, ip, sp}          |     __asm ("stmdaeq r3, {r0, r2, r4, r6, r7, sb, ip, sp}");
    0x08008650 add r0, r5, 0x32c                                     |     r0 = r5 + 0x32c;
    0x08008654 pop {r4, r5, r6, lr}                                  |     
    0x08008658 stmdaeq r3, {r0, r2, r5, r6, sb, ip, sp}              |     __asm ("stmdaeq r3, {r0, r2, r5, r6, sb, ip, sp}");
    0x0800865c 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-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8008ac4 */
                                                                         | #include <stdint.h>
                                                                         |  
                                                                         | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                         |  
    ; (fcn) sym.br_stp_set_bridge_priority ()                            | void br_stp_set_bridge_priority (int32_t arg1) {
                                                                         |     int32_t var_0h;
                                                                         |     r0 = arg1;
    0x08008ac4 push {r4, r5, r6, r7, r8, sb, sl, lr}                     |     
    0x08008ac8 mov r5, r0                                                |     r5 = r0;
    0x08008acc mov r3, sp                                                |     r3 = sp;
    0x08008ad0 bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x08008ad4 bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08008ad8 ldr r3, [r2, 4]                                           |     r3 = *((r2 + 4));
    0x08008adc add r3, r3, 0x200                                         |     r3 += 0x200;
    0x08008ae0 add r3, r3, 1                                             |     r3++;
    0x08008ae4 str r3, [r2, 4]                                           |     *((r2 + 4)) = r3;
    0x08008ae8 add sb, r0, 0x108                                         |     sb = r0 + 0x108;
    0x08008aec add r8, r0, 0x110                                         |     r8 = r0 + 0x110;
    0x08008af0 rev16 r6, r1                                              |     __asm ("rev16 r6, r1");
    0x08008af4 mov r0, r8                                                |     r0 = r8;
    0x08008af8 mov r1, sb                                                |     r1 = sb;
    0x08008afc mov r2, 8                                                 |     r2 = 8;
    0x08008b00 stmdaeq r3, {r0, r2, r3, r5, r7, r8, ip, sp}              |     __asm ("stmdaeq r3, {r0, r2, r3, r5, r7, r8, ip, sp}");
    0x08008b04 ldr r4, [r5]                                              |     r4 = *(r5);
    0x08008b08 mov r7, r0                                                |     r7 = r0;
    0x08008b0c cmp r5, r4                                                |     
                                                                         |     if (r5 == r4) {
    0x08008b10 subne r4, r4, 8                                           |         r4 -= 8;
                                                                         |     }
                                                                         |     if (r5 == r4) {
    0x08008b14 beq 0x8008b60                                             |         goto label_0;
                                                                         |     }
                                                                         |     do {
    0x08008b18 ldrb r3, [r4, 0x1d]                                       |         r3 = *((r4 + 0x1d));
    0x08008b1c cmp r3, 0                                                 |         
                                                                         |         if (r3 != 0) {
    0x08008b20 beq 0x8008b50                                             |             
    0x08008b24 mov r0, r4                                                |             r0 = r4;
    0x08008b28 mov r2, 8                                                 |             r2 = 8;
    0x08008b2c ldr r1, [r0], 0x2e                                        |             r1 = *(r0);
                                                                         |             r0 += 0x2e;
    0x08008b30 add r1, r1, 0x110                                         |             r1 += 0x110;
    0x08008b34 stmdaeq r3, {r0, r2, r3, r5, r7, r8, ip, sp}              |             __asm ("stmdaeq r3, {r0, r2, r3, r5, r7, r8, ip, sp}");
    0x08008b38 cmp r0, 0                                                 |             
                                                                         |             if (r0 != 0) {
    0x08008b3c bne 0x8008b50                                             |                 goto label_1;
                                                                         |             }
    0x08008b40 ldrh r2, [r4, 0x24]                                       |             r2 = *((r4 + 0x24));
    0x08008b44 ldrh r3, [r4, 0x22]                                       |             r3 = *((r4 + 0x22));
    0x08008b48 cmp r2, r3                                                |             
    0x08008b4c strheq r6, [r4, 0x2e]                                     |             __asm ("strheq r6, [r4, 0x2e]");
                                                                         |         }
                                                                         | label_1:
    0x08008b50 ldr r3, [r4, 8]                                           |         r3 = *((r4 + 8));
    0x08008b54 sub r4, r3, 8                                             |         r4 = r3 - 8;
    0x08008b58 cmp r5, r3                                                |         
    0x08008b5c bne 0x8008b18                                             |         
                                                                         |     } while (r5 != r3);
                                                                         | label_0:
    0x08008b60 mov r0, r5                                                |     r0 = r5;
    0x08008b64 strh r6, [r8]                                             |     *(r8) = r6;
    0x08008b68 stmdaeq r0, {r5, r6, r8, sb, ip, sp, lr}                  |     __asm ("stmdaeq r0, {r5, r6, r8, sb, ip, sp, lr}");
    0x08008b6c mov r0, r5                                                |     r0 = r5;
    0x08008b70 stmdaeq r0, {r4, r6, r7, r8, sb, sl, ip, sp, lr}          |     __asm ("stmdaeq r0, {r4, r6, r7, r8, sb, sl, ip, sp, lr}");
    0x08008b74 mov r1, sb                                                |     r1 = sb;
    0x08008b78 mov r0, r8                                                |     r0 = r8;
    0x08008b7c mov r2, 8                                                 |     r2 = 8;
    0x08008b80 stmdaeq r3, {r0, r2, r3, r5, r7, r8, ip, sp}              |     __asm ("stmdaeq r3, {r0, r2, r3, r5, r7, r8, ip, sp}");
    0x08008b84 clz r0, r0                                                |     r0 &= r0;
    0x08008b88 cmp r7, 0                                                 |     
    0x08008b8c lsr r0, r0, 5                                             |     r0 >>= 5;
                                                                         |     if (r7 != 0) {
    0x08008b90 moveq r0, 0                                               |         r0 = 0;
                                                                         |     }
    0x08008b94 cmp r0, 0                                                 |     
                                                                         |     if (r0 == 0) {
    0x08008b98 bne 0x8008bac                                             |         
    0x08008b9c pop {r4, r5, r6, r7, r8, sb, sl, lr}                      |         
    0x08008ba0 movw r1, 0x201                                            |         r1 = 0x201;
    0x08008ba4 ldr r0, [pc, 0x18]                                        |         r0 = *(0x8008bc0);
    0x08008ba8 stmdaeq r3, {r0, r3, r4, r8, ip, sp}                      |         __asm ("stmdaeq r3, {r0, r3, r4, r8, ip, sp}");
                                                                         |     }
    0x08008bac mov r0, r5                                                |     r0 = r5;
    0x08008bb0 stmdaeq r0, {r3, r6, sb, sl, ip, sp, lr}                  |     __asm ("stmdaeq r0, {r3, r6, sb, sl, ip, sp, lr}");
    0x08008bb4 ldr r0, [pc, 8]                                           |     r0 = sym.br_device_event;
    0x08008bb8 pop {r4, r5, r6, r7, r8, sb, sl, lr}                      |     
    0x08008bbc movw r1, 0x201                                            |     r1 = 0x201;
    0x08008bc0 stmdaeq r3, {r0, r3, r4, r8, ip, sp}                      |     __asm ("stmdaeq r3, {r0, r3, r4, r8, ip, sp}");
    0x08008bc4 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-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x801b404 */
                                                 | #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;
    0x0801b404 push {r4, r5, r6, lr}             |     
    0x0801b408 sub r1, r1, 1                     |     r1--;
    0x0801b40c mov r3, 0                         |     r3 = 0;
    0x0801b410 sub sp, sp, 0x20                  |     
    0x0801b414 add r5, r0, 0x540                 |     r5 = r0 + 0x540;
    0x0801b418 strb r3, [sp, 0x13]               |     var_13h = r3;
    0x0801b41c cmp r1, 0x14                      |     
                                                 |     if (r1 > 0x14) {
                                                 |         /* switch table (21 cases) at 0x801b428 */
    0x0801b420 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0801b424 b 0x801b488                       |     
    0x0801b488 mov r4, 0                         |     r4 = 0;
    0x0801b48c mov r0, r4                        |     r0 = r4;
    0x0801b490 add sp, sp, 0x20                  |     
    0x0801b494 pop {r4, r5, r6, pc}              |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8001044 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash ()                         | void jhash (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x08001044 push {r4, r5, lr}                 |     
    0x08001048 movw r4, 0xbeef                   |     
    0x0800104c movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x08001050 add r4, r2, r4                    |     r4 = r2 + r4;
    0x08001054 mov lr, r0                        |     lr = r0;
    0x08001058 add r4, r4, r1                    |     r4 += r1;
    0x0800105c cmp r1, 0xc                       |     
    0x08001060 mov r0, r4                        |     r0 = r4;
    0x08001064 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x08001068 bls 0x80010d8                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0800106c ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x08001070 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x08001074 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x08001078 cmp r1, 0xc                       |         
    0x0800107c ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x08001080 add ip, ip, r0                    |         
    0x08001084 add r3, r3, r5                    |         r3 += r5;
    0x08001088 sub r2, r2, ip                    |         r2 -= ip;
    0x0800108c add r0, r3, ip                    |         r0 = r3 + ip;
    0x08001090 add r2, r2, r4                    |         r2 += r4;
    0x08001094 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x08001098 sub r3, r3, r2                    |         r3 -= r2;
    0x0800109c add ip, r2, r0                    |         
    0x080010a0 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x080010a4 sub r0, r0, r3                    |         r0 -= r3;
    0x080010a8 add r2, r3, ip                    |         r2 = r3 + ip;
    0x080010ac eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x080010b0 sub ip, ip, r3                    |         
    0x080010b4 add r0, r3, r2                    |         r0 = r3 + r2;
    0x080010b8 eor ip, ip, r3, ror 16            |         
    0x080010bc sub r3, r2, ip                    |         r3 = r2 - ip;
    0x080010c0 add r4, ip, r0                    |         r4 = ip + r0;
    0x080010c4 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x080010c8 sub r0, r0, r3                    |         r0 -= r3;
    0x080010cc add r5, r3, r4                    |         r5 = r3 + r4;
    0x080010d0 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x080010d4 bhi 0x800106c                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x080010d8 sub r1, r1, 1                     |     r1--;
    0x080010dc cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x80010e8 */
    0x080010e0 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x080010e4 b 0x80011b0                       |     
    0x080011b0 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x800e83c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_1 ()                       | void jhash_1 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0800e83c push {r4, r5, lr}                 |     
    0x0800e840 movw r4, 0xbeef                   |     
    0x0800e844 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0800e848 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0800e84c mov lr, r0                        |     lr = r0;
    0x0800e850 add r4, r4, r1                    |     r4 += r1;
    0x0800e854 cmp r1, 0xc                       |     
    0x0800e858 mov r0, r4                        |     r0 = r4;
    0x0800e85c mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0800e860 bls 0x800e8d0                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0800e864 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0800e868 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0800e86c ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0800e870 cmp r1, 0xc                       |         
    0x0800e874 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0800e878 add ip, ip, r0                    |         
    0x0800e87c add r3, r3, r5                    |         r3 += r5;
    0x0800e880 sub r2, r2, ip                    |         r2 -= ip;
    0x0800e884 add r0, r3, ip                    |         r0 = r3 + ip;
    0x0800e888 add r2, r2, r4                    |         r2 += r4;
    0x0800e88c eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0800e890 sub r3, r3, r2                    |         r3 -= r2;
    0x0800e894 add ip, r2, r0                    |         
    0x0800e898 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0800e89c sub r0, r0, r3                    |         r0 -= r3;
    0x0800e8a0 add r2, r3, ip                    |         r2 = r3 + ip;
    0x0800e8a4 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0800e8a8 sub ip, ip, r3                    |         
    0x0800e8ac add r0, r3, r2                    |         r0 = r3 + r2;
    0x0800e8b0 eor ip, ip, r3, ror 16            |         
    0x0800e8b4 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0800e8b8 add r4, ip, r0                    |         r4 = ip + r0;
    0x0800e8bc eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0800e8c0 sub r0, r0, r3                    |         r0 -= r3;
    0x0800e8c4 add r5, r3, r4                    |         r5 = r3 + r4;
    0x0800e8c8 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0800e8cc bhi 0x800e864                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0800e8d0 sub r1, r1, 1                     |     r1--;
    0x0800e8d4 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x800e8e0 */
    0x0800e8d8 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0800e8dc b 0x800e9a8                       |     
    0x0800e9a8 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8017bd8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_2 ()                       | void jhash_2 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x08017bd8 push {r4, r5, lr}                 |     
    0x08017bdc movw r4, 0xbeef                   |     
    0x08017be0 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x08017be4 add r4, r2, r4                    |     r4 = r2 + r4;
    0x08017be8 mov lr, r0                        |     lr = r0;
    0x08017bec add r4, r4, r1                    |     r4 += r1;
    0x08017bf0 cmp r1, 0xc                       |     
    0x08017bf4 mov r0, r4                        |     r0 = r4;
    0x08017bf8 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x08017bfc bls 0x8017c6c                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x08017c00 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x08017c04 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x08017c08 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x08017c0c cmp r1, 0xc                       |         
    0x08017c10 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x08017c14 add ip, ip, r0                    |         
    0x08017c18 add r3, r3, r5                    |         r3 += r5;
    0x08017c1c sub r2, r2, ip                    |         r2 -= ip;
    0x08017c20 add r0, r3, ip                    |         r0 = r3 + ip;
    0x08017c24 add r2, r2, r4                    |         r2 += r4;
    0x08017c28 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x08017c2c sub r3, r3, r2                    |         r3 -= r2;
    0x08017c30 add ip, r2, r0                    |         
    0x08017c34 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x08017c38 sub r0, r0, r3                    |         r0 -= r3;
    0x08017c3c add r2, r3, ip                    |         r2 = r3 + ip;
    0x08017c40 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x08017c44 sub ip, ip, r3                    |         
    0x08017c48 add r0, r3, r2                    |         r0 = r3 + r2;
    0x08017c4c eor ip, ip, r3, ror 16            |         
    0x08017c50 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x08017c54 add r4, ip, r0                    |         r4 = ip + r0;
    0x08017c58 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x08017c5c sub r0, r0, r3                    |         r0 -= r3;
    0x08017c60 add r5, r3, r4                    |         r5 = r3 + r4;
    0x08017c64 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x08017c68 bhi 0x8017c00                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x08017c6c sub r1, r1, 1                     |     r1--;
    0x08017c70 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x8017c7c */
    0x08017c74 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x08017c78 b 0x8017d44                       |     
    0x08017d44 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x801b6a8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_3 ()                       | void jhash_3 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0801b6a8 push {r4, r5, lr}                 |     
    0x0801b6ac movw r4, 0xbeef                   |     
    0x0801b6b0 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0801b6b4 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0801b6b8 mov lr, r0                        |     lr = r0;
    0x0801b6bc add r4, r4, r1                    |     r4 += r1;
    0x0801b6c0 cmp r1, 0xc                       |     
    0x0801b6c4 mov r0, r4                        |     r0 = r4;
    0x0801b6c8 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0801b6cc bls 0x801b73c                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0801b6d0 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0801b6d4 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0801b6d8 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0801b6dc cmp r1, 0xc                       |         
    0x0801b6e0 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0801b6e4 add ip, ip, r0                    |         
    0x0801b6e8 add r3, r3, r5                    |         r3 += r5;
    0x0801b6ec sub r2, r2, ip                    |         r2 -= ip;
    0x0801b6f0 add r0, r3, ip                    |         r0 = r3 + ip;
    0x0801b6f4 add r2, r2, r4                    |         r2 += r4;
    0x0801b6f8 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0801b6fc sub r3, r3, r2                    |         r3 -= r2;
    0x0801b700 add ip, r2, r0                    |         
    0x0801b704 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0801b708 sub r0, r0, r3                    |         r0 -= r3;
    0x0801b70c add r2, r3, ip                    |         r2 = r3 + ip;
    0x0801b710 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0801b714 sub ip, ip, r3                    |         
    0x0801b718 add r0, r3, r2                    |         r0 = r3 + r2;
    0x0801b71c eor ip, ip, r3, ror 16            |         
    0x0801b720 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0801b724 add r4, ip, r0                    |         r4 = ip + r0;
    0x0801b728 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0801b72c sub r0, r0, r3                    |         r0 -= r3;
    0x0801b730 add r5, r3, r4                    |         r5 = r3 + r4;
    0x0801b734 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0801b738 bhi 0x801b6d0                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0801b73c sub r1, r1, 1                     |     r1--;
    0x0801b740 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x801b74c */
    0x0801b744 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0801b748 b 0x801b814                       |     
    0x0801b814 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x800e83c */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_1 ()                       | void jhash_1 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0800e83c push {r4, r5, lr}                 |     
    0x0800e840 movw r4, 0xbeef                   |     
    0x0800e844 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0800e848 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0800e84c mov lr, r0                        |     lr = r0;
    0x0800e850 add r4, r4, r1                    |     r4 += r1;
    0x0800e854 cmp r1, 0xc                       |     
    0x0800e858 mov r0, r4                        |     r0 = r4;
    0x0800e85c mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0800e860 bls 0x800e8d0                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0800e864 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0800e868 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0800e86c ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0800e870 cmp r1, 0xc                       |         
    0x0800e874 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0800e878 add ip, ip, r0                    |         
    0x0800e87c add r3, r3, r5                    |         r3 += r5;
    0x0800e880 sub r2, r2, ip                    |         r2 -= ip;
    0x0800e884 add r0, r3, ip                    |         r0 = r3 + ip;
    0x0800e888 add r2, r2, r4                    |         r2 += r4;
    0x0800e88c eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0800e890 sub r3, r3, r2                    |         r3 -= r2;
    0x0800e894 add ip, r2, r0                    |         
    0x0800e898 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0800e89c sub r0, r0, r3                    |         r0 -= r3;
    0x0800e8a0 add r2, r3, ip                    |         r2 = r3 + ip;
    0x0800e8a4 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0800e8a8 sub ip, ip, r3                    |         
    0x0800e8ac add r0, r3, r2                    |         r0 = r3 + r2;
    0x0800e8b0 eor ip, ip, r3, ror 16            |         
    0x0800e8b4 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0800e8b8 add r4, ip, r0                    |         r4 = ip + r0;
    0x0800e8bc eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0800e8c0 sub r0, r0, r3                    |         r0 -= r3;
    0x0800e8c4 add r5, r3, r4                    |         r5 = r3 + r4;
    0x0800e8c8 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0800e8cc bhi 0x800e864                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0800e8d0 sub r1, r1, 1                     |     r1--;
    0x0800e8d4 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x800e8e0 */
    0x0800e8d8 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0800e8dc b 0x800e9a8                       |     
    0x0800e9a8 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8017bd8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_2 ()                       | void jhash_2 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x08017bd8 push {r4, r5, lr}                 |     
    0x08017bdc movw r4, 0xbeef                   |     
    0x08017be0 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x08017be4 add r4, r2, r4                    |     r4 = r2 + r4;
    0x08017be8 mov lr, r0                        |     lr = r0;
    0x08017bec add r4, r4, r1                    |     r4 += r1;
    0x08017bf0 cmp r1, 0xc                       |     
    0x08017bf4 mov r0, r4                        |     r0 = r4;
    0x08017bf8 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x08017bfc bls 0x8017c6c                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x08017c00 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x08017c04 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x08017c08 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x08017c0c cmp r1, 0xc                       |         
    0x08017c10 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x08017c14 add ip, ip, r0                    |         
    0x08017c18 add r3, r3, r5                    |         r3 += r5;
    0x08017c1c sub r2, r2, ip                    |         r2 -= ip;
    0x08017c20 add r0, r3, ip                    |         r0 = r3 + ip;
    0x08017c24 add r2, r2, r4                    |         r2 += r4;
    0x08017c28 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x08017c2c sub r3, r3, r2                    |         r3 -= r2;
    0x08017c30 add ip, r2, r0                    |         
    0x08017c34 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x08017c38 sub r0, r0, r3                    |         r0 -= r3;
    0x08017c3c add r2, r3, ip                    |         r2 = r3 + ip;
    0x08017c40 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x08017c44 sub ip, ip, r3                    |         
    0x08017c48 add r0, r3, r2                    |         r0 = r3 + r2;
    0x08017c4c eor ip, ip, r3, ror 16            |         
    0x08017c50 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x08017c54 add r4, ip, r0                    |         r4 = ip + r0;
    0x08017c58 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x08017c5c sub r0, r0, r3                    |         r0 -= r3;
    0x08017c60 add r5, r3, r4                    |         r5 = r3 + r4;
    0x08017c64 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x08017c68 bhi 0x8017c00                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x08017c6c sub r1, r1, 1                     |     r1--;
    0x08017c70 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x8017c7c */
    0x08017c74 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x08017c78 b 0x8017d44                       |     
    0x08017d44 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                   | /* r2dec pseudo code output */
                                                 | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x801b6a8 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.jhash_3 ()                       | void jhash_3 (int32_t arg1, int32_t arg2) {
                                                 |     r0 = arg1;
                                                 |     r1 = arg2;
    0x0801b6a8 push {r4, r5, lr}                 |     
    0x0801b6ac movw r4, 0xbeef                   |     
    0x0801b6b0 movt r4, 0xdead                   |     r4 = 0xdeadbeef;
    0x0801b6b4 add r4, r2, r4                    |     r4 = r2 + r4;
    0x0801b6b8 mov lr, r0                        |     lr = r0;
    0x0801b6bc add r4, r4, r1                    |     r4 += r1;
    0x0801b6c0 cmp r1, 0xc                       |     
    0x0801b6c4 mov r0, r4                        |     r0 = r4;
    0x0801b6c8 mov r5, r4                        |     r5 = r4;
                                                 |     if (r1 < 0xc) {
    0x0801b6cc bls 0x801b73c                     |         goto label_0;
                                                 |     }
                                                 |     do {
    0x0801b6d0 ldr ip, [lr, 8]                   |         ip = *((lr + 8));
    0x0801b6d4 sub r1, r1, 0xc                   |         r1 -= 0xc;
    0x0801b6d8 ldr r3, [lr, 4]                   |         r3 = *((lr + 4));
    0x0801b6dc cmp r1, 0xc                       |         
    0x0801b6e0 ldr r2, [lr], 0xc                 |         r2 = *(lr);
                                                 |         lr += 0xc;
    0x0801b6e4 add ip, ip, r0                    |         
    0x0801b6e8 add r3, r3, r5                    |         r3 += r5;
    0x0801b6ec sub r2, r2, ip                    |         r2 -= ip;
    0x0801b6f0 add r0, r3, ip                    |         r0 = r3 + ip;
    0x0801b6f4 add r2, r2, r4                    |         r2 += r4;
    0x0801b6f8 eor r2, r2, ip, ror 28            |         r2 ^= (ip >>> 28);
    0x0801b6fc sub r3, r3, r2                    |         r3 -= r2;
    0x0801b700 add ip, r2, r0                    |         
    0x0801b704 eor r3, r3, r2, ror 26            |         r3 ^= (r2 >>> 26);
    0x0801b708 sub r0, r0, r3                    |         r0 -= r3;
    0x0801b70c add r2, r3, ip                    |         r2 = r3 + ip;
    0x0801b710 eor r3, r0, r3, ror 24            |         r3 = r0 ^ (r3 >>> 24);
    0x0801b714 sub ip, ip, r3                    |         
    0x0801b718 add r0, r3, r2                    |         r0 = r3 + r2;
    0x0801b71c eor ip, ip, r3, ror 16            |         
    0x0801b720 sub r3, r2, ip                    |         r3 = r2 - ip;
    0x0801b724 add r4, ip, r0                    |         r4 = ip + r0;
    0x0801b728 eor r3, r3, ip, ror 13            |         r3 ^= (ip >>> 13);
    0x0801b72c sub r0, r0, r3                    |         r0 -= r3;
    0x0801b730 add r5, r3, r4                    |         r5 = r3 + r4;
    0x0801b734 eor r0, r0, r3, ror 28            |         r0 ^= (r3 >>> 28);
    0x0801b738 bhi 0x801b6d0                     |         
                                                 |     } while (r1 > 0xc);
                                                 | label_0:
    0x0801b73c sub r1, r1, 1                     |     r1--;
    0x0801b740 cmp r1, 0xb                       |     
                                                 |     if (r1 > 0xb) {
                                                 |         /* switch table (12 cases) at 0x801b74c */
    0x0801b744 ldrls pc, [pc, r1, lsl 2]         |         offset_0 = r1 << 2;
                                                 |         pc = *((pc + offset_0));
                                                 |     }
    0x0801b748 b 0x801b814                       |     
    0x0801b814 pop {r4, r5, pc}                  |     
                                                 | }
    ; assembly                                                           | /* r2dec pseudo code output */
                                                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis9/kernel/net/bridge/bridge.ko @ 0x8006210 */
                                                                         | #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;
    0x08006210 push {r4, r5, r6, r7, r8, lr}                             |     
    0x08006214 mov r4, r0                                                |     r4 = r0;
    0x08006218 add r6, r0, 0x540                                         |     r6 = r0 + 0x540;
    0x0800621c sub sp, sp, 0x58                                          |     
    0x08006220 ldr r1, [r1, 0x10]                                        |     r1 = *((r1 + 0x10));
    0x08006224 mov r3, sp                                                |     r3 = sp;
    0x08006228 bic r2, r3, 0x1fc0                                        |     r2 = BIT_MASK (r3, 0x1fc0);
    0x0800622c bic r2, r2, 0x3f                                          |     r2 = BIT_MASK (r2, 0x3f);
    0x08006230 ldr r3, [r2, 8]                                           |     r3 = *((r2 + 8));
    0x08006234 adds r0, r1, 0x10                                         |     r0 = r1 + 0x10;
    0x08006238 sbcslo r0, r0, r3                                         |     __asm ("sbcslo r0, r0, r3");
                                                                         |     if (r0 >= r1) {
    0x0800623c movlo r3, 0                                               |         r3 = 0;
                                                                         |     }
    0x08006240 cmp r3, 0                                                 |     
                                                                         |     if (r3 == 0) {
    0x08006244 bne 0x80063ec                                             |         
    0x08006248 mrc p15, 0, r5, c3, c0, 0                                 |         __asm ("mrc p15, 0, r5, c3, c0, 0");
    0x0800624c bic r3, r5, 0xc                                           |         r3 = BIT_MASK (r5, 0xc);
    0x08006250 orr r3, r3, 4                                             |         r3 |= 4;
    0x08006254 mcr p15, 0, r3, c3, c0, 0                                 |         __asm ("mcr p15, 0, r3, c3, c0, 0");
    0x08006258 isb sy                                                    |         __asm ("isb sy");
    0x0800625c mov r2, 0x10                                              |         r2 = 0x10;
    0x08006260 mov r0, sp                                                |         r0 = sp;
    0x08006264 stmdaeq r3, {r0, r2, r3, r4, r5, r7, sb, ip, sp}          |         __asm ("stmdaeq r3, {r0, r2, r3, r4, r5, r7, sb, ip, sp}");
    0x08006268 mcr p15, 0, r5, c3, c0, 0                                 |         __asm ("mcr p15, 0, r5, c3, c0, 0");
    0x0800626c isb sy                                                    |         __asm ("isb sy");
    0x08006270 cmp r0, 0                                                 |         
                                                                         |         if (r0 != 0) {
    0x08006274 bne 0x80063ec                                             |             goto label_0;
                                                                         |         }
    0x08006278 ldr r2, [sp]                                              |         r2 = *(sp);
    0x0800627c sub r3, r2, 4                                             |         r3 = r2 - 4;
    0x08006280 cmp r3, 0xe                                               |         
                                                                         |         if (r3 > 0xe) {
                                                                         |             /* switch table (15 cases) at 0x800628c */
    0x08006284 ldrls pc, [pc, r3, lsl 2]                                 |             offset_0 = r3 << 2;
                                                                         |             pc = *((pc + offset_0));
                                                                         |         }
    0x08006288 b 0x8006844                                               |         goto label_1;
                                                                         |     }
                                                                         | label_0:
    0x080063ec mvn r5, 0xd                                               |     r5 = ~0xd;
                                                                         |     do {
    0x080063f0 mov r0, r5                                                |         r0 = r5;
    0x080063f4 add sp, sp, 0x58                                          |         
    0x080063f8 pop {r4, r5, r6, r7, r8, pc}                              |         
                                                                         | label_1:
    0x08006844 mvn r5, 0x5e                                              |         r5 = ~0x5e;
    0x08006848 b 0x80063f0                                               |         
                                                                         |     } while (1);
                                                                         | }

[*] Function fprintf used 1 times bridge.ko