[*] 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