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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x78]
mov eax, edx
or eax, 0x100000
test ecx, ecx
cmove eax, edx
lea esi, [ecx - 0x435]
mov ebx, 0xfffffbcc
cmovne ebx, esi
mov esi, dword [esp + 0x70]
mov ebp, eax
shld ebp, esi, 2
or edx, esi
setne dl
cmp ecx, 2
mov edi, 0xcccccccc
setb cl
or cl, dl
mov byte [esp + 0x14], cl
mov edx, esi
lea ecx, [esi*4]
test ebx, ebx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], ecx
js 0x1009ee4b
imul ecx, ebx, 0x13441
shr ecx, 0x12
cmp ebx, 4
adc ecx, 0xffffffff
mov ebp, ecx
mov esi, ecx
shl esi, 4
shld eax, edx, 1
vmovdqu xmm0, xmmword [esi + 0x10136c08]
vpextrd edx, xmm0, 1
mov dword [esp + 0x1c], edx
mulx edx, esi, eax
mov dword [esp + 4], esi
mov dword [esp], edx
sub ebp, ebx
mov dword [esp + 0x44], ebp
mov edx, dword [esp + 0x70]
add edx, edx
vmovd xmm1, edx
vpbroadcastq xmm2, xmm1
vpmuludq xmm1, xmm0, xmm2
vmovd xmm3, eax
vpbroadcastd xmm3, xmm3
vpmuludq xmm3, xmm0, xmm3
vpsrlq xmm4, xmm1, 0x20
vpextrd edx, xmm0, 3
mov dword [esp + 0x24], edx
mulx esi, eax, eax
vpaddq xmm3, xmm4, xmm3
mov dword [esp + 8], ecx
imul ecx, ecx, 0x12934f
vpextrd ebx, xmm3, 3
shr ecx, 0x13
mov dword [esp + 0x4c], ecx
add ebx, eax
vpsrlq xmm4, xmm0, 0x20
vpmuludq xmm2, xmm4, xmm2
vpxor xmm4, xmm4, xmm4
vpblendd xmm4, xmm3, xmm4, 0xa
adc esi, 0
vpaddq xmm2, xmm4, xmm2
vpextrd eax, xmm2, 3
add ebx, eax
vpinsrd xmm4, xmm1, dword [esp + 4], 0
vpinsrd xmm4, xmm4, dword [esp], 1
vpsllq xmm5, xmm2, 0x20
vpsrlq xmm6, xmm2, 0x20
vpblendd xmm6, xmm6, xmm5, 0xc
vpsrlq xmm3, xmm3, 0x20
vpaddq xmm3, xmm4, xmm3
vpand xmm4, xmm1, xmmword [0x101324d0]
vpblendd xmm3, xmm3, xmm4, 0xc
vpaddq xmm3, xmm6, xmm3
adc esi, 0
vpor xmm4, xmm5, xmm4
vpshufd xmm4, xmm4, 0xee
vpaddq xmm4, xmm4, xmm3
vpextrd ebp, xmm3, 1
vmovd ecx, xmm3
vpextrd eax, xmm4, 1
mov dword [esp + 4], eax
vmovd edx, xmm4
mov dword [esp + 0x20], edx
cmp edx, ecx
sbb eax, ebp
adc ebx, 0
adc esi, 0
vpextrd ecx, xmm0, 2
mov eax, edx
mov dword [esp + 0x38], ecx
add eax, ecx
mov ebp, dword [esp + 4]
adc ebp, dword [esp + 0x24]
vmovd ecx, xmm1
vmovd edx, xmm0
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], edx
add ecx, edx
vmovd ecx, xmm2
mov dword [esp + 0x28], ecx
adc ecx, dword [esp + 0x1c]
adc eax, 0
adc ebp, 0
mov dword [esp + 0x30], ebp
cmp eax, dword [esp + 0x20]
sbb ebp, dword [esp + 4]
mov dword [esp + 0xc], ebx
mov ebp, ebx
adc ebp, 0
mov dword [esp], esi
mov ebx, esi
adc ebx, 0
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x4c]
lea esi, [edx + eax]
mov ecx, 7
sub ecx, esi
shld ebx, ebp, cl
mov esi, edx
mov edx, eax
mov eax, ecx
lea ecx, [esi + edx]
add ecx, 0x19
mov dword [esp + 0x40], ecx
shrx edx, dword [esp + 0x30], ecx
shlx ecx, ebp, eax
xor esi, esi
mov dword [esp + 0x30], eax
test al, 0x20
cmovne ebx, ecx
mov dword [esp + 0x48], ebx
cmovne ecx, esi
or edx, ecx
mov dword [esp + 0x2c], edx
movzx ecx, byte [esp + 0x14]
test cl, cl
je 0x1009f067
mov esi, dword [esp + 0x20]
mov ecx, esi
sub ecx, dword [esp + 0x38]
mov edx, dword [esp + 4]
mov ebp, edx
sbb ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x3c]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x1c]
sbb ecx, 0
sbb ebp, 0
cmp esi, ecx
mov ecx, edx
sbb ecx, ebp
mov ebx, dword [esp + 0xc]
sbb ebx, 0
mov esi, dword [esp]
mov edx, esi
sbb edx, 0
mov ecx, dword [esp + 0x30]
shld edx, ebx, cl
shlx eax, ebx, ecx
test cl, 0x20
cmovne edx, eax
mov ecx, 0
cmove ecx, eax
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x40]
shrx ebp, ebp, ecx
jmp 0x1009f121
imul edi, ebx, 0xfff4d105
shr edi, 0x14
xor ecx, ecx
cmp ebx, 0xffffffff
setne cl
sub edi, ecx
add ebx, edi
imul ebp, ebx, 0xffed6cb1
mov dword [esp + 0x20], ebx
shl ebx, 4
mov esi, edx
mov edx, 0x10137e48
sub edx, ebx
shld eax, esi, 1
vmovdqu xmm0, xmmword [edx]
vpextrd edx, xmm0, 1
mov dword [esp + 8], edx
mulx edx, ecx, eax
mov dword [esp], edx
shr ebp, 0x13
lea edx, [esi + esi]
mov ebx, edi
vmovd xmm1, edx
vpbroadcastq xmm2, xmm1
vpmuludq xmm1, xmm0, xmm2
vmovd xmm3, eax
vpbroadcastd xmm3, xmm3
vpmuludq xmm3, xmm0, xmm3
vpsrlq xmm4, xmm1, 0x20
vpextrd edx, xmm0, 3
mov dword [esp + 0x1c], edx
mulx edi, eax, eax
vpaddq xmm3, xmm4, xmm3
mov dword [esp + 0x24], ebx
vpextrd esi, xmm3, 3
mov dword [esp + 0x30], ebp
sub ebx, ebp
mov dword [esp + 4], ebx
add esi, eax
vpsrlq xmm4, xmm0, 0x20
vpmuludq xmm2, xmm4, xmm2
vpxor xmm4, xmm4, xmm4
vpblendd xmm4, xmm3, xmm4, 0xa
adc edi, 0
vpaddq xmm2, xmm4, xmm2
vpextrd eax, xmm2, 3
add esi, eax
vpinsrd xmm4, xmm1, ecx, 0
vpinsrd xmm4, xmm4, dword [esp], 1
vpsllq xmm5, xmm2, 0x20
vpsrlq xmm6, xmm2, 0x20
vpblendd xmm6, xmm6, xmm5, 0xc
vpsrlq xmm3, xmm3, 0x20
vpaddq xmm3, xmm4, xmm3
vpand xmm4, xmm1, xmmword [0x101324d0]
vpblendd xmm3, xmm3, xmm4, 0xc
vpaddq xmm3, xmm6, xmm3
adc edi, 0
vpor xmm4, xmm5, xmm4
vpshufd xmm4, xmm4, 0xee
vpaddq xmm4, xmm4, xmm3
vpextrd eax, xmm3, 1
vmovd ecx, xmm3
vpextrd ebp, xmm4, 1
vmovd ebx, xmm4
cmp ebx, ecx
mov ecx, ebp
mov dword [esp + 0xc], ebp
sbb ecx, eax
adc esi, 0
adc edi, 0
vpextrd ecx, xmm0, 2
mov eax, ebx
mov dword [esp + 0x38], ecx
add eax, ecx
adc ebp, dword [esp + 0x1c]
vmovd ecx, xmm1
vmovd edx, xmm0
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], edx
add ecx, edx
vmovd ecx, xmm2
mov dword [esp + 0x28], ecx
adc ecx, dword [esp + 8]
adc eax, 0
adc ebp, 0
mov dword [esp + 0x2c], ebx
cmp eax, ebx
mov eax, ebp
sbb eax, dword [esp + 0xc]
mov dword [esp], esi
mov eax, esi
adc eax, 0
mov esi, edi
adc esi, 0
mov ecx, 9
mov edx, dword [esp + 4]
sub ecx, edx
shld esi, eax, cl
shlx eax, eax, ecx
xor ebx, ebx
mov dword [esp + 0x44], ecx
test cl, 0x20
cmovne esi, eax
mov dword [esp + 0x40], esi
cmovne eax, ebx
mov dword [esp + 0x4c], eax
mov eax, edx
add eax, 0x17
mov dword [esp + 4], eax
shrx eax, ebp, eax
mov dword [esp + 0x48], eax
cmp byte [esp + 0x14], 0
je 0x1009f279
mov edx, dword [esp + 0x2c]
mov ecx, edx
sub ecx, dword [esp + 0x38]
mov esi, dword [esp + 0xc]
mov eax, esi
sbb eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x34]
cmp ebp, dword [esp + 0x3c]
mov ebp, dword [esp + 0x28]
sbb ebp, dword [esp + 8]
sbb ecx, 0
sbb eax, 0
cmp edx, ecx
mov ecx, esi
sbb ecx, eax
mov edx, dword [esp]
sbb edx, 0
mov ebp, edi
sbb ebp, 0
mov ecx, dword [esp + 0x44]
shld ebp, edx, cl
shlx edx, edx, ecx
test cl, 0x20
cmovne ebp, edx
mov ecx, 0
cmove ecx, edx
mov edx, dword [esp + 4]
shrx eax, eax, edx
jmp 0x1009f328
mov ebx, dword [esp + 0x28]
mov ebp, ebx
mov edx, dword [esp + 0x34]
shld ebp, edx, 1
mov dword [esp + 0x50], ebp
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0x20]
shld ecx, esi, 1
lea eax, [edx + edx]
mov dword [esp + 0x54], eax
cmp eax, edx
mov edx, ebp
sbb edx, ebx
setb dl
movzx edx, dl
lea eax, [edx + esi*2]
mov edx, dword [esp]
mov ebp, dword [esp + 0xc]
shld edx, ebp, 1
cmp eax, esi
mov ebp, ecx
sbb ebp, dword [esp + 4]
setb byte [esp + 0x20]
mov esi, eax
mov ebx, eax
sub ebx, dword [esp + 0x38]
mov ebp, ecx
sbb ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x54]
cmp eax, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
sbb eax, dword [esp + 0x1c]
sbb ebx, 0
sbb ebp, 0
cmp esi, ebx
sbb ecx, ebp
movzx ecx, byte [esp + 0x20]
mov esi, dword [esp + 0xc]
lea ebx, [ecx + esi*2]
sbb ebx, 0
sbb edx, 0
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 0x4c]
lea eax, [ecx + esi]
add eax, 0x7a
mov esi, dword [esp]
mov cl, 0x80
sub cl, al
shld edx, ebx, cl
shlx ebx, ebx, ecx
test cl, 0x20
cmovne edx, ebx
mov ecx, 0
cmove ecx, ebx
mov dword [esp + 0x1c], ecx
shrx ebp, ebp, eax
mov eax, dword [esp + 0x30]
mov ecx, eax
mov ebx, dword [esp + 0xc]
shld esi, ebx, cl
or ebp, dword [esp + 0x1c]
shlx ecx, ebx, eax
test al, 0x20
mov eax, dword [esp + 0x40]
shrx ebx, dword [esp + 4], eax
vmovd xmm0, ebp
vpinsrd xmm1, xmm0, edx, 1
mov edx, 0
cmovne esi, ecx
cmovne ecx, edx
vpinsrd xmm0, xmm1, dword [esp + 0x2c], 2
or ebx, ecx
vpinsrd xmm0, xmm0, dword [esp + 0x48], 3
cmp dword [esp + 8], 0x15
ja 0x1009f272
mov dword [esp + 4], ebx
mov dword [esp], esi
mov edx, dword [esp + 0x18]
and edx, 0xfffffffc
xor eax, eax
mov ebx, 0xcccccccc
inc ebx
mulx ebp, ebp, ebx
sete al
mov ecx, edx
mulx esi, edx, edi
mov dword [esp + 0xc], edx
imul ecx, eax
add ecx, ebp
mov edx, dword [esp + 0x10]
imul eax, edx
mulx ebx, ebp, ebx
add ebp, ecx
adc ebx, eax
mulx ecx, eax, edi
add ebp, dword [esp + 0xc]
adc esi, 0
add ebx, eax
adc ecx, 0
add ebx, esi
adc ecx, 0
shld ecx, ebx, 0x1e
lea eax, [ecx + ecx*4]
mov edx, dword [esp + 0x18]
cmp eax, edx
jne 0x1009f406
mov esi, 0xffffffff
mov eax, dword [esp + 0x10]
nop word cs:[eax + eax]
mov dword [esp + 0x10], esi
xor ebx, ebx
mov ebp, 0xcccccccc
inc ebp
mulx ecx, ecx, ebp
mov dword [esp + 0xc], ecx
mov esi, edx
mov dword [esp + 0x18], edx
mulx ecx, edx, edi
mov dword [esp + 0x14], edx
sete bl
mov edi, esi
imul edi, ebx
add edi, dword [esp + 0xc]
imul ebx, eax
mov edx, eax
mulx ebp, esi, ebp
add esi, edi
mov edi, 0xcccccccc
adc ebp, ebx
mulx eax, edx, edi
add esi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
adc ecx, 0
add ebp, edx
adc eax, 0
add ebp, ecx
adc eax, 0
shrd ebp, eax, 2
shr eax, 2
lea ecx, [ebp*4]
add ecx, ebp
inc esi
cmp ecx, dword [esp + 0x18]
mov edx, ebp
je 0x1009f1f0
cmp esi, dword [esp + 8]
setae dl
jmp 0x1009f55c
xor ecx, ecx
jmp 0x1009f565
mov ebp, dword [esp + 0x28]
mov ecx, ebp
mov esi, dword [esp + 0x34]
shld ecx, esi, 1
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x2c]
shld eax, edx, 1
neg dword [esp + 0x30]
lea ebx, [esi + esi]
mov dword [esp + 0x50], ebx
cmp ebx, esi
mov esi, ecx
sbb esi, ebp
setb bl
movzx esi, bl
lea ebx, [esi + edx*2]
mov dword [esp + 0x28], ebx
mov ebp, edi
mov esi, dword [esp]
shld ebp, esi, 1
cmp ebx, edx
mov edx, eax
sbb edx, dword [esp + 0xc]
setb byte [esp + 0x2c]
mov esi, ebx
sub esi, dword [esp + 0x38]
mov edx, eax
sbb edx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x50]
cmp ebx, dword [esp + 0x3c]
sbb ecx, dword [esp + 8]
sbb esi, 0
sbb edx, 0
cmp dword [esp + 0x28], esi
movzx ecx, byte [esp + 0x2c]
mov esi, dword [esp]
lea ebx, [ecx + esi*2]
sbb eax, edx
sbb ebx, 0
sbb ebp, 0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x30]
add eax, ecx
add eax, 0x78
mov cl, 0x80
sub cl, al
shld ebp, ebx, cl
shlx esi, ebx, ecx
test cl, 0x20
cmovne ebp, esi
mov ecx, 0
cmove ecx, esi
shrx eax, edx, eax
or eax, ecx
mov dword [esp + 8], eax
mov ecx, dword [esp + 0x44]
mov eax, dword [esp]
shld edi, eax, cl
mov esi, dword [esp + 0x4c]
or esi, dword [esp + 0x48]
shlx eax, eax, ecx
xor edx, edx
test cl, 0x20
cmovne edi, eax
mov dword [esp], edi
cmove edx, eax
mov eax, dword [esp + 4]
shrx ebx, dword [esp + 0xc], eax
or ebx, edx
mov eax, dword [esp + 0x24]
cmp eax, 1
ja 0x1009f3a7
mov eax, dword [esp + 0x70]
and eax, 1
sete cl
sub esi, eax
vmovd xmm0, dword [esp + 8]
vpinsrd xmm0, xmm0, ebp, 1
vpinsrd xmm0, xmm0, esi, 2
mov eax, dword [esp + 0x40]
sbb eax, 0
and cl, byte [esp + 0x14]
mov dword [esp + 0xc], ecx
vpinsrd xmm0, xmm0, eax, 3
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x1009f66f
vmovd xmm0, dword [esp + 8]
vpinsrd xmm0, xmm0, ebp, 1
vpinsrd xmm0, xmm0, esi, 2
xor edx, edx
vpinsrd xmm0, xmm0, dword [esp + 0x40], 3
cmp eax, 0x3e
ja 0x1009f3f4
dec al
mov ecx, eax
mov eax, 0xffffffff
shlx esi, eax, ecx
test cl, 0x20
cmovne eax, esi
mov ecx, esi
cmovne ecx, edx
andn eax, eax, dword [esp + 0x10]
andn ecx, ecx, dword [esp + 0x18]
or ecx, eax
sete dl
xor ecx, ecx
mov eax, dword [esp + 0x20]
mov dword [esp + 8], eax
mov esi, dword [esp]
jmp 0x1009f565
mov eax, dword [esp + 0x70]
test al, 1
mov ebx, dword [esp + 0x10]
jne 0x1009f4b7
movzx edi, byte [esp + 0x14]
not edi
add edi, edx
adc ebx, 0xffffffff
mov ecx, 0xffffffff
nop word [eax + eax]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ecx
xor ebx, ebx
mov ebp, 0xcccccccc
inc ebp
mov edx, edi
mulx esi, esi, ebp
mov eax, 0xcccccccc
mulx ecx, eax, eax
mov dword [esp + 0x14], eax
sete bl
mov eax, edi
imul eax, ebx
add eax, esi
mov edx, dword [esp + 0x10]
imul ebx, edx
mulx ebp, esi, ebp
add esi, eax
adc ebp, ebx
mov edx, dword [esp + 0x10]
mov eax, 0xcccccccc
mulx ebx, eax, eax
add esi, dword [esp + 0x14]
adc ecx, 0
add ebp, eax
adc ebx, 0
add ebp, ecx
mov ecx, dword [esp + 0x18]
adc ebx, 0
shrd ebp, ebx, 2
shr ebx, 2
lea eax, [ebp*4]
add eax, ebp
inc ecx
cmp eax, edi
mov edi, ebp
je 0x1009f430
cmp ecx, dword [esp + 8]
setae cl
xor edx, edx
jmp 0x1009f55e
or edx, 2
mov eax, 0xffffffff
nop
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
xor ebx, ebx
mov ebp, 0xcccccccc
inc ebp
mulx esi, esi, ebp
mov eax, edx
mov dword [esp + 0x18], edx
mulx ecx, edx, edi
mov dword [esp + 0xc], edx
sete bl
mov edi, eax
imul edi, ebx
add edi, esi
mov eax, dword [esp + 0x10]
imul ebx, eax
mov edx, eax
mulx ebp, esi, ebp
add esi, edi
mov edi, 0xcccccccc
adc ebp, ebx
mov eax, dword [esp + 0x14]
mulx ebx, edx, edi
add esi, dword [esp + 0xc]
adc ecx, 0
add ebp, edx
adc ebx, 0
add ebp, ecx
adc ebx, 0
shrd ebp, ebx, 2
shr ebx, 2
lea ecx, [ebp*4]
add ecx, ebp
inc eax
cmp ecx, dword [esp + 0x18]
mov edx, ebp
je 0x1009f4c0
xor ecx, ecx
cmp eax, dword [esp + 8]
setae cl
mov edx, dword [esp + 0x2c]
sub edx, ecx
mov eax, dword [esp + 0x48]
sbb eax, 0
vpinsrd xmm0, xmm1, edx, 2
vpinsrd xmm0, xmm0, eax, 3
xor edx, edx
xor ecx, ecx
mov esi, dword [esp]
mov ebx, dword [esp + 4]
test dl, dl
mov dword [esp], esi
jne 0x1009f65f
test cl, cl
jne 0x1009f65f
vpsrlq xmm1, xmm0, 2
vpbroadcastq xmm2, qword [0x101324e0]
vpsrlq xmm3, xmm0, 0x22
vpmuludq xmm4, xmm1, xmm2
vpbroadcastq xmm5, qword [0x101324e8]
vpmuludq xmm6, xmm1, xmm5
vpmuldq xmm1, xmm3, xmm2
vpmuldq xmm2, xmm3, xmm5
vpsrlq xmm3, xmm4, 0x20
vpaddq xmm3, xmm3, xmm1
vpsrlq xmm1, xmm3, 0x20
vpaddq xmm2, xmm1, xmm2
vpxor xmm1, xmm1, xmm1
vpblendd xmm3, xmm3, xmm1, 0xa
vpaddq xmm3, xmm3, xmm6
vpsrlq xmm3, xmm3, 0x20
vpaddq xmm2, xmm2, xmm3
vpsrlq xmm2, xmm2, 2
vpextrd ecx, xmm2, 1
vmovd edx, xmm2
vpextrd esi, xmm2, 3
vpextrd edi, xmm2, 2
xor eax, eax
cmp edx, edi
sbb ecx, esi
jae 0x1009f94a
mov edi, dword [esp]
mov edx, edi
shld edx, ebx, 0x1e
mov eax, 0x5c28f5c3
mulx ecx, ecx, eax
mov esi, 0x28f5c28f
mov dword [esp + 4], ebx
mulx esi, ebx, esi
shr edi, 2
mov edx, edi
mulx eax, ebp, eax
add ebp, ecx
mov ecx, 0x28f5c28f
mulx edx, ecx, ecx
adc ecx, eax
adc edx, 0
add ebp, ebx
adc ecx, esi
adc edx, 0
shrd ecx, edx, 2
shr edx, 2
mov dword [esp], edx
imul eax, ecx, 0xffffff9c
add eax, dword [esp + 4]
cmp eax, 0x32
setae al
mov dword [esp + 0x14], 2
mov ebx, ecx
jmp 0x1009f956
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
mov eax, dword [esp + 8]
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], 0
vpbroadcastq xmm1, qword [0x101324f0]
vpbroadcastq xmm2, qword [0x101324f8]
vpxor xmm3, xmm3, xmm3
mov dword [esp + 0x14], 0
nop word cs:[eax + eax]
vpsrlq xmm4, xmm0, 0x20
vpmuludq xmm5, xmm0, xmm1
vpmuludq xmm6, xmm0, xmm2
vpmuludq xmm7, xmm4, xmm1
vpmuludq xmm4, xmm4, xmm2
vpsrlq xmm5, xmm5, 0x20
vpaddq xmm5, xmm5, xmm7
vpsrlq xmm7, xmm5, 0x20
vpaddq xmm4, xmm7, xmm4
vpblendd xmm5, xmm5, xmm3, 0xa
vpaddq xmm5, xmm5, xmm6
vpsrlq xmm5, xmm5, 0x20
vpaddq xmm4, xmm4, xmm5
vpsrlq xmm4, xmm4, 3
vpextrd ecx, xmm4, 1
vpextrd edx, xmm4, 3
vpextrd esi, xmm4, 2
vmovd eax, xmm4
cmp eax, esi
sbb ecx, edx
jae 0x1009f7b8
add eax, eax
mov dword [esp + 4], eax
xor ecx, ecx
mov edi, 0xcccccccc
inc edi
mov edx, ebx
mulx eax, eax, edi
mov dword [esp + 8], eax
mov eax, 0xcccccccc
mulx ebp, eax, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp]
mov edx, eax
mulx edi, esi, edi
sete cl
mov edx, ebx
imul edx, ecx
add edx, dword [esp + 8]
imul ecx, eax
add esi, edx
adc edi, ecx
mov edx, eax
mov eax, 0xcccccccc
mulx eax, ecx, eax
add esi, dword [esp + 0x1c]
adc ebp, 0
add edi, ecx
adc eax, 0
add edi, ebp
adc eax, 0
mov edx, eax
shld edx, edi, 0x1d
shr edi, 2
and edi, 0xfffffffe
lea ecx, [edi + edi*4]
neg ecx
add cl, bl
vmovd esi, xmm0
mov edi, dword [esp + 4]
lea edi, [edi + edi*4]
shr eax, 3
mov dword [esp], eax
cmp edi, esi
sete al
mov ebx, dword [esp + 0xc]
and bl, al
mov dword [esp + 0xc], ebx
cmp byte [esp + 0x18], 0
sete al
mov ebx, dword [esp + 0x10]
and bl, al
mov dword [esp + 0x10], ebx
inc dword [esp + 0x14]
mov dword [esp + 0x18], ecx
mov ebx, edx
vmovdqa xmm0, xmm4
jmp 0x1009f6a0
vpextrd ecx, xmm0, 1
vmovd ebp, xmm0
mov eax, dword [esp + 0xc]
test al, al
je 0x1009f902
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
nop word cs:[eax + eax]
xor eax, eax
mov edi, 0xcccccccc
inc edi
mov ebx, ebp
mov edx, ebp
mulx esi, esi, edi
sete al
mov ecx, 0xcccccccc
mulx ecx, edx, ecx
mov dword [esp + 0x1c], edx
imul ebp, eax
add ebp, esi
mov edx, dword [esp + 8]
imul eax, edx
mulx edi, esi, edi
add esi, ebp
adc edi, eax
mov eax, 0xcccccccc
mulx eax, ebp, eax
add esi, dword [esp + 0x1c]
adc ecx, 0
add edi, ebp
adc eax, 0
add edi, ecx
adc eax, 0
shrd edi, eax, 3
lea ecx, [edi + edi]
lea ecx, [ecx + ecx*4]
cmp ecx, ebx
jne 0x1009f8f6
shr eax, 3
xor ecx, ecx
mov ebx, 0xcccccccc
inc ebx
mov edx, dword [esp + 4]
mulx edx, edx, ebx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 4]
mov esi, 0xcccccccc
mulx edx, esi, esi
mov dword [esp + 0x24], esi
mov dword [esp + 8], edx
mov ebp, dword [esp]
mov edx, ebp
mulx ebx, esi, ebx
sete cl
mov edx, dword [esp + 4]
imul edx, ecx
add edx, dword [esp + 0x1c]
imul ecx, ebp
add esi, edx
adc ebx, ecx
mov edx, ebp
mov ecx, 0xcccccccc
mulx edx, ecx, ecx
add esi, dword [esp + 0x24]
mov esi, dword [esp + 8]
adc esi, 0
add ebx, ecx
adc edx, 0
add ebx, esi
adc edx, 0
mov esi, edx
shld esi, ebx, 0x1d
shr ebx, 2
and ebx, 0xfffffffe
lea ecx, [ebx + ebx*4]
neg ecx
add cl, byte [esp + 4]
shr edx, 3
mov dword [esp], edx
cmp byte [esp + 0x18], 0
sete bl
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp + 0x10], edx
inc dword [esp + 0x14]
mov ebp, edi
mov dword [esp + 8], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 4], esi
jmp 0x1009f7e0
mov ebp, ebx
mov ecx, edx
mov ebx, dword [esp + 4]
mov eax, dword [esp + 0xc]
test al, al
sete al
xor ebp, ebx
xor ecx, dword [esp]
or ecx, ebp
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x14]
jne 0x1009f925
or cl, al
mov dl, 1
test cl, 1
jne 0x1009f93e
test byte [esp + 0x10], 1
sete al
cmp byte [esp + 0x18], 5
setne dl
setae cl
or dl, al
or dl, bl
and dl, cl
mov eax, dword [esp + 0x6c]
mov esi, dword [esp]
jmp 0x1009fa67
mov dword [esp + 0x14], 0
vmovdqa xmm2, xmm0
vpbroadcastq xmm0, qword [0x101324f0]
vpbroadcastq xmm3, qword [0x101324f8]
nop dword [eax + eax]
vpsrlq xmm4, xmm2, 0x20
vpmuludq xmm5, xmm2, xmm0
vpmuludq xmm6, xmm2, xmm3
vpmuludq xmm7, xmm4, xmm0
vpmuludq xmm4, xmm4, xmm3
vpsrlq xmm5, xmm5, 0x20
vpaddq xmm5, xmm5, xmm7
vpsrlq xmm7, xmm5, 0x20
vpaddq xmm4, xmm7, xmm4
vpblendd xmm5, xmm5, xmm1, 0xa
vpaddq xmm5, xmm5, xmm6
vpsrlq xmm5, xmm5, 0x20
vpaddq xmm4, xmm4, xmm5
vpsrlq xmm4, xmm4, 3
vpextrd ecx, xmm4, 1
vpextrd edx, xmm4, 3
vpextrd esi, xmm4, 2
vmovd edi, xmm4
cmp edi, esi
sbb ecx, edx
jae 0x1009fa43
xor eax, eax
mov edi, 0xcccccccc
inc edi
mov edx, ebx
mulx esi, esi, edi
mov ecx, 0xcccccccc
mulx ecx, edx, ecx
mov dword [esp + 0x18], edx
sete al
mov ebp, ebx
imul ebp, eax
add ebp, esi
mov edx, dword [esp]
imul eax, edx
mulx edi, esi, edi
add esi, ebp
adc edi, eax
mov eax, 0xcccccccc
mulx edx, eax, eax
add esi, dword [esp + 0x18]
adc ecx, 0
add edi, eax
adc edx, 0
add edi, ecx
adc edx, 0
shrd edi, edx, 3
lea eax, [edi + edi]
lea eax, [eax + eax*4]
sub ebx, eax
shr edx, 3
mov dword [esp], edx
cmp ebx, 5
setae al
inc dword [esp + 0x14]
mov ebx, edi
vmovdqa xmm2, xmm4
jmp 0x1009f970
vmovd ecx, xmm2
vpextrd edx, xmm2, 1
mov esi, dword [esp]
xor edx, esi
xor ecx, ebx
or ecx, edx
sete dl
or dl, al
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x6c]
mov ebp, dword [esp + 0x14]
movzx ecx, dl
and ecx, 1
add ecx, ebx
adc esi, 0
add edi, ebp
mov dword [eax + 8], edi
mov dword [eax], ecx
mov dword [eax + 4], esi
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret