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

Disassembly:
sub esp, 0x84
push ebx
mov ebx, dword [esp + 0x94]
push ebp
mov ebp, dword [esp + 0x9c]
push esi
mov esi, ebx
push edi
mov edi, dword [esp + 0x9c]
mov edx, edi
test ebp, ebp
jne 0x4582c1
mov dword [esp + 0x38], 0xfffffbcc
jmp 0x4582d1
lea eax, [ebp - 0x435]
or esi, 0x100000
mov dword [esp + 0x38], eax
mov eax, edx
mov byte [esp + 0x1b], 1
and eax, 1
or eax, 0
je 0x4582e5
mov byte [esp + 0x1b], 0
mov eax, edx
mov ecx, esi
shld ecx, eax, 2
shl eax, 2
or edi, ebx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x50], eax
jne 0x458308
mov dword [esp + 0x7c], edi
cmp ebp, 1
ja 0x458310
mov dword [esp + 0x7c], 1
mov ebx, dword [esp + 0x38]
xor al, al
shld esi, edx, 1
mov byte [esp + 0x12], 0
add edx, edx
mov byte [esp + 0x13], al
mov dword [esp + 0x14], esi
mov dword [esp + 0x2c], edx
test ebx, ebx
js 0x4589fd
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, 0x629f80
mov dword [esp + 0x78], ecx
shr eax, 0x13
sub eax, ebx
mov edi, dword [ebp]
add eax, ecx
mov dword [esp + 0x74], edi
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 4]
mov dword [esp + 0x5c], 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 + 0x20], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x14]
mov dword [esp + 0x1c], eax
mov eax, edx
mov edx, dword [esp + 0x1c]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x1c], edx
mov dword [esp + 0x38], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x24], eax
mov eax, edi
mul dword [esp + 0x2c]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x14]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x24]
add esi, ecx
adc edi, 0
mul dword [esp + 0x2c]
mov ebp, eax
mov ecx, edx
mov eax, dword [esp + 0x24]
add ebp, esi
adc ecx, 0
mul dword [esp + 0x14]
add eax, ecx
mov esi, edx
mov ecx, eax
mov dword [esp + 0x64], eax
adc esi, 0
add ecx, edi
mov edi, dword [esp + 0x1c]
adc esi, 0
xor edx, edx
or edx, ebx
add edx, edi
mov dword [esp + 0x44], edx
adc ebp, dword [esp + 0x38]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], ebp
cmp ebp, dword [esp + 0x38]
ja 0x458449
jb 0x458440
cmp edx, edi
jae 0x458449
mov eax, 1
xor edi, edi
jmp 0x45845a
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov edi, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x88], ecx
adc esi, edi
mov dword [esp + 0x8c], esi
mov esi, dword [esp + 0x28]
mov edi, esi
add edi, dword [esp + 0x74]
adc eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x20]
ja 0x458493
jb 0x45848a
cmp edi, esi
jae 0x458493
mov ebx, 1
xor eax, eax
jmp 0x4584a4
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
add ebx, edx
adc eax, ebp
add ebx, dword [esp + 0x6c]
mov dword [esp + 0x14], ebx
adc eax, dword [esp + 0x24]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], eax
cmp eax, ebp
ja 0x4584dc
jb 0x4584ca
cmp ebx, edx
jae 0x4584dc
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
jmp 0x4584e5
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov esi, dword [esp + 0x48]
mov edi, 0x40
add esi, 0x39
mov dword [esp + 0x60], esi
je 0x45853d
movq xmm2, qword [esp + 0x30]
mov eax, edi
movq xmm0, qword [esp + 0x88]
sub eax, esi
movq xmm1, qword [esp + 0x54]
paddq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, esi
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x30], xmm2
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x7c], 1
mov eax, dword [esp + 0x28]
jne 0x45862c
sub eax, dword [esp + 0x74]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x20]
sbb eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x20]
jb 0x45857d
ja 0x45856e
mov eax, dword [esp + 0x64]
cmp eax, dword [esp + 0x28]
jbe 0x45857d
mov ecx, 1
mov dword [esp + 0x38], 0
jmp 0x458592
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x38], eax
mov eax, edx
sub eax, ecx
mov ecx, ebp
sbb ecx, dword [esp + 0x38]
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x28], eax
sbb ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], ecx
cmp ecx, ebp
jb 0x4585d0
ja 0x4585be
cmp eax, edx
jbe 0x4585d0
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
jmp 0x4585d9
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
test esi, esi
je 0x458800
movq xmm0, qword [esp + 0x30]
mov eax, edi
movq xmm2, qword [esp + 0x88]
sub eax, esi
movq xmm1, qword [esp + 0x54]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, esi
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x30], xmm2
mov eax, dword [esp + 0x34]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
jmp 0x4587c6
mov esi, dword [esp + 0x20]
mov dword [esp + 0x2c], esi
shld dword [esp + 0x2c], eax, 1
add eax, eax
mov dword [esp + 0x64], eax
cmp dword [esp + 0x2c], esi
ja 0x458660
jb 0x45864e
cmp eax, dword [esp + 0x28]
jae 0x458660
mov dword [esp + 0x38], 1
mov dword [esp + 0x4c], 0
jmp 0x458679
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov esi, dword [esp + 0x34]
mov dword [esp + 0x4c], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x38], esi
mov ebx, dword [esp + 0x4c]
mov esi, edx
mov dword [esp + 0x20], ebp
shld dword [esp + 0x20], esi, 1
add esi, esi
add esi, dword [esp + 0x38]
adc dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x14]
cmp dword [esp + 0x20], ebp
ja 0x4586b5
jb 0x4586a3
cmp esi, edx
jae 0x4586b5
mov dword [esp + 0x38], 1
mov dword [esp + 0x4c], 0
jmp 0x4586ce
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov edx, dword [esp + 0x34]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x8c]
shld edx, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x38]
mov dword [esp + 0x54], ecx
adc edx, dword [esp + 0x4c]
mov dword [esp + 0x58], edx
mov edx, eax
sub edx, dword [esp + 0x74]
mov eax, dword [esp + 0x2c]
sbb eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x2c]
jb 0x458716
ja 0x458707
cmp edx, dword [esp + 0x64]
jbe 0x458716
mov ecx, 1
mov dword [esp + 0x38], 0
jmp 0x45872b
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x38], eax
mov eax, esi
sub eax, ecx
mov ecx, dword [esp + 0x20]
sbb ecx, dword [esp + 0x38]
sub eax, dword [esp + 0x6c]
mov dword [esp + 0x28], eax
sbb ecx, dword [esp + 0x24]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], ecx
cmp ecx, dword [esp + 0x20]
jb 0x45876d
ja 0x45875b
cmp eax, esi
jbe 0x45876d
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
jmp 0x458776
xorps xmm0, xmm0
movlpd qword [esp + 0x30], xmm0
mov ecx, dword [esp + 0x48]
add ecx, 0x3a
je 0x4587c2
movq xmm0, qword [esp + 0x30]
mov eax, edi
movq xmm2, qword [esp + 0x54]
sub eax, ecx
movq xmm1, qword [esp + 0x64]
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 + 0x24], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0x60]
test esi, esi
je 0x458800
movq xmm2, qword [esp + 0x88]
sub edi, esi
movq xmm1, qword [esp + 0x3c]
movd xmm0, edi
psllq xmm2, xmm0
movd xmm0, esi
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x3c], xmm2
mov eax, dword [esp + 0x3c]
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x44], eax
cmp dword [esp + 0x78], 0x15
ja 0x4588ab
mov eax, 0xcccccccd
xor esi, esi
mul dword [esp + 0x50]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x90]
push dword [esp + 0x78]
add ecx, eax
mov eax, 0xcccccccc
adc esi, edx
mul dword [esp + 0x54]
add eax, ecx
mov edi, edx
mov eax, 0xcccccccc
adc edi, 0
xor ecx, ecx
add edi, esi
mov esi, dword [esp + 0x94]
adc ecx, ecx
mul esi
add edi, eax
adc ecx, edx
mov edx, dword [esp + 0x54]
shrd edi, ecx, 2
mov ecx, edx
lea eax, [edi + edi*4]
sub ecx, eax
jne 0x458882
push esi
push edx
call fcn.0045a6e0
add esp, 0xc
mov byte [esp + 0x13], al
mov dword [esp + 0x20], 0
mov byte [esp + 0x1a], 0
jmp 0x4588c8
cmp byte [esp + 0x1f], 0
je 0x4589d4
sub edx, dword [esp + 0x80]
sbb esi, 0
add edx, 0xffffffff
adc esi, 0xffffffff
push esi
push edx
call fcn.0045a6e0
add esp, 0xc
mov byte [esp + 0x12], al
mov al, byte [esp + 0x13]
mov cl, byte [esp + 0x12]
mov dword [esp + 0x20], 0
mov byte [esp + 0x1a], 0
test cl, cl
jne 0x459172
test al, al
jne 0x459172
mov edi, dword [esp + 0x14]
xor esi, esi
mov ebx, dword [esp + 0x1c]
shrd edi, ebx, 2
mov byte [esp + 0x1b], al
mov eax, 0x5c28f5c3
mul edi
shr ebx, 2
mov eax, 0x5c28f5c3
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0x28f5c28f
adc esi, edx
mul edi
add eax, ecx
mov edi, edx
mov eax, 0x28f5c28f
adc edi, 0
xor ecx, ecx
add edi, esi
adc ecx, ecx
mul ebx
mov ebx, dword [esp + 0x24]
add edi, eax
mov eax, 0x5c28f5c3
adc ecx, edx
xor esi, esi
shrd edi, ecx, 2
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0x28]
shrd edi, ebx, 2
shr ecx, 2
mul edi
mov dword [esp + 0x48], ecx
mov eax, 0x5c28f5c3
shr ebx, 2
mov ecx, edx
mul ebx
add ecx, eax
mov eax, 0x28f5c28f
adc esi, edx
mul edi
add eax, ecx
mov edi, edx
mov eax, 0x28f5c28f
adc edi, 0
xor ecx, ecx
add edi, esi
adc ecx, ecx
mul ebx
add edi, eax
adc ecx, edx
shrd edi, ecx, 2
shr ecx, 2
mov dword [esp + 0x88], ecx
cmp dword [esp + 0x48], ecx
jb 0x458f52
mov esi, dword [esp + 0x64]
ja 0x458991
cmp esi, edi
jbe 0x458f52
mov ebx, dword [esp + 0x44]
push ebp
push ebx
call fcn.00459c90
imul ecx, eax, 0x64
add esp, 8
mov dword [esp + 0x44], eax
mov ebp, edx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x14], esi
mov dword [esp + 0x1c], eax
sub ebx, ecx
mov dword [esp + 0x20], 2
cmp ebx, 0x32
mov ebx, edi
mov edi, dword [esp + 0x88]
setae byte [esp + 0x1b]
jmp 0x458f5a
add edx, 2
adc esi, 0
push esi
push edx
call fcn.0045a6e0
movzx eax, al
add esp, 0xc
cdq
sub ebx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], ebx
sbb eax, edx
mov dword [esp + 0x1c], eax
jmp 0x4588ab
xor ecx, ecx
mov eax, ebx
neg eax
mov ebp, 0x62b1c0
cmp eax, 1
setg cl
imul edi, ebx, 0xfff4d105
shr edi, 0x14
sub edi, ecx
add ebx, edi
mov dword [esp + 0x88], edi
imul eax, ebx, 0xffed6cb1
mov dword [esp + 0x78], ebx
shr eax, 0x13
sub edi, eax
mov eax, ebx
shl eax, 4
sub ebp, eax
mov dword [esp + 0x64], edi
mov edi, dword [ebp]
mov eax, dword [ebp + 4]
mov dword [esp + 0x4c], eax
mov eax, edi
mul edx
mov dword [esp + 0x24], 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 + 0x20], eax
mov eax, dword [ebp + 4]
adc ecx, 0
mul dword [esp + 0x14]
mov dword [esp + 0x6c], eax
mov eax, edx
mov edx, dword [esp + 0x6c]
add edx, ecx
adc eax, 0
add edx, edi
mov edi, dword [ebp + 8]
adc eax, 0
mov dword [esp + 0x6c], edx
mov dword [esp + 0x60], eax
xor eax, eax
or eax, ebx
mov dword [esp + 0x38], edi
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x28], eax
mov eax, edi
mul dword [esp + 0x2c]
mov ebx, eax
mov ecx, edx
mov eax, edi
mul dword [esp + 0x14]
mov esi, eax
mov edi, edx
mov eax, dword [esp + 0x28]
add esi, ecx
adc edi, 0
mul dword [esp + 0x2c]
mov ebp, eax
mov ecx, edx
mov eax, dword [esp + 0x28]
add ebp, esi
adc ecx, 0
mul dword [esp + 0x14]
mov esi, eax
mov dword [esp + 0x74], edx
add esi, ecx
mov ecx, edx
adc ecx, 0
add esi, edi
mov edi, dword [esp + 0x6c]
adc ecx, 0
xor edx, edx
or edx, ebx
add edx, edi
mov dword [esp + 0x44], edx
adc ebp, dword [esp + 0x60]
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], ebp
cmp ebp, dword [esp + 0x60]
ja 0x458b23
jb 0x458b1a
cmp edx, edi
jae 0x458b23
mov eax, 1
xor edi, edi
jmp 0x458b34
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add esi, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], esi
adc ecx, edi
mov dword [esp + 0x74], ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x5c]
mov esi, ecx
add esi, dword [esp + 0x24]
adc eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x20]
ja 0x458b6b
jb 0x458b62
cmp esi, ecx
jae 0x458b6b
mov eax, 1
xor ecx, ecx
jmp 0x458b7c
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
mov esi, edx
mov ebx, ebp
add esi, dword [esp + 0x38]
adc ebx, dword [esp + 0x28]
add esi, eax
mov dword [esp + 0x14], esi
adc ebx, ecx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x40], ebx
cmp ebx, ebp
ja 0x458bb8
jb 0x458ba6
cmp esi, edx
jae 0x458bb8
mov dword [esp + 0x54], 1
mov dword [esp + 0x58], 0
jmp 0x458bc1
xorps xmm0, xmm0
movlpd qword [esp + 0x54], xmm0
mov ecx, dword [esp + 0x64]
mov edi, 0x40
add ecx, 0x37
mov dword [esp + 0x2c], ecx
je 0x458c16
movq xmm0, qword [esp + 0x54]
mov eax, edi
movq xmm2, qword [esp + 0x30]
sub eax, ecx
movq xmm1, qword [esp + 0x3c]
paddq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x3c], xmm2
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], esi
cmp dword [esp + 0x7c], 1
mov ecx, dword [esp + 0x5c]
mov eax, ecx
jne 0x458d0d
sub eax, dword [esp + 0x24]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x20]
sbb eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x20]
jb 0x458c57
ja 0x458c45
cmp dword [esp + 0x60], ecx
jbe 0x458c57
mov dword [esp + 0x48], 1
mov dword [esp + 0x4c], 0
jmp 0x458c70
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov eax, edx
mov ecx, ebp
sub eax, dword [esp + 0x38]
sbb ecx, dword [esp + 0x28]
sub eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
sbb ecx, dword [esp + 0x4c]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
cmp ecx, ebp
jb 0x458cb0
ja 0x458c9e
cmp eax, edx
jbe 0x458cb0
mov dword [esp + 0x54], 1
mov dword [esp + 0x58], 0
jmp 0x458cb9
xorps xmm0, xmm0
movlpd qword [esp + 0x54], xmm0
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x458ef8
movq xmm0, qword [esp + 0x54]
mov eax, edi
movq xmm2, qword [esp + 0x30]
sub eax, ecx
movq xmm1, qword [esp + 0x3c]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x3c], xmm2
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
jmp 0x458eb5
mov ebx, dword [esp + 0x20]
shld ebx, eax, 1
add eax, eax
mov dword [esp + 0x5c], ebx
cmp ebx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x60], eax
ja 0x458d41
jb 0x458d2f
cmp eax, ecx
jae 0x458d41
mov dword [esp + 0x48], 1
mov dword [esp + 0x6c], 0
jmp 0x458d5a
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov ecx, edx
mov eax, ebp
shld eax, ecx, 1
add ecx, ecx
add ecx, dword [esp + 0x48]
mov dword [esp + 0x54], ecx
adc eax, dword [esp + 0x6c]
mov dword [esp + 0x20], eax
cmp eax, ebp
ja 0x458d90
jb 0x458d7e
cmp ecx, edx
jae 0x458d90
mov dword [esp + 0x48], 1
mov dword [esp + 0x6c], 0
jmp 0x458da9
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x74]
shld edx, eax, 1
add eax, eax
add eax, dword [esp + 0x48]
adc edx, dword [esp + 0x6c]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x60]
mov eax, edx
sub eax, dword [esp + 0x24]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x5c]
sbb eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x5c]
jb 0x458dfd
ja 0x458deb
cmp dword [esp + 0x60], edx
jbe 0x458dfd
mov dword [esp + 0x48], 1
mov dword [esp + 0x4c], 0
jmp 0x458e16
xorps xmm0, xmm0
movlpd qword [esp + 0x3c], xmm0
mov eax, dword [esp + 0x40]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x48], eax
mov eax, ecx
mov ecx, dword [esp + 0x20]
sub eax, dword [esp + 0x38]
sbb ecx, dword [esp + 0x28]
sub eax, dword [esp + 0x48]
mov dword [esp + 0x28], eax
sbb ecx, dword [esp + 0x4c]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
cmp ecx, dword [esp + 0x20]
jb 0x458e5c
ja 0x458e4a
cmp eax, dword [esp + 0x54]
jbe 0x458e5c
mov dword [esp + 0x54], 1
mov dword [esp + 0x58], 0
jmp 0x458e65
xorps xmm0, xmm0
movlpd qword [esp + 0x54], xmm0
mov ecx, dword [esp + 0x64]
add ecx, 0x38
je 0x458eb1
movq xmm0, qword [esp + 0x54]
mov eax, edi
movq xmm2, qword [esp + 0x6c]
sub eax, ecx
movq xmm1, qword [esp + 0x3c]
psubq xmm2, xmm0
movd xmm0, eax
psllq xmm2, xmm0
movd xmm0, ecx
psrlq xmm1, xmm0
orps xmm2, xmm1
movq qword [esp + 0x3c], xmm2
mov eax, dword [esp + 0x40]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x458ef8
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 ebp, dword [esp + 0x84]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x88]
cmp eax, 1
ja 0x458f31
cmp byte [esp + 0x1b], 0
mov al, 1
mov byte [esp + 0x13], al
je 0x458f1e
mov cl, byte [esp + 0x7c]
mov byte [esp + 0x12], cl
jmp 0x4588b3
add esi, 0xffffffff
mov dword [esp + 0x14], esi
adc ebx, 0xffffffff
mov dword [esp + 0x1c], ebx
jmp 0x4588af
cmp eax, 0x3f
jae 0x4588ab
mov edi, dword [esp + 0x50]
dec eax
push eax
push dword [esp + 0x94]
push edi
call fcn.0045a660
jmp 0x45886c
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x28]
mov eax, 0xcccccccd
xor esi, esi
mul dword [esp + 0x14]
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
add ecx, eax
mov eax, 0xcccccccc
adc esi, 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 + 0x1c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
xor esi, esi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, 0xcccccccd
mul ebx
mov dword [esp + 0x14], ecx
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 + 0x1c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul edi
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x2c], eax
jb 0x459138
ja 0x459010
cmp dword [esp + 0x14], ecx
jbe 0x459138
mov ebx, dword [esp + 0x44]
xor esi, esi
mov eax, 0xcccccccd
mov edi, ebp
mul ebx
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 + 0x44], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
xor ebp, ebp
mul edi
add ecx, eax
adc ebp, edx
add ecx, esi
adc ebp, 0
shrd ecx, ebp, 3
shr ebp, 3
mov dword [esp + 0x44], ecx
lea eax, [ecx + ecx*4]
add eax, eax
sub ebx, eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
cmp ebx, 5
mov eax, 0xcccccccd
mov ebx, dword [esp + 0x1c]
setae byte [esp + 0x1b]
inc dword [esp + 0x20]
mul dword [esp + 0x14]
xor esi, esi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x2c]
add ecx, eax
mov eax, 0xcccccccc
adc esi, 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, esi
adc eax, 0
xor esi, esi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, 0xcccccccd
mul ebx
mov dword [esp + 0x14], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x50]
add ecx, eax
mov eax, 0xcccccccc
adc esi, edx
mul ebx
add eax, ecx
mov dword [esp + 0x1c], edx
mov ecx, edx
mov eax, 0xcccccccc
adc ecx, 0
mul dword [esp + 0x50]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x2c], eax
ja 0x459010
jb 0x459134
cmp dword [esp + 0x14], ecx
ja 0x459010
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x44]
cmp eax, ebx
jne 0x459148
cmp ebp, edi
je 0x459541
cmp byte [esp + 0x1b], 0
jne 0x459541
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
jmp 0x459548
mov eax, 0xcccccccd
mov edi, dword [esp + 0x24]
mul dword [esp + 0x14]
xor esi, esi
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x1c]
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 dword [esp + 0x1c]
add ebx, eax
mov eax, 0xcccccccd
adc ecx, edx
add ebx, esi
adc ecx, 0
xor esi, esi
shrd ebx, ecx, 3
shr ecx, 3
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x28]
mul ebx
mov dword [esp + 0x2c], ecx
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
mul edi
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x2c], eax
jb 0x459389
ja 0x459230
cmp dword [esp + 0x1c], ecx
jbe 0x459389
nop dword [eax]
mov eax, 0xcccccccd
xor esi, esi
mul dword [esp + 0x44]
mov edi, ebp
mov eax, 0xcccccccd
mov ecx, edx
mul edi
add ecx, eax
mov eax, 0xcccccccc
adc esi, edx
mul dword [esp + 0x44]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ebp, ebp
mul edi
add ebx, eax
movzx eax, byte [esp + 0x12]
adc ebp, edx
add ebx, esi
mov esi, dword [esp + 0x14]
adc ebp, 0
xor edx, edx
shrd ebx, ebp, 3
shr ebp, 3
lea ecx, [esi + esi*4]
add ecx, ecx
cmp dword [esp + 0x28], ecx
cmove edx, eax
movzx eax, byte [esp + 0x13]
xor ecx, ecx
mov byte [esp + 0x12], dl
cmp byte [esp + 0x1a], cl
cmove ecx, eax
inc dword [esp + 0x20]
mov byte [esp + 0x13], cl
mov al, bl
shl al, 2
mov cl, bl
add cl, al
mov al, byte [esp + 0x44]
add cl, cl
mov dword [esp + 0x44], ebx
sub al, cl
mov ebx, esi
mov byte [esp + 0x1a], al
xor esi, esi
mov eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
mov eax, 0xcccccccd
mul dword [esp + 0x1c]
mov eax, 0xcccccccd
mov dword [esp + 0x28], ebx
mov ecx, edx
mul dword [esp + 0x2c]
add ecx, eax
mov eax, 0xcccccccc
adc esi, 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 + 0x2c]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
xor esi, esi
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x2c], eax
mov eax, 0xcccccccd
mul ebx
mov dword [esp + 0x1c], ecx
mov eax, 0xcccccccd
mov ecx, edx
mul dword [esp + 0x50]
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
mul dword [esp + 0x50]
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x50], eax
cmp dword [esp + 0x2c], eax
ja 0x459230
jb 0x459385
cmp dword [esp + 0x1c], ecx
ja 0x459230
mov edi, dword [esp + 0x24]
mov dl, byte [esp + 0x12]
test dl, dl
je 0x4594e7
mov eax, 0xcccccccd
xor esi, esi
mul ebx
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
adc ecx, 0
xor eax, eax
mov eax, 0xcccccccc
mul edi
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x14], ecx
mov dword [esp + 0x64], eax
mov eax, ebx
lea ecx, [ecx + ecx*4]
add ecx, ecx
sub eax, ecx
jne 0x4594e3
mov edx, dword [esp + 0x14]
mov dword [esp + 0x50], edx
nop word [eax + eax]
mov eax, 0xcccccccd
mov edi, ebp
mul dword [esp + 0x44]
xor esi, esi
mov eax, 0xcccccccd
mov ecx, edx
mul edi
add ecx, eax
mov eax, 0xcccccccc
adc esi, edx
mul dword [esp + 0x44]
add eax, ecx
mov ebx, edx
mov eax, 0xcccccccc
adc ebx, 0
xor ebp, ebp
mul edi
add ebx, eax
adc ebp, edx
add ebx, esi
adc ebp, 0
shrd ebx, ebp, 3
shr ebp, 3
mov cl, bl
cmp byte [esp + 0x1a], 0
sete al
inc dword [esp + 0x20]
and byte [esp + 0x13], al
xor esi, esi
mov al, bl
shl al, 2
add cl, al
mov al, byte [esp + 0x44]
add cl, cl
mov dword [esp + 0x44], ebx
sub al, cl
mov ebx, dword [esp + 0x50]
mov byte [esp + 0x1a], al
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x64]
mov edi, eax
mov dword [esp + 0x24], eax
mov eax, 0xcccccccd
mul ebx
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
adc ecx, 0
xor eax, eax
mov eax, 0xcccccccc
mul edi
add ecx, eax
mov eax, 0
adc eax, edx
add ecx, esi
adc eax, 0
shrd ecx, eax, 3
shr eax, 3
mov dword [esp + 0x64], eax
mov eax, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x14], ecx
lea eax, [eax + eax*4]
add eax, eax
sub ebx, eax
je 0x459400
mov dl, byte [esp + 0x12]
cmp byte [esp + 0x13], 0
mov cl, byte [esp + 0x1a]
je 0x459505
cmp cl, 5
jne 0x459505
mov eax, dword [esp + 0x44]
and eax, 1
or eax, 0
jne 0x459505
mov cl, 4
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x28]
jne 0x459520
cmp ebp, dword [esp + 0x24]
jne 0x459520
cmp byte [esp + 0x1b], 0
je 0x459541
test dl, dl
je 0x459541
cmp cl, 5
jae 0x459541
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x80]
jmp 0x459548
mov edx, 1
xor esi, esi
mov ecx, dword [esp + 0x78]
add edx, eax
mov eax, dword [esp + 0x98]
adc esi, ebp
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, 0x84
ret