[*] 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