[*] Binary protection state of libdaemon.so.0.5.0
Partial RELRO No Canary found NX disabled DSO No RPATH No RUNPATH No Symbols
[*] Function fprintf tear down of libdaemon.so.0.5.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/libdaemon.so.0.5.0 @ 0x1634 */
| #include <stdint.h>
|
; (fcn) sym.daemon_logv () | void daemon_logv (int32_t arg1, int32_t arg2) {
| r0 = arg1;
| r1 = arg2;
0x00001634 push {r4, r5, r6, r7, r8, sb, sl, lr} |
0x00001638 ldr r4, [pc, 0xdc] | r4 = *(0x1718);
0x0000163c mov sl, r0 | sl = r0;
0x00001640 mov r5, r1 | r5 = r1;
0x00001644 mov r6, r2 | r6 = r2;
0x00001648 bl 0x13f0 | errno_location ();
0x0000164c ldr r3, [pc, 0xcc] | r3 = *(0x171c);
0x00001650 add r4, pc, r4 | r4 = pc + r4;
0x00001654 ldr r7, [r4, r3] | r7 = *(0x1718);
0x00001658 ldr r3, [r7] | r3 = *(0x1718);
0x0000165c tst r3, 1 |
0x00001660 mov r8, r0 | r8 = r0;
0x00001664 ldr sb, [r0] | sb = *(r0);
| if ((r3 & 1) != 0) {
0x00001668 beq 0x16a0 |
0x0000166c ldr r3, [pc, 0xb0] | r3 = *(0x1720);
0x00001670 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00001674 ldr r0, [r3] | r0 = *(0x1720);
0x00001678 cmp r0, 0 |
| if (r0 != 0) {
0x0000167c ldreq r0, [pc, 0xa4] | r0 = *((pc + 0xa4));
| }
| if (r0 != 0) {
0x00001680 addeq r0, pc, r0 | r0 = pc + r0;
| }
0x00001684 mov r2, 0x18 | r2 = 0x18;
0x00001688 mov r1, 1 | r1 = 1;
0x0000168c bl 0x1300 | openlog ();
0x00001690 mov r2, r6 | r2 = r6;
0x00001694 mov r1, r5 | r1 = r5;
0x00001698 orr r0, sl, 0x18 | r0 = sl | 0x18;
0x0000169c bl 0x13fc | vsyslog ();
| }
0x000016a0 ldr r3, [pc, 0x84] |
0x000016a4 add r3, pc, r3 | r3 = pc + r3;
0x000016a8 ldr r3, [r3] | r3 = *(0x1728);
0x000016ac cmp r3, sl |
| if (r3 >= sl) {
0x000016b0 blt 0x1714 |
0x000016b4 ldr r3, [r7] | r3 = *(r7);
0x000016b8 tst r3, 2 |
| if ((r3 & 2) != 0) {
0x000016bc beq 0x16e4 |
0x000016c0 ldr r3, [pc, 0x68] | r3 = *(0x172c);
0x000016c4 mov r1, r5 | r1 = r5;
0x000016c8 ldr sl, [r4, r3] | sl = *((r4 + r3));
0x000016cc mov r2, r6 | r2 = r6;
0x000016d0 ldr r0, [sl] | r0 = *(sl);
0x000016d4 bl 0x1474 | vfprintf (r0, r1, r2)
0x000016d8 ldr r1, [sl] | r1 = *(sl);
0x000016dc mov r0, 0xa | r0 = 0xa;
0x000016e0 bl 0x13cc | fputc (r0, r1);
| }
0x000016e4 ldr r3, [r7] | r3 = *(r7);
0x000016e8 tst r3, 4 |
| if ((r3 & 4) == 0) {
0x000016ec beq 0x1714 | goto label_0;
| }
0x000016f0 ldr r3, [pc, 0x3c] | r3 = *(0x1730);
0x000016f4 mov r1, r5 | r1 = r5;
0x000016f8 ldr r4, [r4, r3] | r4 = *((r4 + r3));
0x000016fc mov r2, r6 | r2 = r6;
0x00001700 ldr r0, [r4] | r0 = *(r4);
0x00001704 bl 0x1474 | vfprintf (r0, r1, r2)
0x00001708 ldr r1, [r4] | r1 = *(r4);
0x0000170c mov r0, 0xa | r0 = 0xa;
0x00001710 bl 0x13cc | fputc (r0, r1);
| }
| label_0:
0x00001714 str sb, [r8] | *(r8) = sb;
0x00001718 pop {r4, r5, r6, r7, r8, sb, sl, pc} |
| }
[*] Function fprintf used 3 times libdaemon.so.0.5.0