Function at 0x402db6
Capabilities:
Create thread
Log keystrokes via polling

Disassembly:
sub esp, 0x64
push edi
xor edi, edi
cmp dword [0x4dd4a8], edi
jne 0x402dcb
xor eax, eax
jmp 0x403068
or dword [esp + 4], 0xffffffff
cmp dword [0x4dd4ac], edi
push ebx
push esi
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebx, 0x8000
jne 0x402eda
push 0x31
call esi
test ebx, eax
je 0x402dfa
mov dword [esp + 0xc], edi
jmp 0x402eda
push 0x32
call esi
test ebx, eax
je 0x402e0f
mov dword [esp + 0xc], 1
jmp 0x402eda
push 0x33
call esi
test ebx, eax
je 0x402e24
mov dword [esp + 0xc], 2
jmp 0x402eda
push 0x34
call esi
test ebx, eax
je 0x402e39
mov dword [esp + 0xc], 3
jmp 0x402eda
push 0x35
call esi
test ebx, eax
je 0x402e4e
mov dword [esp + 0xc], 4
jmp 0x402eda
push 0x36
call esi
test ebx, eax
je 0x402e60
mov dword [esp + 0xc], 5
jmp 0x402eda
push 0x37
call esi
test ebx, eax
je 0x402e72
mov dword [esp + 0xc], 6
jmp 0x402eda
push 0x38
call esi
test ebx, eax
je 0x402e84
mov dword [esp + 0xc], 7
jmp 0x402eda
push 0x39
call esi
test ebx, eax
je 0x402e96
mov dword [esp + 0xc], 8
jmp 0x402eda
push 0x30
call esi
test ebx, eax
je 0x402ea8
mov dword [esp + 0xc], 9
jmp 0x402eda
push 0x48
call esi
test ebx, eax
jne 0x402ed2
push 0x77
call esi
test ebx, eax
jne 0x402ed2
push 0x56
call esi
test ebx, eax
jne 0x402ec8
push 0x76
call esi
test ebx, eax
je 0x402eda
mov dword [esp + 0xc], 0xb
jmp 0x402eda
mov dword [esp + 0xc], 0xa
push 0x1b
call esi
test ebx, eax
je 0x402f1e
cmp dword [0x4dd4ac], edi
mov dword [0x4dd4ac], edi
jne 0x402f1e
lea eax, [esp + 0x10]
push eax
push dword [0x4dd4b8]
mov dword [0x4dd4a8], edi
call dword [sym.imp.USER32.dll_GetClientRect]
push 0x81
push edi
lea eax, [esp + 0x18]
push eax
push dword [0x4dd4b8]
call dword [sym.imp.USER32.dll_RedrawWindow]
mov eax, dword [esp + 0xc]
cmp eax, 0xffffffff
push ebp
je 0x402f71
lea ebp, [eax*4 + 0x4dd448]
xor eax, eax
cmp dword [ebp], edi
push 0xf
sete al
pop ecx
push dword [esp + 0x10]
lea edi, [esp + 0x3c]
push str.use_test__d
mov dword [ebp], eax
mov eax, dword [0x4de934]
mov dword [esp + 0x3c], eax
xor eax, eax
rep stosd dword es:[edi], eax
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov edx, dword [ebp]
add esp, 0xc
lea ecx, [esp + 0x34]
call fcn.00401197
mov ebp, dword [0x406010]
push 0x50
call esi
push 0x64
pop edi
test ebx, eax
jne 0x402f8b
cmp dword [0x4dd4b4], 0x6b
jne 0x402f91
add dword [0x406010], edi
push 0x4d
call esi
test ebx, eax
jne 0x402fa2
cmp dword [0x4dd4b4], 0x6d
jne 0x402fb2
mov edx, dword [0x406010]
sub edx, edi
mov dword [0x406010], edx
jmp 0x402fb8
mov edx, dword [0x406010]
cmp edx, 0xa
jge 0x402fc6
push 0xa
pop edx
mov dword [0x406010], edx
cmp edx, edi
jle 0x402fda
cmp edx, 0xc8
jge 0x402fda
mov edx, edi
mov dword [0x406010], edx
mov eax, 0x2710
cmp edx, eax
jle 0x402feb
mov edx, eax
mov dword [0x406010], edx
cmp ebp, edx
pop ebp
je 0x402ffa
mov ecx, str.test_millisecond
call fcn.00401197
lea eax, [esp + 0x20]
push eax
push dword [0x4dd4b8]
call dword [sym.imp.USER32.dll_GetClientRect]
push 0x81
xor edi, edi
push edi
lea eax, [esp + 0x28]
push eax
push dword [0x4dd4b8]
call dword [sym.imp.USER32.dll_RedrawWindow]
push 0xd
call esi
pop esi
test ebx, eax
pop ebx
je 0x403065
cmp dword [0x4dd4ac], edi
jne 0x40305f
lea eax, [esp + 4]
push eax
push edi
push dword [0x4dd4b8]
mov dword [esp + 0x10], edi
push 0x402362
push edi
push edi
mov dword [0x4dd4ac], 1
call dword [sym.imp.KERNEL32.dll_CreateThread]
jmp 0x403065
mov dword [0x4dd4ac], edi
push 1
pop eax
pop edi
add esp, 0x64
ret