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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov edi, dword [ebp + 0x10]
movq xmm1, qword [ebp + 8]
mov eax, dword [0x1cf151c]
xor eax, ebp
mov dword [esp + 0x88], eax
cmp edi, 2
jae 0x1c8d5a5
pcmpeqd xmm0, xmm0
lea eax, [esp + 0x70]
movdqa xmmword [eax], xmm0
lea esi, [esp + 0x60]
movq qword [esi], xmm1
mov ecx, esi
push eax
call fcn.01c8de38
movaps xmm0, xmmword [0x1cd5950]
movups xmmword [esi], xmm0
movups xmmword [esp + 0x50], xmm0
test edi, edi
je 0x1c8d878
xorps xmm0, xmm0
cvtsd2ss xmm0, qword [ebp + 8]
lea ecx, [esp + 0x40]
movss dword [ecx], xmm0
lea eax, [esp + 0x50]
push eax
push esi
call fcn.01c8dfc6
jmp 0x1c8d890
jne 0x1c8de32
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
pcmpeqd xmm0, xmm0
lea esi, [esp + 0x70]
movdqa xmmword [esi], xmm0
lea edi, [esp + 0x60]
movq qword [edi], xmm1
mov ecx, edi
push esi
call fcn.01c8de38
movapd xmm0, xmmword [0x1cd5950]
movupd xmmword [edi], xmm0
mov eax, dword [esi + 8]
mov ecx, 0xffffff84
sub ecx, eax
mov edx, 0xffffffa0
sub edx, eax
lea eax, [esp + 0x50]
mov dword [eax], 0xffffffff
push eax
push edi
push edx
push ecx
call fcn.01c9a2e8
add esp, 0x10
mov ebx, dword [esi + 4]
mov ecx, dword [edi + 4]
mov eax, ecx
mul ebx
mov edi, ebx
mov dword [esp + 4], eax
mov dword [esp + 0x10], edx
mov esi, dword [esi]
mov eax, ecx
mul esi
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
lea eax, [esp + 0x60]
mov ebx, dword [eax]
mov eax, ebx
mul edi
mov ecx, edx
mov edi, eax
mov eax, ebx
mul esi
xor ebx, ebx
add edx, edi
setb bl
add edx, dword [esp + 8]
adc ebx, 0
lea eax, [esp + 0x70]
mov eax, dword [eax + 8]
lea esi, [esp + 0x60]
add eax, dword [esi + 8]
imul esi, eax, 0x4d1
mov dword [esp + 8], esi
xor esi, esi
add ecx, dword [esp + 4]
mov edi, dword [esp + 0x10]
adc edi, esi
add ecx, dword [esp + 0xc]
adc edi, esi
add edx, 0x80000000
adc ecx, ebx
mov dword [esp + 0xc], ecx
adc edi, 0
mov dword [esp + 0x10], edi
mov ecx, 0xffffffc0
sub ecx, eax
xor ebx, ebx
inc ebx
xor eax, eax
shld eax, ebx, cl
shl ebx, cl
mov edx, dword [esp + 0xc]
shrd edx, edi, cl
mov edi, dword [esp + 0x10]
shr edi, cl
mov dword [esp + 0x20], ecx
test cl, 0x20
cmove edi, edx
cmovne eax, ebx
cmovne ebx, esi
mov dword [esp + 0x28], ebx
add ebx, 0xffffffff
mov dword [esp + 0x24], eax
adc eax, 0xffffffff
mov dword [esp + 0x18], eax
and dword [esp + 0x10], eax
mov edx, dword [esp + 0xc]
mov dword [esp + 0x2c], ebx
and edx, ebx
mov eax, dword [esp + 8]
add eax, 0x26d51
sar eax, 0xc
mov dword [esp + 4], edi
cmp dword [eax*4 + 0x1ce1194], edi
lea ecx, [eax + 1]
cmova ecx, eax
mov dword [esp + 0x40], ecx
mov eax, dword [ebp + 0x20]
mov dword [eax], 0
mov ebx, dword [ecx*4 + 0x1ce1190]
test ecx, ecx
mov dword [esp + 0xc], edx
jle 0x1c8d761
mov dword [esp + 8], ecx
xor esi, esi
mov edi, dword [ebp + 0x14]
mov eax, dword [esp + 4]
xor edx, edx
div ebx
add al, 0x30
mov ecx, dword [ebp + 0x18]
mov byte [ecx + esi], al
mov eax, dword [ebp + 0x20]
mov esi, dword [eax]
inc esi
mov dword [eax], esi
cmp edi, 1
je 0x1c8dd69
mov dword [esp + 4], edx
mov ecx, dword [esp + 8]
dec ecx
mov eax, ebx
mov edx, 0xcccccccd
mul edx
mov ebx, edx
shr ebx, 3
mov dword [esp + 8], ecx
lea eax, [ecx + 1]
dec edi
cmp eax, 1
ja 0x1c8d710
mov dword [esp + 0x14], edi
mov ecx, dword [esp + 8]
mov dword [esp + 0x40], ecx
mov edx, dword [esp + 0x14]
test edx, edx
je 0x1c8dd74
mov ebx, dword [esp + 0x10]
jle 0x1c8dd5c
cmp dword [esp + 0xc], 2
mov eax, ebx
sbb eax, 0
jb 0x1c8dd5c
mov dword [esp + 8], ecx
xor ecx, ecx
mov edi, dword [esp + 0xc]
xor eax, eax
inc eax
mov dword [esp + 4], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x14], edx
mov eax, edi
mov edx, 0xa
mul edx
lea ebx, [ebx + ebx*4]
lea ebx, [edx + ebx*2]
mov edi, eax
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x10], ebx
shrd edi, ebx, cl
shr ebx, cl
mov eax, dword [esp + 4]
mov edx, 0xa
mul edx
test cl, 0x20
cmove ebx, edi
add bl, 0x30
mov edi, dword [ebp + 0x18]
mov byte [edi + esi], bl
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
lea esi, [ecx + ecx*4]
lea ecx, [edx + esi*2]
mov edx, dword [esp + 0x14]
mov edi, dword [ebp + 0x20]
mov esi, dword [edi]
inc esi
mov dword [edi], esi
mov edi, dword [esp + 0xc]
and edi, dword [esp + 0x2c]
and ebx, dword [esp + 0x18]
dec dword [esp + 8]
mov dword [esp + 4], eax
cmp edx, 2
lea edx, [edx - 1]
jb 0x1c8d820
cmp dword [esp + 4], edi
mov eax, ecx
sbb eax, ebx
jb 0x1c8d798
mov dword [esp + 0x1c], ecx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 8]
mov dword [esp + 0x40], ecx
test edx, edx
mov edi, dword [ebp + 0x18]
jne 0x1c8dd5c
mov ecx, edi
mov edx, dword [ebp + 0x1c]
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x20]
push dword [esp + 0xc]
push dword [esp + 0x30]
push dword [esp + 0x38]
push ebx
push dword [esp + 0x24]
push esi
call fcn.01c8e230
add esp, 0x20
test al, al
je 0x1c8dd5c
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x50]
jmp 0x1c8de02
lea ecx, [esp + 0x40]
movsd xmm0, qword [ebp + 8]
movsd qword [ecx], xmm0
lea eax, [esp + 0x50]
push eax
push esi
call fcn.01c8deb0
lea eax, [esp + 0x40]
movaps xmm0, xmmword [0x1cd5950]
movups xmmword [eax], xmm0
mov edi, eax
lea eax, [esp + 0x3c]
mov dword [eax], 0xffffffff
mov ecx, dword [esp + 0x78]
mov edx, 0xffffff84
sub edx, ecx
mov esi, 0xffffffa0
sub esi, ecx
push eax
push edi
push esi
push edx
call fcn.01c9a2e8
add esp, 0x10
mov ecx, dword [esp + 0x74]
mov dword [esp + 0xc], ecx
mov esi, dword [edi + 4]
mov ebx, edi
mov eax, esi
mul ecx
mov dword [esp + 4], eax
mov ecx, edx
mov edi, dword [esp + 0x70]
mov eax, esi
mul edi
mov dword [esp + 8], eax
mov dword [esp + 0x10], edx
mov ebx, dword [ebx]
mov eax, ebx
mul dword [esp + 0xc]
mov esi, edx
mov dword [esp + 0xc], eax
mov eax, ebx
mul edi
xor ebx, ebx
add edx, dword [esp + 0xc]
setb bl
xor eax, eax
add edx, dword [esp + 8]
adc ebx, eax
mov edi, dword [esp + 0x78]
lea eax, [esp + 0x40]
add edi, dword [eax + 8]
imul eax, edi, 0x4d1
mov dword [esp + 8], eax
add esi, dword [esp + 4]
mov eax, 0
adc ecx, eax
add esi, dword [esp + 0x10]
adc ecx, eax
add edx, 0x80000000
adc esi, ebx
mov dword [esp + 0x30], esi
lea eax, [esp + 0x40]
movd xmm0, dword [eax + 4]
movd xmm1, dword [eax]
adc ecx, 0
mov dword [esp + 0x28], ecx
mov ecx, 0xffffffc0
sub ecx, edi
xor edi, edi
movups xmm2, xmmword [esp + 0x60]
movss xmm3, dword [esp + 0x50]
shufps xmm3, xmm2, 0x30
movaps xmm4, xmm2
shufps xmm4, xmm3, 0x84
movss xmm3, dword [esp + 0x54]
shufps xmm2, xmm3, 0x24
psrlq xmm2, 0x20
pshufd xmm3, xmm0, 0x44
movdqa xmm5, xmm2
pmuludq xmm5, xmm3
pmuludq xmm3, xmm4
pshufd xmm0, xmm1, 0x44
pmuludq xmm2, xmm0
pmuludq xmm4, xmm0
psrlq xmm4, 0x20
movdqa xmm0, xmmword [0x1ce1160]
movdqa xmm1, xmm2
pand xmm1, xmm0
paddq xmm1, xmm4
pand xmm0, xmm3
paddq xmm0, xmm1
paddq xmm0, xmmword [0x1ce1170]
psrlq xmm2, 0x20
paddq xmm2, xmm5
psrlq xmm3, 0x20
paddq xmm3, xmm2
psrlq xmm0, 0x20
paddq xmm0, xmm3
pcmpeqd xmm1, xmm1
movdqa xmm3, xmm0
xor edx, edx
inc edx
xor esi, esi
shld esi, edx, cl
psubq xmm3, xmm1
shl edx, cl
pshufd xmm1, xmm3, 0xff
pshufd xmm2, xmm3, 0xee
movd ebx, xmm1
movd eax, xmm2
mov dword [esp + 0x24], eax
shrd eax, ebx, cl
mov dword [esp + 0x18], ebx
mov dword [esp + 0xc], ecx
shr ebx, cl
test cl, 0x20
cmove ebx, eax
cmovne esi, edx
cmovne edx, edi
mov dword [esp + 0x34], edx
add edx, 0xffffffff
mov dword [esp + 0x38], esi
adc esi, 0xffffffff
movd xmm2, esi
movd xmm1, edx
mov ecx, dword [esp + 8]
add ecx, 0x26d51
sar ecx, 0xc
cmp dword [ecx*4 + 0x1ce1194], ebx
lea edx, [ecx + 1]
cmova edx, ecx
movdqa xmm4, xmmword [0x1cde8d0]
psubq xmm4, xmm0
shufps xmm4, xmm3, 0xe4
movdqa xmm3, xmm2
punpcklqdq xmm3, xmm1
shufps xmm0, xmm3, 0x2e
movaps xmm3, xmm4
paddq xmm3, xmm0
andps xmm0, xmm4
mov esi, dword [ebp + 0x20]
mov dword [esi], edi
test edx, edx
jle 0x1c8db40
mov eax, ebx
mov dword [esp + 0x10], edx
mov ebx, dword [edx*4 + 0x1ce1190]
pshufd xmm4, xmm0, 0xff
movd dword [esp + 0x20], xmm4
pshufd xmm4, xmm0, 0xee
movd dword [esp + 0x2c], xmm4
movd dword [esp + 0x14], xmm3
pshufd xmm4, xmm3, 0x55
movd dword [esp + 0x1c], xmm4
xor ecx, ecx
mov edi, dword [ebp + 0x18]
xor edx, edx
mov dword [esp + 8], ebx
div ebx
add al, 0x30
mov byte [edi + ecx], al
mov esi, dword [ebp + 0x20]
mov ebx, dword [esi]
inc ebx
xor eax, eax
mov edi, edx
mov ecx, dword [esp + 0xc]
shld eax, edx, cl
mov dword [esp + 4], edx
shl edi, cl
test cl, 0x20
cmovne eax, edi
mov ecx, 0
cmovne edi, ecx
add edi, dword [esp + 0x2c]
adc eax, dword [esp + 0x20]
cmp edi, dword [esp + 0x14]
mov edx, eax
sbb edx, dword [esp + 0x1c]
mov edx, ebx
mov dword [esi], ebx
jb 0x1c8db47
mov ecx, edx
mov esi, dword [esp + 0x10]
cmp esi, 2
jb 0x1c8dbd1
mov eax, dword [esp + 8]
mov edx, 0xcccccccd
mul edx
mov ebx, edx
shr ebx, 3
dec esi
mov dword [esp + 0x10], esi
mov edi, dword [ebp + 0x18]
mov eax, dword [esp + 4]
jmp 0x1c8dac9
xor ecx, ecx
jmp 0x1c8dbd3
xor esi, esi
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne esi, ebx
mov dword [esp + 4], esi
mov ecx, 0
cmovne ebx, ecx
mov ecx, dword [esp + 0x24]
sub ecx, dword [esp + 0x30]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x18]
sbb ecx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 8], edx
mov edx, dword [ebp + 0x1c]
xor esi, esi
push esi
push 1
push dword [esp + 0xc]
mov dword [esp + 0x10], 0
push ebx
push eax
push edi
push dword [esp + 0x34]
push dword [esp + 0x30]
push dword [esp + 0x38]
push dword [esp + 0x48]
push dword [esp + 0x30]
call fcn.01c8e0a2
add esp, 0x2c
test al, al
je 0x1c8de18
mov eax, dword [esp + 0x3c]
not eax
add eax, dword [esp + 0x10]
jmp 0x1c8ddff
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 8], ecx
movsd xmm0, xmm3
punpckldq xmm1, xmm2
movdqa xmm2, xmmword [0x1ce1180]
punpcklqdq xmm2, xmm1
movdqa xmm1, xmm2
psrlq xmm1, 0x20
mov dword [esp + 4], 0
xor eax, eax
inc eax
pshufd xmm3, xmm0, 0xff
pshufd xmm4, xmm0, 0xee
mov ecx, eax
movd eax, xmm4
mov edx, 0xa
mul edx
mov edi, eax
mov ebx, edx
movd eax, xmm3
lea esi, [eax + eax*4]
mov eax, ecx
mov ecx, 0xa
mul ecx
lea ebx, [ebx + esi*2]
mov esi, dword [esp + 4]
lea esi, [esi + esi*4]
lea edx, [edx + esi*2]
mov dword [esp + 4], edx
movd xmm4, edi
mov ecx, dword [esp + 0xc]
shrd edi, ebx, cl
movd xmm5, ebx
shr ebx, cl
test cl, 0x20
cmove ebx, edi
add bl, 0x30
mov edx, dword [esp + 8]
mov esi, dword [ebp + 0x18]
mov byte [esi + edx], bl
mov ecx, dword [ebp + 0x20]
mov ebx, dword [ecx]
inc ebx
punpcklqdq xmm5, xmm4
movapd xmm3, xmm0
shufps xmm3, xmm5, 0x24
shufps xmm4, xmm0, 0x30
shufps xmm0, xmm4, 0x84
movaps xmm4, xmm3
psrlq xmm4, 0x20
pmuludq xmm4, xmm2
movaps xmm5, xmm0
pmuludq xmm5, xmm1
paddq xmm5, xmm4
psllq xmm5, 0x20
pmuludq xmm0, xmm2
paddq xmm0, xmm5
andps xmm3, xmm2
dec dword [esp + 0x10]
pshufd xmm4, xmm0, 0x55
movd edx, xmm0
pshufd xmm5, xmm3, 0xee
movd esi, xmm5
pshufd xmm5, xmm3, 0xff
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], esi
cmp esi, edx
movd edi, xmm4
movd esi, xmm5
mov edx, esi
sbb edx, edi
mov edx, ebx
mov dword [esp + 8], ebx
mov dword [ecx], ebx
movsd xmm3, xmm0
movapd xmm0, xmm3
jae 0x1c8dc03
mov ebx, dword [esp + 0x24]
sub ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
sbb ecx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], eax
mul ebx
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x20]
imul ecx, dword [esp + 0x18]
add ecx, edx
mov eax, dword [esp + 4]
imul ebx, eax
add ebx, ecx
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
push eax
push dword [esp + 0x24]
push dword [esp + 0x40]
push dword [esp + 0x40]
push esi
push dword [esp + 0x30]
push edi
push dword [esp + 0x30]
push ebx
push dword [esp + 0x30]
push dword [esp + 0x30]
call fcn.01c8e0a2
add esp, 0x2c
test al, al
je 0x1c8dd5c
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x3c]
jmp 0x1c8ddff
mov dword [esp + 4], 0
jmp 0x1c8de18
mov eax, dword [esp + 8]
dec eax
mov dword [esp + 0x40], eax
jmp 0x1c8dd78
mov edx, dword [esp + 4]
mov edi, ebx
mov ecx, dword [esp + 0x20]
shl edi, cl
mov dword [esp + 4], edi
test cl, 0x20
mov eax, 0
cmovne edi, eax
mov dword [esp + 8], edi
xor eax, eax
shld eax, ebx, cl
test cl, 0x20
cmovne eax, dword [esp + 4]
mov dword [esp + 4], eax
mov edi, edx
shl edx, cl
test cl, 0x20
mov ebx, edx
mov eax, 0
cmovne ebx, eax
xor eax, eax
shld eax, edi, cl
test cl, 0x20
cmovne eax, edx
add ebx, dword [esp + 0xc]
adc eax, dword [esp + 0x10]
lea edi, [esp + 0x40]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
push edi
xor edi, edi
push edi
push 1
push dword [esp + 0x10]
push dword [esp + 0x18]
push eax
push ebx
mov dword [esp + 0x20], 0
push esi
call fcn.01c8e230
add esp, 0x20
test al, al
je 0x1c8de18
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x50]
mov edi, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x24]
mov edx, dword [ebp + 0x20]
add eax, dword [edx]
mov dword [ecx], eax
mov eax, dword [edx]
mov byte [edi + eax], 0
mov al, 1
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x88]
xor ecx, ebp
call fcn.01caaec1
mov eax, dword [esp + 4]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.01c7a4bd
int3