Function at 0x40b830
Capabilities:
Log keystrokes via polling
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
mov ebx, ecx
mov ecx, dword [0x645878]
mov eax, dword [ecx]
push esi
mov dword [ebp - 0x24], ebx
call dword [eax + 0x70]
mov ecx, dword [0x645878]
mov edx, dword [ecx]
mov esi, eax
call dword [edx + 0x74]
mov ecx, dword [0x645878]
mov eax, dword [ecx]
lea edx, [ebp - 0x34]
push edx
call dword [eax + 0x5c]
mov ecx, dword [0x645878]
mov eax, dword [ecx]
lea edx, [ebp - 0x3c]
push edx
call dword [eax + 0x60]
mov ecx, dword [0x645468]
lea eax, [ebp - 0x58]
push eax
push ecx
call dword [sym.imp.user32.dll_GetClientRect]
call dword [sym.imp.user32.dll_GetCapture]
cmp eax, dword [0x645468]
mov ecx, dword [0x645878]
je 0x40b8b3
mov eax, dword [0x63ec74]
test eax, eax
je 0x40c13e
mov eax, dword [ecx + 0xab4]
test eax, eax
je 0x40c13e
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x34]
sub eax, edx
mov edx, dword [ecx]
push edi
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x30]
shr esi, 8
sub eax, edi
and esi, 1
push 8
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x28], esi
call dword [edx + 0x3c]
mov ecx, dword [0x645878]
mov edi, eax
mov eax, dword [ecx]
push 0xb
call dword [eax + 0x3c]
mov esi, dword [sym.imp.user32.dll_GetKeyState]
push 0xa4
mov dword [ebp - 8], eax
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], 0
call esi
test ah, 0xff
jne 0x40b923
push 0xa5
call esi
test ah, 0xff
jne 0x40b923
xor eax, eax
jmp 0x40b928
mov eax, 1
mov ecx, dword [0x646564]
mov edx, dword [ecx]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x30]
push eax
mov eax, dword [ebp - 0x34]
push eax
call dword [edx + 0x48]
mov ecx, dword [0x645858]
xor esi, esi
cmp ecx, esi
mov dword [ebp - 0x10], eax
je 0x40b96f
mov edx, dword [ecx]
call dword [edx + 0x44]
test eax, eax
je 0x40b96f
mov ecx, dword [0x64650c]
mov eax, dword [ecx]
call dword [eax + pe_nt_image_headers32]
cmp eax, 2
mov dword [ebp - 0xc], 1
jne 0x40b972
mov dword [ebp - 0xc], esi
cmp edi, esi
mov dword [ebp - 0x14], esi
jne 0x40bc0b
mov eax, dword [ebp - 8]
test eax, eax
jne 0x40bc0b
mov ecx, dword [0x646498]
mov edx, dword [ecx]
call dword [edx + 0x54]
mov esi, dword [0x646498]
mov ecx, dword [0x646304]
mov eax, dword [esi]
mov edx, dword [ecx]
mov dword [ebp - 8], eax
call dword [edx + pe_nt_image_headers32]
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0xc]
push eax
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 8]
push ecx
push edi
mov ecx, esi
call dword [eax + 0x50]
mov ecx, dword [0x646498]
mov edx, dword [ecx]
call dword [edx + 0x54]
mov ecx, dword [0x646498]
mov eax, dword [ecx]
call dword [eax + 0x54]
test edi, edi
mov esi, eax
je 0x40ba75
mov esi, dword [esi + 0x50]
lea eax, [esi - 0xa]
cmp eax, 0x12
ja case.0x40b9f0.11
movzx ecx, byte [eax + 0x40c160]
jmp dword [ecx*4 + 0x40c144]
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 0xc
call dword [edx + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0xe
call dword [eax + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 0xf
call dword [edx + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0x10
call dword [eax + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 0xd
call dword [edx + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0xd
call dword [eax + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 1
call dword [edx + 0x38]
jmp 0x40bc0b
mov ecx, dword [0x646498]
mov eax, dword [ecx]
call dword [eax + 0x3c]
mov dword [ebp - 0x14], eax
mov eax, dword [esi + 0x50]
dec eax
cmp eax, 0x1f
ja case.0x40ba97.1
movzx ecx, byte [eax + 0x40c1b4]
jmp dword [ecx*4 + 0x40c174]
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 1
call dword [eax + 0x38]
jmp 0x40bb8c
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0xb
call dword [eax + 0x38]
jmp 0x40bb8c
push 3
jmp 0x40bb81
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 3
call dword [eax + 0x38]
jmp 0x40bb8c
mov ecx, dword [0x646564]
mov eax, dword [esi + 8]
mov edx, dword [ecx]
push eax
call dword [edx + 0x44]
test eax, eax
mov ecx, dword [0x646498]
je 0x40baa4
mov edi, dword [ecx]
mov edx, dword [eax]
mov dword [ebp - 0xc], ecx
mov ecx, eax
call dword [edx + 0x64]
mov ecx, dword [ebp - 0xc]
push eax
call dword [edi + 0x38]
jmp 0x40bb8c
push 0xa
jmp 0x40bb81
push 0xc
jmp 0x40bb81
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0xe
call dword [eax + 0x38]
jmp 0x40bb8c
push 0xf
jmp 0x40bb81
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0x10
call dword [eax + 0x38]
jmp 0x40bb8c
push 0x11
jmp 0x40bb81
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0xd
call dword [eax + 0x38]
jmp 0x40bb8c
push 0xd
jmp 0x40bb81
mov ecx, dword [0x646564]
mov edx, dword [esi + 8]
mov eax, dword [ecx]
push edx
call dword [eax + 0x44]
test eax, eax
mov ecx, dword [0x646498]
je 0x40baa4
mov edi, dword [ecx]
mov edx, dword [eax]
mov dword [ebp - 0xc], ecx
mov ecx, eax
call dword [edx + 0x64]
mov ecx, dword [ebp - 0xc]
push eax
call dword [edi + 0x38]
jmp 0x40bb8c
push 1
mov ecx, dword [0x646498]
mov edx, dword [ecx]
call dword [edx + 0x38]
mov eax, dword [esi + 0x50]
cmp eax, 4
je 0x40bbb9
cmp eax, 0xc
jne 0x40bb9f
cmp dword [esi + 0x18], 1
je 0x40bbb9
mov ecx, dword [ebx + 0x28]
test ecx, ecx
je 0x40bc0b
mov eax, dword [ecx + 0x108]
test eax, eax
je 0x40bc0b
push 0
call fcn.0051b8d0
jmp 0x40bc0b
mov eax, dword [ebx + 0x28]
test eax, eax
jne 0x40bbe0
mov ecx, dword [0x646564]
mov eax, dword [ecx]
push 0
push 0xffffffffffffffff
push 0x5ec160
call dword [eax + 0x38]
mov dword [ebx + 0x28], eax
mov edx, dword [eax]
push 0
mov ecx, eax
call dword [edx + 0x10]
cmp dword [esi + 0x50], 4
jne 0x40bbf2
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebx + 0x28]
push eax
call fcn.0051b950
mov ecx, dword [ebx + 0x28]
push 1
call fcn.0051b8d0
mov ecx, dword [ebx + 0x28]
mov edx, dword [ecx]
lea eax, [ebp - 0x48]
push eax
call dword [edx + 0xd4]
mov ecx, dword [0x645878]
mov edx, dword [ecx]
call dword [edx + 0x38]
mov dword [ebp - 0x18], eax
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x18]
mov edi, dword [eax + 4]
test edi, edi
jne 0x40bc2f
xor eax, eax
jmp 0x40bc44
mov ecx, dword [eax + 8]
sub ecx, edi
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0xc], eax
jge 0x40c0d9
mov eax, dword [ebp - 8]
lea esi, [eax + edi + 8]
cmp dword [esi], 0
jne case.0x40bc6f.8
mov ecx, dword [ebp - 8]
mov edi, dword [ecx + edi]
lea eax, [edi - 4]
cmp eax, 0x10
ja case.0x40bc6f.8
jmp dword [eax*4 + 0x40c1d4]
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x34]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebx + 0x10], 1
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x14], edx
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov dword [ebx + 0x20], 1
mov ecx, dword [0x645878]
mov edx, dword [ecx]
push 2
call dword [edx + 0x44]
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0
call dword [eax + 0x4c]
mov ecx, dword [0x645468]
push ecx
call dword [sym.imp.user32.dll_SetCapture]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov eax, dword [ebx + 0x10]
test eax, eax
je 0x40bd3c
mov edx, dword [ebx + 0x14]
mov eax, dword [ebp - 0x34]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
cmp eax, 4
jle 0x40bd3c
mov dword [ebx + 0x1c], 1
mov dword [ebx + 0x10], 0
mov dword [esi], 1
mov ecx, dword [0x645878]
mov edx, dword [ecx]
push 2
call dword [edx + 0x44]
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 0
call dword [eax + 0x4c]
mov ecx, dword [0x645468]
push ecx
call dword [sym.imp.user32.dll_SetCapture]
mov eax, dword [ebx + 0x1c]
test eax, eax
je case.0x40bc6f.8
mov eax, dword [ebp - 0x1c]
mov ecx, dword [0x645854]
mov edx, dword [ecx]
neg eax
mov dword [ebp - 4], eax
fild dword [ebp - 4]
push ecx
fmul dword [0x5ec15c]
fstp dword [esp]
call dword [edx + 0x78]
mov dword [esi], 1
mov eax, dword [ebp - 0x38]
mov ecx, dword [0x645878]
mov edx, dword [ecx]
push eax
mov eax, dword [ebp - 0x3c]
push eax
call dword [edx + 0x58]
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 0
call dword [edx + 0x4c]
mov eax, dword [0x646564]
mov ecx, dword [ebp - 0xc]
mov byte [eax + 0x94], 1
mov eax, dword [ebp - 8]
inc ecx
mov dword [0x644964], 0
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov eax, dword [ebx + 0x20]
test eax, eax
je case.0x40bc6f.8
mov esi, dword [0x645854]
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 0x88]
mov eax, dword [ebp - 0x20]
neg eax
mov dword [ebp - 4], eax
fild dword [ebp - 4]
fmul dword [0x5ec158]
fmul dword [0x5ec154]
faddp st(1)
fst dword [ebp - 4]
fcomp dword [0x5ebcd8]
fnstsw ax
test ah, 0x41
jne 0x40be02
mov dword [ebp - 4], 0xbf060a92
jmp 0x40be19
fld dword [ebp - 4]
fcomp dword [0x5ebcd4]
fnstsw ax
test ah, 5
jp 0x40be19
mov dword [ebp - 4], 0xbf425c20
mov edi, dword [ebp - 4]
mov edx, dword [esi]
push edi
mov ecx, esi
call dword [edx + 0x80]
mov eax, dword [esi]
push edi
mov ecx, esi
call dword [eax + 0x8c]
mov eax, dword [ebp - 0x38]
mov ecx, dword [0x645878]
mov edx, dword [ecx]
push eax
mov eax, dword [ebp - 0x3c]
push eax
call dword [edx + 0x58]
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 0
call dword [edx + 0x4c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [0x646304]
mov eax, dword [ecx]
mov edi, dword [0x645cd4]
call dword [eax + pe_nt_image_headers32]
cmp eax, edi
je case.0x40bc6f.8
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebx + 0x24], 1
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebx + 0x24], 0
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [0x645858]
test ecx, ecx
je 0x40beea
mov edx, dword [ecx]
call dword [edx + 0x10c]
test al, al
jne 0x40beea
mov ecx, dword [0x646498]
mov eax, ecx
mov edi, dword [eax]
mov dword [ebp - 4], eax
mov eax, dword [ecx]
call dword [eax + 0x54]
mov ecx, dword [ebp - 4]
push eax
call dword [edi + 0x5c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov dword [ebx + 0x20], 0
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 1
call dword [edx + 0x4c]
mov ecx, dword [0x645878]
mov eax, dword [ecx]
push 0
call dword [eax + 0x44]
call dword [sym.imp.user32.dll_ReleaseCapture]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov dword [ebx + 0x1c], 0
mov ecx, dword [0x646498]
mov edx, dword [ecx]
push 1
call dword [edx + 0x4c]
mov ecx, dword [0x645878]
mov eax, dword [ecx]
push 0
call dword [eax + 0x44]
call dword [sym.imp.user32.dll_ReleaseCapture]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x40bf88
mov dword [ebx + 0x24], 0
mov ecx, dword [0x646498]
mov edx, dword [ecx]
mov edi, ecx
mov ebx, dword [edi]
call dword [edx + 0x58]
push eax
mov ecx, edi
call dword [ebx + 0x5c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov ebx, dword [ebp - 0x24]
inc ecx
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [0x645878]
mov eax, dword [ecx]
push 0x2a
call dword [eax + 0x4c]
test eax, eax
jne 0x40c024
mov ecx, dword [0x645878]
mov edx, dword [ecx]
push 0x36
call dword [edx + 0x4c]
test eax, eax
jne 0x40c024
mov eax, dword [0x646564]
mov byte [eax + 0x94], 1
mov ecx, dword [0x646564]
mov eax, dword [ecx + 0x64]
test eax, eax
je 0x40bffd
mov dword [eax + 0x328], 0
mov ecx, dword [0x645854]
mov edx, dword [ecx]
push 2
push 1
call dword [edx + 0x68]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [0x646074]
mov eax, dword [ecx]
push 0x5ec13c
push 0x69
call dword [eax + 0x4c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [0x645878]
mov edx, dword [ecx]
push 0x2a
call dword [edx + 0x4c]
test eax, eax
jne 0x40c0b5
mov ecx, dword [0x645878]
mov eax, dword [ecx]
push 0x36
call dword [eax + 0x4c]
test eax, eax
jne 0x40c0b5
mov ecx, dword [0x646564]
mov byte [ecx + 0x94], 1
mov edx, dword [0x646564]
mov eax, dword [edx + 0x64]
test eax, eax
je 0x40c08e
mov dword [eax + 0x328], 0
mov ecx, dword [0x645854]
mov eax, dword [ecx]
push 2
push 0
call dword [eax + 0x68]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [esi], 1
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov ecx, dword [0x646074]
mov edx, dword [ecx]
push 0x5ec124
push 0x69
call dword [edx + 0x4c]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
inc ecx
mov dword [ebp - 0xc], ecx
add eax, 0xc
jmp 0x40bc1e
mov eax, dword [ebp - 0x28]
test eax, eax
pop edi
jne 0x40c0e8
mov dword [ebx + 0x1c], 0
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x40c11d
mov ecx, dword [0x646498]
mov eax, dword [ecx]
push 4
call dword [eax + 0x38]
mov ecx, dword [ebp - 0x48]
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [0x645838]
mov dword [ebp - 0x28], edx
mov eax, dword [ecx]
lea edx, [ebp - 0x2c]
push edx
call dword [eax + 0x48]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x14]
test esi, esi
je 0x40c13e
mov ecx, dword [0x646498]
mov eax, dword [ecx]
call dword [eax + 0x3c]
cmp eax, esi
je 0x40c13e
mov ecx, dword [0x646498]
mov edx, dword [ecx]
call dword [edx + 0x48]
pop esi
pop ebx
mov esp, ebp
pop ebp
ret