Function at 0x402524
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push ecx
push ebp
push esi
push edi
mov esi, esp
sub esp, 0xc
mov eax, esp
mov edx, eax
add edx, 0xc
mov dword [eax], 0
add eax, 4
cmp eax, edx
jne 0x402535
lea ebp, [0x562250]
mov ebx, dword [ebp + 0x14]
cmp ebx, 2
jge 0x40255c
push 0
xor eax, eax
call fcn.0040b930
push 0
push 0
push 0
call fcn.0040ee10
lea ebp, [0x562250]
cmp dword [ebp + 0x9c], 0
je 0x4025ac
lea ebp, [0x562250]
mov ebx, dword [ebp + 0x20]
add ebx, 0xfffffffc
push ebx
push dword [ebp + 0xa0]
call fcn.00406184
mov ebx, dword [ebp + 0x1c]
sub ebx, dword [ebp + 0x20]
add ebx, 3
push ebx
push dword [ebp + 0xa0]
call fcn.004063fc
lea ebp, [0x562250]
cmp dword [ebp + 0xc4], 0
je 0x4025c0
call fcn.00406508
lea ebp, [0x562250]
cmp dword [ebp + 0xa8], 0
je 0x4025fb
mov dword [esp], 1
lea ebp, [0x562250]
mov eax, dword [ebp + 0xac]
cmp eax, dword [esp]
jl 0x4025fb
push dword [ebp + 0xb8]
push dword [esp + 4]
call fcn.00406184
inc dword [esp]
jmp 0x4025d6
lea ebp, [0x562250]
cmp dword [ebp + 0x24], 0
je 0x402699
lea ebp, [0x562250]
mov ebx, dword [ebp + 0x28]
cmp ebx, 2
jge 0x402646
call fcn.00406830
lea ebp, [0x562250]
cmp dword [ebp + 0x28], 0
je 0x402644
push dword [esp + 4]
call fcn.00406b18
fld dword [esp + 4]
lea ebp, [0x562250]
fadd dword [ebp + 0x40]
fstp dword [esp + 4]
jmp 0x402699
call fcn.00406b54
lea ebp, [0x562250]
cmp dword [ebp + 0x34], 0
je 0x402665
lea ebp, [0x562250]
push dword [ebp + 0x40]
call fcn.00406fac
lea ebp, [0x562250]
cmp dword [ebp + 0x38], 0
je 0x40267f
lea ebp, [0x562250]
push dword [ebp + 0x40]
call fcn.00406ff4
lea ebp, [0x562250]
cmp dword [ebp + 0x3c], 0
je 0x402699
lea ebp, [0x562250]
push dword [ebp + 0x40]
call fcn.0040703c
cmp dword [0x562224], 0
je 0x4026a7
call fcn.0040d15b
lea ebp, [0x562250]
cmp dword [ebp + 0x108], 0
je 0x4026bb
call fcn.00407084
lea ebp, [0x562250]
cmp dword [ebp + 0xd0], 0
je 0x402994
lea ebp, [0x562250]
cmp dword [ebp + 0xe8], 0
je 0x402977
fld dword [esp + 8]
lea ebp, [0x562250]
fadd dword [ebp + 0xec]
fstp dword [esp + 8]
fld dword [esp + 8]
mov dword [esp - 4], 0x43b40000
fcomp dword [esp - 4]
fnstsw ax
test ah, 0x41
jne 0x402714
mov dword [esp + 8], 0
lea ebp, [0x562250]
push dword [ebp + 0xe8]
mov ebx, 1
cmp ebx, dword [esp]
jne 0x40279e
mov dword [esp + 4], 1
lea ebp, [0x562250]
mov eax, dword [ebp + 0xe4]
cmp eax, dword [esp + 4]
jl 0x402799
fild dword [esp + 4]
fmul dword [ebp + 0xec]
fadd dword [esp + 0xc]
sub esp, 4
fstp dword [esp]
call fcn.004036bc
mov dword [esp - 4], 0x41a00000
fmul dword [esp - 4]
fiadd dword [esp + 4]
fiadd dword [ebp + 0xdc]
push eax
fistp dword [esp]
push dword [ebp + 0xd8]
mov ebx, dword [esp + 0xc]
mov ebp, dword [0x56237c]
sal ebx, 2
push dword [ebp + ebx]
call fcn.0040d0c4
inc dword [esp + 4]
jmp 0x402732
jmp 0x402974
mov ebx, 2
cmp ebx, dword [esp]
jne 0x402827
mov dword [esp + 4], 1
lea ebp, [0x562250]
mov eax, dword [ebp + 0xe4]
cmp eax, dword [esp + 4]
jl 0x402822
mov ebx, dword [esp + 4]
add ebx, dword [ebp + 0xdc]
push ebx
mov ebx, dword [ebp + 0xd8]
fild dword [esp + 8]
fmul dword [ebp + 0xec]
fadd dword [esp + 0x10]
sub esp, 4
fstp dword [esp]
call fcn.00403708
mov dword [esp - 4], 0x41a00000
fmul dword [esp - 4]
mov dword [esp - 4], ebx
fild dword [esp - 4]
faddp st(1)
push eax
fistp dword [esp]
mov ebx, dword [esp + 0xc]
mov ebp, dword [0x56237c]
sal ebx, 2
push dword [ebp + ebx]
call fcn.0040d0c4
inc dword [esp + 4]
jmp 0x4027b0
jmp 0x402974
mov ebx, 3
cmp ebx, dword [esp]
jne 0x4028ec
mov dword [esp + 4], 1
lea ebp, [0x562250]
mov eax, dword [ebp + 0xe4]
cmp eax, dword [esp + 4]
jl 0x4028e7
fild dword [esp + 4]
fmul dword [ebp + 0xec]
fadd dword [esp + 0xc]
sub esp, 4
fstp dword [esp]
call fcn.00403708
mov dword [esp - 4], 0x42c80000
fmul dword [esp - 4]
mov dword [esp - 4], 0x43160000
fadd dword [esp - 4]
push eax
fistp dword [esp]
fild dword [esp + 8]
fmul dword [ebp + 0xec]
fadd dword [esp + 0x10]
sub esp, 4
fstp dword [esp]
call fcn.00403708
mov dword [esp - 4], 0x42200000
fmul dword [esp - 4]
fild dword [ebp + 0x1c]
mov dword [esp - 4], 0x40000000
fdiv dword [esp - 4]
faddp st(1)
push eax
fistp dword [esp]
push dword [ebp + 0xd8]
mov ebx, dword [esp + 0x10]
mov ebp, dword [0x56237c]
sal ebx, 2
push dword [ebp + ebx]
call fcn.0040cfa5
inc dword [esp + 4]
jmp 0x40283d
jmp 0x402974
mov ebx, 4
cmp ebx, dword [esp]
jne 0x402974
mov dword [esp + 4], 1
lea ebp, [0x562250]
mov eax, dword [ebp + 0xe4]
cmp eax, dword [esp + 4]
jl 0x402974
mov ebx, dword [ebp + 0x1c]
mov eax, ebx
mov ebx, 2
cdq
idiv ebx
mov ebx, eax
fild dword [esp + 4]
fmul dword [ebp + 0xec]
fadd dword [esp + 0xc]
sub esp, 4
fstp dword [esp]
call fcn.00403708
mov dword [esp - 4], 0x42200000
fmul dword [esp - 4]
mov dword [esp - 4], ebx
fild dword [esp - 4]
faddp st(1)
push eax
fistp dword [esp]
push dword [ebp + 0xd8]
mov ebx, dword [esp + 0xc]
mov ebp, dword [0x56237c]
sal ebx, 2
push dword [ebp + ebx]
call fcn.0040d0c4
inc dword [esp + 4]
jmp 0x4028fe
pop eax
jmp 0x402994
lea ebp, [0x562250]
push dword [ebp + 0xdc]
push dword [ebp + 0xd8]
push dword [ebp + 0xd4]
call fcn.0040ee50
cmp dword [0x562224], 0
je 0x4029a2
call fcn.0040d21e
lea ebp, [0x562250]
cmp dword [ebp + 0x4c], 0
je 0x4029bc
lea ebp, [0x562250]
push dword [ebp + 0x50]
call fcn.00407614
lea ebp, [0x562250]
cmp dword [ebp + 0x64], 0
je 0x4029d6
lea ebp, [0x562250]
push dword [ebp + 0x68]
call fcn.00407a68
lea ebp, [0x562250]
cmp dword [ebp + 0x7c], 0
je 0x402a53
lea ebp, [0x562250]
cmp dword [ebp + 0x84], 0
je 0x402a04
lea ebp, [0x562250]
push dword [ebp + 0x80]
call fcn.00407a68
jmp 0x402a53
push dword [0x55dc40]
push 1
push dword [0x55dc40]
lea ebp, [0x562250]
push dword [ebp + 0xf0]
call fcn.00407ec4
inc dword [0x55dc40]
push dword [ebp + 0x48]
mov ebx, dword [ebp + 0x18]
mov eax, ebx
mov ebx, 2
cdq
idiv ebx
mov ebx, eax
add ebx, 0x10
push ebx
push dword [ebp + 0x80]
call fcn.00407f2c
pop dword [0x55dc40]
lea ebp, [0x562250]
cmp dword [ebp + 0x8c], 0
je 0x402ad3
lea ebp, [0x562250]
cmp dword [ebp + 0x94], 0
je 0x402a84
lea ebp, [0x562250]
push dword [ebp + 0x90]
call fcn.00407614
jmp 0x402ad3
push dword [0x55dc40]
push 1
push dword [0x55dc40]
lea ebp, [0x562250]
push dword [ebp + 0xfc]
call fcn.00407ec4
inc dword [0x55dc40]
push dword [ebp + 0x44]
mov ebx, dword [ebp + 0x18]
mov eax, ebx
mov ebx, 2
cdq
idiv ebx
mov ebx, eax
add ebx, 8
push ebx
push dword [ebp + 0x90]
call fcn.00408220
pop dword [0x55dc40]
call fcn.0040ed50
lea ebp, [0x562250]
mov ebx, dword [ebp + 0x14]
cmp ebx, 2
jge 0x402af5
call fcn.0040b970
mov eax, 1
call fcn.005a33e0
push 1
call sub.USER32.dll_GetAsyncKeyState
and eax, eax
je 0x40255c
call fcn.00408494
push 1
call fcn.004084ac
lea ebp, [0x562250]
push dword [ebp + 0x50]
call fcn.0040859c
push dword [ebp + 0x68]
call fcn.00408734
push dword [ebp + 0x100]
call fcn.004088f4
push dword [ebp + 0x104]
call fcn.00408960
cmp dword [ebp + 0x108], 0
je 0x402b50
call fcn.004089cc
lea ebp, [0x562250]
push dword [ebp + 0xd4]
call fcn.0040ef70
and eax, eax
je 0x402b76
lea ebp, [0x562250]
push dword [ebp + 0xd4]
call fcn.0040d507
call fcn.00401177
push 0xffffffff
call fcn.00410050
mov eax, 0xfa
call fcn.005a33e0
call fcn.0040d851
jmp 0x402bb0