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