Function at 0x497c60
Capabilities:
Get keyboard layout
Log keystrokes

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xf
push 0
push 0
dec ecx
jne 0x497c68
push ecx
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x498076
push dword fs:[eax]
mov dword fs:[eax], esp
mov esi, edx
lea edi, [ebp - 0x18]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
cmp word [ebp - 0x14], 0
jne 0x498046
mov esi, dword [ebp - 0x10]
lea edx, [ebp - 0x58]
mov eax, esi
call fcn.0049209c
mov edx, dword [ebp - 0x58]
lea eax, [ebp - 8]
call fcn.0040525c
lea eax, [ebp - 0x54]
xor ecx, ecx
mov edx, 0x3c
call fcn.004035a4
test esi, esi
je 0x497ce2
push 0xfffffffffffffff0
push esi
call sub.user32.dll_GetKeyboardLayout
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x30], eax
push 0xffffffffffffffec
push esi
call sub.user32.dll_GetKeyboardLayout
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 8]
mov edx, 0x49808c
call fcn.004053d8
je 0x497d04
mov eax, dword [ebp - 8]
mov edx, 0x49809c
call fcn.004053d8
jne 0x498046
lea edx, [ebp - 4]
mov eax, esi
call fcn.00492024
test esi, esi
je 0x497d42
cmp word [ebx + 0x5d2], 0
je 0x497d42
mov edx, dword [ebp - 0x2c]
push edx
mov edx, dword [ebp - 4]
push edx
mov eax, dword [ebx + 0x580]
lea edx, [eax + 8]
push edx
add eax, 4
push eax
mov ecx, esi
mov edx, ebx
mov eax, dword [ebx + 0x5d4]
call dword [ebx + 0x5d0]
mov eax, dword [ebx + 0x580]
cmp byte [eax + 4], 0
je 0x497d5a
push 0
push 0
push 0x10
push esi
call sub.user32.dll_MapVirtualKeyA
mov eax, dword [ebx + 0x580]
cmp byte [eax + 6], 0
je 0x497d86
mov eax, dword [0x4bbddc]
mov eax, dword [eax]
mov eax, dword [eax + 0x98]
call fcn.0042f0f8
push eax
push 0
push 0x80
push esi
call sub.user32.dll_MapVirtualKeyA
mov eax, dword [ebx + 0x580]
cmp byte [eax + 5], 0
je 0x497dfb
mov al, byte [0x4980c0]
push eax
lea eax, [ebp - 0x5c]
push eax
xor ecx, ecx
mov edx, 0x4980cc
mov eax, dword [ebp - 4]
call fcn.0040f334
mov edx, dword [ebp - 0x5c]
lea eax, [ebp - 4]
call fcn.00405074
mov al, byte [0x4980c0]
push eax
lea eax, [ebp - 0x60]
push eax
lea eax, [ebp - 0x64]
mov edx, dword [ebx + 0x580]
mov edx, dword [edx + 8]
call fcn.0040525c
mov ecx, dword [ebp - 0x64]
mov edx, 0x4980e0
mov eax, dword [ebp - 4]
call fcn.0040f334
mov edx, dword [ebp - 0x60]
lea eax, [ebp - 4]
call fcn.00405074
mov eax, dword [ebp - 4]
call fcn.0040548c
push eax
push esi
call sub.user32.dll_ScreenToClient
mov eax, dword [ebx + 0x578]
cmp byte [eax + 6], 0
je 0x497e92
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 4]
call fcn.0040aa54
mov edx, dword [ebp - 0x68]
mov eax, 0x4980fc
call fcn.0040eb90
test eax, eax
je 0x497e62
push 0
push 0
push 0x201
push esi
call sub.user32.dll_IsIconic
push 0
push 0
push 0x202
push esi
call sub.user32.dll_IsIconic
push 0
push 0
push 0x10
push esi
call sub.user32.dll_MapVirtualKeyA
mov eax, dword [0x4bbddc]
mov eax, dword [eax]
call fcn.004599ec
jmp 0x498046
lea edx, [ebp - 0x6c]
mov eax, dword [ebp - 4]
call fcn.0040aa54
mov edx, dword [ebp - 0x6c]
mov eax, 0x49810c
call fcn.0040eb90
test eax, eax
jne 0x497e87
cmp dword [ebp - 0x2c], 0x410101
jne 0x497e92
push esi
call sub.user32.dll_CharUpperBuffA
jmp 0x498046
mov eax, dword [ebx + 0x5a4]
cmp byte [eax + 4], 0
je 0x498046
mov byte [0x4bfc6c], 1
cmp byte [0x4bfc75], 0
je 0x498046
mov byte [0x4bfc75], 0
cmp byte [0x4bfc74], 0
je 0x497ee3
push 0
push 0
push 0
push 0
push 0xfffffda8
push 0
push 0
call sub.user32.dll_RemovePropA
mov byte [0x4bfc74], 0
mov eax, dword [ebx + 0x5a4]
cmp byte [eax + 0x18], 0
jne 0x497f05
push 0
push 0
push 0xf5
push 0x420
push esi
call sub.user32.dll_LoadStringA
jmp 0x497f19
push 0
push 0
push 0xf5
push 0x421
push esi
call sub.user32.dll_LoadStringA
mov eax, dword [ebx + 0x5a4]
mov eax, dword [eax + 0xc]
call fcn.0040548c
push eax
push 0x1fd3
push esi
call sub.user32.dll_MsgWaitForMultipleObjects
mov eax, dword [ebx + 0x5a4]
mov eax, dword [eax + 0x10]
call fcn.0040548c
push eax
push 0x1fd5
push esi
call sub.user32.dll_MsgWaitForMultipleObjects
mov eax, dword [ebx + 0x5a4]
mov eax, dword [eax + 0x14]
push dword [eax + 0xc]
push dword [eax + 8]
lea edx, [ebp - 0x70]
mov eax, ebx
call fcn.00499394
mov eax, dword [ebp - 0x70]
call fcn.0040548c
push eax
push 0x483
push esi
call sub.user32.dll_MsgWaitForMultipleObjects
mov eax, dword [ebx + 0x5a4]
mov eax, dword [eax + 0x14]
push dword [eax + 0x1c]
push dword [eax + 0x18]
lea edx, [ebp - 0x74]
mov eax, ebx
call fcn.00499394
mov eax, dword [ebp - 0x74]
call fcn.0040548c
push eax
push 0x484
push esi
call sub.user32.dll_MsgWaitForMultipleObjects
mov eax, dword [ebx + 0x5a4]
mov eax, dword [eax + 0x14]
push dword [eax + 0x14]
push dword [eax + 0x10]
lea edx, [ebp - 0x78]
mov eax, ebx
call fcn.00499394
mov eax, dword [ebp - 0x78]
call fcn.0040548c
push eax
push 0x485
push esi
call sub.user32.dll_MsgWaitForMultipleObjects
mov eax, dword [ebx + 0x5a4]
mov eax, dword [eax + 0x14]
push dword [eax + 0x24]
push dword [eax + 0x20]
lea edx, [ebp - 0x7c]
mov eax, ebx
call fcn.00499394
mov eax, dword [ebp - 0x7c]
call fcn.0040548c
push eax
push 0x486
push esi
call sub.user32.dll_MsgWaitForMultipleObjects
mov eax, dword [0x4bbfb0]
cmp dword [eax], 2
jne 0x498035
mov eax, dword [0x4bbc18]
cmp dword [eax], 4
jle 0x498035
push 0
push 0
push 0xf5
push 0
push 0x498114
push 0
push esi
call sub.user32.dll_DefWindowProcA
push eax
call sub.user32.dll_IsIconic
jmp 0x498046
push 0
push 0
push 0xf5
push 1
push esi
call sub.user32.dll_LoadStringA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x49807d
lea eax, [ebp - 0x7c]
mov edx, 9
call fcn.00405000
lea eax, [ebp - 0x58]
call fcn.004056cc
lea eax, [ebp - 8]
mov edx, 2
call fcn.00405000
ret