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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0xfc
push esi
mov dword [ebp - 4], ecx
lea ecx, [ebp - 0x5c]
call fcn.1003b400
lea ecx, [ebp - 0x2c]
call fcn.10039340
mov ecx, 0x10164164
call fcn.100384e0
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0xcc]
push eax
mov ecx, dword [ebp - 0x7c]
call fcn.100d1420
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0xdc], 0
je 0x1003b9fa
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 0xd8]
test eax, eax
jne 0x1003b9fa
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x5c], 0
jle 0x1003b9fa
mov edx, dword [ebp - 4]
mov ecx, dword [edx + 0xdc]
call fcn.100d2400
movzx eax, al
test eax, eax
je 0x1003b9fa
mov ecx, dword [ebp - 4]
mov dword [ecx + 0xdc], 0
mov edx, dword [ebp - 4]
mov byte [edx + 0xac], 0
mov eax, dword [ebp - 4]
mov byte [eax + 0xd8], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, dword [ebp - 4]
add eax, dword [ecx + 0x5c]
mov edx, dword [ebp - 4]
mov dword [edx + 0xd4], eax
mov eax, dword [ebp - 4]
movzx ecx, byte [eax + 0xd8]
test ecx, ecx
je 0x1003ba2c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [ebp - 4]
cmp dword [edx + 0xd4], eax
jg 0x1003ba25
mov eax, dword [ebp - 4]
mov byte [eax + 0xd8], 0
jmp 0x1003ba2c
xor eax, eax
jmp 0x1003c01d
mov ecx, dword [ebp - 4]
mov dword [ecx + 0xdc], 0
mov dword [ebp - 0x48], 0x64
movss xmm0, dword [0x100e1eec]
movss dword [ebp - 0x40], xmm0
xorps xmm0, xmm0
movss dword [ebp - 0x4c], xmm0
movss xmm0, dword [0x100e1eec]
movss dword [ebp - 0x3c], xmm0
movss xmm0, dword [0x100e1eec]
movss dword [ebp - 0x50], xmm0
mov ecx, 0x10164164
call fcn.100384e0
mov ecx, eax
call fcn.1003a9c0
mov ecx, eax
call fcn.1003b520
mov ecx, eax
call fcn.100d2650
movzx edx, al
test edx, edx
je 0x1003ba9e
mov dword [ebp - 0x30], 0x12
jmp 0x1003baa5
mov dword [ebp - 0x30], 8
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x80], eax
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x2c], 1
jne 0x1003babd
mov dword [ebp - 0x34], 0
jmp 0x1003bac6
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x40]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x64], ecx
mov edx, dword [ebp - 4]
cmp dword [edx + 0x2c], 1
jne 0x1003badd
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x38], eax
jmp 0x1003bae6
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 0x40]
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x1c], 1
jmp 0x1003bafe
mov ecx, dword [ebp - 0x1c]
add ecx, 1
mov dword [ebp - 0x1c], ecx
mov edx, dword [0x101640c4]
mov eax, dword [edx]
mov ecx, dword [0x101640c4]
mov edx, dword [eax + 0x50]
call edx
cmp dword [ebp - 0x1c], eax
jge 0x1003bfb6
xorps xmm0, xmm0
movss dword [ebp - 0xc], xmm0
mov eax, dword [0x101640cc]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
mov dword [ebp - 0x60], edx
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [0x101640cc]
call dword [ebp - 0x60]
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x10]
call fcn.100d2400
movzx ecx, al
test ecx, ecx
je 0x1003bb50
jmp 0x1003baf5
movzx edx, byte [0x101621f8]
test edx, edx
jne 0x1003bb81
mov ecx, dword [ebp - 0x10]
call fcn.1003ab80
mov esi, eax
mov ecx, 0x10164164
call fcn.100384e0
mov ecx, eax
call fcn.1003ab80
mov ecx, dword [esi]
cmp ecx, dword [eax]
jne 0x1003bb81
jmp 0x1003baf5
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x18], edx
jmp 0x1003bb92
mov eax, dword [ebp - 0x18]
add eax, 1
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
cmp ecx, dword [ebp - 0x68]
jg 0x1003bfb1
mov edx, dword [ebp - 0x18]
push edx
lea eax, [ebp - 0xd8]
push eax
mov ecx, dword [ebp - 0x10]
call fcn.100d14a0
push eax
lea ecx, [ebp - 0x2c]
call fcn.10039380
lea ecx, [ebp - 0x5c]
push ecx
lea edx, [ebp - 0xcc]
push edx
lea eax, [ebp - 0xe4]
push eax
lea ecx, [ebp - 0x2c]
call fcn.10039460
push eax
call fcn.10066640
add esp, 8
lea ecx, [ebp - 0x5c]
push ecx
call fcn.10065ad0
add esp, 4
lea edx, [ebp - 0x2c]
push edx
lea ecx, [ebp - 0xcc]
call fcn.10039700
fstp dword [ebp - 0x20]
mov eax, dword [ebp - 4]
cmp dword [eax + 0x34], 1
jne 0x1003bcb8
mov ecx, dword [ebx + 8]
add ecx, 0xc
mov dword [ebp - 0x6c], ecx
mov edx, dword [ebp - 4]
add edx, 0xc4
push edx
lea eax, [ebp - 0xf0]
push eax
mov ecx, dword [ebp - 0x6c]
call fcn.1003b5f0
mov ecx, dword [eax]
mov dword [ebp - 0x90], ecx
mov edx, dword [eax + 4]
mov dword [ebp - 0x8c], edx
mov eax, dword [eax + 8]
mov dword [ebp - 0x88], eax
mov ecx, dword [ebp - 0x5c]
mov dword [ebp - 0xa0], ecx
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x9c], edx
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x98], eax
sub esp, 0xc
mov ecx, esp
mov edx, dword [ebp - 0x90]
mov dword [ecx], edx
mov eax, dword [ebp - 0x8c]
mov dword [ecx + 4], eax
mov edx, dword [ebp - 0x88]
mov dword [ecx + 8], edx
sub esp, 0xc
mov eax, esp
mov ecx, dword [ebp - 0xa0]
mov dword [eax], ecx
mov edx, dword [ebp - 0x9c]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0x98]
mov dword [eax + 8], ecx
push ecx
movss xmm0, dword [ebp - 0x20]
movss dword [esp], xmm0
call fcn.1003c150
add esp, 0x1c
fstp dword [ebp - 0x14]
jmp 0x1003bd57
mov edx, dword [ebp - 0x5c]
mov dword [ebp - 0xb0], edx
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0xac], eax
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0xa8], ecx
mov edx, dword [ebx + 8]
add edx, 0xc
mov dword [ebp - 0x70], edx
mov eax, dword [ebp - 4]
add eax, 0xc4
push eax
lea ecx, [ebp - 0xfc]
push ecx
mov ecx, dword [ebp - 0x70]
call fcn.1003b5f0
mov edx, dword [eax]
mov dword [ebp - 0xc0], edx
mov ecx, dword [eax + 4]
mov dword [ebp - 0xbc], ecx
mov edx, dword [eax + 8]
mov dword [ebp - 0xb8], edx
sub esp, 0xc
mov eax, esp
mov ecx, dword [ebp - 0xb0]
mov dword [eax], ecx
mov edx, dword [ebp - 0xac]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0xa8]
mov dword [eax + 8], ecx
sub esp, 0xc
mov edx, esp
mov eax, dword [ebp - 0xc0]
mov dword [edx], eax
mov ecx, dword [ebp - 0xbc]
mov dword [edx + 4], ecx
mov eax, dword [ebp - 0xb8]
mov dword [edx + 8], eax
mov ecx, dword [ebp - 4]
call fcn.1003c0b0
fstp dword [ebp - 0x14]
mov ecx, dword [ebp - 4]
call fcn.1003c030
fstp dword [ebp - 0x74]
movss xmm0, dword [ebp - 0x14]
comiss xmm0, dword [ebp - 0x74]
jbe 0x1003bd72
jmp 0x1003bb89
mov ecx, 0x10164164
call fcn.100384e0
mov dword [ebp - 0x78], eax
lea ecx, [ebp - 0x2c]
push ecx
mov edx, dword [ebp - 0x10]
push edx
mov ecx, dword [ebp - 0x78]
call fcn.100d1210
movzx eax, al
test eax, eax
jne 0x1003bddb
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + 0x14]
test edx, edx
je 0x1003bdb4
mov eax, dword [0x10162204]
push eax
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
test ecx, ecx
je 0x1003bdb9
jmp 0x1003bb89
lea edx, [ebp - 0x2c]
push edx
call fcn.1003ecf0
add esp, 4
fstp dword [ebp - 0xc]
mov eax, dword [ebp - 4]
cvtsi2ss xmm0, dword [eax + 0x70]
comiss xmm0, dword [ebp - 0xc]
jbe 0x1003bddb
jmp 0x1003bb89
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x30], 1
je 0x1003bded
mov edx, dword [ebp - 4]
cmp dword [edx + 0x30], 2
jne 0x1003be0e
movss xmm0, dword [ebp - 0xc]
ucomiss xmm0, dword [0x100de864]
lahf
test ah, 0x44
jp 0x1003be0e
lea eax, [ebp - 0x2c]
push eax
call fcn.1003ecf0
add esp, 4
fstp dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
call fcn.1003e370
cvtsi2ss xmm0, dword [eax]
subss xmm0, dword [ebp - 0xc]
cvttss2si ecx, xmm0
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 2]
test eax, eax
je 0x1003be7a
sub esp, 0xc
mov ecx, esp
mov edx, dword [ebp - 0x2c]
mov dword [ecx], edx
mov eax, dword [ebp - 0x28]
mov dword [ecx + 4], eax
mov edx, dword [ebp - 0x24]
mov dword [ecx + 8], edx
sub esp, 0xc
mov eax, esp
mov ecx, dword [ebp - 0xcc]
mov dword [eax], ecx
mov edx, dword [ebp - 0xc8]
mov dword [eax + 4], edx
mov ecx, dword [ebp - 0xc4]
mov dword [eax + 8], ecx
mov ecx, dword [ebp - 4]
call fcn.1003ca40
movzx edx, al
test edx, edx
je 0x1003be7a
jmp 0x1003bb89
mov ecx, 0x10164164
call fcn.100384e0
mov ecx, eax
call fcn.1003e1b0
mov eax, dword [eax]
and eax, 1
mov byte [ebp - 5], al
mov ecx, dword [ebp - 4]
movzx edx, byte [ecx + 5]
test edx, edx
je 0x1003beab
movzx eax, byte [ebp - 5]
test eax, eax
jne 0x1003beab
jmp 0x1003bb89
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x2c], 1
jne 0x1003bec4
movss xmm0, dword [ebp - 0x14]
comiss xmm0, dword [ebp - 0x3c]
jbe 0x1003bec4
jmp 0x1003bb89
movss xmm0, dword [ebp - 0x14]
movss dword [ebp - 0x3c], xmm0
mov edx, dword [ebp - 4]
cmp dword [edx + 0x30], 0
jne 0x1003bee2
movss xmm0, dword [ebp - 0x40]
comiss xmm0, dword [ebp - 0x14]
ja 0x1003bf1b
mov eax, dword [ebp - 4]
cmp dword [eax + 0x30], 1
jne 0x1003bef3
mov ecx, dword [ebp - 0x48]
cmp ecx, dword [ebp - 0x44]
jg 0x1003bf1b
mov edx, dword [ebp - 4]
cmp dword [edx + 0x30], 2
jne 0x1003bf07
movss xmm0, dword [ebp - 0xc]
comiss xmm0, dword [ebp - 0x4c]
ja 0x1003bf1b
mov eax, dword [ebp - 4]
cmp dword [eax + 0x30], 3
jne 0x1003bf53
movss xmm0, dword [ebp - 0x50]
comiss xmm0, dword [ebp - 0x20]
jbe 0x1003bf53
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebp - 0x18]
mov dword [ecx], edx
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x10]
mov dword [eax + 0xdc], ecx
movss xmm0, dword [ebp - 0x14]
movss dword [ebp - 0x40], xmm0
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x48], edx
movss xmm0, dword [ebp - 0xc]
movss dword [ebp - 0x4c], xmm0
movss xmm0, dword [ebp - 0x20]
movss dword [ebp - 0x50], xmm0
mov eax, dword [ebp - 4]
movzx ecx, byte [eax + 0x16]
test ecx, ecx
je 0x1003bfac
mov edx, dword [ebp - 4]
cvtsi2ss xmm0, dword [edx + 0x94]
push ecx
movss dword [esp], xmm0
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [ebx + 8]
add ecx, 0xc
sub esp, 0xc
mov edx, esp
mov eax, dword [ecx]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov ecx, dword [ecx + 8]
mov dword [edx + 8], ecx
mov ecx, dword [ebp - 4]
call fcn.1003c310
movzx edx, al
test edx, edx
je 0x1003bfac
mov eax, dword [ebx + 8]
mov ecx, dword [eax + 0x30]
or ecx, 1
mov edx, dword [ebx + 8]
mov dword [edx + 0x30], ecx
jmp 0x1003bb89
jmp 0x1003baf5
mov eax, dword [ebp - 4]
cmp dword [eax + 0xdc], 0
je 0x1003c010
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0xdc]
call fcn.100d2510
movzx edx, al
test edx, edx
je 0x1003c010
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0xdc]
call fcn.100d21a0
movzx ecx, al
test ecx, ecx
je 0x1003c010
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0xdc]
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx + 0xdc]
add ecx, 8
mov edx, dword [eax + 8]
mov eax, dword [edx + 0x24]
call eax
movzx ecx, al
test ecx, ecx
je 0x1003c014
xor eax, eax
jmp 0x1003c01d
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0xdc]
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8