[*] Binary protection state of br_netfilter.ko

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


[*] Function popen tear down of br_netfilter.ko

    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/bridge/br_netfilter.ko @ 0x800189c */
                                                                             | #include <stdint.h>
                                                                             |  
    ; (fcn) sym.br_nf_forward_ip ()                                          | uint32_t br_nf_forward_ip (int32_t arg2) {
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     r1 = arg2;
    0x0800189c ldrb r3, [r1, 0x63]                                           |     r3 = *((r1 + 0x63));
    0x080018a0 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x080018a4 beq 0x8001a6c                                                 |         goto label_11;
                                                                             |     }
    0x080018a8 push {r4, r5, r6, r7, r8, sb, sl, lr}                         |     
    0x080018ac mov r5, r2                                                    |     r5 = r2;
    0x080018b0 mov r4, r1                                                    |     r4 = r1;
    0x080018b4 ldr r3, [r1, 0xb4]                                            |     r3 = *((r1 + 0xb4));
    0x080018b8 sub sp, sp, 0x20                                              |     
    0x080018bc ldrb r2, [r3, 4]                                              |     r2 = *((r3 + 4));
    0x080018c0 add r3, r3, r2, lsl 3                                         |     r3 += (r2 << 3);
    0x080018c4 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x080018c8 beq 0x8001a60                                                 |         goto label_12;
                                                                             |     }
    0x080018cc mov r0, r1                                                    |     r0 = r1;
    0x080018d0 mov r1, 0                                                     |     r1 = 0;
    0x080018d4 stmdaeq r0, {r0, r2, r3, r4, r5, r7, ip, lr}                  |     __asm ("stmdaeq r0, {r0, r2, r3, r4, r5, r7, ip, lr}");
    0x080018d8 cmp r0, 0                                                     |     
                                                                             |     if (r0 == 0) {
    0x080018dc beq 0x8001a54                                                 |         goto label_5;
                                                                             |     }
    0x080018e0 ldrb r3, [r4, 0x63]                                           |     r3 = *((r4 + 0x63));
    0x080018e4 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x080018e8 beq 0x8001a54                                                 |         goto label_5;
                                                                             |     }
    0x080018ec ldr r3, [r4, 0xb4]                                            |     r3 = *((r4 + 0xb4));
    0x080018f0 ldrb r2, [r3, 4]                                              |     r2 = *((r3 + 4));
    0x080018f4 adds r7, r3, r2, lsl 3                                        |     r7 = r3 + (r2 << 3);
                                                                             |     if (r7 == r3) {
    0x080018f8 beq 0x8001a54                                                 |         goto label_5;
                                                                             |     }
    0x080018fc ldr r3, [r5, 0xc]                                             |     r3 = *((r5 + 0xc));
    0x08001900 ldr r3, [r3, 0x1e8]                                           |     r3 = *((r3 + 0x1e8));
    0x08001904 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08001908 beq 0x8001a54                                                 |         goto label_5;
                                                                             |     }
    0x0800190c ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08001910 ldr r8, [r3, 8]                                               |     r8 = *((r3 + 8));
    0x08001914 cmp r8, 0                                                     |     
                                                                             |     if (r8 == 0) {
    0x08001918 beq 0x8001a54                                                 |         goto label_5;
                                                                             |     }
    0x0800191c ldrb r3, [r4, 0x66]                                           |     r3 = *((r4 + 0x66));
    0x08001920 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08001924 bne 0x8001934                                                 |         
    0x08001928 ldrh r3, [r4, 0x94]                                           |         r3 = *((r4 + 0x94));
    0x0800192c cmp r3, 8                                                     |         
                                                                             |         if (r3 == 8) {
    0x08001930 beq 0x8001ac4                                                 |             goto label_13;
                                                                             |         }
                                                                             |     }
    0x08001934 ldr sl, [r5, 0x14]                                            |     sl = *((r5 + 0x14));
    0x08001938 stmdaeq r0, {r4, r6, r8, ip, sp}                              |     __asm ("stmdaeq r0, {r4, r6, r8, ip, sp}");
    0x0800193c stmdaeq r0, {r4, r6, r8, ip, sp}                              |     __asm ("stmdaeq r0, {r4, r6, r8, ip, sp}");
    0x08001940 ldr sb, [r6]                                                  |     sb = *(r6);
    0x08001944 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08001948 ldr r3, [sl, 0x6d8]                                           |     r3 = *((sl + 0x6d8));
    0x0800194c ldr sb, [r3, sb, lsl 2]                                       |     offset_0 = sb << 2;
                                                                             |     sb = *((r3 + offset_0));
    0x08001950 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08001954 ldrb r3, [r4, 0x66]                                           |     r3 = *((r4 + 0x66));
    0x08001958 tst r3, 1                                                     |     
    0x0800195c ldrh r3, [r4, 0x94]                                           |     r3 = *((r4 + 0x94));
                                                                             |     if ((r3 & 1) == 0) {
    0x08001960 movne r2, r3                                                  |         r2 = r3;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x08001964 bne 0x8001a84                                                 |         goto label_14;
                                                                             |     }
    0x08001968 cmp r3, 0x81                                                  |     
    0x0800196c beq 0x8001a74                                                 |     
                                                                             |     while (r2 != 8) {
                                                                             | label_0:
    0x08001970 ldr sl, [r5, 0x14]                                            |         sl = *((r5 + 0x14));
    0x08001974 ldr sb, [r6]                                                  |         sb = *(r6);
    0x08001978 stmdaeq r0, {r0, r2, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x0800197c ldr r3, [sl, 0x6d8]                                           |         r3 = *((sl + 0x6d8));
    0x08001980 ldr sb, [r3, sb, lsl 2]                                       |         offset_1 = sb << 2;
                                                                             |         sb = *((r3 + offset_1));
    0x08001984 stmdaeq r0, {r0, r3, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08001988 ldrh r3, [r4, 0x94]                                           |         r3 = *((r4 + 0x94));
    0x0800198c movw r2, 0x6488                                               |         r2 = 0x6488;
    0x08001990 cmp r3, r2                                                    |         
                                                                             |         if (r3 == r2) {
    0x08001994 beq 0x8001ca4                                                 |             goto label_15;
                                                                             |         }
    0x08001998 movw r1, 0xdd86                                               |         r1 = 0xdd86;
    0x0800199c sub r3, r3, r1                                                |         r3 -= r1;
    0x080019a0 clz r3, r3                                                    |         r3 &= r3;
    0x080019a4 ldrb r2, [r4, 0x66]                                           |         r2 = *((r4 + 0x66));
    0x080019a8 lsr r3, r3, 5                                                 |         r3 >>= 5;
    0x080019ac bics r3, r3, r2                                               |         __asm ("bics r3, r3, r2");
                                                                             |         if (r3 == r2) {
    0x080019b0 movne sb, 0xa                                                 |             sb = 0xa;
                                                                             |         }
                                                                             |         if (r3 != r2) {
    0x080019b4 bne 0x8001ac8                                                 |             goto label_16;
                                                                             |         }
                                                                             | label_7:
    0x080019b8 ldr sl, [r5, 0x14]                                            |         sl = *((r5 + 0x14));
    0x080019bc ldr sb, [r6]                                                  |         sb = *(r6);
    0x080019c0 stmdaeq r0, {r0, r2, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x080019c4 ldr r3, [sl, 0x6d8]                                           |         r3 = *((sl + 0x6d8));
    0x080019c8 ldr sb, [r3, sb, lsl 2]                                       |         offset_2 = sb << 2;
                                                                             |         sb = *((r3 + offset_2));
    0x080019cc stmdaeq r0, {r0, r3, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x080019d0 ldrb r3, [r4, 0x66]                                           |         r3 = *((r4 + 0x66));
    0x080019d4 tst r3, 1                                                     |         
    0x080019d8 ldrh r3, [r4, 0x94]                                           |         r3 = *((r4 + 0x94));
                                                                             |         if ((r3 & 1) == 0) {
    0x080019dc movne r1, r3                                                  |             r1 = r3;
                                                                             |         }
                                                                             |         if ((r3 & 1) != 0) {
    0x080019e0 bne 0x8001ce0                                                 |             goto label_17;
                                                                             |         }
    0x080019e4 cmp r3, 0x81                                                  |         
                                                                             |         if (r3 == 0x81) {
    0x080019e8 beq 0x8001cd0                                                 |             goto label_18;
                                                                             |         }
                                                                             | label_9:
    0x080019ec ldr sb, [r5, 0x14]                                            |         sb = *((r5 + 0x14));
    0x080019f0 ldr r6, [r6]                                                  |         r6 = *(r6);
    0x080019f4 stmdaeq r0, {r0, r2, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x080019f8 ldr r3, [sb, 0x6d8]                                           |         r3 = *((sb + 0x6d8));
    0x080019fc ldr r6, [r3, r6, lsl 2]                                       |         offset_3 = r6 << 2;
                                                                             |         r6 = *((r3 + offset_3));
    0x08001a00 stmdaeq r0, {r0, r3, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08001a04 ldrh r2, [r4, 0x94]                                           |         r2 = *((r4 + 0x94));
    0x08001a08 movw r3, 0x6488                                               |         r3 = 0x6488;
    0x08001a0c cmp r2, r3                                                    |         
                                                                             |         if (r2 == r3) {
    0x08001a10 bne 0x8001a60                                                 |             
    0x08001a14 ldrh r2, [r4, 0x9a]                                           |             r2 = *((r4 + 0x9a));
    0x08001a18 ldr r3, [r4, 0xa4]                                            |             r3 = *((r4 + 0xa4));
    0x08001a1c add r3, r3, r2                                                |             r3 += r2;
    0x08001a20 ldrh r3, [r3, 0x14]                                           |             r3 = *((r3 + 0x14));
    0x08001a24 cmp r3, 0x5700                                                |             
                                                                             |             if (r3 != 0x5700) {
    0x08001a28 bne 0x8001a60                                                 |                 goto label_12;
                                                                             |             }
    0x08001a2c ldr r3, [r6, 0x18]                                            |             r3 = *((r6 + 0x18));
    0x08001a30 cmp r3, 0                                                     |             
                                                                             |             if (r3 == 0) {
    0x08001a34 beq 0x8001a60                                                 |                 goto label_12;
                                                                             |             }
    0x08001a38 mov sb, 0xa                                                   |             sb = 0xa;
    0x08001a3c b 0x8001ab8                                                   |             goto label_8;
                                                                             | label_1:
    0x08001a40 ldr r0, [r5, 0x14]                                            |             r0 = *((r5 + 0x14));
    0x08001a44 mov r1, r4                                                    |             r1 = r4;
    0x08001a48 stmdaeq r0, {r2, r4, r5, r6, r8, sb, sl, sp}                  |             __asm ("stmdaeq r0, {r2, r4, r5, r6, r8, sb, sl, sp}");
    0x08001a4c cmp r0, 0                                                     |             
                                                                             |             if (r0 == 0) {
    0x08001a50 beq 0x8001bf4                                                 |                 goto label_19;
                                                                             |             }
                                                                             | label_5:
    0x08001a54 mov r0, 0                                                     |             r0 = 0;
    0x08001a58 add sp, sp, 0x20                                              |             
    0x08001a5c pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |             
                                                                             |         }
                                                                             | label_12:
    0x08001a60 mov r0, 1                                                     |         r0 = 1;
    0x08001a64 add sp, sp, 0x20                                              |         
    0x08001a68 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |         
                                                                             | label_11:
    0x08001a6c mov r0, 1                                                     |         r0 = 1;
    0x08001a70 bx lr                                                         |         return r0;
    0x08001a74 ldrh r1, [r4, 0x9a]                                           |         r1 = *((r4 + 0x9a));
    0x08001a78 ldr r2, [r4, 0xa4]                                            |         r2 = *((r4 + 0xa4));
    0x08001a7c add r2, r2, r1                                                |         r2 += r1;
    0x08001a80 ldrh r2, [r2, 0x10]                                           |         r2 = *((r2 + 0x10));
                                                                             | label_14:
    0x08001a84 cmp r2, 8                                                     |         
    0x08001a88 bne 0x8001970                                                 |         
                                                                             |     }
    0x08001a8c ldr r2, [sb, 0x14]                                            |     r2 = *((sb + 0x14));
    0x08001a90 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08001a94 beq 0x8001970                                                 |         goto label_0;
                                                                             |     }
    0x08001a98 mov sb, 2                                                     |     sb = 2;
                                                                             | label_10:
    0x08001a9c cmp r3, 0x81                                                  |     
                                                                             |     if (r3 != 0x81) {
    0x08001aa0 moveq r6, 4                                                   |         r6 = 4;
                                                                             |     }
                                                                             |     if (r3 != 0x81) {
    0x08001aa4 moveq r1, r6                                                  |         r1 = r6;
                                                                             |     }
                                                                             |     if (r3 != 0x81) {
    0x08001aa8 beq 0x8001ad0                                                 |         
    0x08001aac movw r2, 0x6488                                               |         r2 = 0x6488;
    0x08001ab0 cmp r3, r2                                                    |         
                                                                             |         if (r3 == r2) {
    0x08001ab4 bne 0x8001ac8                                                 |             
                                                                             | label_8:
    0x08001ab8 mov r6, 8                                                     |             r6 = 8;
    0x08001abc mov r1, r6                                                    |             r1 = r6;
    0x08001ac0 b 0x8001ad0                                                   |             goto label_20;
                                                                             | label_13:
    0x08001ac4 mov sb, 2                                                     |             sb = 2;
                                                                             |         }
                                                                             | label_16:
    0x08001ac8 mov r6, 0                                                     |         r6 = 0;
    0x08001acc mov r1, r6                                                    |         r1 = r6;
                                                                             |     }
                                                                             | label_20:
    0x08001ad0 mov r0, r4                                                    |     r0 = r4;
    0x08001ad4 stmdaeq r0, {r0, r2, r5, r7, ip, lr}                          |     __asm ("stmdaeq r0, {r0, r2, r5, r7, ip, lr}");
    0x08001ad8 ldrb r3, [r4, 0x64]                                           |     r3 = *((r4 + 0x64));
    0x08001adc ldrh r2, [r4, 0x98]                                           |     r2 = *((r4 + 0x98));
    0x08001ae0 add r6, r6, r2                                                |     r6 += r2;
    0x08001ae4 and r2, r3, 7                                                 |     r2 = r3 & 7;
    0x08001ae8 cmp r2, 3                                                     |     
    0x08001aec strh r6, [r4, 0x98]                                           |     *((r4 + 0x98)) = r6;
    0x08001af0 bfceq r3, 0, 3                                                |     __asm ("bfceq r3, 0, 3");
                                                                             |     if (r2 != 3) {
    0x08001af4 strbeq r3, [r4, 0x64]                                         |         *((r4 + 0x64)) = r3;
                                                                             |     }
                                                                             |     if (r2 != 3) {
    0x08001af8 ldrbeq r3, [r7, 1]                                            |         r3 = *((r7 + 1));
                                                                             |     }
                                                                             |     if (r2 != 3) {
    0x08001afc orreq r3, r3, 1                                               |         r3 |= 1;
                                                                             |     }
                                                                             |     if (r2 != 3) {
    0x08001b00 strbeq r3, [r7, 1]                                            |         *((r7 + 1)) = r3;
                                                                             |     }
    0x08001b04 cmp sb, 2                                                     |     
                                                                             |     if (sb == 2) {
    0x08001b08 beq 0x8001c34                                                 |         goto label_21;
                                                                             |     }
    0x08001b0c cmp sb, 0xa                                                   |     
                                                                             |     if (sb == 0xa) {
    0x08001b10 beq 0x8001a40                                                 |         goto label_1;
                                                                             |     }
    0x08001b14 ldr r3, [r4, 8]                                               |     r3 = *((r4 + 8));
    0x08001b18 mov r0, r4                                                    |     r0 = r4;
    0x08001b1c str r3, [r7, 8]                                               |     *((r7 + 8)) = r3;
    0x08001b20 movw r3, 0xdd86                                               |     
    0x08001b24 movt r3, 0xffff                                               |     r3 = 0xffffdd86;
    0x08001b28 strh r3, [r4, 0x94]                                           |     *((r4 + 0x94)) = r3;
    0x08001b2c ldr r6, [r5, 0x14]                                            |     r6 = *((r5 + 0x14));
    0x08001b30 ldr r1, [r5, 8]                                               |     r1 = *((r5 + 8));
    0x08001b34 mov r2, r6                                                    |     r2 = r6;
    0x08001b38 bl 0x8000070                                                  |     r0 = brnf_get_logical_dev ();
    0x08001b3c mov r5, r0                                                    |     r5 = r0;
    0x08001b40 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08001b44 sub r3, sb, 3                                                 |     r3 = sb - 3;
    0x08001b48 cmp r3, 4                                                     |     
                                                                             |     if (r3 > 4) {
                                                                             |         /* switch table (5 cases) at 0x8001b54 */
    0x08001b4c ldrls pc, [pc, r3, lsl 2]                                     |         offset_4 = r3 << 2;
                                                                             |         pc = *((pc + offset_4));
                                                                             |     }
    0x08001b50 b 0x8001b68                                                   |     
    0x08001b68 stmdaeq r0, {r7, r8, ip, sp}                                  |     __asm ("stmdaeq r0, {r7, r8, ip, sp}");
    0x08001b6c stmdaeq r0, {r7, r8, ip, sp}                                  |     __asm ("stmdaeq r0, {r7, r8, ip, sp}");
    0x08001b70 ldrb r3, [r2, 1]                                              |     r3 = *((r2 + 1));
    0x08001b74 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08001b78 beq 0x8001c84                                                 |         goto label_22;
                                                                             |     }
                                                                             |     do {
                                                                             | label_6:
    0x08001b7c stmdaeq r0, {r0, r3, r6, ip, lr}                              |         __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
                                                                             | label_3:
    0x08001b80 mov r2, r4                                                    |         r2 = r4;
    0x08001b84 mov r0, r6                                                    |         r0 = r6;
    0x08001b88 mov r1, 0                                                     |         r1 = 0;
    0x08001b8c bl 0x8001460                                                  |         br_nf_forward_finish ();
                                                                             | label_2:
    0x08001b90 mov r0, 2                                                     |         r0 = 2;
    0x08001b94 add sp, sp, 0x20                                              |         
    0x08001b98 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |         
                                                                             | label_4:
    0x08001ba0 cmp r2, 0                                                     |         
    0x08001ba4 beq 0x8001b7c                                                 |         
                                                                             |     } while (r2 == 0);
    0x08001ba8 mov r3, 0                                                     |     r3 = 0;
    0x08001bac add r1, sp, 4                                                 |     r1 += var_4h;
    0x08001bb0 mov r0, r4                                                    |     r0 = r4;
    0x08001bb4 str r5, [sp, 0xc]                                             |     var_ch = r5;
    0x08001bb8 str r3, [sp, 0x14]                                            |     var_14h = r3;
    0x08001bbc mov r5, 2                                                     |     r5 = 2;
    0x08001bc0 strb sb, [sp, 8]                                              |     var_8h = sb;
    0x08001bc4 stmdaeq r0, {r5, r6, sl, ip}                                  |     __asm ("stmdaeq r0, {r5, r6, sl, ip}");
    0x08001bc8 stmdaeq r0, {r5, r6, sl, ip}                                  |     __asm ("stmdaeq r0, {r5, r6, sl, ip}");
    0x08001bcc str r8, [sp, 0x10]                                            |     var_10h = r8;
    0x08001bd0 str ip, [sp, 0x1c]                                            |     var_1ch = ip;
    0x08001bd4 str r6, [sp, 0x18]                                            |     var_18h = r6;
    0x08001bd8 str r5, [sp, 4]                                               |     var_4h = r5;
    0x08001bdc stmdaeq r0, {r0, r4, r5, r7, ip, lr}                          |     __asm ("stmdaeq r0, {r0, r4, r5, r7, ip, lr}");
    0x08001be0 mov r7, r0                                                    |     r7 = r0;
    0x08001be4 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08001be8 cmp r7, 1                                                     |     
                                                                             |     if (r7 != 1) {
    0x08001bec bne 0x8001b90                                                 |         goto label_2;
                                                                             |     }
    0x08001bf0 b 0x8001b80                                                   |     goto label_3;
                                                                             | label_19:
    0x08001bf4 ldrh r3, [r7, 2]                                              |     r3 = *((r7 + 2));
    0x08001bf8 mov r0, r4                                                    |     r0 = r4;
    0x08001bfc strh r3, [r4, 0x2a]                                           |     *((r4 + 0x2a)) = r3;
    0x08001c00 ldr r3, [r4, 8]                                               |     r3 = *((r4 + 8));
    0x08001c04 str r3, [r7, 8]                                               |     *((r7 + 8)) = r3;
    0x08001c08 movw r3, 0xdd86                                               |     
    0x08001c0c movt r3, 0xffff                                               |     r3 = 0xffffdd86;
    0x08001c10 strh r3, [r4, 0x94]                                           |     *((r4 + 0x94)) = r3;
    0x08001c14 ldr r6, [r5, 0x14]                                            |     r6 = *((r5 + 0x14));
    0x08001c18 ldr r1, [r5, 8]                                               |     r1 = *((r5 + 8));
    0x08001c1c mov r2, r6                                                    |     r2 = r6;
    0x08001c20 bl 0x8000070                                                  |     r0 = brnf_get_logical_dev ();
    0x08001c24 mov r5, r0                                                    |     r5 = r0;
    0x08001c28 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08001c2c ldr r2, [r6, 0x574]                                           |     r2 = *((r6 + 0x574));
    0x08001c30 b 0x8001ba0                                                   |     goto label_4;
                                                                             | label_21:
    0x08001c34 ldr r0, [r5, 0x14]                                            |     r0 = *((r5 + 0x14));
    0x08001c38 mov r1, r4                                                    |     r1 = r4;
    0x08001c3c bl 0x80004fc                                                  |     r0 = br_validate_ipv4 ();
    0x08001c40 cmp r0, 0                                                     |     
                                                                             |     if (r0 != 0) {
    0x08001c44 bne 0x8001a54                                                 |         goto label_5;
                                                                             |     }
    0x08001c48 ldrh r3, [r7, 2]                                              |     r3 = *((r7 + 2));
    0x08001c4c mov r0, r4                                                    |     r0 = r4;
    0x08001c50 strh r3, [r4, 0x2e]                                           |     *((r4 + 0x2e)) = r3;
    0x08001c54 ldr r3, [r4, 8]                                               |     r3 = *((r4 + 8));
    0x08001c58 str r3, [r7, 8]                                               |     *((r7 + 8)) = r3;
    0x08001c5c mov r3, 8                                                     |     r3 = 8;
    0x08001c60 strh r3, [r4, 0x94]                                           |     *((r4 + 0x94)) = r3;
    0x08001c64 ldr r6, [r5, 0x14]                                            |     r6 = *((r5 + 0x14));
    0x08001c68 ldr r1, [r5, 8]                                               |     r1 = *((r5 + 8));
    0x08001c6c mov r2, r6                                                    |     r2 = r6;
    0x08001c70 bl 0x8000070                                                  |     r0 = brnf_get_logical_dev ();
    0x08001c74 mov r5, r0                                                    |     r5 = r0;
    0x08001c78 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08001c7c ldr r2, [r6, 0x560]                                           |     r2 = *((r6 + 0x560));
    0x08001c80 b 0x8001ba0                                                   |     goto label_4;
                                                                             | label_22:
    0x08001c84 mov r1, 1                                                     |     r1 = 1;
    0x08001c88 stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}");
    0x08001c8c stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}");
    0x08001c90 strb r1, [r2, 1]                                              |     *((r2 + 1)) = r1;
    0x08001c94 mov r2, 9                                                     |     r2 = 9;
    0x08001c98 mov r1, 0xf6                                                  |     r1 = 0xf6;
    0x08001c9c stmdaeq r0, {r0, r3, r4, r6, ip, lr}                          |     __asm ("stmdaeq r0, {r0, r3, r4, r6, ip, lr}");
    0x08001ca0 b 0x8001b7c                                                   |     goto label_6;
                                                                             | label_15:
    0x08001ca4 ldrh r2, [r4, 0x9a]                                           |     r2 = *((r4 + 0x9a));
    0x08001ca8 ldr r3, [r4, 0xa4]                                            |     r3 = *((r4 + 0xa4));
    0x08001cac add r3, r3, r2                                                |     r3 += r2;
    0x08001cb0 ldrh r3, [r3, 0x14]                                           |     r3 = *((r3 + 0x14));
    0x08001cb4 cmp r3, 0x2100                                                |     
                                                                             |     if (r3 != 0x2100) {
    0x08001cb8 bne 0x80019b8                                                 |         goto label_7;
                                                                             |     }
    0x08001cbc ldr r3, [sb, 0x18]                                            |     r3 = *((sb + 0x18));
    0x08001cc0 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08001cc4 beq 0x80019b8                                                 |         goto label_7;
                                                                             |     }
    0x08001cc8 mov sb, 2                                                     |     sb = 2;
    0x08001ccc b 0x8001ab8                                                   |     goto label_8;
                                                                             | label_18:
    0x08001cd0 ldrh r1, [r4, 0x9a]                                           |     r1 = *((r4 + 0x9a));
    0x08001cd4 ldr r2, [r4, 0xa4]                                            |     r2 = *((r4 + 0xa4));
    0x08001cd8 add r2, r2, r1                                                |     r2 += r1;
    0x08001cdc ldrh r1, [r2, 0x10]                                           |     r1 = *((r2 + 0x10));
                                                                             | label_17:
    0x08001ce0 movw r2, 0xdd86                                               |     r2 = 0xdd86;
    0x08001ce4 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x08001ce8 bne 0x80019ec                                                 |         goto label_9;
                                                                             |     }
    0x08001cec ldr r2, [sb, 0x14]                                            |     r2 = *((sb + 0x14));
    0x08001cf0 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08001cf4 beq 0x80019ec                                                 |         goto label_9;
                                                                             |     }
    0x08001cf8 mov sb, 0xa                                                   |     sb = 0xa;
    0x08001cfc b 0x8001a9c                                                   |     goto label_10;
                                                                             | }
    ; assembly                                                               | /* r2dec pseudo code output */
                                                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/bridge/br_netfilter.ko @ 0x8000e78 */
                                                                             | #include <stdint.h>
                                                                             |  
                                                                             | #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
                                                                             |  
    ; (fcn) sym.br_nf_post_routing ()                                        | void br_nf_post_routing (int32_t arg2) {
                                                                             |     int32_t var_4h;
                                                                             |     int32_t var_8h;
                                                                             |     int32_t var_ch;
                                                                             |     int32_t var_10h;
                                                                             |     int32_t var_14h;
                                                                             |     int32_t var_18h;
                                                                             |     int32_t var_1ch;
                                                                             |     int32_t var_20h;
                                                                             |     r1 = arg2;
    0x08000e78 push {r4, r5, r6, r7, r8, sb, sl, lr}                         |     
    0x08000e7c mov r5, r2                                                    |     r5 = r2;
    0x08000e80 ldrb r3, [r1, 0x63]                                           |     r3 = *((r1 + 0x63));
    0x08000e84 sub sp, sp, 0x20                                              |     
    0x08000e88 ldr r2, [r1, 8]                                               |     r2 = *((r1 + 8));
    0x08000e8c tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08000e90 beq 0x8000fd4                                                 |         goto label_15;
                                                                             |     }
    0x08000e94 ldr r6, [r1, 0xb4]                                            |     r6 = *((r1 + 0xb4));
    0x08000e98 mov r4, r1                                                    |     r4 = r1;
    0x08000e9c ldr r3, [r2, 0x1e8]                                           |     r3 = *((r2 + 0x1e8));
    0x08000ea0 ldrb r2, [r6, 4]                                              |     r2 = *((r6 + 4));
    0x08000ea4 cmp r3, 0                                                     |     
    0x08000ea8 add r6, r6, r2, lsl 3                                         |     r6 += (r2 << 3);
                                                                             |     if (r3 == 0) {
    0x08000eac beq 0x8001258                                                 |         goto label_16;
                                                                             |     }
    0x08000eb0 ldr r3, [r3]                                                  |     r3 = *(r3);
    0x08000eb4 cmp r6, 0                                                     |     
    0x08000eb8 ldr r8, [r3, 8]                                               |     r8 = *((r3 + 8));
                                                                             |     if (r6 == 0) {
    0x08000ebc beq 0x8000fc8                                                 |         goto label_11;
                                                                             |     }
    0x08000ec0 ldr r3, [r6, 8]                                               |     r3 = *((r6 + 8));
    0x08000ec4 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x08000ec8 beq 0x8000fc8                                                 |         goto label_11;
                                                                             |     }
    0x08000ecc cmp r8, 0                                                     |     
                                                                             |     if (r8 == 0) {
    0x08000ed0 beq 0x8001250                                                 |         goto label_17;
                                                                             |     }
    0x08000ed4 ldrb r3, [r1, 0x66]                                           |     r3 = *((r1 + 0x66));
    0x08000ed8 tst r3, 1                                                     |     
                                                                             |     if ((r3 & 1) == 0) {
    0x08000edc bne 0x8000eec                                                 |         
    0x08000ee0 ldrh r3, [r1, 0x94]                                           |         r3 = *((r1 + 0x94));
    0x08000ee4 cmp r3, 8                                                     |         
                                                                             |         if (r3 == 8) {
    0x08000ee8 beq 0x80011ac                                                 |             goto label_18;
                                                                             |         }
                                                                             |     }
    0x08000eec ldr sl, [r5, 0x14]                                            |     sl = *((r5 + 0x14));
    0x08000ef0 stmdaeq r0, {r4, r6, r8, ip, sp}                              |     __asm ("stmdaeq r0, {r4, r6, r8, ip, sp}");
    0x08000ef4 stmdaeq r0, {r4, r6, r8, ip, sp}                              |     __asm ("stmdaeq r0, {r4, r6, r8, ip, sp}");
    0x08000ef8 ldr sb, [r7]                                                  |     sb = *(r7);
    0x08000efc stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08000f00 ldr r3, [sl, 0x6d8]                                           |     r3 = *((sl + 0x6d8));
    0x08000f04 ldr sb, [r3, sb, lsl 2]                                       |     offset_0 = sb << 2;
                                                                             |     sb = *((r3 + offset_0));
    0x08000f08 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08000f0c ldrb r3, [r4, 0x66]                                           |     r3 = *((r4 + 0x66));
    0x08000f10 tst r3, 1                                                     |     
    0x08000f14 ldrh r3, [r4, 0x94]                                           |     r3 = *((r4 + 0x94));
                                                                             |     if ((r3 & 1) == 0) {
    0x08000f18 movne r2, r3                                                  |         r2 = r3;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x08000f1c bne 0x8000fec                                                 |         goto label_19;
                                                                             |     }
    0x08000f20 cmp r3, 0x81                                                  |     
                                                                             |     if (r3 == 0x81) {
    0x08000f24 beq 0x8000fdc                                                 |         goto label_20;
                                                                             |     }
                                                                             | label_0:
    0x08000f28 ldr sl, [r5, 0x14]                                            |     sl = *((r5 + 0x14));
    0x08000f2c ldr sb, [r7]                                                  |     sb = *(r7);
    0x08000f30 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08000f34 ldr r3, [sl, 0x6d8]                                           |     r3 = *((sl + 0x6d8));
    0x08000f38 ldr sb, [r3, sb, lsl 2]                                       |     offset_1 = sb << 2;
                                                                             |     sb = *((r3 + offset_1));
    0x08000f3c stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08000f40 ldrh r3, [r4, 0x94]                                           |     r3 = *((r4 + 0x94));
    0x08000f44 movw r2, 0x6488                                               |     r2 = 0x6488;
    0x08000f48 cmp r3, r2                                                    |     
                                                                             |     if (r3 == r2) {
    0x08000f4c beq 0x80010d0                                                 |         goto label_21;
                                                                             |     }
    0x08000f50 movw r1, 0xdd86                                               |     r1 = 0xdd86;
    0x08000f54 sub r3, r3, r1                                                |     r3 -= r1;
    0x08000f58 clz r3, r3                                                    |     r3 &= r3;
    0x08000f5c ldrb r2, [r4, 0x66]                                           |     r2 = *((r4 + 0x66));
    0x08000f60 lsr r3, r3, 5                                                 |     r3 >>= 5;
    0x08000f64 bics r3, r3, r2                                               |     __asm ("bics r3, r3, r2");
                                                                             |     if (r3 != r2) {
    0x08000f68 bne 0x8001228                                                 |         goto label_22;
                                                                             |     }
                                                                             | label_1:
    0x08000f6c ldr sl, [r5, 0x14]                                            |     sl = *((r5 + 0x14));
    0x08000f70 ldr sb, [r7]                                                  |     sb = *(r7);
    0x08000f74 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08000f78 ldr r3, [sl, 0x6d8]                                           |     r3 = *((sl + 0x6d8));
    0x08000f7c ldr sb, [r3, sb, lsl 2]                                       |     offset_2 = sb << 2;
                                                                             |     sb = *((r3 + offset_2));
    0x08000f80 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08000f84 ldrb r3, [r4, 0x66]                                           |     r3 = *((r4 + 0x66));
    0x08000f88 tst r3, 1                                                     |     
    0x08000f8c ldrh r3, [r4, 0x94]                                           |     r3 = *((r4 + 0x94));
                                                                             |     if ((r3 & 1) == 0) {
    0x08000f90 movne r1, r3                                                  |         r1 = r3;
                                                                             |     }
                                                                             |     if ((r3 & 1) != 0) {
    0x08000f94 bne 0x80011dc                                                 |         goto label_23;
                                                                             |     }
    0x08000f98 cmp r3, 0x81                                                  |     
                                                                             |     if (r3 == 0x81) {
    0x08000f9c beq 0x80011cc                                                 |         goto label_24;
                                                                             |     }
                                                                             | label_9:
    0x08000fa0 ldr sb, [r5, 0x14]                                            |     sb = *((r5 + 0x14));
    0x08000fa4 ldr r7, [r7]                                                  |     r7 = *(r7);
    0x08000fa8 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x08000fac ldr r3, [sb, 0x6d8]                                           |     r3 = *((sb + 0x6d8));
    0x08000fb0 ldr r7, [r3, r7, lsl 2]                                       |     offset_3 = r7 << 2;
                                                                             |     r7 = *((r3 + offset_3));
    0x08000fb4 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08000fb8 ldrh r2, [r4, 0x94]                                           |     r2 = *((r4 + 0x94));
    0x08000fbc movw r3, 0x6488                                               |     r3 = 0x6488;
    0x08000fc0 cmp r2, r3                                                    |     
                                                                             |     if (r2 == r3) {
    0x08000fc4 beq 0x80011fc                                                 |         goto label_25;
                                                                             |     }
                                                                             |     do {
                                                                             | label_11:
    0x08000fc8 mov r0, 1                                                     |         r0 = 1;
                                                                             | label_14:
    0x08000fcc add sp, sp, 0x20                                              |         
    0x08000fd0 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |         
                                                                             | label_15:
    0x08000fd4 ldr r3, [r2, 0x1e8]                                           |         r3 = *((r2 + 0x1e8));
    0x08000fd8 b 0x8000fc8                                                   |         
                                                                             |     } while (1);
                                                                             | label_20:
    0x08000fdc ldrh r1, [r4, 0x9a]                                           |     r1 = *((r4 + 0x9a));
    0x08000fe0 ldr r2, [r4, 0xa4]                                            |     r2 = *((r4 + 0xa4));
    0x08000fe4 add r2, r2, r1                                                |     r2 += r1;
    0x08000fe8 ldrh r2, [r2, 0x10]                                           |     r2 = *((r2 + 0x10));
                                                                             | label_19:
    0x08000fec cmp r2, 8                                                     |     
                                                                             |     if (r2 != 8) {
    0x08000ff0 bne 0x8000f28                                                 |         goto label_0;
                                                                             |     }
    0x08000ff4 ldr r2, [sb, 0x14]                                            |     r2 = *((sb + 0x14));
    0x08000ff8 cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08000ffc beq 0x8000f28                                                 |         goto label_0;
                                                                             |     }
    0x08001000 mov r7, 2                                                     |     r7 = 2;
                                                                             | label_10:
    0x08001004 ldrb r2, [r4, 0x64]                                           |     r2 = *((r4 + 0x64));
    0x08001008 and r2, r2, 7                                                 |     r2 &= 7;
    0x0800100c cmp r2, 3                                                     |     
                                                                             |     if (r2 == 3) {
    0x08001010 beq 0x8001108                                                 |         goto label_7;
                                                                             |     }
                                                                             | label_3:
    0x08001014 cmp r3, 0x81                                                  |     
                                                                             |     if (r3 != 0x81) {
    0x08001018 moveq r6, 4                                                   |         r6 = 4;
                                                                             |     }
                                                                             |     if (r3 != 0x81) {
    0x0800101c moveq r1, r6                                                  |         r1 = r6;
                                                                             |     }
                                                                             |     if (r3 != 0x81) {
    0x08001020 beq 0x8001038                                                 |         
    0x08001024 movw r2, 0x6488                                               |         r2 = 0x6488;
    0x08001028 cmp r3, r2                                                    |         
                                                                             |         if (r3 != r2) {
    0x0800102c bne 0x80011c0                                                 |             goto label_26;
                                                                             |         }
                                                                             | label_2:
    0x08001030 mov r6, 8                                                     |         r6 = 8;
    0x08001034 mov r1, r6                                                    |         r1 = r6;
                                                                             |     }
                                                                             | label_8:
    0x08001038 mov r0, r4                                                    |     r0 = r4;
    0x0800103c stmdaeq r0, {r0, r2, r5, r7, ip, lr}                          |     __asm ("stmdaeq r0, {r0, r2, r5, r7, ip, lr}");
    0x08001040 ldrh r3, [r4, 0x98]                                           |     r3 = *((r4 + 0x98));
    0x08001044 cmp r7, 2                                                     |     
    0x08001048 add r6, r6, r3                                                |     r6 += r3;
    0x0800104c strh r6, [r4, 0x98]                                           |     *((r4 + 0x98)) = r6;
                                                                             |     if (r7 == 2) {
    0x08001050 beq 0x8001190                                                 |         goto label_27;
                                                                             |     }
    0x08001054 movw r3, 0xdd86                                               |     
    0x08001058 movt r3, 0xffff                                               |     r3 = 0xffffdd86;
    0x0800105c strh r3, [r4, 0x94]                                           |     *((r4 + 0x94)) = r3;
    0x08001060 ldr r6, [r5, 0x14]                                            |     r6 = *((r5 + 0x14));
    0x08001064 ldr r5, [r5, 0x10]                                            |     r5 = *((r5 + 0x10));
    0x08001068 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x0800106c sub r3, r7, 3                                                 |     r3 = r7 - 3;
    0x08001070 cmp r3, 7                                                     |     
                                                                             |     if (r3 > 7) {
                                                                             |         /* switch table (8 cases) at 0x800107c */
    0x08001074 ldrls pc, [pc, r3, lsl 2]                                     |         offset_4 = r3 << 2;
                                                                             |         pc = *((pc + offset_4));
                                                                             |     }
    0x08001078 b 0x800109c                                                   |     
    0x0800109c stmdaeq r0, {r7, r8, ip, sp}                                  |     __asm ("stmdaeq r0, {r7, r8, ip, sp}");
    0x080010a0 stmdaeq r0, {r7, r8, ip, sp}                                  |     __asm ("stmdaeq r0, {r7, r8, ip, sp}");
    0x080010a4 ldrb r3, [ip, 1]                                              |     r3 = *((ip + 1));
    0x080010a8 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x080010ac beq 0x8001230                                                 |         goto label_28;
                                                                             |     }
                                                                             | label_4:
    0x080010b0 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
                                                                             | label_5:
    0x080010b4 mov r2, r4                                                    |     r2 = r4;
    0x080010b8 mov r1, r5                                                    |     r1 = r5;
    0x080010bc mov r0, r6                                                    |     r0 = r6;
    0x080010c0 bl 0x80009b0                                                  |     br_nf_dev_queue_xmit ();
    0x080010c4 mov r0, 2                                                     |     r0 = 2;
    0x080010c8 add sp, sp, 0x20                                              |     
    0x080010cc pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |     
                                                                             | label_21:
    0x080010d0 ldrh r2, [r4, 0x9a]                                           |     r2 = *((r4 + 0x9a));
    0x080010d4 ldr r3, [r4, 0xa4]                                            |     r3 = *((r4 + 0xa4));
    0x080010d8 add r3, r3, r2                                                |     r3 += r2;
    0x080010dc ldrh r3, [r3, 0x14]                                           |     r3 = *((r3 + 0x14));
    0x080010e0 cmp r3, 0x2100                                                |     
                                                                             |     if (r3 != 0x2100) {
    0x080010e4 bne 0x8000f6c                                                 |         goto label_1;
                                                                             |     }
    0x080010e8 ldr r3, [sb, 0x18]                                            |     r3 = *((sb + 0x18));
    0x080010ec cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x080010f0 beq 0x8000f6c                                                 |         goto label_1;
                                                                             |     }
    0x080010f4 mov r7, 2                                                     |     r7 = 2;
                                                                             | label_12:
    0x080010f8 ldrb r3, [r4, 0x64]                                           |     r3 = *((r4 + 0x64));
    0x080010fc and r3, r3, 7                                                 |     r3 &= 7;
    0x08001100 cmp r3, 3                                                     |     
                                                                             |     if (r3 != 3) {
    0x08001104 bne 0x8001030                                                 |         goto label_2;
                                                                             |     }
                                                                             | label_7:
    0x08001108 ldrb r3, [r4, 0x64]                                           |     r3 = *((r4 + 0x64));
    0x0800110c bfc r3, 0, 3                                                  |     value_5 = BIT_MASK (3, );
                                                                             |     value_5 = ~value_5;
                                                                             |     r3 &= value_5;
    0x08001110 strb r3, [r4, 0x64]                                           |     *((r4 + 0x64)) = r3;
    0x08001114 ldrb r3, [r6, 1]                                              |     r3 = *((r6 + 1));
    0x08001118 orr r3, r3, 1                                                 |     r3 |= 1;
    0x0800111c strb r3, [r6, 1]                                              |     *((r6 + 1)) = r3;
    0x08001120 ldrh r3, [r4, 0x94]                                           |     r3 = *((r4 + 0x94));
    0x08001124 b 0x8001014                                                   |     goto label_3;
                                                                             | label_6:
    0x0800112c cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x08001130 beq 0x80010b0                                                 |         goto label_4;
                                                                             |     }
    0x08001134 add r1, sp, 4                                                 |     r1 += var_4h;
    0x08001138 mov r0, r4                                                    |     r0 = r4;
    0x0800113c stmdaeq r0, {r4, r5, r7, r8, fp}                              |     __asm ("stmdaeq r0, {r4, r5, r7, r8, fp}");
    0x08001140 stmdaeq r0, {r4, r5, r7, r8, fp}                              |     __asm ("stmdaeq r0, {r4, r5, r7, r8, fp}");
    0x08001144 str r3, [sp, 0x1c]                                            |     var_1ch = r3;
    0x08001148 mov r3, 0                                                     |     r3 = 0;
    0x0800114c mov ip, 4                                                     |     
    0x08001150 strb r7, [sp, 8]                                              |     var_8h = r7;
    0x08001154 str r3, [sp, 0xc]                                             |     var_ch = r3;
    0x08001158 str ip, [sp, 4]                                               |     var_4h = ip;
    0x0800115c str r8, [sp, 0x10]                                            |     var_10h = r8;
    0x08001160 str r5, [sp, 0x14]                                            |     var_14h = r5;
    0x08001164 str r6, [sp, 0x18]                                            |     var_18h = r6;
    0x08001168 stmdaeq r0, {r0, r4, r5, r7, ip, lr}                          |     __asm ("stmdaeq r0, {r0, r4, r5, r7, ip, lr}");
    0x0800116c mov r7, r0                                                    |     r7 = r0;
    0x08001170 stmdaeq r0, {r0, r3, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r3, r6, ip, lr}");
    0x08001174 cmp r7, 1                                                     |     
                                                                             |     if (r7 != 1) {
    0x08001178 movne r0, 2                                                   |         r0 = 2;
                                                                             |         goto label_29;
                                                                             |     }
                                                                             |     if (r7 == 1) {
                                                                             | label_29:
    0x0800117c beq 0x80010b4                                                 |         goto label_5;
                                                                             |     }
    0x08001180 add sp, sp, 0x20                                              |     
    0x08001184 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |     
                                                                             | label_27:
    0x08001190 mov r3, 8                                                     |     r3 = 8;
    0x08001194 strh r3, [r4, 0x94]                                           |     *((r4 + 0x94)) = r3;
    0x08001198 ldr r6, [r5, 0x14]                                            |     r6 = *((r5 + 0x14));
    0x0800119c ldr r5, [r5, 0x10]                                            |     r5 = *((r5 + 0x10));
    0x080011a0 stmdaeq r0, {r0, r2, r6, ip, lr}                              |     __asm ("stmdaeq r0, {r0, r2, r6, ip, lr}");
    0x080011a4 ldr r2, [r6, 0x568]                                           |     r2 = *((r6 + 0x568));
    0x080011a8 b 0x800112c                                                   |     goto label_6;
                                                                             | label_18:
    0x080011ac mov r7, 2                                                     |     r7 = 2;
                                                                             | label_13:
    0x080011b0 ldrb r3, [r4, 0x64]                                           |     r3 = *((r4 + 0x64));
    0x080011b4 and r3, r3, 7                                                 |     r3 &= 7;
    0x080011b8 cmp r3, 3                                                     |     
                                                                             |     if (r3 == 3) {
    0x080011bc beq 0x8001108                                                 |         goto label_7;
                                                                             |     }
                                                                             | label_26:
    0x080011c0 mov r6, 0                                                     |     r6 = 0;
    0x080011c4 mov r1, r6                                                    |     r1 = r6;
    0x080011c8 b 0x8001038                                                   |     goto label_8;
                                                                             | label_24:
    0x080011cc ldrh r1, [r4, 0x9a]                                           |     r1 = *((r4 + 0x9a));
    0x080011d0 ldr r2, [r4, 0xa4]                                            |     r2 = *((r4 + 0xa4));
    0x080011d4 add r2, r2, r1                                                |     r2 += r1;
    0x080011d8 ldrh r1, [r2, 0x10]                                           |     r1 = *((r2 + 0x10));
                                                                             | label_23:
    0x080011dc movw r2, 0xdd86                                               |     r2 = 0xdd86;
    0x080011e0 cmp r1, r2                                                    |     
                                                                             |     if (r1 != r2) {
    0x080011e4 bne 0x8000fa0                                                 |         goto label_9;
                                                                             |     }
    0x080011e8 ldr r2, [sb, 0x14]                                            |     r2 = *((sb + 0x14));
    0x080011ec cmp r2, 0                                                     |     
                                                                             |     if (r2 == 0) {
    0x080011f0 beq 0x8000fa0                                                 |         goto label_9;
                                                                             |     }
    0x080011f4 mov r7, 0xa                                                   |     r7 = 0xa;
    0x080011f8 b 0x8001004                                                   |     goto label_10;
                                                                             | label_25:
    0x080011fc ldrh r2, [r4, 0x9a]                                           |     r2 = *((r4 + 0x9a));
    0x08001200 ldr r3, [r4, 0xa4]                                            |     r3 = *((r4 + 0xa4));
    0x08001204 add r3, r3, r2                                                |     r3 += r2;
    0x08001208 ldrh r3, [r3, 0x14]                                           |     r3 = *((r3 + 0x14));
    0x0800120c cmp r3, 0x5700                                                |     
                                                                             |     if (r3 != 0x5700) {
    0x08001210 bne 0x8000fc8                                                 |         goto label_11;
                                                                             |     }
    0x08001214 ldr r3, [r7, 0x18]                                            |     r3 = *((r7 + 0x18));
    0x08001218 cmp r3, 0                                                     |     
                                                                             |     if (r3 == 0) {
    0x0800121c beq 0x8000fc8                                                 |         goto label_11;
                                                                             |     }
    0x08001220 mov r7, 0xa                                                   |     r7 = 0xa;
    0x08001224 b 0x80010f8                                                   |     goto label_12;
                                                                             | label_22:
    0x08001228 mov r7, 0xa                                                   |     r7 = 0xa;
    0x0800122c b 0x80011b0                                                   |     goto label_13;
                                                                             | label_28:
    0x08001230 mov r2, 9                                                     |     r2 = 9;
    0x08001234 mov r1, 0xf6                                                  |     r1 = 0xf6;
    0x08001238 stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}");
    0x0800123c stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}          |     __asm ("stmdaeq r0, {r2, r3, r4, r5, r6, r7, r8, sl, fp, sp}");
    0x08001240 mov lr, 1                                                     |     lr = 1;
    0x08001244 strb lr, [ip, 1]                                              |     
    0x08001248 stmdaeq r0, {r0, r3, r4, r6, ip, lr}                          |     __asm ("stmdaeq r0, {r0, r3, r4, r6, ip, lr}");
    0x0800124c b 0x80010b0                                                   |     goto label_4;
                                                                             | label_17:
    0x08001250 mov r0, r8                                                    |     r0 = r8;
    0x08001254 b 0x8000fcc                                                   |     goto label_14;
                                                                             | label_16:
    0x08001258 cmp r6, 0                                                     |     
                                                                             |     if (r6 == 0) {
    0x0800125c beq 0x8000fc8                                                 |         goto label_11;
                                                                             |     }
    0x08001260 ldr r0, [r6, 8]                                               |     r0 = *((r6 + 8));
    0x08001264 clz r0, r0                                                    |     r0 &= r0;
    0x08001268 lsr r0, r0, 5                                                 |     r0 >>= 5;
    0x0800126c add sp, sp, 0x20                                              |     
    0x08001270 pop {r4, r5, r6, r7, r8, sb, sl, pc}                          |     
                                                                             | }
    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/modules/5.10.52-axis8/kernel/net/bridge/br_netfilter.ko @ 0x80012d4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.setup_pre_routing ()         | void setup_pre_routing (int32_t arg1, int32_t arg2) {
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x080012d4 push {r4, r5, r6, lr}         |     
    0x080012d8 mov r2, r1                    |     r2 = r1;
    0x080012dc mov r4, r0                    |     r4 = r0;
    0x080012e0 ldrb r5, [r0, 0x63]           |     r5 = *((r0 + 0x63));
    0x080012e4 ands r5, r5, 1                |     r5 &= 1;
                                             |     if (r5 == r5) {
    0x080012e8 ldrne r5, [r0, 0xb4]          |         r5 = *((r0 + 0xb4));
                                             |     }
                                             |     if (r5 == r5) {
    0x080012ec ldrbne r3, [r5, 4]            |         r3 = *((r5 + 4));
                                             |     }
                                             |     if (r5 == r5) {
    0x080012f0 addne r5, r5, r3, lsl 3       |         r5 += (r3 << 3);
                                             |     }
    0x080012f4 ldrb r3, [r0, 0x64]           |     r3 = *((r0 + 0x64));
    0x080012f8 and r1, r3, 7                 |     r1 = r3 & 7;
    0x080012fc cmp r1, 3                     |     
    0x08001300 bfceq r3, 0, 3                |     __asm ("bfceq r3, 0, 3");
                                             |     if (r1 != 3) {
    0x08001304 strbeq r3, [r0, 0x64]         |         *((r0 + 0x64)) = r3;
                                             |     }
                                             |     if (r1 != 3) {
    0x08001308 ldrbeq r3, [r5, 1]            |         r3 = *((r5 + 1));
                                             |     }
                                             |     if (r1 != 3) {
    0x0800130c orreq r3, r3, 1               |         r3 |= 1;
                                             |     }
                                             |     if (r1 != 3) {
    0x08001310 strbeq r3, [r5, 1]            |         *((r5 + 1)) = r3;
                                             |     }
    0x08001314 ldrb r3, [r5, 1]              |     r3 = *((r5 + 1));
    0x08001318 orr r3, r3, 2                 |     r3 |= 2;
    0x0800131c strb r3, [r5, 1]              |     *((r5 + 1)) = r3;
    0x08001320 ldr r1, [r0, 8]               |     r1 = *((r0 + 8));
    0x08001324 str r1, [r5, 4]               |     *((r5 + 4)) = r1;
    0x08001328 bl 0x8000070                  |     brnf_get_logical_dev ();
    0x0800132c ldrh r3, [r4, 0x94]           |     r3 = *((r4 + 0x94));
    0x08001330 str r0, [r4, 8]               |     *((r4 + 8)) = r0;
    0x08001334 cmp r3, 0x81                  |     
                                             |     if (r3 != 0x81) {
    0x08001338 moveq r3, 1                   |         r3 = 1;
                                             |     }
                                             |     if (r3 != 0x81) {
    0x0800133c strbeq r3, [r5]               |         *(r5) = r3;
                                             |     }
                                             |     if (r3 != 0x81) {
    0x08001340 beq 0x8001354                 |         
    0x08001344 movw r2, 0x6488               |         r2 = 0x6488;
    0x08001348 cmp r3, r2                    |         
                                             |         if (r3 != r2) {
    0x0800134c moveq r3, 2                   |             r3 = 2;
                                             |         }
                                             |         if (r3 == r2) {
    0x08001350 strbeq r3, [r5]               |             *(r5) = r3;
                                             |             goto label_0;
                                             |         }
                                             |     }
                                             | label_0:
    0x08001354 ldr r3, [r4, 0x4c]            |     r3 = *((r4 + 0x4c));
    0x08001358 cmp r3, 0                     |     
                                             |     if (r3 == 0) {
    0x0800135c beq 0x800137c                 |         goto label_1;
                                             |     }
    0x08001360 mov r0, r4                    |     r0 = r4;
    0x08001364 blx r3                        |     uint32_t (*r3)(uint32_t) (r0);
    0x08001368 mov r3, 0                     |     r3 = 0;
    0x0800136c str r3, [r4, 0x4c]            |     *((r4 + 0x4c)) = r3;
    0x08001370 str r3, [r4, 0xc]             |     *((r4 + 0xc)) = r3;
                                             |     do {
    0x08001374 ldr r0, [r4, 8]               |         r0 = *((r4 + 8));
    0x08001378 pop {r4, r5, r6, pc}          |         
                                             | label_1:
    0x0800137c ldr r3, [r4, 0xc]             |         r3 = *((r4 + 0xc));
    0x08001380 cmp r3, 0                     |         
    0x08001384 beq 0x8001374                 |         
                                             |     } while (r3 == 0);
    0x08001388 udf 0x12                      |     __asm ("udf 0x12");
                                             | }

[*] Function popen used 1 times br_netfilter.ko