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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x1017f064]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x101829cf], 0
je 0x1000279b
cmp byte [0x10182d45], 0
je 0x100027a0
cmp byte [0x101829ce], 0
jne 0x100027a0
call fcn.1001c6d0
mov dword [ebp - 0x24], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x24]
mov ecx, eax
call fcn.1003d4f0
push 0x10182c90
push dword [ebp - 0x24]
mov edx, 0x10182c64
mov ecx, 0x10182c70
call fcn.100267d0
mov dword [ebp - 0x24], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x24]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x24]
mov ecx, 0x10182c8c
call fcn.10026a60
add esp, 0xc
cmp byte [0x10182c78], 0
je 0x10002824
call fcn.10025be0
xor edx, edx
mov ecx, eax
call fcn.10025a00
call fcn.10025be0
mov ecx, eax
call fcn.10025aa0
push ebx
push esi
push edi
call fcn.10025be0
cmp byte [0x10182dde], 0
mov esi, eax
mov dword [ebp - 0x24], 0
je 0x100028e8
mov dword [ebp - 0x2c], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x2c]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x2c]
call fcn.10048050
add esp, 4
test al, al
je 0x100028e8
lea edx, [ebp - 0x24]
mov ecx, esi
call fcn.1003d4f0
push dword [ebp - 0x24]
lea ecx, [ebp - 0x2c]
call fcn.10026c40
mov ecx, dword [ebp - 0x2c]
add esp, 4
lea eax, [ecx - 4]
cmp eax, 0x20
ja case.0x10002898.6
movzx eax, byte [eax + 0x10003f3c]
jmp dword [eax*4 + 0x10003f34]
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
call fcn.10047fa0
add esp, 4
jmp 0x100028e8
push dword [ebp - 0x24]
lea edx, [ebp - 0x20]
call fcn.10026ce0
push dword [ebp - 0x24]
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x2c]
call fcn.10047000
add esp, 8
cmp byte [0x10182df6], 0
je 0x10002901
lea ecx, [ebp - 0x20]
call fcn.100399a0
mov ecx, dword [ebp - 0x20]
call fcn.10029320
cmp byte [0x10182df5], 0
jne 0x1000291b
mov edx, 0x10182de8
mov ecx, 0x10182de4
call fcn.10029830
jmp 0x1000292c
mov edx, dword [0x10182df8]
mov ecx, dword [0x10182dec]
call fcn.100298d0
cmp byte [0x10182c3e], 0
je 0x10002945
xorps xmm0, xmm0
call fcn.1002b730
xorps xmm0, xmm0
call fcn.1002b690
cmp byte [0x10182c56], 0
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
je 0x10002acf
mov dword [ebp - 0x2c], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x2c]
mov ecx, eax
call fcn.1003d4f0
cmp byte [0x10182c43], 0
push dword [ebp - 0x2c]
je 0x10002a3f
xor cl, cl
call fcn.1003dd50
push dword [ebp - 0x2c]
lea ecx, [ebp - 0x20]
call fcn.10038f90
push dword [ebp - 0x2c]
call fcn.1003d740
movss xmm0, dword [0x10176f50]
add esp, 0xc
comiss xmm0, dword [ebp - 0x20]
jb 0x10002acf
push dword [ebp - 0x2c]
call fcn.100263f0
mov esi, dword [ebp - 0x2c]
add esp, 4
mov ecx, str.jump_std
call fcn.1003e580
mov ecx, str.jump_std
call fcn.1003e4e0
test al, al
jne 0x100029f8
mov edi, dword [sym.imp.ScriptHook.dll_protected:_void___thiscall_ScriptThread::Wait_unsigned_int_]
mov ecx, dword [0x10182d98]
push 0
call edi
mov ecx, str.jump_std
call fcn.1003e4e0
test al, al
je 0x100029e0
push 0x578
sub esp, 0x10
mov edx, str.jump_land_roll
push 1
push 1
push 0
push ecx
mov dword [esp], 0x41000000
push str.jump_std
push esi
call fcn.1003e830
cmp byte [0x10182cae], 0
push dword [ebp - 0x2c]
sete cl
call fcn.1003dd50
add esp, 0x30
mov byte [0x10182c43], 0
jmp 0x10002acf
call fcn.10027200
add esp, 4
test al, al
je 0x10002acf
push 0x20
call ebx
test ax, ax
mov al, byte [0x10182a30]
jns 0x10002a6c
test al, al
jne 0x10002a6c
mov word [0x10182a30], 1
jmp 0x10002a90
cmp al, 1
jne 0x10002a82
push 0x20
call ebx
test ax, ax
js 0x10002a82
mov word [0x10182a30], 0x100
mov edx, 0xe
call fcn.100296f0
test al, al
je 0x10002acf
movss xmm3, dword [0x10177060]
sub esp, 0x1c
xorps xmm2, xmm2
mov dword [esp + 0xc], 0x42c80000
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x42d20000
push dword [ebp - 0x2c]
call fcn.1003d630
add esp, 0x20
mov byte [0x10182c43], 1
call fcn.1003b7e0
cmp byte [0x10182df4], 0
je 0x10002b1e
mov edx, 0x10182de8
mov ecx, 0x10182de4
call fcn.10029830
mov edx, dword [0x10182de8]
mov ecx, dword [0x10182de4]
cmp edx, 0x3b
jae 0x10002b06
inc edx
mov dword [0x10182de8], edx
jmp 0x10002b19
inc ecx
mov dword [0x10182de8], 0
mov dword [0x10182de4], ecx
xor edx, edx
call fcn.100298d0
mov dword [ebp - 0x24], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x24]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x24]
call fcn.10039100
add esp, 4
test al, al
je 0x10002ba4
cmp byte [0x10182dcc], 0
je 0x10002ba4
push dword [ebp - 0x24]
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], 0
call fcn.10028060
mov ecx, dword [0x10182dc8]
add esp, 4
cmp ecx, 0x85
jne 0x10002b7a
xor ecx, ecx
jmp 0x10002b7b
inc ecx
mov edx, dword [0x101815b8]
mov dword [0x10182dc8], ecx
test edx, edx
jne 0x10002b92
mov edx, 0x85
jmp 0x10002b93
inc edx
push dword [ebp - 0x28]
mov dword [0x101815b8], edx
call fcn.100470a0
add esp, 4
cmp byte [0x10182c22], 0
je 0x10002cbd
mov edx, 8
lea ecx, [ebp - 0x20]
call fcn.10028ef0
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x10002cbd
push eax
lea ecx, [ebp - 0x1c]
call fcn.100393d0
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
movss xmm0, dword [ebp - 0x1c]
lea eax, [ebp - 8]
movss dword [ebp - 0x2c], xmm0
lea edx, [ebp - 0xc]
movss xmm0, dword [ebp - 0x18]
lea ecx, [ebp - 0x10]
push eax
push dword [ebp - 0x28]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x14]
movss dword [ebp - 0x20], xmm0
call fcn.100267d0
movss xmm0, dword [ebp - 0x20]
lea ecx, [ebp - 0x30]
movss xmm3, dword [ebp - 0x2c]
add esp, 4
movss xmm2, dword [ebp - 8]
movss xmm1, dword [ebp - 0xc]
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x24]
movss dword [esp], xmm0
movss xmm0, dword [ebp - 0x10]
call fcn.1003e620
movss xmm0, dword [0x10177054]
add esp, 8
comiss xmm0, dword [ebp - 0x30]
mov edi, 0x96
mov ecx, 0xff
mov esi, 0x2f
xorps xmm0, xmm0
movss dword [ebp - 0x28], xmm0
setae al
test al, al
cmove edi, ecx
movss xmm2, dword [ebp - 0x14]
movss xmm3, dword [0x10176f9c]
addss xmm2, xmm0
movss xmm1, dword [ebp - 0x18]
movss xmm0, dword [ebp - 0x1c]
push edi
push ecx
call fcn.10039ea0
movss xmm0, dword [ebp - 0x28]
add esp, 8
addss xmm0, dword [0x10176f6c]
movss dword [ebp - 0x28], xmm0
sub esi, 1
jne 0x10002c81
call fcn.10045e00
call fcn.10046060
cmp byte [0x10182c55], 0
je 0x10002dc7
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x28]
lea ecx, [ebp - 0x30]
call fcn.10026c40
add esp, 4
cmp dword [ebp - 0x30], 0
jne 0x10002dc7
push 1
call ebx
test ax, ax
mov al, byte [0x101829f2]
jns 0x10002d26
test al, al
jne 0x10002d26
mov word [0x101829f2], 1
jmp 0x10002d4a
cmp al, 1
jne 0x10002d3c
push 1
call ebx
test ax, ax
js 0x10002d3c
mov word [0x101829f2], 0x100
mov edx, 0x11
call fcn.100296f0
test al, al
je 0x10002dc7
push 0x2bc
call dword [sym.imp.ScriptHook.dll_public:_static_void___cdecl_ScriptingHelpers::Wait_unsigned_int_]
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
lea eax, [ebp - 8]
xorps xmm3, xmm3
push eax
push dword [ebp - 0x28]
lea edx, [ebp - 0xc]
xorps xmm2, xmm2
lea ecx, [ebp - 0x10]
xorps xmm1, xmm1
call fcn.10026f60
movss xmm1, dword [ebp - 0xc]
add esp, 8
addss xmm1, dword [0x10176f50]
movss xmm2, dword [ebp - 8]
xor dl, dl
movss xmm0, dword [ebp - 0x10]
mov dword [esp], 0
push 1
push ecx
mov ecx, 2
mov dword [esp], 0x41200000
call fcn.10029bc0
add esp, 0xc
call dword [sym.imp.ScriptHook.dll_public:_static_enum_Game::eVersion___cdecl_Game::GetVersion_void_]
cmp eax, 1
jne 0x10002dd9
call fcn.1003cea0
jmp 0x10002dde
call fcn.1003c740
cmp byte [0x10182dd3], 0
je 0x10002e73
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x28]
lea ecx, [ebp - 0x24]
call fcn.10028060
add esp, 4
call fcn.10025be0
mov ecx, eax
call fcn.10046e10
test al, al
je 0x10002e73
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x10002e73
movss xmm3, dword [0x10177080]
sub esp, 8
xor edx, edx
xorps xmm2, xmm2
xor ecx, ecx
push 1
sub esp, 0x10
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
push eax
call fcn.1003de00
add esp, 0x20
cmp byte [0x10182dd4], 0
je 0x10002ecd
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x28]
lea ecx, [ebp - 0x24]
call fcn.10028060
mov eax, dword [ebp - 0x24]
add esp, 4
test eax, eax
je 0x10002ecd
push eax
call fcn.100473c0
add esp, 4
test al, al
je 0x10002ecd
push dword [ebp - 0x24]
call fcn.10028790
add esp, 4
call fcn.10045b40
call fcn.10047a80
cmp byte [0x101829ec], 0
je 0x10002f30
call fcn.1002ae80
test al, al
je 0x10002f30
mov ecx, dword [0x10182bf0]
cmp ecx, str.intro
jne 0x10002f07
mov ecx, str.shipintro
call fcn.1002a400
mov ecx, dword [0x10182bf0]
call fcn.1002af10
call fcn.10025be0
mov dl, 1
mov ecx, eax
call fcn.10025db0
call fcn.10039b80
mov eax, dword [0x101815a0]
mov byte [0x101829ec], 0
mov dword [0x10182db4], eax
mov ecx, dword [0x10182e9c]
mov eax, 0x2aaaaaab
mov esi, dword [0x10182e98]
sub ecx, esi
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x10002f9c
xor edi, edi
xor ebx, ebx
nop word [eax + eax]
push dword [esi + edi]
mov ecx, dword [esi + edi + 0x24]
call fcn.1002aa20
mov ecx, dword [0x10182e9c]
lea edi, [edi + 0x30]
mov esi, dword [0x10182e98]
mov eax, 0x2aaaaaab
sub ecx, esi
inc ebx
imul ecx
add esp, 4
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jl 0x10002f60
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, dword [0x10182e8c]
mov eax, 0x38e38e39
mov esi, dword [0x10182e88]
sub ecx, esi
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x10002fff
xor edi, edi
xor ebx, ebx
push dword [esi + edi]
mov cl, byte [esi + edi + 0x1e]
call fcn.10027740
mov ecx, dword [0x10182e8c]
lea edi, [edi + 0x24]
mov esi, dword [0x10182e88]
mov eax, 0x38e38e39
sub ecx, esi
inc ebx
imul ecx
add esp, 4
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jl 0x10002fc3
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
call fcn.10025be0
mov dl, byte [0x10182c54]
mov ecx, eax
call fcn.10026030
call fcn.10025be0
mov dl, byte [0x10182c79]
mov ecx, eax
call fcn.10025e50
call fcn.100457e0
cmp byte [0x10182db2], 0
je 0x100030bc
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x28]
lea ecx, [ebp - 0x24]
call fcn.10028060
add esp, 4
cmp dword [ebp - 0x24], 0
je 0x100030bc
push 0x53
call ebx
test ax, ax
mov al, byte [0x10182a96]
jns 0x1000308a
test al, al
jne 0x1000308a
mov word [0x10182a96], 1
jmp 0x100030ae
cmp al, 1
jne 0x100030a0
push 0x53
call ebx
test ax, ax
js 0x100030a0
mov word [0x10182a96], 0x100
mov edx, 5
call fcn.100296f0
test al, al
je 0x100030bc
push dword [ebp - 0x24]
xorps xmm1, xmm1
call fcn.10047500
add esp, 4
cmp byte [0x10182d44], 0
je 0x100031dd
cmp byte [0x10180ab4], 0
je 0x1000312a
mov cl, byte [0x10180ab2]
mov eax, dword [0x10182cdc]
test cl, cl
je 0x100030e4
inc eax
jmp 0x100030e5
dec eax
mov dword [0x10182cdc], eax
cmp eax, 0xff
jne 0x1000310c
test cl, cl
je 0x1000312a
mov byte [0x10180ab2], 0
mov byte [0x10180ab4], 0
mov byte [0x10182caf], 1
jmp 0x10003133
test eax, eax
jne 0x1000312a
test cl, cl
jne 0x1000312a
mov byte [0x10180ab2], 1
mov byte [0x10180ab4], cl
mov byte [0x10182caf], 1
jmp 0x10003133
cmp byte [0x10182caf], 0
je 0x1000318b
mov cl, byte [0x10180ab3]
mov eax, dword [0x10182ce0]
test cl, cl
je 0x10003145
inc eax
jmp 0x10003146
dec eax
mov dword [0x10182ce0], eax
cmp eax, 0xff
jne 0x1000316d
test cl, cl
je 0x1000318b
mov byte [0x10180ab3], 0
mov byte [0x10182caf], 0
mov byte [0x10182cc8], 1
jmp 0x10003194
test eax, eax
jne 0x1000318b
test cl, cl
jne 0x1000318b
mov byte [0x10180ab3], 1
mov byte [0x10182caf], cl
mov byte [0x10182cc8], 1
jmp 0x10003194
cmp byte [0x10182cc8], 0
je 0x100031dd
mov cl, byte [0x10180ab1]
mov eax, dword [0x10182ce4]
test cl, cl
je 0x100031a6
inc eax
jmp 0x100031a7
dec eax
mov dword [0x10182ce4], eax
cmp eax, 0xff
jne 0x100031c0
test cl, cl
je 0x100031dd
mov byte [0x10180ab1], 0
jmp 0x100031cf
test eax, eax
jne 0x100031dd
test cl, cl
jne 0x100031dd
mov byte [0x10180ab1], 1
mov byte [0x10180ab4], 1
mov byte [0x10182cc8], 0
cmp byte [0x10182c33], 0
je 0x10003327
push 2
call ebx
test ax, ax
jns 0x100031ff
mov byte [0x101829f5], 0
jmp 0x100032e4
mov edx, 5
mov byte [0x101829f5], 1
call fcn.1002eef0
test al, al
jne 0x100032e4
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x24], 0
call fcn.10029060
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x24]
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x1c]
call fcn.10039700
lea eax, [ebp - 8]
push eax
push dword [ebp - 0x24]
lea edx, [ebp - 0xc]
lea ecx, [ebp - 0x10]
call fcn.10039650
movss xmm1, dword [0x10182c64]
lea ecx, [ebp - 0x2c]
movss xmm0, dword [0x10182c70]
subss xmm1, dword [ebp - 0xc]
subss xmm0, dword [ebp - 0x10]
call fcn.10039d60
movss xmm0, dword [ebp - 0x2c]
subss xmm0, dword [0x10176f80]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x28], 0
movss dword [ebp - 0x2c], xmm0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x28]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x28]
lea ecx, [ebp - 0x20]
call fcn.10028060
add esp, 0x14
cmp dword [ebp - 0x20], 0
jne 0x100032e4
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
movss xmm1, dword [ebp - 0x2c]
call fcn.10027600
add esp, 4
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x28]
call fcn.10028060
add esp, 4
cmp dword [ebp - 0x28], 0
je 0x10003320
xor cl, cl
jmp 0x10003322
mov cl, 1
call fcn.1003a3c0
cmp byte [0x101829ed], 0
je 0x10003373
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
cmp eax, dword [0x10182bfc]
jb 0x10003373
lea ecx, [ebp - 0x20]
mov dword [ebp - 0x20], 0
call fcn.1002a8d0
push dword [ebp - 0x20]
movss xmm1, dword [0x10176ed8]
mov ecx, 0xea60
call fcn.1002b410
add esp, 4
call esi
add eax, 0xea60
mov dword [0x10182bfc], eax
call fcn.10037240
cmp byte [0x10182c32], 0
push dword [0x10182e54]
je 0x1000346f
call fcn.100395b0
add esp, 4
test al, al
jne 0x100033cb
mov edx, 0x10182e54
mov byte [0x10182c23], al
mov byte [0x101829ee], al
call fcn.10039470
push dword [0x10182e54]
mov cl, 1
call fcn.10028fb0
push dword [0x10182e54]
call fcn.100398f0
add esp, 8
jmp 0x10003492
push 2
call ebx
test ax, ax
jns 0x100033d8
xor ecx, ecx
jmp 0x100033e9
mov edx, 5
call fcn.1002eef0
xor ecx, ecx
test al, al
sete cl
mov edx, ecx
call fcn.1003a460
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x24], 0
call fcn.10029060
lea eax, [ebp - 8]
push eax
push dword [ebp - 0x24]
lea edx, [ebp - 0xc]
lea ecx, [ebp - 0x10]
call fcn.10039700
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0x24]
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x1c]
call fcn.10039650
push dword [0x10182e54]
movss xmm3, dword [ebp - 8]
movss xmm2, dword [ebp - 0xc]
movss xmm1, dword [ebp - 0x10]
call fcn.100291b0
push dword [0x10182e54]
movss xmm3, dword [ebp - 0x14]
movss xmm2, dword [ebp - 0x18]
movss xmm1, dword [ebp - 0x1c]
call fcn.10029100
push dword [0x10182e54]
movss xmm1, dword [0x10180a98]
call fcn.10039850
add esp, 0x1c
jmp 0x10003492
call fcn.100395b0
add esp, 4
test al, al
je 0x10003492
push dword [0x10182e54]
call fcn.10039510
add esp, 4
xor edx, edx
xor ecx, ecx
call fcn.1003a460
call fcn.10038b40
lea ecx, [ebp - 0x24]
mov dword [ebp - 0x24], 0
call fcn.10029060
cmp byte [0x10180ab6], 0
je 0x100035bb
mov eax, dword [0x10182db4]
cmp eax, 6
je 0x100034c6
cmp eax, 7
jne 0x100035bb
push dword [0x10182e68]
call fcn.100395b0
add esp, 4
test al, al
jne 0x100034ff
mov edx, 0x10182e68
call fcn.10039470
push dword [0x10182e68]
mov cl, 1
call fcn.10028fb0
push dword [0x10182e68]
call fcn.100398f0
jmp 0x100035f2
mov edx, 1
mov ecx, edx
call fcn.1003a460
xor cl, cl
call fcn.1003a3c0
push dword [ebp - 0x24]
xor cl, cl
call fcn.10028fb0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
movss xmm3, dword [0x10176f18]
lea eax, [ebp - 8]
movss xmm2, dword [0x10176f70]
lea edx, [ebp - 0xc]
push eax
push dword [ebp - 0x20]
lea ecx, [ebp - 0x10]
xorps xmm1, xmm1
call fcn.10026f60
push dword [0x10182e68]
movss xmm1, dword [0x10177050]
call fcn.10039850
push dword [0x10182e68]
movss xmm3, dword [ebp - 8]
movss xmm2, dword [ebp - 0xc]
movss xmm1, dword [ebp - 0x10]
call fcn.10029100
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
push dword [0x10182e68]
call fcn.1002b4b0
add esp, 0x1c
jmp 0x100035f5
push dword [0x10182e68]
call fcn.100395b0
add esp, 4
test al, al
je 0x100035f5
push dword [0x10182e68]
call fcn.10039510
xor edx, edx
xor ecx, ecx
call fcn.1003a460
mov cl, 1
call fcn.1003a3c0
push dword [ebp - 0x24]
mov cl, 1
call fcn.10028fb0
add esp, 8
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
call fcn.1003db60
add esp, 4
mov dword [ebp - 0x20], 0
test al, al
je 0x10003648
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
movss xmm1, dword [0x10180aac]
jmp 0x10003666
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
movss xmm1, dword [0x10180aa4]
push dword [ebp - 0x20]
call fcn.1002afc0
add esp, 4
cmp byte [0x10182ddd], 0
je 0x10003702
mov dword [ebp - 0x2c], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x2c]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x2c]
lea ecx, [ebp - 0x24]
call fcn.10026c40
push dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x24]
lea edx, [ebp - 0x20]
call fcn.10026d80
push dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x24]
lea edx, [ebp - 0x28]
call fcn.10026730
push dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x24]
lea edx, [ebp - 0x30]
call fcn.10026690
mov edx, dword [ebp - 0x30]
add esp, 0x10
mov eax, dword [ebp - 0x20]
cmp edx, eax
jb 0x10003702
cmp dword [ebp - 0x28], 1
jne 0x10003702
push dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x24]
sub edx, eax
inc edx
call fcn.10047000
push dword [ebp - 0x2c]
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
call fcn.10046f50
add esp, 8
cmp byte [0x10182dd1], 0
je 0x10003801
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x24]
call fcn.10028060
add esp, 4
cmp dword [ebp - 0x24], 0
je 0x10003801
push 0x20
call ebx
test ax, ax
mov al, byte [0x10182a30]
jns 0x10003768
test al, al
jne 0x10003768
mov word [0x10182a30], 1
jmp 0x1000378c
cmp al, 1
jne 0x1000377e
push 0x20
call ebx
test ax, ax
js 0x1000377e
mov word [0x10182a30], 0x100
mov edx, 0xe
call fcn.100296f0
test al, al
je 0x10003801
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x30]
call fcn.10038f90
movss xmm0, dword [0x10176f50]
add esp, 4
comiss xmm0, dword [ebp - 0x30]
jb 0x10003801
sub esp, 8
xor edx, edx
xorps xmm3, xmm3
xorps xmm2, xmm2
xor ecx, ecx
push 1
sub esp, 0x10
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0x449c4000
push dword [ebp - 0x24]
call fcn.1003de00
add esp, 0x20
call fcn.10036580
call fcn.10046bf0
call fcn.10037640
cmp byte [0x10182c57], 0
je 0x10003846
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
mov ecx, 0x3e8
call fcn.100276a0
add esp, 4
cmp byte [0x10182ddf], 0
je 0x10003854
call fcn.100481c0
mov cl, byte [0x10182c20]
movss xmm0, dword [0x10176e98]
mov al, byte [0x10182c31]
test cl, cl
jne 0x1000386f
test al, al
je 0x100038aa
movss xmm2, dword [0x10176f50]
movss xmm1, dword [0x10177188]
test cl, cl
je 0x10003886
movaps xmm2, xmm1
test al, al
jne 0x10003892
movss xmm1, dword [0x10176f50]
sub esp, 0xc
movaps xmm3, xmm1
movaps xmm1, xmm0
mov dword [esp], 0
call fcn.1002bb80
add esp, 0xc
cmp byte [0x10182dce], 0
je 0x10003a25
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x2c]
call fcn.10028060
mov eax, dword [ebp - 0x2c]
add esp, 4
test eax, eax
je 0x10003a25
push eax
xor cl, cl
call fcn.10028630
push dword [ebp - 0x2c]
xor cl, cl
call fcn.100286e0
add esp, 8
mov dword [0x101829d0], 0
xor eax, eax
push dword [ebp - 0x2c]
mov ecx, eax
call fcn.10028450
add esp, 4
test al, al
je 0x10003937
push dword [ebp - 0x2c]
mov ecx, dword [0x101829d0]
call fcn.10027f10
add esp, 4
mov eax, dword [0x101829d0]
inc eax
mov dword [0x101829d0], eax
cmp eax, 8
jl 0x10003915
mov dword [0x101829d0], 0
xor eax, eax
push dword [ebp - 0x2c]
mov ecx, eax
call fcn.100283b0
add esp, 4
test al, al
je 0x100039a6
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x28]
call fcn.10028060
mov eax, dword [ebp - 0x28]
add esp, 4
test eax, eax
je 0x100039a6
push eax
call fcn.10047140
add esp, 4
mov eax, dword [0x101829d0]
inc eax
mov dword [0x101829d0], eax
cmp eax, 6
jl 0x10003953
mov dword [0x101829d0], 0
xor eax, eax
push dword [ebp - 0x2c]
mov ecx, eax
call fcn.100284f0
add esp, 4
test al, al
jne 0x10003a15
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x28]
call fcn.10028060
mov eax, dword [ebp - 0x28]
add esp, 4
test eax, eax
je 0x10003a15
push eax
call fcn.10047140
add esp, 4
mov eax, dword [0x101829d0]
inc eax
mov dword [0x101829d0], eax
cmp eax, 4
jl 0x100039c2
cmp byte [0x10182c3c], 0
je 0x10003b0a
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x30]
call fcn.10026880
add esp, 4
cmp dword [ebp - 0x30], 0x64
jbe 0x10003a90
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
mov ecx, 0x64
call fcn.100276a0
add esp, 4
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x34]
call fcn.10026920
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
mov ecx, 0x64
call fcn.10026210
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
call fcn.10026490
add esp, 0xc
cmp byte [0x10182db3], 0
je 0x10003b69
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x28]
call fcn.10028060
mov eax, dword [ebp - 0x28]
add esp, 4
test eax, eax
je 0x10003b69
mov cl, byte [0x10182db3]
movzx edx, cl
push edx
movzx edx, cl
push edx
movzx edx, cl
push edx
push eax
mov dl, cl
call fcn.10028830
add esp, 0x10
cmp byte [0x101829cc], 0
je 0x10003d59
mov ecx, dword [0x10182e24]
mov eax, 0x66666667
mov esi, dword [0x10182e20]
xor edi, edi
sub ecx, esi
mov dword [0x101829d0], edi
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x10003c2e
xor ebx, ebx
nop word [eax + eax]
cmp byte [0x10182db1], 0
lea eax, [ebx + ebx*4]
movss xmm2, dword [esi + eax*8 + 8]
movss xmm3, dword [esi + eax*8 + 0xc]
jne 0x10003c08
movaps xmm1, xmm3
movaps xmm0, xmm2
mulss xmm1, dword [0x10176e98]
xor dl, dl
xor cl, cl
mulss xmm0, dword [0x10176e98]
push 0xff
addss xmm1, dword [esi + eax*8 + 4]
push 0
addss xmm0, dword [esi + eax*8]
call fcn.10030f60
mov edi, dword [0x101829d0]
add esp, 8
mov esi, dword [0x10182e20]
mov ecx, dword [0x10182e24]
mov eax, 0x66666667
sub ecx, esi
inc edi
imul ecx
mov ebx, edi
mov dword [0x101829d0], edi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jl 0x10003bb0
mov ecx, dword [0x10182e00]
mov eax, 0x2e8ba2e9
mov esi, dword [0x10182dfc]
xor ebx, ebx
sub ecx, esi
mov dword [0x101829d0], ebx
imul ecx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
test eax, eax
jle 0x10003d59
xor edi, edi
nop
imul ecx, edi, 0x2c
lea edi, [esi + 0x14]
add edi, ecx
cmp dword [edi + 0x14], 0x10
jb 0x10003c70
mov edi, dword [edi]
cmp byte [0x10182db1], 0
movss xmm0, dword [ecx + esi]
mov eax, dword [0x10182d58]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [ecx + esi + 4]
mov dword [ebp - 0x24], eax
mov eax, dword [0x10182d5c]
movss dword [ebp - 0x3c], xmm0
movss xmm0, dword [ecx + esi + 8]
mov dword [ebp - 0x28], eax
mov eax, dword [0x10182d60]
movss dword [ebp - 0x38], xmm0
movss xmm0, dword [ecx + esi + 0xc]
mov dword [ebp - 0x20], eax
mov eax, dword [0x10182d64]
mov dword [ebp - 0x30], eax
movss dword [ebp - 0x2c], xmm0
jne 0x10003d2f
mov ecx, dword [ecx + esi + 0x10]
call fcn.10030e20
sub esp, 0xc
call fcn.10030ca0
call fcn.10030d60
push dword [ebp - 0x30]
mov dl, byte [ebp - 0x28]
push dword [ebp - 0x20]
mov cl, byte [ebp - 0x24]
call fcn.10030bd0
movss xmm1, dword [ebp - 0x2c]
add esp, 0x14
movss xmm0, dword [ebp - 0x38]
call fcn.10030a90
xor cl, cl
call fcn.10030b30
mov cl, 1
call fcn.10030ec0
movss xmm1, dword [ebp - 0x3c]
mov edx, edi
movss xmm0, dword [ebp - 0x34]
call fcn.100309e0
xor cl, cl
call fcn.10030ec0
mov ebx, dword [0x101829d0]
mov esi, dword [0x10182dfc]
mov ecx, dword [0x10182e00]
mov eax, 0x2e8ba2e9
sub ecx, esi
inc ebx
imul ecx
mov edi, ebx
mov dword [0x101829d0], ebx
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jl 0x10003c60
call fcn.1002a070
test al, al
je 0x10003dab
call fcn.1002adf0
test al, al
jne 0x10003dab
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
lea ecx, [ebp - 0x34]
call fcn.10026b00
add esp, 4
cmp dword [ebp - 0x34], 0x6f0783f5
je 0x10003dab
mov dl, 1
mov ecx, str.PLAYER
call fcn.1003b250
mov ecx, dword [0x10182c38]
test ecx, ecx
je 0x10003dbf
call fcn.1003a110
call fcn.1003a1b0
mov cl, byte [0x1017ff4d]
call fcn.10029c90
mov cl, byte [0x1017ff4c]
call fcn.10029d30
mov bl, byte [0x10180ab0]
mov dword [ebp - 0x20], 0
call fcn.10025be0
mov ecx, eax
call fcn.1003d450
lea edx, [ebp - 0x20]
mov ecx, eax
call fcn.1003d4f0
push dword [ebp - 0x20]
mov cl, bl
call fcn.10027930
add esp, 4
mov edx, 0x10182df8
mov ecx, 0x10182dec
call fcn.10029830
mov ebx, dword [sym.imp.USER32.dll_GetKeyState]
xor eax, eax
mov dword [0x101829d0], 0
shl eax, 5
mov edi, dword [eax + 0x10180ab8]
push edi
lea esi, [edi + edi]
call ebx
test ax, ax
jns 0x10003ef3
cmp byte [esi + 0x101829f0], 0
jne 0x10003ef3
mov edx, dword [0x101829d0]
shl edx, 5
mov word [esi + 0x101829f0], 1
mov ecx, dword [edx + 0x10180ac0]
test ecx, ecx
je 0x10003f0d
mov eax, dword [0x101815a8]
mov dword [0x10182d2c], eax
mov eax, dword [0x101815a4]
mov dword [0x10182d30], eax
mov eax, dword [0x101815b4]
mov dword [0x10182d34], eax
mov eax, dword [0x10182db4]
mov dword [0x10182d38], eax
mov eax, dword [0x10182dc0]
mov dword [0x10182d3c], eax
mov eax, dword [edx + 0x10180ad0]
mov dword [0x10182dc0], eax
mov eax, dword [edx + 0x10180acc]
mov dword [0x10182db4], eax
mov eax, dword [edx + 0x10180ac4]
mov dword [0x101815a4], eax
mov eax, dword [edx + 0x10180ac8]
mov edx, dword [edx + 0x10180ad4]
push ecx
push 0x1b58
mov dword [0x101815a8], ecx
mov dword [0x101815b4], eax
mov byte [0x10182db0], 1
mov byte [0x10182db1], 1
call fcn.10029500
add esp, 8
jmp 0x10003f0d
cmp byte [esi + 0x101829f0], 1
jne 0x10003f0d
push edi
call ebx
test ax, ax
js 0x10003f0d
mov word [esi + 0x101829f0], 0x100
mov eax, dword [0x101829d0]
inc eax
mov dword [0x101829d0], eax
cmp eax, 0x30
jl 0x10003e26
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1004955b
mov esp, ebp
pop ebp
ret