Function at 0x10025d60
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x818
mov eax, dword [0x1014a018]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebx]
fld dword [ecx + 0xc]
push esi
push edi
sub esp, 0x10
fstp dword [esp + 0xc]
mov byte [ebp - 0x805], 0
fld dword [ecx + 8]
fstp dword [esp + 8]
fld dword [ecx + 4]
fstp dword [esp + 4]
fld dword [ecx]
fstp dword [esp]
call fcn.10037e20
fld dword [ecx + 8]
push 0x7ff
fld qword [0x101407c8]
mov byte [ebp - 0x806], al
fmul st(1), st(0)
lea eax, [ebp - 0x804]
fld qword [0x1013f6d8]
push 0
push eax
fdiv st(2), st(0)
fxch st(2)
fstp dword [0x11921934]
fld dword [ecx + 0xc]
fmul st(1)
fdivrp st(2)
fxch st(1)
fstp dword [0x11921930]
fld dword [0xe7c3d4]
fdivr st(1)
fdiv dword [0x11921934]
fstp dword [0x1192192c]
fdiv dword [0xe7c3d8]
fdiv dword [0x11921930]
fstp dword [0x11921928]
fld dword [ecx + 8]
fadd dword [ecx]
fld dword [0xe7c3d4]
fadd st(0), st(0)
faddp st(1)
fstp dword [0x11921924]
call sub.MSVCR100.dll_memset
mov edx, dword [ebp + 8]
lea ecx, [ebp + 0xc]
push ecx
push edx
lea eax, [ebp - 0x804]
push 0x7ff
push eax
call dword [sym.imp.MSVCR100.dll_vsprintf_s]
add esp, 0x1c
cmp byte [ebp - 0x806], 0
je 0x10025f69
push 1
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x10025f06
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
movsx edx, word [ebx + 6]
add edx, dword [ebx + 8]
cmp edx, eax
ja 0x10025e87
mov al, byte [ebx + 4]
cmp al, 0x40
jae 0x10025e87
test al, al
setne al
add al, 0x40
mov byte [ebx + 4], al
call esi
mov dword [ebx + 8], eax
mov al, byte [ebx + 4]
cmp al, 1
je 0x10025ecc
cmp al, 0x40
je 0x10025ecc
fld dword [0x11921928]
sub esp, 0x28
fstp dword [esp + 0x24]
fld dword [0x1192192c]
fstp dword [esp + 0x20]
fld dword [0x10140310]
fst dword [esp + 0x1c]
fstp dword [esp + 0x18]
fld dword [0x10140814]
fstp dword [esp + 0x14]
fld dword [0x10140810]
jmp 0x10025fc8
fld dword [0x11921928]
sub esp, 0x28
fstp dword [esp + 0x24]
fld dword [0x1192192c]
fstp dword [esp + 0x20]
fld dword [0x10140310]
fst dword [esp + 0x1c]
fstp dword [esp + 0x18]
fld dword [0x1014080c]
fstp dword [esp + 0x14]
fld dword [0x10140808]
jmp 0x10025fc8
mov al, byte [ebx + 4]
cmp al, 0x40
jne 0x10025f13
mov byte [ebx + 4], 1
jmp 0x10025f1b
cmp al, 0x41
jne 0x10025f22
mov byte [ebx + 4], 0
mov byte [ebp - 0x805], 1
fld dword [0x11921928]
mov eax, dword [ebx]
sub esp, 0x28
cmp byte [ebx + 4], 1
fstp dword [esp + 0x24]
fld dword [0x1192192c]
fstp dword [esp + 0x20]
fld dword [0x10140310]
fst dword [esp + 0x1c]
fstp dword [esp + 0x18]
fld dword [0x10140804]
fstp dword [esp + 0x14]
jne 0x10025f61
fld dword [0x10140800]
jmp 0x10025fca
fld dword [0x101407fc]
jmp 0x10025fca
mov al, byte [ebx + 4]
cmp al, 0x40
jne 0x10025f76
mov byte [ebx + 4], 1
jmp 0x10025f7e
cmp al, 0x41
jne 0x10025f85
mov byte [ebx + 4], 0
mov byte [ebp - 0x805], 1
fld dword [0x11921928]
sub esp, 0x28
cmp byte [ebx + 4], 1
fstp dword [esp + 0x24]
fld dword [0x1192192c]
fstp dword [esp + 0x20]
fld dword [0x10140310]
fst dword [esp + 0x1c]
fstp dword [esp + 0x18]
fld dword [0x10140804]
fstp dword [esp + 0x14]
jne 0x10025fc2
fld dword [0x101407f8]
jmp 0x10025fc8
fld dword [0x101407f4]
mov eax, dword [ebx]
fstp dword [esp + 0x10]
fld dword [0x1013f6f0]
fst dword [esp + 0xc]
fstp dword [esp + 8]
fld dword [eax + 4]
fstp dword [esp + 4]
fld dword [eax]
fstp dword [esp]
push 0xf1008
call fcn.10025c00
lea edi, [ebp - 0x804]
lea esi, [ebp - 0x818]
call fcn.10037e90
mov edx, dword [ebx]
fld dword [edx + 4]
mov ecx, edi
push ecx
push 0
push 0
push 0
push 0xffffffffffffffff
call fcn.1012e5b0
fld dword [0x11921924]
push eax
call fcn.1012e5b0
push eax
mov eax, dword [0x116de538]
push eax
xor cl, cl
call fcn.1008a600
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x805]
add esp, 0x20
pop edi
xor ecx, ebp
pop esi
call fcn.1012db16
mov esp, ebp
pop ebp
ret