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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x7c]
cmp eax, dword [esp + 0x34]
mov dword [esp + 0x38], esi
jg 0x66e6cb
mov esi, dword [esp + 0x28]
shl ecx, 8
mov ebp, eax
mov dword [esp + 0x30], ecx
shl ebp, 8
xor ecx, ecx
sub ebx, edx
add ebp, edx
mov dword [esp + 0x24], eax
mov esi, dword [esi + 0xa4c]
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], esi
cmp dword [esp + 0x20], 0x88fc60
je 0x66e5a2
cmp dword [esp + 0x20], fcn.00891be0
je 0x66e5a2
cmp dword [esp + 0x20], 0x895c30
je 0x66e5a2
cmp dword [esp + 0x20], 0x893b40
je 0x66e732
mov eax, dword [esp + 0x3c]
xor esi, esi
add eax, ebp
mov edi, eax
mov eax, dword [esp + 0x30]
test eax, eax
jg 0x66e493
jmp 0x66e535
test ax, ax
je 0x66e4ec
shr ax, 1
movzx ecx, cx
movzx eax, ax
add eax, dword [esp + 0x30]
add esi, 1
mov edx, eax
sar edx, 0x1f
idiv ecx
mov word [edi + 0x80], ax
add edi, 2
cmp esi, 0x40
je 0x66e5ee
mov edx, dword [esp + 0x28]
movzx eax, byte [edx + esi + 0xa60]
mov edx, dword [esp + 0x2c]
movzx ebx, word [edx + eax*2]
imul ebx, dword [esp + 0x24]
mov dword [esp], 0x400000
mov dword [esp + 4], 0
mov eax, ebx
sar eax, 0x1f
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
call fcn.00de3430
mov dword [ebp + esi*4], eax
mov eax, 0x10000
mov edx, eax
sar edx, 0x1f
idiv ebx
cmp ax, 0x8000
mov ecx, eax
mov word [edi], ax
jne 0x66e460
mov word [edi], 0x7fff
mov ecx, 0x7fff
mov eax, 0x3fff
jmp 0x66e472
test ax, ax
je 0x66e58e
shr ax, 1
movzx ecx, cx
movzx eax, ax
mov edx, dword [esp + 0x30]
add esi, 1
sub edx, eax
mov eax, edx
sar edx, 0x1f
idiv ecx
mov word [edi + 0x80], ax
add edi, 2
cmp esi, 0x40
je 0x66e5ee
mov edx, dword [esp + 0x28]
movzx eax, byte [edx + esi + 0xa60]
mov edx, dword [esp + 0x2c]
movzx ebx, word [edx + eax*2]
imul ebx, dword [esp + 0x24]
mov dword [esp], 0x400000
mov dword [esp + 4], 0
mov eax, ebx
sar eax, 0x1f
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
call fcn.00de3430
mov dword [ebp + esi*4], eax
mov eax, 0x10000
mov edx, eax
sar edx, 0x1f
idiv ebx
cmp ax, 0x8000
mov ecx, eax
mov word [edi], ax
jne 0x66e500
mov word [edi], 0x7fff
mov ecx, 0x7fff
mov eax, 0x3fff
jmp 0x66e512
mov edi, dword [esp + 0x28]
xor ebx, ebx
mov esi, dword [esp + 0x2c]
lea esi, [esi]
movzx eax, byte [edi + ebx + 0xa60]
movzx eax, word [esi + eax*2]
imul eax, dword [esp + 0x24]
mov dword [esp], 0x400000
mov dword [esp + 4], 0
mov edx, eax
sar edx, 0x1f
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
call fcn.00de3430
mov dword [ebp + ebx*4], eax
add ebx, 1
cmp ebx, 0x40
jne 0x66e5b0
cmp dword [esp + 0x38], 0x3f
jg 0x66e6aa
mov esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x20], 0x893b40
mov dword [esp + 0x18], 0x1fff
mov dword [esp + 0x1c], 0
je 0x66e6e0
mov ebx, dword [ebp + esi*4]
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov edx, ebx
sar edx, 0x1f
imul eax, edx
imul edi, ebx
add edi, eax
mov eax, dword [esp + 0x18]
mul ebx
add edx, edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1c]
shrd eax, edx, cl
sar edx, cl
mov ebx, edx
sar ebx, 0x1f
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
cmp edx, 0
jl 0x66e69a
jle 0x66e6d3
mov ebx, esi
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
add ecx, 1
mov edx, edi
mov eax, esi
shrd eax, edx, cl
sar edx, cl
test cl, 0x20
je 0x66e68a
mov eax, edx
sar edx, 0x1f
cmp edx, 0
jg 0x66e674
jl 0x66e698
cmp eax, 0x7fffffff
ja 0x66e674
mov esi, ebx
add esi, 1
cmp esi, 0x40
jne 0x66e601
mov dword [esp + 0x18], ecx
add dword [esp + 0x24], 1
add ebp, 0x100
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x34], esi
jge 0x66e40d
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x66e703
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, 0x7fffffff
jbe 0x66e69a
jmp 0x66e66a
movzx ebx, word [esi + esi + 0x105a100]
mov eax, 0x1fff
mul ebx
shrd eax, edx, 0xe
sar edx, 0xe
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], edx
jmp 0x66e61f
mov eax, 0x16
sub eax, ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x68], str.Warning__QMAT_SHIFT_is_larger_than__d__overflows_possible_n
mov dword [esp + 0x64], 0x20
mov dword [esp + 0x60], 0
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
jmp fcn.00aa0010
mov edi, dword [esp + 0x28]
xor ebx, ebx
mov esi, dword [esp + 0x2c]
movzx edx, byte [edi + ebx + 0xa60]
movzx eax, word [ebx + ebx + 0x105a100]
imul eax, dword [esp + 0x24]
movzx edx, word [esi + edx*2]
mov dword [esp], 0
mov dword [esp + 4], 0x10
imul eax, edx
mov edx, eax
sar edx, 0x1f
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
call fcn.00de3430
mov dword [ebp + ebx*4], eax
add ebx, 1
cmp ebx, 0x40
jne 0x66e73c
jmp 0x66e5ee