Function at 0x10015500
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10038029
mov eax, dword fs:[0]
push eax
sub esp, 0x258
mov eax, dword [0x1004a164]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x228], ecx
mov eax, dword [ebp - 0x228]
mov ecx, dword [eax + 0x14]
mov edx, dword [ebp + 0xc]
lea eax, [ecx + edx + 0xa]
mov dword [ebp - 0x220], eax
mov ecx, dword [ebp - 0x228]
mov edx, dword [ecx + 0x18]
mov eax, dword [ebp - 0x228]
imul ecx, dword [eax + 0x10], 0x14
lea edx, [edx + ecx + 0xf]
mov dword [ebp - 0x21c], edx
mov byte [ebp - 0x221], 0
mov dword [ebp - 0x234], 0
jmp 0x10015586
mov eax, dword [ebp - 0x234]
add eax, 1
mov dword [ebp - 0x234], eax
cmp dword [ebp - 0x234], 0x32
jge 0x100155b3
mov ecx, dword [ebp - 0x228]
add ecx, dword [ebp - 0x234]
mov dl, byte [ecx + 0x28]
mov byte [ebp - 0x221], dl
movzx eax, byte [ebp - 0x221]
test eax, eax
je 0x100155b1
jmp 0x100155b3
jmp 0x10015577
cmp dword [ebp + 8], 0
jne 0x1001572b
mov ecx, dword [ebp + 0x10]
push ecx
push 0xff
push 0xff
push 0xff
push 0xff
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
push eax
push 0
mov ecx, dword [0x1004dff4]
push ecx
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
mov edx, dword [ebp - 0x220]
add edx, 0x73
mov dword [ebp - 0x220], edx
push 0x16
push 0x16
mov eax, dword [ebp - 0x21c]
sub eax, 2
push eax
mov ecx, dword [ebp - 0x220]
add ecx, 0x12
push ecx
mov ecx, 0x1004de84
call fcn.10019c30
movzx edx, al
test edx, edx
je 0x10015675
movzx eax, byte [ebp - 0x221]
test eax, eax
jne 0x10015675
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ecx]
ucomiss xmm0, dword [0x100393cc]
lahf
test ah, 0x44
jp 0x1001565c
mov dword [ebp - 0x23c], 1
jmp 0x10015666
mov dword [ebp - 0x23c], 0
cvtsi2ss xmm0, dword [ebp - 0x23c]
mov edx, dword [ebp + 0x18]
movss dword [edx], xmm0
push 0xff
push 0x18
push 0x18
push 0x18
push 0x11
push 0x11
mov eax, dword [ebp - 0x21c]
push eax
mov ecx, dword [ebp - 0x220]
add ecx, 0x12
push ecx
mov ecx, 0x1004dfdc
call fcn.10005f30
mov edx, dword [ebp + 0x18]
movss xmm0, dword [edx]
ucomiss xmm0, dword [0x100393cc]
lahf
test ah, 0x44
jnp 0x100156e3
push 0xff
push 0xbe
push 0x1a
push 0x45
push 0xd
push 0xd
mov eax, dword [ebp - 0x21c]
add eax, 2
push eax
mov ecx, dword [ebp - 0x220]
add ecx, 0x14
push ecx
mov ecx, 0x1004dfdc
call fcn.10005f30
push 0x11
push 0x11
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
add eax, 0x12
push eax
mov ecx, 0x1004de84
call fcn.10019d20
movzx ecx, al
test ecx, ecx
je 0x10015726
mov ecx, 0x1004d910
call fcn.10018e20
movzx edx, al
test edx, edx
jne 0x10015726
push 2
mov ecx, 0x1004d910
call fcn.10018ce0
jmp 0x100165bf
cmp dword [ebp + 8], 1
jne 0x10015821
mov eax, dword [ebp - 0x21c]
add eax, 7
mov dword [ebp - 0x21c], eax
mov ecx, dword [ebp + 0x10]
push ecx
push 0xff
push 0xff
push 0xff
push 0xff
mov edx, dword [ebp - 0x21c]
add edx, 5
push edx
mov eax, dword [ebp - 0x220]
push eax
push 0
mov ecx, dword [0x1004dff4]
push ecx
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
mov edx, dword [ebp - 0x220]
add edx, 0x55
mov dword [ebp - 0x264], edx
mov eax, dword [ebp - 0x21c]
add eax, 5
mov dword [ebp - 0x260], eax
mov ecx, dword [ebp - 0x228]
mov edx, dword [ecx + 0x1c]
mov dword [ebp - 0x258], edx
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x254], eax
mov ecx, dword [ebp - 0x228]
mov edx, dword [ecx + 0x20]
mov dword [ebp - 0x250], edx
mov eax, dword [ebp - 0x228]
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0x25c], ecx
sub esp, 0x18
mov edx, esp
mov eax, dword [ebp - 0x264]
mov dword [edx], eax
mov ecx, dword [ebp - 0x260]
mov dword [edx + 4], ecx
mov eax, dword [ebp - 0x25c]
mov dword [edx + 8], eax
mov ecx, dword [ebp - 0x258]
mov dword [edx + 0xc], ecx
mov eax, dword [ebp - 0x254]
mov dword [edx + 0x10], eax
mov ecx, dword [ebp - 0x250]
mov dword [edx + 0x14], ecx
mov ecx, dword [ebp - 0x228]
call fcn.10018cc0
jmp 0x100165bf
cmp dword [ebp + 8], 2
jne 0x10015e8c
mov edx, dword [ebp - 0x21c]
add edx, 3
mov dword [ebp - 0x21c], edx
movss xmm0, dword [ebp + 0x20]
addss xmm0, dword [0x1003a1e0]
cvttss2si eax, xmm0
mov dword [ebp - 0x24c], eax
cvtsi2ss xmm0, dword [ebp - 0x24c]
movss xmm1, dword [ebp + 0x20]
divss xmm1, xmm0
movss dword [ebp - 0x238], xmm1
mov byte [ebp - 0x22a], 0
mov ecx, dword [ebp - 0x21c]
add ecx, 8
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x228]
movzx eax, byte [edx + 0x6c]
test eax, eax
je 0x10015945
mov ecx, 4
imul edx, ecx, 3
mov eax, dword [ebp - 0x228]
cvttss2si ecx, dword [eax + edx]
push ecx
mov edx, 4
shl edx, 1
mov eax, dword [ebp - 0x228]
cvttss2si ecx, dword [eax + edx]
push ecx
mov edx, 4
shl edx, 0
mov eax, dword [ebp - 0x228]
cvttss2si ecx, dword [eax + edx]
push ecx
mov edx, 4
imul eax, edx, 0
mov ecx, dword [ebp - 0x228]
cvttss2si edx, dword [ecx + eax]
push edx
push 5
mov eax, dword [ebp - 0x228]
movss xmm0, dword [eax + 0x70]
addss xmm0, dword [0x100394c0]
cvttss2si ecx, xmm0
push ecx
mov edx, dword [ebp - 0x21c]
add edx, 4
push edx
mov eax, dword [ebp - 0x220]
push eax
mov ecx, 0x1004dfdc
call fcn.10005f30
push 0xff
push 0x18
push 0x18
push 0x18
push 0x12
push 0x7c
mov ecx, dword [ebp - 0x21c]
add ecx, 9
push ecx
mov edx, dword [ebp - 0x220]
sub edx, 7
push edx
mov ecx, 0x1004dfdc
call fcn.10005f30
jmp 0x10015972
push 0xff
push 0x18
push 0x18
push 0x18
push 0x12
push 0x7c
mov eax, dword [ebp - 0x21c]
add eax, 9
push eax
mov ecx, dword [ebp - 0x220]
sub ecx, 7
push ecx
mov ecx, 0x1004dfdc
call fcn.10005f30
lea edx, [ebp - 0x218]
push edx
lea eax, [ebp - 0x214]
push eax
mov ecx, 0x1004de84
call fcn.10018db0
mov ecx, dword [ebp - 0x220]
sub ecx, 0xc
cmp dword [ebp - 0x214], ecx
jl 0x10015a55
cvtsi2ss xmm0, dword [ebp - 0x214]
cvtsi2ss xmm1, dword [ebp - 0x220]
mov edx, dword [ebp - 0x228]
addss xmm1, dword [edx + 0x70]
addss xmm1, dword [0x10039fe4]
comiss xmm1, xmm0
jb 0x10015a55
mov eax, dword [ebp - 0x218]
cmp eax, dword [ebp - 0x21c]
jl 0x10015a55
mov ecx, dword [ebp - 0x21c]
add ecx, 0x18
cmp dword [ebp - 0x218], ecx
jg 0x10015a55
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx edx, ax
test edx, edx
je 0x10015a55
cmp dword [0x1004a010], 0xffffffff
jne 0x10015a55
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [0x1004d900], eax
jae 0x10015a55
mov eax, dword [0x1004d8fc]
movzx ecx, byte [eax + 0x1004d8c8]
test ecx, ecx
jne 0x10015a55
mov edx, dword [0x1004d8fc]
mov dword [0x1004a010], edx
mov eax, dword [0x1004d8fc]
mov byte [eax + 0x1004d8c8], 1
mov ecx, 0x1004d910
call fcn.10018e20
movzx ecx, al
test ecx, ecx
jne 0x10015a55
push 2
mov ecx, 0x1004d910
call fcn.10018ce0
mov edx, dword [ebp - 0x220]
sub edx, 0x68
cmp dword [ebp - 0x214], edx
jl 0x10015b35
cvtsi2ss xmm0, dword [ebp - 0x214]
cvtsi2ss xmm1, dword [ebp - 0x220]
mov eax, dword [ebp - 0x228]
addss xmm1, dword [eax + 0x70]
addss xmm1, dword [0x1003a1e8]
comiss xmm1, xmm0
jb 0x10015b35
mov ecx, dword [ebp - 0x21c]
sub ecx, 0x41a
cmp dword [ebp - 0x218], ecx
jl 0x10015b35
mov edx, dword [ebp - 0x21c]
add edx, 0x41a
cmp dword [ebp - 0x218], edx
jg 0x10015b35
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
cwde
test eax, eax
je 0x10015b35
movzx ecx, byte [ebp - 0x221]
test ecx, ecx
jne 0x10015b35
mov edx, dword [0x1004d8fc]
movzx eax, byte [edx + 0x1004d8c8]
test eax, eax
je 0x10015b33
mov ecx, dword [ebp - 0x214]
sub ecx, dword [ebp - 0x220]
cvtsi2ss xmm0, ecx
mulss xmm0, dword [ebp - 0x238]
addss xmm0, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x18]
movss dword [edx], xmm0
mov byte [ebp - 0x22a], 1
mov ecx, 0x1004d910
call fcn.10018e20
movzx eax, al
test eax, eax
jne 0x10015b33
push 2
mov ecx, 0x1004d910
call fcn.10018ce0
jmp 0x10015b78
mov ecx, dword [0x1004d8fc]
movzx edx, byte [ecx + 0x1004d8c8]
test edx, edx
je 0x10015b78
mov dword [0x1004a010], 0xffffffff
mov eax, dword [0x1004d8fc]
mov dword [ebp - 0x240], eax
cmp dword [ebp - 0x240], 0x32
jae 0x10015b66
jmp 0x10015b6b
call fcn.1001da97
mov ecx, dword [ebp - 0x240]
mov byte [ecx + 0x1004d8c8], 0
mov edx, dword [ebp + 0x18]
movss xmm0, dword [edx]
comiss xmm0, dword [ebp + 0x20]
jbe 0x10015b91
mov eax, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x20]
movss dword [eax], xmm0
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x1c]
comiss xmm0, dword [ecx]
jbe 0x10015baa
mov edx, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x1c]
movss dword [edx], xmm0
mov dword [ebp - 0x230], 0
jmp 0x10015bc5
mov eax, dword [ebp - 0x230]
add eax, 1
mov dword [ebp - 0x230], eax
mov ecx, dword [ebp - 0x230]
cmp ecx, dword [0x1004a12c]
jg 0x10015cb4
push 0xff
push 0xbe
push 0x1a
push 0x45
push 0x10
mov edx, dword [0x1004a12c]
sub edx, 4
push edx
mov eax, dword [0x1004a12c]
mov ecx, dword [ebp - 0x21c]
lea edx, [ecx + eax + 4]
push edx
cvtsi2ss xmm0, dword [ebp - 0x220]
mov eax, dword [ebp + 0x18]
movss xmm1, dword [eax]
divss xmm1, dword [ebp - 0x238]
addss xmm0, xmm1
cvtsi2ss xmm1, dword [0x1004a12c]
subss xmm0, xmm1
cvtsi2ss xmm1, dword [ebp - 0x230]
addss xmm0, xmm1
cvttss2si ecx, xmm0
push ecx
mov ecx, 0x1004dfdc
call fcn.10005f30
push 0xff
push 0xbe
push 0x1a
push 0x45
push 0x10
mov edx, dword [0x1004a12c]
sub edx, 4
push edx
mov eax, dword [0x1004a12c]
mov ecx, dword [ebp - 0x21c]
lea edx, [ecx + eax + 4]
push edx
cvtsi2ss xmm0, dword [ebp - 0x220]
mov eax, dword [ebp + 0x18]
movss xmm1, dword [eax]
divss xmm1, dword [ebp - 0x238]
addss xmm0, xmm1
cvtsi2ss xmm1, dword [0x1004a12c]
subss xmm0, xmm1
cvtsi2ss xmm1, dword [ebp - 0x230]
addss xmm0, xmm1
cvttss2si ecx, xmm0
push ecx
mov ecx, 0x1004dfdc
call fcn.10005f30
jmp 0x10015bb6
mov edx, dword [ebp - 0x228]
cmp dword [edx + 0x68], 0xffffffff
je 0x10015d22
mov eax, 4
imul ecx, eax, 0
mov edx, dword [ebp - 0x228]
mov eax, dword [edx + 0x68]
mov edx, dword [ebp - 0x228]
mov ecx, dword [edx + ecx]
mov dword [eax*4 + 0x1004c188], ecx
mov edx, 4
shl edx, 0
mov eax, dword [ebp - 0x228]
mov ecx, dword [eax + 0x68]
mov eax, dword [ebp - 0x228]
mov edx, dword [eax + edx]
mov dword [ecx*4 + 0x1004c18c], edx
mov eax, 4
shl eax, 1
mov ecx, dword [ebp - 0x228]
mov edx, dword [ecx + 0x68]
mov ecx, dword [ebp - 0x228]
mov eax, dword [ecx + eax]
mov dword [edx*4 + 0x1004c190], eax
mov ecx, dword [ebp - 0x228]
movzx edx, byte [ecx + 0x6d]
test edx, edx
je 0x10015e48
mov eax, dword [ebp + 0x10]
push eax
lea ecx, [ebp - 0x110]
push ecx
call fcn.100274c0
add esp, 8
mov edx, dword [ebp + 0x18]
cvtss2sd xmm0, dword [edx]
sub esp, 8
movsd qword [esp], xmm0
push str._2.f
lea eax, [ebp - 0x210]
push eax
call fcn.10012150
add esp, 0x10
mov ecx, dword [ebp + 0x10]
push ecx
push 0x1003a198
lea edx, [ebp - 0x110]
push edx
call fcn.10012150
add esp, 0xc
push 0xff
push 0x18
push 0x18
push 0x18
push 0x12
push 0x22
mov eax, dword [ebp - 0x21c]
add eax, 9
push eax
mov ecx, dword [ebp - 0x220]
add ecx, 0x7c
push ecx
mov ecx, 0x1004dfdc
call fcn.10005f30
lea edx, [ebp - 0x210]
push edx
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [ebp - 0x21c]
add eax, 0xa
push eax
mov ecx, dword [ebp - 0x220]
add ecx, 0x81
push ecx
push 0
mov edx, dword [0x1004dfe8]
push edx
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
lea eax, [ebp - 0x110]
push eax
push 0xff
push 0xff
push 0xff
push 0xff
cvtsi2sd xmm0, dword [ebp - 0x21c]
subsd xmm0, qword [0x1003a1c0]
cvttsd2si ecx, xmm0
push ecx
mov edx, dword [ebp - 0x220]
sub edx, 4
push edx
push 0
mov eax, dword [0x1004dff4]
push eax
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
jmp 0x10015e87
mov ecx, dword [ebp + 0x10]
push ecx
push 0xff
push 0xff
push 0xff
push 0xff
mov edx, dword [ebp - 0x21c]
sub edx, 1
push edx
mov eax, dword [ebp - 0x220]
push eax
push 0
mov ecx, dword [0x1004dff4]
push ecx
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
jmp 0x100165bf
cmp dword [ebp + 8], 3
jne 0x10016168
push 0x14
push 0x32
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
push eax
mov ecx, 0x1004de84
call fcn.10019be0
mov byte [ebp - 0x229], al
movss xmm0, dword [ebp + 0x28]
ucomiss xmm0, dword [0x10039470]
lahf
test ah, 0x44
jp 0x10015faa
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ecx]
ucomiss xmm0, dword [0x100393cc]
lahf
test ah, 0x44
jnp 0x10015f1e
push 0
push 0
push 0x8c
push 0xff
push 0xe9
push 0xe9
push 0xe9
push 0x14
push 0x32
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
push eax
call fcn.10018520
add esp, 0x2c
jmp 0x10015fa5
movzx ecx, byte [ebp - 0x229]
test ecx, ecx
je 0x10015f68
push 0xe9
push 0xe9
push 0xe9
push 0xff
push 0x9a
push 0xab
push 0xb9
push 0x14
push 0x32
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
push eax
call fcn.10018520
add esp, 0x2c
jmp 0x10015fa5
push 0xe9
push 0xe9
push 0xe9
push 0xff
push 0xe9
push 0xe9
push 0xe9
push 0x14
push 0x32
mov ecx, dword [ebp - 0x21c]
push ecx
mov edx, dword [ebp - 0x220]
push edx
call fcn.10018520
add esp, 0x2c
jmp 0x1001607e
mov eax, dword [ebp + 0x18]
movss xmm0, dword [eax]
ucomiss xmm0, dword [ebp + 0x28]
lahf
test ah, 0x44
jp 0x10015ff7
push 0
push 0
push 0x8c
push 0xff
push 0xe9
push 0xe9
push 0xe9
push 0x14
push 0x32
mov ecx, dword [ebp - 0x21c]
push ecx
mov edx, dword [ebp - 0x220]
push edx
call fcn.10018520
add esp, 0x2c
jmp 0x1001607e
movzx eax, byte [ebp - 0x229]
test eax, eax
je 0x10016041
push 0xe9
push 0xe9
push 0xe9
push 0xff
push 0x9a
push 0xab
push 0xb9
push 0x14
push 0x32
mov ecx, dword [ebp - 0x21c]
push ecx
mov edx, dword [ebp - 0x220]
push edx
call fcn.10018520
add esp, 0x2c
jmp 0x1001607e
push 0xe9
push 0xe9
push 0xe9
push 0xff
push 0xe9
push 0xe9
push 0xe9
push 0x14
push 0x32
mov eax, dword [ebp - 0x21c]
push eax
mov ecx, dword [ebp - 0x220]
push ecx
call fcn.10018520
add esp, 0x2c
mov edx, dword [ebp + 0x10]
push edx
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [ebp - 0x21c]
add eax, 2
push eax
cvtsi2sd xmm0, dword [ebp - 0x220]
addsd xmm0, qword [0x1003a1d0]
cvttsd2si ecx, xmm0
push ecx
push 1
mov edx, dword [0x1004dfe8]
push edx
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
push 0x14
push 0x32
mov eax, dword [ebp - 0x21c]
push eax
mov ecx, dword [ebp - 0x220]
push ecx
mov ecx, 0x1004de84
call fcn.10019d20
movzx edx, al
test edx, edx
je 0x10016163
mov ecx, 0x1004de84
call fcn.10018de0
movzx eax, al
test eax, eax
je 0x10016163
movzx ecx, byte [ebp - 0x221]
test ecx, ecx
jne 0x10016163
movss xmm0, dword [ebp + 0x28]
ucomiss xmm0, dword [0x10039470]
lahf
test ah, 0x44
jp 0x10016157
mov edx, dword [ebp + 0x18]
movss xmm0, dword [edx]
ucomiss xmm0, dword [0x100393cc]
lahf
test ah, 0x44
jp 0x1001613c
mov dword [ebp - 0x244], 1
jmp 0x10016146
mov dword [ebp - 0x244], 0
cvtsi2ss xmm0, dword [ebp - 0x244]
mov eax, dword [ebp + 0x18]
movss dword [eax], xmm0
jmp 0x10016163
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x28]
movss dword [ecx], xmm0
jmp 0x100165bf
cmp dword [ebp + 8], 4
jne 0x100165bf
mov edx, dword [ebp + 0x10]
push edx
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [ebp - 0x21c]
push eax
mov ecx, dword [ebp - 0x220]
push ecx
push 0
mov edx, dword [0x1004dff4]
push edx
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
mov eax, dword [ebp - 0x21c]
add eax, 1
mov dword [ebp - 0x21c], eax
mov ecx, dword [ebp - 0x220]
add ecx, 0x55
mov dword [ebp - 0x220], ecx
push 0xff
push 0xe9
push 0xe9
push 0xe9
push 0x10
push 0x10
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
push eax
mov ecx, 0x1004dfdc
call fcn.10005f30
push 0x10
push 0x10
mov ecx, dword [ebp - 0x21c]
push ecx
mov edx, dword [ebp - 0x220]
push edx
mov ecx, 0x1004de84
call fcn.10019d20
movzx eax, al
test eax, eax
je 0x10016280
mov ecx, 0x1004de84
call fcn.10018de0
movzx ecx, al
test ecx, ecx
je 0x1001624e
movzx edx, byte [ebp - 0x221]
test edx, edx
jne 0x1001624e
mov eax, dword [ebp + 0x18]
movss xmm0, dword [eax]
subss xmm0, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x18]
movss dword [ecx], xmm0
mov ecx, 0x1004de84
call fcn.10018e50
movzx edx, al
test edx, edx
je 0x10016280
movzx eax, byte [ebp - 0x221]
test eax, eax
jne 0x10016280
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ecx]
subss xmm0, dword [0x1003a1e4]
mov edx, dword [ebp + 0x18]
movss dword [edx], xmm0
mov eax, dword [0x1004e0a4]
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx + eax*4]
mov eax, dword [0x1004de48]
cmp eax, dword [edx + 4]
jle 0x100162e9
push 0x1004de48
call fcn.1001d2f5
add esp, 4
cmp dword [0x1004de48], 0xffffffff
jne 0x100162e9
mov dword [ebp - 4], 0
push 0x1003a19c
mov ecx, 0x1004de30
call fcn.100038f0
push 0x10038520
call fcn.1001d743
add esp, 4
mov dword [ebp - 4], 0xffffffff
push 0x1004de48
call fcn.1001d2ab
add esp, 4
mov ecx, 0x1004de30
call fcn.1000a800
push eax
push 0xff
push 0xe9
push 0xe9
push 0xe9
mov ecx, dword [ebp - 0x21c]
sub ecx, 3
push ecx
cvtsi2sd xmm0, dword [ebp - 0x220]
addsd xmm0, qword [0x1003a1b8]
cvttsd2si edx, xmm0
push edx
push 1
mov eax, dword [0x1004dff4]
push eax
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
mov ecx, dword [0x1004e0a4]
mov edx, dword fs:[0x2c]
mov eax, dword [edx + ecx*4]
mov ecx, dword [0x1004de64]
cmp ecx, dword [eax + 4]
jle 0x100163a7
push 0x1004de64
call fcn.1001d2f5
add esp, 4
cmp dword [0x1004de64], 0xffffffff
jne 0x100163a7
mov dword [ebp - 4], 1
push str._2.f
mov ecx, 0x1004de4c
call fcn.100038f0
push 0x10038540
call fcn.1001d743
add esp, 4
mov dword [ebp - 4], 0xffffffff
push 0x1004de64
call fcn.1001d2ab
add esp, 4
mov edx, dword [ebp + 0x18]
cvtss2sd xmm0, dword [edx]
sub esp, 8
movsd qword [esp], xmm0
mov ecx, 0x1004de4c
call fcn.1000a800
push eax
push 0xff
push 0xff
push 0xff
push 0xff
mov eax, dword [ebp - 0x21c]
sub eax, 2
push eax
mov ecx, dword [ebp - 0x220]
add ecx, 0xa
cvtsi2sd xmm0, ecx
addsd xmm0, qword [0x1003a1c8]
cvttsd2si edx, xmm0
push edx
push 1
mov eax, dword [0x1004dff4]
push eax
push 0x1004dfdc
call fcn.10005de0
add esp, 0x30
mov ecx, dword [ebp - 0x220]
add ecx, 0x2c
mov dword [ebp - 0x220], ecx
push 0xff
push 0xe9
push 0xe9
push 0xe9
push 0x10
push 0x10
mov edx, dword [ebp - 0x21c]
push edx
mov eax, dword [ebp - 0x220]
push eax
mov ecx, 0x1004dfdc
call fcn.10005f30
push 0x10
push 0x10
mov ecx, dword [ebp - 0x21c]
push ecx
mov edx, dword [ebp - 0x220]
push edx
mov ecx, 0x1004de84
call fcn.10019d20
movzx eax, al
test eax, eax
je 0x100164d1
mov ecx, 0x1004de84
call fcn.10018de0
movzx ecx, al
test ecx, ecx
je 0x1001649f
movzx edx, byte [ebp - 0x221]
test edx, edx
jne 0x1001649f
mov eax, dword [ebp + 0x18]
movss xmm0, dword [eax]
addss xmm0, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x18]
movss dword [ecx], xmm0
mov ecx, 0x1004de84
call fcn.10018e50
movzx edx, al
test edx, edx
je 0x100164d1
movzx eax, byte [ebp - 0x221]
test eax, eax
jne 0x100164d1
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ecx]
addss xmm0, dword [0x1003a1e4]
mov edx, dword [ebp + 0x18]
movss dword [edx], xmm0
mov eax, dword [0x1004e0a4]
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx + eax*4]
mov eax, dword [0x1004de80]
cmp eax, dword [edx + 4]
jle 0x1001653a
push 0x1004de80
call fcn.1001d2f5
add esp, 4
cmp dword [0x1004de80], 0xffffffff
jne 0x1001653a
mov dword [ebp - 4], 2
push 0x1003a1a0
mov ecx, 0x1004de68
call fcn.100038f0
push 0x10038530
call fcn.1001d743
add esp, 4
mov dword [ebp - 4], 0xffffffff
push 0x1004de80
call fcn.1001d2ab
add esp, 4
mov ecx, 0x1004de68
call fcn.1000a800
push eax
push 0xff
push 0xe9
push 0xe9
push 0xe9
mov ecx, dword [ebp - 0x21c]
sub ecx, 3
push ecx
cvtsi2sd xmm0, dword [ebp - 0x220]
addsd xmm0, qword [0x1003a1b8]
cvttsd2si edx, xmm0
push edx
push 1
mov eax, dword [0x1004dff4]
push eax
push 0x1004dfdc
call fcn.10005de0
add esp, 0x28
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x1c]
comiss xmm0, dword [ecx]
jbe 0x100165a6
mov edx, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x20]
movss dword [edx], xmm0
mov eax, dword [ebp + 0x18]
movss xmm0, dword [eax]
comiss xmm0, dword [ebp + 0x20]
jbe 0x100165bf
mov ecx, dword [ebp + 0x18]
movss xmm0, dword [ebp + 0x1c]
movss dword [ecx], xmm0
cmp dword [ebp + 8], 2
jne 0x100165d1
mov dword [ebp - 0x248], 2
jmp 0x100165db
mov dword [ebp - 0x248], 1
mov edx, dword [ebp - 0x248]
push edx
mov ecx, dword [ebp - 0x228]
call fcn.10018e90
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.1001d3cb
mov esp, ebp
pop ebp
ret 0x28