[*] Binary protection state of libip6t_ipv6header.so
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libip6t_ipv6header.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/unblob_extracted/firmware_extract/56048-12514271.gzip_extract/gzip.uncompressed_extract/5243916-15068666.gzip_extract/gzip.uncompressed_extract/usr/lib/xtables/libip6t_ipv6header.so @ 0xa10 */
| #include <stdint.h>
|
| #define BIT_MASK(t,v) ((t)(-((v)!= 0)))&(((t)-1)>>((sizeof(t)*CHAR_BIT)-(v)))
|
; (fcn) fcn.00000a10 () | void fcn_00000a10 (int32_t arg1) {
| r0 = arg1;
0x00000a10 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00000a14 ldr r8, [pc, 0xc8] | r8 = *(0xae0);
0x00000a18 ldr sb, [pc, 0xc8] | sb = *(0xae4);
0x00000a1c ldr r6, [pc, 0xc8] | r6 = *(0xae8);
0x00000a20 mov r4, r0 | r4 = r0;
0x00000a24 mov r3, 0 | r3 = 0;
0x00000a28 add r8, pc, r8 | r8 = pc + r8;
0x00000a2c add sb, pc, sb | sb = pc + sb;
0x00000a30 add r6, pc, r6 | r6 = pc + r6;
| label_0:
0x00000a34 cmp r4, 0 |
| if (r4 != 0) {
0x00000a38 bne 0xac8 | goto label_3;
| }
0x00000a3c cmp r3, 0 |
0x00000a40 popne {r4, r5, r6, r7, r8, sb, sl, pc} |
0x00000a44 ldr r0, [pc, 0xa4] | r0 = *(0xaec);
0x00000a48 pop {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00000a4c add r0, pc, r0 | r0 = pc + r0;
0x00000a50 b 0x614 | void (*0x614)() ();
| do {
0x00000a54 add r5, r5, 1 | r5++;
| label_1:
0x00000a58 add r2, r8, r5, lsl 1 | r2 = r8 + (r5 << 1);
0x00000a5c ldrb r7, [r2, 1] | r7 = *((r2 + 1));
0x00000a60 tst r7, r4 |
0x00000a64 beq 0xa54 |
| } while ((r7 & r4) == 0);
0x00000a68 cmp r3, 0 |
| if (r3 != 0) {
0x00000a6c beq 0xa78 |
0x00000a70 mov r0, 0x2c | r0 = 0x2c;
0x00000a74 bl 0x608 | putchar (r0);
| }
0x00000a78 ldrb r5, [sb, r5, lsl 1] | offset_0 = r5 << 1;
| r5 = *((sb + offset_0));
0x00000a7c cmp r5, 0 |
| if (r5 != 0) {
0x00000a80 beq 0xa98 |
0x00000a84 mov r0, r5 | r0 = r5;
0x00000a88 bl 0x620 | r0 = getprotobynumber ();
0x00000a8c cmp r0, 0 |
| if (r0 == 0) {
0x00000a90 ldrne r1, [r0] | r1 = *(r0);
| }
| if (r0 != 0) {
0x00000a94 bne 0xab0 | goto label_2;
| }
| }
0x00000a98 mov r3, 0 | r3 = 0;
| do {
0x00000a9c add r2, r6, r3, lsl 3 | r2 = r6 + (r3 << 3);
0x00000aa0 ldrb r2, [r2, 4] | r2 = *((r2 + 4));
0x00000aa4 cmp r2, r5 |
| if (r2 == r5) {
0x00000aa8 bne 0xad0 |
0x00000aac ldr r1, [r6, r3, lsl 3] | offset_1 = r3 << 3;
| r1 = *((r6 + offset_1));
| label_2:
0x00000ab0 ldr r0, [pc, 0x3c] | r0 = "rintf";
0x00000ab4 bic r4, r4, r7 | r4 = BIT_MASK (r4, r7);
0x00000ab8 add r0, pc, r0 | r0 = pc + r0;
0x00000abc bl 0x614 | printf (r0)
0x00000ac0 mov r3, 1 | r3 = 1;
0x00000ac4 b 0xa34 | goto label_0;
| label_3:
0x00000ac8 mov r5, 0 | r5 = 0;
0x00000acc b 0xa58 | goto label_1;
| }
0x00000ad0 add r3, r3, 1 | r3++;
0x00000ad4 cmp r3, 0x12 |
0x00000ad8 bne 0xa9c |
| } while (r3 != 0x12);
0x00000adc mov r1, 0 | r1 = 0;
0x00000ae0 b 0xab0 | goto label_2;
| }
[*] Function printf used 2 times libip6t_ipv6header.so