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

Disassembly:
sub esp, 0x70
push ebx
mov ebx, dword [esp + 0x80]
push ebp
push esi
mov ebp, ecx
mov esi, ebx
push edi
mov edi, dword [esp + 0x88]
mov edx, edi
test ebp, ebp
jne 0x10038ce9
mov dword [esp + 0x5c], 0xfffffbcc
jmp 0x10038cf9
lea eax, [ebp - 0x435]
or esi, 0x100000
mov dword [esp + 0x5c], eax
mov eax, edx
mov byte [esp + 0x17], 1
and eax, 1
or eax, 0
je 0x10038d0d
mov byte [esp + 0x17], 0
mov eax, edx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
or edi, ebx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x60], eax
jne 0x10038d2d
mov dword [esp + 0x38], edi
cmp ebp, 1
ja 0x10038d35
mov dword [esp + 0x38], 1
mov ebx, dword [esp + 0x5c]
xor al, al
shld esi, edx, 1
mov byte [esp + 0x14], 0
add edx, edx
mov byte [esp + 0x15], al
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], edx
test ebx, ebx
js 0x10039361
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, 0x1012d690
mov dword [esp + 0x34], ecx
shr eax, 0x13
sub eax, ebx
mov edi, dword [ebp]
add eax, ecx
mov dword [esp + 0x44], edi
mov dword [esp + 0x2c], 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 + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x3c]
mov dword [esp + 0x30], eax
mov eax, edx
mov edx, dword [esp + 0x30]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x30], edx
mov dword [esp + 0x5c], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x4c], edi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x24], eax
mov eax, edi
mul dword [esp + 0x40]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x3c]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x24]
add esi, ecx
adc edi, 0
mul dword [esp + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
adc ecx, 0
mul dword [esp + 0x3c]
mov ebp, eax
add ebp, ecx
mov ecx, dword [esp + 0x30]
adc edx, 0
add ebp, edi
adc edx, 0
xor edi, edi
or edi, ebx
mov ebx, dword [esp + 0x18]
add edi, ecx
adc ebx, dword [esp + 0x5c]
mov dword [esp + 0x68], edi
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x5c]
ja 0x10038e6a
jb 0x10038e61
cmp edi, ecx
jae 0x10038e6a
mov eax, 1
xor ecx, ecx
jmp 0x10038e7b
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
add ebp, eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x3c], ebp
adc edx, ecx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x1c]
mov esi, edx
add esi, dword [esp + 0x44]
adc eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
ja 0x10038eae
jb 0x10038ea5
cmp esi, edx
jae 0x10038eae
mov eax, 1
xor ebp, ebp
jmp 0x10038ebf
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
add eax, edi
adc ebp, ebx
add eax, dword [esp + 0x4c]
adc ebp, dword [esp + 0x24]
cmp ebp, ebx
ja 0x10038ede
jb 0x10038ed5
cmp eax, edi
jae 0x10038ede
mov eax, 1
xor edx, edx
jmp 0x10038eef
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
mov esi, dword [esp + 0x2c]
mov ecx, 7
sub ecx, esi
mov dword [esp + 0x50], ecx
lea ecx, [esi + 0x19]
xor esi, esi
shr ebp, cl
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x50]
adc edx, dword [esp + 0x40]
call fcn.1010f480
or ebp, eax
or esi, edx
cmp dword [esp + 0x38], 1
mov eax, dword [esp + 0x28]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x20], esi
jne 0x10038fc6
mov edx, dword [esp + 0x1c]
mov esi, edx
sub esi, dword [esp + 0x44]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
jb 0x10038f54
ja 0x10038f4b
cmp esi, edx
jbe 0x10038f54
mov ecx, 1
xor edx, edx
jmp 0x10038f65
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
mov eax, edi
sub eax, ecx
sbb ebx, edx
sub eax, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x24]
cmp ebx, dword [esp + 0x18]
jb 0x10038f88
ja 0x10038f7f
cmp eax, edi
jbe 0x10038f88
mov edx, 1
xor esi, esi
jmp 0x10038f99
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov esi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x2c]
xor edi, edi
mov eax, dword [esp + 0x3c]
lea ecx, [ecx + 0x19]
shr ebx, cl
sub eax, edx
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
sbb edx, esi
call fcn.1010f480
or ebx, eax
or edi, edx
mov dword [esp + 0x1c], edi
jmp 0x10039105
mov ecx, dword [esp + 0x1c]
mov edx, eax
mov esi, ecx
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x28], edx
cmp edx, eax
ja 0x10038feb
jb 0x10038fe2
cmp esi, ecx
jae 0x10038feb
mov eax, 1
xor edx, edx
jmp 0x10038ffc
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x78]
mov ecx, edi
mov edi, ebx
shld edi, ecx, 1
add ecx, ecx
add ecx, eax
adc edi, edx
cmp edi, ebx
ja 0x10039025
jb 0x10039016
cmp ecx, dword [esp + 0x68]
jae 0x10039025
mov ebx, 1
mov dword [esp + 0x5c], 0
jmp 0x1003903a
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x5c], eax
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
shld eax, edx, 1
add edx, edx
add edx, ebx
adc eax, dword [esp + 0x5c]
mov dword [esp + 0x1c], eax
mov eax, esi
sub eax, dword [esp + 0x44]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x28]
sbb eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x28]
jb 0x10039081
ja 0x10039072
cmp dword [esp + 0x68], esi
jbe 0x10039081
mov esi, 1
mov dword [esp + 0x5c], 0
jmp 0x10039096
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
mov dword [esp + 0x5c], eax
mov eax, ecx
mov ebx, edi
sub eax, esi
sbb ebx, dword [esp + 0x5c]
sub eax, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x24]
cmp ebx, edi
jb 0x100390c1
ja 0x100390b2
cmp eax, ecx
jbe 0x100390c1
mov eax, 1
mov dword [esp + 0x5c], 0
jmp 0x100390d6
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x2c]
xor esi, esi
mov edi, dword [esp + 0x1c]
add ecx, 0x1a
shr ebx, cl
sub edx, eax
mov ecx, 6
mov eax, edx
sbb edi, dword [esp + 0x5c]
sub ecx, dword [esp + 0x2c]
mov edx, edi
call fcn.1010f480
or ebx, eax
or esi, edx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
lea ecx, [ecx + 0x19]
shr ebx, cl
mov ecx, dword [esp + 0x50]
call fcn.1010f480
or ebx, eax
or esi, edx
cmp dword [esp + 0x34], 0x15
mov dword [esp + 0x18], ebx
ja 0x100391d3
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x60]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x60]
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 + 0x60]
shrd ebx, ecx, 2
mov ecx, edx
lea eax, [ebx + ebx*4]
sub ecx, eax
mov ecx, dword [esp + 0x34]
jne 0x100391ad
push edi
push edx
call fcn.10037ae0
add esp, 8
mov byte [esp + 0x15], al
mov dword [esp + 0x24], 0
mov byte [esp + 0x16], 0
jmp 0x100391f0
cmp byte [esp + 0x17], 0
je 0x1003933e
sub edx, dword [esp + 0x38]
sbb edi, 0
add edx, 0xffffffff
adc edi, 0xffffffff
push edi
push edx
call fcn.10037ae0
add esp, 8
mov byte [esp + 0x14], al
mov al, byte [esp + 0x15]
mov cl, byte [esp + 0x14]
mov dword [esp + 0x24], 0
mov byte [esp + 0x16], 0
test cl, cl
jne 0x10039804
test al, al
jne 0x10039804
mov ebx, ebp
mov byte [esp + 0x17], 0
mov ebp, dword [esp + 0x20]
mov eax, 0x5c28f5c3
shrd ebx, ebp, 2
xor edi, edi
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 + 0x1c]
add ebx, eax
mov eax, 0x5c28f5c3
adc ecx, edx
xor edi, edi
shrd ebx, ecx, 2
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0x28]
shrd ebx, ebp, 2
shr ecx, 2
mul ebx
mov dword [esp + 0x60], 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 + 0x70], ecx
cmp dword [esp + 0x60], ecx
jb 0x10039bd8
ja 0x100392b7
cmp dword [esp + 0x64], ebx
jbe 0x10039bd8
mov ebx, dword [esp + 0x18]
mov eax, 0x5c28f5c3
shrd ebx, esi, 2
xor edi, edi
mov dword [esp + 0x24], 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 + 0x18]
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 + 0x18], ebx
sub ecx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x30], eax
cmp ecx, 0x32
mov eax, dword [esp + 0x60]
mov dword [esp + 0x20], eax
setae byte [esp + 0x17]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x1c], eax
jmp 0x10039be0
add edx, 2
adc edi, 0
push edi
push edx
call fcn.10037ae0
movzx eax, al
add esp, 8
cdq
sub ebp, eax
mov dword [esp + 0x30], ebp
sbb dword [esp + 0x20], edx
jmp 0x100391d3
xor ecx, ecx
mov eax, ebx
neg eax
mov ebp, 0x1012e8d0
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 + 0x34], ebx
shr eax, 0x13
sub edi, eax
mov eax, ebx
shl eax, 4
sub ebp, eax
mov dword [esp + 0x24], edi
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp + 0x44], eax
mov eax, edi
mul edx
mov dword [esp + 0x48], 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 + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x3c]
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 + 0x68], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x28], eax
mov eax, edi
mul dword [esp + 0x40]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x3c]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x28]
add esi, ecx
adc edi, 0
mul dword [esp + 0x40]
add eax, esi
mov ecx, edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
adc ecx, 0
mul dword [esp + 0x3c]
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 + 0x18]
add esi, ecx
mov dword [esp + 0x70], esi
adc ebx, dword [esp + 0x68]
mov dword [esp + 0x18], ebx
cmp ebx, dword [esp + 0x68]
ja 0x1003947a
jb 0x10039471
cmp esi, ecx
jae 0x1003947a
mov eax, 1
xor ecx, ecx
jmp 0x1003948b
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x68]
add ebp, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x40], ebp
adc edx, ecx
mov ecx, dword [esp + 0x4c]
mov edi, ecx
mov dword [esp + 0x3c], edx
add edi, dword [esp + 0x48]
adc eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x2c]
ja 0x100394be
jb 0x100394b5
cmp edi, ecx
jae 0x100394be
mov ecx, 1
xor edx, edx
jmp 0x100394cf
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x68]
mov eax, esi
mov ebp, ebx
add eax, dword [esp + 0x1c]
adc ebp, dword [esp + 0x28]
add eax, ecx
adc ebp, edx
cmp ebp, ebx
ja 0x100394f8
jb 0x100394e9
cmp eax, esi
jae 0x100394f8
mov edx, 1
mov dword [esp + 0x50], 0
jmp 0x1003950d
xorps xmm0, xmm0
movlpd qword [esp + 0x68], xmm0
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x68]
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x24]
mov eax, 9
sub eax, edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x40]
lea ecx, [edi + 0x17]
xor edi, edi
shr ebp, cl
add eax, edx
mov edx, dword [esp + 0x3c]
adc edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x5c]
call fcn.1010f480
or ebp, eax
or edi, edx
cmp dword [esp + 0x38], 1
mov dword [esp + 0x30], ebp
mov dword [esp + 0x20], edi
jne 0x100395ee
mov ecx, dword [esp + 0x4c]
mov edi, ecx
sub edi, dword [esp + 0x48]
mov eax, dword [esp + 0x2c]
sbb eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x2c]
jb 0x10039578
ja 0x1003956f
cmp edi, ecx
jbe 0x10039578
mov ecx, 1
xor edx, edx
jmp 0x10039589
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov eax, esi
sub eax, dword [esp + 0x1c]
sbb ebx, dword [esp + 0x28]
sub eax, ecx
sbb ebx, edx
cmp ebx, dword [esp + 0x18]
jb 0x100395ac
ja 0x100395a3
cmp eax, esi
jbe 0x100395ac
mov edx, 1
xor esi, esi
jmp 0x100395bd
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov esi, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x24]
xor edi, edi
mov eax, dword [esp + 0x40]
lea ecx, [ecx + 0x17]
shr ebx, cl
sub eax, edx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x5c]
sbb edx, esi
call fcn.1010f480
or ebx, eax
or edi, edx
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 0x20]
jmp 0x1003975b
mov eax, dword [esp + 0x4c]
mov esi, eax
mov edx, dword [esp + 0x2c]
shld edx, esi, 1
add esi, esi
mov dword [esp + 0x68], edx
cmp edx, dword [esp + 0x2c]
ja 0x10039620
jb 0x1003960e
cmp esi, eax
jae 0x10039620
mov dword [esp + 0x50], 1
mov dword [esp + 0x4c], 0
jmp 0x10039639
xorps xmm0, xmm0
movlpd qword [esp + 0x50], xmm0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x70]
mov eax, ebx
mov ecx, edx
shld eax, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x50]
adc eax, dword [esp + 0x4c]
mov dword [esp + 0x2c], eax
cmp eax, ebx
ja 0x1003966c
jb 0x1003965d
cmp ecx, edx
jae 0x1003966c
mov ebx, 1
mov dword [esp + 0x50], 0
jmp 0x10039681
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x70]
mov dword [esp + 0x50], eax
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
shld eax, edx, 1
add edx, edx
add edx, ebx
adc eax, dword [esp + 0x50]
mov dword [esp + 0x50], eax
mov eax, esi
sub eax, dword [esp + 0x48]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
sbb eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x68]
jb 0x100396cb
ja 0x100396b9
cmp dword [esp + 0x70], esi
jbe 0x100396cb
mov dword [esp + 0x4c], 1
mov dword [esp + 0x48], 0
jmp 0x100396e4
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
mov ebx, dword [esp + 0x2c]
mov esi, ecx
sub esi, dword [esp + 0x1c]
sbb ebx, dword [esp + 0x28]
sub esi, dword [esp + 0x4c]
sbb ebx, dword [esp + 0x48]
cmp ebx, dword [esp + 0x2c]
jb 0x10039715
ja 0x10039706
cmp esi, ecx
jbe 0x10039715
mov eax, 1
mov dword [esp + 0x4c], 0
jmp 0x1003972a
xorps xmm0, xmm0
movlpd qword [esp + 0x70], xmm0
mov eax, dword [esp + 0x74]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x24]
xor esi, esi
add ecx, 0x18
shr ebx, cl
sub edx, eax
mov eax, dword [esp + 0x4c]
mov ecx, 8
sbb dword [esp + 0x50], eax
mov eax, edx
sub ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x50]
call fcn.1010f480
or ebx, eax
or esi, edx
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x24]
xor esi, esi
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x18]
lea ecx, [ecx + 0x17]
shr ebx, cl
mov ecx, dword [esp + 0x5c]
call fcn.1010f480
or ebx, eax
or esi, edx
mov eax, dword [esp + 0x78]
mov dword [esp + 0x18], ebx
cmp eax, 1
ja 0x100397bd
cmp byte [esp + 0x17], 0
mov al, 1
mov byte [esp + 0x15], al
je 0x100397aa
mov cl, byte [esp + 0x38]
mov byte [esp + 0x14], cl
jmp 0x100391db
add ebp, 0xffffffff
mov dword [esp + 0x30], ebp
adc edi, 0xffffffff
mov dword [esp + 0x20], edi
jmp 0x100391d7
cmp eax, 0x3f
jae 0x100391d3
xor edx, edx
mov dword [esp + 0x24], 0
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 + 0x60]
and ecx, dword [esp + 0x64]
or edx, ecx
jne 0x100391f8
mov byte [esp + 0x15], 1
mov byte [esp + 0x16], 0
mov eax, 0xcccccccd
xor edi, edi
mul ebp
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
mov ebp, dword [esp + 0x28]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x20]
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 + 0x40], ecx
mov ecx, edx
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x1c]
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], 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 + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
jb 0x10039a1d
ja 0x100398c0
cmp dword [esp + 0x2c], ecx
jbe 0x10039a1d
nop word [eax + eax]
mov eax, 0xcccccccd
mov ebx, esi
mul dword [esp + 0x18]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x18]
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 + 0x14]
adc esi, edx
add ebx, edi
mov edi, dword [esp + 0x20]
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 + 0x15]
xor ecx, ecx
mov byte [esp + 0x14], dl
cmp byte [esp + 0x16], cl
cmove ecx, eax
inc dword [esp + 0x24]
mov byte [esp + 0x15], cl
mov al, bl
shl al, 2
mov cl, bl
add cl, al
xor edi, edi
mov al, byte [esp + 0x18]
add cl, cl
sub al, cl
mov dword [esp + 0x18], ebx
mov byte [esp + 0x16], al
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], eax
mov eax, 0xcccccccd
mul dword [esp + 0x2c]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x40]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x2c]
add eax, ecx
mov dword [esp + 0x2c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x40]
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 + 0x40], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x2c], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], 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 + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
ja 0x100398c0
jb 0x10039a15
cmp dword [esp + 0x2c], ecx
ja 0x100398c0
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x28], ebp
mov dl, byte [esp + 0x14]
test dl, dl
je 0x10039b78
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 ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ecx, ecx
mul dword [esp + 0x1c]
add ebx, eax
mov eax, ebp
adc ecx, edx
add ebx, edi
adc ecx, 0
shrd ebx, ecx, 3
shr ecx, 3
mov dword [esp + 0x60], ecx
mov dword [esp + 0x40], ebx
lea ecx, [ebx + ebx*4]
add ecx, ecx
sub eax, ecx
jne 0x10039b74
mov ebp, ebx
mov dword [esp + 0x5c], ebp
mov eax, 0xcccccccd
mov ebx, esi
mul dword [esp + 0x18]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x18]
add eax, ecx
mov dword [esp + 0x64], 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 + 0x16], 0
mov dword [esp + 0x64], ecx
sete al
mov edx, dword [esp + 0x64]
and byte [esp + 0x15], al
xor edi, edi
mov al, cl
inc dword [esp + 0x24]
shl al, 2
add cl, al
mov al, byte [esp + 0x18]
add cl, cl
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x40]
sub al, cl
mov byte [esp + 0x16], al
mov ecx, edx
mov eax, dword [esp + 0x60]
mov ebx, eax
mov dword [esp + 0x1c], eax
mov eax, 0xcccccccd
mov dword [esp + 0x28], edx
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 + 0x40], 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 + 0x60], eax
mov eax, ecx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x40], ecx
lea eax, [eax + eax*4]
add eax, eax
sub ebp, eax
mov ebp, ecx
je 0x10039a85
mov dl, byte [esp + 0x14]
cmp byte [esp + 0x15], 0
mov cl, byte [esp + 0x16]
je 0x10039b96
cmp cl, 5
jne 0x10039b96
mov eax, dword [esp + 0x18]
and eax, 1
or eax, 0
jne 0x10039b96
mov cl, 4
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x28]
jne 0x10039bb9
cmp esi, dword [esp + 0x1c]
jne 0x10039bb9
cmp byte [esp + 0x17], 0
je 0x10039dee
test dl, dl
je 0x10039dee
cmp cl, 5
jae 0x10039dee
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
jmp 0x10039df5
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
mov eax, 0xcccccccd
xor edi, edi
mul dword [esp + 0x30]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x20]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x30]
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x20]
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 + 0x40], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x28], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], 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
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
jb 0x10039dc6
ja 0x10039ca0
cmp dword [esp + 0x28], ecx
jbe 0x10039dc6
nop word [eax + eax]
mov ebp, ebx
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 + 0x18], 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 + 0x18], ecx
lea eax, [ecx + ecx*4]
add eax, eax
sub ebp, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x1c], eax
cmp ebp, 5
mov eax, 0xcccccccd
mov ebp, dword [esp + 0x20]
setae byte [esp + 0x17]
inc dword [esp + 0x24]
mul dword [esp + 0x28]
xor edi, edi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x40]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul dword [esp + 0x28]
add eax, ecx
mov dword [esp + 0x28], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x40]
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 + 0x40], eax
mov eax, 0xcccccccd
mul ebp
mov dword [esp + 0x28], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x64]
add ecx, eax
mov eax, 0xcccccccc
adc edi, edx
mul ebp
add eax, ecx
mov dword [esp + 0x20], 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
mov ebx, dword [esp + 0x18]
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x20], ecx
mov dword [esp + 0x64], eax
cmp dword [esp + 0x40], eax
ja 0x10039ca0
jb 0x10039dc6
cmp dword [esp + 0x28], ecx
ja 0x10039ca0
mov eax, dword [esp + 0x18]
cmp eax, ebp
jne 0x10039dd4
cmp esi, dword [esp + 0x1c]
je 0x10039dee
cmp byte [esp + 0x17], 0
jne 0x10039dee
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
mov edi, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
jmp 0x10039df5
mov edx, 1
xor edi, edi
mov ecx, dword [esp + 0x34]
add edx, eax
mov eax, dword [esp + 0x84]
adc edi, esi
add ecx, dword [esp + 0x24]
mov dword [eax + 4], edi
pop edi
pop esi
pop ebp
mov dword [eax + 8], ecx
mov dword [eax], edx
pop ebx
add esp, 0x70
ret