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

Disassembly:
sub esp, 0x17c
mov eax, dword [0x10259b00]
xor eax, esp
mov dword [esp + 0x178], eax
push ebx
push ebp
mov ebp, dword [esp + 0x188]
mov ecx, 0xfffffff6
push esi
push edi
movsx edi, word [esp + 0x1a8]
mov dword [esp + 0x44], ebp
mov eax, ecx
shl eax, 0xa
movzx esi, ax
lea eax, [esi + 0x400]
movzx edx, ax
test ecx, ecx
jle 0x1016cd3d
sub esi, 0x66
sub edx, 0x66
jmp 0x1016cd52
jne 0x1016cd44
sub edx, 0x66
jmp 0x1016cd52
add esi, 0x66
movzx esi, si
cmp ecx, 0xffffffff
je 0x1016cd52
add edx, 0x66
movsx eax, si
imul eax, edi
sar eax, 0x10
mov dword [esp + ecx*4 + 0xc0], eax
movsx eax, dx
imul eax, edi
sar eax, 0x10
mov dword [esp + ecx*4 + 0x110], eax
inc ecx
cmp ecx, 9
jle 0x1016cd20
movsx edx, word [esp + 0x1b4]
mov edi, 1
xor eax, eax
mov dword [esp + 0x20], edi
xor ecx, ecx
mov dword [esp + 0x48], eax
sub edx, edi
mov word [esp + 0x138], cx
mov dword [esp + 0x18], edx
js 0x1016d043
mov eax, dword [esp + 0x194]
lea ecx, [esp + 0x148]
mov ebx, dword [esp + 0x1a0]
add ecx, edx
sub dword [esp + 0x198], eax
sub ebx, eax
mov dword [esp + 0x10], ecx
lea esi, [eax + edx*2]
mov dword [esp + 0x1a0], ebx
lea eax, [esp + 0x148]
mov dword [esp + 0x14], esi
sub dword [esp + 0x19c], eax
nop word [eax + eax]
movsx ebp, word [ebx + esi]
xor ebx, ebx
add ebp, dword [esp + 0x1a4]
mov dword [esp + 0x3c], ebp
test edi, edi
jle 0x1016cf9c
mov eax, dword [esp + 0x198]
mov edx, dword [esp + 0x19c]
mov dword [esp + 0x28], ecx
movzx eax, word [esi + eax]
movzx edx, byte [ecx + edx]
movsx esi, word [esp + 0x1ac]
cwde
mov dword [esp + 0x24], eax
lea eax, [esp + 0x48]
lea eax, [eax + edi*4]
mov dword [esp + 0x40], edx
lea edi, [esp + edi*2 + 0x138]
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x1c], edi
nop
movsx eax, word [esp + ebx*2 + 0x138]
mov edi, dword [esp + 0x14]
imul eax, edx
sar eax, 8
movzx edx, ax
movzx eax, word [edi]
mov esi, edx
sub eax, esi
cwde
imul eax, dword [esp + 0x30]
sar eax, 0x10
cmp eax, 9
jle 0x1016ce81
mov eax, 9
jmp 0x1016ce8c
cmp eax, 0xfffffff6
mov edi, 0xfffffff6
cmovl eax, edi
mov edi, dword [esp + 0x1c]
mov byte [ecx], al
mov cx, word [esp + eax*4 + 0xc0]
add cx, dx
movzx edx, cx
mov dword [esp + 0x34], edx
movzx edx, cx
mov cx, word [esp + eax*4 + 0x110]
add cx, si
mov word [esp + ebx*2 + 0x138], dx
movzx esi, cx
movzx ecx, cx
mov word [edi], cx
lea ecx, [eax + 1]
mov dword [esp + 0x38], esi
cmp ecx, 4
jl 0x1016cee4
jne 0x1016ced8
mov edi, 0x118
jmp 0x1016cf0b
cwde
imul esi, eax, 0x2b
add esi, 0x6c
lea edi, [esi + 0x2b]
jmp 0x1016cf10
cmp eax, 0xfffffffc
jg 0x1016cf06
jne 0x1016cef6
movzx edi, byte [ebp + 1]
mov esi, 0x118
jmp 0x1016cf10
cwde
mov esi, 0x6c
imul eax, eax, 0x2b
sub esi, eax
lea edi, [esi - 0x2b]
jmp 0x1016cf10
movzx edi, byte [eax + ebp + 5]
movzx esi, byte [eax + ebp + 4]
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1b0]
mov edx, dword [esp + ebx*4 + 0x48]
add dword [esp + 0x1c], 2
movzx eax, word [ecx]
sub eax, dword [esp + 0x34]
movsx ecx, ax
imul ecx, ecx
movsx eax, si
movsx esi, bp
imul eax, esi
mov ebp, dword [esp + 0x3c]
imul ecx, dword [esp + 0x24]
add ecx, edx
add eax, ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + ebx*4 + 0x48], eax
inc ebx
movzx eax, word [ecx]
sub eax, dword [esp + 0x38]
movsx ecx, ax
imul ecx, ecx
movsx eax, di
mov edi, dword [esp + 0x20]
imul eax, esi
imul ecx, dword [esp + 0x24]
add ecx, edx
mov edx, dword [esp + 0x2c]
add eax, ecx
mov ecx, dword [esp + 0x28]
add ecx, 0x10
mov dword [esp + 0x28], ecx
mov dword [edx], eax
add edx, 4
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x40]
cmp ebx, edi
jl 0x1016ce50
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
cmp edi, 2
jg 0x1016d10e
test edi, edi
jle 0x1016cfd2
mov eax, edi
mov esi, edi
shl eax, 4
add eax, edx
lea edx, [esp + 0x148]
add edx, eax
nop dword [eax + eax]
mov al, byte [ecx]
lea ecx, [ecx + 0x10]
inc al
lea edx, [edx + 0x10]
mov byte [edx - 0x10], al
sub esi, 1
jne 0x1016cfc0
add edi, edi
mov dword [esp + 0x20], edi
cmp edi, 4
jge 0x1016d00f
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x148]
mov eax, edi
mov esi, 4
shl eax, 4
add eax, dword [esp + 0x18]
add ecx, eax
sub esi, edi
nop word [eax + eax]
mov al, byte [edx]
lea edx, [edx + 0x10]
mov byte [ecx], al
lea ecx, [ecx + 0x10]
sub esi, 1
jne 0x1016d000
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
dec ecx
mov esi, dword [esp + 0x14]
dec edx
mov ebx, dword [esp + 0x1a0]
sub esi, 2
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], ecx
test edx, edx
jns 0x1016cdf0
mov eax, dword [esp + 0x48]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x50]
mov ecx, 0x7fffffff
cmp eax, ecx
cmovl ecx, eax
mov eax, dword [esp + 0x4c]
cmp ecx, eax
mov edx, eax
cmovle edx, ecx
xor ebx, ebx
cmp ecx, eax
mov eax, 2
mov ecx, 3
setg bl
cmp edx, esi
cmovg ebx, eax
cmovle esi, edx
mov eax, dword [esp + 0x54]
mov edx, 4
cmp esi, eax
cmovg ebx, ecx
cmovle eax, esi
mov ecx, dword [esp + 0x58]
cmp eax, ecx
mov esi, dword [esp + 0x64]
cmovg ebx, edx
cmovle ecx, eax
mov eax, dword [esp + 0x5c]
mov edx, 5
cmp ecx, eax
cmovg ebx, edx
cmovle eax, ecx
mov ecx, dword [esp + 0x60]
mov edx, 6
cmp eax, ecx
cmovle ecx, eax
cmovg ebx, edx
movsx edx, word [esp + 0x1b4]
cmp ecx, esi
mov eax, 7
cmovg ebx, eax
cmovle esi, ecx
test edx, edx
jle 0x1016d0ed
mov eax, ebx
lea ecx, [esp + 0x148]
and eax, 3
shl eax, 4
push edx
add ecx, eax
push ecx
push ebp
call fcn.100a1aa0
add esp, 0xc
mov ecx, dword [esp + 0x188]
mov eax, esi
pop edi
sar ebx, 2
add byte [ebp], bl
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.1009fd88
add esp, 0x17c
ret
xor edx, edx
mov edi, dword [esp + edx*4 + 0x58]
mov esi, dword [esp + edx*4 + 0x48]
cmp esi, edi
jle 0x1016d14b
movzx ecx, word [esp + edx*2 + 0x138]
mov ax, word [esp + edx*2 + 0x140]
mov word [esp + edx*2 + 0x138], ax
lea eax, [edx + 4]
mov word [esp + edx*2 + 0x140], cx
mov ecx, edi
mov dword [esp + edx*4 + 0x48], edi
mov dword [esp + edx*4 + 0x58], esi
jmp 0x1016d151
mov ecx, esi
mov eax, edx
mov esi, edi
mov dword [esp + edx*4 + 0x88], esi
mov dword [esp + edx*4 + 0x78], ecx
mov dword [esp + edx*4 + 0x68], eax
inc edx
cmp edx, 4
jl 0x1016d110
nop word [eax + eax]
mov edx, dword [esp + 0x78]
mov ecx, 0x7fffffff
cmp dword [esp + 0x88], ecx
mov esi, dword [esp + 0x8c]
cmovl ecx, dword [esp + 0x88]
xor eax, eax
test edx, edx
cmovle edx, eax
mov eax, dword [esp + 0x7c]
xor ebx, ebx
mov edi, edx
cmp ecx, esi
cmovle esi, ecx
setg bl
cmp edx, eax
cmovl edi, eax
xor ecx, ecx
cmp edx, eax
mov eax, dword [esp + 0x90]
setl cl
cmp esi, eax
jle 0x1016d1c4
mov esi, eax
mov ebx, 2
mov eax, dword [esp + 0x80]
cmp edi, eax
jge 0x1016d1d6
mov edi, eax
mov ecx, 2
mov eax, dword [esp + 0x94]
cmp esi, eax
jle 0x1016d1e8
mov esi, eax
mov ebx, 3
mov eax, dword [esp + 0x84]
cmp edi, eax
jge 0x1016d1fa
mov edi, eax
mov ecx, 3
cmp esi, edi
jge 0x1016d24d
mov eax, dword [esp + ebx*4 + 0x68]
xor eax, 4
mov dword [esp + ebx*4 + 0x88], 0x7fffffff
mov dword [esp + ecx*4 + 0x68], eax
mov eax, dword [esp + ebx*4 + 0x58]
mov dword [esp + ecx*4 + 0x48], eax
mov ax, word [esp + ebx*2 + 0x140]
add ebx, ebx
mov word [esp + ecx*2 + 0x138], ax
mov dword [esp + ecx*4 + 0x78], 0
add ecx, ecx
movups xmm0, xmmword [esp + ebx*8 + 0x148]
movups xmmword [esp + ecx*8 + 0x148], xmm0
jmp 0x1016d170
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x20]
sar eax, 2
add byte [ecx], al
mov eax, dword [esp + 0x6c]
sar eax, 2
add byte [ecx + 0x10], al
mov eax, dword [esp + 0x70]
sar eax, 2
add byte [ecx + 0x20], al
mov eax, dword [esp + 0x74]
sar eax, 2
add byte [ecx + 0x30], al
jmp 0x1016d013