[*] Binary protection state of libxt_tcp.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libxt_tcp.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/xtables/libxt_tcp.so @ 0xb08 */
| #include <stdint.h>
|
; (fcn) fcn.00000b08 () | void fcn_00000b08 (int16_t arg1) {
| r0 = arg1;
0x00000b08 invalid | goto label_3;
0x00000b0a ands r1, r0, 1 | r1 = r0 & 1;
0x00000b0e push {r4, r5, r6, lr} |
0x00000b10 mov r6, r0 | r6 = r0;
0x00000b12 itt ne |
| if (r1 == r0) {
0x00000b14 movne r5, 0xfe | r5 = 0xfe;
| }
| if (r1 == r0) {
0x00000b16 movne r4, 0 | r4 = 0;
| }
| if (r1 != r0) {
0x00000b18 bne 0xb36 | goto label_1;
| }
| label_0:
0x00000b1a lsls r2, r6, 0x1e | r2 = r6 << 0x1e;
| if (r2 < r6) {
0x00000b1c bmi 0xb64 | goto label_4;
| }
0x00000b1e ldr r2, [pc, 0x58] |
0x00000b20 movs r4, 1 | r4 = 1;
0x00000b22 add r2, pc | r2 = 0x16a0;
| do {
0x00000b24 add.w r3, r2, r4, lsl 3 | r3 = r2 + (r4 << 3);
0x00000b28 adds r4, 1 | r4++;
0x00000b2a ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
0x00000b2c tst r6, r3 |
0x00000b2e beq 0xb24 |
| } while ((r6 & r3) == 0);
| label_2:
0x00000b30 mvns r3, r3 | r3 = ~r3;
0x00000b32 uxtb r5, r3 | r5 = (int8_t) r3;
| if (r1 != 0) {
0x00000b34 cbnz r1, 0xb5c | goto label_5;
| }
| label_1:
0x00000b36 ldr r3, [pc, 0x44] |
0x00000b38 movs r0, 1 | r0 = 1;
0x00000b3a ldr r1, [pc, 0x44] |
0x00000b3c add r3, pc | r3 = 0x16be;
0x00000b3e ldr.w r2, [r3, r4, lsl 3] | r2 = *(0x16be);
0x00000b42 add r1, pc | r1 = 0x16c8;
0x00000b44 blx 0x7e0 | fcn_000007e0 ();
0x00000b48 ands r6, r5 | r6 &= r5;
| if (r6 == r5) {
0x00000b4a beq 0xb6a | goto label_6;
| }
0x00000b4c lsls r3, r6, 0x1f | r3 = r6 << 0x1f;
0x00000b4e mov.w r1, 1 | r1 = 1;
0x00000b52 mov.w r4, 0 | r4 = 0;
0x00000b56 mov.w r5, 0xfe | r5 = 0xfe;
| if (r3 >= r6) {
0x00000b5a bpl 0xb1a | goto label_0;
| }
| label_5:
0x00000b5c movs r0, 0x2c | r0 = 0x2c;
0x00000b5e blx 0x7d0 | printf_chk ()
0x00000b62 b 0xb36 | goto label_1;
| label_4:
0x00000b64 movs r4, 1 | r4 = 1;
0x00000b66 movs r3, 2 | r3 = 2;
0x00000b68 b 0xb30 | goto label_2;
| label_6:
0x00000b6a pop {r4, r5, r6, pc} |
| label_3:
0x00000b6c ldr r1, [pc, 0x14] |
0x00000b6e movs r0, 1 | r0 = 1;
0x00000b70 add r1, pc | r1 = 0x16f8;
0x00000b72 b.w 0x7dc | return void (*0x7dc)() ();
| }
[*] Function printf used 2 times libxt_tcp.so