Function at 0x1005ac0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push ebx
push esi
push edi
mov edi, ecx
push 0
lea ecx, [ebp - 0xc]
call dword [sym.imp.mmcbase.DLL_public:_void___thiscall_mmcerror::SC::constructor_long_int_]
mov esi, dword [ebp + 8]
mov eax, dword [esi + 8]
cmp eax, 0xffffff8f
mov dword [ebp - 4], 1
mov ebx, 0xffffff50
jbe 0x100e7f2
cmp eax, 0xfffffff4
ja 0x1037863
je 0x100e8b8
cmp eax, 0xffffff96
je 0x10377da
cmp eax, 0xffffff97
je 0x1037438
cmp eax, 0xffffff98
je 0x1005b93
cmp eax, 0xffffff9b
je 0x10377ca
and dword [ebp - 4], 0
mov eax, dword [ebp - 4]
lea esp, [ebp - 0x54]
pop edi
pop esi
pop ebx
leave
ret 8
xor eax, eax
inc eax
jmp 0x1005b27
je 0x10377b5
mov ecx, 0xffffff65
cmp eax, ecx
mov edx, 0xffffff4d
ja 0x1037617
je 0x1037472
cmp eax, edx
je 0x103773a
cmp eax, 0xffffff4f
jne 0x1037425
mov eax, dword [edi + 0x178]
test eax, eax
je 0x100e840
push dword [esi + 0x14]
mov ecx, dword [eax + 0x48]
call fcn.0100e865
test al, al
jne 0x1005b24
lea ecx, [edi + 0xd8]
call fcn.01002bd7
lea ecx, [edi + 0x44]
mov ebx, eax
mov eax, dword [ecx]
mov edi, dword [ebx]
add esi, 0xc
push esi
call dword [eax + 0x74]
push eax
push ebx
call dword [edi + 0x1c]
jmp 0x1005b24
mov ecx, dword [edi + 0x178]
push esi
call fcn.0100e8ce
mov ecx, dword [ebp + 0xc]
mov dword [ecx], eax
jmp 0x1005b24
cmp eax, ebx
je 0x10377da
cmp eax, 0xffffff51
jne 0x1005b20
call fcn.01003461
mov esi, eax
test esi, esi
je 0x1005b93
push 0x8005
mov ecx, edi
call fcn.0104b5d6
test eax, eax
jne 0x1037464
cmp byte [edi + 0x1c0], 1
jne 0x1005b93
mov byte [esi + 0x168], 1
xor eax, eax
jmp 0x1005b27
mov si, word [esi + 0xc]
movzx eax, si
sub eax, 8
je 0x1037607
dec eax
je 0x10375ec
sub eax, 4
je 0x103752f
sub eax, 0x21
mov ecx, edi
je 0x10374a7
push esi
call fcn.01021c13
mov dword [ebp - 4], eax
jmp 0x1005b24
push 0x8003
call fcn.0104b5d6
test eax, eax
je 0x1005b24
mov esi, dword [edi + 0xd8]
test esi, esi
je 0x1005b24
lea ecx, [edi + 0x44]
mov eax, dword [ecx]
call dword [eax + 0x74]
mov ebx, eax
test ebx, ebx
je 0x1005b24
mov eax, dword [edi + 0x178]
mov ecx, dword [eax + 0x48]
call fcn.0101307e
test eax, eax
je 0x1005b24
cmp eax, 1
jne 0x103750c
push 2
lea eax, [ebp + 0xc]
push eax
mov ecx, edi
call fcn.0104c251
cmp eax, 0xffffffff
je 0x1005b24
jmp 0x1037519
jle 0x1005b24
mov dword [ebp + 0xc], 0xfffffffb
push dword [ebp + 0xc]
mov eax, dword [esi]
push 0
push 0x9008
push ebx
push esi
call dword [eax + 0x58]
jmp 0x1005b24
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
mov ecx, edi
jge 0x1037879
push 0x8004
call fcn.0104b5d6
test eax, eax
je 0x1005b24
mov eax, dword [edi + 0x234]
test eax, eax
jne 0x10375ad
mov eax, dword [edi + 0x178]
mov ecx, dword [eax + 0x48]
call fcn.0101307e
test eax, eax
push 0xfffffffffffffff6
pop esi
mov dword [ebp + 0xc], esi
je 0x1005b24
cmp eax, 1
jne 0x1037591
push 2
lea eax, [ebp + 0xc]
push eax
mov ecx, edi
call fcn.0104c251
mov ebx, dword [ebp + 0xc]
jmp 0x103759a
jle 0x1005b24
push 0xfffffffffffffffb
pop ebx
cmp ebx, esi
je 0x1005b24
cmp ebx, 0xfffffffe
je 0x1005b24
jmp 0x10375b8
xor ebx, ebx
cmp eax, 2
sete bl
add ebx, 0xfffffffc
mov esi, dword [edi + 0xd8]
test esi, esi
je 0x1005b24
add edi, 0x44
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x74]
test eax, eax
je 0x1005b24
mov ecx, dword [esi]
push ebx
push 0
push 0x9012
push eax
push esi
call dword [ecx + 0x58]
jmp 0x1005b24
push 1
push dword [edi + 0x174]
mov ecx, edi
call fcn.01002f16
mov ecx, eax
call sub.MFC42u.DLL_CFrameWnd::SetActiveView
jmp 0x1005b24
lea eax, [ebp - 0x14]
push eax
mov ecx, edi
call fcn.0104a43b
jmp 0x1005b24
cmp eax, 0xffffff68
je 0x1037736
cmp eax, 0xffffff6a
je 0x103763f
cmp eax, 0xffffff8d
jne 0x1005b20
push esi
mov ecx, edi
call fcn.0104b9e6
jmp 0x1005b27
mov eax, dword [edi + 0x178]
test eax, eax
je 0x103765c
push dword [esi + 0x14]
mov ecx, dword [eax + 0x48]
call fcn.0100e865
test al, al
jne 0x1005b24
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x28]
mov eax, dword [esi + 0xc]
test al, 1
mov dword [ebp - 0x44], ecx
mov ecx, dword [esi + 0x14]
mov dword [ebp - 0x40], ecx
mov ecx, dword [esi + 0x18]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [esi + 0x1c]
mov dword [ebp - 0x2c], edx
mov edx, dword [esi + 0x2c]
mov dword [ebp - 0x38], ecx
mov ecx, dword [esi + 0x24]
mov dword [ebp - 0x28], edx
mov edx, dword [esi + 0x30]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x24], edx
je 0x10376a3
lea eax, [ecx + ecx]
push eax
call sub.MFC42u.DLL_operatornew
pop ecx
mov dword [ebp - 0x34], eax
lea ecx, [edi + 0xd8]
call fcn.01002bd7
mov ebx, eax
mov eax, dword [ebx]
lea ecx, [ebp - 0x48]
add edi, 0x44
mov edx, dword [edi]
push ecx
mov ecx, edi
mov dword [ebp + 0xc], eax
call dword [edx + 0x74]
push eax
mov eax, dword [ebp + 0xc]
push ebx
call dword [eax + 0x1c]
test eax, eax
jl 0x10376ec
test byte [esi + 0xc], 1
je 0x10376fb
xor eax, eax
push eax
push eax
push dword [esi + 0x24]
push dword [esi + 0x20]
push 0xffffffffffffffff
push dword [ebp - 0x34]
push eax
push eax
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test byte [esi + 0xc], 1
je 0x10376fb
push dword [ebp - 0x34]
call sub.MFC42u.DLL_operatordelete
pop ecx
mov eax, dword [ebp - 0x48]
mov dword [esi + 0xc], eax
mov eax, dword [ebp - 0x44]
mov dword [esi + 0x10], eax
mov eax, dword [ebp - 0x40]
mov dword [esi + 0x14], eax
mov eax, dword [ebp - 0x3c]
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0x38]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x30]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x2c]
mov dword [esi + 0x28], eax
mov eax, dword [ebp - 0x28]
mov dword [esi + 0x2c], eax
mov eax, dword [ebp - 0x24]
mov dword [esi + 0x30], eax
jmp 0x1005b24
cmp eax, edx
jne 0x103773f
mov eax, dword [esi + 0x14]
jmp 0x103776f
mov eax, dword [esi + 0x14]
test eax, eax
mov dword [ebp + 8], eax
je 0x103776f
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebx, eax
inc ebx
lea eax, [ebx + ebx]
add eax, 3
and eax, 0xfffffffc
call fcn.0100f851
mov eax, esp
push ebx
push dword [ebp + 8]
push eax
call sub.MFC42u.DLL_AfxA2WHelper
and dword [ebp - 0x10], 0
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x10]
test al, 0xc
je 0x103778a
mov dword [ebp - 0x10], 1
test al, 0x20
je 0x1037792
or dword [ebp - 0x10], 2
lea ecx, [edi + 0x44]
mov eax, dword [ecx]
call dword [eax + 0x74]
push dword [ebp + 0xc]
lea edx, [ebp - 0x18]
push edx
push 0x900b
mov edi, dword [edi + 0xd8]
mov ecx, dword [edi]
push eax
push edi
jmp 0x10375e4
lea ecx, [edi + 0x44]
mov eax, dword [ecx]
call dword [eax + 0x74]
push dword [esi + 0x10]
push dword [esi + 0xc]
push 0x9002
jmp 0x10377a6
push esi
mov ecx, edi
call fcn.010506a0
movzx eax, al
jmp 0x103749f
call fcn.01003461
test eax, eax
je 0x10377ea
and byte [eax + 0x168], 0
mov eax, dword [esi + 0x10]
cmp dword [esi + 8], ebx
mov ebx, dword [esi + 0x20]
mov esi, dword [esi + 0x2c]
mov dword [ebp + 8], eax
lea eax, [edi + 0x1d4]
cmp dword [eax + 0x60], 0
mov eax, dword [eax]
sete cl
shr eax, 4
and cl, al
test cl, 1
je 0x1037825
lea ecx, [edi + 0x44]
mov eax, dword [ecx]
call dword [eax + 0x74]
push dword [ebp + 0xc]
push ebx
push dword [ebp + 8]
push 0
jmp 0x1037860
push esi
call fcn.0101393b
test eax, eax
je 0x1005b24
cmp dword [eax], 0x3951589
push dword [ebp + 0xc]
push ebx
jne 0x1037852
push 0
push 1
push dword [eax + 8]
mov ecx, edi
call fcn.01050470
jmp 0x1005b24
mov eax, dword [eax + 8]
push eax
lea ecx, [edi + 0x44]
mov eax, dword [ecx]
push 0
call dword [eax + 0x74]
push eax
jmp 0x1037846
cmp eax, 0xfffffffb
je 0x1037883
cmp eax, 0xfffffffd
je 0x1037877
cmp eax, 0xfffffffe
je 0x1037887
jmp 0x1005b20
mov ecx, edi
call fcn.0104cde5
jmp 0x1005b24
and dword [ebp - 4], 0
lea eax, [ebp - 0x20]
push eax
mov ecx, edi
call fcn.0105053c
mov ecx, dword [eax]
mov dword [ebp - 0xc], ecx
mov eax, dword [eax + 4]
lea ecx, [ebp - 0xc]
mov dword [ebp - 8], eax
call dword [sym.imp.mmcbase.DLL_public:_bool___thiscall_mmcerror::SC::operator_bool_void_const]
jmp 0x1005b24