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

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


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

    ; 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.15 @ 0x96d4 */
                                             | #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;
    0x000096d4 push {r4, r5, r6, r7, lr}     |     
    0x000096d8 ldr r4, [pc, 0xd8]            |     r4 = *(0x97b4);
    0x000096dc ldr r5, [pc, 0xd8]            |     r5 = *(0x97b8);
    0x000096e0 add r4, pc, r4                |     r4 = pc + r4;
    0x000096e4 ldrb r3, [r4]                 |     r3 = *(r4);
    0x000096e8 add r5, pc, r5                |     r5 = pc + r5;
    0x000096ec cmp r3, 0                     |     
    0x000096f0 sub sp, sp, 0x4c              |     
    0x000096f4 mov r7, r0                    |     r7 = r0;
    0x000096f8 mov r6, r1                    |     r6 = r1;
                                             |     if (r3 == 0) {
    0x000096fc bne 0x9710                    |         
    0x00009700 mov r0, 2                     |         r0 = 2;
    0x00009704 bl 0x7038                     |         r0 = isatty (r0);
    0x00009708 orr r0, r0, 2                 |         r0 |= 2;
    0x0000970c strb r0, [r4]                 |         *(r4) = r0;
                                             |     }
    0x00009710 add r4, sp, 0x14              |     r4 += var_14h;
    0x00009714 mov r2, 0x32                  |     r2 = 0x32;
    0x00009718 mov r1, r4                    |     r1 = r4;
    0x0000971c mov r0, r7                    |     r0 = r7;
    0x00009720 bl 0x6f30                     |     fcn_00006f30 ();
    0x00009724 ldr r3, [pc, 0x94]            |     r3 = *(0x97bc);
    0x00009728 add r3, pc, r3                |     r3 = pc + r3;
    0x0000972c ldrb r3, [r3]                 |     r3 = *(r3);
    0x00009730 cmp r3, 3                     |     
                                             |     if (r3 != 3) {
    0x00009734 bne 0x9794                    |         goto label_0;
                                             |     }
    0x00009738 mov r3, 0xb                   |     r3 = 0xb;
    0x0000973c mov r2, 0x800                 |     r2 = 0x800;
                                             |     do {
    0x00009740 tst r7, r2                    |         
                                             |         if ((r7 & r2) != 0) {
    0x00009744 bne 0x9758                    |             goto label_1;
                                             |         }
    0x00009748 sub r3, r3, 1                 |         r3--;
    0x0000974c cmn r3, 1                     |         
    0x00009750 asr r2, r2, 1                 |         r2 >>= 1;
    0x00009754 bne 0x9740                    |         
                                             |     } while (r3 != 1);
                                             | label_1:
    0x00009758 ldr r2, [pc, 0x64]            |     r2 = *(0x97c0);
    0x0000975c ldr r1, [pc, 0x64]            |     r1 = *(0x97c4);
    0x00009760 add r2, pc, r2                |     r2 = pc + r2;
    0x00009764 add r3, r2, r3, lsl 2         |     r3 = r2 + (r3 << 2);
    0x00009768 ldr r2, [pc, 0x5c]            |     r2 = *(0x97c8);
    0x0000976c ldr r3, [r3, 0x38]            |     r3 = *((r3 + 0x38));
    0x00009770 ldr r0, [r5, r2]              |     r0 = *((r5 + r2));
    0x00009774 mov r2, 0x1b                  |     r2 = 0x1b;
    0x00009778 str r2, [sp, 8]               |     var_8h = r2;
    0x0000977c stm sp, {r4, r6}              |     *(sp) = r4;
                                             |     *((sp + 4)) = r6;
    0x00009780 ldr r0, [r0]                  |     r0 = *(r0);
    0x00009784 add r1, pc, r1                |     r1 = pc + r1;
    0x00009788 bl 0x7224                     |     fprintf (r0, r1, r2, r3)
                                             |     do {
    0x0000978c add sp, sp, 0x4c              |         
    0x00009790 pop {r4, r5, r6, r7, pc}      |         
                                             | label_0:
    0x00009794 ldr r3, [pc, 0x30]            |         r3 = *(0x97c8);
    0x00009798 ldr r1, [pc, 0x30]            |         r1 = *(0x97cc);
    0x0000979c ldr r0, [r5, r3]              |         r0 = *((r5 + r3));
    0x000097a0 mov r2, r4                    |         r2 = r4;
    0x000097a4 mov r3, r6                    |         r3 = r6;
    0x000097a8 add r1, pc, r1                |         r1 = pc + r1;
    0x000097ac ldr r0, [r0]                  |         r0 = *(r0);
    0x000097b0 bl 0x7224                     |         fprintf (r0, r1, r2, r3)
    0x000097b4 b 0x978c                      |         
                                             |     } while (1);
                                             | }
    ; 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.15 @ 0x97d4 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.lwsl_emit_stderr_notimestamp ()          | void lwsl_emit_stderr_notimestamp (int32_t arg1, int32_t arg2) {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_4h;
                                                         |     int32_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x000097d4 push {r0, r1, r2, r4, r5, r6, r7, lr}     |     
    0x000097d8 ldr r6, [pc, 0xb0]                        |     r6 = *(0x988c);
    0x000097dc ldr r5, [pc, 0xb0]                        |     r5 = *(0x9890);
    0x000097e0 add r6, pc, r6                            |     r6 = pc + r6;
    0x000097e4 ldrb r3, [r6]                             |     r3 = *(r6);
    0x000097e8 add r5, pc, r5                            |     r5 = pc + r5;
    0x000097ec cmp r3, 0                                 |     
    0x000097f0 mov r7, r0                                |     r7 = r0;
    0x000097f4 mov r4, r1                                |     r4 = r1;
                                                         |     if (r3 == 0) {
    0x000097f8 bne 0x980c                                |         
    0x000097fc mov r0, 2                                 |         r0 = 2;
    0x00009800 bl 0x7038                                 |         r0 = isatty (r0);
    0x00009804 orr r0, r0, 2                             |         r0 |= 2;
    0x00009808 strb r0, [r6]                             |         *(r6) = r0;
                                                         |     }
    0x0000980c ldr r3, [pc, 0x84]                        |     r3 = *(0x9894);
    0x00009810 ldr r3, [r5, r3]                          |     r3 = *((r5 + r3));
    0x00009814 ldr r0, [r3]                              |     r0 = *(0x9894);
    0x00009818 ldr r3, [pc, 0x7c]                        |     r3 = *(0x9898);
    0x0000981c add r3, pc, r3                            |     r3 = pc + r3;
    0x00009820 ldrb r3, [r3]                             |     r3 = *(r3);
    0x00009824 cmp r3, 3                                 |     
                                                         |     if (r3 != 3) {
    0x00009828 bne 0x987c                                |         goto label_0;
                                                         |     }
    0x0000982c mov r3, 0xb                               |     r3 = 0xb;
    0x00009830 mov r2, 0x800                             |     r2 = 0x800;
                                                         |     do {
    0x00009834 tst r7, r2                                |         
                                                         |         if ((r7 & r2) != 0) {
    0x00009838 bne 0x984c                                |             goto label_1;
                                                         |         }
    0x0000983c sub r3, r3, 1                             |         r3--;
    0x00009840 cmn r3, 1                                 |         
    0x00009844 asr r2, r2, 1                             |         r2 >>= 1;
    0x00009848 bne 0x9834                                |         
                                                         |     } while (r3 != 1);
                                                         | label_1:
    0x0000984c ldr r2, [pc, 0x4c]                        |     r2 = *(0x989c);
    0x00009850 ldr r1, [pc, 0x4c]                        |     r1 = *(0x98a0);
    0x00009854 add r2, pc, r2                            |     r2 = pc + r2;
    0x00009858 add r3, r2, r3, lsl 2                     |     r3 = r2 + (r3 << 2);
    0x0000985c mov r2, 0x1b                              |     r2 = 0x1b;
    0x00009860 str r2, [sp, 4]                           |     var_4h = r2;
    0x00009864 str r4, [sp]                              |     *(sp) = r4;
    0x00009868 ldr r3, [r3, 0x38]                        |     r3 = *((r3 + 0x38));
    0x0000986c add r1, pc, r1                            |     r1 = pc + r1;
    0x00009870 bl 0x7224                                 |     fprintf (r0, r1, r2, r3, r4)
    0x00009874 add sp, sp, 0xc                           |     
    0x00009878 pop {r4, r5, r6, r7, pc}                  |     
                                                         | label_0:
    0x0000987c mov r1, r0                                |     r1 = r0;
    0x00009880 mov r0, r4                                |     r0 = r4;
    0x00009884 add sp, sp, 0xc                           |     
    0x00009888 pop {r4, r5, r6, r7, lr}                  |     
    0x0000988c b 0x7188                                  |     return void (*0x7188)() ();
                                                         | }
    ; 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.15 @ 0x97d4 */
                                                         | #include <stdint.h>
                                                         |  
    ; (fcn) sym.lwsl_emit_stderr_notimestamp ()          | void lwsl_emit_stderr_notimestamp (int32_t arg1, int32_t arg2) {
                                                         |     int32_t var_0h;
                                                         |     int32_t var_4h;
                                                         |     int32_t var_ch;
                                                         |     r0 = arg1;
                                                         |     r1 = arg2;
    0x000097d4 push {r0, r1, r2, r4, r5, r6, r7, lr}     |     
    0x000097d8 ldr r6, [pc, 0xb0]                        |     r6 = *(0x988c);
    0x000097dc ldr r5, [pc, 0xb0]                        |     r5 = *(0x9890);
    0x000097e0 add r6, pc, r6                            |     r6 = pc + r6;
    0x000097e4 ldrb r3, [r6]                             |     r3 = *(r6);
    0x000097e8 add r5, pc, r5                            |     r5 = pc + r5;
    0x000097ec cmp r3, 0                                 |     
    0x000097f0 mov r7, r0                                |     r7 = r0;
    0x000097f4 mov r4, r1                                |     r4 = r1;
                                                         |     if (r3 == 0) {
    0x000097f8 bne 0x980c                                |         
    0x000097fc mov r0, 2                                 |         r0 = 2;
    0x00009800 bl 0x7038                                 |         r0 = isatty (r0);
    0x00009804 orr r0, r0, 2                             |         r0 |= 2;
    0x00009808 strb r0, [r6]                             |         *(r6) = r0;
                                                         |     }
    0x0000980c ldr r3, [pc, 0x84]                        |     r3 = *(0x9894);
    0x00009810 ldr r3, [r5, r3]                          |     r3 = *((r5 + r3));
    0x00009814 ldr r0, [r3]                              |     r0 = *(0x9894);
    0x00009818 ldr r3, [pc, 0x7c]                        |     r3 = *(0x9898);
    0x0000981c add r3, pc, r3                            |     r3 = pc + r3;
    0x00009820 ldrb r3, [r3]                             |     r3 = *(r3);
    0x00009824 cmp r3, 3                                 |     
                                                         |     if (r3 != 3) {
    0x00009828 bne 0x987c                                |         goto label_0;
                                                         |     }
    0x0000982c mov r3, 0xb                               |     r3 = 0xb;
    0x00009830 mov r2, 0x800                             |     r2 = 0x800;
                                                         |     do {
    0x00009834 tst r7, r2                                |         
                                                         |         if ((r7 & r2) != 0) {
    0x00009838 bne 0x984c                                |             goto label_1;
                                                         |         }
    0x0000983c sub r3, r3, 1                             |         r3--;
    0x00009840 cmn r3, 1                                 |         
    0x00009844 asr r2, r2, 1                             |         r2 >>= 1;
    0x00009848 bne 0x9834                                |         
                                                         |     } while (r3 != 1);
                                                         | label_1:
    0x0000984c ldr r2, [pc, 0x4c]                        |     r2 = *(0x989c);
    0x00009850 ldr r1, [pc, 0x4c]                        |     r1 = *(0x98a0);
    0x00009854 add r2, pc, r2                            |     r2 = pc + r2;
    0x00009858 add r3, r2, r3, lsl 2                     |     r3 = r2 + (r3 << 2);
    0x0000985c mov r2, 0x1b                              |     r2 = 0x1b;
    0x00009860 str r2, [sp, 4]                           |     var_4h = r2;
    0x00009864 str r4, [sp]                              |     *(sp) = r4;
    0x00009868 ldr r3, [r3, 0x38]                        |     r3 = *((r3 + 0x38));
    0x0000986c add r1, pc, r1                            |     r1 = pc + r1;
    0x00009870 bl 0x7224                                 |     fprintf (r0, r1, r2, r3, r4)
    0x00009874 add sp, sp, 0xc                           |     
    0x00009878 pop {r4, r5, r6, r7, pc}                  |     
                                                         | label_0:
    0x0000987c mov r1, r0                                |     r1 = r0;
    0x00009880 mov r0, r4                                |     r0 = r4;
    0x00009884 add sp, sp, 0xc                           |     
    0x00009888 pop {r4, r5, r6, r7, lr}                  |     
    0x0000988c b 0x7188                                  |     return void (*0x7188)() ();
                                                         | }

[*] Function fprintf used 5 times libwebsockets.so.15