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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x7c
mov eax, dword [0x484040]
xor eax, esp
mov dword [esp + 0x78], eax
cmp byte [0x484bfc], 0
push ebx
push esi
push edi
je 0x401f9b
mov eax, dword [0x484dac]
cmp eax, dword [0x484db0]
je 0x401426
mov dword [0x484db0], eax
mov eax, dword [0x4840a0]
mov dword [esp + 0x6c], eax
mov eax, dword [0x484c04]
add eax, 0xdef97c
mov dword [esp + 0x70], 0
cmp eax, 0x400000
ja 0x401468
test al, 1
jne 0x401468
mov dword [0x4840b4], 0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.00469676
mov esp, ebp
pop ebp
ret
mov edi, dword [sym.imp.KERNEL32.dll_ReadProcessMemory]
lea ecx, [esp + 0x70]
push 0
push 4
push ecx
push eax
push dword [0x484c68]
call edi
mov eax, dword [esp + 0x70]
mov dword [0x4840b4], eax
test eax, eax
je 0x401f9b
add eax, 0xf4
mov dword [esp + 0x70], 0
cmp eax, 0x400000
ja 0x4014b3
test al, 1
jne 0x4014b3
mov dword [esp + 0x20], 0
jmp 0x4014cd
push 0
push 4
lea ecx, [esp + 0x78]
push ecx
push eax
push dword [0x484c68]
call edi
mov eax, dword [esp + 0x70]
mov dword [esp + 0x20], eax
mov eax, dword [0x484c00]
add eax, 0x59f19c
mov dword [esp + 0x7c], 0
cmp eax, 0x400000
ja 0x401505
test al, 1
jne 0x401505
xor ebx, ebx
xorps xmm0, xmm0
mov dword [esp + 0x2c], ebx
movss dword [esp + 0x70], xmm0
mov dword [esp + 0x74], ebx
movss dword [esp + 0x28], xmm0
jmp 0x401565
push 0
push 4
lea ecx, [esp + 0x84]
push ecx
push eax
push dword [0x484c68]
call edi
mov ebx, dword [esp + 0x7c]
xorps xmm0, xmm0
mov dword [esp + 0x2c], ebx
movss dword [esp + 0x70], xmm0
mov dword [esp + 0x74], 0
lea eax, [ebx + 0x4d90]
cmp eax, 0x400000
jbe 0x401586
mov dword [esp + 0x2c], ebx
push 0
push 4
lea ecx, [esp + 0x7c]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x74]
movss dword [esp + 0x28], xmm0
xorps xmm0, xmm0
lea eax, [ebx + 0x4d94]
mov dword [esp + 0x78], 0
cmp eax, 0x400000
ja 0x401592
test al, 1
jne 0x401592
movss dword [esp + 0x78], xmm0
jmp 0x4015b6
test al, 1
jne 0x401544
movss dword [esp + 0x28], xmm0
jmp 0x401565
push 0
push 4
lea ecx, [esp + 0x80]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x78]
movss dword [esp + 0x78], xmm0
xorps xmm0, xmm0
mov eax, dword [0x4840b4]
add eax, 0x110
mov dword [esp + 0x58], 0
cmp eax, 0x400000
ja 0x4015db
test al, 1
jne 0x4015db
movss dword [esp + 0x74], xmm0
jmp 0x4015fc
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x58]
movss dword [esp + 0x74], xmm0
xorps xmm0, xmm0
mov eax, dword [0x4840b4]
add eax, 0x138
mov dword [esp + 0x58], 0
cmp eax, 0x400000
ja 0x401621
test al, 1
jne 0x401621
movss dword [esp + 0x10], xmm0
jmp 0x401642
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x58]
movss dword [esp + 0x10], xmm0
xorps xmm0, xmm0
mov eax, dword [0x4840b4]
add eax, 0x13c
mov dword [esp + 0x58], 0
cmp eax, 0x400000
ja 0x401667
test al, 1
jne 0x401667
movss dword [esp + 0x14], xmm0
jmp 0x401688
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x58]
movss dword [esp + 0x14], xmm0
xorps xmm0, xmm0
mov eax, dword [0x4840b4]
add eax, 0x140
mov dword [esp + 0x58], 0
cmp eax, 0x400000
ja 0x4016a5
test al, 1
je 0x4016bd
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x58]
movss xmm1, dword [esp + 0x74]
mov eax, 1
addss xmm1, xmm0
mov dword [esp + 0x64], eax
movss dword [esp + 0x18], xmm1
nop word [eax + eax]
mov ecx, eax
mov dword [esp + 0x80], 0
mov eax, dword [0x484c04]
shl ecx, 4
add eax, 0x4e051dc
add eax, ecx
cmp eax, 0x400000
ja 0x40170b
test al, 1
je 0x401a44
push 0
push 4
lea ecx, [esp + 0x88]
push ecx
push eax
push dword [0x484c68]
call edi
mov esi, dword [esp + 0x80]
mov dword [esp + 0x54], esi
test esi, esi
je 0x401a44
lea eax, [esi + 0xf4]
mov dword [esp + 0x58], 0
cmp eax, 0x400000
ja 0x401750
test al, 1
jne 0x401750
xor eax, eax
jmp 0x401766
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x20]
je 0x401a44
lea eax, [esi + 0xed]
mov byte [esp + 0x5f], 0
cmp eax, 0x400000
ja 0x40178d
test al, 1
jne 0x40178d
mov byte [esp + 0x5f], 0
jmp 0x4017a7
push 0
push 1
lea ecx, [esp + 0x67]
push ecx
push eax
push dword [0x484c68]
call edi
mov al, byte [esp + 0x5f]
mov byte [esp + 0x5f], al
lea ebx, [esi + 0x100]
mov dword [esp + 0x58], 0
cmp ebx, 0x400000
ja 0x4017cc
test bl, 1
jne 0x4017cc
mov dword [esp + 0x1c], 0
jmp 0x4017e6
push 0
push 4
lea eax, [esp + 0x60]
push eax
push ebx
push dword [0x484c68]
call edi
mov eax, dword [esp + 0x58]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x58], 0
cmp ebx, 0x400000
ja 0x4017ff
test bl, 1
je 0x401a44
push 0
push 4
lea eax, [esp + 0x60]
push eax
push ebx
push dword [0x484c68]
call edi
cmp dword [esp + 0x58], 0
jle 0x401a44
cmp byte [esp + 0x5f], 0
jne 0x401a44
mov ebx, dword [esp + 0x1c]
test ebx, ebx
jle 0x401a44
lea eax, [esi + 0x26a8]
mov dword [esp + 0x68], 0
cmp eax, 0x400000
ja 0x401850
test al, 1
jne 0x401850
xor esi, esi
jmp 0x401866
push 0
push 4
lea ecx, [esp + 0x70]
push ecx
push eax
push dword [0x484c68]
call edi
mov esi, dword [esp + 0x68]
mov ecx, dword [0x4840b0]
mov dword [esp + 0x58], 0
lea eax, [ecx + ecx*2]
shl eax, 4
add eax, 0xc
add eax, esi
cmp eax, 0x400000
ja 0x401895
test al, 1
jne 0x401895
xorps xmm0, xmm0
movss dword [esp + 0x1c], xmm0
jmp 0x4018bc
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x58]
mov ecx, dword [0x4840b0]
movss dword [esp + 0x1c], xmm0
xorps xmm0, xmm0
lea eax, [ecx + ecx*2]
mov dword [esp + 0x58], 0
shl eax, 4
add eax, 0x1c
add eax, esi
cmp eax, 0x400000
ja 0x4018da
test al, 1
je 0x4018f8
push 0
push 4
lea ecx, [esp + 0x60]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x58]
mov ecx, dword [0x4840b0]
lea eax, [ecx + ecx*2]
movss dword [esp + 0x58], xmm0
shl eax, 4
add eax, 0x2c
mov dword [esp + 0x60], 0
add eax, esi
cmp eax, 0x400000
ja 0x401921
test al, 1
jne 0x401921
xorps xmm3, xmm3
jmp 0x401939
push 0
push 4
lea ecx, [esp + 0x68]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm3, dword [esp + 0x60]
movss xmm1, dword [esp + 0x10]
movss xmm2, dword [esp + 0x14]
subss xmm2, dword [esp + 0x58]
subss xmm1, dword [esp + 0x1c]
movss xmm0, dword [esp + 0x18]
mov esi, dword [esp + 0x54]
subss xmm0, xmm3
movss dword [esp + 0x68], xmm3
mulss xmm2, xmm2
mov dword [esp + 0x60], 0
mulss xmm1, xmm1
lea eax, [esi + 0x104]
mulss xmm0, xmm0
addss xmm2, xmm1
addss xmm2, xmm0
movss dword [esp + 0x24], xmm2
cmp eax, 0x400000
ja 0x401998
test al, 1
je 0x4019c0
push 0
push 4
lea ecx, [esp + 0x68]
push ecx
push eax
push dword [0x484c68]
call edi
mov eax, dword [esp + 0x60]
cmp eax, 0x107
je 0x4019bc
cmp eax, 0x100
jne 0x4019c0
mov cl, 1
jmp 0x4019c2
xor cl, cl
movss xmm3, dword [esp + 0x1c]
movss xmm2, dword [esp + 0x58]
movss xmm1, dword [esp + 0x68]
movss xmm0, dword [esp + 0x24]
mov eax, dword [0x484db0]
mov dword [esp + 0x30], esi
mov dword [esp + 0x34], ebx
mov byte [esp + 0x38], 0
mov byte [esp + 0x39], cl
movss dword [esp + 0x3c], xmm3
movss dword [esp + 0x40], xmm2
movss dword [esp + 0x44], xmm1
movss dword [esp + 0x48], xmm0
cmp eax, dword [0x484db4]
je 0x401a39
mov dword [eax], esi
mov dword [eax + 4], ebx
mov byte [eax + 8], 0
mov byte [eax + 9], cl
movss dword [eax + 0xc], xmm3
movss dword [eax + 0x10], xmm2
movss dword [eax + 0x14], xmm1
movss dword [eax + 0x18], xmm0
add dword [0x484db0], 0x1c
jmp 0x401a44
lea ecx, [esp + 0x30]
push ecx
push eax
call fcn.004027c0
mov eax, dword [esp + 0x64]
inc eax
mov dword [esp + 0x64], eax
cmp eax, 0x20
jl 0x4016e0
cmp byte [0x4840a4], 0
je 0x401afb
mov ecx, dword [0x484dac]
sub esp, 0x1c
mov ebx, dword [0x484db0]
mov eax, esp
movss xmm0, dword [esp + 0x44]
mov edx, dword [esp + 0x88]
push ebx
movss dword [eax], xmm0
movss xmm0, dword [esp + 0x98]
movss dword [eax + 4], xmm0
movss xmm0, dword [esp + 0x94]
movss dword [eax + 8], xmm0
movss xmm0, dword [esp + 0x30]
movss dword [eax + 0xc], xmm0
movss xmm0, dword [esp + 0x34]
movss dword [eax + 0x10], xmm0
movss xmm0, dword [esp + 0x38]
push ecx
lea ecx, [esp + 0x48]
movss dword [eax + 0x14], xmm0
mov dword [eax + 0x18], edx
call fcn.00402390
add esp, 0x24
mov eax, dword [eax]
mov dword [esp + 0x6c], eax
cmp eax, ebx
je 0x401afb
mov esi, dword [0x484db0]
sub esi, ebx
push esi
push ebx
push eax
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [esp + 0x78]
add esp, 0xc
add eax, esi
mov dword [0x484db0], eax
mov ecx, dword [0x484dac]
mov ebx, dword [0x484db0]
cmp ecx, ebx
je 0x401f9b
movss xmm0, dword [esp + 0x10]
lea eax, [esp + 0x30]
push eax
mov esi, ebx
movss dword [esp + 0x34], xmm0
movss xmm0, dword [esp + 0x18]
sub esi, ecx
mov eax, 0x92492493
movss dword [esp + 0x38], xmm0
movss xmm0, dword [esp + 0x1c]
imul esi
movss dword [esp + 0x3c], xmm0
movss xmm0, dword [esp + 0x2c]
movss dword [esp + 0x40], xmm0
movss xmm0, dword [esp + 0x7c]
movss dword [esp + 0x44], xmm0
movss xmm0, dword [esp + 0x78]
add edx, esi
sar edx, 4
mov eax, edx
movss dword [esp + 0x48], xmm0
shr eax, 0x1f
add eax, edx
mov edx, ebx
push eax
call fcn.004025b0
mov esi, dword [0x484dac]
add esp, 8
cmp byte [0x484098], 0
mov eax, dword [0x484db0]
je 0x401be2
cmp esi, eax
je 0x401f9b
lea ebx, [esi + 0x1c]
nop dword [eax]
push dword [esi]
mov edx, dword [0x4840b4]
call fcn.00402130
test al, al
mov eax, dword [0x484db0]
jne 0x401bd2
sub eax, ebx
push eax
push ebx
push esi
call sub.VCRUNTIME140.dll_memmove
mov eax, dword [0x484db0]
add esp, 0xc
sub eax, 0x1c
mov dword [0x484db0], eax
jmp 0x401bd8
add esi, 0x1c
add ebx, 0x1c
cmp esi, eax
jne 0x401ba0
mov esi, dword [0x484dac]
cmp esi, eax
je 0x401f9b
mov ebx, dword [esi]
mov dword [esp + 0x64], 0
lea eax, [ebx + 0x100]
cmp eax, 0x400000
ja 0x401c05
test al, 1
je 0x401c34
push 0
push 4
lea ecx, [esp + 0x6c]
push ecx
push eax
push dword [0x484c68]
call edi
cmp dword [esp + 0x64], 0
jle 0x401c2e
mov edx, dword [0x4840b4]
push ebx
call fcn.00402130
test al, al
jne 0x401c36
mov esi, dword [0x484dac]
mov ebx, dword [esi]
lea eax, [ebx + 0x100]
mov dword [esp + 0x64], 0
cmp eax, 0x400000
ja 0x401c53
test al, 1
je 0x401f9b
push 0
push 4
lea ecx, [esp + 0x6c]
push ecx
push eax
push dword [0x484c68]
call edi
cmp dword [esp + 0x64], 0
jle 0x401f9b
add ebx, 0x26a8
mov dword [esp + 0x64], 0
cmp ebx, 0x400000
ja 0x401c8f
test bl, 1
jne 0x401c8f
xor esi, esi
jmp 0x401ca5
push 0
push 4
lea eax, [esp + 0x6c]
push eax
push ebx
push dword [0x484c68]
call edi
mov esi, dword [esp + 0x64]
mov ecx, dword [0x4840b0]
mov dword [esp + 0x60], 0
lea eax, [ecx + ecx*2]
shl eax, 4
add eax, 0xc
add eax, esi
cmp eax, 0x400000
ja 0x401cd4
test al, 1
jne 0x401cd4
xorps xmm0, xmm0
movss dword [esp + 0x68], xmm0
jmp 0x401cfb
push 0
push 4
lea ecx, [esp + 0x68]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x60]
mov ecx, dword [0x4840b0]
movss dword [esp + 0x68], xmm0
xorps xmm0, xmm0
lea eax, [ecx + ecx*2]
mov dword [esp + 0x60], 0
shl eax, 4
add eax, 0x1c
add eax, esi
cmp eax, 0x400000
ja 0x401d21
test al, 1
jne 0x401d21
movss dword [esp + 0x20], xmm0
jmp 0x401d48
push 0
push 4
lea ecx, [esp + 0x68]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x60]
mov ecx, dword [0x4840b0]
movss dword [esp + 0x20], xmm0
xorps xmm0, xmm0
lea eax, [ecx + ecx*2]
mov dword [esp + 0x60], 0
shl eax, 4
add eax, 0x2c
add eax, esi
cmp eax, 0x400000
ja 0x401d66
test al, 1
je 0x401d7e
push 0
push 4
lea ecx, [esp + 0x68]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x60]
push dword [0x484bf8]
movss dword [esp + 0x68], xmm0
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x401f9b
cmp dword [0x4840b4], 0
je 0x401f9b
movss xmm0, dword [esp + 0x14]
subss xmm0, dword [esp + 0x20]
movss xmm3, dword [esp + 0x10]
subss xmm3, dword [esp + 0x68]
movss xmm2, dword [esp + 0x18]
subss xmm2, dword [esp + 0x64]
movaps xmm1, xmm0
movss dword [esp + 0x14], xmm0
mulss xmm1, xmm0
movaps xmm0, xmm3
movss dword [esp + 0x10], xmm3
mulss xmm0, xmm3
movss dword [esp + 0x18], xmm2
addss xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm2
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x401e0b
sqrtsd xmm0, xmm0
jmp 0x401e10
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_sqrt_precise
movss xmm1, dword [esp + 0x18]
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
cvtps2pd xmm0, xmm1
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_atan_precise
cvtsd2ss xmm0, xmm0
cvtss2sd xmm0, xmm0
mulsd xmm0, qword [0x47ead0]
divsd xmm0, qword [0x47ea90]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x6c], xmm0
movss xmm0, dword [esp + 0x14]
divss xmm0, dword [esp + 0x10]
cvtps2pd xmm0, xmm0
call sub.api_ms_win_crt_math_l1_1_0.dll__libm_sse2_atan_precise
movsd xmm1, qword [0x47ead0]
xorps xmm2, xmm2
cvtsd2ss xmm0, xmm0
movss xmm3, dword [esp + 0x10]
comiss xmm3, xmm2
cvtss2sd xmm0, xmm0
mulsd xmm0, xmm1
divsd xmm0, qword [0x47ea90]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x68], xmm0
jb 0x401ea2
cvtss2sd xmm0, xmm0
addsd xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x68], xmm0
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x64], 0
lea eax, [ebx + 0x4d90]
cmp eax, 0x400000
ja 0x401ec7
test al, 1
jne 0x401ec7
movss dword [esp + 0x60], xmm2
jmp 0x401ee5
push 0
push 4
lea ecx, [esp + 0x6c]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x64]
movss dword [esp + 0x60], xmm0
lea eax, [ebx + 0x4d94]
mov dword [esp + 0x64], 0
cmp eax, 0x400000
ja 0x401efe
test al, 1
je 0x401f1c
push 0
push 4
lea ecx, [esp + 0x6c]
push ecx
push eax
push dword [0x484c68]
call edi
movss xmm0, dword [esp + 0x64]
movss dword [esp + 0x70], xmm0
movss xmm1, dword [esp + 0x6c]
movss xmm0, dword [esp + 0x60]
call fcn.00401220
movss xmm1, dword [esp + 0x68]
movss dword [esp + 0x6c], xmm0
movss xmm0, dword [esp + 0x70]
call fcn.00401220
mov esi, dword [sym.imp.KERNEL32.dll_WriteProcessMemory]
lea eax, [esp + 0x6c]
push 0
push 4
push eax
lea eax, [ebx + 0x4d90]
movss dword [esp + 0x30], xmm0
movss xmm0, dword [esp + 0x78]
push eax
push dword [0x484c68]
movss dword [esp + 0x80], xmm0
call esi
movss xmm0, dword [esp + 0x24]
lea eax, [esp + 0x6c]
push 0
push 4
push eax
lea eax, [ebx + 0x4d94]
movss dword [esp + 0x78], xmm0
push eax
push dword [0x484c68]
call esi
mov ecx, dword [esp + 0x84]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00469676
mov esp, ebp
pop ebp
ret