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

Disassembly:
sub esp, 0x68
push ebx
mov ebx, dword [esp + 0x78]
push ebp
mov ebp, dword [esp + 0x80]
push esi
mov esi, ebx
push edi
mov edi, dword [esp + 0x80]
mov edx, edi
test ebp, ebp
jne 0x1003fadb
mov dword [esp + 0x58], 0xfffffbcc
jmp 0x1003faeb
lea eax, [ebp - 0x435]
or esi, 0x100000
mov dword [esp + 0x58], eax
mov eax, edx
mov byte [esp + 0x13], 1
and eax, 1
or eax, 0
je 0x1003faff
mov byte [esp + 0x13], 0
mov eax, edx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
or edi, ebx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], eax
jne 0x1003fb1f
mov dword [esp + 0x38], edi
cmp ebp, 1
ja 0x1003fb27
mov dword [esp + 0x38], 1
mov ebx, dword [esp + 0x58]
xor al, al
shld esi, edx, 1
mov byte [esp + 0x88], 0
add edx, edx
mov byte [esp + 0x80], al
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], edx
test ebx, ebx
js 0x10040136
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, 0x10073b20
mov dword [esp + 0x30], ecx
shr eax, 0x13
sub eax, ebx
mov edi, dword [ebp]
add eax, ecx
mov dword [esp + 0x44], edi
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 4]
mov dword [esp + 0x48], 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 + 0x24]
add eax, esi
mov ecx, edx
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
mov eax, edx
mov edx, dword [esp + 0x3c]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x68], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x50], edi
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
mov eax, edi
mul dword [esp + 0x24]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x1c]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x18]
add esi, ecx
adc edi, 0
mul dword [esp + 0x24]
add eax, esi
mov ecx, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x18]
adc ecx, 0
mul dword [esp + 0x1c]
mov ebp, eax
add ebp, ecx
mov ecx, dword [esp + 0x3c]
adc edx, 0
add ebp, edi
adc edx, 0
xor esi, esi
or esi, ebx
mov ebx, dword [esp + 0x14]
add esi, ecx
adc ebx, dword [esp + 0x68]
mov dword [esp + 0x58], esi
cmp ebx, dword [esp + 0x68]
ja 0x1003fc5e
jb 0x1003fc55
cmp esi, ecx
jae 0x1003fc5e
mov eax, 1
xor ecx, ecx
jmp 0x1003fc6f
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
add ebp, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x34], ebp
adc edx, ecx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x40]
mov edi, edx
add edi, dword [esp + 0x44]
adc eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x20]
ja 0x1003fca2
jb 0x1003fc99
cmp edi, edx
jae 0x1003fca2
mov eax, 1
xor edi, edi
jmp 0x1003fcb3
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov edi, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
add eax, esi
adc edi, ebx
add eax, dword [esp + 0x50]
adc edi, dword [esp + 0x18]
cmp edi, ebx
ja 0x1003fcd2
jb 0x1003fcc9
cmp eax, esi
jae 0x1003fcd2
mov eax, 1
xor edx, edx
jmp 0x1003fce3
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov ebp, dword [esp + 0x28]
mov ecx, 7
sub ecx, ebp
mov dword [esp + 0x3c], ecx
lea ecx, [ebp + 0x19]
xor ebp, ebp
shr edi, cl
add eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
adc edx, dword [esp + 0x14]
call fcn.1004cb20
or edi, eax
or ebp, edx
cmp dword [esp + 0x38], 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x1c], ebp
jne 0x1003fdbc
mov edx, dword [esp + 0x40]
mov edi, edx
sub edi, dword [esp + 0x44]
mov eax, dword [esp + 0x20]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x20]
jb 0x1003fd48
ja 0x1003fd3f
cmp edi, edx
jbe 0x1003fd48
mov eax, 1
xor edx, edx
jmp 0x1003fd59
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov ecx, esi
mov esi, ebx
sub ecx, eax
sbb esi, edx
sub ecx, dword [esp + 0x50]
sbb esi, dword [esp + 0x18]
cmp esi, ebx
jb 0x1003fd7e
ja 0x1003fd75
cmp ecx, dword [esp + 0x58]
jbe 0x1003fd7e
mov edx, 1
xor ebp, ebp
jmp 0x1003fd8f
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov ebp, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x28]
xor edi, edi
mov eax, dword [esp + 0x34]
lea ecx, [ecx + 0x19]
shr esi, cl
sub eax, edx
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
sbb edx, ebp
call fcn.1004cb20
or esi, eax
or edi, edx
mov dword [esp + 0x18], edi
jmp 0x1003ff02
mov ecx, dword [esp + 0x40]
mov esi, ecx
mov ebp, dword [esp + 0x20]
shld ebp, esi, 1
add esi, esi
cmp ebp, dword [esp + 0x20]
ja 0x1003fde7
jb 0x1003fdd8
cmp esi, ecx
jae 0x1003fde7
mov edx, 1
mov dword [esp + 0x40], 0
jmp 0x1003fdfc
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x58]
mov edi, ebx
mov ecx, eax
shld edi, ecx, 1
add ecx, ecx
add ecx, edx
adc edi, dword [esp + 0x40]
cmp edi, ebx
ja 0x1003fe2c
jb 0x1003fe1a
cmp ecx, eax
jae 0x1003fe2c
mov dword [esp + 0x58], 1
mov dword [esp + 0x40], 0
jmp 0x1003fe45
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x58], eax
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x14]
shld eax, edx, 1
add edx, edx
add edx, dword [esp + 0x58]
adc eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, esi
sub eax, dword [esp + 0x44]
mov dword [esp + 0x68], eax
mov eax, ebp
sbb eax, dword [esp + 0x48]
cmp eax, ebp
jb 0x1003fe84
ja 0x1003fe7b
cmp dword [esp + 0x68], esi
jbe 0x1003fe84
mov esi, 1
xor ebp, ebp
jmp 0x1003fe95
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov ebp, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
mov eax, ecx
sub eax, esi
mov esi, edi
sbb esi, ebp
sub eax, dword [esp + 0x50]
sbb esi, dword [esp + 0x18]
cmp esi, edi
jb 0x1003febe
ja 0x1003feaf
cmp eax, ecx
jbe 0x1003febe
mov eax, 1
mov dword [esp + 0x58], 0
jmp 0x1003fed3
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x28]
xor ebp, ebp
mov edi, dword [esp + 0x40]
add ecx, 0x1a
shr esi, cl
sub edx, eax
mov ecx, 6
mov eax, edx
sbb edi, dword [esp + 0x58]
sub ecx, dword [esp + 0x28]
mov edx, edi
call fcn.1004cb20
or esi, eax
or ebp, edx
mov dword [esp + 0x18], ebp
mov ecx, dword [esp + 0x28]
xor ebp, ebp
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
lea ecx, [ecx + 0x19]
shr ebx, cl
mov ecx, dword [esp + 0x3c]
call fcn.1004cb20
or ebx, eax
or ebp, edx
cmp dword [esp + 0x30], 0x15
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], ebp
ja 0x1003ffd2
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x64]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x60]
push dword [esp + 0x30]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x68]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
add ebx, edi
mov edi, dword [esp + 0x64]
adc ecx, ecx
mul edi
add ebx, eax
adc ecx, edx
mov edx, dword [esp + 0x68]
shrd ebx, ecx, 2
mov ecx, edx
lea eax, [ebx + ebx*4]
sub ecx, eax
jne 0x1003ffa9
push edi
push edx
call fcn.10042590
add esp, 0xc
mov byte [esp + 0x80], al
mov dword [esp + 0x20], 0
mov byte [esp + 0x12], 0
jmp 0x1003fff5
cmp byte [esp + 0x17], 0
je 0x10040115
sub edx, dword [esp + 0x3c]
sbb edi, 0
add edx, 0xffffffff
adc edi, 0xffffffff
push edi
push edx
call fcn.10042590
add esp, 0xc
mov byte [esp + 0x88], al
mov al, byte [esp + 0x80]
mov cl, byte [esp + 0x88]
mov dword [esp + 0x20], 0
mov byte [esp + 0x12], 0
test cl, cl
jne 0x100407f1
test al, al
jne 0x100407f1
mov ebx, dword [esp + 0x24]
xor edi, edi
mov ebp, dword [esp + 0x1c]
shrd ebx, ebp, 2
mov byte [esp + 0x88], 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 + 0x18]
add ebx, eax
mov eax, 0x5c28f5c3
adc ecx, edx
xor edi, edi
shrd ebx, ecx, 2
mov dword [esp + 0x80], ebx
mov ebx, esi
shrd ebx, ebp, 2
shr ecx, 2
mul ebx
mov dword [esp + 0x68], 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 + 0x70], ebx
mov dword [esp + 0x64], ecx
cmp dword [esp + 0x68], ecx
jb 0x100405a1
mov edi, dword [esp + 0x80]
ja 0x100400c6
cmp edi, ebx
jbe 0x100405a1
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
push ecx
push ebx
call fcn.100414f0
mov esi, dword [esp + 0x78]
add esp, 8
imul ecx, eax, 0x64
mov ebp, edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], 2
sub ebx, ecx
cmp ebx, 0x32
mov ebx, eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x1c], eax
setae byte [esp + 0x88]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], eax
jmp 0x100405a9
add edx, 2
adc edi, 0
push edi
push edx
call fcn.10042590
movzx eax, al
add esp, 0xc
cdq
sub dword [esp + 0x24], eax
sbb dword [esp + 0x1c], edx
jmp 0x1003ffd2
xor ecx, ecx
mov eax, ebx
neg eax
mov ebp, 0x10074d60
cmp eax, 1
setg cl
imul edi, ebx, 0xfff4d105
shr edi, 0x14
sub edi, ecx
add ebx, edi
mov dword [esp + 0x70], edi
imul eax, ebx, 0xffed6cb1
mov dword [esp + 0x30], ebx
shr eax, 0x13
sub edi, eax
mov eax, ebx
shl eax, 4
sub ebp, eax
mov dword [esp + 0x34], edi
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp + 0x40], eax
mov eax, edi
mul edx
mov dword [esp + 0x44], 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 + 0x24]
add eax, esi
mov ecx, edx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x1c]
mov dword [esp + 0x50], eax
mov eax, edx
mov edx, dword [esp + 0x50]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x50], edx
mov dword [esp + 0x58], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x18], edi
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x20], eax
mov eax, edi
mul dword [esp + 0x24]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x1c]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x20]
add esi, ecx
adc edi, 0
mul dword [esp + 0x24]
add eax, esi
mov ecx, edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x20]
adc ecx, 0
mul dword [esp + 0x1c]
mov ebp, eax
add ebp, ecx
adc edx, 0
add ebp, edi
adc edx, 0
xor esi, esi
mov ecx, dword [esp + 0x50]
or esi, ebx
mov ebx, dword [esp + 0x14]
add esi, ecx
mov dword [esp + 0x68], esi
adc ebx, dword [esp + 0x58]
cmp ebx, dword [esp + 0x58]
ja 0x1004024b
jb 0x10040242
cmp esi, ecx
jae 0x1004024b
mov eax, 1
xor ecx, ecx
jmp 0x1004025c
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
add ebp, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], ebp
adc edx, ecx
mov ecx, dword [esp + 0x48]
mov edi, ecx
mov dword [esp + 0x3c], edx
add edi, dword [esp + 0x44]
adc eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x28]
ja 0x1004028f
jb 0x10040286
cmp edi, ecx
jae 0x1004028f
mov ecx, 1
xor edx, edx
jmp 0x100402a0
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
mov eax, esi
mov edi, ebx
add eax, dword [esp + 0x18]
adc edi, dword [esp + 0x20]
add eax, ecx
adc edi, edx
cmp edi, ebx
ja 0x100402c9
jb 0x100402ba
cmp eax, esi
jae 0x100402c9
mov edx, 1
mov dword [esp + 0x50], 0
jmp 0x100402de
xorps xmm0, xmm0
movlpd qword [esp + 0x58], xmm0
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x50], eax
mov ebp, dword [esp + 0x34]
mov eax, 9
sub eax, ebp
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x14]
lea ecx, [ebp + 0x17]
xor ebp, ebp
shr edi, cl
add eax, edx
mov edx, dword [esp + 0x3c]
adc edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x58]
call fcn.1004cb20
or edi, eax
or ebp, edx
cmp dword [esp + 0x38], 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x1c], ebp
jne 0x100403bc
mov ecx, dword [esp + 0x48]
mov ebp, ecx
sub ebp, dword [esp + 0x44]
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x28]
jb 0x10040349
ja 0x10040340
cmp ebp, ecx
jbe 0x10040349
mov eax, 1
xor edx, edx
jmp 0x1004035a
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, esi
mov esi, ebx
sub ecx, dword [esp + 0x18]
sbb esi, dword [esp + 0x20]
sub ecx, eax
sbb esi, edx
cmp esi, ebx
jb 0x10040385
ja 0x10040376
cmp ecx, dword [esp + 0x68]
jbe 0x10040385
mov edx, 1
mov dword [esp + 0x50], 0
jmp 0x1004039a
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x50], eax
mov ecx, dword [esp + 0x34]
xor ebp, ebp
mov eax, dword [esp + 0x14]
lea ecx, [ecx + 0x17]
shr esi, cl
sub eax, edx
mov edx, dword [esp + 0x3c]
sbb edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x58]
jmp 0x10040514
mov eax, dword [esp + 0x48]
mov esi, eax
mov edx, dword [esp + 0x28]
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x48], edx
cmp edx, dword [esp + 0x28]
ja 0x100403eb
jb 0x100403dc
cmp esi, eax
jae 0x100403eb
mov edx, 1
mov dword [esp + 0x50], 0
jmp 0x10040400
xorps xmm0, xmm0
movlpd qword [esp + 0x28], xmm0
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x68]
mov ebp, ebx
mov ecx, eax
shld ebp, ecx, 1
add ecx, ecx
add ecx, edx
adc ebp, dword [esp + 0x50]
cmp ebp, ebx
ja 0x10040430
jb 0x1004041e
cmp ecx, eax
jae 0x10040430
mov dword [esp + 0x68], 1
mov dword [esp + 0x50], 0
jmp 0x10040449
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x68], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
shld eax, edx, 1
add edx, edx
add edx, dword [esp + 0x68]
adc eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
mov eax, esi
sub eax, dword [esp + 0x44]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x48]
sbb eax, dword [esp + 0x40]
cmp eax, dword [esp + 0x48]
jb 0x10040495
ja 0x10040483
cmp dword [esp + 0x68], esi
jbe 0x10040495
mov dword [esp + 0x68], 1
mov dword [esp + 0x48], 0
jmp 0x100404ae
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x68], eax
mov eax, ecx
mov esi, ebp
sub eax, dword [esp + 0x18]
sbb esi, dword [esp + 0x20]
sub eax, dword [esp + 0x68]
sbb esi, dword [esp + 0x48]
cmp esi, ebp
jb 0x100404db
ja 0x100404cc
cmp eax, ecx
jbe 0x100404db
mov eax, 1
mov dword [esp + 0x68], 0
jmp 0x100404f0
xorps xmm0, xmm0
movlpd qword [esp + 0x48], xmm0
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x34]
xor ebp, ebp
add ecx, 0x18
shr esi, cl
sub edx, eax
mov eax, dword [esp + 0x68]
mov ecx, 8
sbb dword [esp + 0x50], eax
mov eax, edx
sub ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x50]
call fcn.1004cb20
mov ecx, dword [esp + 0x34]
or ebp, edx
mov edx, dword [esp + 0x3c]
or esi, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], ebp
xor ebp, ebp
lea ecx, [ecx + 0x17]
shr ebx, cl
mov ecx, dword [esp + 0x58]
call fcn.1004cb20
or ebx, eax
or ebp, edx
mov eax, dword [esp + 0x70]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x28], ebp
cmp eax, 1
ja 0x10040583
cmp byte [esp + 0x13], 0
mov al, 1
mov byte [esp + 0x80], al
je 0x10040572
mov cl, byte [esp + 0x38]
mov byte [esp + 0x88], cl
jmp 0x1003ffe0
add edi, 0xffffffff
mov dword [esp + 0x24], edi
adc dword [esp + 0x1c], 0xffffffff
jmp 0x1003ffd9
cmp eax, 0x3f
jae 0x1003ffd2
mov ebx, dword [esp + 0x64]
dec eax
push eax
push dword [esp + 0x64]
push ebx
call fcn.10042510
jmp 0x1003ff90
mov ebp, dword [esp + 0x28]
mov ebx, dword [esp + 0x14]
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x24]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x24]
add eax, ecx
mov dword [esp + 0x80], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x1c]
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 + 0x3c], eax
mov eax, 0xcccccccd
mul esi
mov dword [esp + 0x80], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x18]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul esi
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x18]
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 + 0x28], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x3c], eax
jb 0x100407a6
ja 0x10040670
cmp dword [esp + 0x80], ecx
jbe 0x100407a6
nop dword [eax]
mov eax, 0xcccccccd
mov edi, ebp
mul ebx
xor esi, esi
mov eax, 0xcccccccd
mov ecx, edx
mul edi
add ecx, eax
mov eax, 0xcccccccc
adc esi, edx
mul ebx
add eax, ecx
mov dword [esp + 0x14], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor ebp, ebp
mul edi
add ecx, eax
adc ebp, edx
add ecx, esi
mov esi, dword [esp + 0x28]
adc ebp, 0
shrd ecx, ebp, 3
shr ebp, 3
mov dword [esp + 0x14], ecx
lea eax, [ecx + ecx*4]
add eax, eax
sub ebx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x18], eax
cmp ebx, 5
mov eax, 0xcccccccd
setae byte [esp + 0x88]
inc dword [esp + 0x20]
mul dword [esp + 0x80]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x3c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x80]
add eax, ecx
mov dword [esp + 0x80], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x3c]
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 + 0x3c], eax
mov eax, 0xcccccccd
mul esi
mov dword [esp + 0x80], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul esi
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, edi
adc eax, 0
shrd ecx, eax, 3
mov ebx, dword [esp + 0x14]
shr eax, 3
mov dword [esp + 0x28], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x3c], eax
ja 0x10040670
jb 0x100407a6
cmp dword [esp + 0x80], ecx
ja 0x10040670
mov eax, dword [esp + 0x14]
cmp eax, esi
jne 0x100407b4
cmp ebp, dword [esp + 0x18]
je 0x100407e1
cmp byte [esp + 0x88], 0
jne 0x100407e1
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov edx, dword [esp + 0x80]
mov esi, dword [esp + 0x84]
add edx, eax
adc esi, ebp
jmp 0x10040bdb
mov edx, 1
xor esi, esi
add edx, eax
adc esi, ebp
jmp 0x10040bdb
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x24]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x24]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x1c]
add ebx, eax
mov eax, 0xcccccccd
adc ecx, edx
add ebx, edi
adc ecx, 0
xor edi, edi
mul esi
shrd ebx, ecx, 3
mov eax, 0xcccccccd
shr ecx, 3
mov dword [esp + 0x3c], ecx
mov ecx, edx
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x18]
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul esi
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 + 0x64], eax
cmp dword [esp + 0x3c], eax
jb 0x10040a0d
ja 0x100408a4
cmp dword [esp + 0x1c], ecx
jbe 0x10040a0d
mov eax, 0xcccccccd
mov ebx, ebp
mul dword [esp + 0x14]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x14]
add eax, ecx
mov eax, 0xcccccccc
adc edx, 0
xor ebp, ebp
mov dword [esp + 0x70], edx
mul ebx
mov ebx, dword [esp + 0x70]
add ebx, eax
movzx eax, byte [esp + 0x88]
adc ebp, edx
add ebx, edi
mov edi, dword [esp + 0x24]
adc ebp, 0
xor edx, edx
shrd ebx, ebp, 3
shr ebp, 3
lea ecx, [edi + edi*4]
add ecx, ecx
cmp esi, ecx
mov esi, edi
cmove edx, eax
movzx eax, byte [esp + 0x80]
xor ecx, ecx
mov byte [esp + 0x88], dl
cmp byte [esp + 0x12], cl
cmove ecx, eax
inc dword [esp + 0x20]
mov byte [esp + 0x80], cl
mov al, bl
shl al, 2
mov cl, bl
add cl, al
xor edi, edi
mov al, byte [esp + 0x14]
add cl, cl
sub al, cl
mov dword [esp + 0x14], ebx
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x64]
mov dword [esp + 0x18], eax
mov eax, 0xcccccccd
mul dword [esp + 0x1c]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x3c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x1c]
add eax, ecx
mov dword [esp + 0x1c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x3c]
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 + 0x3c], eax
mov eax, 0xcccccccd
mul esi
mov dword [esp + 0x1c], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul esi
add eax, ecx
mov dword [esp + 0x24], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x64]
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 + 0x64], eax
cmp dword [esp + 0x3c], eax
ja 0x100408a4
jb 0x10040a05
cmp dword [esp + 0x1c], ecx
ja 0x100408a4
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x28], ebp
mov dh, byte [esp + 0x88]
test dh, dh
je 0x10040b71
mov eax, 0xcccccccd
xor edi, edi
mul esi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul esi
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x18]
add ebx, eax
mov eax, esi
adc ecx, edx
add ebx, edi
adc ecx, 0
shrd ebx, ecx, 3
shr ecx, 3
mov dword [esp + 0x68], ecx
mov dword [esp + 0x3c], ebx
lea ecx, [ebx + ebx*4]
add ecx, ecx
sub eax, ecx
jne 0x10040b6a
mov dword [esp + 0x64], ebx
jmp 0x10040a84
mov ebp, dword [esp + 0x28]
mov eax, 0xcccccccd
mov edi, ebp
mul dword [esp + 0x14]
xor esi, esi
mov eax, 0xcccccccd
mov ecx, edx
mul edi
add ecx, eax
mov eax, 0xcccccccc
adc esi, edx
mul dword [esp + 0x14]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul edi
add ebx, eax
adc ecx, edx
add ebx, esi
mov esi, dword [esp + 0x3c]
mov ebp, esi
adc ecx, 0
shrd ebx, ecx, 3
shr ecx, 3
cmp byte [esp + 0x12], 0
mov dword [esp + 0x28], ecx
mov cl, bl
sete al
inc dword [esp + 0x20]
and byte [esp + 0x80], al
xor edi, edi
mov al, bl
shl al, 2
add cl, al
mov al, byte [esp + 0x14]
add cl, cl
mov dword [esp + 0x14], ebx
sub al, cl
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x68]
mov ebx, eax
mov dword [esp + 0x18], eax
mov eax, 0xcccccccd
mul esi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x64]
add eax, ecx
mov dword [esp + 0x3c], 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 + 0x68], eax
mov eax, ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x3c], ecx
lea eax, [eax + eax*4]
add eax, eax
sub ebp, eax
je 0x10040a80
mov dh, byte [esp + 0x88]
cmp byte [esp + 0x80], 0
mov dl, byte [esp + 0x12]
je 0x10040b92
cmp dl, 5
jne 0x10040b92
mov eax, dword [esp + 0x14]
and eax, 1
or eax, 0
jne 0x10040b92
mov dl, 4
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
cmp eax, esi
jne 0x10040baf
cmp ecx, dword [esp + 0x18]
jne 0x10040baf
cmp byte [esp + 0x13], 0
je 0x10040bd0
test dh, dh
je 0x10040bd0
cmp dl, 5
jae 0x10040bd0
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
jmp 0x10040bd7
mov edx, 1
xor esi, esi
add edx, eax
adc esi, ecx
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x30]
add ecx, dword [esp + 0x20]
pop edi
mov dword [eax + 4], esi
pop esi
pop ebp
mov dword [eax + 8], ecx
mov dword [eax], edx
pop ebx
add esp, 0x68
ret