Function at 0x10090400
Capabilities:
Link many functions at runtime

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 0x1018cd69
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ebx
sub esp, 0xd0
push esi
mov esi, dword [0x102412a4]
push edi
mov edi, dword [0x102412a0]
movss dword [ebp - 0x4c], xmm3
test edi, edi
je 0x10090c2e
test esi, esi
je 0x10090c2e
mov ecx, edi
call fcn.1006ad90
test al, al
jne 0x10090c2e
push edi
push esi
xorps xmm3, xmm3
call fcn.1008eee0
mov byte [ebp - 0x1d], al
mov ecx, esi
lea eax, [ebp - 0xe0]
push eax
call fcn.1008dc80
mov edi, dword [eax + 4]
cmp edi, 1
jl 0x10090524
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10243ad0]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x10243f1c]
cmp eax, dword [ecx + 4]
jle 0x100904f5
push 0x10243f1c
call fcn.10189be4
add esp, 4
cmp dword [0x10243f1c], 0xffffffff
jne 0x100904f5
mov dword [ebp - 4], 0
mov eax, dword [0x10240fc0]
test eax, eax
jne 0x100904dc
mov ecx, 0x10240fc0
call fcn.10186990
mov eax, dword [0x10240fc0]
push 0x10243f1c
mov dword [0x102fd818], eax
mov dword [ebp - 4], 0xffffffff
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fd818]
push 1
push 0
movd xmm0, edi
cvtdq2ps xmm0, xmm0
push esi
push str.mult_bullets_per_shot
push ecx
mov dword [ebp - 0x1c], eax
movss dword [esp], xmm0
call dword [ebp - 0x1c]
fstp dword [ebp - 0x1c]
cvttss2si eax, dword [ebp - 0x1c]
add esp, 0x14
jmp 0x10090529
mov eax, 1
xor esi, esi
mov dword [ebp - 0x1c], eax
xor edi, edi
mov dword [ebp - 0x78], esi
mov dword [ebp - 0x7c], edi
mov dword [ebp - 0x74], esi
mov dword [ebp - 4], 1
xorps xmm3, xmm3
movss dword [ebp - 0x30], xmm3
xorps xmm4, xmm4
movss dword [ebp - 0x34], xmm4
xorps xmm5, xmm5
movss dword [ebp - 0x38], xmm5
test eax, eax
jle 0x10090aa4
mov eax, dword [0x10243ad0]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
lea eax, [ebp - 0x64]
mov dword [ebp - 0x80], eax
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x84], eax
lea eax, [ebp - 0x98]
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x40]
mov dword [ebp - 0x8c], eax
lea eax, [ebp - 0x44]
mov dword [ebp - 0x90], eax
lea eax, [ebp - 0xa0]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x94], eax
nop
mov eax, dword [0x102fda30]
cmp eax, dword [ecx + 4]
jle 0x100905fc
push 0x102fda30
call fcn.10189be4
add esp, 4
cmp dword [0x102fda30], 0xffffffff
jne 0x100905fc
push str.RandomSeed
push str.vstdlib.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x102fda30
mov dword [0x102fd9d4], eax
call fcn.10189b93
add esp, 4
mov eax, dword [ebx + 0xc]
add eax, edi
push eax
call dword [0x102fd9d4]
mov ecx, dword [ebp - 0x2c]
add esp, 4
mov eax, dword [0x102fd9b4]
cmp eax, dword [ecx + 4]
jle 0x1009065a
push 0x102fd9b4
call fcn.10189be4
add esp, 4
cmp dword [0x102fd9b4], 0xffffffff
jne 0x1009065a
push str.RandomFloat
push str.vstdlib.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x102fd9b4
mov dword [0x102fda08], eax
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fda08]
sub esp, 8
mov dword [ebp - 0x14], eax
mov dword [esp + 4], 0x3f000000
mov dword [esp], 0xbf000000
call dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
add esp, 8
mov eax, dword [0x102fd9b4]
fstp dword [ebp - 0x24]
cmp eax, dword [ecx + 4]
jle 0x100906cc
push 0x102fd9b4
call fcn.10189be4
add esp, 4
cmp dword [0x102fd9b4], 0xffffffff
jne 0x100906cc
push str.RandomFloat
push str.vstdlib.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x102fd9b4
mov dword [0x102fda08], eax
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fda08]
sub esp, 8
mov dword [ebp - 0x14], eax
mov dword [esp + 4], 0x3f000000
mov dword [esp], 0xbf000000
call dword [ebp - 0x14]
fadd dword [ebp - 0x24]
mov ecx, dword [ebp - 0x2c]
add esp, 8
mov eax, dword [0x102fd9b4]
fstp dword [ebp - 0x18]
cmp eax, dword [ecx + 4]
jle 0x10090741
push 0x102fd9b4
call fcn.10189be4
add esp, 4
cmp dword [0x102fd9b4], 0xffffffff
jne 0x10090741
push str.RandomFloat
push str.vstdlib.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x102fd9b4
mov dword [0x102fda08], eax
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fda08]
sub esp, 8
mov dword [ebp - 0x14], eax
mov dword [esp + 4], 0x3f000000
mov dword [esp], 0xbf000000
call dword [ebp - 0x14]
mov ecx, dword [ebp - 0x2c]
add esp, 8
mov eax, dword [0x102fd9b4]
fstp dword [ebp - 0x24]
cmp eax, dword [ecx + 4]
jle 0x100907b3
push 0x102fd9b4
call fcn.10189be4
add esp, 4
cmp dword [0x102fd9b4], 0xffffffff
jne 0x100907b3
push str.RandomFloat
push str.vstdlib.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x102fd9b4
mov dword [0x102fda08], eax
call fcn.10189b93
add esp, 4
mov eax, dword [0x102fda08]
sub esp, 8
mov dword [ebp - 0x14], eax
mov dword [esp + 4], 0x3f000000
mov dword [esp], 0xbf000000
call dword [ebp - 0x14]
fadd dword [ebp - 0x24]
add esp, 8
cmp byte [ebp - 0x1d], 0
fstp dword [ebp - 0x14]
je 0x100907eb
test edi, edi
jne 0x100907eb
xorps xmm0, xmm0
xorps xmm1, xmm1
jmp 0x100907f5
movss xmm1, dword [ebp - 0x18]
movss xmm0, dword [ebp - 0x14]
mov ecx, dword [ebx + 8]
movss dword [ebp - 0x14], xmm0
movss dword [ebp - 0x24], xmm1
call fcn.1008da50
mov ecx, dword [ebx + 8]
movss xmm1, dword [0x1022b630]
movss xmm0, dword [ecx]
mulss xmm0, xmm1
movss dword [ebp - 0x18], xmm0
fld dword [ebp - 0x18]
fsincos
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x84]
fstp dword [edx]
fstp dword [eax]
movss xmm0, dword [ecx + 4]
mulss xmm0, xmm1
movss dword [ebp - 0x18], xmm0
fld dword [ebp - 0x18]
fsincos
mov edx, dword [ebp - 0x88]
mov eax, dword [ebp - 0x8c]
fstp dword [edx]
fstp dword [eax]
movss xmm0, dword [ecx + 8]
mulss xmm0, xmm1
movss dword [ebp - 0x18], xmm0
fld dword [ebp - 0x18]
fsincos
mov edx, dword [ebp - 0x90]
mov eax, dword [ebp - 0x94]
fstp dword [edx]
fstp dword [eax]
movss xmm6, dword [ebp - 0x98]
movss xmm4, dword [ebp - 0x9c]
movaps xmm0, xmm6
mulss xmm0, dword [ebp - 0x64]
movss xmm2, dword [ebp - 0x44]
mulss xmm2, dword [0x1022ba08]
movss xmm3, dword [ebp - 0x40]
xorps xmm3, xmmword [0x1022bdc0]
movss xmm5, dword [ebp - 0xa0]
movss dword [ebp - 0x50], xmm0
movaps xmm1, xmm5
movss xmm0, dword [ebp - 0x40]
mulss xmm0, dword [ebp - 0x64]
mulss xmm1, xmm4
movss dword [ebp - 0x54], xmm0
movaps xmm0, xmm4
xorps xmm0, xmmword [0x1022bdc0]
movss dword [ebp - 0x3c], xmm0
movaps xmm0, xmm3
mulss xmm0, xmm2
movss dword [ebp - 0x28], xmm0
movaps xmm0, xmm6
movss xmm7, dword [ebp - 0x28]
mulss xmm0, xmm1
subss xmm7, xmm0
movss xmm0, dword [ebp - 0x40]
mulss xmm0, xmm1
movss xmm1, dword [ebp - 0x44]
mulss xmm1, xmm4
movss dword [ebp - 0x28], xmm7
movaps xmm7, xmm6
mulss xmm7, xmm2
movaps xmm2, xmm6
mulss xmm2, xmm1
subss xmm7, xmm0
movaps xmm0, xmm5
mulss xmm0, dword [0x1022ba08]
mulss xmm0, dword [ebp - 0x64]
movss dword [ebp - 0x48], xmm7
movss xmm7, dword [ebp - 0x4c]
movss dword [ebp - 0x18], xmm0
movaps xmm0, xmm5
mulss xmm0, xmm3
movss xmm3, dword [ebp - 0x28]
mulss xmm5, xmm6
movss xmm6, dword [ebp - 0x14]
subss xmm2, xmm0
movss xmm0, dword [ebp - 0x40]
mulss xmm0, xmm1
movss xmm1, dword [ebp - 0x44]
mulss xmm1, dword [ebp - 0x64]
subss xmm0, xmm5
mulss xmm2, xmm6
movss xmm5, dword [ebp - 0x24]
mulss xmm3, xmm5
mulss xmm2, xmm7
mulss xmm3, xmm7
addss xmm3, dword [ebp - 0x50]
addss xmm3, xmm2
movss xmm2, dword [ebp - 0x48]
mulss xmm2, xmm5
movss dword [ebp - 0x28], xmm3
mulss xmm2, xmm7
movss xmm4, dword [ebp - 0x18]
addss xmm2, dword [ebp - 0x54]
mulss xmm0, xmm6
mulss xmm4, xmm5
mulss xmm0, xmm7
mulss xmm1, xmm6
mulss xmm4, xmm7
addss xmm2, xmm0
mulss xmm1, xmm7
addss xmm4, dword [ebp - 0x3c]
movaps xmm0, xmm2
movss dword [ebp - 0x48], xmm2
mulss xmm0, xmm2
addss xmm4, xmm1
movaps xmm1, xmm3
mulss xmm1, xmm3
addss xmm0, xmm1
movss dword [ebp - 0x18], xmm4
movaps xmm1, xmm4
mulss xmm1, xmm4
addss xmm0, xmm1
call fcn.10068330
addss xmm0, dword [0x1022b5cc]
movss xmm1, dword [0x1022b6f8]
divss xmm1, xmm0
movaps xmm2, xmm1
movaps xmm3, xmm1
mulss xmm2, dword [ebp - 0x28]
mulss xmm3, dword [ebp - 0x48]
movaps xmm0, xmm2
mulss xmm1, dword [ebp - 0x18]
addss xmm0, dword [ebp - 0x30]
movss dword [ebp - 0x60], xmm2
movss dword [ebp - 0x5c], xmm3
movss dword [ebp - 0x58], xmm1
movss dword [ebp - 0x30], xmm0
movaps xmm0, xmm3
addss xmm0, dword [ebp - 0x34]
movss dword [ebp - 0x34], xmm0
movaps xmm0, xmm1
addss xmm0, dword [ebp - 0x38]
movss dword [ebp - 0x38], xmm0
cmp esi, dword [ebp - 0x74]
je 0x10090a73
movss dword [esi], xmm2
movss dword [esi + 4], xmm3
movss dword [esi + 8], xmm1
add esi, 0xc
mov dword [ebp - 0x78], esi
jmp 0x10090a83
lea eax, [ebp - 0x60]
push eax
push esi
lea ecx, [ebp - 0x7c]
call fcn.10091880
mov esi, dword [ebp - 0x78]
mov eax, dword [ebp - 0x1c]
inc edi
mov ecx, dword [ebp - 0x2c]
cmp edi, eax
jl 0x100905b0
mov edi, dword [ebp - 0x7c]
movss xmm3, dword [ebp - 0x30]
movss xmm4, dword [ebp - 0x34]
movss xmm5, dword [ebp - 0x38]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm3, xmm0
divss xmm4, xmm0
movss dword [ebp - 0x30], xmm3
movss dword [ebp - 0x34], xmm4
divss xmm5, xmm0
movss xmm0, dword [0x1022b9d0]
movss dword [ebp - 0x38], xmm5
movaps xmm1, xmm0
movss dword [ebp - 0x1c], xmm0
movaps xmm2, xmm0
movss dword [ebp - 0x70], xmm0
movss dword [ebp - 0x6c], xmm1
movss dword [ebp - 0x68], xmm2
cmp edi, esi
je 0x10090bbe
subss xmm0, xmm3
subss xmm2, xmm5
subss xmm1, xmm4
movss dword [ebp - 0x54], xmm0
movss xmm0, dword [edi]
movss dword [ebp - 0x50], xmm2
subss xmm0, xmm3
movss xmm2, dword [edi + 4]
subss xmm2, xmm4
movss dword [ebp - 0x3c], xmm1
movss xmm1, dword [edi + 8]
subss xmm1, xmm5
mulss xmm0, xmm0
mulss xmm2, xmm2
mulss xmm1, xmm1
addss xmm0, xmm2
addss xmm0, xmm1
call fcn.10068330
movss xmm1, dword [ebp - 0x3c]
movss dword [ebp - 0x4c], xmm0
movss xmm0, dword [ebp - 0x54]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x50]
mulss xmm0, xmm0
addss xmm0, xmm1
call fcn.10068330
comiss xmm0, dword [ebp - 0x4c]
jbe 0x10090b95
movss xmm0, dword [edi]
movss xmm1, dword [edi + 4]
movss xmm2, dword [edi + 8]
movss dword [ebp - 0x1c], xmm0
movss dword [ebp - 0x70], xmm0
movss dword [ebp - 0x6c], xmm1
movss dword [ebp - 0x68], xmm2
jmp 0x10090ba4
movss xmm0, dword [ebp - 0x1c]
movss xmm1, dword [ebp - 0x6c]
movss xmm2, dword [ebp - 0x68]
movss xmm3, dword [ebp - 0x30]
add edi, 0xc
movss xmm4, dword [ebp - 0x34]
movss xmm5, dword [ebp - 0x38]
cmp edi, esi
jne 0x10090af0
lea edx, [ebp - 0x60]
mov dword [ebp - 0x58], 0
lea ecx, [ebp - 0x70]
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x60], 0
call fcn.10078570
mov ecx, dword [ebx + 8]
movss xmm0, dword [ecx]
subss xmm0, dword [ebp - 0x60]
addss xmm0, dword [ecx]
movss dword [ecx], xmm0
movss xmm0, dword [ecx + 4]
subss xmm0, dword [ebp - 0x5c]
addss xmm0, dword [ecx + 4]
movss dword [ecx + 4], xmm0
movss xmm0, dword [ecx + 8]
subss xmm0, dword [ebp - 0x58]
addss xmm0, dword [ecx + 8]
movss dword [ecx + 8], xmm0
call fcn.1008da50
lea ecx, [ebp - 0x7c]
mov byte [0x102fda18], 1
call fcn.10090f10
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8