Function at 0x416d40
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x484a0a
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
mov eax, dword [0x4a7008]
xor eax, esp
mov dword [esp + 0x34], eax
push esi
push edi
mov eax, dword [0x4a7008]
xor eax, esp
push eax
lea eax, [esp + 0x78]
mov dword fs:[0], eax
mov edi, ecx
cmp byte [edi + 0xa0], 0
je 0x416ee3
mov eax, dword [0x4afff4]
test al, 1
jne 0x416dbe
push 0x30
or eax, 1
push 0
push 0x4d1b70
mov dword [0x4afff4], eax
call fcn.00479b40
add esp, 0xc
call fcn.00445f90
push 0x48cc80
call fcn.0046fb6c
mov eax, dword [0x4afff4]
add esp, 4
cmp byte [0x4d1b7c], 0
jne 0x416dd3
mov byte [edi + 0xa0], 0
jmp 0x416f09
test al, 1
jne 0x416e07
push 0x30
or eax, 1
push 0
push 0x4d1b70
mov dword [0x4afff4], eax
call fcn.00479b40
add esp, 0xc
call fcn.00445f90
push 0x48cc80
call fcn.0046fb6c
mov eax, dword [0x4afff4]
add esp, 4
mov edx, dword [edi + 0x80]
movss xmm1, dword [0x4d1b74]
movd xmm0, edx
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x416e24
movaps xmm1, xmm0
mov ecx, dword [edi + 0x88]
movd xmm2, ecx
cvtdq2ps xmm2, xmm2
comiss xmm1, xmm2
jbe 0x416e39
movaps xmm1, xmm2
sub ecx, edx
subss xmm1, xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss xmm0, dword [edi + 0xe0]
mulss xmm0, xmm1
movss dword [edi + 0x7c], xmm0
test al, 1
jne 0x416e8a
push 0x30
or eax, 1
push 0
push 0x4d1b70
mov dword [0x4afff4], eax
call fcn.00479b40
add esp, 0xc
call fcn.00445f90
push 0x48cc80
call fcn.0046fb6c
add esp, 4
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0xa0
call esi
shr eax, 0xf
and al, 1
jne 0x416eac
push 0xa1
call esi
shr eax, 0xf
and al, 1
je 0x416ed1
movss xmm0, dword [edi + 0x7c]
divss xmm0, dword [0x497f30]
cvttss2si eax, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x497f30]
movss dword [edi + 0x7c], xmm0
cvttss2si esi, dword [edi + 0x7c]
call fcn.00401620
mov dword [eax + 0x1d8], esi
jmp 0x416f09
cmp byte [edi + 0xa1], 0
je 0x416f09
lea ecx, [edi + 0xa8]
call fcn.0046c3a0
movss xmm0, dword [edi + 0x7c]
addss xmm0, dword [edi + 0xc4]
movss dword [edi + 0x7c], xmm0
mov eax, dword [0x4d1b38]
test al, 1
jne 0x416f40
push 0x1f8
or eax, 1
push 0
push 0x4d1650
mov dword [0x4d1b38], eax
call fcn.00479b40
add esp, 0xc
call fcn.0045fc90
push 0x48cbe0
call fcn.0046fb6c
add esp, 4
push 0xffc8c8c8
lea esi, [edi + 0x80]
mov ecx, 0x4d1650
push esi
call fcn.00461470
movss xmm0, dword [edi + 0x7c]
divss xmm0, dword [edi + 0xe0]
mov ecx, dword [esi]
lea esi, [edi + 0x90]
mov eax, dword [edi + 0x88]
sub eax, ecx
movd xmm1, eax
mov eax, dword [edi + 0x10]
cvtdq2ps xmm1, xmm1
sub eax, 5
push eax
mulss xmm1, xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
addss xmm1, xmm0
movaps xmm0, xmm1
addss xmm0, dword [0x497e14]
subss xmm1, dword [0x497e14]
cvttss2si eax, xmm0
push eax
mov eax, dword [edi + 8]
add eax, 5
push eax
cvttss2si eax, xmm1
push eax
push esi
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [0x4d1b38]
test al, 1
jne 0x416ff2
push 0x1f8
or eax, 1
push 0
push 0x4d1650
mov dword [0x4d1b38], eax
call fcn.00479b40
add esp, 0xc
call fcn.0045fc90
push 0x48cbe0
call fcn.0046fb6c
add esp, 4
push 0xffc8c8c8
push esi
mov ecx, 0x4d1650
call fcn.00461470
mov eax, dword [0x4d1b38]
test al, 1
jne 0x417039
push 0x1f8
or eax, 1
push 0
push 0x4d1650
mov dword [0x4d1b38], eax
call fcn.00479b40
add esp, 0xc
call fcn.0045fc90
push 0x48cbe0
call fcn.0046fb6c
add esp, 4
push 0xffc80000
push esi
mov ecx, 0x4d1650
call fcn.00461800
mov eax, dword [0x4d1ba0]
test al, 1
jne 0x417096
or eax, 1
mov dword [0x4d1ba0], eax
push 0x88
push 0
push 0x4d1a70
mov dword [esp + 0x8c], 0
call fcn.00479b40
add esp, 0xc
call fcn.00401850
push 0x48cc60
call fcn.0046fb6c
add esp, 4
mov dword [esp + 0x80], 0xffffffff
sub esp, 0x18
mov ecx, esp
mov dword [esp + 0x34], esp
push str.BN_Machine_26.dds
call fcn.00403250
mov dword [esp + 0x98], 2
call fcn.004014a0
movss xmm0, dword [eax + 0x2c]
mulss xmm0, dword [0x497e38]
movss dword [esp + 0x30], xmm0
call fcn.004013e0
movss xmm1, dword [esp + 0x30]
mov ecx, eax
mov dword [esp + 0x98], 0xffffffff
call fcn.00468050
movss xmm0, dword [edi + 0x7c]
lea eax, [esp + 0x20]
divss xmm0, dword [0x497f30]
sub esp, 8
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push str._.2f
push eax
call fcn.00417370
sub esp, 8
mov edx, esp
mov dword [esp + 0x34], esp
mov dword [edx + 0x14], 0xf
mov dword [edx + 0x10], 0
mov byte [edx], 0
cmp byte [esp + 0x38], 0
jne 0x417135
xor ecx, ecx
jmp 0x417149
lea ecx, [esp + 0x38]
lea esi, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x417140
sub ecx, esi
push ecx
lea eax, [esp + 0x3c]
mov ecx, edx
push eax
call fcn.00403610
mov dword [esp + 0x98], 4
mov eax, dword [edi + 0x10]
add eax, dword [edi + 8]
movd xmm0, eax
mov eax, dword [0x4afd20]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x497d50]
movss dword [esp + 0x30], xmm0
test al, 1
jne 0x4171c9
or eax, 1
mov dword [0x4afd20], eax
push 0x213c0
push 0
push 0x4b0230
mov byte [esp + 0xa4], 5
call fcn.00479b40
add esp, 0xc
call fcn.00468b40
push 0x48cc50
call fcn.0046fb6c
movss xmm0, dword [esp + 0x34]
add esp, 4
mov byte [esp + 0x98], 4
mov eax, dword [edi + 0x88]
subss xmm0, dword [0x497e14]
add eax, 0x14
mov dword [esp + 0x98], 0xffffffff
push 0
push ecx
mov dword [esp], 0
mov ecx, 0x4b0230
movd xmm1, eax
movaps xmm2, xmm0
cvtdq2ps xmm1, xmm1
push 0xffffffffffffffff
call fcn.00468eb0
push 1
mov ecx, edi
call fcn.004074f0
mov eax, dword [0x4afd20]
test al, 1
jne 0x41725b
or eax, 1
mov dword [0x4afd20], eax
push 0x213c0
push 0
push 0x4b0230
mov dword [esp + 0x8c], 6
call fcn.00479b40
add esp, 0xc
call fcn.00468b40
push 0x48cc50
call fcn.0046fb6c
add esp, 4
mov dword [esp + 0x80], 0xffffffff
push 0xffffffffffffffff
mov ecx, 0x4b0230
call fcn.00469330
mov ecx, dword [esp + 0x78]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x34]
xor ecx, esp
call fcn.0046f27e
mov esp, ebp
pop ebp
ret