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