[*] Binary protection state of liblttng-ust-libc-wrapper.so.1.0.0

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


[*] Function printf tear down of liblttng-ust-libc-wrapper.so.1.0.0

    ; assembly                               | /* r2dec pseudo code output */
                                             | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblttng-ust-libc-wrapper.so.1.0.0 @ 0x1194 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) entry.fini2 ()                   | void entry_fini2 () {
                                             |     int16_t var_4h;
    0x00001194 push {r4, r5, r6, r7, lr}     |     
    0x00001196 sub sp, 0xc                   |     
    0x00001198 ldr r4, [pc, 0x84]            |     
    0x0000119a ldr r3, [pc, 0x88]            |     r3 = *(0x1226);
    0x0000119c add r4, pc                    |     r4 = 0x23c0;
    0x0000119e ldr r5, [r4, r3]              |     r5 = *(0x23c0);
    0x000011a0 ldr r3, [r5]                  |     r3 = *(0x23c0);
    0x000011a2 subs r3, 1                    |     r3--;
    0x000011a4 str r3, [r5]                  |     *(r5) = r3;
                                             |     if (r3 != 0) {
    0x000011a6 cbnz r3, 0x11f6               |         goto label_1;
                                             |     }
    0x000011a8 ldr r3, [pc, 0x7c]            |     r3 = *(0x1228);
    0x000011aa ldr r6, [r4, r3]              |     r6 = *((r4 + r3));
    0x000011ac ldr r3, [r6]                  |     r3 = *(r6);
                                             |     if (r3 == 0) {
    0x000011ae cbz r3, 0x1202                |         goto label_2;
                                             |     }
                                             | label_0:
    0x000011b0 ldr r3, [pc, 0x78]            |     r3 = *(0x122c);
    0x000011b2 ldr r7, [r4, r3]              |     r7 = *((r4 + r3));
    0x000011b4 ldr r3, [r7]                  |     r3 = *(r7);
    0x000011b6 cbz r3, 0x11fa                |     
                                             |     while (1) {
    0x000011b8 ldr r3, [r6]                  |         r3 = *(r6);
    0x000011ba ldr r3, [r3, 0xc]             |         r3 = *((r3 + 0xc));
                                             |         if (r3 != 0) {
    0x000011bc cbz r3, 0x11c8                |             
    0x000011be ldr r2, [pc, 0x70]            |             r2 = *(0x1232);
    0x000011c0 ldr r2, [r4, r2]              |             r2 = *((r4 + r2));
    0x000011c2 mov r0, r2                    |             r0 = r2;
    0x000011c4 str r2, [sp, 4]               |             var_4h = r2;
    0x000011c6 blx r3                        |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
                                             |         }
    0x000011c8 ldr r3, [r6]                  |         r3 = *(r6);
    0x000011ca ldr r3, [r3, 4]               |         r3 = *((r3 + 4));
                                             |         if (r3 != 0) {
    0x000011cc cbz r3, 0x11f6                |             
    0x000011ce ldr r3, [r7]                  |             r3 = *(r7);
    0x000011d0 ldr r3, [r3, 8]               |             r3 = *((r3 + 8));
                                             |             if (r3 == 0) {
    0x000011d2 cbz r3, 0x11f6                |                 goto label_1;
                                             |             }
    0x000011d4 blx r3                        |             r0 = uint32_t (*r3)() ();
                                             |             if (r0 == 0) {
    0x000011d6 cbz r0, 0x11f6                |                 goto label_1;
                                             |             }
    0x000011d8 ldr r3, [r5]                  |             r3 = *(r5);
                                             |             if (r3 != 0) {
    0x000011da cbnz r3, 0x11f6               |                 goto label_1;
                                             |             }
    0x000011dc ldr r3, [r6]                  |             r3 = *(r6);
    0x000011de ldr r0, [r3, 4]               |             r0 = *((r3 + 4));
    0x000011e0 blx 0x10d0                    |             r0 = dlclose ();
                                             |             if (r0 != 0) {
    0x000011e4 cbnz r0, 0x120a               |                 goto label_3;
                                             |             }
    0x000011e6 ldr r3, [r6]                  |             r3 = *(r6);
    0x000011e8 str r0, [r3]                  |             *(r3) = r0;
    0x000011ea str r0, [r3, 4]               |             *((r3 + 4)) = r0;
    0x000011ec str r0, [r3, 8]               |             *((r3 + 8)) = r0;
    0x000011ee str r0, [r3, 0xc]             |             *((r3 + 0xc)) = r0;
    0x000011f0 str r0, [r3, 0x10]            |             *((r3 + 0x10)) = r0;
    0x000011f2 str r0, [r3, 0x14]            |             *((r3 + 0x14)) = r0;
    0x000011f4 str r0, [r3, 0x18]            |             *((r3 + 0x18)) = r0;
                                             |         }
                                             | label_1:
    0x000011f6 add sp, 0xc                   |         
    0x000011f8 pop {r4, r5, r6, r7, pc}      |         
    0x000011fa ldr r3, [pc, 0x38]            |         r3 = *(0x1236);
    0x000011fc ldr r3, [r4, r3]              |         r3 = *((r4 + r3));
    0x000011fe str r3, [r7]                  |         *(r7) = r3;
    0x00001200 b 0x11b8                      |         
                                             |     }
                                             | label_2:
    0x00001202 ldr r3, [pc, 0x34]            |     r3 = *(0x123a);
    0x00001204 ldr r3, [r4, r3]              |     r3 = *((r4 + r3));
    0x00001206 str r3, [r6]                  |     *(r6) = r3;
    0x00001208 b 0x11b0                      |     goto label_0;
                                             | label_3:
    0x0000120a ldr r5, [pc, 0x30]            |     r5 = *(0x123e);
    0x0000120c mov r3, r0                    |     r3 = r0;
    0x0000120e ldr r2, [pc, 0x30]            |     
    0x00001210 movs r1, 1                    |     r1 = 1;
    0x00001212 ldr r0, [r4, r5]              |     r0 = *((r4 + r5));
    0x00001214 add r2, pc                    |     r2 = 0x245a;
    0x00001216 ldr r0, [r0]                  |     r0 = *(r0);
    0x00001218 blx 0x10ac                    |     fprintf_chk ()
    0x0000121c blx 0x10dc                    |     abort ();
    0x00001220 subs r5, 0xd4                 |     r5 -= 0xd4;
    0x00001222 movs r0, r0                   |     
    0x00001224 lsls r0, r7, 1                |     r0 = r7 << 1;
    0x00001226 movs r0, r0                   |     
    0x00001228 lsls r4, r5, 1                |     r4 = r5 << 1;
    0x0000122a movs r0, r0                   |     
    0x0000122c lsls r0, r4, 1                |     r0 = r4 << 1;
    0x0000122e movs r0, r0                   |     
    0x00001230 lsls r4, r3, 1                |     r4 = r3 << 1;
    0x00001232 movs r0, r0                   |     
    0x00001234 lsls r4, r6, 1                |     r4 = r6 << 1;
    0x00001236 movs r0, r0                   |     
    0x00001238 lsls r4, r7, 1                |     r4 = r7 << 1;
    0x0000123a movs r0, r0                   |     
    0x0000123c lsls r0, r5, 1                |     r0 = r5 << 1;
    0x0000123e movs r0, r0                   |     
    0x00001240 asrs r0, r4, 0x1f             |     r0 = r4 >> 0x1f;
    0x00001242 movs r0, r0                   |     
                                             | }
    ; assembly                           | /* r2dec pseudo code output */
                                         | /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/liblttng-ust-libc-wrapper.so.1.0.0 @ 0x1338 */
                                         | #include <stdint.h>
                                         |  
    ; (fcn) entry.init1 ()               | void entry_init1 () {
                                         |     int16_t var_0h;
                                         |     if (? >= ?) {
                                         | label_1:
    0x000012d4 ldrlt r4, [r0, -0x811]    |         r4 = *((r0 - 0x811));
                                         |     }
    0x000012d8 sub sp, 0x10              |     
    0x000012da ldr r4, [pc, 0x44]        |     
    0x000012dc add r0, pc                |     r0 += pc;
    0x000012de add r4, pc                |     r4 = 0x2604;
    0x000012e0 blx 0x107c                |     r0 = getenv (r0);
                                         |     if (r0 != 0) {
    0x000012e4 cbz r0, 0x1316            |         
    0x000012e6 ldr r3, [pc, 0x3c]        |         r3 = *(0x1326);
    0x000012e8 ldr r3, [r4, r3]          |         r3 = *((r4 + r3));
    0x000012ea ldr r4, [r3]              |         r4 = *(0x1326);
    0x000012ec blx 0x10a0                |         getpid ();
    0x000012f0 ldr r2, [pc, 0x34]        |         
    0x000012f2 mov r3, r0                |         r3 = r0;
    0x000012f4 ldr r1, [pc, 0x34]        |         
    0x000012f6 mov r0, r4                |         r0 = r4;
    0x000012f8 ldr.w ip, [pc, 0x34]      |         
    0x000012fc add r2, pc                |         r2 = 0x2628;
    0x000012fe add r1, pc                |         r1 = 0x262e;
    0x00001300 adds r2, 0x28             |         r2 += 0x28;
    0x00001302 strd r1, r2, [sp, 4]      |         __asm ("strd r1, r2, [sp, 4]");
    0x00001306 add ip, pc                |         ip = 0x263a;
    0x00001308 ldr r2, [pc, 0x28]        |         
    0x0000130a movs r1, 1                |         r1 = 1;
    0x0000130c str.w ip, [sp]            |         __asm ("str.w ip, [sp]");
    0x00001310 add r2, pc                |         r2 = 0x2648;
    0x00001312 blx 0x10ac                |         fprintf_chk ()
                                         |     }
    0x00001316 add sp, 0x10              |     
    0x00001318 pop {r4, pc}              |     
    0x00001338 push {r3, r4, r5, lr}     |     
    0x0000133a ldr r3, [pc, 0x50]        |     
    0x0000133c ldr r1, [pc, 0x50]        |     r1 = *(0x1390);
    0x0000133e add r3, pc                |     r3 = 0x26d0;
    0x00001340 ldr r2, [pc, 0x50]        |     r2 = *(0x1394);
    0x00001342 ldr r0, [r3, r1]          |     r0 = *(0x26d0);
    0x00001344 ldr r1, [r0]              |     r1 = *(0x26d0);
    0x00001346 adds r4, r1, 1            |     r4 = r1 + 1;
    0x00001348 str r4, [r0]              |     *(r0) = r4;
    0x0000134a ldr r4, [r3, r2]          |     r4 = *(0x26d0);
    0x0000134c ldr r2, [r4]              |     r2 = *(0x26d0);
                                         |     if (r1 == 0) {
    0x0000134e cbz r1, 0x135a            |         goto label_3;
                                         |     }
    0x00001350 ldr r3, [r2, 4]           |     r3 = *((r2 + 4));
                                         |     if (r3 == 0) {
    0x00001352 cbz r3, 0x1380            |         goto label_4;
                                         |     }
                                         |     do {
                                         | label_0:
    0x00001354 pop.w {r3, r4, r5, lr}    |         
    0x00001358 b 0x1264                  |         void (*0x1264)() ();
                                         |         if (r2 == 0) {
                                         | label_3:
    0x0000135a cbz r2, 0x1382            |             goto label_5;
                                         |         }
                                         | label_2:
    0x0000135c ldr r5, [r4]              |         r5 = *(r4);
    0x0000135e ldr r3, [r5, 4]           |         r3 = *((r5 + 4));
    0x00001360 cmp r3, 0                 |         
    0x00001362 bne 0x1354                |         
                                         |     } while (r3 != 0);
    0x00001364 ldr r0, [pc, 0x30]        |     
    0x00001366 mov.w r1, 0x102           |     r1 = 0x102;
    0x0000136a add r0, pc                |     r0 = 0x2706;
    0x0000136c blx 0x1088                |     dlopen ();
    0x00001370 ldr r3, [r4]              |     r3 = *(r4);
    0x00001372 str r0, [r5, 4]           |     *((r5 + 4)) = r0;
    0x00001374 ldr r3, [r3, 4]           |     r3 = *((r3 + 4));
    0x00001376 cmp r3, 0                 |     
                                         |     if (r3 != 0) {
    0x00001378 bne 0x1354                |         goto label_0;
                                         |     }
    0x0000137a pop.w {r3, r4, r5, lr}    |     
    0x0000137e b 0x12d4                  |     goto label_1;
                                         | label_4:
    0x00001380 pop {r3, r4, r5, pc}      |     
                                         | label_5:
    0x00001382 ldr r2, [pc, 0x18]        |     r2 = *(0x139e);
    0x00001384 ldr r3, [r3, r2]          |     r3 = *((r3 + r2));
    0x00001386 str r3, [r4]              |     *(r4) = r3;
    0x00001388 b 0x135c                  |     goto label_2;
                                         | }

[*] Function printf used 3 times liblttng-ust-libc-wrapper.so.1.0.0