Function at 0x10016230
Capabilities:
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
push 0xffffffffffffffff
push 0x10073b2c
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x178
mov eax, dword [0x10089040]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
cmp byte [0x1008b6ac], 0
je 0x10017435
mov ecx, dword [0x1008b6f0]
mov eax, dword [ecx]
mov eax, dword [eax + 0x6c]
call eax
test al, al
je 0x10017435
mov ecx, dword [0x1008b6f0]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x10017435
mov eax, dword [0x100c118c]
mov edi, dword [0x1008b878]
test eax, eax
jne 0x100162e5
mov edx, 0xe80c2f78
mov ecx, 0x10077fed
call fcn.1000b060
mov edx, 0xc10bf213
mov ecx, 0x10077f85
mov esi, eax
call fcn.1000b060
mov edx, esi
mov ecx, eax
call fcn.1006eeb0
mov dword [0x100c118c], eax
cmp dword [eax + edi], 0
jne 0x10017435
push dword [0x1008b670]
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x98], edi
call edi
test ax, ax
je 0x100163b1
mov ecx, dword [0x1008b878]
mov eax, dword [ecx]
mov eax, dword [eax + 0x28]
call eax
mov ecx, dword [0x1008b6f0]
lea edx, [ebp - 0x28]
push edx
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [ebp - 0x7c], xmm0
movss xmm0, dword [ebp - 0x7c]
mov dword [ebp - 0x74], eax
mov eax, dword [ecx]
movss dword [0x100c19fc], xmm0
movss xmm0, dword [ebp - 0x78]
movss dword [0x100c19e8], xmm0
movss xmm0, dword [ebp - 0x74]
mov eax, dword [eax + 0x48]
movss dword [0x100c19f4], xmm0
call eax
mov ecx, dword [0x100c1380]
movss xmm0, dword [ebp - 0x28]
movss dword [0x100c19f0], xmm0
movss xmm0, dword [ebp - 0x24]
mov eax, dword [ecx]
movss dword [0x100c19ec], xmm0
movss xmm0, dword [ebp - 0x20]
push str.buttons_blip1.wav
mov eax, dword [eax + 0x148]
movss dword [0x100c19f8], xmm0
call eax
movss xmm4, dword [0x100c19fc]
xorps xmm2, xmm2
movss xmm1, dword [0x100823cc]
ucomiss xmm4, xmm2
lahf
test ah, 0x44
jnp 0x100165bb
movss xmm5, dword [0x100c19e8]
ucomiss xmm5, xmm2
lahf
test ah, 0x44
jnp 0x100165bb
cmp byte [0x1008b691], 0
je 0x100165bb
mov eax, dword [0x100c1180]
movss xmm3, dword [0x10082268]
movss xmm0, dword [eax + 0x14]
mulss xmm0, dword [0x100822e4]
addss xmm0, dword [0x100c1388]
comiss xmm2, xmm0
jae 0x10016421
movaps xmm2, xmm3
minss xmm2, xmm0
movss xmm0, dword [0x10089108]
mulss xmm0, xmm1
mov ecx, dword [0x1008b654]
movss dword [0x100c1388], xmm2
movss dword [ebp - 0xa4], xmm4
cvttss2si eax, xmm0
movss xmm0, dword [0x10089104]
mulss xmm0, xmm1
mov dword [ebp - 0x90], eax
movss dword [ebp - 0xa0], xmm5
cvttss2si edx, xmm0
movss xmm0, dword [0x10089100]
mulss xmm0, xmm1
mov dword [ebp - 0x8c], edx
cvttss2si eax, xmm0
movss xmm0, dword [0x100c19f4]
mov dword [ebp - 0x74], eax
mov eax, dword fs:[0x2c]
movss dword [ebp - 0x9c], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x100c35f8]
cmp eax, dword [ecx + 4]
jle 0x10016500
push 0x100c35f8
call fcn.100718cf
add esp, 4
cmp dword [0x100c35f8], 0xffffffff
jne 0x100164f2
push 0x10076340
mov dword [0x100c3604], 0
mov dword [0x100c3608], 0
mov dword [0x100c360c], 0
call fcn.10071808
add esp, 4
push 0x100c35f8
call fcn.1007187e
add esp, 4
mov edx, dword [ebp - 0x8c]
movss xmm3, dword [0x10082268]
movss xmm0, dword [0x10082344]
mov esi, 1
movss xmm1, dword [0x10082348]
mov edi, dword [ebp - 0x90]
movss dword [ebp - 0x94], xmm0
comiss xmm0, dword [0x100822b8]
jbe 0x1001658a
fld dword [ebp - 0x94]
mov eax, dword [ebp - 0x74]
push ecx
fstp dword [esp]
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], edi
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movups xmm0, xmmword [ebp - 0x68]
sub esp, 0xc
lea ecx, [ebp - 0xa4]
mov eax, esp
fstp dword [ebp - 0x90]
movss xmm1, dword [ebp - 0x90]
movups xmmword [eax], xmm0
call fcn.1006d5e0
movss xmm0, dword [ebp - 0x94]
add esp, 0x10
movss xmm3, dword [0x10082268]
movss xmm1, dword [0x10082348]
mov edx, dword [ebp - 0x8c]
subss xmm0, xmm3
inc esi
movss dword [ebp - 0x94], xmm0
movd xmm0, esi
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
movss xmm0, dword [ebp - 0x94]
ja 0x10016523
mov edi, dword [ebp - 0x98]
push dword [0x1008b670]
call edi
test ax, ax
jne 0x100165d9
push dword [0x1008b6cc]
call edi
test ax, ax
jne 0x100165d9
xor al, al
jmp 0x100165db
mov al, 1
mov byte [0x100c19e4], al
mov eax, dword [0x1008b810]
test eax, eax
jle 0x10016604
push dword [0x1008b670]
call edi
test ax, ax
jne 0x100165ff
sub dword [0x1008b810], 0xf
jmp 0x1001661f
mov eax, dword [0x1008b810]
cmp eax, 0xff
jge 0x1001661f
push dword [0x1008b670]
call edi
test ax, ax
je 0x1001661f
add dword [0x1008b810], 0xf
mov eax, dword [0x1008b81c]
test eax, eax
jle 0x10016643
push dword [0x1008b6cc]
call edi
test ax, ax
jne 0x1001663e
sub dword [0x1008b81c], 0xf
jmp 0x1001665e
mov eax, dword [0x1008b81c]
cmp eax, 0xff
jge 0x1001665e
push dword [0x1008b6cc]
call edi
test ax, ax
je 0x1001665e
add dword [0x1008b81c], 0xf
mov edi, dword [0x1008b80c]
test edi, edi
jle 0x10016676
cmp byte [0x100c19e4], 0
jne 0x10016676
sub edi, 0xf
jmp 0x1001668a
cmp edi, 0xff
jge 0x10016690
cmp byte [0x100c19e4], 0
je 0x10016690
add edi, 0xf
mov dword [0x1008b80c], edi
movss xmm1, dword [0x100823cc]
lea edx, [ebp - 0x18]
movss xmm0, dword [0x100890cc]
mulss xmm0, xmm1
mov ecx, dword [0x1008b6f0]
push edx
lea edx, [ebp - 0x1c]
cvttss2si eax, xmm0
push edx
movss xmm0, dword [0x100890d0]
mulss xmm0, xmm1
mov dword [ebp - 0x8c], eax
cvttss2si eax, xmm0
movss xmm0, dword [0x100890d4]
mulss xmm0, xmm1
mov dword [ebp - 0x90], eax
cvttss2si eax, xmm0
mov dword [ebp - 0x74], eax
mov eax, dword [ecx]
mov eax, dword [eax + 0x14]
call eax
cmp byte [0x1008b6a9], 0
je 0x10016a45
mov eax, dword [ebp - 0x18]
mov ecx, dword [0x100c1380]
cdq
sub eax, edx
push 0xff
mov edx, dword [ecx]
mov esi, eax
push 0x64
push 0x64
sar esi, 1
mov edx, dword [edx + 0x3c]
sub esi, 0x12
push 0x64
call edx
mov ecx, dword [0x100c1380]
push 0
push 0
push 0xff
mov eax, dword [ecx]
mov edx, dword [eax + 0x1ec]
lea eax, [esi + 0x3a]
push eax
push 0x72
push esi
push 0x12
call edx
mov eax, dword [ebp - 0x18]
mov ecx, dword [0x100c1380]
push edi
push dword [ebp - 0x74]
cdq
push dword [ebp - 0x90]
sub eax, edx
mov edx, dword [ecx]
push dword [ebp - 0x8c]
mov esi, eax
sar esi, 1
mov edx, dword [edx + 0x3c]
sub esi, 0x12
call edx
mov ecx, dword [0x100c1380]
push 0
push 0
push 0xff
mov eax, dword [ecx]
mov edx, dword [eax + 0x1ec]
lea eax, [esi + 0x3a]
push eax
push 0x72
push esi
push 0x12
call edx
mov eax, dword [ebp - 0x18]
mov ecx, dword [0x100c1380]
cdq
sub eax, edx
push 0xff
mov edx, dword [ecx]
mov esi, eax
push 4
push 4
sar esi, 1
mov edx, dword [edx + 0x3c]
sub esi, 0x10
push 4
call edx
mov ecx, dword [0x100c1380]
mov eax, dword [ecx]
mov edx, dword [eax + 0x40]
lea eax, [esi + 0x38]
push eax
push 0x70
push esi
push 0x14
call edx
mov edi, dword [0x1008b860]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x64], 0xf0
mov dword [ebp - 0x60], 0xf0
mov dword [ebp - 0x5c], 0xf0
mov dword [ebp - 0x68], 0xff
movups xmm0, xmmword [ebp - 0x68]
sub esp, 0x10
cdq
sub eax, edx
mov esi, eax
mov eax, esp
sar esi, 1
push 1
sub esp, 0x18
mov ecx, esp
movups xmmword [eax], xmm0
xorps xmm0, xmm0
push 0xb
movups xmmword [ecx], xmm0
push str.checkpoints
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.10009990
push edi
lea edx, [esi - 0xe]
mov ecx, 0x41
call fcn.1006d470
mov eax, dword [ebp - 0x18]
add esp, 0x20
mov edi, dword [0x1008b85c]
cdq
sub eax, edx
mov dword [ebp - 0x64], 0x64
mov esi, eax
mov dword [ebp - 0x60], 0x64
mov eax, esp
mov dword [ebp - 0x5c], 0x64
push 0
sub esp, 0x18
mov dword [ebp - 0x68], 0xff
movups xmm0, xmmword [ebp - 0x68]
mov ecx, esp
sar esi, 1
movups xmmword [eax], xmm0
push 0xa
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
push str.1.teleport
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.10009990
push edi
lea edx, [esi + 2]
mov ecx, 0x1e
call fcn.1006d470
movss xmm0, dword [0x100890d4]
add esp, 0x20
movss xmm1, dword [0x100823cc]
mulss xmm0, xmm1
mov edi, dword [0x1008b85c]
cvttss2si edx, xmm0
movss xmm0, dword [0x100890d0]
mulss xmm0, xmm1
mov dword [ebp - 0x5c], edx
cvttss2si ecx, xmm0
movss xmm0, dword [0x100890cc]
mulss xmm0, xmm1
mov dword [ebp - 0x60], ecx
cvttss2si eax, xmm0
mov dword [ebp - 0x64], eax
mov eax, dword [0x1008b81c]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x18]
movups xmm0, xmmword [ebp - 0x68]
cdq
sub eax, edx
mov esi, eax
mov eax, esp
push 0
sar esi, 1
sub esp, 0x18
mov ecx, esp
movups xmmword [eax], xmm0
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
push 0xa
push str.1.teleport
mov dword [ecx + 0x14], 0
call fcn.10009990
push edi
lea edx, [esi + 2]
mov ecx, 0x1e
call fcn.1006d470
mov eax, dword [ebp - 0x18]
add esp, 0x20
mov edi, dword [0x1008b85c]
cdq
sub eax, edx
mov dword [ebp - 0x64], 0x64
mov esi, eax
mov dword [ebp - 0x60], 0x64
mov eax, esp
mov dword [ebp - 0x5c], 0x64
push 0
sub esp, 0x18
mov dword [ebp - 0x68], 0xff
movups xmm0, xmmword [ebp - 0x68]
mov ecx, esp
sar esi, 1
movups xmmword [eax], xmm0
push 0xe
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
push str.2.set_position
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.10009990
push edi
lea edx, [esi + 0x12]
mov ecx, 0x1e
call fcn.1006d470
movss xmm0, dword [0x100890d4]
add esp, 0x20
movss xmm1, dword [0x100823cc]
mulss xmm0, xmm1
mov edi, dword [0x1008b85c]
cvttss2si edx, xmm0
movss xmm0, dword [0x100890d0]
mulss xmm0, xmm1
mov dword [ebp - 0x5c], edx
cvttss2si ecx, xmm0
movss xmm0, dword [0x100890cc]
mulss xmm0, xmm1
mov dword [ebp - 0x60], ecx
cvttss2si eax, xmm0
mov dword [ebp - 0x64], eax
mov eax, dword [0x1008b810]
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x18]
movups xmm0, xmmword [ebp - 0x68]
cdq
sub eax, edx
mov esi, eax
mov eax, esp
push 0
sub esp, 0x18
sar esi, 1
mov ecx, esp
movups xmmword [eax], xmm0
xorps xmm0, xmm0
push 0xe
movups xmmword [ecx], xmm0
push str.2.set_position
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.10009990
push edi
lea edx, [esi + 0x12]
mov ecx, 0x1e
call fcn.1006d470
add esp, 0x30
movss xmm0, dword [0x100c19f4]
sub esp, 8
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push 0x1007e144
movsd qword [ebp - 0x78], xmm0
call fcn.100152d0
add esp, 0xc
lea ecx, [ebp - 0xf8]
mov esi, eax
push 0
push esi
call fcn.10012730
cmp dword [ebp - 0xe4], 0xf
lea ecx, [ebp - 0xf8]
movsd xmm0, qword [ebp - 0x78]
lea eax, [esi + 1]
cmova ecx, dword [ebp - 0xf8]
sub esp, 8
movsd qword [esp], xmm0
push 0x1007e144
push eax
push ecx
call fcn.100152b0
mov dword [ebp - 4], 0
add esp, 0xc
movss xmm0, dword [0x100c19e8]
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push 0x1007e144
movsd qword [ebp - 0x78], xmm0
call fcn.100152d0
add esp, 0xc
lea ecx, [ebp - 0xe0]
mov esi, eax
push 0
push esi
call fcn.10012730
cmp dword [ebp - 0xcc], 0xf
lea ecx, [ebp - 0xe0]
movsd xmm0, qword [ebp - 0x78]
lea eax, [esi + 1]
cmova ecx, dword [ebp - 0xe0]
sub esp, 8
movsd qword [esp], xmm0
push 0x1007e144
push eax
push ecx
call fcn.100152b0
mov byte [ebp - 4], 1
add esp, 0xc
movss xmm0, dword [0x100c19fc]
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push 0x1007e144
movsd qword [ebp - 0x78], xmm0
call fcn.100152d0
add esp, 0xc
lea ecx, [ebp - 0xb0]
mov esi, eax
push 0
push esi
call fcn.10012730
cmp dword [ebp - 0x9c], 0xf
lea ecx, [ebp - 0xb0]
movsd xmm0, qword [ebp - 0x78]
lea eax, [esi + 1]
cmova ecx, dword [ebp - 0xb0]
sub esp, 8
movsd qword [esp], xmm0
push 0x1007e144
push eax
push ecx
call fcn.100152b0
add esp, 0x14
lea eax, [ebp - 0xb0]
mov byte [ebp - 4], 2
push eax
mov edx, str.setpos_exact
lea ecx, [ebp - 0x170]
call fcn.100182c0
add esp, 4
mov ecx, eax
mov byte [ebp - 4], 3
mov esi, dword [ecx + 0x14]
mov eax, esi
mov edx, dword [ecx + 0x10]
sub eax, edx
cmp eax, 1
jb 0x10016bcc
lea eax, [edx + 1]
mov dword [ecx + 0x10], eax
mov eax, ecx
cmp esi, 0xf
jbe 0x10016bc4
mov eax, dword [ecx]
mov word [eax + edx], 0x20
jmp 0x10016bdf
push 1
push 0x1007e1e0
push dword [ebp - 0x1c]
push 1
call fcn.10009ec0
mov ecx, eax
movups xmm0, xmmword [ecx]
movups xmmword [ebp - 0x158], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [ebp - 0x148], xmm0
mov dword [ecx + 0x10], 0
lea eax, [ebp - 0xe0]
push eax
mov dword [ecx + 0x14], 0xf
lea eax, [ebp - 0x158]
mov byte [ecx], 0
lea ecx, [ebp - 0x70]
push eax
mov byte [ebp - 4], 4
push dword [ebp - 0x1c]
call fcn.100183b0
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x5c]
mov eax, edx
mov ecx, dword [ebp - 0x60]
sub eax, ecx
cmp eax, 1
jb 0x10016c52
lea eax, [ecx + 1]
cmp edx, 0xf
mov dword [ebp - 0x60], eax
lea eax, [ebp - 0x70]
cmova eax, dword [ebp - 0x70]
mov word [eax + ecx], 0x20
lea eax, [ebp - 0x70]
jmp 0x10016c66
push 1
push 0x1007e1e0
push dword [ebp - 0x1c]
lea ecx, [ebp - 0x70]
push 1
call fcn.10009ec0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x88], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x78], xmm0
mov dword [eax + 0x10], 0
lea ecx, [ebp - 0x58]
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0x88]
mov byte [ebp - 4], 6
push eax
push dword [ebp - 0x1c]
call fcn.100183b0
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x74]
cmp ecx, 0xf
jbe 0x10016ce3
mov edx, dword [ebp - 0x88]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016cd9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016ea2
push ecx
push edx
call fcn.10071822
add esp, 8
mov byte [ebp - 4], 9
mov ecx, dword [ebp - 0x5c]
cmp ecx, 0xf
jbe 0x10016d1b
mov edx, dword [ebp - 0x70]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016d11
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016ea2
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0xf
mov byte [ebp - 0x70], 0
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x144]
cmp ecx, 0xf
jbe 0x10016d6b
mov edx, dword [ebp - 0x158]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016d61
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016ea2
push ecx
push edx
call fcn.10071822
add esp, 8
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x15c]
cmp ecx, 0xf
jbe 0x10016da9
mov edx, dword [ebp - 0x170]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016d9f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016ea2
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0x160], 0
mov dword [ebp - 0x15c], 0xf
mov byte [ebp - 0x170], 0
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x9c]
cmp ecx, 0xf
jbe 0x10016e02
mov edx, dword [ebp - 0xb0]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016df8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016ea2
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x9c], 0xf
mov byte [ebp - 0xb0], 0
mov byte [ebp - 4], 0xd
mov ecx, dword [ebp - 0xcc]
cmp ecx, 0xf
jbe 0x10016e57
mov edx, dword [ebp - 0xe0]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016e4d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016ea2
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0xcc], 0xf
mov byte [ebp - 0xe0], 0
mov byte [ebp - 4], 0xe
mov ecx, dword [ebp - 0xe4]
cmp ecx, 0xf
jbe 0x10016eb2
mov edx, dword [ebp - 0xf8]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016ea8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10016ea8
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.10071822
add esp, 8
movss xmm0, dword [0x100c19f8]
sub esp, 8
cvtps2pd xmm0, xmm0
mov dword [ebp - 0xe8], 0
mov dword [ebp - 0xe4], 0xf
mov byte [ebp - 0xf8], 0
movsd qword [esp], xmm0
push 0x1007e144
movsd qword [ebp - 0x78], xmm0
call fcn.100152d0
add esp, 0xc
lea ecx, [ebp - 0x140]
mov esi, eax
push 0
push esi
call fcn.10012730
cmp dword [ebp - 0x12c], 0xf
lea ecx, [ebp - 0x140]
movsd xmm0, qword [ebp - 0x78]
lea eax, [esi + 1]
cmova ecx, dword [ebp - 0x140]
sub esp, 8
movsd qword [esp], xmm0
push 0x1007e144
push eax
push ecx
call fcn.100152b0
mov byte [ebp - 4], 0xf
add esp, 0xc
movss xmm0, dword [0x100c19ec]
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push 0x1007e144
movsd qword [ebp - 0x78], xmm0
call fcn.100152d0
add esp, 0xc
lea ecx, [ebp - 0x128]
mov esi, eax
push 0
push esi
call fcn.10012730
cmp dword [ebp - 0x114], 0xf
lea ecx, [ebp - 0x128]
movsd xmm0, qword [ebp - 0x78]
lea eax, [esi + 1]
cmova ecx, dword [ebp - 0x128]
sub esp, 8
movsd qword [esp], xmm0
push 0x1007e144
push eax
push ecx
call fcn.100152b0
mov byte [ebp - 4], 0x10
add esp, 0xc
movss xmm0, dword [0x100c19f0]
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push 0x1007e144
movsd qword [ebp - 0x78], xmm0
call fcn.100152d0
add esp, 0xc
lea ecx, [ebp - 0x110]
mov esi, eax
push 0
push esi
call fcn.10012730
cmp dword [ebp - 0xfc], 0xf
lea ecx, [ebp - 0x110]
movsd xmm0, qword [ebp - 0x78]
lea eax, [esi + 1]
cmova ecx, dword [ebp - 0x110]
sub esp, 8
movsd qword [esp], xmm0
push 0x1007e144
push eax
push ecx
call fcn.100152b0
add esp, 0x14
lea eax, [ebp - 0x110]
mov byte [ebp - 4], 0x11
push eax
mov edx, str.setang_exact
lea ecx, [ebp - 0x188]
call fcn.100182c0
add esp, 4
mov ecx, eax
mov byte [ebp - 4], 0x12
mov esi, dword [ecx + 0x14]
mov eax, esi
mov edx, dword [ecx + 0x10]
sub eax, edx
cmp eax, 1
jb 0x10017051
lea eax, [edx + 1]
mov dword [ecx + 0x10], eax
mov eax, ecx
cmp esi, 0xf
jbe 0x10017049
mov eax, dword [ecx]
mov word [eax + edx], 0x20
jmp 0x10017064
push 1
push 0x1007e1e0
push dword [ebp - 0x1c]
push 1
call fcn.10009ec0
mov ecx, eax
movups xmm0, xmmword [ecx]
movups xmmword [ebp - 0x88], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [ebp - 0x78], xmm0
mov dword [ecx + 0x10], 0
lea eax, [ebp - 0x128]
push eax
mov dword [ecx + 0x14], 0xf
lea eax, [ebp - 0x88]
mov byte [ecx], 0
lea ecx, [ebp - 0xc8]
push eax
mov byte [ebp - 4], 0x13
push dword [ebp - 0x1c]
call fcn.100183b0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0xb4]
mov eax, edx
mov ecx, dword [ebp - 0xb8]
sub eax, ecx
cmp eax, 1
jb 0x100170e9
lea eax, [ecx + 1]
cmp edx, 0xf
mov dword [ebp - 0xb8], eax
lea eax, [ebp - 0xc8]
cmova eax, dword [ebp - 0xc8]
mov word [eax + ecx], 0x20
lea eax, [ebp - 0xc8]
jmp 0x10017100
push 1
push 0x1007e1e0
push dword [ebp - 0x1c]
lea ecx, [ebp - 0xc8]
push 1
call fcn.10009ec0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x158], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x148], xmm0
mov dword [eax + 0x10], 0
lea ecx, [ebp - 0x40]
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [ebp - 0x140]
push eax
lea eax, [ebp - 0x158]
mov byte [ebp - 4], 0x15
push eax
push dword [ebp - 0x1c]
call fcn.100183b0
mov byte [ebp - 4], 0x17
mov ecx, dword [ebp - 0x144]
cmp ecx, 0xf
jbe 0x10017183
mov edx, dword [ebp - 0x158]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10017179
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001734e
push ecx
push edx
call fcn.10071822
add esp, 8
mov byte [ebp - 4], 0x18
mov ecx, dword [ebp - 0xb4]
cmp ecx, 0xf
jbe 0x100171c1
mov edx, dword [ebp - 0xc8]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100171b7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001734e
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0xb8], 0
mov dword [ebp - 0xb4], 0xf
mov byte [ebp - 0xc8], 0
mov byte [ebp - 4], 0x19
mov ecx, dword [ebp - 0x74]
cmp ecx, 0xf
jbe 0x10017217
mov edx, dword [ebp - 0x88]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1001720d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001734e
push ecx
push edx
call fcn.10071822
add esp, 8
mov byte [ebp - 4], 0x1a
mov ecx, dword [ebp - 0x174]
cmp ecx, 0xf
jbe 0x10017255
mov edx, dword [ebp - 0x188]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1001724b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001734e
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0x178], 0
mov dword [ebp - 0x174], 0xf
mov byte [ebp - 0x188], 0
mov byte [ebp - 4], 0x1b
mov ecx, dword [ebp - 0xfc]
cmp ecx, 0xf
jbe 0x100172ae
mov edx, dword [ebp - 0x110]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100172a4
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001734e
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0x100], 0
mov dword [ebp - 0xfc], 0xf
mov byte [ebp - 0x110], 0
mov byte [ebp - 4], 0x1c
mov ecx, dword [ebp - 0x114]
cmp ecx, 0xf
jbe 0x10017303
mov edx, dword [ebp - 0x128]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100172f9
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001734e
push ecx
push edx
call fcn.10071822
add esp, 8
mov dword [ebp - 0x118], 0
mov dword [ebp - 0x114], 0xf
mov byte [ebp - 0x128], 0
mov byte [ebp - 4], 0x1d
mov ecx, dword [ebp - 0x12c]
cmp ecx, 0xf
jbe 0x1001735e
mov edx, dword [ebp - 0x140]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10017354
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10017354
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.10071822
add esp, 8
push dword [0x1008b6cc]
mov dword [ebp - 0x130], 0
mov dword [ebp - 0x12c], 0xf
mov byte [ebp - 0x140], 0
call dword [ebp - 0x98]
test ax, ax
je 0x100174a9
movss xmm0, dword [0x100c19fc]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10017453
movss xmm0, dword [0x100c19e8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x10017453
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0xf
jbe 0x100173ef
mov edx, dword [ebp - 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100173e5
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001751d
push ecx
push edx
call fcn.10071822
add esp, 8
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
cmp ecx, 0xf
jbe 0x10017435
mov edx, dword [ebp - 0x58]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1001742b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001751d
push ecx
push edx
call fcn.10071822
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100714c0
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov ecx, dword [0x1008b6f0]
lea edx, [ebp - 0x58]
cmp dword [ebp - 0x44], 0xf
cmova edx, dword [ebp - 0x58]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x1b0]
call eax
cmp byte [0x1008b674], 0
je 0x10017494
mov ecx, dword [0x1008b6f0]
lea edx, [ebp - 0x40]
cmp dword [ebp - 0x2c], 0xf
cmova edx, dword [ebp - 0x40]
mov eax, dword [ecx]
push edx
mov eax, dword [eax + 0x1b0]
call eax
mov ecx, dword [0x100c1380]
push str.buttons_blip1.wav
mov eax, dword [ecx]
mov eax, dword [eax + 0x148]
call eax
mov ecx, dword [ebp - 0x2c]
cmp ecx, 0xf
jbe 0x100174d9
mov edx, dword [ebp - 0x40]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100174cf
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1001751d
push ecx
push edx
call fcn.10071822
add esp, 8
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
cmp ecx, 0xf
jbe 0x10017435
mov edx, dword [ebp - 0x58]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1001742b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x1001742b
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3