Function at 0x46c550
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c1870
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
push ebx
push esi
push edi
mov eax, dword [0x57e030]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
movzx eax, byte [ebp + 0x10]
movzx ecx, word [ebp + 0xc]
mov edi, dword [ebp + 8]
mov esi, dword [edi + 8]
push eax
push ecx
push str.Try_insert_a_char_event:_char___d__release___d
call fcn.00423a10
add esp, 0xc
cmp byte [edi], 0
jne 0x46c5a7
cmp byte [edi + 1], 0
mov byte [ebp - 0x15], 0
je 0x46c5ab
mov byte [ebp - 0x15], 1
mov dword [ebp - 4], 0
call fcn.0046cc90
mov esi, dword [edi + 8]
mov ebx, eax
push ebx
push str.Current_keyboard_layout___x
call fcn.00423a10
add esp, 8
push edi
mov edi, dword [ebp + 0xc]
mov ecx, ebx
call fcn.0046c8d0
mov edi, dword [ebp + 8]
mov esi, dword [edi + 8]
movzx eax, ax
movzx eax, ax
movsx edx, ax
push edx
push str.The_virtual_code_scan_result___d
mov dword [ebp - 0x1c], eax
call fcn.00423a10
mov eax, dword [ebp + 0xc]
add esp, 8
mov dword [ebp - 4], 0xffffffff
cmp ax, 0x41
jb 0x46c60b
cmp ax, 0x5a
jbe 0x46c614
add eax, 0xffffff9f
cmp ax, 0x19
ja 0x46c629
cmp byte [edi], 0
je 0x46c629
cmp byte [edi + 1], 0
jne 0x46c629
cmp byte [edi + 3], 0
mov byte [ebp + 0xf], 1
je 0x46c62d
mov byte [ebp + 0xf], 0
mov esi, dword [ebp - 0x1c]
push esi
push 1
push 0x14
mov ecx, ebx
call fcn.0046cce0
push esi
push 0x80
push 0x10
mov ecx, ebx
mov byte [ebp - 0x14], al
call fcn.0046cce0
mov bl, al
mov eax, esi
sar eax, 8
and al, 1
mov byte [ebp - 0x16], bl
push 0x14
je 0x46c6ba
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
call esi
test al, 1
je 0x46c6ce
push 0x14
call esi
test al, 1
je 0x46c678
cmp byte [ebp - 0x14], 0
jne 0x46c6ce
mov esi, dword [ebp - 0x1c]
xor dl, dl
mov byte [ebp - 0x11], 0
test dl, dl
jne 0x46c69c
cmp byte [edi + 3], dl
je 0x46c69c
cmp byte [ebp + 0x10], dl
jne 0x46c69c
cmp byte [ebp + 0xf], dl
jne 0x46c69c
mov byte [ebp - 0x12], 1
test bl, bl
je 0x46c6a0
mov byte [ebp - 0x12], 0
test esi, 0x200
je 0x46c6eb
cmp byte [edi], 0
jne 0x46c6eb
cmp byte [ebp + 0x10], 0
jne 0x46c6eb
mov bl, 1
mov byte [ebp - 0x15], bl
jmp 0x46c6f2
call dword [sym.imp.USER32.dll_GetKeyState]
test al, 1
je 0x46c67b
cmp byte [ebp - 0x14], 0
jne 0x46c67b
mov dl, 1
jmp 0x46c6d3
mov esi, dword [ebp - 0x1c]
mov dl, 1
cmp byte [edi + 3], 0
jne 0x46c67d
cmp byte [ebp + 0x10], 0
jne 0x46c67d
cmp byte [ebp + 0xf], 0
jne 0x46c67d
mov byte [ebp - 0x11], 1
jmp 0x46c69c
mov byte [ebp - 0x15], 0
mov bl, byte [ebp - 0x15]
mov eax, edi
test esi, 0x400
je 0x46c70f
cmp byte [eax + 1], 0
jne 0x46c70f
cmp byte [ebp + 0x10], 0
jne 0x46c70f
mov cl, 1
mov byte [ebp - 0x13], cl
jmp 0x46c716
mov byte [ebp - 0x13], 0
mov cl, byte [ebp - 0x13]
test bl, bl
jne 0x46c71e
test cl, cl
je 0x46c731
cmp byte [eax], 0
jne 0x46c810
cmp byte [eax + 1], 0
jne 0x46c810
movzx ecx, cl
push ecx
mov esi, dword [eax + 8]
movzx ecx, bl
push ecx
movzx ecx, byte [ebp - 0x12]
push ecx
movzx ecx, byte [ebp - 0x11]
push ecx
movzx ecx, byte [ebp - 0x16]
movzx edx, dl
push edx
movzx edx, byte [ebp - 0x14]
push ecx
movzx ecx, byte [ebp + 0xf]
push edx
push ecx
push str.Variable_states_before_generate_key_events_to_get_the_char:_controlSym___d__resistantToCaps___d__invariantToShift___d__shiftedKey___d__shiftPressNeeded___d__shiftUpNeeded___d__ctrlPressNeeded___d__altPressNeeded___d_
call fcn.00423a10
add esp, 0x24
test bl, bl
je 0x46c777
push 0
push 0x11
xor bl, bl
mov eax, edi
call fcn.0046c370
cmp byte [ebp - 0x13], 0
je 0x46c78a
push 0
push 0x12
xor bl, bl
mov eax, edi
call fcn.0046c370
cmp byte [ebp - 0x11], 0
je 0x46c794
xor bl, bl
jmp 0x46c79c
cmp byte [ebp - 0x12], 0
je 0x46c7a7
mov bl, 1
push 0
push 0x10
mov eax, edi
call fcn.0046c370
mov edx, dword [ebp - 0x1c]
mov bl, byte [ebp + 0x10]
push 0
mov esi, edi
push edx
mov eax, esi
call fcn.0046c370
cmp byte [ebp - 0x11], 0
je 0x46c7c3
mov bl, 1
jmp 0x46c7cb
cmp byte [ebp - 0x12], 0
je 0x46c7d6
xor bl, bl
push 0
push 0x10
mov eax, esi
call fcn.0046c370
cmp byte [ebp - 0x13], 0
je 0x46c7e9
push 0
push 0x12
mov bl, 1
mov eax, esi
call fcn.0046c370
cmp byte [ebp - 0x15], 0
je 0x46c7fc
push 0
push 0x11
mov bl, 1
mov eax, esi
call fcn.0046c370
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov esi, dword [eax + 8]
push str.Received_a_control_combination_that_we_doesnt_know_how_it_can_be_made
call fcn.00423920
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc