[*] 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-50593792.squashfs_v4_le_extract/usr/lib/xtables/libxt_tcp.so @ 0xc88 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) fcn.00000c88 ()                          | void fcn_00000c88 (int16_t arg1) {
                                                     |     r0 = arg1;
    0x00000c88 invalid                               |     goto label_3;
    0x00000c8a push {r3, r4, r5, r6, r7, lr}         |     
    0x00000c8c mov r5, r0                            |     r5 = r0;
    0x00000c8e ldr r6, [pc, 0x60]                    |     
    0x00000c90 movs r0, 0                            |     r0 = 0;
    0x00000c92 add r6, pc                            |     r6 = 0x1988;
    0x00000c94 adds r6, 0x30                         |     r6 += 0x30;
                                                     | label_0:
    0x00000c96 ands r3, r5, 1                        |     r3 = r5 & 1;
    0x00000c9a it eq                                 |     
                                                     |     if (r3 != r5) {
    0x00000c9c moveq r2, 2                           |         r2 = 2;
                                                     |     }
                                                     |     if (r3 == r5) {
    0x00000c9e beq 0xca4                             |         goto label_4;
                                                     |     }
    0x00000ca0 b 0xcde                               |     goto label_5;
                                                     |     do {
    0x00000ca2 ldr r2, [r1, 0xc]                     |         r2 = *((r1 + 0xc));
                                                     | label_4:
    0x00000ca4 tst r2, r5                            |         
    0x00000ca6 add.w r3, r3, 1                       |         r3++;
    0x00000caa add.w r1, r6, r3, lsl 3               |         r1 = r6 + (r3 << 3);
    0x00000cae beq 0xca2                             |         
                                                     |     } while ((r2 & r5) == 0);
    0x00000cb0 ldr r1, [pc, 0x40]                    |     
    0x00000cb2 mvns r2, r2                           |     r2 = ~r2;
    0x00000cb4 uxtb r4, r2                           |     r4 = (int8_t) r2;
    0x00000cb6 add r1, pc                            |     r1 = 0x19ae;
    0x00000cb8 add.w r3, r1, r3, lsl 3               |     r3 = r1 + (r3 << 3);
    0x00000cbc ldr r7, [r3, 0x30]                    |     r7 = *((r3 + 0x30));
                                                     |     if (r0 != 0) {
                                                     | label_2:
    0x00000cbe cbnz r0, 0xcd6                        |         goto label_6;
                                                     |     }
                                                     | label_1:
    0x00000cc0 ldr r1, [pc, 0x34]                    |     
    0x00000cc2 mov r2, r7                            |     r2 = r7;
    0x00000cc4 movs r0, 1                            |     r0 = 1;
    0x00000cc6 add r1, pc                            |     r1 = 0x19c2;
    0x00000cc8 blx 0x73c                             |     fcn_0000073c ();
    0x00000ccc ands r5, r4                           |     r5 &= r4;
    0x00000cce mov.w r0, 1                           |     r0 = 1;
                                                     |     if (r5 != r4) {
    0x00000cd2 bne 0xc96                             |         goto label_0;
                                                     |     }
    0x00000cd4 pop {r3, r4, r5, r6, r7, pc}          |     
                                                     | label_6:
    0x00000cd6 movs r0, 0x2c                         |     r0 = 0x2c;
    0x00000cd8 blx 0x72c                             |     printf_chk ()
    0x00000cdc b 0xcc0                               |     goto label_1;
                                                     | label_5:
    0x00000cde ldr r7, [pc, 0x1c]                    |     
    0x00000ce0 movs r4, 0xfe                         |     r4 = 0xfe;
    0x00000ce2 add r7, pc                            |     r7 = 0x19e4;
    0x00000ce4 b 0xcbe                               |     goto label_2;
                                                     | label_3:
    0x00000ce6 ldr r1, [pc, 0x18]                    |     
    0x00000ce8 movs r0, 1                            |     r0 = 1;
    0x00000cea add r1, pc                            |     r1 = 0x19f0;
    0x00000cec b.w 0x738                             |     return void (*0x738)() ();
                                                     | }

[*] Function printf used 2 times libxt_tcp.so