[*] Binary protection state of libwebsockets.so.12

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


[*] Function fprintf tear down of libwebsockets.so.12

    ; 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/libwebsockets.so.12 @ 0x77a0 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) sym.lwsl_emit_stderr ()          | void lwsl_emit_stderr (int32_t arg1, int32_t arg2) {
                                             |     int32_t var_8h;
                                             |     int32_t var_14h;
                                             |     int32_t var_4ch;
                                             |     r0 = arg1;
                                             |     r1 = arg2;
    0x000077a0 push {r4, r5, r6, r7, lr}     |     
    0x000077a4 ldr r4, [pc, 0xd8]            |     r4 = *(0x7880);
    0x000077a8 ldr r5, [pc, 0xd8]            |     r5 = *(0x7884);
    0x000077ac add r4, pc, r4                |     r4 = pc + r4;
    0x000077b0 ldrb r3, [r4]                 |     r3 = *(r4);
    0x000077b4 add r5, pc, r5                |     r5 = pc + r5;
    0x000077b8 cmp r3, 0                     |     
    0x000077bc sub sp, sp, 0x4c              |     
    0x000077c0 mov r7, r0                    |     r7 = r0;
    0x000077c4 mov r6, r1                    |     r6 = r1;
                                             |     if (r3 == 0) {
    0x000077c8 bne 0x77dc                    |         
    0x000077cc mov r0, 2                     |         r0 = 2;
    0x000077d0 bl 0x4750                     |         r0 = isatty (r0);
    0x000077d4 orr r0, r0, 2                 |         r0 |= 2;
    0x000077d8 strb r0, [r4]                 |         *(r4) = r0;
                                             |     }
    0x000077dc add r4, sp, 0x14              |     r4 += var_14h;
    0x000077e0 mov r2, 0x32                  |     r2 = 0x32;
    0x000077e4 mov r1, r4                    |     r1 = r4;
    0x000077e8 mov r0, r7                    |     r0 = r7;
    0x000077ec bl 0x4768                     |     fcn_00004768 ();
    0x000077f0 ldr r3, [pc, 0x94]            |     r3 = *(0x7888);
    0x000077f4 add r3, pc, r3                |     r3 = pc + r3;
    0x000077f8 ldrb r3, [r3]                 |     r3 = *(r3);
    0x000077fc cmp r3, 3                     |     
                                             |     if (r3 != 3) {
    0x00007800 bne 0x7860                    |         goto label_0;
                                             |     }
    0x00007804 mov r3, 0xa                   |     r3 = 0xa;
    0x00007808 mov r2, 0x400                 |     r2 = 0x400;
                                             |     do {
    0x0000780c tst r7, r2                    |         
                                             |         if ((r7 & r2) != 0) {
    0x00007810 bne 0x7824                    |             goto label_1;
                                             |         }
    0x00007814 sub r3, r3, 1                 |         r3--;
    0x00007818 cmn r3, 1                     |         
    0x0000781c asr r2, r2, 1                 |         r2 >>= 1;
    0x00007820 bne 0x780c                    |         
                                             |     } while (r3 != 1);
                                             | label_1:
    0x00007824 ldr r2, [pc, 0x64]            |     r2 = *(0x788c);
    0x00007828 ldr r1, [pc, 0x64]            |     r1 = *(0x7890);
    0x0000782c add r2, pc, r2                |     r2 = pc + r2;
    0x00007830 add r3, r2, r3, lsl 2         |     r3 = r2 + (r3 << 2);
    0x00007834 ldr r2, [pc, 0x5c]            |     r2 = *(0x7894);
    0x00007838 ldr r3, [r3, 0x34]            |     r3 = *((r3 + 0x34));
    0x0000783c ldr r0, [r5, r2]              |     r0 = *((r5 + r2));
    0x00007840 mov r2, 0x1b                  |     r2 = 0x1b;
    0x00007844 str r2, [sp, 8]               |     var_8h = r2;
    0x00007848 stm sp, {r4, r6}              |     *(sp) = r4;
                                             |     *((sp + 4)) = r6;
    0x0000784c ldr r0, [r0]                  |     r0 = *(r0);
    0x00007850 add r1, pc, r1                |     r1 = pc + r1;
    0x00007854 bl 0x4924                     |     fprintf (r0, r1, r2, r3)
                                             |     do {
    0x00007858 add sp, sp, 0x4c              |         
    0x0000785c pop {r4, r5, r6, r7, pc}      |         
                                             | label_0:
    0x00007860 ldr r3, [pc, 0x30]            |         r3 = *(0x7894);
    0x00007864 ldr r1, [pc, 0x30]            |         r1 = *(0x7898);
    0x00007868 ldr r0, [r5, r3]              |         r0 = *((r5 + r3));
    0x0000786c mov r2, r4                    |         r2 = r4;
    0x00007870 mov r3, r6                    |         r3 = r6;
    0x00007874 add r1, pc, r1                |         r1 = pc + r1;
    0x00007878 ldr r0, [r0]                  |         r0 = *(r0);
    0x0000787c bl 0x4924                     |         fprintf (r0, r1, r2, r3)
    0x00007880 b 0x7858                      |         
                                             |     } while (1);
                                             | }

[*] Function fprintf used 3 times libwebsockets.so.12