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

Disassembly:
sub esp, 0x90
push ebx
mov ebx, dword [esp + 0xa0]
push ebp
push esi
mov ebp, ecx
mov esi, ebx
push edi
mov edi, dword [esp + 0xa8]
mov edx, edi
test ebp, ebp
jne 0x1002381c
mov dword [esp + 0x3c], 0xfffffbcc
jmp 0x1002382c
lea eax, [ebp - 0x435]
or esi, 0x100000
mov dword [esp + 0x3c], eax
mov eax, edx
mov byte [esp + 0x1b], 1
and eax, 1
or eax, 0
je 0x10023840
mov byte [esp + 0x1b], 0
mov eax, edx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
or edi, ebx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x94], eax
jne 0x10023863
mov dword [esp + 0x74], edi
cmp ebp, 1
ja 0x1002386b
mov dword [esp + 0x74], 1
mov ebx, dword [esp + 0x3c]
xor al, al
shld esi, edx, 1
mov byte [esp + 0x13], 0
add edx, edx
mov byte [esp + 0x12], al
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], edx
test ebx, ebx
js 0x10023f94
xor eax, eax
imul ecx, ebx, 0x13441
shr ecx, 0x12
cmp ebx, 3
setg al
sub ecx, eax
imul eax, ecx, 0x12934f
mov ebp, ecx
shl ebp, 4
add ebp, 0x10180d48
mov dword [esp + 0x70], ecx
shr eax, 0x13
sub eax, ebx
mov edi, dword [ebp]
add eax, ecx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x50], eax
mov eax, dword [ebp + 4]
mov dword [esp + 0x88], eax
mov eax, edi
mul edx
mov ebx, eax
mov ecx, edx
mov eax, edi
mul esi
mov esi, eax
mov edi, edx
mov eax, dword [ebp + 4]
add esi, ecx
adc edi, 0
mul dword [esp + 0x2c]
add eax, esi
mov ecx, edx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x14]
mov esi, eax
mov eax, edx
add esi, ecx
adc eax, 0
add esi, edi
mov dword [esp + 0x5c], esi
adc eax, 0
mov dword [esp + 0x3c], eax
xor eax, eax
or eax, ebx
mov ebx, dword [ebp + 8]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x28], eax
mov eax, ebx
mul dword [esp + 0x2c]
mov dword [esp + 0x4c], ebx
mov ebp, eax
mov ecx, edx
mov eax, ebx
mul dword [esp + 0x14]
mov edi, eax
mov ebx, edx
mov eax, dword [esp + 0x28]
add edi, ecx
adc ebx, 0
mul dword [esp + 0x2c]
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x28]
add esi, edi
adc ecx, 0
mul dword [esp + 0x14]
add eax, ecx
mov edi, edx
mov ecx, eax
mov dword [esp + 0x54], eax
adc edi, 0
add ecx, ebx
mov ebx, dword [esp + 0x5c]
adc edi, 0
xor edx, edx
or edx, ebp
add edx, ebx
adc esi, dword [esp + 0x3c]
mov dword [esp + 0x48], edx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], esi
cmp esi, dword [esp + 0x3c]
ja 0x100239a1
jb 0x10023998
cmp edx, ebx
jae 0x100239a1
mov eax, 1
xor ebx, ebx
jmp 0x100239b2
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov ebx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x78], ecx
adc edi, ebx
mov ebx, dword [esp + 0x20]
mov ebp, ebx
mov dword [esp + 0x7c], edi
add ebp, dword [esp + 0x6c]
adc eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x1c]
ja 0x100239e8
jb 0x100239df
cmp ebp, ebx
jae 0x100239e8
mov ebp, 1
xor eax, eax
jmp 0x100239f9
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
add ebp, edx
adc eax, esi
add ebp, dword [esp + 0x4c]
mov dword [esp + 0x14], ebp
adc eax, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov dword [esp + 0x60], ebp
mov dword [esp + 0x64], eax
cmp eax, esi
ja 0x10023a31
jb 0x10023a1f
cmp ebp, edx
jae 0x10023a31
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
jmp 0x10023a3a
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov ebx, dword [esp + 0x50]
mov edi, 0x40
add ebx, 0x39
mov dword [esp + 0x5c], ebx
je 0x10023a8f
movq xmm2, qword [esp + 0x30]
mov eax, edi
movq xmm0, qword [esp + 0x78]
sub eax, ebx
movq xmm1, qword [esp + 0x60]
paddq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ebx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x30], xmm2
mov eax, dword [esp + 0x34]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], ebp
cmp dword [esp + 0x74], 1
mov eax, dword [esp + 0x20]
jne 0x10023b7e
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x1c]
jb 0x10023ad2
ja 0x10023ac3
mov eax, dword [esp + 0x54]
cmp eax, dword [esp + 0x20]
jbe 0x10023ad2
mov ecx, 1
mov dword [esp + 0x3c], 0
jmp 0x10023ae7
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
mov eax, edx
sub eax, ecx
mov ecx, esi
sbb ecx, dword [esp + 0x3c]
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
sbb ecx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
cmp ecx, esi
jb 0x10023b25
ja 0x10023b13
cmp eax, edx
jbe 0x10023b25
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
jmp 0x10023b2e
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
test ebx, ebx
je 0x10023d58
movq xmm0, qword [esp + 0x30]
mov eax, edi
movq xmm2, qword [esp + 0x78]
sub eax, ebx
movq xmm1, qword [esp + 0x60]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ebx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x30], xmm2
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], eax
jmp 0x10023d21
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x2c], ebx
shld dword [esp + 0x2c], eax, 1
add eax, eax
mov dword [esp + 0x54], eax
cmp dword [esp + 0x2c], ebx
ja 0x10023bb2
jb 0x10023ba0
cmp eax, dword [esp + 0x20]
jae 0x10023bb2
mov dword [esp + 0x3c], 1
mov dword [esp + 0x20], 0
jmp 0x10023bcb
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x3c], ebx
mov ebp, dword [esp + 0x20]
mov ebx, edx
mov dword [esp + 0x1c], esi
shld dword [esp + 0x1c], ebx, 1
add ebx, ebx
add ebx, dword [esp + 0x3c]
adc dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x1c], esi
ja 0x10023c07
jb 0x10023bf5
cmp ebx, edx
jae 0x10023c07
mov dword [esp + 0x3c], 1
mov dword [esp + 0x20], 0
jmp 0x10023c20
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov edx, dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x7c]
shld edx, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x3c]
mov dword [esp + 0x60], ecx
adc edx, dword [esp + 0x20]
mov dword [esp + 0x64], edx
mov edx, eax
sub edx, dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
sbb eax, dword [esp + 0x88]
cmp eax, dword [esp + 0x2c]
jb 0x10023c68
ja 0x10023c59
cmp edx, dword [esp + 0x54]
jbe 0x10023c68
mov ecx, 1
mov dword [esp + 0x3c], 0
jmp 0x10023c7d
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
mov eax, ebx
sub eax, ecx
mov ecx, dword [esp + 0x1c]
sbb ecx, dword [esp + 0x3c]
sub eax, dword [esp + 0x4c]
mov dword [esp + 0x20], eax
sbb ecx, dword [esp + 0x28]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], ecx
cmp ecx, dword [esp + 0x1c]
jb 0x10023cc5
ja 0x10023cb3
cmp eax, ebx
jbe 0x10023cc5
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
jmp 0x10023cce
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x50]
add ecx, 0x3a
je 0x10023d1d
movq xmm0, qword [esp + 0x30]
mov eax, edi
movq xmm2, qword [esp + 0x60]
sub eax, ecx
movq xmm1, qword [esp + 0x98]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x30], xmm2
mov eax, dword [esp + 0x34]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x20], eax
mov ebx, dword [esp + 0x5c]
test ebx, ebx
je 0x10023d58
movq xmm2, qword [esp + 0x78]
sub edi, ebx
movq xmm1, qword [esp + 0x40]
movd xmm0, edi
psllq xmm2, xmm0
movd xmm0, ebx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x40], xmm2
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x48], eax
cmp dword [esp + 0x70], 0x15
ja 0x10023e03
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x94]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x58]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x94]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
add ebx, edi
mov edi, dword [esp + 0x58]
adc ecx, ecx
mul edi
add ebx, eax
adc ecx, edx
mov edx, dword [esp + 0x94]
shrd ebx, ecx, 2
mov ecx, edx
lea eax, [ebx + ebx*4]
sub ecx, eax
mov ecx, dword [esp + 0x70]
jne 0x10023ddd
push edi
push edx
call fcn.10025dd0
add esp, 8
mov byte [esp + 0x12], al
mov dword [esp + 0x1c], 0
mov byte [esp + 0x1a], 0
jmp 0x10023e20
cmp byte [esp + 0x1b], 0
je 0x10023f6b
sub edx, dword [esp + 0x74]
sbb edi, 0
add edx, 0xffffffff
adc edi, 0xffffffff
push edi
push edx
call fcn.10025dd0
add esp, 8
mov byte [esp + 0x13], al
mov al, byte [esp + 0x12]
mov cl, byte [esp + 0x13]
mov dword [esp + 0x1c], 0
mov byte [esp + 0x1a], 0
test cl, cl
jne 0x10024762
test al, al
jne 0x10024762
mov ebx, dword [esp + 0x14]
xor edi, edi
mov ebp, dword [esp + 0x24]
shrd ebx, ebp, 2
mov byte [esp + 0x1b], al
mov eax, 0x5c28f5c3
mul ebx
shr ebp, 2
mov eax, 0x5c28f5c3
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov eax, 0x28f5c28f
adc ebx, 0
xor ecx, ecx
add ebx, edi
adc ecx, ecx
mul ebp
mov ebp, dword [esp + 0x28]
add ebx, eax
mov eax, 0x5c28f5c3
adc ecx, edx
xor edi, edi
shrd ebx, ecx, 2
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x20]
shrd ebx, ebp, 2
shr ecx, 2
mul ebx
mov dword [esp + 0x5c], ecx
mov eax, 0x5c28f5c3
shr ebp, 2
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov eax, 0x28f5c28f
adc ebx, 0
xor ecx, ecx
add ebx, edi
adc ecx, ecx
mul ebp
add ebx, eax
adc ecx, edx
shrd ebx, ecx, 2
shr ecx, 2
mov dword [esp + 0x78], ebx
mov dword [esp + 0x60], ecx
cmp dword [esp + 0x5c], ecx
jb 0x10024538
ja 0x10023ee8
cmp dword [esp + 0x54], ebx
jbe 0x10024538
mov ebx, dword [esp + 0x48]
mov eax, 0x5c28f5c3
shrd ebx, esi, 2
xor edi, edi
mov dword [esp + 0x1c], 2
mul ebx
shr esi, 2
mov eax, 0x5c28f5c3
mov ebp, esi
mov ecx, edx
mul ebp
add ecx, eax
mov eax, 0x28f5c28f
adc edi, edx
mul ebx
add eax, ecx
mov ebx, edx
mov ecx, dword [esp + 0x48]
mov eax, 0x28f5c28f
adc ebx, 0
xor esi, esi
add ebx, edi
adc esi, esi
mul ebp
mov ebp, dword [esp + 0x78]
add ebx, eax
adc esi, edx
shrd ebx, esi, 2
imul eax, ebx, 0x64
shr esi, 2
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0x60]
sub ecx, eax
mov eax, dword [esp + 0x54]
cmp ecx, 0x32
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x5c]
setae byte [esp + 0x1b]
mov dword [esp + 0x24], eax
jmp 0x10024540
add edx, 2
adc edi, 0
push edi
push edx
call fcn.10025dd0
movzx eax, al
add esp, 8
cdq
sub ebp, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], ebp
sbb eax, edx
mov dword [esp + 0x24], eax
jmp 0x10023e03
xor ecx, ecx
mov eax, ebx
neg eax
mov ebp, 0x10181f88
cmp eax, 1
setg cl
imul edi, ebx, 0xfff4d105
shr edi, 0x14
sub edi, ecx
add ebx, edi
mov dword [esp + 0x78], edi
imul eax, ebx, 0xffed6cb1
mov dword [esp + 0x70], ebx
shr eax, 0x13
sub edi, eax
mov eax, ebx
shl eax, 4
sub ebp, eax
mov dword [esp + 0x5c], edi
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp + 0x28], eax
mov eax, edi
mul edx
mov dword [esp + 0x6c], edi
mov ebx, eax
mov ecx, edx
mov eax, edi
mul esi
mov esi, eax
mov edi, edx
mov eax, dword [ebp + 4]
add esi, ecx
adc edi, 0
mul dword [esp + 0x2c]
add eax, esi
mov ecx, edx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x14]
mov esi, eax
mov eax, edx
add esi, ecx
adc eax, 0
add esi, edi
mov dword [esp + 0x54], esi
adc eax, 0
mov dword [esp + 0x50], eax
xor eax, eax
or eax, ebx
mov ebx, dword [ebp + 8]
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
mov eax, ebx
mul dword [esp + 0x2c]
mov dword [esp + 0x3c], ebx
mov ebp, eax
mov ecx, edx
mov eax, ebx
mul dword [esp + 0x14]
mov edi, eax
mov ebx, edx
mov eax, dword [esp + 0x20]
add edi, ecx
adc ebx, 0
mul dword [esp + 0x2c]
mov esi, eax
mov ecx, edx
mov eax, dword [esp + 0x20]
add esi, edi
adc ecx, 0
mul dword [esp + 0x14]
mov edi, eax
mov dword [esp + 0x88], edx
add edi, ecx
mov ecx, edx
adc ecx, 0
add edi, ebx
adc ecx, 0
mov ebx, dword [esp + 0x54]
xor edx, edx
or edx, ebp
add edx, ebx
mov dword [esp + 0x48], edx
adc esi, dword [esp + 0x50]
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], esi
cmp esi, dword [esp + 0x50]
ja 0x100240b4
jb 0x100240ab
cmp edx, ebx
jae 0x100240b4
mov eax, 1
xor ebx, ebx
jmp 0x100240c5
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
add edi, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x30], edi
adc ecx, ebx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x4c]
mov edi, ecx
add edi, dword [esp + 0x6c]
adc eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x1c]
ja 0x100240ff
jb 0x100240f6
cmp edi, ecx
jae 0x100240ff
mov eax, 1
xor ecx, ecx
jmp 0x10024110
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
mov ebx, edx
mov ebp, esi
add ebx, dword [esp + 0x3c]
adc ebp, dword [esp + 0x20]
add ebx, eax
mov dword [esp + 0x14], ebx
adc ebp, ecx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x44], ebp
cmp ebp, esi
ja 0x1002414c
jb 0x1002413a
cmp ebx, edx
jae 0x1002414c
mov dword [esp + 0x60], 1
mov dword [esp + 0x64], 0
jmp 0x10024155
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov ecx, dword [esp + 0x5c]
mov edi, 0x40
add ecx, 0x37
mov dword [esp + 0x54], ecx
je 0x100241aa
movq xmm0, qword [esp + 0x60]
mov eax, edi
movq xmm2, qword [esp + 0x30]
sub eax, ecx
movq xmm1, qword [esp + 0x40]
paddq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x40], xmm2
mov ebp, dword [esp + 0x44]
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x74], 1
mov ecx, dword [esp + 0x4c]
mov eax, ecx
jne 0x100242a1
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x1c]
jb 0x100241eb
ja 0x100241d9
cmp dword [esp + 0x5c], ecx
jbe 0x100241eb
mov dword [esp + 0x50], 1
mov dword [esp + 0x4c], 0
jmp 0x10024204
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x50], eax
mov eax, edx
mov ecx, esi
sub eax, dword [esp + 0x3c]
sbb ecx, dword [esp + 0x20]
sub eax, dword [esp + 0x50]
mov dword [esp + 0x20], eax
sbb ecx, dword [esp + 0x4c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
cmp ecx, esi
jb 0x10024244
ja 0x10024232
cmp eax, edx
jbe 0x10024244
mov dword [esp + 0x60], 1
mov dword [esp + 0x64], 0
jmp 0x1002424d
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x100244a4
movq xmm0, qword [esp + 0x60]
mov eax, edi
movq xmm2, qword [esp + 0x30]
sub eax, ecx
movq xmm1, qword [esp + 0x40]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x40], xmm2
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], eax
jmp 0x10024461
mov ebp, dword [esp + 0x1c]
shld ebp, eax, 1
add eax, eax
mov dword [esp + 0x2c], ebp
cmp ebp, dword [esp + 0x1c]
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x98], eax
ja 0x100242d8
jb 0x100242c6
cmp eax, ecx
jae 0x100242d8
mov dword [esp + 0x50], 1
mov dword [esp + 0x4c], 0
jmp 0x100242f1
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x50], eax
mov ecx, edx
mov eax, esi
shld eax, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x50]
mov dword [esp + 0x60], ecx
adc eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
cmp eax, esi
ja 0x10024327
jb 0x10024315
cmp ecx, edx
jae 0x10024327
mov dword [esp + 0x50], 1
mov dword [esp + 0x4c], 0
jmp 0x10024340
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x30]
shld edx, eax, 1
add eax, eax
add eax, dword [esp + 0x50]
mov dword [esp + 0x88], eax
adc edx, dword [esp + 0x4c]
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x98]
mov eax, edx
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x2c]
sbb eax, dword [esp + 0x28]
cmp eax, dword [esp + 0x2c]
jb 0x100243a6
ja 0x10024394
cmp dword [esp + 0x98], edx
jbe 0x100243a6
mov dword [esp + 0x50], 1
mov dword [esp + 0x4c], 0
jmp 0x100243bf
xorps xmm0, xmm0
movlpd qword [esp + 0x40], xmm0
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x50], eax
mov eax, ecx
mov ecx, dword [esp + 0x1c]
sub eax, dword [esp + 0x3c]
sbb ecx, dword [esp + 0x20]
sub eax, dword [esp + 0x50]
mov dword [esp + 0x20], eax
sbb ecx, dword [esp + 0x4c]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], ecx
cmp ecx, dword [esp + 0x1c]
jb 0x10024405
ja 0x100243f3
cmp eax, dword [esp + 0x60]
jbe 0x10024405
mov dword [esp + 0x60], 1
mov dword [esp + 0x64], 0
jmp 0x1002440e
xorps xmm0, xmm0
movlpd qword [esp + 0x60], xmm0
mov ecx, dword [esp + 0x5c]
add ecx, 0x38
je 0x1002445d
movq xmm0, qword [esp + 0x60]
mov eax, edi
movq xmm2, qword [esp + 0x88]
sub eax, ecx
movq xmm1, qword [esp + 0x40]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x40], xmm2
mov eax, dword [esp + 0x44]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x100244a4
movq xmm2, qword [esp + 0x30]
sub edi, ecx
movq xmm1, qword [esp + 0x80]
movd xmm0, edi
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x80], xmm2
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x84]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x78]
cmp eax, 1
ja 0x100244da
cmp byte [esp + 0x1b], 0
mov al, 1
mov byte [esp + 0x12], al
je 0x100244c7
mov cl, byte [esp + 0x74]
mov byte [esp + 0x13], cl
jmp 0x10023e0b
add ebx, 0xffffffff
mov dword [esp + 0x14], ebx
adc ebp, 0xffffffff
mov dword [esp + 0x24], ebp
jmp 0x10023e07
cmp eax, 0x3f
jae 0x10023e03
xor edx, edx
xor ecx, ecx
dec eax
bts edx, eax
cmp eax, 0x20
cmovae ecx, edx
xor edx, ecx
cmp eax, 0x40
cmovae ecx, edx
add edx, 0xffffffff
adc ecx, 0xffffffff
and edx, dword [esp + 0x94]
and ecx, dword [esp + 0x58]
or edx, ecx
jne 0x10024521
mov al, 1
mov dword [esp + 0x1c], edx
mov byte [esp + 0x12], al
mov byte [esp + 0x1a], dl
jmp 0x10023e20
xor al, al
mov dword [esp + 0x1c], 0
mov byte [esp + 0x12], al
mov byte [esp + 0x1a], al
jmp 0x10023e20
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x20]
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x14]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x24]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x14]
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x24]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x14], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x24], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x24], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x2c], eax
jb 0x10024728
ja 0x10024600
cmp dword [esp + 0x14], ecx
jbe 0x10024728
nop word [eax + eax]
mov ebp, dword [esp + 0x48]
xor edi, edi
mov eax, 0xcccccccd
mov ebx, esi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x48], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
add ecx, eax
adc esi, edx
add ecx, edi
adc esi, 0
shrd ecx, esi, 3
shr esi, 3
mov dword [esp + 0x48], ecx
lea eax, [ecx + ecx*4]
add eax, eax
sub ebp, eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x28], eax
cmp ebp, 5
mov eax, 0xcccccccd
mov ebp, dword [esp + 0x24]
setae byte [esp + 0x1b]
inc dword [esp + 0x1c]
mul dword [esp + 0x14]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x2c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x14]
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x2c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x14], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x58]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x24], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x58]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x24], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x2c], eax
ja 0x10024600
jb 0x10024724
cmp dword [esp + 0x14], ecx
ja 0x10024600
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x48]
cmp eax, ebp
jne 0x10024738
cmp esi, ebx
je 0x10024b39
cmp byte [esp + 0x1b], 0
jne 0x10024b39
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
jmp 0x10024b40
mov eax, 0xcccccccd
mov ebp, dword [esp + 0x20]
mul dword [esp + 0x14]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x24]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x14]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x24]
add ebx, eax
mov eax, 0xcccccccd
adc ecx, edx
add ebx, edi
adc ecx, 0
xor edi, edi
mul ebp
shrd ebx, ecx, 3
mov eax, 0xcccccccd
shr ecx, 3
mov dword [esp + 0x2c], ecx
mov ecx, edx
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x28]
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x2c], eax
jb 0x1002497d
ja 0x10024820
cmp dword [esp + 0x24], ecx
jbe 0x1002497d
nop dword [eax]
mov eax, 0xcccccccd
mov ebx, esi
mul dword [esp + 0x48]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x48]
add eax, ecx
mov eax, 0xcccccccc
adc edx, 0
xor esi, esi
mov dword [esp + 0x78], edx
mul ebx
mov ebx, dword [esp + 0x78]
add ebx, eax
movzx eax, byte [esp + 0x13]
adc esi, edx
add ebx, edi
mov edi, dword [esp + 0x14]
adc esi, 0
xor edx, edx
shrd ebx, esi, 3
shr esi, 3
lea ecx, [edi + edi*4]
add ecx, ecx
cmp ebp, ecx
mov ebp, edi
cmove edx, eax
movzx eax, byte [esp + 0x12]
xor ecx, ecx
mov byte [esp + 0x13], dl
cmp byte [esp + 0x1a], cl
cmove ecx, eax
inc dword [esp + 0x1c]
mov byte [esp + 0x12], cl
mov al, bl
shl al, 2
mov cl, bl
add cl, al
xor edi, edi
mov al, byte [esp + 0x48]
add cl, cl
sub al, cl
mov dword [esp + 0x48], ebx
mov byte [esp + 0x1a], al
mov eax, dword [esp + 0x58]
mov dword [esp + 0x28], eax
mov eax, 0xcccccccd
mul dword [esp + 0x24]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x2c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x24]
add eax, ecx
mov dword [esp + 0x24], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x2c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
xor edi, edi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x24], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x58]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x58]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x2c], eax
ja 0x10024820
jb 0x10024975
cmp dword [esp + 0x24], ecx
ja 0x10024820
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x20], ebp
mov dl, byte [esp + 0x13]
test dl, dl
je 0x10024adf
mov eax, 0xcccccccd
xor edi, edi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
adc ecx, 0
xor eax, eax
mov eax, 0xcccccccc
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x54], eax
mov eax, ebp
lea ecx, [ecx + ecx*4]
add ecx, ecx
sub eax, ecx
jne 0x10024adb
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x5c], ebp
nop
mov eax, 0xcccccccd
mov dword [esp + 0x20], ebp
mul dword [esp + 0x48]
mov ebx, esi
xor edi, edi
mov ecx, edx
mov eax, 0xcccccccd
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x48]
add eax, ecx
mov dword [esp + 0x58], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor esi, esi
mul ebx
add ecx, eax
adc esi, edx
add ecx, edi
adc esi, 0
shrd ecx, esi, 3
shr esi, 3
cmp byte [esp + 0x1a], 0
mov dword [esp + 0x58], ecx
sete al
mov edx, dword [esp + 0x58]
and byte [esp + 0x12], al
xor edi, edi
mov al, cl
inc dword [esp + 0x1c]
shl al, 2
add cl, al
mov al, byte [esp + 0x48]
add cl, cl
mov dword [esp + 0x48], edx
sub al, cl
mov ecx, ebp
mov byte [esp + 0x1a], al
mov eax, dword [esp + 0x54]
mov ebx, eax
mov dword [esp + 0x28], eax
mov eax, 0xcccccccd
mul ecx
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x5c]
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
adc ecx, 0
xor eax, eax
mov eax, 0xcccccccc
mul ebx
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x54], eax
mov eax, ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x14], ecx
lea eax, [eax + eax*4]
add eax, eax
sub ebp, eax
mov ebp, ecx
je 0x100249f0
mov dl, byte [esp + 0x13]
cmp byte [esp + 0x12], 0
mov cl, byte [esp + 0x1a]
je 0x10024afd
cmp cl, 5
jne 0x10024afd
mov eax, dword [esp + 0x48]
and eax, 1
or eax, 0
jne 0x10024afd
mov cl, 4
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x20]
jne 0x10024b18
cmp esi, dword [esp + 0x28]
jne 0x10024b18
cmp byte [esp + 0x1b], 0
je 0x10024b39
test dl, dl
je 0x10024b39
cmp cl, 5
jae 0x10024b39
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
jmp 0x10024b40
mov edx, 1
xor edi, edi
mov ecx, dword [esp + 0x70]
add edx, eax
mov eax, dword [esp + 0xa4]
adc edi, esi
add ecx, dword [esp + 0x1c]
mov dword [eax + 4], edi
pop edi
pop esi
pop ebp
mov dword [eax + 8], ecx
mov dword [eax], edx
pop ebx
add esp, 0x90
ret