[*] 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-50593792.squashfs_v4_le_extract/usr/lib/liblttng-ust-cyg-profile-fast.so.1.0.0 @ 0xae0 */
| #include <stdint.h>
|
; (fcn) entry.fini2 () | void entry_fini2 () {
0x00000ae0 push {r3, r4, r5, r6, r7, lr} |
0x00000ae2 ldr r4, [pc, 0x80] |
0x00000ae4 ldr r3, [pc, 0x80] | r3 = *(0xb68);
0x00000ae6 add r4, pc | r4 = 0x1650;
0x00000ae8 ldr r5, [r4, r3] | r5 = *(0x1650);
0x00000aea ldr r3, [r5] | r3 = *(0x1650);
0x00000aec subs r3, 1 | r3--;
0x00000aee str r3, [r5] | *(r5) = r3;
| if (r3 != 0) {
0x00000af0 cbnz r3, 0xb3c | goto label_1;
| }
0x00000af2 ldr r3, [pc, 0x78] | r3 = *(0xb6e);
0x00000af4 ldr r6, [r4, r3] | r6 = *((r4 + r3));
0x00000af6 ldr r3, [r6] | r3 = *(r6);
| if (r3 == 0) {
0x00000af8 cbz r3, 0xb46 | goto label_2;
| }
| label_0:
0x00000afa ldr r3, [pc, 0x74] | r3 = *(0xb72);
0x00000afc ldr r7, [r4, r3] | r7 = *((r4 + r3));
0x00000afe ldr r3, [r7] | r3 = *(r7);
0x00000b00 cbz r3, 0xb3e |
| while (1) {
0x00000b02 ldr r3, [r6] | r3 = *(r6);
0x00000b04 ldr r3, [r3, 0xc] | r3 = *((r3 + 0xc));
| if (r3 != 0) {
0x00000b06 cbz r3, 0xb0e |
0x00000b08 ldr r2, [pc, 0x68] | r2 = *(0xb74);
0x00000b0a ldr r0, [r4, r2] | r0 = *((r4 + r2));
0x00000b0c blx r3 | uint32_t (*r3)(uint32_t, uint32_t) (r0, r2);
| }
0x00000b0e ldr r3, [r6] | r3 = *(r6);
0x00000b10 ldr r3, [r3, 4] | r3 = *((r3 + 4));
| if (r3 != 0) {
0x00000b12 cbz r3, 0xb3c |
0x00000b14 ldr r3, [r7] | r3 = *(r7);
0x00000b16 ldr r3, [r3, 8] | r3 = *((r3 + 8));
| if (r3 == 0) {
0x00000b18 cbz r3, 0xb3c | goto label_1;
| }
0x00000b1a blx r3 | r0 = uint32_t (*r3)(uint32_t) (r0);
| if (r0 == 0) {
0x00000b1c cbz r0, 0xb3c | goto label_1;
| }
0x00000b1e ldr r3, [r5] | r3 = *(r5);
| if (r3 != 0) {
0x00000b20 cbnz r3, 0xb3c | goto label_1;
| }
0x00000b22 ldr r3, [r6] | r3 = *(r6);
0x00000b24 ldr r0, [r3, 4] | r0 = *((r3 + 4));
0x00000b26 blx 0xa1c | r0 = dlclose ();
| if (r0 != 0) {
0x00000b2a cbnz r0, 0xb4e | goto label_3;
| }
0x00000b2c ldr r3, [r6] | r3 = *(r6);
0x00000b2e str r0, [r3] | *(r3) = r0;
0x00000b30 str r0, [r3, 4] | *((r3 + 4)) = r0;
0x00000b32 str r0, [r3, 8] | *((r3 + 8)) = r0;
0x00000b34 str r0, [r3, 0xc] | *((r3 + 0xc)) = r0;
0x00000b36 str r0, [r3, 0x10] | *((r3 + 0x10)) = r0;
0x00000b38 str r0, [r3, 0x14] | *((r3 + 0x14)) = r0;
0x00000b3a str r0, [r3, 0x18] | *((r3 + 0x18)) = r0;
| }
| label_1:
0x00000b3c pop {r3, r4, r5, r6, r7, pc} |
0x00000b3e ldr r3, [pc, 0x38] | r3 = *(0xb7a);
0x00000b40 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00000b42 str r3, [r7] | *(r7) = r3;
0x00000b44 b 0xb02 |
| }
| label_2:
0x00000b46 ldr r3, [pc, 0x34] | r3 = *(0xb7e);
0x00000b48 ldr r3, [r4, r3] | r3 = *((r4 + r3));
0x00000b4a str r3, [r6] | *(r6) = r3;
0x00000b4c b 0xafa | goto label_0;
| label_3:
0x00000b4e ldr r5, [pc, 0x30] | r5 = *(0xb82);
0x00000b50 mov r3, r0 | r3 = r0;
0x00000b52 ldr r2, [pc, 0x30] |
0x00000b54 movs r1, 1 | r1 = 1;
0x00000b56 ldr r0, [r4, r5] | r0 = *((r4 + r5));
0x00000b58 add r2, pc | r2 = 0x16e2;
0x00000b5a ldr r0, [r0] | r0 = *(r0);
0x00000b5c blx 0x9ec | fprintf_chk ()
0x00000b60 blx 0xa28 | abort ();
0x00000b64 asrs r2, r1, 0x12 | r2 = r1 >> 0x12;
0x00000b66 movs r1, r0 | r1 = r0;
0x00000b68 lsls r0, r5, 1 | r0 = r5 << 1;
0x00000b6a movs r0, r0 |
0x00000b6c lsls r4, r3, 1 | r4 = r3 << 1;
0x00000b6e movs r0, r0 |
0x00000b70 lsls r0, r2, 1 | r0 = r2 << 1;
0x00000b72 movs r0, r0 |
0x00000b74 lsls r4, r1, 1 | r4 = r1 << 1;
0x00000b76 movs r0, r0 |
0x00000b78 lsls r4, r4, 1 | r4 <<= 1;
0x00000b7a movs r0, r0 |
0x00000b7c lsls r4, r5, 1 | r4 = r5 << 1;
0x00000b7e movs r0, r0 |
0x00000b80 lsls r0, r3, 1 | r0 = r3 << 1;
0x00000b82 movs r0, r0 |
0x00000b84 lsls r0, r6, 0x1b | r0 = r6 << 0x1b;
0x00000b86 movs r0, r0 |
| }
[*] Function fprintf used 2 times liblttng-ust-cyg-profile-fast.so.1.0.0