[*] Binary protection state of libnipv4ll.so.0
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function popen 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 popen used 1 times libnipv4ll.so.0