Function at 0x4808e0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x10
push ebx
mov ebx, dword [esp + 0x18]
push ebp
mov ebp, dword [esp + 0x20]
push esi
mov esi, ecx
push edi
mov eax, dword [esi + ebx*4 + 0x30c]
cmp ebp, eax
mov dword [esp + 0x10], eax
jge 0x480c6f
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + ebx*4 + 0x32c]
cmp eax, ecx
jge 0x480c6f
mov ecx, dword [esi + ebx*4 + 0x34c]
mov edi, dword [esi + 0x134]
mov eax, ecx
cdq
sub eax, edx
mov edx, eax
mov eax, ecx
imul eax, ebp
sar edx, 1
sub eax, edi
mov dword [esp - 0x663dfcdc], ebx
mov edi, eax
mov eax, ecx
imul eax, dword [esp + 0x2c]
mov ecx, dword [esi + 0x138]
xor edi, edx
sub edi, edx
mov edx, dword [esp + 0x24]
sub eax, ecx
mov ecx, dword [esi + 0xed0]
add eax, edx
cdq
xor eax, edx
sub eax, edx
cmp edi, ecx
jl 0x480968
lea edi, [ecx - 1]
mov edx, dword [esi + 0xed4]
cmp eax, edx
jl 0x480975
lea eax, [edx - 1]
imul ecx, eax
mov eax, dword [esp + 0x10]
mov edx, dword [esi + 0x374]
imul eax, dword [esp + 0x2c]
add ecx, edi
add eax, ebp
fld dword [edx + ecx*4]
mov ecx, dword [esi + 0x370]
fstp dword [esp + 0x24]
mov edx, dword [ecx + ebx*4]
fld dword [edx + eax*4]
mov al, byte [0x54a4c0]
test al, 1
jne 0x4809c0
fld dword [0x4ff000]
or al, 1
mov byte [0x54a4c0], al
fdiv dword [esi + 0xf3c]
fstp dword [0x54a4c4]
fld dword [esp + 0x24]
fadd dword [0x501130]
xor eax, eax
fdivr st(1)
fstp dword [esp + 0x28]
fstp st(0)
fld dword [eax + 0x520d40]
fmul dword [esi + 0x184]
add eax, 4
cmp eax, 0xc
fstp dword [esp + eax + 0x10]
jl 0x4809d4
push 0x76
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, ah
js 0x480bf9
cmp ebx, 2
jne 0x480a25
mov ecx, dword [esi + 0xf44]
mov edi, dword [esi + 0xf40]
mov eax, ecx
cdq
pop eax
ret 0xf8d1
cmp ebx, 1
jne 0x480b5d
mov ecx, dword [esi + 0xf44]
mov edi, dword [esi + 0xf40]
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
cdq
sub eax, edx
sar eax, 1
add eax, ecx
push eax
mov eax, edi
cdq
and edx, 3
add eax, edx
sar eax, 2
cdq
sub eax, edx
mov ecx, esi
sar eax, 1
add eax, edi
push eax
call fcn.004853e0
fcomp dword [esp + 0x24]
fnstsw ax
and eax, 0x4100
jne 0x480b88
mov ecx, dword [esp + 0x2c]
lea edi, [ebx - 1]
lea eax, [ecx + ecx]
lea ecx, [ebp + ebp]
push eax
push ecx
push edi
mov ecx, esi
call fcn.004808e0
mov edx, dword [esp + 0x2c]
lea ecx, [ebp + ebp + 1]
mov dword [esp + 0x28], ecx
lea eax, [edx + edx]
push eax
push ecx
push edi
mov ecx, esi
call fcn.004808e0
mov eax, dword [esp + 0x2c]
mov ecx, esi
add eax, eax
inc eax
mov dword [esp + 0x24], eax
push eax
lea eax, [ebp + ebp]
push eax
push edi
call fcn.004808e0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
push ecx
push edx
push edi
mov ecx, esi
call fcn.004808e0
mov ecx, dword [esi + edi*4 + 0x30c]
mov eax, dword [esi + 0x36c]
imul ecx, dword [esp + 0x2c]
mov edx, dword [eax + edi*4]
add ecx, ebp
cmp byte [esi*4 - 0x197af0fe], 0
add byte [eax], al
mov ecx, dword [esi + edi*4 + 0x30c]
imul ecx, dword [esp + 0x2c]
add ecx, ebp
cmp byte [edx + ecx*2 + 1], 2
jne 0x480bdb
mov edx, dword [esi + edi*4 + 0x30c]
mov ecx, dword [esp + 0x24]
imul edx, ecx
add edx, dword [eax + edi*4]
cmp byte [edx + ebp*2], 2
jne 0x480bdb
mov eax, dword [esp + 0x28]
push ecx
push eax
push edi
mov ecx, esi
call fcn.00485430
cmp al, 2
jne 0x480bdb
mov ecx, dword [esp + 0x2c]
push 0
push 0
push ecx
push ebp
push ebx
mov ecx, esi
call fcn.00485270
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x10
ret 0xc
test ebx, ebx
jne 0x480b88
mov eax, dword [esi + 0xf44]
mov ecx, esi
cdq
sub eax, edx
sar eax, 1
push eax
mov eax, dword [esi + 0xf40]
push eax
call fcn.004853e0
fcomp dword [esp + 0x24]
fnstsw ax
and eax, 0x4100
je 0x480c01
fld dword [0x4fe6cc]
fdiv dword [0x54a4c4]
fst dword [esp + 0x24]
fmul dword [esp + 0x14]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 5
jnp 0x480bf9
fld dword [esp + 0x24]
fmul dword [esp + 0x18]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 5
jnp 0x480c01
fld dword [esp + 0x24]
fmul dword [esp + 0x1c]
fcomp dword [esp + 0x28]
fnstsw ax
test ah, 5
jp 0x480bd4
mov eax, 1
jmp 0x480c03
mov eax, 2
jmp 0x480c03
mov edx, dword [esp + 0x2c]
push 1
push 0xffffffffffffffff
push edx
push ebp
sub al, 0x8b
into
call fcn.00485270
pop edi
pop esi
pop ebp
mov al, 0xd3
pop ebx
add esp, 0x10
ret 0xc
test ebx, ebx
jne 0x480a78
xor eax, eax
mov edx, dword [esi + ebx*4 + 0x30c]
mov ecx, dword [esi + 0x36c]
imul edx, dword [esp + 0x2c]
add edx, dword [ecx + ebx*4]
test ebx, ebx
mov byte [edx + ebp], al
jle 0x480c6f
cmp al, 0xff
je 0x480c6f
add al, 2
dec ebx
mov dword [esp + 0x24], 0
mov byte [esp + 0x28], al
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
xor edi, edi
lea ebx, [ecx + eax*2]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
push 1
push edx
lea eax, [edi + ebp*2]
push ebx
push eax
push ecx
mov ecx, esi
call fcn.00485270
inc edi
cmp edi, 2
jl 0x480c43
mov eax, dword [esp + 0x24]
inc eax
cmp eax, 2
mov dword [esp + 0x24], eax
jl 0x480c36
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0x3b
ret 0xc