[*] Binary protection state of libnipv4ll.so.0

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function strcpy tear down of libnipv4ll.so.0

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnipv4ll.so.0 @ 0xd94 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.n_ipv4ll_free ()             | uint32_t n_ipv4ll_free (int16_t arg1) {
                                             |     r0 = arg1;
    0x00000d94 invalid                       |     goto label_0;
    0x00000d96 push {r4, r5, r6, lr}         |     
    0x00000d98 mov r5, r0                    |     r5 = r0;
    0x00000d9a mov r6, r0                    |     r6 = r0;
    0x00000d9c ldr r0, [r5, 0x18]!           |     r0 = *((r5 += 0x18));
    0x00000da0 cmp r5, r0                    |     
    0x00000da2 ldr r4, [r0]                  |     r4 = *(r0);
    0x00000da4 mov r2, r0                    |     r2 = r0;
                                             |     if (r5 == r0) {
    0x00000da6 beq 0xdc2                     |         goto label_1;
                                             |     }
                                             |     do {
    0x00000da8 cmp r2, r4                    |         
                                             |         if (r2 != r4) {
    0x00000daa beq 0xdb2                     |             
    0x00000dac ldr r3, [r0, 4]               |             r3 = *((r0 + 4));
    0x00000dae str r3, [r4, 4]               |             *((r4 + 4)) = r3;
    0x00000db0 str r4, [r3]                  |             *(r3) = r4;
                                             |         }
    0x00000db2 blx 0xad4                     |         fcn_00000ad4 ();
    0x00000db6 ldr r3, [r4]                  |         r3 = *(r4);
    0x00000db8 cmp r4, r5                    |         
    0x00000dba mov r0, r4                    |         r0 = r4;
    0x00000dbc mov r2, r4                    |         r2 = r4;
    0x00000dbe mov r4, r3                    |         r4 = r3;
    0x00000dc0 bne 0xda8                     |         
                                             |     } while (r4 != r5);
                                             | label_1:
    0x00000dc2 ldr r0, [r6, 0x28]            |     r0 = *((r6 + 0x28));
    0x00000dc4 bl 0x1d78                     |     fcn_00001d78 ();
    0x00000dc8 ldr r0, [r6, 0x2c]            |     r0 = *((r6 + 0x2c));
    0x00000dca bl 0x1d94                     |     fcn_00001d94 (r0);
    0x00000dce ldr r0, [r6, 0x24]            |     r0 = *((r6 + 0x24));
    0x00000dd0 bl 0x130c                     |     fcn_0000130c (r0);
    0x00000dd4 mov r0, r6                    |     r0 = r6;
    0x00000dd6 blx 0xad4                     |     fcn_00000ad4 ();
    0x00000dda movs r0, 0                    |     r0 = 0;
    0x00000ddc pop {r4, r5, r6, pc}          |     
                                             | label_0:
    0x00000dde movs r0, 0                    |     r0 = 0;
    0x00000de0 bx lr                         |     return r0;
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-50593792.squashfs_v4_le_extract/usr/lib/libnipv4ll.so.0 @ 0x10dc */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) sym.n_ipv4ll_pop_event ()    | void n_ipv4ll_pop_event (int16_t arg1, int16_t arg2) {
                                         |     r0 = arg1;
                                         |     r1 = arg2;
    0x000010dc invalid                   |     
    0x000010e0 ldr r0, [r4, 0x18]!       |     r0 = *((r4 += 0x18));
    0x000010e4 mov r5, r1                |     r5 = r1;
    0x000010e6 cmp r0, r4                |     
    0x000010e8 ldr r6, [r0]              |     r6 = *(r0);
                                         |     if (r0 == r4) {
    0x000010ea beq 0x1122                |         goto label_1;
                                         |     }
    0x000010ec mov r1, r0                |     r1 = r0;
                                         |     do {
    0x000010ee ldrb r2, [r0, 0x1a]       |         r2 = *((r0 + 0x1a));
    0x000010f0 mov r3, r2                |         r3 = r2;
    0x000010f2 lsls r2, r2, 0x1f         |         r2 <<= 0x1f;
                                         |         if (r2 >= r2) {
    0x000010f4 bmi 0x1106                |             
    0x000010f6 add.w r2, r0, 8           |             r2 = r0 + 8;
    0x000010fa orr r3, r3, 1             |             r3 |= 1;
    0x000010fe strb r3, [r0, 0x1a]       |             *((r0 + 0x1a)) = r3;
                                         | label_0:
    0x00001100 movs r0, 0                |             r0 = 0;
    0x00001102 str r2, [r5]              |             *(r5) = r2;
    0x00001104 pop {r4, r5, r6, pc}      |             
                                         |         }
    0x00001106 ldr r3, [r0]              |         r3 = *(r0);
    0x00001108 cmp r3, r1                |         
                                         |         if (r3 != r1) {
    0x0000110a beq 0x1112                |             
    0x0000110c ldr r2, [r0, 4]           |             r2 = *((r0 + 4));
    0x0000110e str r2, [r3, 4]           |             *((r3 + 4)) = r2;
    0x00001110 str r3, [r2]              |             *(r2) = r3;
                                         |         }
    0x00001112 blx 0xad4                 |         fcn_00000ad4 ();
    0x00001116 ldr r3, [r6]              |         r3 = *(r6);
    0x00001118 cmp r6, r4                |         
    0x0000111a mov r0, r6                |         r0 = r6;
    0x0000111c mov r1, r6                |         r1 = r6;
    0x0000111e mov r6, r3                |         r6 = r3;
    0x00001120 bne 0x10ee                |         
                                         |     } while (r6 != r4);
                                         | label_1:
    0x00001122 movs r2, 0                |     r2 = 0;
    0x00001124 b 0x1100                  |     goto label_0;
                                         | }

[*] Function strcpy used 1 times libnipv4ll.so.0