Function at 0x405410
Capabilities:
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, ecx
push esi
push ebx
sub esp, 0xcc
mov ecx, dword [ebp + 8]
mov dword [ebp - 0xbc], eax
mov dword [ebp - 0xb4], edx
mov ebx, ecx
and ebx, 0x10
jne 0x4055b0
mov eax, dword [sym.imp.user32.dll_MapVirtualKeyW]
xor edx, edx
mov esi, 1
mov dword [ebp - 0xb0], eax
test cl, 2
jne 0x405624
and ecx, 8
jne 0x4056a3
mov eax, ebx
and eax, 8
mov dword [ebp - 0xb8], eax
lea ecx, [edx + edx*4]
mov eax, 1
mov dword [esp], edi
lea esi, [esi + esi*4]
shl ecx, 2
mov dword [ebp - 0xc4], edx
shl esi, 2
mov word [ebp + ecx - 0xac], ax
mov eax, 1
mov word [ebp + ecx - 0xa4], ax
movzx eax, word [ebp - 0xb4]
mov dword [ebp + ecx - 0xa8], 1
mov word [ebp + ecx - 0x9e], ax
mov eax, dword [ebp - 0xb0]
mov word [ebp + ecx - 0xa2], di
mov dword [ebp - 0xc0], ecx
mov dword [esp + 4], 0
call eax
mov ecx, dword [ebp - 0xc0]
mov edx, dword [ebp - 0xc4]
mov dword [ebp + esi - 0xa8], 0
sub esp, 8
mov word [ebp + esi - 0xa2], di
mov word [ebp + ecx - 0xa0], ax
mov eax, dword [ebp - 0xb0]
mov dword [ebp + ecx - 0x9c], ebx
lea ecx, [edx + 2]
mov edx, 1
mov word [ebp + esi - 0xac], dx
movzx edx, word [ebp - 0xb4]
mov dword [ebp - 0xc0], ecx
mov ecx, 1
mov word [ebp + esi - 0xa4], cx
mov word [ebp + esi - 0x9e], dx
mov dword [esp + 4], 0
mov dword [esp], edi
call eax
mov dword [ebp + esi - 0x9c], ebx
mov ecx, dword [ebp - 0xc0]
mov word [ebp + esi - 0xa0], ax
mov esi, dword [ebp - 0xb8]
sub esp, 8
mov edx, dword [ebp - 0xc4]
test esi, esi
jne 0x405848
test bl, 2
jne 0x4057d8
test bl, 0x10
jne 0x405768
test byte [0x413058], 8
jne 0x405728
mov dword [esp], 0
mov eax, dword [ebp - 0xbc]
lea edx, [ebp - 0xac]
call sym._write_console_input.part.0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 1
xor edx, edx
mov dword [ebp - 0xa8], 1
mov esi, 2
mov word [ebp - 0xac], ax
mov eax, dword [sym.imp.user32.dll_MapVirtualKeyW]
mov ebx, 0x10
mov word [ebp - 0x9e], dx
mov dword [ebp - 0xa4], 0x100001
mov dword [esp + 4], 0
mov dword [esp], 0x10
mov dword [ebp - 0xb0], eax
call eax
mov ecx, dword [ebp + 8]
mov edx, 1
mov dword [ebp - 0x9c], 0x10
mov word [ebp - 0xa0], ax
sub esp, 8
test cl, 2
je 0x405453
lea edx, [edx + edx*4]
mov eax, 1
mov dword [ebp + 8], ecx
or ebx, 2
shl edx, 2
mov dword [esp + 4], 0
mov word [ebp + edx - 0xac], ax
xor eax, eax
mov word [ebp + edx - 0x9e], ax
mov eax, dword [ebp - 0xb0]
mov dword [ebp + edx - 0xa8], 1
mov dword [ebp + edx - 0xa4], 0x120001
mov dword [ebp - 0xb8], edx
mov dword [esp], 0x12
call eax
mov edx, dword [ebp - 0xb8]
mov ecx, dword [ebp + 8]
sub esp, 8
mov word [ebp + edx - 0xa0], ax
mov dword [ebp + edx - 0x9c], ebx
mov edx, esi
add esi, 1
and ecx, 8
je 0x40545c
lea edx, [edx + edx*4]
mov eax, 1
or ebx, 8
mov dword [esp + 4], 0
shl edx, 2
mov dword [esp], 0x11
mov word [ebp + edx - 0xac], ax
xor eax, eax
mov word [ebp + edx - 0x9e], ax
mov eax, dword [ebp - 0xb0]
mov dword [ebp + edx - 0xa8], 1
mov dword [ebp + edx - 0xa4], 0x110001
mov dword [ebp - 0xb8], edx
call eax
mov edx, dword [ebp - 0xb8]
mov dword [ebp - 0xb8], 8
sub esp, 8
mov word [ebp + edx - 0xa0], ax
mov dword [ebp + edx - 0x9c], ebx
mov edx, esi
add esi, 1
jmp 0x405467
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], 0x414246
mov dword [esp + 8], str.write_console_input
mov dword [esp + 4], 0x413058
mov dword [esp], 3
mov dword [ebp - 0xb0], ecx
call sym._wine_dbg_log.constprop.0
mov ecx, dword [ebp - 0xb0]
jmp 0x40558f
lea edi, [ecx + ecx*4]
mov eax, 1
xor edx, edx
and ebx, 0xffffffef
shl edi, 2
lea esi, [ecx + 1]
mov dword [esp + 4], 0
mov word [ebp + edi - 0xac], ax
mov eax, dword [ebp - 0xb0]
mov dword [ebp + edi - 0xa8], 0
mov word [ebp + edi - 0x9e], dx
mov dword [ebp + edi - 0xa4], 0x100001
mov dword [esp], 0x10
call eax
mov dword [ebp + edi - 0x9c], ebx
mov ecx, esi
mov word [ebp + edi - 0xa0], ax
sub esp, 8
jmp 0x405582
lea edi, [ecx + ecx*4]
lea esi, [ecx + 1]
xor eax, eax
mov ecx, 1
shl edi, 2
mov dword [esp + 4], 0
and ebx, 0xfffffffd
mov word [ebp + edi - 0xac], cx
mov word [ebp + edi - 0x9e], ax
mov eax, dword [ebp - 0xb0]
mov dword [ebp + edi - 0xa8], 0
mov dword [ebp + edi - 0xa4], 0x120001
mov dword [esp], 0x12
call eax
mov dword [ebp + edi - 0x9c], ebx
mov ecx, esi
mov word [ebp + edi - 0xa0], ax
sub esp, 8
jmp 0x405579
lea edi, [ecx + ecx*4]
mov eax, 1
lea esi, [edx + 3]
and ebx, 0xfffffff7
shl edi, 2
mov dword [esp + 4], 0
mov word [ebp + edi - 0xac], ax
xor eax, eax
mov word [ebp + edi - 0x9e], ax
mov eax, dword [ebp - 0xb0]
mov dword [ebp + edi - 0xa8], 0
mov dword [ebp + edi - 0xa4], 0x110001
mov dword [esp], 0x11
call eax
mov dword [ebp + edi - 0x9c], ebx
mov ecx, esi
mov word [ebp + edi - 0xa0], ax
sub esp, 8
jmp 0x405570