Function at 0x10091af0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x78
push esi
mov esi, ecx
mov dword [esp + 0x38], 1
xorps xmm2, xmm2
mov dword [esp + 8], esi
push edi
mov edi, edx
movss dword [esp + 0x34], xmm2
mov eax, dword [esi + 0x1c]
mov dword [esp + 0x68], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 0x6c], eax
mov eax, dword [ebp + 8]
mov dword [esp + 8], edi
movss xmm1, dword [eax]
comiss xmm1, xmm2
jbe 0x10091b8a
mov eax, dword [edi + 0x1c]
mov edi, dword [edi + 4]
movzx edx, byte [eax + edi + 7]
movzx ecx, byte [eax + edi + 6]
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
add dx, cx
mov ecx, dword [esp + 8]
movsx esi, dx
mov eax, dword [ecx + 0x1c]
movzx edx, byte [eax + edi + 5]
movzx ecx, byte [eax + edi + 4]
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
add dx, cx
movsx eax, dx
sub eax, esi
mov esi, dword [esp + 0xc]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
jmp 0x10091bb1
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 4]
movzx ecx, byte [edx + eax + 0x12]
movzx eax, byte [edx + eax + 0x13]
shl ecx, 8
add ecx, eax
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
xorps xmm1, xmmword [0x1041f480]
mov edx, dword [ebp + 8]
movss xmm4, dword [0x1041edc4]
movss dword [esp + 0x18], xmm1
movaps xmm1, xmm4
movzx edi, byte [edx + 0x14]
mov eax, edi
mov dword [esi + 0x1c], edi
movzx ecx, byte [edx + 0x15]
shr eax, 0x1f
movd xmm0, edi
cvtdq2pd xmm0, xmm0
mov dword [esi + 0x20], ecx
addsd xmm0, qword [eax*8 + 0x1041f410]
mov eax, ecx
shr eax, 0x1f
cvtpd2ps xmm0, xmm0
divss xmm1, xmm0
movd xmm0, ecx
movss dword [esp + 0x5c], xmm1
movss xmm1, dword [0x1041ed50]
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x1041f410]
mov eax, 1
cvtpd2ps xmm0, xmm0
divss xmm4, xmm0
movss dword [esp + 0x64], xmm4
test edi, edi
jne 0x10091c34
movss dword [esp + 0x30], xmm2
jmp 0x10091c5a
movd xmm0, edi
movaps xmm3, xmm1
cvtdq2ps xmm0, xmm0
sub eax, edi
divss xmm3, xmm0
movd xmm0, eax
mov eax, 1
cvtdq2ps xmm0, xmm0
mulss xmm3, xmm0
movss dword [esp + 0x30], xmm3
test ecx, ecx
je 0x10091c7f
movd xmm0, ecx
movaps xmm2, xmm1
cvtdq2ps xmm0, xmm0
sub eax, ecx
divss xmm2, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm2, xmm0
movss dword [esp + 0x34], xmm2
xor ecx, ecx
mov dword [esp + 0x38], ecx
cmp dword [edx + 0xc], ecx
jle 0x100920fb
mov edi, dword [ebp + 0x10]
add edi, 8
mov dword [esp + 0x24], ecx
mov dword [esp + 0x10], edi
xor eax, eax
nop
cmp dword [edi + 4], 0
je 0x100920d7
cmp word [edi - 4], 0
je 0x100920d7
cmp word [edi - 2], 0
je 0x100920d7
mov eax, dword [edx + 0x10]
add eax, dword [esp + 0x24]
mov dword [esp + 0x50], eax
mov eax, dword [edx + 8]
test eax, eax
jne 0x10091cd9
mov edx, dword [edx + 4]
add edx, ecx
jmp 0x10091cdc
mov edx, dword [eax + ecx*4]
mov ecx, dword [esp + 8]
call fcn.1008cb80
movzx ecx, word [esi + 0x14]
add word [edi], cx
add word [edi + 2], cx
sub word [edi - 4], cx
sub word [edi - 2], cx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [eax + 0x1c]
movzx edx, byte [eax + ecx + 0x23]
movzx eax, byte [eax + ecx + 0x22]
shl eax, 8
add edx, eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
cmp eax, edx
jge 0x10091d46
mov edx, dword [esp + 0x20]
lea edx, [edx + eax*4]
mov eax, 0x100
add edx, ecx
cwde
movzx ecx, byte [edx]
movsx ecx, cx
imul ecx, eax
movzx eax, byte [edx + 1]
jmp 0x10091d6e
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 8]
lea edx, [eax + edx*4]
mov eax, 0x100
movzx ecx, byte [edx + ecx - 4]
cwde
movsx ecx, cx
imul ecx, eax
mov eax, dword [edi + 4]
mov edi, dword [esp + 0x10]
movzx eax, byte [edx + eax - 3]
add cx, ax
mov edx, dword [esp + 0x14]
movzx eax, cx
cwde
mov dword [esp + 0x54], eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x44]
mov ecx, dword [esp + 0xc]
push eax
lea eax, [esp + 0x68]
push eax
lea eax, [esp + 0x64]
push eax
mov eax, dword [esi + 0x20]
sub esp, 8
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x1041f410]
mov eax, dword [esi + 0x1c]
cvtpd2ps xmm3, xmm0
movd xmm0, eax
mulss xmm3, dword [esp + 0x30]
shr eax, 0x1f
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x1041f410]
cvtpd2ps xmm2, xmm0
mulss xmm2, dword [esp + 0x30]
call fcn.1008f4f0
mov eax, dword [esi + 0x10]
movzx edi, word [edi + 2]
mov edx, dword [esp + 0x28]
imul edi, eax
mov dword [esp + 0x58], eax
mov ecx, dword [esp + 0x24]
movzx eax, word [edx]
add edi, eax
mov eax, dword [esi + 0x1c]
add edi, dword [esi + 0x24]
movzx esi, word [edx - 4]
mov ecx, dword [ecx + 0x20]
sub esi, eax
movzx edx, word [edx - 2]
inc esi
movd xmm0, eax
sub edx, ecx
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
inc edx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x2c]
addsd xmm0, qword [eax*8 + 0x1041f410]
lea eax, [esp + 0x44]
push eax
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [esp + 0x34]
movss dword [esp + 0x3c], xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
shr ecx, 0x1f
addsd xmm0, qword [ecx*8 + 0x1041f410]
mov ecx, dword [esp + 0x24]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [esp + 0x34]
movss dword [esp + 0x38], xmm0
call fcn.1008f3e0
movss xmm3, dword [esp + 0x38]
add esp, 0x1c
movss xmm2, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 8]
push 0
mov dword [esp + 0x48], eax
lea eax, [esp + 0x4c]
push 0
push eax
lea eax, [esp + 0x58]
push eax
sub esp, 8
call fcn.1008f4f0
mov ecx, dword [esp + 0x40]
add esp, 0x18
mov eax, dword [esp + 0x40]
test esi, esi
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], eax
je 0x10091f8a
test ecx, ecx
je 0x10091f8a
movss xmm0, dword [esp + 0x1c]
lea eax, [esp + 0x14]
minss xmm0, dword [esp + 0x20]
movss xmm2, dword [0x1041ed40]
mov edx, dword [esp + 0x44]
push ecx
push eax
divss xmm2, xmm0
lea eax, [esp + 0x30]
mov dword [esp + 0x1c], 0
push eax
mov ecx, esi
mov dword [esp + 0x34], 0
call fcn.10090f50
mov edi, eax
add esp, 0xc
test edi, edi
je 0x10091f8a
movss xmm0, dword [esp + 0x1c]
lea ecx, [esp + 0x70]
mov esi, dword [esp + 0x28]
sub esp, 8
mov edx, edi
push dword [esp + 0x50]
push dword [esp + 0x58]
sub esp, 0x10
movss dword [esp + 4], xmm0
movss xmm0, dword [esp + 0x40]
movss dword [esp], xmm0
push dword [esp + 0x34]
push esi
call fcn.10090800
add esp, 0x28
test esi, esi
je 0x10091f65
mov eax, dword [0x1060b300]
test eax, eax
je 0x10091f65
dec dword [eax + 0x370]
push esi
mov esi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call esi
mov eax, dword [0x1060b300]
add esp, 4
test eax, eax
je 0x10091f80
dec dword [eax + 0x370]
push edi
call esi
mov esi, dword [esp + 0x30]
add esp, 4
test esi, esi
je 0x10091f9d
mov eax, dword [0x1060b300]
test eax, eax
je 0x10091f9d
dec dword [eax + 0x370]
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov eax, dword [esp + 0x10]
add esp, 4
mov edi, dword [esp + 0x10]
mov ecx, dword [eax + 0x1c]
cmp ecx, 1
jbe 0x10091fe4
mov esi, dword [eax + 0x10]
movzx eax, word [edi - 2]
movzx edx, word [edi - 4]
push ecx
movzx ecx, word [edi + 2]
imul ecx, esi
push esi
push eax
movzx eax, word [edi]
add ecx, eax
mov eax, dword [esp + 0x18]
add ecx, dword [eax + 0x24]
call fcn.10091620
mov eax, dword [esp + 0x18]
add esp, 0xc
mov ecx, dword [eax + 0x20]
cmp ecx, 1
jbe 0x10092015
mov esi, dword [eax + 0x10]
movzx eax, word [edi - 2]
movzx edx, word [edi - 4]
push ecx
movzx ecx, word [edi + 2]
imul ecx, esi
push esi
push eax
movzx eax, word [edi]
add ecx, eax
mov eax, dword [esp + 0x18]
add ecx, dword [eax + 0x24]
call fcn.10091870
add esp, 0xc
mov esi, dword [esp + 0x50]
movzx eax, word [edi]
movd xmm0, dword [esp + 0x54]
mov ecx, dword [esp + 0x58]
cvtdq2ps xmm0, xmm0
mov word [esi], ax
movzx eax, word [edi + 2]
mov word [esi + 2], ax
movzx eax, word [edi - 4]
add ax, word [edi]
mulss xmm0, dword [esp + 0x18]
mov edx, dword [esp + 0x60]
mov word [esi + 4], ax
movzx eax, word [edi + 2]
add ax, word [edi - 2]
movss dword [esi + 0x10], xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov word [esi + 6], ax
mulss xmm0, dword [esp + 0x5c]
addss xmm0, dword [esp + 0x30]
movss dword [esi + 8], xmm0
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [esp + 0x64]
addss xmm0, dword [esp + 0x34]
movss dword [esi + 0xc], xmm0
movzx eax, word [edi - 4]
add eax, ecx
mov ecx, dword [esp + 0x38]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [esp + 0x5c]
addss xmm0, dword [esp + 0x30]
movss dword [esi + 0x14], xmm0
movzx eax, word [edi - 2]
add eax, edx
mov edx, dword [ebp + 8]
movd xmm0, eax
mov eax, dword [esp + 0x24]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [esp + 0x64]
addss xmm0, dword [esp + 0x34]
movss dword [esi + 0x18], xmm0
mov esi, dword [esp + 0xc]
jmp 0x100920df
mov dword [esp + 0x3c], 0
inc ecx
add edi, 0x10
add eax, 0x1c
mov dword [esp + 0x10], edi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x24], eax
cmp ecx, dword [edx + 0xc]
jl 0x10091ca0
mov eax, dword [esp + 0x68]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x6c]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x3c]
pop edi
pop esi
mov esp, ebp
pop ebp
ret