[*] Binary protection state of libip6t_SNAT.so

  
  	Partial RELRO  No Canary found   NX disabled  DSO          No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of libip6t_SNAT.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_SNAT.so @ 0xe88 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00000e88 ()                  | void fcn_00000e88 (int32_t arg1) {
                                             |     r0 = arg1;
    0x00000e88 ldr r3, [r0]                  |     r3 = *(r0);
    0x00000e8c push {r4, r5, r6, lr}         |     
    0x00000e90 tst r3, 1                     |     
    0x00000e94 mov r4, r0                    |     r4 = r0;
                                             |     if ((r3 & 1) != 0) {
    0x00000e98 beq 0xf10                     |         
    0x00000e9c tst r3, 2                     |         
                                             |         if ((r3 & 2) != 0) {
    0x00000ea0 beq 0xeac                     |             
    0x00000ea4 mov r0, 0x5b                  |             r0 = 0x5b;
    0x00000ea8 bl 0x5f0                      |             putchar (r0);
                                             |         }
    0x00000eac add r6, r4, 4                 |         r6 = r4 + 4;
    0x00000eb0 mov r0, r6                    |         r0 = r6;
    0x00000eb4 bl 0x620                      |         xtables_ip6addr_to_numeric ();
    0x00000eb8 add r5, r4, 0x14              |         r5 = r4 + 0x14;
    0x00000ebc mov r1, r0                    |         r1 = r0;
    0x00000ec0 ldr r0, [pc, 0xac]            |         r0 = *(0xf70);
    0x00000ec4 add r0, pc, r0                |         r0 = pc + r0;
    0x00000ec8 bl 0x5fc                      |         printf (r0, r1, r2, r3, r4, r5)
    0x00000ecc mov r2, 0x10                  |         r2 = 0x10;
    0x00000ed0 mov r1, r5                    |         r1 = r5;
    0x00000ed4 mov r0, r6                    |         r0 = r6;
    0x00000ed8 bl 0x650                      |         r0 = memcmp (r0, r1, r2);
    0x00000edc cmp r0, 0                     |         
                                             |         if (r0 != 0) {
    0x00000ee0 beq 0xefc                     |             
    0x00000ee4 mov r0, r5                    |             r0 = r5;
    0x00000ee8 bl 0x620                      |             r0 = xtables_ip6addr_to_numeric ();
    0x00000eec mov r1, r0                    |             r1 = r0;
    0x00000ef0 ldr r0, [pc, 0x80]            |             r0 = *(0xf74);
    0x00000ef4 add r0, pc, r0                |             r0 = pc + r0;
    0x00000ef8 bl 0x5fc                      |             printf (r0, r1)
                                             |         }
    0x00000efc ldr r3, [r4]                  |         r3 = *(r4);
    0x00000f00 tst r3, 2                     |         
    0x00000f04 popeq {r4, r5, r6, pc}        |         
    0x00000f08 mov r0, 0x5d                  |         r0 = 0x5d;
    0x00000f0c bl 0x5f0                      |         putchar (r0);
                                             |     }
    0x00000f10 ldr r3, [r4]                  |     r3 = *(r4);
    0x00000f14 tst r3, 2                     |     
    0x00000f18 popeq {r4, r5, r6, pc}        |     
    0x00000f1c mov r0, 0x3a                  |     r0 = 0x3a;
    0x00000f20 bl 0x5f0                      |     putchar (r0);
    0x00000f24 ldrh r3, [r4, 0x24]           |     r3 = *((r4 + 0x24));
    0x00000f28 ldr r0, [pc, 0x4c]            |     r0 = "_";
    0x00000f2c lsr r1, r3, 8                 |     r1 = r3 >> 8;
    0x00000f30 orr r1, r1, r3, lsl 8         |     r1 |= (r3 << 8);
    0x00000f34 lsl r1, r1, 0x10              |     r1 <<= 0x10;
    0x00000f38 lsr r1, r1, 0x10              |     r1 >>= 0x10;
    0x00000f3c add r0, pc, r0                |     r0 = pc + r0;
    0x00000f40 bl 0x5fc                      |     printf ("_", r1, r2, r3)
    0x00000f44 ldrh r3, [r4, 0x26]           |     r3 = *((r4 + 0x26));
    0x00000f48 ldrh r2, [r4, 0x24]           |     r2 = *((r4 + 0x24));
    0x00000f4c cmp r2, r3                    |     
    0x00000f50 popeq {r4, r5, r6, pc}        |     
    0x00000f54 lsr r1, r3, 8                 |     r1 = r3 >> 8;
    0x00000f58 ldr r0, [pc, 0x20]            |     r0 = *(0xf7c);
    0x00000f5c orr r1, r1, r3, lsl 8         |     r1 |= (r3 << 8);
    0x00000f60 lsl r1, r1, 0x10              |     r1 <<= 0x10;
    0x00000f64 lsr r1, r1, 0x10              |     r1 >>= 0x10;
    0x00000f68 add r0, pc, r0                |     r0 = pc + r0;
    0x00000f6c pop {r4, r5, r6, lr}          |     
    0x00000f70 b 0x5fc                       |     return void (*0x5fc)() ();
                                             | }

[*] Function printf used 4 times libip6t_SNAT.so