[*] Binary protection state of libpinchart-api.so.0.0.1
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libpinchart-api.so.0.0.1
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libpinchart-api.so.0.0.1 @ 0x1a50 */
| #include <stdint.h>
|
; (fcn) sym.collection_pinchart_new () | uint32_t collection_pinchart_new (int16_t arg1, int16_t arg2, int16_t arg3) {
| int16_t var_0h;
| int16_t var_4h;
| int16_t var_8h;
| int16_t var_ch;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x00001a50 push.w {r4, r5, r6, r7, r8, sb, sl, fp, lr} |
0x00001a54 mov r7, r2 | r7 = r2;
0x00001a56 ldr r2, [pc, 0xf4] |
0x00001a58 sub sp, 0x1c |
0x00001a5a add.w sb, sp, 8 | sb += var_8h;
0x00001a5e movs r4, 0 | r4 = 0;
0x00001a60 ldr r3, [pc, 0xec] | r3 = *(0x1b50);
0x00001a62 mov r6, r0 | r6 = r0;
0x00001a64 add r2, pc | r2 = 0x35b6;
0x00001a66 ldr.w sl, [pc, 0xec] |
0x00001a6a mov r8, r1 | r8 = r1;
0x00001a6c ldr r3, [r2, r3] |
0x00001a6e add sl, pc | sl = 0x35c8;
0x00001a70 mov r2, sl | r2 = sl;
0x00001a72 ldr r3, [r3] | r3 = *(0x35b6);
0x00001a74 str r3, [sp, 0x14] | var_14h = r3;
0x00001a76 mov.w r3, 0 | r3 = 0;
0x00001a7a mov r3, sb | r3 = sb;
0x00001a7c str r4, [sp, 8] | var_8h = r4;
0x00001a7e blx 0x17ac | fcn_000017ac ();
0x00001a82 ldr r5, [sp, 8] | r5 = var_8h;
0x00001a84 cmp r5, 0 |
| if (r5 != 0) {
0x00001a86 bne 0x1b28 | goto label_2;
| }
0x00001a88 mov fp, r0 |
0x00001a8a blx 0x157c | fcn_0000157c ();
0x00001a8e ldr r1, [pc, 0xc8] |
0x00001a90 mov r3, r5 | r3 = r5;
0x00001a92 mov r2, fp | r2 = fp;
0x00001a94 add r1, pc | r1 = 0x35f2;
0x00001a96 blx 0x15d4 | r0 = interface_definition_create ();
0x00001a9a mov r4, r0 | r4 = r0;
0x00001a9c blx 0x1770 | r0 = fcn_00001770 ();
0x00001aa0 mov r1, r0 | r1 = r0;
0x00001aa2 mov r0, r4 | r0 = r4;
0x00001aa4 blx 0x170c | stack_chk_fail ();
0x00001aa8 mov r1, r5 | r1 = r5;
0x00001aaa mov sl, r0 | sl = r0;
0x00001aac mov r0, r6 | r0 = r6;
0x00001aae str r5, [sp, 0xc] | var_ch = r5;
0x00001ab0 blx 0x1724 | r0 = resource_instance_get_type ();
0x00001ab4 mov r5, r0 | r5 = r0;
0x00001ab6 blx 0x1658 | g_snprintf ()
0x00001aba mov r1, r5 | r1 = r5;
0x00001abc blx 0x17a0 | r0 = fcn_000017a0 ();
| if (r0 == 0) {
0x00001ac0 cbz r0, 0x1afc | goto label_3;
| }
0x00001ac2 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00001ac4 cbz r1, 0x1acc |
| while (r1 != 0) {
0x00001ac6 mov r0, sb | r0 = sb;
0x00001ac8 blx 0x1640 | resource_get_passive_conf_view ();
| label_0:
0x00001acc ldr r1, [sp, 8] | r1 = var_8h;
| if (r1 != 0) {
0x00001ace cbz r1, 0x1ad6 |
0x00001ad0 mov r0, r7 | r0 = r7;
0x00001ad2 blx 0x1640 | resource_get_passive_conf_view ();
| }
0x00001ad6 blx 0x1770 | r0 = fcn_00001770 ();
0x00001ada mov r1, r0 | r1 = r0;
0x00001adc mov r0, r4 | r0 = r4;
0x00001ade blx 0x170c | stack_chk_fail ();
| label_1:
0x00001ae2 ldr r2, [pc, 0x78] |
0x00001ae4 ldr r3, [pc, 0x68] | r3 = *(0x1b50);
0x00001ae6 add r2, pc | r2 = 0x3648;
0x00001ae8 ldr r3, [r2, r3] | r3 = *(0x3648);
0x00001aea ldr r2, [r3] | r2 = *(0x3648);
0x00001aec ldr r3, [sp, 0x14] | r3 = var_14h;
0x00001aee eors r2, r3 | r2 ^= r3;
0x00001af0 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x00001af4 bne 0x1b48 | goto label_4;
| }
0x00001af6 add sp, 0x1c |
0x00001af8 pop.w {r4, r5, r6, r7, r8, sb, sl, fp, pc} |
| label_3:
0x00001afc blx 0x1588 | fcn_00001588 ();
0x00001b00 add r1, sp, 0xc | r1 += var_ch;
0x00001b02 mov r2, r0 | r2 = r0;
0x00001b04 str r1, [sp, 4] | var_4h = r1;
0x00001b06 mov r3, r8 | r3 = r8;
0x00001b08 mov r0, sl | r0 = sl;
0x00001b0a movs r1, 1 | r1 = 1;
0x00001b0c str r6, [sp] | *(sp) = r6;
0x00001b0e str r2, [sp, 0x10] | var_10h = r2;
0x00001b10 blx 0x16b8 | r0 = g_list_append ();
| if (r0 != 0) {
0x00001b14 cbz r0, 0x1b1a |
0x00001b16 blx 0x14f4 | fcn_000014f4 ();
| }
0x00001b1a add r0, sp, 0x10 | r0 += var_10h;
0x00001b1c blx 0x1694 | resource_declare_interface_implementation ();
0x00001b20 ldr r1, [sp, 0xc] | r1 = var_ch;
0x00001b22 cmp r1, 0 |
0x00001b24 bne 0x1ac6 |
| }
0x00001b26 b 0x1acc | goto label_0;
| label_2:
0x00001b28 mov r1, r5 | r1 = r5;
0x00001b2a mov r0, r7 | r0 = r7;
0x00001b2c blx 0x1640 | resource_get_passive_conf_view ();
0x00001b30 ldr r3, [pc, 0x2c] |
0x00001b32 mov r0, r4 | r0 = r4;
0x00001b34 ldr r2, [pc, 0x2c] |
0x00001b36 movs r1, 0x10 | r1 = 0x10;
0x00001b38 str.w sl, [sp] | __asm ("str.w sl, [sp]");
0x00001b3c add r3, pc | r3 = 0x36a0;
0x00001b3e add r2, pc | r2 = 0x36a6;
0x00001b40 blx 0x1828 | fcn_00001828 ();
0x00001b44 mov r0, r4 | r0 = r4;
0x00001b46 b 0x1ae2 | goto label_1;
| label_4:
0x00001b48 blx 0x1718 | get_domain_context_from_system_registry ();
0x00001b4c add r4, r3 | r4 += r3;
0x00001b4e movs r0, r0 |
0x00001b50 lsls r4, r6, 5 | r4 = r6 << 5;
0x00001b52 movs r0, r0 |
0x00001b54 movs r2, 0xbe | r2 = 0xbe;
0x00001b56 movs r0, r0 |
0x00001b58 movs r2, 0xdc | r2 = 0xdc;
0x00001b5a movs r0, r0 |
0x00001b5c bics r2, r3 | __asm ("bics r2, r3");
0x00001b5e movs r0, r0 |
0x00001b60 movs r5, 0x4c | r5 = 0x4c;
0x00001b62 movs r0, r0 |
0x00001b64 movs r1, 0xfa | r1 = 0xfa;
0x00001b66 movs r0, r0 |
0x00001b68 bx lr | return r0;
| }
[*] Function printf used 2 times libpinchart-api.so.0.0.1