[*] 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-50593792.squashfs_v4_le_extract/usr/lib/libvirtualinput.so @ 0x830 */
                                                     | #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;
    0x00000830 mvnsmi lr, sp, lsr 18                 |     __asm ("mvnsmi lr, sp, lsr 18");
    0x00000834 mov r6, r2                            |     r6 = r2;
    0x00000836 ldr r4, [pc, 0xa8]                    |     
    0x00000838 mov r2, r0                            |     r2 = r0;
    0x0000083a mov r7, r1                            |     r7 = r1;
    0x0000083c sub sp, 0x18                          |     
    0x0000083e ldr r3, [pc, 0xa4]                    |     r3 = *(0x8e6);
    0x00000840 mov.w r8, 0                           |     r8 = 0;
    0x00000844 add r4, pc                            |     r4 = 0x112a;
    0x00000846 ldr r1, [pc, 0xa0]                    |     
    0x00000848 ldr r0, [pc, 0xa0]                    |     
    0x0000084a ldr r3, [r4, r3]                      |     
    0x0000084c add r1, pc                            |     r1 = 0x113a;
    0x0000084e add r0, pc                            |     r0 = 0x113e;
    0x00000850 ldr r3, [r3]                          |     r3 = *(0x112a);
    0x00000852 str r3, [sp, 0x14]                    |     var_14h = r3;
    0x00000854 mov.w r3, 0                           |     r3 = 0;
    0x00000858 str.w r8, [sp, 0x10]                  |     __asm ("str.w r8, [var_10h]");
    0x0000085c blx 0x5b8                             |     g_strdup_printf ()
    0x00000860 ldr r1, [pc, 0x8c]                    |     
    0x00000862 mov r2, r0                            |     r2 = r0;
    0x00000864 mov r3, r6                            |     r3 = r6;
    0x00000866 mov r4, r0                            |     r4 = r0;
    0x00000868 add r0, sp, 0x10                      |     r0 += var_10h;
    0x0000086a add r1, pc                            |     r1 = 0x115e;
    0x0000086c bl 0x6e0                              |     fcn_000006e0 (r0, r1, r2, r3);
    0x00000870 ldr r5, [sp, 0x10]                    |     r5 = var_10h;
    0x00000872 cbnz r0, 0x8a2                        |     
                                                     |     while (r0 == 0) {
                                                     |         if (r4 != 0) {
    0x00000874 cbz r4, 0x87e                         |             
    0x00000876 mov r0, r4                            |             r0 = r4;
    0x00000878 movs r4, 0                            |             r4 = 0;
    0x0000087a blx 0x588                             |             g_free ();
                                                     |         }
                                                     |         if (r5 != 0) {
                                                     | label_0:
    0x0000087e cbz r5, 0x886                         |             
    0x00000880 mov r0, r5                            |             r0 = r5;
    0x00000882 blx 0x5a0                             |             g_object_unref ();
                                                     |         }
    0x00000886 ldr r2, [pc, 0x6c]                    |         
    0x00000888 ldr r3, [pc, 0x58]                    |         r3 = *(0x8e4);
    0x0000088a add r2, pc                            |         r2 = 0x1184;
    0x0000088c ldr r3, [r2, r3]                      |         r3 = *(0x1184);
    0x0000088e ldr r2, [r3]                          |         r2 = *(0x1184);
    0x00000890 ldr r3, [sp, 0x14]                    |         r3 = var_14h;
    0x00000892 eors r2, r3                           |         r2 ^= r3;
    0x00000894 mov.w r3, 0                           |         r3 = 0;
                                                     |         if (r2 != r3) {
    0x00000898 bne 0x8dc                             |             goto label_1;
                                                     |         }
    0x0000089a mov r0, r4                            |         r0 = r4;
    0x0000089c add sp, 0x18                          |         
    0x0000089e pop.w {r4, r5, r6, r7, r8, pc}        |         
    0x000008a2 ldr r1, [pc, 0x54]                    |         
    0x000008a4 mov.w r3, -1                          |         r3 = -1;
    0x000008a8 str r6, [sp, 8]                       |         var_8h = r6;
    0x000008aa mov r2, r8                            |         r2 = r8;
    0x000008ac strd r3, r8, [sp]                     |         __asm ("strd r3, r8, [sp]");
    0x000008b0 mov r0, r5                            |         r0 = r5;
    0x000008b2 mov r3, r8                            |         r3 = r8;
    0x000008b4 add r1, pc                            |         r1 = 0x11b2;
    0x000008b6 blx 0x5ac                             |         r0 = g_dbus_proxy_call_sync ();
    0x000008ba mov r6, r0                            |         r6 = r0;
    0x000008bc cmp r0, 0                             |         
    0x000008be beq 0x874                             |         
                                                     |     }
    0x000008c0 ldr r1, [pc, 0x38]                    |     
    0x000008c2 mov r2, r7                            |     r2 = r7;
    0x000008c4 add r1, pc                            |     r1 = 0x11c4;
    0x000008c6 blx 0x5d0                             |     g_variant_get ();
                                                     |     if (r4 != 0) {
    0x000008ca cbz r4, 0x8d2                         |         
    0x000008cc mov r0, r4                            |         r0 = r4;
    0x000008ce blx 0x588                             |         g_free ();
                                                     |     }
    0x000008d2 mov r0, r6                            |     r0 = r6;
    0x000008d4 movs r4, 1                            |     r4 = 1;
    0x000008d6 blx 0x5e8                             |     g_variant_unref ();
    0x000008da b 0x87e                               |     goto label_0;
                                                     | label_1:
    0x000008dc blx 0x5dc                             |     stack_chk_fail ();
    0x000008e0 lsls r0, r5, 0x1d                     |     r0 = r5 << 0x1d;
    0x000008e2 movs r1, r0                           |     r1 = r0;
    0x000008e4 lsls r0, r1, 1                        |     r0 = r1 << 1;
    0x000008e6 movs r0, r0                           |     
    0x000008e8 lsls r4, r1, 9                        |     r4 = r1 << 9;
    0x000008ea movs r0, r0                           |     
    0x000008ec lsls r6, r4, 9                        |     r6 = r4 << 9;
    0x000008ee movs r0, r0                           |     
    0x000008f0 lsls r2, r2, 9                        |     r2 <<= 9;
    0x000008f2 movs r0, r0                           |     
    0x000008f4 lsls r2, r4, 0x1c                     |     r2 = r4 << 0x1c;
    0x000008f6 movs r1, r0                           |     r1 = r0;
    0x000008f8 lsls r4, r6, 8                        |     r4 = r6 << 8;
    0x000008fa movs r0, r0                           |     
    0x000008fc lsls r0, r4, 8                        |     r0 = r4 << 8;
    0x000008fe movs r0, r0                           |     
                                                     | }

[*] Function printf used 2 times libvirtualinput.so