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