[*] Binary protection state of br_netfilter.ko
No RELRO No Canary found NX disabled REL No RPATH No RUNPATH Symbols
[*] Function mmap 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 mmap used 1 times br_netfilter.ko