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

Disassembly:
sub esp, 0x1a4
mov eax, dword [0x6ab100]
xor eax, esp
mov dword [esp + 0x19c], eax
movss xmm1, dword [0x6a3d08]
xor eax, eax
push ebx
push ebp
push esi
push edi
xorps xmm0, xmm0
nop word [eax + eax]
movss xmm2, dword [eax*4 + 0x75f898]
comiss xmm2, xmm0
jb 0x4546bb
addss xmm2, xmm1
movss dword [eax*4 + 0x75f898], xmm2
movss xmm2, dword [eax*4 + 0x75f89c]
comiss xmm2, xmm0
jb 0x4546d6
addss xmm2, xmm1
movss dword [eax*4 + 0x75f89c], xmm2
movss xmm2, dword [eax*4 + 0x75f8a0]
comiss xmm2, xmm0
jb 0x4546f1
addss xmm2, xmm1
movss dword [eax*4 + 0x75f8a0], xmm2
movss xmm2, dword [eax*4 + 0x75f8a4]
comiss xmm2, xmm0
jb 0x45470c
addss xmm2, xmm1
movss dword [eax*4 + 0x75f8a4], xmm2
movss xmm2, dword [eax*4 + 0x75f8a8]
comiss xmm2, xmm0
jb 0x454727
addss xmm2, xmm1
movss dword [eax*4 + 0x75f8a8], xmm2
movss xmm2, dword [eax*4 + 0x75f8ac]
comiss xmm2, xmm0
jb 0x454742
addss xmm2, xmm1
movss dword [eax*4 + 0x75f8ac], xmm2
movss xmm2, dword [eax*4 + 0x75f8b0]
comiss xmm2, xmm0
jb 0x45475d
addss xmm2, xmm1
movss dword [eax*4 + 0x75f8b0], xmm2
movss xmm2, dword [eax*4 + 0x75f8b4]
comiss xmm2, xmm0
jb 0x454778
addss xmm2, xmm1
movss dword [eax*4 + 0x75f8b4], xmm2
add eax, 8
cmp eax, 0xdc
jl 0x4546a0
cmp eax, 0xe3
jge 0x4547af
lea eax, [eax*4 + 0x75f898]
movss xmm2, dword [eax]
comiss xmm2, xmm0
jb 0x4547a5
addss xmm2, xmm1
movss dword [eax], xmm2
add eax, 4
cmp eax, 0x75fc24
jl 0x454794
lea eax, [esp + 0x28]
push eax
push dword [0x75fc24]
call fcn.0047f610
add esp, 8
test al, al
je 0x454860
nop word [eax + eax]
mov eax, dword [esp + 0x28]
sub eax, 0xa
je 0x454829
sub eax, 1
je 0x4547f4
sub eax, 1
jne 0x454845
mov eax, dword [esp + 0x3c]
mov dword [eax*4 + 0x75f898], 0xbf800000
jmp 0x454845
mov eax, dword [esp + 0x40]
test eax, eax
jle 0x454845
test eax, 0xffffff00
jne 0x454845
push 8
call fcn.005f137e
mov ecx, dword [esp + 0x40]
add esp, 4
mov edx, eax
mov dword [eax], ecx
movzx ecx, byte [esp + 0x40]
mov dword [eax + 4], ecx
mov ecx, 0x75f85c
call fcn.00455800
jmp 0x454845
mov eax, dword [esp + 0x3c]
xorps xmm0, xmm0
comiss xmm0, dword [eax*4 + 0x75f898]
jbe 0x454845
mov dword [eax*4 + 0x75f898], 0
lea eax, [esp + 0x28]
push eax
push dword [0x75fc24]
call fcn.0047f610
add esp, 8
test al, al
jne 0x4547d0
push 0x2c
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x454892
movss xmm1, dword [0x75fa08]
xorps xmm0, xmm0
comiss xmm0, xmm1
ja 0x454888
addss xmm1, dword [0x6a3d08]
movaps xmm0, xmm1
movss dword [0x75fa08], xmm0
jmp 0x45489c
mov dword [0x75fa08], 0xbf800000
xor edx, edx
mov ecx, 0xd9
mov dword [0x75f868], edx
call fcn.00453c00
test al, al
jne 0x4548c2
mov ecx, 0xda
xor esi, esi
call fcn.00453c00
test al, al
je 0x4548cf
mov edx, 2
mov dword [0x75f868], edx
mov esi, edx
mov ecx, 0xdb
call fcn.00453c00
test al, al
jne 0x4548eb
mov ecx, 0xdc
call fcn.00453c00
test al, al
je 0x4548f6
mov edx, esi
or edx, 4
mov dword [0x75f868], edx
mov ecx, 0xd7
call fcn.00453c00
test al, al
jne 0x454912
mov ecx, 0xd8
call fcn.00453c00
test al, al
je 0x45491b
or edx, 1
mov dword [0x75f868], edx
push 0x75f86c
call fcn.0047fb80
mov eax, dword [0x75f86c]
add esp, 4
mov edi, dword [0x75f870]
sub eax, dword [0x6ac458]
sub edi, dword [0x6ac460]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edi
call fcn.00454cb0
xor ebx, ebx
mov dword [esp + 0x1c], ebx
cmp dword [0x75f840], ebx
jle 0x454c75
mov eax, dword [0x6de374]
mov ebp, dword [0x6dc1fc]
mov dword [esp + 0x10], eax
nop dword [eax]
mov eax, dword [0x75f83c]
mov esi, dword [eax + ebx*4]
cmp byte [esi + 0xc], 0
je 0x454c64
cmp byte [esi + 0x1c], 0
je 0x454c64
mov eax, dword [esi + 8]
sub eax, 0
je 0x454c1e
sub eax, 1
je 0x454b70
sub eax, 1
jne 0x454c64
xor bl, bl
cmp dword [0x7640fc], 1
jne 0x4549e5
mov edx, dword [0x75f870]
lea eax, [esp + 0x24]
mov ecx, dword [0x75f86c]
push 1
push eax
lea eax, [esp + 0x28]
push eax
call fcn.004663c0
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov dword [esi + 0x30], eax
mov eax, dword [esp + 0x24]
jmp 0x454a85
mov edx, dword [0x75f86c]
mov ecx, dword [0x75f870]
sub edx, dword [ebp]
sub ecx, dword [ebp + 4]
test edx, edx
js 0x454a09
test ecx, ecx
js 0x454a09
cmp edx, dword [ebp + 8]
jge 0x454a09
cmp ecx, dword [ebp + 0xc]
jl 0x454a0b
mov bl, 1
mov eax, dword [esp + 0x10]
movd xmm1, dword [eax + 0x18]
mov eax, dword [ebp + 8]
inc eax
cvtdq2ps xmm1, xmm1
movd xmm0, eax
xor eax, eax
cvtdq2ps xmm0, xmm0
test edx, edx
cmovns eax, edx
divss xmm1, xmm0
movd xmm0, eax
mov eax, dword [esp + 0x10]
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm0
cvttss2si edx, xmm1
movd xmm1, dword [eax + 0x1c]
mov eax, dword [ebp + 0xc]
inc eax
cvtdq2ps xmm1, xmm1
movd xmm0, eax
xor eax, eax
cvtdq2ps xmm0, xmm0
test ecx, ecx
cmovns eax, ecx
mov ecx, dword [esp + 0x10]
divss xmm1, xmm0
cmp byte [ecx], 0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm0
cvttss2si eax, xmm1
jne 0x454a82
test byte [0x76413c], 0x20
je 0x454a82
add edx, 4
mov dword [esi + 0x30], edx
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x48], eax
mov eax, dword [esi + 0x60]
test eax, eax
jle 0x454a9f
cmp ecx, eax
jge 0x454abf
test ecx, ecx
jns 0x454aad
xor eax, eax
jmp 0x454ac1
jns 0x454abf
cmp ecx, eax
jle 0x454abf
test ecx, ecx
jle 0x454aad
xor eax, eax
jmp 0x454ac1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [esi + 0x18]
cvttss2si eax, xmm0
jmp 0x454ac1
mov eax, ecx
mov dword [esi + 0x60], eax
mov eax, dword [esi + 0x78]
test eax, eax
jle 0x454ad7
cmp edi, eax
jge 0x454af7
test edi, edi
jns 0x454ae5
xor eax, eax
jmp 0x454af9
jns 0x454af7
cmp edi, eax
jle 0x454af7
test edi, edi
jle 0x454ae5
xor eax, eax
jmp 0x454af9
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [esi + 0x18]
cvttss2si eax, xmm0
jmp 0x454af9
mov eax, edi
mov dword [esi + 0x78], eax
lea edx, [esi + 0x94]
mov dword [esi + 0x34], 0
mov dword [esi + 0x4c], 0
mov dword [esi + 0x64], 0
mov dword [esi + 0x7c], 0
mov esi, 4
mov edi, dword [edx - 4]
test bl, bl
jne 0x454b48
mov ecx, dword [edx - 0x10]
cmp ecx, 0xffffffff
je 0x454b48
mov eax, 1
shl eax, cl
test dword [0x75f88c], eax
je 0x454b48
mov eax, 1
jmp 0x454b4a
xor eax, eax
mov dword [edx - 4], eax
test edi, edi
je 0x454b59
test eax, eax
je 0x454b59
inc dword [edx]
jmp 0x454b5f
mov dword [edx], 0
add edx, 0x18
sub esi, 1
jne 0x454b23
mov ebx, dword [esp + 0x1c]
jmp 0x454c60
push dword [esi + 0x14]
call fcn.0047fce0
lea ecx, [esp + 0x6c]
push ecx
push eax
call fcn.0047fd50
add esp, 0xc
lea ecx, [esi + 0x24]
mov edi, 8
nop
mov edx, dword [ecx - 4]
mov esi, dword [ecx + 0xc]
mov eax, esi
sub edx, 1
je 0x454bd3
sub edx, 1
jne 0x454bf0
mov eax, dword [ecx]
lea eax, [eax + eax*2]
add eax, dword [ecx + 4]
movss xmm0, dword [esp + eax*4 + 0x68]
xor eax, eax
cmp dword [ecx + 8], eax
je 0x454bc3
comiss xmm0, dword [0x6a3d10]
seta al
jmp 0x454bed
movss xmm1, dword [0x6a3e50]
comiss xmm1, xmm0
seta al
jmp 0x454bed
mov eax, dword [ecx]
cmp eax, 0xffffffff
je 0x454beb
cmp dword [esp + eax*4 + 0x128], 0
je 0x454beb
mov eax, 1
jmp 0x454bed
xor eax, eax
mov dword [ecx + 0xc], eax
test esi, esi
je 0x454bfd
test eax, eax
je 0x454bfd
inc dword [ecx + 0x10]
jmp 0x454c04
mov dword [ecx + 0x10], 0
add ecx, 0x18
sub edi, 1
jne 0x454b90
mov ecx, dword [0x6de374]
mov ebp, dword [0x6dc1fc]
mov dword [esp + 0x10], ecx
jmp 0x454c60
lea edx, [esi + 0x34]
mov esi, 8
mov ecx, dword [edx - 0x10]
mov edi, dword [edx - 4]
cmp ecx, 0xffffffff
je 0x454c41
call fcn.00453c00
test al, al
je 0x454c41
mov eax, 1
jmp 0x454c43
xor eax, eax
mov dword [edx - 4], eax
test edi, edi
je 0x454c52
test eax, eax
je 0x454c52
inc dword [edx]
jmp 0x454c58
mov dword [edx], 0
add edx, 0x18
sub esi, 1
jne 0x454c26
mov edi, dword [esp + 0x18]
inc ebx
mov dword [esp + 0x1c], ebx
cmp ebx, dword [0x75f840]
jl 0x454970
mov ecx, dword [esp + 0x1ac]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.005e8cbe
add esp, 0x1a4
ret