[*] Binary protection state of liblttng-ust-cyg-profile.so.1.0.0

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


[*] Function printf tear down of liblttng-ust-cyg-profile.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-cyg-profile.so.1.0.0 @ 0xbb4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) entry.fini2 ()                       | void entry_fini2 () {
                                                 |     int16_t var_4h;
    0x00000bb4 push {r4, r5, r6, r7, lr}         |     
    0x00000bb6 sub sp, 0xc                       |     
    0x00000bb8 ldr r4, [pc, 0x84]                |     
    0x00000bba ldr r3, [pc, 0x88]                |     r3 = *(0xc46);
    0x00000bbc add r4, pc                        |     r4 = 0x1800;
    0x00000bbe ldr r5, [r4, r3]                  |     r5 = *(0x1800);
    0x00000bc0 ldr r3, [r5]                      |     r3 = *(0x1800);
    0x00000bc2 subs r3, 1                        |     r3--;
    0x00000bc4 str r3, [r5]                      |     *(r5) = r3;
                                                 |     if (r3 != 0) {
    0x00000bc6 cbnz r3, 0xc16                    |         goto label_1;
                                                 |     }
    0x00000bc8 ldr r3, [pc, 0x7c]                |     r3 = *(0xc48);
    0x00000bca ldr r6, [r4, r3]                  |     r6 = *((r4 + r3));
    0x00000bcc ldr r3, [r6]                      |     r3 = *(r6);
                                                 |     if (r3 == 0) {
    0x00000bce cbz r3, 0xc22                     |         goto label_2;
                                                 |     }
                                                 | label_0:
    0x00000bd0 ldr r3, [pc, 0x78]                |     r3 = *(0xc4c);
    0x00000bd2 ldr r7, [r4, r3]                  |     r7 = *((r4 + r3));
    0x00000bd4 ldr r3, [r7]                      |     r3 = *(r7);
    0x00000bd6 cbz r3, 0xc1a                     |     
                                                 |     while (1) {
    0x00000bd8 ldr r3, [r6]                      |         r3 = *(r6);
    0x00000bda ldr r3, [r3, 0xc]                 |         r3 = *((r3 + 0xc));
                                                 |         if (r3 != 0) {
    0x00000bdc cbz r3, 0xbe8                     |             
    0x00000bde ldr r2, [pc, 0x70]                |             r2 = *(0xc52);
    0x00000be0 ldr r2, [r4, r2]                  |             r2 = *((r4 + r2));
    0x00000be2 mov r0, r2                        |             r0 = r2;
    0x00000be4 str r2, [sp, 4]                   |             var_4h = r2;
    0x00000be6 blx r3                            |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
                                                 |         }
    0x00000be8 ldr r3, [r6]                      |         r3 = *(r6);
    0x00000bea ldr r3, [r3, 4]                   |         r3 = *((r3 + 4));
                                                 |         if (r3 != 0) {
    0x00000bec cbz r3, 0xc16                     |             
    0x00000bee ldr r3, [r7]                      |             r3 = *(r7);
    0x00000bf0 ldr r3, [r3, 8]                   |             r3 = *((r3 + 8));
                                                 |             if (r3 == 0) {
    0x00000bf2 cbz r3, 0xc16                     |                 goto label_1;
                                                 |             }
    0x00000bf4 blx r3                            |             r0 = uint32_t (*r3)() ();
                                                 |             if (r0 == 0) {
    0x00000bf6 cbz r0, 0xc16                     |                 goto label_1;
                                                 |             }
    0x00000bf8 ldr r3, [r5]                      |             r3 = *(r5);
                                                 |             if (r3 != 0) {
    0x00000bfa cbnz r3, 0xc16                    |                 goto label_1;
                                                 |             }
    0x00000bfc ldr r3, [r6]                      |             r3 = *(r6);
    0x00000bfe ldr r0, [r3, 4]                   |             r0 = *((r3 + 4));
    0x00000c00 blx 0xaf0                         |             r0 = dlclose ();
                                                 |             if (r0 != 0) {
    0x00000c04 cbnz r0, 0xc2a                    |                 goto label_3;
                                                 |             }
    0x00000c06 ldr r3, [r6]                      |             r3 = *(r6);
    0x00000c08 str r0, [r3]                      |             *(r3) = r0;
    0x00000c0a str r0, [r3, 4]                   |             *((r3 + 4)) = r0;
    0x00000c0c str r0, [r3, 8]                   |             *((r3 + 8)) = r0;
    0x00000c0e str r0, [r3, 0xc]                 |             *((r3 + 0xc)) = r0;
    0x00000c10 str r0, [r3, 0x10]                |             *((r3 + 0x10)) = r0;
    0x00000c12 str r0, [r3, 0x14]                |             *((r3 + 0x14)) = r0;
    0x00000c14 str r0, [r3, 0x18]                |             *((r3 + 0x18)) = r0;
                                                 |         }
                                                 | label_1:
    0x00000c16 add sp, 0xc                       |         
    0x00000c18 pop {r4, r5, r6, r7, pc}          |         
    0x00000c1a ldr r3, [pc, 0x38]                |         r3 = *(0xc56);
    0x00000c1c ldr r3, [r4, r3]                  |         r3 = *((r4 + r3));
    0x00000c1e str r3, [r7]                      |         *(r7) = r3;
    0x00000c20 b 0xbd8                           |         
                                                 |     }
                                                 | label_2:
    0x00000c22 ldr r3, [pc, 0x34]                |     r3 = *(0xc5a);
    0x00000c24 ldr r3, [r4, r3]                  |     r3 = *((r4 + r3));
    0x00000c26 str r3, [r6]                      |     *(r6) = r3;
    0x00000c28 b 0xbd0                           |     goto label_0;
                                                 | label_3:
    0x00000c2a ldr r5, [pc, 0x30]                |     r5 = *(0xc5e);
    0x00000c2c mov r3, r0                        |     r3 = r0;
    0x00000c2e ldr r2, [pc, 0x30]                |     
    0x00000c30 movs r1, 1                        |     r1 = 1;
    0x00000c32 ldr r0, [r4, r5]                  |     r0 = *((r4 + r5));
    0x00000c34 add r2, pc                        |     r2 = 0x189a;
    0x00000c36 ldr r0, [r0]                      |     r0 = *(r0);
    0x00000c38 blx 0xac0                         |     fprintf_chk ()
    0x00000c3c blx 0xafc                         |     abort ();
    0x00000c40 movs r3, 0xac                     |     r3 = 0xac;
    0x00000c42 movs r0, r0                       |     
    0x00000c44 lsls r0, r6, 1                    |     r0 = r6 << 1;
    0x00000c46 movs r0, r0                       |     
    0x00000c48 lsls r4, r4, 1                    |     r4 <<= 1;
    0x00000c4a movs r0, r0                       |     
    0x00000c4c lsls r0, r3, 1                    |     r0 = r3 << 1;
    0x00000c4e movs r0, r0                       |     
    0x00000c50 lsls r4, r2, 1                    |     r4 = r2 << 1;
    0x00000c52 movs r0, r0                       |     
    0x00000c54 lsls r4, r5, 1                    |     r4 = r5 << 1;
    0x00000c56 movs r0, r0                       |     
    0x00000c58 lsls r4, r6, 1                    |     r4 = r6 << 1;
    0x00000c5a movs r0, r0                       |     
    0x00000c5c lsls r0, r4, 1                    |     r0 = r4 << 1;
    0x00000c5e movs r0, r0                       |     
    0x00000c60 lsls r0, r7, 0x1d                 |     r0 = r7 << 0x1d;
    0x00000c62 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-cyg-profile.so.1.0.0 @ 0xce4 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) entry.init1 ()                   | void entry_init1 () {
                                             |     int16_t var_0h;
                                             |     if (? >= ?) {
                                             | label_1:
    0x00000c84 ldrlt r4, [r0, -0x810]        |         r4 = *((r0 - 0x810));
                                             |     }
    0x00000c88 sub sp, 0x10                  |     
    0x00000c8a ldr r4, [pc, 0x40]            |     
    0x00000c8c add r0, pc                    |     r0 += pc;
    0x00000c8e add r4, pc                    |     r4 = 0x1960;
    0x00000c90 blx 0xa90                     |     r0 = getenv (r0);
                                             |     if (r0 != 0) {
    0x00000c94 cbz r0, 0xcc4                 |         
    0x00000c96 ldr r3, [pc, 0x38]            |         r3 = *(0xcd2);
    0x00000c98 ldr r3, [r4, r3]              |         r3 = *((r4 + r3));
    0x00000c9a ldr r4, [r3]                  |         r4 = *(0xcd2);
    0x00000c9c blx 0xab4                     |         getpid ();
    0x00000ca0 ldr r1, [pc, 0x30]            |         
    0x00000ca2 mov r3, r0                    |         r3 = r0;
    0x00000ca4 ldr r2, [pc, 0x30]            |         
    0x00000ca6 mov r0, r4                    |         r0 = r4;
    0x00000ca8 ldr.w ip, [pc, 0x30]          |         
    0x00000cac add r1, pc                    |         r1 = 0x1984;
    0x00000cae add r2, pc                    |         r2 = 0x198a;
    0x00000cb0 strd r2, r1, [sp, 4]          |         __asm ("strd r2, r1, [sp, 4]");
    0x00000cb4 add ip, pc                    |         ip = 0x1994;
    0x00000cb6 ldr r2, [pc, 0x28]            |         
    0x00000cb8 movs r1, 1                    |         r1 = 1;
    0x00000cba str.w ip, [sp]                |         __asm ("str.w ip, [sp]");
    0x00000cbe add r2, pc                    |         r2 = 0x19a4;
    0x00000cc0 blx 0xac0                     |         fprintf_chk ()
                                             |     }
    0x00000cc4 add sp, 0x10                  |     
    0x00000cc6 pop {r4, pc}                  |     
    0x00000ce4 ldr r2, [pc, 0x44]            |     
    0x00000ce6 push {r3, r4, r5, lr}         |     
    0x00000ce8 ldr r3, [pc, 0x44]            |     r3 = *(0xd30);
    0x00000cea add r2, pc                    |     r2 = 0x1a1a;
    0x00000cec ldr r1, [r2, r3]              |     r1 = *(0x1a1a);
    0x00000cee ldr r3, [r1]                  |     r3 = *(0x1a1a);
    0x00000cf0 adds r0, r3, 1                |     r0 = r3 + 1;
    0x00000cf2 str r0, [r1]                  |     *(r1) = r0;
                                             |     if (r3 != 0) {
    0x00000cf4 cbnz r3, 0xd04                |         goto label_0;
                                             |     }
    0x00000cf6 ldr r3, [pc, 0x3c]            |     r3 = *(0xd36);
    0x00000cf8 ldr r4, [r2, r3]              |     r4 = *((r2 + r3));
    0x00000cfa ldr r3, [r4]                  |     r3 = *(r4);
    0x00000cfc cbz r3, 0xd06                 |     
                                             |     while (1) {
    0x00000cfe ldr r5, [r4]                  |         r5 = *(r4);
    0x00000d00 ldr r3, [r5, 4]               |         r3 = *((r5 + 4));
                                             |         if (r3 == 0) {
    0x00000d02 cbz r3, 0xd0e                 |             goto label_2;
                                             |         }
                                             | label_0:
    0x00000d04 pop {r3, r4, r5, pc}          |         
    0x00000d06 ldr r3, [pc, 0x30]            |         r3 = *(0xd3a);
    0x00000d08 ldr r3, [r2, r3]              |         r3 = *((r2 + r3));
    0x00000d0a str r3, [r4]                  |         *(r4) = r3;
    0x00000d0c b 0xcfe                       |         
                                             |     }
                                             | label_2:
    0x00000d0e ldr r0, [pc, 0x2c]            |     
    0x00000d10 mov.w r1, 0x102               |     r1 = 0x102;
    0x00000d14 add r0, pc                    |     r0 = 0x1a56;
    0x00000d16 blx 0xa9c                     |     dlopen ();
    0x00000d1a ldr r3, [r4]                  |     r3 = *(r4);
    0x00000d1c str r0, [r5, 4]               |     *((r5 + 4)) = r0;
    0x00000d1e ldr r3, [r3, 4]               |     r3 = *((r3 + 4));
    0x00000d20 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x00000d22 bne 0xd04                     |         goto label_0;
                                             |     }
    0x00000d24 pop.w {r3, r4, r5, lr}        |     
    0x00000d28 b 0xc84                       |     goto label_1;
                                             | }

[*] Function printf used 3 times liblttng-ust-cyg-profile.so.1.0.0