Function at 0x405674
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
mov eax, dword [ebp + 0x10]
movsx ecx, ax
push ebx
shr eax, 0x10
push esi
mov esi, dword [ebp + 8]
cwde
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], eax
cmp dword [esi + 0x38b0], ecx
jne 0x4056eb
cmp dword [esi + 0x38b4], eax
jne 0x4056eb
cmp dword [esi + 0x3854], 1
jne 0x405a90
mov eax, dword [esi + 0x38b8]
sub eax, 3
je 0x405a5a
dec eax
je 0x4059ca
dec eax
je 0x405919
dec eax
je 0x40586a
dec eax
je 0x40583e
dec eax
je 0x405800
dec eax
je 0x40580a
jmp 0x405a90
mov dword [esi + 0x38b0], ecx
mov dword [esi + 0x38b4], eax
cmp dword [0x4895b0], 0
je 0x405724
cmp dword [esi + 0x38b8], 3
je 0x405724
test byte [esi + 0x4a5c], 4
jne 0x405a90
call dword [sym.imp.USER32.dll_GetFocus]
test eax, eax
je 0x405a90
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 0xc]
push eax
push esi
call fcn.00424392
mov ecx, eax
cmp ecx, 0x21
mov dword [ebp - 4], ecx
jl 0x405744
mov edi, dword [ebp + 8]
mov dword [ebp + 0x10], edi
jmp 0x40574b
or dword [ebp + 0x10], 0xffffffff
mov edi, dword [ebp + 0x10]
lea eax, [esi + 0x1d60]
mov ebx, dword [eax]
cmp ebx, edi
je 0x4057c8
mov dword [eax], edi
mov dword [esi + 0x1d64], ecx
cmp dword [0x48719c], 0
jne 0x405771
cmp dword [0x487180], 0
je 0x405787
test edi, edi
jl 0x40577c
push edi
push esi
call fcn.004213e3
test ebx, ebx
jl 0x405787
push ebx
push esi
call fcn.004213e3
cmp dword [0x487178], 0
je 0x4057c1
mov eax, dword [esi + 0x3808]
test al, 4
je 0x4057a7
test eax, 0x300
je 0x4057a7
push esi
call fcn.0041a005
test edi, edi
jl 0x4057c1
push 0x40249e
push dword [0x487178]
push 0x71
push dword [esi + 0xc]
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [ebp + 0x10], 0xfffffffe
cmp dword [esi + 0x3854], 1
je 0x4056ad
cmp dword [ebp - 4], 0x11
je 0x4057e3
or ecx, 0xffffffff
mov dword [ebp + 8], ecx
jmp 0x4057e6
mov ecx, dword [ebp + 8]
lea eax, [esi + 0x4a38]
cmp ecx, dword [eax]
je 0x405a90
mov dword [eax], ecx
push 0
lea eax, [esi + 0x2768]
jmp 0x40582f
mov dword [esi + 0x38b8], 9
xor eax, eax
cmp dword [esi + 0x279c], eax
je 0x405822
mov ecx, dword [esi + 0x3840]
add dword [esi + 0x278c], ecx
jmp 0x40582e
mov ecx, dword [esi + 0x383c]
add dword [esi + 0x2788], ecx
push eax
push eax
push dword [esi + 0xc]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x405a90
push dword [esi + 0x3838]
lea eax, [esi + 0x3844]
push dword [esi + 0x3834]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x405a90
push esi
call fcn.0040385d
jmp 0x405a90
lea eax, [ebp - 0xc]
push eax
push esi
call fcn.004052e7
mov eax, dword [ebp - 0xc]
cmp eax, dword [esi + 0x3824]
jne 0x40588e
mov eax, dword [ebp - 8]
cmp eax, dword [esi + 0x3828]
je 0x405a90
mov ebx, dword [esi + 0x1d78]
lea eax, [ebp - 0x1c]
push eax
lea edi, [esi + 0x38a8]
push edi
push esi
call fcn.00438b91
lea eax, [ebp - 0x1c]
push eax
push dword [esi + 0xc]
call fcn.00438cbd
push 0xffffffffffffffff
lea eax, [ebp - 0x1c]
push eax
push esi
call fcn.00438d07
mov eax, dword [ebp - 0xc]
mov dword [edi], eax
mov eax, dword [ebp - 8]
mov dword [edi + 4], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0xc]
push eax
push esi
call fcn.00438b91
push 0xffffffffffffffff
lea eax, [ebp - 0x1c]
push eax
push esi
call fcn.00438d07
cmp dword [0x48719c], 0
je 0x4058f1
cmp dword [ebp + 0x10], 0xfffffffe
je 0x4058f9
cmp ebx, dword [esi + 0x1d78]
je 0x405908
push esi
call fcn.004212d2
push dword [esi + 0xc]
call dword [sym.imp.USER32.dll_UpdateWindow]
lea eax, [ebp - 0x1c]
push eax
push dword [esi + 0xc]
call fcn.00438cbd
jmp 0x405a90
mov edi, dword [sym.imp.USER32.dll_InvalidateRect]
lea eax, [esi + 0x4a38]
cmp dword [eax], 0
jl 0x40593b
or dword [eax], 0xffffffff
push 0
lea eax, [esi + 0x2768]
push eax
push dword [esi + 0xc]
call edi
cmp dword [esi + 0x38c0], 0x21
jne 0x405958
test byte [ebp + 0xc], 1
je 0x405958
push 0xffffffffffffffff
push dword [esi + 0x1d50]
push esi
call fcn.00407cfe
test dword [0x48957c], 0x100
jne 0x405a90
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x38a8], eax
mov eax, dword [ebp - 8]
mov dword [esi + 0x38ac], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0xc]
push eax
push esi
mov dword [esi + 0x38b8], 6
call fcn.00438b91
push 0xffffffffffffffff
lea eax, [ebp - 0x1c]
push eax
push esi
call fcn.00438d07
lea eax, [ebp - 0x1c]
push eax
push dword [esi + 0xc]
call fcn.00438cbd
cmp dword [esi + 0x38c0], 0x21
je 0x4059bc
push dword [ebp + 0xc]
push esi
call fcn.004037eb
push 0
push 0
push dword [esi + 0xc]
call edi
jmp 0x405a90
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 1
call edi
mov ebx, 0x8000
mov ecx, ebx
test cx, ax
jne 0x405a10
mov eax, dword [0x487104]
cmp eax, 3
jne 0x4059ed
push 4
pop eax
push eax
call edi
test bx, ax
jne 0x405a10
lea eax, [esi + 0x381c]
push eax
call fcn.00455f4c
mov dword [esi + 0x38b8], 1
jmp 0x405a90
cmp dword [esi + 0x2274], 0
je 0x405a2e
mov ebx, dword [esi + 0x4a14]
lea edi, [ebp - 0x1c]
mov eax, edi
push eax
push ebx
call dword [sym.imp.USER32.dll_GetWindowRect]
jmp 0x405a37
mov ebx, dword [esi + 0xc]
lea edi, [esi + 0x2738]
mov ecx, dword [esi + 0x3840]
add ecx, dword [edi + 4]
push 0x15
xor eax, eax
push eax
push eax
push ecx
mov ecx, dword [esi + 0x383c]
add ecx, dword [edi]
push ecx
push eax
push ebx
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp 0x405a90
xor eax, eax
mov dword [esi + 0x3854], 2
mov dword [esi + 0x3858], eax
mov dword [esi + 0x38b8], eax
mov dword [esi + 0x38bc], eax
test byte [0x48957c], 4
je 0x405a8a
call fcn.0040240e
test eax, eax
jne 0x405a90
push esi
call fcn.00439433
pop edi
pop esi
pop ebx
leave
ret 0xc