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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
mov eax, dword [0x1017f064]
xor eax, esp
mov dword [esp + 0xb8], eax
cmp byte [0x10182dd6], 0
push ebx
push esi
push edi
je 0x10046b85
mov dword [esp + 0xc], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [esp + 0xc]
mov ecx, eax
call fcn.1003d4f0
push dword [esp + 0xc]
call fcn.10039100
add esp, 4
test al, al
je 0x10046b85
mov dword [esp + 0x10], 0
mov dword [esp + 0x1c], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [esp + 0x1c]
mov ecx, eax
call fcn.1003d4f0
push dword [esp + 0x1c]
lea ecx, [esp + 0x14]
call fcn.10028060
mov eax, dword [esp + 0x14]
add esp, 4
mov dword [0x10182ed0], eax
push eax
call fcn.1003df00
add esp, 4
test al, al
je 0x10046bcc
push dword [0x10182ed4]
call fcn.10045280
mov ebx, dword [sym.imp.ScriptHook.dll_private:_static_void___cdecl_NativeInvoke::SpeedyInvoke_class_NativeContext___unsigned_int_]
add esp, 4
test al, al
je 0x1004613c
push dword [0x10182ed8]
call fcn.10045280
add esp, 4
test al, al
jne 0x100469be
push dword [0x10182ec8]
call fcn.100476f0
add esp, 4
test al, al
jne 0x100461c3
push ecx
mov edx, 0x10182ec8
xorps xmm3, xmm3
xorps xmm2, xmm2
xorps xmm1, xmm1
mov ecx, 0xb00abe6d
call fcn.10041850
add esp, 4
push dword [0x10182ec8]
call fcn.10047790
add esp, 4
xor cl, cl
push dword [0x10182ec8]
call fcn.10028c50
mov dword [esp], 0
xorps xmm3, xmm3
sub esp, 0x10
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
push dword [esp + 0x24]
push dword [0x10182ec8]
call fcn.10041670
add esp, 0x1c
xor edi, edi
lea eax, [esp + 0xc]
xorps xmm3, xmm3
lea edx, [esp + 0x18]
xorps xmm2, xmm2
lea ecx, [esp + 0x14]
push eax
push dword [esp + 0x14]
test edi, edi
jne 0x100461ea
movss xmm1, dword [0x10176f84]
jmp 0x100461f2
movss xmm1, dword [0x10177194]
call fcn.100282f0
movss xmm0, dword [esp + 0x1c]
lea eax, [esp + 0x88]
add esp, 8
movss dword [esp + 0x80], xmm0
movss xmm0, dword [esp + 0x18]
lea esi, [edi*4 + 0x10182ed4]
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x20]
movss dword [esp + 0x84], xmm0
movss xmm0, dword [esp + 0xc]
push 0xe71ede84
push eax
mov dword [esp + 0x34], 0
movss dword [esp + 0x90], xmm0
mov dword [esp + 0x94], esi
mov dword [esp + 0x2c], 4
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10046299
nop dword [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046270
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0x5edbf9ed
push eax
mov dword [esp + 0x8c], 0x64
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x1004630c
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x100462e3
push dword [esi]
xor cl, cl
call fcn.1002a820
add esp, 4
xor cl, cl
push dword [esi]
call fcn.10027930
lea eax, [esp + 0x84]
mov dword [esp + 0x88], 0
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xa7b69843
push eax
mov dword [esp + 0x34], 0
mov byte [esp + 0x8c], 1
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x100463a9
nop word [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046380
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xe0fa2400
push eax
mov dword [esp + 0x8c], 0x43480000
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x1004641c
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x100463f3
lea eax, [esp + 0x80]
mov dword [esp + 0x84], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xe9b97a2b
push eax
mov dword [esp + 0x34], 0
mov byte [esp + 0x8c], 1
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10046499
nop
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046470
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xd0837ecb
push eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x1004650c
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x100464e3
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xa163a070
push eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10046589
nop word [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046560
push dword [esi]
xor cl, cl
call fcn.100279e0
add esp, 4
mov cl, 1
push dword [esi]
call fcn.10027740
lea eax, [esp + 0x84]
mov dword [esp + 0x88], 0
add esp, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xbf7c253d
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], 0
push eax
mov dword [esp + 0x34], 0
mov byte [esp + 0x8c], 1
mov byte [esp + 0x90], 1
mov byte [esp + 0x94], 1
mov byte [esp + 0x98], 1
mov byte [esp + 0x9c], 1
mov dword [esp + 0x2c], 6
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10046669
nop
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046640
lea eax, [esp + 0x80]
mov dword [esp + 0x84], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0x594267
push eax
mov dword [esp + 0x34], 0
mov byte [esp + 0x8c], 1
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x100466e9
nop dword [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x100466c0
lea eax, [esp + 0x80]
mov dword [esp + 0x84], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0x6b1f6703
push eax
mov dword [esp + 0x34], 0
mov byte [esp + 0x8c], 1
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10046769
nop dword [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046740
lea eax, [esp + 0x80]
mov dword [esp + 0x84], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xf708995b
push eax
mov dword [esp + 0x34], 0
mov byte [esp + 0x8c], 1
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x100467e9
nop dword [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x100467c0
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0x11d93da1
push eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x1004685c
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046833
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0xef821257
push eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x100468d9
nop word [eax + eax]
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x100468b0
lea eax, [esp + 0x80]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
push 0x45f69ac1
push eax
mov dword [esp + 0x8c], 0
mov dword [esp + 0x2c], 2
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x1004694c
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046923
mov edx, 1
push 0
push dword [esi]
lea ecx, [edx + 0x11]
call fcn.1003dab0
add esp, 8
sub esp, 0x14
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
push dword [0x10182ec8]
push dword [esi]
test edi, edi
jne 0x100469a4
movss xmm3, dword [0x10176f80]
call fcn.100453e0
add esp, 0x1c
inc edi
jmp 0x100461c5
movss xmm3, dword [0x10177190]
call fcn.100453e0
inc edi
add esp, 0x1c
cmp edi, 1
jle 0x100461c5
mov esi, 0x10182ed4
push dword [esi]
call fcn.10045280
add esp, 4
test al, al
je 0x10046a15
mov edx, 1
push 0
push dword [esi]
lea ecx, [edx + 0x11]
call fcn.1003dab0
push dword [esi]
mov ecx, 0x12
call fcn.1003dc00
add esp, 0xc
mov edx, 1
push dword [esi]
lea ecx, [edx + 0x11]
call fcn.10047000
add esp, 4
mov edx, 1
push dword [esi]
lea ecx, [edx + 0x11]
call fcn.10046f50
add esp, 4
add esi, 4
cmp esi, 0x10182ed8
jle 0x100469c3
movss xmm2, dword [0x10177060]
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x14]
lea edx, [esp + 0x20]
xorps xmm3, xmm3
lea ecx, [esp + 0x1c]
xorps xmm1, xmm1
call fcn.100282f0
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
add esp, 8
push 2
call esi
test ax, ax
mov al, byte [0x101829f4]
jns 0x10046a6a
test al, al
jne 0x10046a6a
mov word [0x101829f4], 1
jmp 0x10046a92
cmp al, 1
jne 0x10046a80
push 2
call esi
test ax, ax
js 0x10046a80
mov word [0x101829f4], 0x100
mov edx, 5
call fcn.100296f0
test al, al
je 0x10046bcc
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov ecx, dword [0x101815bc]
add ecx, 0x96
cmp ecx, eax
jae 0x10046bcc
mov esi, 0x10182ed4
push dword [esi]
call fcn.10045280
add esp, 4
test al, al
je 0x10046b5a
movss xmm0, dword [esp + 0x14]
lea eax, [esp + 0x80]
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov eax, dword [esi]
movss dword [esp + 0x84], xmm0
movss xmm0, dword [esp + 0x18]
mov dword [esp + 0x80], eax
lea eax, [esp + 0x20]
movss dword [esp + 0x88], xmm0
movss xmm0, dword [esp + 0xc]
push 0xb2b2a16e
push eax
mov dword [esp + 0x34], 0
movss dword [esp + 0x94], xmm0
mov dword [esp + 0x2c], 4
call ebx
mov eax, dword [esp + 0x34]
add esp, 8
test eax, eax
je 0x10046b5a
lea edx, [eax - 1]
mov dword [esp + 0x2c], edx
mov ecx, dword [esp + edx*4 + 0x30]
add edx, edx
mov eax, dword [esp + edx*8 + 0x40]
mov dword [ecx], eax
mov eax, dword [esp + edx*8 + 0x44]
mov dword [ecx + 4], eax
mov eax, dword [esp + edx*8 + 0x48]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x10046b31
add esi, 4
cmp esi, 0x10182ed8
jle 0x10046ab3
call edi
mov dword [0x101815bc], eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xb8]
xor ecx, esp
call fcn.1004955b
mov esp, ebp
pop ebp
ret
mov esi, 0x10182ed4
nop word [eax + eax]
push dword [esi]
call fcn.10045280
add esp, 4
test al, al
je 0x10046ba5
mov ecx, esi
call fcn.10040d40
add esi, 4
cmp esi, 0x10182ed8
jle 0x10046b90
push dword [0x10182ec8]
call fcn.100476f0
add esp, 4
test al, al
je 0x10046bcc
mov ecx, 0x10182ec8
call fcn.10041910
mov ecx, dword [esp + 0xc4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1004955b
mov esp, ebp
pop ebp
ret