[*] Binary protection state of libxtables.so.12.2.0

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


[*] Function sprintf tear down of libxtables.so.12.2.0

    ; 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/libxtables.so.12.2.0 @ 0x51f0 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) sym.xtables_ip6mask_to_numeric ()    | void xtables_ip6mask_to_numeric (int32_t arg1) {
                                                 |     r0 = arg1;
    0x000051f0 push {r4, r5, r6, lr}             |     
    0x000051f4 mov r5, r0                        |     r5 = r0;
    0x000051f8 bl 0x2208                         |     r0 = fcn_00002208 ();
    0x000051fc cmn r0, 1                         |     
                                                 |     if (r0 != 1) {
    0x00005200 bne 0x5240                        |         goto label_0;
                                                 |     }
    0x00005204 ldr r4, [pc, 0x70]                |     
    0x00005208 ldr r1, [pc, 0x70]                |     r1 = *(0x527c);
    0x0000520c add r4, pc, r4                    |     r4 = pc + r4;
    0x00005210 add r4, r4, 0x870                 |     r4 = 0x5ae8;
    0x00005214 add r4, r4, 4                     |     r4 += 4;
    0x00005218 add r1, pc, r1                    |     r1 = pc + r1;
    0x0000521c mov r0, r4                        |     r0 = r4;
    0x00005220 bl 0x21c0                         |     strcpy (r0, r1);
    0x00005224 mov r0, r5                        |     r0 = r5;
    0x00005228 bl 0x231c                         |     r0 = fcn_0000231c ();
    0x0000522c mov r1, r0                        |     r1 = r0;
    0x00005230 mov r0, r4                        |     r0 = r4;
    0x00005234 bl 0x23f4                         |     strcat (r0, r1);
                                                 |     do {
    0x00005238 mov r0, r4                        |         r0 = r4;
    0x0000523c pop {r4, r5, r6, pc}              |         
                                                 | label_0:
    0x00005240 cmp r0, 0x80                      |         
    0x00005244 mov r2, r0                        |         r2 = r0;
                                                 |         if (r0 == 0x80) {
    0x00005248 beq 0x5270                        |             goto label_1;
                                                 |         }
    0x0000524c ldr r4, [pc, 0x30]                |         
    0x00005250 ldr r1, [pc, 0x30]                |         r1 = *(0x5284);
    0x00005254 add r4, pc, r4                    |         r4 = pc + r4;
    0x00005258 add r4, r4, 0x870                 |         r4 = 0x5af0;
    0x0000525c add r4, r4, 4                     |         r4 += 4;
    0x00005260 add r1, pc, r1                    |         r1 = pc + r1;
    0x00005264 mov r0, r4                        |         r0 = r4;
    0x00005268 bl 0x2538                         |         sprintf (r0, r1, r2)
    0x0000526c b 0x5238                          |         
                                                 |     } while (1);
                                                 | label_1:
    0x00005270 ldr r0, [pc, 0x14]                |     r0 = *(0x5288);
    0x00005274 add r0, pc, r0                    |     r0 = pc + r0;
    0x00005278 pop {r4, r5, r6, pc}              |     
                                                 | }
    ; 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/libxtables.so.12.2.0 @ 0x4a08 */
                                                     | #include <stdint.h>
                                                     |  
    ; (fcn) sym.xtables_ipmask_to_numeric ()         | void xtables_ipmask_to_numeric (int32_t arg1) {
                                                     |     r0 = arg1;
    0x00004a08 push {r4, lr}                         |     
    0x00004a0c mov r4, r0                            |     r4 = r0;
    0x00004a10 bl 0x24a8                             |     r0 = fcn_000024a8 ();
    0x00004a14 cmn r0, 1                             |     
                                                     |     if (r0 != 1) {
    0x00004a18 bne 0x4a50                            |         goto label_0;
                                                     |     }
    0x00004a1c mov r0, r4                            |     r0 = r4;
    0x00004a20 bl 0x2340                             |     fcn_00002340 ();
    0x00004a24 ldr r4, [pc, 0x58]                    |     
    0x00004a28 ldr r1, [pc, 0x58]                    |     r1 = *(0x4a84);
    0x00004a2c add r4, pc, r4                        |     r4 = pc + r4;
    0x00004a30 add r4, r4, 0x420                     |     r4 = 0x4ea0;
    0x00004a34 add r4, r4, 1                         |     r4++;
    0x00004a38 add r1, pc, r1                        |     r1 = pc + r1;
    0x00004a3c mov r2, r0                            |     r2 = r0;
                                                     |     do {
    0x00004a40 mov r0, r4                            |         r0 = r4;
    0x00004a44 bl 0x2538                             |         sprintf (r0, r1, r2)
    0x00004a48 mov r0, r4                            |         r0 = r4;
    0x00004a4c pop {r4, pc}                          |         
                                                     | label_0:
    0x00004a50 cmp r0, 0x20                          |         
    0x00004a54 mov r2, r0                            |         r2 = r0;
                                                     |         if (r0 == 0x20) {
    0x00004a58 beq 0x4a78                            |             goto label_1;
                                                     |         }
    0x00004a5c ldr r4, [pc, 0x28]                    |         
    0x00004a60 ldr r1, [pc, 0x28]                    |         r1 = *(0x4a8c);
    0x00004a64 add r4, pc, r4                        |         r4 = pc + r4;
    0x00004a68 add r4, r4, 0x420                     |         r4 = 0x4ea8;
    0x00004a6c add r4, r4, 1                         |         r4++;
    0x00004a70 add r1, pc, r1                        |         r1 = pc + r1;
    0x00004a74 b 0x4a40                              |         
                                                     |     } while (1);
                                                     | label_1:
    0x00004a78 ldr r0, [pc, 0x14]                    |     r0 = *(0x4a90);
    0x00004a7c add r0, pc, r0                        |     r0 = pc + r0;
    0x00004a80 pop {r4, pc}                          |     
                                                     | }

[*] Function sprintf used 3 times libxtables.so.12.2.0