Function at 0x41d240
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x158
mov al, byte [0x4b6318]
push ebx
push ebp
push esi
test al, 1
push edi
mov dword [esp + 0x34], ecx
jne 0x41d279
mov dl, al
mov ecx, 0x4b60f8
or dl, 1
mov byte [0x4b6318], dl
call fcn.00407df0
push 0x41dc00
call fcn.0047e376
add esp, 4
mov al, byte [0x4b6318]
test al, 2
jne 0x41d2a4
mov dl, al
mov ecx, 0x4b6258
or dl, 2
mov byte [0x4b6318], dl
call fcn.00407df0
push 0x41dbf0
call fcn.0047e376
add esp, 4
mov cl, byte [0x4b6318]
mov al, 4
test al, cl
jne 0x41d2d1
mov dl, cl
mov ecx, 0x4b64a8
or dl, al
mov byte [0x4b6318], dl
call fcn.00407df0
push 0x41dbe0
call fcn.0047e376
add esp, 4
mov eax, dword [0x4b656c]
mov ebx, dword [0x4b6568]
push 0x10
mov dword [esp + 0x24], eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, 0x80
jne 0x41d34e
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test ah, 0x80
jne 0x41d34e
mov eax, dword [0x495b30]
test eax, eax
jl 0x41db9a
mov al, byte [0x495f4c]
test al, al
jne 0x41d317
mov byte [0x495f4d], 1
mov ecx, dword [0x49d720]
call fcn.0040e330
mov eax, dword [0x495b30]
test eax, eax
jne 0x41d338
mov ecx, dword [0x49d720]
mov dword [ecx], eax
mov eax, dword [0x495b30]
mov byte [0x4b64ee], 0
mov byte [0x4b62f0], 1
lea eax, [eax + eax*8]
jmp 0x41db7a
mov al, byte [0x4b6570]
test al, al
jne 0x41d3b6
mov al, byte [0x4b64ee]
test al, al
jne 0x41d3b6
mov eax, dword [0x495b30]
test eax, eax
jl 0x41d37b
mov cl, byte [0x4b62f8]
lea eax, [eax + eax*8]
shl eax, 5
mov byte [eax + 0x49f900], cl
call fcn.00417270
mov ebp, eax
mov ecx, 0x48
mov edi, 0x4b6348
mov dword [0x495b30], ebp
lea eax, [ebp + ebp*8]
shl eax, 5
lea esi, [eax + 0x49f7e8]
rep movsd dword es:[edi], dword [esi]
mov dl, byte [0x4b6460]
mov byte [eax + 0x49f900], 1
mov byte [0x4b62f8], dl
jmp 0x41d3bc
mov ebp, dword [0x495b30]
test ebp, ebp
jl 0x41d47d
mov eax, dword [0x51c08c]
mov dword [esp + 0x2c], 0
and eax, 0x7ff
mov dword [esp + 0x28], eax
fild qword [esp + 0x28]
fmul qword [0x491628]
fsubr qword [0x491620]
fabs
fadd dword [0x491648]
fmul dword [0x49143c]
fld dword [0x49143c]
fsub st(1)
fild dword [0x4957c8]
fmul st(1)
fild dword [0x4957d8]
fmul st(3)
faddp st(1)
fmul dword [0x491438]
call fcn.0044eaa0
fild dword [0x4957cc]
mov esi, eax
fmul st(1)
fild dword [0x4957dc]
fmul st(3)
faddp st(1)
fmul dword [0x491438]
call fcn.0044eaa0
fild dword [0x4957d0]
mov edi, eax
fmul st(1)
fild dword [0x4957e0]
fmul st(3)
faddp st(1)
fmul dword [0x491438]
call fcn.0044eaa0
lea ecx, [ebp + ebp*8]
mov word [0x4b6530], 2
shl ecx, 5
add ecx, 0x49f8f4
fstp st(0)
mov dword [ecx], esi
fstp st(0)
mov dword [ecx + 4], edi
mov dword [ecx + 8], eax
mov al, byte [0x4b6570]
test al, al
je 0x41db3d
test ebp, ebp
jl 0x41db9a
mov eax, dword [esp + 0x34]
lea edx, [esp + 0x3c]
lea ebp, [ebp + ebp*8]
push edx
mov ecx, dword [eax]
or ecx, 0x8000000
mov dword [eax], ecx
mov eax, dword [esp + 0x24]
mov ecx, dword [0x4fdf68]
push eax
shl ebp, 5
push ebx
add ebp, 0x49f7e8
call fcn.00433b00
test eax, eax
je 0x41d713
fld dword [0x4b6350]
fcomp dword [esp + 0x3c]
fnstsw ax
test ah, 0x40
je 0x41d4f7
fld dword [0x4b6354]
fcomp dword [esp + 0x40]
fnstsw ax
test ah, 0x40
je 0x41d4f7
fld dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
jmp 0x41d552
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
sub esp, 0xc
mov edx, esp
sub esp, 0xc
mov dword [edx], eax
mov eax, dword [esp + 0x5c]
mov dword [edx + 4], ecx
mov ecx, esp
mov dword [edx + 8], eax
mov edx, dword [0x4b6350]
mov eax, dword [0x4b6354]
mov dword [ecx], edx
mov edx, dword [0x4b6358]
mov dword [ecx + 4], eax
lea eax, [esp + 0x34]
push eax
mov dword [ecx + 8], edx
call fcn.0044a330
mov ecx, dword [eax]
mov dword [esp + 0x10], ecx
mov edx, dword [eax + 4]
fld dword [esp + 0x10]
mov eax, dword [eax + 8]
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
mov ecx, edx
fstp dword [esp + 0x3c]
mov edx, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x40], edx
lea edx, [ebp + 8]
mov dword [esp + 0x44], 0x40a00000
mov eax, edx
mov dword [eax], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x44]
mov dword [eax + 8], ecx
mov eax, dword [0x4fdf68]
fld dword [esp + 0x3c]
mov ecx, eax
mov esi, dword [ecx]
mov dword [esp + 0x10], esi
fsub dword [esp + 0x10]
mov esi, dword [ecx + 4]
fld dword [esp + 0x40]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x14], esi
fsub dword [esp + 0x14]
fld dword [esp + 0x44]
mov dword [esp + 0x18], ecx
fsub dword [esp + 0x18]
fld st(0)
fmul dword [eax + 0x2c]
fld st(2)
fmul dword [eax + 0x28]
faddp st(1)
fld st(3)
fmul dword [eax + 0x24]
faddp st(1)
fstp dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
fld st(0)
fmul dword [eax + 0x14]
fld st(2)
fmul dword [eax + 0x10]
faddp st(1)
fld st(3)
fmul dword [eax + 0xc]
faddp st(1)
fstp dword [esp + 0x20]
fmul dword [eax + 0x20]
fxch st(1)
fmul dword [eax + 0x1c]
faddp st(1)
fxch st(1)
fmul dword [eax + 0x18]
lea eax, [ebp + 0x14]
faddp st(1)
mov dword [eax], ecx
mov ecx, dword [esp + 0x20]
fstp dword [esp + 0x24]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 8], ecx
mov eax, dword [0x4fdf68]
fld dword [eax + 0x44]
fmul dword [eax + 0x3c]
fdiv dword [esp + 0x20]
fld st(0)
fmul dword [esp + 0x24]
fsubr dword [0x491458]
fstp dword [esp + 0x38]
mov ecx, dword [esp + 0x38]
fmul dword [esp + 0x1c]
fadd dword [0x49145c]
fstp dword [esp + 0x34]
mov eax, dword [esp + 0x34]
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x24], ecx
mov ecx, dword [0x4fdf68]
lea eax, [ecx + 0x18]
mov esi, dword [ecx + 0x18]
mov dword [esp + 0x10], esi
mov esi, dword [eax + 4]
fld dword [esp + 0x10]
mov eax, dword [eax + 8]
mov dword [esp + 0x14], esi
mov dword [esp + 0x18], eax
mov eax, dword [edx]
mov dword [esp + 0x1c], eax
mov eax, dword [edx + 4]
fadd dword [esp + 0x1c]
mov edx, dword [edx + 8]
mov dword [esp + 0x20], eax
sub esp, 0xc
mov dword [esp + 0x30], edx
mov eax, esp
fstp dword [esp + 0x34]
fld dword [esp + 0x20]
fadd dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov dword [eax], edx
fstp dword [esp + 0x38]
fld dword [esp + 0x24]
fadd dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov dword [eax + 4], edx
fstp dword [esp + 0x3c]
mov edx, dword [esp + 0x3c]
mov dword [eax + 8], edx
lea eax, [esp + 0x28]
push eax
call fcn.00433a40
mov ecx, dword [eax]
mov dword [esp + 0x34], ecx
mov edx, dword [eax + 4]
mov byte [ebp], 0
mov dword [esp + 0x38], edx
fld dword [esp + 0x38]
fsub dword [ebp + 0x24]
fabs
fst dword [ebp + 0x88]
fadd st(0), st(0)
fstp dword [ebp + 0x8c]
mov eax, dword [0x495b30]
test eax, eax
jl 0x41d713
cmp eax, 0x10
jge 0x41d713
lea eax, [eax + eax*4]
mov byte [eax*8 + 0x4b0d74], 0
mov eax, dword [0x495b30]
lea ecx, [eax + eax*4]
mov byte [ecx*8 + 0x4b0a7c], 0
mov ecx, 0x48
mov esi, ebp
lea edi, [esp + 0x48]
lea edx, [ebp + 8]
rep movsd dword es:[edi], dword [esi]
mov esi, edx
mov eax, dword [esi]
mov dword [esp + 0x10], eax
mov ecx, dword [esi + 4]
mov edi, ecx
mov dword [esp + 0x14], ecx
mov esi, dword [esi + 8]
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x18], 0x3f800000
mov esi, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], eax
mov ecx, 0x49f7f0
fld dword [esp + 0x10]
fsub dword [ecx]
fld st(0)
fmulp st(1)
fcom dword [0x491484]
fnstsw ax
test ah, 0x41
je 0x41d830
fld dword [esp + 0x14]
fsub dword [ecx + 4]
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
fcom dword [0x491484]
fnstsw ax
test ah, 0x41
je 0x41d830
fld dword [0x491434]
fsub dword [ecx + 8]
fld st(0)
fmul st(1)
fadd st(2)
fcomp dword [0x491484]
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
je 0x41d832
mov eax, edx
mov esi, dword [eax]
mov dword [esp + 0x1c], esi
fld dword [esp + 0x1c]
fsub dword [ecx]
mov edi, dword [eax + 4]
mov dword [esp + 0x20], edi
mov eax, dword [eax + 8]
fld st(0)
mov dword [esp + 0x24], eax
fmulp st(1)
fld st(0)
fcom dword [0x491484]
fnstsw ax
test ah, 0x41
jne 0x41d7f6
fstp st(0)
fld dword [esp + 0x24]
fsub dword [0x491630]
fstp dword [esp + 0x24]
jmp 0x41d7d5
fld dword [esp + 0x20]
fsub dword [ecx + 4]
fld st(0)
fmul st(1)
faddp st(2)
fstp st(0)
fcom dword [0x491484]
fnstsw ax
test ah, 0x41
je 0x41d7e4
fld dword [esp + 0x24]
fsub dword [ecx + 8]
fld st(0)
fmul st(1)
fadd st(2)
fcomp dword [0x491484]
fnstsw ax
fstp st(0)
test ah, 0x41
fstp st(0)
je 0x41d7e6
fstp st(0)
add ecx, 0x120
cmp ecx, 0x4a09f0
jne 0x41d75a
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x50], esi
fld dword [esp + 0x1c]
mov dword [esp + 0x58], ecx
mov ecx, dword [0x4fdf68]
mov edx, ecx
mov dword [esp + 0x54], edi
mov eax, dword [edx]
mov dword [esp + 0x10], eax
fsub dword [esp + 0x10]
mov eax, dword [edx + 4]
fld dword [esp + 0x20]
mov edx, dword [edx + 8]
mov dword [esp + 0x14], eax
fsub dword [esp + 0x14]
fld dword [esp + 0x24]
mov dword [esp + 0x18], edx
fsub dword [esp + 0x18]
fld st(0)
fmul dword [ecx + 0x2c]
fld st(2)
fmul dword [ecx + 0x28]
faddp st(1)
fld st(3)
fmul dword [ecx + 0x24]
faddp st(1)
fstp dword [esp + 0x10]
mov eax, dword [esp + 0x10]
fld st(0)
fmul dword [ecx + 0x14]
fld st(2)
fmul dword [ecx + 0x10]
faddp st(1)
fld st(3)
fmul dword [ecx + 0xc]
faddp st(1)
fstp dword [esp + 0x14]
mov edx, dword [esp + 0x14]
fmul dword [ecx + 0x20]
fxch st(1)
fmul dword [ecx + 0x1c]
faddp st(1)
fxch st(1)
fmul dword [ecx + 0x18]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
faddp st(1)
fstp dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x64], eax
fld dword [ecx + 0x44]
fmul dword [ecx + 0x3c]
fdiv dword [esp + 0x14]
fld st(0)
fmul dword [esp + 0x18]
fsubr dword [0x491458]
fstp dword [esp + 0x2c]
mov eax, dword [esp + 0x2c]
fmul dword [esp + 0x10]
mov dword [esp + 0x6c], eax
fadd dword [0x49145c]
fstp dword [esp + 0x28]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x68], edx
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx + 0x1c]
mov dword [esp + 0x10], edx
fld dword [esp + 0x10]
fadd dword [esp + 0x1c]
mov edx, dword [ecx + 0x20]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
fstp dword [esp + 0x28]
fld dword [esp + 0x14]
fadd dword [esp + 0x20]
fstp dword [esp + 0x2c]
fld dword [esp + 0x18]
fadd dword [esp + 0x24]
mov edx, dword [esp + 0x28]
sub esp, 0xc
fstp dword [esp + 0x3c]
mov eax, esp
mov dword [eax], edx
mov edx, dword [esp + 0x38]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x3c]
mov dword [eax + 8], edx
lea eax, [esp + 0x28]
push eax
call fcn.00433a40
mov ecx, dword [eax]
push 0x4b64a8
mov dword [esp + 0x38], ecx
mov edx, dword [eax + 4]
mov eax, dword [0x495b30]
mov dword [esp + 0x3c], edx
fld dword [esp + 0x3c]
fsub dword [esp + 0x70]
lea eax, [eax + eax*8]
shl eax, 5
mov ecx, dword [eax + 0x49f8d4]
fabs
fst dword [esp + 0xd4]
fadd st(0), st(0)
cmp ecx, 3
fstp dword [esp + 0xd8]
jne 0x41d9f9
mov edx, dword [0x4fdf68]
push 0
push 0x4958a0
lea ecx, [esp + 0x54]
call fcn.00455c20
mov eax, dword [0x495b30]
mov edx, dword [0x4fdf68]
push 0x4b60f8
push 0
lea ecx, [eax + eax*8]
push 0x4958a0
shl ecx, 5
add ecx, 0x49f7e8
call fcn.00455c20
jmp 0x41da33
mov edx, dword [0x4fdf68]
push 0x4958a0
lea ecx, [esp + 0x50]
call fcn.00447b60
mov eax, dword [0x495b30]
mov edx, dword [0x4fdf68]
push 0x4b60f8
push 0x4958a0
lea ecx, [eax + eax*8]
shl ecx, 5
add ecx, 0x49f7e8
call fcn.00447b60
mov eax, dword [0x495b30]
mov edx, dword [0x4fdf68]
push 0x4b6258
push 0x4958a0
lea ecx, [eax + eax*8]
shl ecx, 5
add ecx, 0x49f7e8
call fcn.004590a0
mov eax, dword [0x51c08c]
mov dword [esp + 0x2c], 0
and eax, 0x7ff
mov edx, dword [0x4b64b0]
mov dword [esp + 0x28], eax
push 1
fild qword [esp + 0x2c]
push 0
push 0
push ecx
mov ecx, dword [0x4b64b4]
fmul qword [0x491628]
mov byte [0x4b610c], 1
mov byte [0x4b626c], 1
mov byte [0x4b64bc], 1
fsubr qword [0x491620]
fabs
fadd dword [0x491648]
fstp dword [esp]
push ecx
push edx
mov ecx, 0x4b64a8
call fcn.00407f60
mov eax, dword [0x4b6104]
mov ecx, dword [0x4b6100]
push 1
push 0
push 0
push 0x3f800000
push eax
push ecx
mov ecx, 0x4b60f8
call fcn.00407f60
mov edx, dword [0x4957c8]
mov eax, dword [0x4957cc]
mov ecx, dword [0x4957d0]
push 1
mov dword [0x4958b0], edx
mov edx, dword [0x4b6264]
push 0
mov dword [0x4958b4], eax
mov eax, dword [0x4b6260]
push 0
push 0x3f800000
mov dword [0x4958b8], ecx
push edx
push eax
mov ecx, 0x4b6258
call fcn.00407f60
mov byte [0x495f4d], 0
mov byte [0x4b64ee], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x158
ret
mov al, byte [0x4b64ee]
test al, al
je 0x41db9a
mov al, byte [0x495f4c]
test al, al
jne 0x41db56
mov byte [0x495f4d], 1
test ebp, ebp
jne 0x41db68
mov ecx, dword [0x49d720]
mov dword [ecx], ebp
mov ebp, dword [0x495b30]
mov byte [0x4b64ee], 0
mov byte [0x4b62f0], 1
lea eax, [ebp + ebp*8]
mov dl, byte [0x4b62f8]
mov dword [0x495b30], 0xffffffff
shl eax, 5
mov byte [eax + 0x49f900], dl
mov byte [eax + 0x49f7e8], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x158
ret