Function at 0x43db70
Capabilities:
Log keystrokes via polling

Disassembly:
push 0xffffffffffffffff
push 0x4b5d90
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, dword [esp + 0x1c]
push ebx
push ebp
mov ebp, dword [esp + 0x1c]
push esi
mov esi, ecx
test ah, 1
mov ebx, dword [esi + 0x40]
push edi
mov dword [esi + 0x160], 1
je 0x43dbac
or ebp, 0x100
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call edi
sar eax, 0xf
test al, 1
je 0x43dbc3
or ebp, 0x200
push 0x10
call edi
sar eax, 0xf
test al, 1
je 0x43dbd4
or ebp, 0x400
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x43dbed
push 0x12
call edi
sar eax, 0xf
test al, 1
je 0x43dbed
or ebp, 0x800
push ebp
mov ecx, esi
call fcn.00445eb0
mov ecx, eax
call fcn.00438580
mov edi, eax
lea eax, [esp + 0x2c]
push ebp
push eax
mov ecx, esi
call fcn.00445eb0
mov ecx, eax
call fcn.004385e0
xor eax, eax
cmp edi, eax
mov dword [esp + 0x1c], eax
jne 0x43dc83
cmp dword [esp + 0x30], eax
je 0x43dc55
test ebp, 0x200
je 0x43dc55
mov ebp, dword [esp + 0x24]
cmp ebp, 0x41
jb 0x43dc55
cmp ebp, 0x5a
ja 0x43dc55
lea ecx, [ebp - 0x40]
lea edx, [esp + 0x2c]
push ecx
push str._03o
push edx
mov edi, 1
call sub.MFC42.DLL_CString::Format_1
add esp, 0xc
jmp 0x43dc90
mov dword [esi + 0x160], eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x1c], 0xffffffff
call sub.MFC42.DLL_CString::CString
xor eax, eax
mov ecx, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x10
ret 0x10
cmp edi, 3
je 0x43dfa7
mov ebp, dword [esp + 0x24]
cmp ebp, 0x90
jne 0x43dca2
mov dword [esi + 0x164], 0x100
cmp edi, 1
jne 0x43ddac
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax - 8]
test ecx, ecx
jle 0x43dfa7
mov eax, dword [esp + 0x30]
test eax, eax
je 0x43dd78
lea ecx, [esp + 0x2c]
push 0
push ecx
lea ecx, [esp + 0x2c]
call fcn.004600e0
lea edx, [esp + 0x24]
lea eax, [esp + 0x30]
push edx
push eax
mov byte [esp + 0x24], 1
call fcn.0044e2e0
add esp, 8
lea ecx, [esp + 0x24]
mov byte [esp + 0x1c], 3
call fcn.0044d0c0
lea ecx, [esp + 0x30]
call fcn.0044d8d0
cmp eax, edi
jne 0x43dd29
mov ecx, esi
call fcn.00445ed0
mov ecx, dword [eax + 0x628]
test ecx, ecx
je 0x43dd29
push 0
lea ecx, [esp + 0x34]
call fcn.0044dbd0
or byte [eax], 0x80
jmp 0x43dd44
lea ecx, [esp + 0x30]
call fcn.0044d8d0
cmp eax, 1
jne 0x43dd6a
push eax
push 0x575ab4
mov ecx, esi
call fcn.0043f4b0
push 1
lea ecx, [esp + 0x34]
call fcn.0044c8e0
push eax
mov ecx, esi
call fcn.0043f4b0
lea ecx, [esp + 0x30]
mov byte [esp + 0x1c], 0
call fcn.0044d0c0
jmp 0x43dfa7
lea ecx, [esp + 0x30]
mov byte [esp + 0x1c], 0
call fcn.0044d0c0
lea ecx, [esp + 0x2c]
push 0
push ecx
lea ecx, [esp + 0x38]
call fcn.004600e0
lea edx, [esp + 0x30]
mov ecx, esi
push edx
mov byte [esp + 0x20], 4
call fcn.0043f520
lea ecx, [esp + 0x30]
mov byte [esp + 0x1c], 0
call fcn.0044d0c0
jmp 0x43dfa7
cmp edi, 2
jne 0x43de08
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x10]
push eax
call fcn.004afb58
lea ecx, [esp + 0x10]
push 0
push ecx
lea ecx, [esp + 0x2c]
mov byte [esp + 0x24], 5
call fcn.004600e0
lea edx, [esp + 0x24]
push 0
push edx
mov ecx, ebx
mov byte [esp + 0x24], 6
call fcn.0042a780
lea ecx, [esp + 0x24]
mov byte [esp + 0x1c], 5
call fcn.0044d0c0
lea ecx, [esp + 0x10]
mov byte [esp + 0x1c], 0
call sub.MFC42.DLL_CString::CString
jmp 0x43dfa7
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x43dc5b
push edi
call fcn.0040db70
add esp, 4
test eax, eax
je 0x43de3d
push 0
push eax
mov eax, dword [0x58f5f0]
push 0x111
mov ecx, dword [eax + 0x20]
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x43dfa7
lea eax, [edi - 4]
cmp eax, 0xb
ja case.default.0x43de49
jmp dword [eax*4 + 0x43dfc4]
mov edx, dword [esi + 0x15c]
dec edx
push edx
jmp 0x43dfa0
mov eax, dword [esi + 0x15c]
inc eax
push eax
jmp 0x43dfa0
mov ecx, esi
call fcn.00445eb0
push eax
mov ecx, ebx
call fcn.00426950
mov ecx, dword [esi + 0x15c]
sub ecx, eax
push ecx
jmp 0x43dfa0
mov ecx, esi
call fcn.00445eb0
push eax
mov ecx, ebx
call fcn.00426950
add eax, dword [esi + 0x15c]
push eax
jmp 0x43dfa0
mov ecx, esi
call fcn.00445eb0
push eax
mov ecx, ebx
call fcn.00426950
cdq
sub eax, edx
mov edx, dword [esi + 0x15c]
sar eax, 1
sub edx, eax
push edx
jmp 0x43dfa0
mov ecx, esi
call fcn.00445eb0
push eax
mov ecx, ebx
call fcn.00426950
cdq
sub eax, edx
mov edx, dword [esi + 0x15c]
sar eax, 1
add eax, edx
push eax
jmp 0x43dfa0
mov eax, dword [esi + 0x158]
mov ecx, esi
dec eax
push eax
call fcn.00441e80
jmp 0x43dfa7
mov ecx, dword [esi + 0x158]
inc ecx
push ecx
mov ecx, esi
call fcn.00441e80
jmp 0x43dfa7
mov eax, dword [esi + 0x114]
mov edx, dword [esi + 0x11c]
sub eax, edx
mov ecx, esi
cdq
idiv dword [esi + 0xf8]
mov edx, dword [esi + 0x158]
sub edx, eax
push edx
call fcn.00441e80
jmp 0x43dfa7
mov eax, dword [esi + 0x114]
mov edi, dword [esi + 0x11c]
sub eax, edi
mov ecx, esi
cdq
idiv dword [esi + 0xf8]
add eax, dword [esi + 0x158]
push eax
call fcn.00441e80
jmp 0x43dfa7
mov ecx, ebx
call fcn.0042ad30
push eax
jmp 0x43dfa0
cmp edi, 0x52
jl 0x43dc5b
cmp edi, 0x8a
jg 0x43dc5b
push edi
mov ecx, esi
call fcn.00445eb0
push eax
mov ecx, ebx
call fcn.00427b40
test eax, eax
jle 0x43dfa7
mov ecx, esi
call fcn.00445ed0
mov ecx, dword [eax + 0x8718]
test ecx, ecx
je 0x43dfa7
push 0
mov ecx, esi
call fcn.00441fa0
lea ecx, [esp + 0x2c]
mov dword [esp + 0x1c], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, 1
jmp 0x43dc6e