[*] Binary protection state of libcgi_header.so.0.0.13
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libcgi_header.so.0.0.13
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libcgi_header.so.0.0.13 @ 0xc90 */
| #include <stdint.h>
|
; (fcn) sym.cgi_header_create_response_header () | void cgi_header_create_response_header (int16_t arg1, int16_t arg2, int16_t arg3) {
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00000c90 mvnsmi lr, sp, lsr 18 | __asm ("mvnsmi lr, sp, lsr 18");
0x00000c94 mov r5, r2 | r5 = r2;
0x00000c96 mov r4, r0 | r4 = r0;
0x00000c98 mov r2, r0 | r2 = r0;
| if (r0 == 0) {
0x00000c9a cbz r0, 0xd02 | goto label_1;
| }
0x00000c9c ldr r0, [pc, 0x80] |
0x00000c9e mov r6, r1 | r6 = r1;
0x00000ca0 ldr r1, [pc, 0x80] |
0x00000ca2 add r0, pc | r0 = 0x19c6;
0x00000ca4 add r1, pc | r1 = 0x19cc;
0x00000ca6 blx 0x9b8 | r0 = g_strdup_printf ()
0x00000caa mov r7, r0 | r7 = r0;
| if (r5 != 0) {
0x00000cac cbnz r5, 0xd08 | goto label_2;
| }
0x00000cae cbz r6, 0xcc0 |
| while (r6 != 0) {
0x00000cb0 ldr r1, [pc, 0x74] |
0x00000cb2 mov r2, r6 | r2 = r6;
0x00000cb4 ldr r0, [pc, 0x74] |
0x00000cb6 add r1, pc | r1 = 0x19e2;
0x00000cb8 add r0, pc | r0 = 0x19e8;
0x00000cba blx 0x9b8 | r0 = g_strdup_printf ()
0x00000cbe mov r6, r0 | r6 = r0;
| label_0:
0x00000cc0 mov r1, r5 | r1 = r5;
0x00000cc2 movs r2, 0 | r2 = 0;
0x00000cc4 mov r0, r7 | r0 = r7;
0x00000cc6 blx 0x988 | g_strconcat ();
0x00000cca mov r1, r6 | r1 = r6;
0x00000ccc movs r2, 0 | r2 = 0;
0x00000cce mov r4, r0 | r4 = r0;
0x00000cd0 blx 0x988 | g_strconcat ();
0x00000cd4 ldr r1, [pc, 0x58] |
0x00000cd6 movs r2, 0 | r2 = 0;
0x00000cd8 mov r8, r0 | r8 = r0;
0x00000cda add r1, pc | r1 = 0x1a0e;
0x00000cdc blx 0x988 | r0 = g_strconcat ();
0x00000ce0 mov r2, r0 | r2 = r0;
0x00000ce2 mov r0, r4 | r0 = r4;
0x00000ce4 mov r4, r2 | r4 = r2;
0x00000ce6 blx 0x934 | g_free ();
0x00000cea mov r0, r8 | r0 = r8;
0x00000cec blx 0x934 | g_free ();
0x00000cf0 mov r0, r6 | r0 = r6;
0x00000cf2 blx 0x934 | g_free ();
0x00000cf6 mov r0, r7 | r0 = r7;
0x00000cf8 blx 0x934 | g_free ();
0x00000cfc mov r0, r5 | r0 = r5;
0x00000cfe blx 0x934 | g_free ();
| label_1:
0x00000d02 mov r0, r4 | r0 = r4;
0x00000d04 pop.w {r4, r5, r6, r7, r8, pc} |
| label_2:
0x00000d08 ldr r1, [pc, 0x28] |
0x00000d0a mov r2, r5 | r2 = r5;
0x00000d0c ldr r0, [pc, 0x28] |
0x00000d0e add r1, pc | r1 = 0x1a46;
0x00000d10 add r0, pc | r0 = 0x1a4c;
0x00000d12 blx 0x9b8 | r0 = g_strdup_printf ()
0x00000d16 mov r5, r0 | r5 = r0;
0x00000d18 cmp r6, 0 |
0x00000d1a bne 0xcb0 |
| }
0x00000d1c b 0xcc0 | goto label_0;
| }
[*] Function printf used 4 times libcgi_header.so.0.0.13