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

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


[*] Function fprintf tear down of liblttng-ust-cyg-profile-fast.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-fast.so.1.0.0 @ 0xbe4 */
                                                 | #include <stdint.h>
                                                 |  
    ; (fcn) entry.fini2 ()                       | void entry_fini2 () {
                                                 |     int16_t var_4h;
    0x00000be4 push {r4, r5, r6, r7, lr}         |     
    0x00000be6 sub sp, 0xc                       |     
    0x00000be8 ldr r4, [pc, 0x84]                |     
    0x00000bea ldr r3, [pc, 0x88]                |     r3 = *(0xc76);
    0x00000bec add r4, pc                        |     r4 = 0x1860;
    0x00000bee ldr r5, [r4, r3]                  |     r5 = imp.__aeabi_unwind_cpp_pr0;
    0x00000bf0 ldr r3, [r5]                      |     r3 = imp.__aeabi_unwind_cpp_pr0;
    0x00000bf2 subs r3, 1                        |     r3--;
    0x00000bf4 str r3, [r5]                      |     *(r5) = r3;
                                                 |     if (r3 != 0) {
    0x00000bf6 cbnz r3, 0xc46                    |         goto label_1;
                                                 |     }
    0x00000bf8 ldr r3, [pc, 0x7c]                |     r3 = *(0xc78);
    0x00000bfa ldr r6, [r4, r3]                  |     r6 = *((r4 + r3));
    0x00000bfc ldr r3, [r6]                      |     r3 = *(r6);
                                                 |     if (r3 == 0) {
    0x00000bfe cbz r3, 0xc52                     |         goto label_2;
                                                 |     }
                                                 | label_0:
    0x00000c00 ldr r3, [pc, 0x78]                |     r3 = *(0xc7c);
    0x00000c02 ldr r7, [r4, r3]                  |     r7 = *((r4 + r3));
    0x00000c04 ldr r3, [r7]                      |     r3 = *(r7);
    0x00000c06 cbz r3, 0xc4a                     |     
                                                 |     while (1) {
    0x00000c08 ldr r3, [r6]                      |         r3 = *(r6);
    0x00000c0a ldr r3, [r3, 0xc]                 |         r3 = *((r3 + 0xc));
                                                 |         if (r3 != 0) {
    0x00000c0c cbz r3, 0xc18                     |             
    0x00000c0e ldr r2, [pc, 0x70]                |             r2 = *(0xc82);
    0x00000c10 ldr r2, [r4, r2]                  |             r2 = *((r4 + r2));
    0x00000c12 mov r0, r2                        |             r0 = r2;
    0x00000c14 str r2, [sp, 4]                   |             var_4h = r2;
    0x00000c16 blx r3                            |             uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
                                                 |         }
    0x00000c18 ldr r3, [r6]                      |         r3 = *(r6);
    0x00000c1a ldr r3, [r3, 4]                   |         r3 = *((r3 + 4));
                                                 |         if (r3 != 0) {
    0x00000c1c cbz r3, 0xc46                     |             
    0x00000c1e ldr r3, [r7]                      |             r3 = *(r7);
    0x00000c20 ldr r3, [r3, 8]                   |             r3 = *((r3 + 8));
                                                 |             if (r3 == 0) {
    0x00000c22 cbz r3, 0xc46                     |                 goto label_1;
                                                 |             }
    0x00000c24 blx r3                            |             r0 = uint32_t (*r3)() ();
                                                 |             if (r0 == 0) {
    0x00000c26 cbz r0, 0xc46                     |                 goto label_1;
                                                 |             }
    0x00000c28 ldr r3, [r5]                      |             r3 = *(r5);
                                                 |             if (r3 != 0) {
    0x00000c2a cbnz r3, 0xc46                    |                 goto label_1;
                                                 |             }
    0x00000c2c ldr r3, [r6]                      |             r3 = *(r6);
    0x00000c2e ldr r0, [r3, 4]                   |             r0 = *((r3 + 4));
    0x00000c30 blx 0xb20                         |             r0 = dlclose ();
                                                 |             if (r0 != 0) {
    0x00000c34 cbnz r0, 0xc5a                    |                 goto label_3;
                                                 |             }
    0x00000c36 ldr r3, [r6]                      |             r3 = *(r6);
    0x00000c38 str r0, [r3]                      |             *(r3) = r0;
    0x00000c3a str r0, [r3, 4]                   |             *((r3 + 4)) = r0;
    0x00000c3c str r0, [r3, 8]                   |             *((r3 + 8)) = r0;
    0x00000c3e str r0, [r3, 0xc]                 |             *((r3 + 0xc)) = r0;
    0x00000c40 str r0, [r3, 0x10]                |             *((r3 + 0x10)) = r0;
    0x00000c42 str r0, [r3, 0x14]                |             *((r3 + 0x14)) = r0;
    0x00000c44 str r0, [r3, 0x18]                |             *((r3 + 0x18)) = r0;
                                                 |         }
                                                 | label_1:
    0x00000c46 add sp, 0xc                       |         
    0x00000c48 pop {r4, r5, r6, r7, pc}          |         
    0x00000c4a ldr r3, [pc, 0x38]                |         r3 = *(0xc86);
    0x00000c4c ldr r3, [r4, r3]                  |         r3 = *((r4 + r3));
    0x00000c4e str r3, [r7]                      |         *(r7) = r3;
    0x00000c50 b 0xc08                           |         
                                                 |     }
                                                 | label_2:
    0x00000c52 ldr r3, [pc, 0x34]                |     r3 = *(0xc8a);
    0x00000c54 ldr r3, [r4, r3]                  |     r3 = *((r4 + r3));
    0x00000c56 str r3, [r6]                      |     *(r6) = r3;
    0x00000c58 b 0xc00                           |     goto label_0;
                                                 | label_3:
    0x00000c5a ldr r5, [pc, 0x30]                |     r5 = *(0xc8e);
    0x00000c5c mov r3, r0                        |     r3 = r0;
    0x00000c5e ldr r2, [pc, 0x30]                |     
    0x00000c60 movs r1, 1                        |     r1 = 1;
    0x00000c62 ldr r0, [r4, r5]                  |     r0 = *((r4 + r5));
    0x00000c64 add r2, pc                        |     r2 = 0x18fa;
    0x00000c66 ldr r0, [r0]                      |     r0 = *(r0);
    0x00000c68 blx 0xaf0                         |     fprintf_chk ()
    0x00000c6c blx 0xb2c                         |     abort ();
    0x00000c70 movs r3, 0x7c                     |     r3 = 0x7c;
    0x00000c72 movs r0, r0                       |     
    0x00000c74 lsls r0, r6, 1                    |     r0 = r6 << 1;
    0x00000c76 movs r0, r0                       |     
    0x00000c78 lsls r4, r4, 1                    |     r4 <<= 1;
    0x00000c7a movs r0, r0                       |     
    0x00000c7c lsls r0, r3, 1                    |     r0 = r3 << 1;
    0x00000c7e movs r0, r0                       |     
    0x00000c80 lsls r4, r2, 1                    |     r4 = r2 << 1;
    0x00000c82 movs r0, r0                       |     
    0x00000c84 lsls r4, r5, 1                    |     r4 = r5 << 1;
    0x00000c86 movs r0, r0                       |     
    0x00000c88 lsls r4, r6, 1                    |     r4 = r6 << 1;
    0x00000c8a movs r0, r0                       |     
    0x00000c8c lsls r0, r4, 1                    |     r0 = r4 << 1;
    0x00000c8e movs r0, r0                       |     
    0x00000c90 lsrs r0, r1, 0x20                 |     r0 = r1 >> 0x20;
    0x00000c92 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-fast.so.1.0.0 @ 0xd14 */
                                             | #include <stdint.h>
                                             |  
    ; (fcn) entry.init1 ()                   | void entry_init1 () {
                                             |     int16_t var_0h;
                                             |     if (? >= ?) {
                                             | label_1:
    0x00000cb4 ldrlt r4, [r0, -0x810]        |         r4 = *((r0 - 0x810));
                                             |     }
    0x00000cb8 sub sp, 0x10                  |     
    0x00000cba ldr r4, [pc, 0x40]            |     
    0x00000cbc add r0, pc                    |     r0 += pc;
    0x00000cbe add r4, pc                    |     r4 = 0x19c0;
    0x00000cc0 blx 0xac0                     |     r0 = getenv (r0);
                                             |     if (r0 != 0) {
    0x00000cc4 cbz r0, 0xcf4                 |         
    0x00000cc6 ldr r3, [pc, 0x38]            |         r3 = *(0xd02);
    0x00000cc8 ldr r3, [r4, r3]              |         r3 = *((r4 + r3));
    0x00000cca ldr r4, [r3]                  |         r4 = *(0xd02);
    0x00000ccc blx 0xae4                     |         getpid ();
    0x00000cd0 ldr r1, [pc, 0x30]            |         
    0x00000cd2 mov r3, r0                    |         r3 = r0;
    0x00000cd4 ldr r2, [pc, 0x30]            |         
    0x00000cd6 mov r0, r4                    |         r0 = r4;
    0x00000cd8 ldr.w ip, [pc, 0x30]          |         
    0x00000cdc add r1, pc                    |         r1 = 0x19e4;
    0x00000cde add r2, pc                    |         r2 = 0x19ea;
    0x00000ce0 strd r2, r1, [sp, 4]          |         __asm ("strd r2, r1, [sp, 4]");
    0x00000ce4 add ip, pc                    |         ip = 0x19f4;
    0x00000ce6 ldr r2, [pc, 0x28]            |         
    0x00000ce8 movs r1, 1                    |         r1 = 1;
    0x00000cea str.w ip, [sp]                |         __asm ("str.w ip, [sp]");
    0x00000cee add r2, pc                    |         r2 = 0x1a04;
    0x00000cf0 blx 0xaf0                     |         fprintf_chk ()
                                             |     }
    0x00000cf4 add sp, 0x10                  |     
    0x00000cf6 pop {r4, pc}                  |     
    0x00000d14 ldr r2, [pc, 0x44]            |     
    0x00000d16 push {r3, r4, r5, lr}         |     
    0x00000d18 ldr r3, [pc, 0x44]            |     r3 = *(0xd60);
    0x00000d1a add r2, pc                    |     r2 = 0x1a7a;
    0x00000d1c ldr r1, [r2, r3]              |     r1 = *(0x1a7a);
    0x00000d1e ldr r3, [r1]                  |     r3 = *(0x1a7a);
    0x00000d20 adds r0, r3, 1                |     r0 = r3 + 1;
    0x00000d22 str r0, [r1]                  |     *(r1) = r0;
                                             |     if (r3 != 0) {
    0x00000d24 cbnz r3, 0xd34                |         goto label_0;
                                             |     }
    0x00000d26 ldr r3, [pc, 0x3c]            |     r3 = *(0xd66);
    0x00000d28 ldr r4, [r2, r3]              |     r4 = *((r2 + r3));
    0x00000d2a ldr r3, [r4]                  |     r3 = *(r4);
    0x00000d2c cbz r3, 0xd36                 |     
                                             |     while (1) {
    0x00000d2e ldr r5, [r4]                  |         r5 = *(r4);
    0x00000d30 ldr r3, [r5, 4]               |         r3 = *((r5 + 4));
                                             |         if (r3 == 0) {
    0x00000d32 cbz r3, 0xd3e                 |             goto label_2;
                                             |         }
                                             | label_0:
    0x00000d34 pop {r3, r4, r5, pc}          |         
    0x00000d36 ldr r3, [pc, 0x30]            |         r3 = *(0xd6a);
    0x00000d38 ldr r3, [r2, r3]              |         r3 = *((r2 + r3));
    0x00000d3a str r3, [r4]                  |         *(r4) = r3;
    0x00000d3c b 0xd2e                       |         
                                             |     }
                                             | label_2:
    0x00000d3e ldr r0, [pc, 0x2c]            |     
    0x00000d40 mov.w r1, 0x102               |     r1 = 0x102;
    0x00000d44 add r0, pc                    |     r0 = 0x1ab6;
    0x00000d46 blx 0xacc                     |     dlopen ();
    0x00000d4a ldr r3, [r4]                  |     r3 = *(r4);
    0x00000d4c str r0, [r5, 4]               |     *((r5 + 4)) = r0;
    0x00000d4e ldr r3, [r3, 4]               |     r3 = *((r3 + 4));
    0x00000d50 cmp r3, 0                     |     
                                             |     if (r3 != 0) {
    0x00000d52 bne 0xd34                     |         goto label_0;
                                             |     }
    0x00000d54 pop.w {r3, r4, r5, lr}        |     
    0x00000d58 b 0xcb4                       |     goto label_1;
                                             | }

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