[*] Binary protection state of llc.ko
No RELRO No Canary found NX disabled REL No RPATH No RUNPATH Symbols
[*] Function mmap tear down of llc.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/llc/llc.ko @ 0x800030c */
| #include <stdint.h>
|
; (fcn) sym.llc_rcv () | void llc_rcv (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x0800030c push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x08000310 mov r5, r1 | r5 = r1;
0x08000314 mov r4, r0 | r4 = r0;
0x08000318 ldr ip, [r1, 0x2b4] | ip = *((r1 + 0x2b4));
0x0800031c stmdaeq r0, {r1, r2, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r2, r6, r7, r8, sl, fp, ip}");
0x08000320 stmdaeq r0, {r1, r2, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r2, r6, r7, r8, sl, fp, ip}");
0x08000324 cmp ip, r1 |
0x08000328 beq 0x800033c |
| while (r3 == 3) {
| label_1:
0x0800032c mov r0, r4 | r0 = r4;
| label_4:
0x08000330 stmdaeq r0, {r1, r3, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r3, r6, r7, r8, sl, fp, ip}");
| label_0:
0x08000334 mov r0, 0 | r0 = 0;
0x08000338 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
0x0800033c mov r7, r3 | r7 = r3;
0x08000340 ldrb r3, [r0, 0x64] | r3 = *((r0 + 0x64));
0x08000344 and r3, r3, 7 | r3 &= 7;
0x08000348 cmp r3, 3 |
0x0800034c beq 0x800032c |
| }
0x08000350 ldr r3, [r0, 0xb0] | r3 = *((r0 + 0xb0));
0x08000354 mov r8, r2 | r8 = r2;
0x08000358 cmp r3, 1 |
| if (r3 != 1) {
0x0800035c bne 0x800052c | goto label_12;
| }
0x08000360 cmp r0, 0 |
| if (r0 == 0) {
0x08000364 beq 0x8000334 | goto label_0;
| }
| label_5:
0x08000368 ldr r1, [r4, 0x54] | r1 = *((r4 + 0x54));
0x0800036c ldr r2, [r4, 0x58] | r2 = *((r4 + 0x58));
0x08000370 sub r3, r1, r2 | r3 = r1 - r2;
0x08000374 cmp r3, 2 |
| if (r3 < 2) {
0x08000378 bls 0x8000588 | goto label_13;
| }
| label_9:
0x0800037c ldr r0, [r4, 0xa8] | r0 = *((r4 + 0xa8));
0x08000380 ldrb r6, [r0, 2] | r6 = *((r0 + 2));
0x08000384 and r6, r6, 3 | r6 &= 3;
0x08000388 cmp r6, 3 |
| if (r6 == 3) {
0x0800038c movne r6, 4 | r6 = 4;
| }
0x08000390 mov sb, r6 | sb = r6;
0x08000394 cmp r3, r6 |
| if (r3 <= r6) {
0x08000398 blo 0x80005d8 | goto label_14;
| }
| label_10:
0x0800039c ldrh r3, [r4, 0x96] | r3 = *((r4 + 0x96));
0x080003a0 mov r1, r6 | r1 = r6;
0x080003a4 mov r0, r4 | r0 = r4;
0x080003a8 add r3, r3, sb | r3 += sb;
0x080003ac strh r3, [r4, 0x96] | *((r4 + 0x96)) = r3;
0x080003b0 stmdaeq r0, {r1, r2, r3, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r2, r3, r6, r7, r8, sl, fp, ip}");
0x080003b4 ldrh r3, [r4, 0x94] | r3 = *((r4 + 0x94));
0x080003b8 cmp r3, 0x400 |
| if (r3 == 0x400) {
0x080003bc beq 0x80004d8 | goto label_15;
| }
| label_3:
0x080003c0 ldrh r3, [r4, 0x98] | r3 = *((r4 + 0x98));
0x080003c4 ldr r2, [r4, 0xa4] | r2 = *((r4 + 0xa4));
0x080003c8 ldrb r0, [r2, r3] | r0 = *((r2 + r3));
0x080003cc cmp r0, 0 |
| if (r0 == 0) {
0x080003d0 beq 0x80005b8 | goto label_16;
| }
0x080003d4 stmdaeq r0, {r2, r5, r6, r7, r8} | __asm ("stmdaeq r0, {r2, r5, r6, r7, r8}");
0x080003d8 subs r6, r0, 0 | r6 = r0 - 0;
| if (r6 == r0) {
0x080003dc beq 0x800032c | goto label_1;
| }
0x080003e0 ldrh r2, [r4, 0x98] | r2 = *((r4 + 0x98));
0x080003e4 ldr r3, [r4, 0xa4] | r3 = *((r4 + 0xa4));
0x080003e8 ldr sb, [r6, 8] | sb = *((r6 + 8));
0x080003ec add r3, r3, r2 | r3 += r2;
0x080003f0 ldrb r2, [r3, 2] | r2 = *((r3 + 2));
0x080003f4 and r3, r2, 3 | r3 = r2 & 3;
0x080003f8 cmp r3, 3 |
| if (r3 != 3) {
0x080003fc bne 0x8000450 | goto label_17;
| }
0x08000400 and r3, r2, 0xec | r3 = r2 & 0xec;
0x08000404 cmp r3, 0x6c |
| if (r3 == 0x6c) {
0x08000408 beq 0x8000450 | goto label_17;
| }
| if (r3 > 0x6c) {
0x0800040c bhi 0x800054c | goto label_18;
| }
0x08000410 cmp r3, 0xc |
| if (r3 == 0xc) {
0x08000414 beq 0x8000450 | goto label_17;
| }
| if (r3 < 0xc) {
0x08000418 bls 0x8000564 | goto label_19;
| }
0x0800041c and r2, r2, 0xcc | r2 &= 0xcc;
0x08000420 cmp r2, 0x40 |
| if (r2 == 0x40) {
0x08000424 beq 0x8000450 | goto label_17;
| }
| do {
| label_2:
0x08000428 cmp sb, 0 |
| if (sb == 0) {
0x0800042c beq 0x800057c | goto label_20;
| }
0x08000430 mov r3, r7 | r3 = r7;
0x08000434 mov r2, r8 | r2 = r8;
0x08000438 mov r1, r5 | r1 = r5;
0x0800043c mov r0, r4 | r0 = r4;
0x08000440 blx sb | sb (r0, r1, r2, r3);
0x08000444 b 0x80004a0 | goto label_8;
| label_6:
0x08000448 cmp r3, 0x84 |
0x0800044c bne 0x8000428 |
| } while (r3 != 0x84);
| label_17:
0x08000450 mov r3, 1 | r3 = 1;
| label_7:
0x08000454 stmdaeq r0, {r2, r3, sl, fp} | __asm ("stmdaeq r0, {r2, r3, sl, fp}");
0x08000458 stmdaeq r0, {r2, r3, sl, fp} | __asm ("stmdaeq r0, {r2, r3, sl, fp}");
0x0800045c ldr sl, [r2, r3, lsl 2] | offset_0 = r3 << 2;
| sl = *((r2 + offset_0));
0x08000460 cmp sl, 0 |
| if (sl == 0) {
0x08000464 beq 0x8000428 | goto label_2;
| }
0x08000468 cmp sb, 0 |
| if (sb != 0) {
0x0800046c beq 0x8000494 |
0x08000470 mov r0, r4 | r0 = r4;
0x08000474 mov r1, 0xa20 | r1 = 0xa20;
0x08000478 stmdaeq r0, {r1, r4, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r4, r6, r7, r8, sl, fp, ip}");
0x0800047c cmp r0, 0 |
| if (r0 == 0) {
0x08000480 beq 0x8000494 | goto label_21;
| }
0x08000484 mov r3, r7 | r3 = r7;
0x08000488 mov r2, r8 | r2 = r8;
0x0800048c mov r1, r5 | r1 = r5;
0x08000490 blx sb | sb (r1, r2, r3);
| }
| label_21:
0x08000494 mov r1, r4 | r1 = r4;
0x08000498 mov r0, r6 | r0 = r6;
0x0800049c blx sl | sl (r0, r1);
| label_8:
0x080004a0 add r0, r6, 4 | r0 = r6 + 4;
0x080004a4 pld [r0] | __asm ("pld [r0]");
| do {
0x080004a8 ldrex r3, [r0] | __asm ("ldrex r3, [r0]");
0x080004ac sub r2, r3, 1 | r2 = r3 - 1;
0x080004b0 strex r1, r2, [r0] | __asm ("strex r1, r2, [r0]");
0x080004b4 teq r1, 0 | __asm ("teq r1, 0");
0x080004b8 bne 0x80004a8 |
| } while (r0 != 0);
0x080004bc cmp r3, 1 |
| if (r3 == 1) {
0x080004c0 beq 0x8000570 | goto label_22;
| }
0x080004c4 cmp r3, 0 |
| if (r3 > 0) {
0x080004c8 bgt 0x8000334 | goto label_0;
| }
0x080004cc mov r1, 3 | r1 = 3;
0x080004d0 stmdaeq r0, {r1, r2, r3, r4, r5, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r2, r3, r4, r5, r7, r8, sl, fp, ip}");
0x080004d4 b 0x8000334 | goto label_0;
| label_15:
0x080004d8 ldrh r2, [r4, 0x9a] | r2 = *((r4 + 0x9a));
0x080004dc ldr r3, [r4, 0xa4] | r3 = *((r4 + 0xa4));
0x080004e0 add r3, r3, r2 | r3 += r2;
0x080004e4 ldrh r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x080004e8 rev16 r3, r3 | __asm ("rev16 r3, r3");
0x080004ec uxth r3, r3 | r3 = (int16_t) r3;
0x080004f0 subs sb, r3, sb | sb = r3 - sb;
| if (sb < r3) {
0x080004f4 bmi 0x800032c | goto label_1;
| }
0x080004f8 ldr r3, [r4, 0x54] | r3 = *((r4 + 0x54));
0x080004fc ldr r2, [r4, 0x58] | r2 = *((r4 + 0x58));
0x08000500 sub r1, r3, r2 | r1 = r3 - r2;
0x08000504 cmp sb, r1 |
| if (sb > r1) {
0x08000508 bhi 0x80005fc | goto label_23;
| }
| label_11:
0x0800050c cmp sb, r3 |
| if (sb >= r3) {
0x08000510 bhs 0x80003c0 | goto label_3;
| }
0x08000514 mov r1, sb | r1 = sb;
0x08000518 mov r0, r4 | r0 = r4;
0x0800051c stmdaeq r0, {r1, r2, r4, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r2, r4, r6, r7, r8, sl, fp, ip}");
0x08000520 cmp r0, 0 |
| if (r0 == 0) {
0x08000524 beq 0x80003c0 | goto label_3;
| }
0x08000528 b 0x800032c | goto label_1;
| label_12:
0x0800052c mov r1, 0xa20 | r1 = 0xa20;
0x08000530 stmdaeq r0, {r1, r4, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r4, r6, r7, r8, sl, fp, ip}");
0x08000534 subs r3, r0, 0 | r3 = r0 - 0;
0x08000538 mov r0, r4 | r0 = r4;
| if (r3 == r0) {
0x0800053c beq 0x8000330 | goto label_4;
| }
0x08000540 mov r4, r3 | r4 = r3;
0x08000544 stmdaeq r0, {r1, r3, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r3, r6, r7, r8, sl, fp, ip}");
0x08000548 b 0x8000368 | goto label_5;
| label_18:
0x0800054c cmp r3, 0xac |
| if (r3 == 0xac) {
0x08000550 beq 0x800055c | goto label_24;
| }
0x08000554 cmp r3, 0xe0 |
| if (r3 != 0xe0) {
0x08000558 bne 0x8000448 | goto label_6;
| }
| label_24:
0x0800055c mov r3, 0 | r3 = 0;
0x08000560 b 0x8000454 | goto label_7;
| label_19:
0x08000564 cmp r3, 0 |
| if (r3 == 0) {
0x08000568 beq 0x8000454 | goto label_7;
| }
0x0800056c b 0x8000428 | goto label_2;
| label_22:
0x08000570 mov r0, r6 | r0 = r6;
0x08000574 stmdaeq r0, {r4, r5, r6} | __asm ("stmdaeq r0, {r4, r5, r6}");
0x08000578 b 0x8000334 | goto label_0;
| label_20:
0x0800057c mov r0, r4 | r0 = r4;
0x08000580 stmdaeq r0, {r1, r3, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r3, r6, r7, r8, sl, fp, ip}");
0x08000584 b 0x80004a0 | goto label_8;
| label_13:
0x08000588 cmp r1, 2 |
| if (r1 < 2) {
0x0800058c bls 0x800032c | goto label_1;
| }
0x08000590 add r2, r2, 3 | r2 += 3;
0x08000594 mov r0, r4 | r0 = r4;
0x08000598 sub r1, r2, r1 | r1 = r2 - r1;
0x0800059c stmdaeq r0, {r1, r3, r4, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r3, r4, r6, r7, r8, sl, fp, ip}");
0x080005a0 cmp r0, 0 |
| if (r0 == 0) {
0x080005a4 beq 0x800032c | goto label_1;
| }
0x080005a8 ldr r1, [r4, 0x54] | r1 = *((r4 + 0x54));
0x080005ac ldr r2, [r4, 0x58] | r2 = *((r4 + 0x58));
0x080005b0 sub r3, r1, r2 | r3 = r1 - r2;
0x080005b4 b 0x800037c | goto label_9;
| label_16:
0x080005b8 stmdaeq r0, {r2, r3, sl, fp} | __asm ("stmdaeq r0, {r2, r3, sl, fp}");
0x080005bc stmdaeq r0, {r2, r3, sl, fp} | __asm ("stmdaeq r0, {r2, r3, sl, fp}");
0x080005c0 ldr r3, [r3, 8] | r3 = *((r3 + 8));
0x080005c4 cmp r3, 0 |
| if (r3 == 0) {
0x080005c8 beq 0x800032c | goto label_1;
| }
0x080005cc mov r0, r4 | r0 = r4;
0x080005d0 blx r3 | uint32_t (*r3)(uint32_t) (r0);
0x080005d4 b 0x8000334 | goto label_0;
| label_14:
0x080005d8 cmp r6, r1 |
| if (r6 > r1) {
0x080005dc bhi 0x800032c | goto label_1;
| }
0x080005e0 sub r1, r2, r1 | r1 = r2 - r1;
0x080005e4 mov r0, r4 | r0 = r4;
0x080005e8 add r1, r1, r6 | r1 += r6;
0x080005ec stmdaeq r0, {r1, r3, r4, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r3, r4, r6, r7, r8, sl, fp, ip}");
0x080005f0 cmp r0, 0 |
| if (r0 == 0) {
0x080005f4 beq 0x800032c | goto label_1;
| }
0x080005f8 b 0x800039c | goto label_10;
| label_23:
0x080005fc cmp sb, r3 |
| if (sb > r3) {
0x08000600 bhi 0x800032c | goto label_1;
| }
0x08000604 sub r2, r2, r3 | r2 -= r3;
0x08000608 mov r0, r4 | r0 = r4;
0x0800060c add r1, r2, sb | r1 = r2 + sb;
0x08000610 stmdaeq r0, {r1, r3, r4, r6, r7, r8, sl, fp, ip} | __asm ("stmdaeq r0, {r1, r3, r4, r6, r7, r8, sl, fp, ip}");
0x08000614 cmp r0, 0 |
| if (r0 == 0) {
0x08000618 beq 0x800032c | goto label_1;
| }
0x0800061c ldr r3, [r4, 0x54] | r3 = *((r4 + 0x54));
0x08000620 b 0x800050c | goto label_11;
| }
[*] Function mmap used 1 times llc.ko