[*] Binary protection state of libvirtualinput.so
Full RELRO Canary found NX enabled DSO No RPATH No RUNPATH No Symbols
[*] Function printf tear down of libvirtualinput.so
; assembly | /* r2dec pseudo code output */
| /* /logs/firmware/patool_extraction/rootfs.img_unblob_extracted/rootfs.img_extract/0-80367616.squashfs_v4_le_extract/usr/lib/libvirtualinput.so @ 0x8fc */
| #include <stdint.h>
|
; (fcn) sym.virtual_input_port_deactivate () | void virtual_input_port_deactivate (int16_t arg1, int16_t arg2, int16_t arg3) {
| int32_t var_0h;
| int32_t var_0h_2;
| int16_t var_8h;
| int16_t var_10h;
| int16_t var_14h;
| r0 = arg1;
| r1 = arg2;
| r2 = arg3;
0x000008fc mvnsmi lr, 0xb4000 | __asm ("mvnsmi lr, 0xb4000");
0x00000900 mov r6, r2 | r6 = r2;
0x00000902 ldr r4, [pc, 0xb8] |
0x00000904 mov r2, r0 | r2 = r0;
0x00000906 mov r7, r1 | r7 = r1;
0x00000908 sub sp, 0x1c |
0x0000090a ldr r3, [pc, 0xb4] | r3 = *(0x9c2);
0x0000090c mov.w sb, 0 | sb = 0;
0x00000910 add r4, pc | r4 = 0x12d2;
0x00000912 ldr r1, [pc, 0xb0] |
0x00000914 ldr r0, [pc, 0xb0] |
0x00000916 ldr r3, [r4, r3] |
0x00000918 add r1, pc | r1 = 0x12e2;
0x0000091a add r0, pc | r0 = 0x12e6;
0x0000091c ldr r3, [r3] | r3 = *(0x12d2);
0x0000091e str r3, [sp, 0x14] | var_14h = r3;
0x00000920 mov.w r3, 0 | r3 = 0;
0x00000924 str.w sb, [sp, 0x10] | __asm ("str.w sb, [var_10h]");
0x00000928 blx 0x674 | g_strdup_printf ()
0x0000092c ldr r1, [pc, 0x9c] |
0x0000092e mov r5, r0 | r5 = r0;
0x00000930 mov r2, r0 | r2 = r0;
0x00000932 mov r3, r6 | r3 = r6;
0x00000934 add r0, sp, 0x10 | r0 += var_10h;
0x00000936 add r1, pc | r1 = 0x1306;
0x00000938 bl 0x79c | r0 = fcn_0000079c (r0, r1, r2, r3);
| if (r0 != 0) {
0x0000093c cbnz r0, 0x974 | goto label_2;
| }
0x0000093e ldr.w r8, [sp, 0x10] | r8 = var_10h;
0x00000942 mov r4, r0 | r4 = r0;
| if (r5 == 0) {
0x00000944 cbz r5, 0x94c | goto label_1;
| }
| label_0:
0x00000946 mov r0, r5 | r0 = r5;
0x00000948 blx 0x644 | g_free ();
| do {
| label_1:
0x0000094c cmp.w r8, 0 |
| if (r8 != 0) {
0x00000950 beq 0x958 |
0x00000952 mov r0, r8 | r0 = r8;
0x00000954 blx 0x65c | g_object_unref ();
| }
0x00000958 ldr r2, [pc, 0x74] |
0x0000095a ldr r3, [pc, 0x64] | r3 = *(0x9c2);
0x0000095c add r2, pc | r2 = 0x1330;
0x0000095e ldr r3, [r2, r3] | r3 = *(0x1330);
0x00000960 ldr r2, [r3] | r2 = *(0x1330);
0x00000962 ldr r3, [sp, 0x14] | r3 = var_14h;
0x00000964 eors r2, r3 | r2 ^= r3;
0x00000966 mov.w r3, 0 | r3 = 0;
| if (r2 != r3) {
0x0000096a bne 0x9b8 | goto label_3;
| }
0x0000096c mov r0, r4 | r0 = r4;
0x0000096e add sp, 0x1c |
0x00000970 pop.w {r4, r5, r6, r7, r8, sb, pc} |
| label_2:
0x00000974 ldr.w r8, [sp, 0x10] | r8 = var_10h;
0x00000978 mov.w r3, -1 | r3 = -1;
0x0000097c ldr r1, [pc, 0x54] |
0x0000097e mov r2, sb | r2 = sb;
0x00000980 strd r3, sb, [sp] | __asm ("strd r3, sb, [sp]");
0x00000984 mov r3, sb | r3 = sb;
0x00000986 mov r0, r8 | r0 = r8;
0x00000988 str r6, [sp, 8] | var_8h = r6;
0x0000098a add r1, pc | r1 = 0x1362;
0x0000098c blx 0x668 | r0 = g_dbus_proxy_call_sync ();
0x00000990 mov r4, r0 | r4 = r0;
| if (r0 == 0) {
0x00000992 cbz r0, 0x9b0 | goto label_4;
| }
0x00000994 ldr r1, [pc, 0x40] |
0x00000996 mov r2, r7 | r2 = r7;
0x00000998 add r1, pc | r1 = 0x1374;
0x0000099a blx 0x68c | g_variant_get ();
| if (r5 != 0) {
0x0000099e cbz r5, 0x9a6 |
0x000009a0 mov r0, r5 | r0 = r5;
0x000009a2 blx 0x644 | g_free ();
| }
0x000009a6 mov r0, r4 | r0 = r4;
0x000009a8 movs r4, 1 | r4 = 1;
0x000009aa blx 0x6a4 | g_variant_unref ();
0x000009ae b 0x94c |
| } while (1);
| label_4:
0x000009b0 cmp r5, 0 |
| if (r5 != 0) {
0x000009b2 bne 0x946 | goto label_0;
| }
0x000009b4 mov r4, r5 | r4 = r5;
0x000009b6 b 0x94c | goto label_1;
| label_3:
0x000009b8 blx 0x698 | stack_chk_fail ();
0x000009bc asrs r4, r3, 0x1a | r4 = r3 >> 0x1a;
0x000009be movs r0, r0 |
0x000009c0 lsls r0, r1, 1 | r0 = r1 << 1;
0x000009c2 movs r0, r0 |
0x000009c4 lsls r4, r2, 9 | r4 = r2 << 9;
0x000009c6 movs r0, r0 |
0x000009c8 lsls r6, r5, 9 | r6 = r5 << 9;
0x000009ca movs r0, r0 |
0x000009cc lsls r2, r3, 9 | r2 = r3 << 9;
0x000009ce movs r0, r0 |
0x000009d0 asrs r0, r2, 0x19 | r0 = r2 >> 0x19;
0x000009d2 movs r0, r0 |
0x000009d4 lsls r2, r6, 8 | r2 = r6 << 8;
0x000009d6 movs r0, r0 |
0x000009d8 lsls r0, r4, 8 | r0 = r4 << 8;
0x000009da movs r0, r0 |
| }
[*] Function printf used 2 times libvirtualinput.so