[*] Binary protection state of libpaho-mqtt3cs.so.1.3.11

  
  	Full RELRO     Canary found      NX enabled   DSO          No RPATH     No RUNPATH   No Symbols


[*] Function printf tear down of libpaho-mqtt3cs.so.1.3.11

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpaho-mqtt3cs.so.1.3.11 @ 0x15754 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) fcn.00015754 ()                  | void fcn_00015754 () {
                                             |     int16_t var_4h;
                                             |     int32_t var_0h;
                                             |     int32_t var_0h_2;
                                             |     int16_t var_ch;
                                             |     int16_t var_10h;
                                             |     int16_t var_14h;
                                             |     int8_t var_9h;
                                             |     if (? < ?) {
    0x00015754 andhs r4, r3, 80, 16          |         r4 = r3 & (80 16);
                                             |     }
    0x00015758 ldr r3, [pc, 0x140]           |     
    0x0001575a movw r1, 0x1c1                |     r1 = 0x1c1;
    0x0001575e push {r4, r5, r6, r7, lr}     |     
    0x00015760 movs r4, 0                    |     r4 = 0;
    0x00015762 ldr r6, [pc, 0x13c]           |     
    0x00015764 add r0, pc                    |     r0 += pc;
    0x00015766 sub sp, 0x1c                  |     
    0x00015768 ldr r3, [r0, r3]              |     r3 = *((r0 + r3));
    0x0001576a add r7, sp, 0x10              |     r7 += var_10h;
    0x0001576c add r6, pc                    |     r6 = 0x2b012;
    0x0001576e add.w r0, r6, 0x58            |     r0 = r6 + 0x58;
    0x00015772 ldr r3, [r3]                  |     r3 = *(0x1589c);
    0x00015774 str r3, [sp, 0x14]            |     var_14h = r3;
    0x00015776 mov.w r3, 0                   |     r3 = 0;
    0x0001577a str r4, [sp, 0xc]             |     var_ch = r4;
    0x0001577c bl 0x10268                    |     fcn_00010268 (r0, r1, r2);
    0x00015780 ldr r3, [pc, 0x120]           |     
    0x00015782 add r3, pc                    |     
    0x00015784 ldr r3, [r3]                  |     r3 = imp.__stack_chk_guard;
    0x00015786 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x00015788 beq 0x15816                   |         
    0x0001578a mov r2, r4                    |         r2 = r4;
    0x0001578c movs r1, 0                    |         r1 = 0;
    0x0001578e movs r0, 0                    |         r0 = 0;
    0x00015790 blx 0x3204                    |         r0 = vsnprintf_chk ()
    0x00015794 mov r3, r0                    |         r3 = r0;
    0x00015796 movs r1, 0                    |         r1 = 0;
    0x00015798 cmp r3, 1                     |         
    0x0001579a mov r2, r4                    |         r2 = r4;
    0x0001579c it ne                         |         
                                             |         if (r3 == 1) {
    0x0001579e movne r3, -1                  |             r3 = -1;
                                             |         }
    0x000157a2 movs r0, 2                    |         r0 = 2;
    0x000157a4 str r3, [sp, 0xc]             |         var_ch = r3;
    0x000157a6 blx 0x3018                    |         OPENSSL_init_crypto ();
    0x000157aa movs r0, 2                    |         r0 = 2;
    0x000157ac mov r2, r4                    |         r2 = r4;
    0x000157ae movs r1, 0                    |         r1 = 0;
    0x000157b0 movt r0, 0x20                 |         r0 = (r0 & 0xFFFF) | 0x200000;
    0x000157b4 blx 0x3204                    |         vsnprintf_chk ()
    0x000157b8 mov r2, r4                    |         r2 = r4;
    0x000157ba movs r1, 0                    |         r1 = 0;
    0x000157bc movs r0, 0xc                  |         r0 = 0xc;
    0x000157be blx 0x3018                    |         OPENSSL_init_crypto ();
    0x000157c2 ldr r0, [pc, 0xe4]            |         
    0x000157c4 movs r2, 0x18                 |         r2 = 0x18;
    0x000157c6 movw r1, 0x1d3                |         r1 = 0x1d3;
    0x000157ca add r0, pc                    |         r0 = 0x2b078;
    0x000157cc bl 0x10770                    |         fcn_00010770 (r0, r1, r2);
    0x000157d0 ldr r3, [pc, 0xd8]            |         
    0x000157d2 mov r5, r0                    |         r5 = r0;
    0x000157d4 add r3, pc                    |         r3 = 0x2b084;
    0x000157d6 str.w r0, [r3, 0x94]          |         __asm ("str.w r0, [r3, 0x94]");
    0x000157da cmp r0, 0                     |         
                                             |         if (r0 == 0) {
    0x000157dc beq 0x1588c                   |             goto label_0;
                                             |         }
    0x000157de adds r6, 0x30                 |         r6 += 0x30;
    0x000157e0 movs r2, 3                    |         r2 = 3;
    0x000157e2 str r4, [r0]                  |         *(r0) = r4;
    0x000157e4 mov.w r1, 0x15c               |         r1 = 0x15c;
    0x000157e8 str r4, [r0, 4]               |         *((r0 + 4)) = r4;
    0x000157ea add r7, sp, 0x10              |         r7 += var_10h;
    0x000157ec str r4, [r0, 8]               |         *((r0 + 8)) = r4;
    0x000157ee str r4, [r0, 0xc]             |         *((r0 + 0xc)) = r4;
    0x000157f0 str r4, [r0, 0x10]            |         *((r0 + 0x10)) = r4;
    0x000157f2 str r4, [r0, 0x14]            |         *((r0 + 0x14)) = r4;
    0x000157f4 mov r0, r6                    |         r0 = r6;
    0x000157f6 str r4, [sp, 0x10]            |         var_10h = r4;
    0x000157f8 bl 0x10268                    |         fcn_00010268 (r0, r1, r2);
    0x000157fc mov r1, r4                    |         r1 = r4;
    0x000157fe mov r0, r5                    |         r0 = r5;
    0x00015800 blx 0x3034                    |         r0 = fcn_00003034 ();
    0x00015804 mov r1, r0                    |         r1 = r0;
    0x00015806 movs r3, 3                    |         r3 = 3;
    0x00015808 str r1, [sp, 0x10]            |         var_10h = r1;
    0x0001580a mov r2, r7                    |         r2 = r7;
    0x0001580c mov r0, r6                    |         r0 = r6;
    0x0001580e mov.w r1, 0x162               |         r1 = 0x162;
    0x00015812 bl 0x10308                    |         fcn_00010308 (r0, r1, r2, r3);
                                             |     }
    0x00015816 ldr r4, [pc, 0x98]            |     
    0x00015818 movs r5, 0                    |     r5 = 0;
    0x0001581a ldr r6, [pc, 0x98]            |     
    0x0001581c movs r2, 3                    |     r2 = 3;
    0x0001581e mov.w r1, 0x15c               |     r1 = 0x15c;
    0x00015822 str r5, [sp, 0x10]            |     var_10h = r5;
    0x00015824 add r4, pc                    |     r4 = 0x2b0da;
    0x00015826 adds r4, 0x30                 |     r4 += 0x30;
    0x00015828 add r6, pc                    |     r6 = 0x2b0e2;
    0x0001582a mov r0, r4                    |     r0 = r4;
    0x0001582c bl 0x10268                    |     fcn_00010268 (r0, r1, r2);
    0x00015830 mov r1, r5                    |     r1 = r5;
    0x00015832 add.w r0, r6, 0x98            |     r0 = r6 + 0x98;
    0x00015836 blx 0x3034                    |     r0 = fcn_00003034 ();
    0x0001583a mov r3, r0                    |     r3 = r0;
    0x0001583c mov r2, r7                    |     r2 = r7;
    0x0001583e mov r0, r4                    |     r0 = r4;
    0x00015840 mov.w r1, 0x162               |     r1 = 0x162;
    0x00015844 str r3, [sp, 0x10]            |     var_10h = r3;
    0x00015846 movs r3, 3                    |     r3 = 3;
    0x00015848 bl 0x10308                    |     fcn_00010308 (r0, r1, r2, r3);
    0x0001584c ldr r2, [pc, 0x68]            |     
    0x0001584e mov r3, r5                    |     r3 = r5;
    0x00015850 mov r1, r5                    |     r1 = r5;
    0x00015852 mov r0, r5                    |     r0 = r5;
    0x00015854 strd r5, r5, [sp]             |     __asm ("strd r5, r5, [sp]");
    0x00015858 add r2, pc                    |     r2 = 0x2b114;
    0x0001585a blx 0x31a4                    |     closedir ();
    0x0001585e str r0, [r6]                  |     *(r6) = r0;
                                             |     do {
    0x00015860 ldr r0, [pc, 0x58]            |         
    0x00015862 movs r3, 3                    |         r3 = 3;
    0x00015864 add r2, sp, 0xc               |         r2 += var_ch;
    0x00015866 movw r1, 0x1ef                |         r1 = 0x1ef;
    0x0001586a add r0, pc                    |         r0 = 0x2b12a;
    0x0001586c adds r0, 0x58                 |         r0 += 0x58;
    0x0001586e bl 0x10308                    |         fcn_00010308 (r0, r1, r2, r3);
    0x00015872 ldr r2, [pc, 0x4c]            |         
    0x00015874 ldr r3, [pc, 0x24]            |         r3 = *(0x1589c);
    0x00015876 ldr r0, [sp, 0xc]             |         r0 = var_ch;
    0x00015878 add r2, pc                    |         r2 = 0x2b13e;
    0x0001587a ldr r3, [r2, r3]              |         r3 = imp.__stack_chk_guard;
    0x0001587c ldr r2, [r3]                  |         r2 = imp.__stack_chk_guard;
    0x0001587e ldr r3, [sp, 0x14]            |         r3 = var_14h;
    0x00015880 eors r2, r3                   |         r2 ^= r3;
    0x00015882 mov.w r3, 0                   |         r3 = 0;
                                             |         if (r2 != r3) {
    0x00015886 bne 0x15894                   |             goto label_1;
                                             |         }
    0x00015888 add sp, 0x1c                  |         
    0x0001588a pop {r4, r5, r6, r7, pc}      |         
                                             | label_0:
    0x0001588c mov.w r3, -1                  |         r3 = -1;
    0x00015890 str r3, [sp, 0xc]             |         var_ch = r3;
    0x00015892 b 0x15860                     |         
                                             |     } while (1);
                                             | label_1:
    0x00015894 blx 0x3440                    |     fcn_00003440 ();
    0x00015898 strb r4, [r3, 0x15]           |     *((r3 + 0x15)) = r4;
    0x0001589a movs r0, r0                   |     
    0x0001589c lsls r0, r4, 0xb              |     r0 = r4 << 0xb;
    0x0001589e movs r0, r0                   |     
    0x000158a0 ldrsb r4, [r3, r3]            |     r4 = *((r3 + r3));
    0x000158a2 movs r0, r0                   |     
    0x000158a4 ldrb r2, [r7, 9]              |     r2 = var_9h;
    0x000158a6 movs r0, r0                   |     
    0x000158a8 ldr r4, [pc, 0x158]           |     r4 = *(0x15a04);
    0x000158aa movs r0, r0                   |     
    0x000158ac strb r0, [r0, r4]             |     *((r0 + r4)) = r0;
    0x000158ae movs r0, r1                   |     r0 = r1;
    0x000158b0 ldrsb r4, [r4, r0]            |     r4 = *((r4 + r0));
    0x000158b2 movs r0, r0                   |     
    0x000158b4 strb r4, [r5, r2]             |     *((r5 + r2)) = r4;
    0x000158b6 movs r0, r1                   |     r0 = r1;
    0x000158b8 ldr r4, [pc, 0]               |     r4 = *(0x158bc);
    0x000158ba movs r0, r0                   |     
    0x000158bc strb r6, [r3, r7]             |     *((r3 + r7)) = r6;
    0x000158be movs r0, r0                   |     
    0x000158c0 strb r0, [r1, 0x11]           |     *((r1 + 0x11)) = r0;
    0x000158c2 movs r0, r0                   |     
                                             | }

[*] Function printf used 3 times libpaho-mqtt3cs.so.1.3.11