Function at 0x5a4bd0
Capabilities:
Access peb ldr_data

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x63aad1
mov eax, dword fs:[0]
push eax
push ebx
mov eax, 0x2108
call fcn.00531990
mov eax, dword [0x6e4770]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebx + 0x20]
movsd xmm7, qword [ebx + 0x38]
mov esi, dword [ebx + 0x28]
movsd xmm0, xmm7
mov edi, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x24]
mov dword [ebp - 0x20c4], eax
mov eax, dword [ebx + 0x34]
mov dword [ebp - 0x20d0], eax
lea eax, [ebp - 0x20a0]
unpcklpd xmm0, xmm0
movaps xmmword [ebp - 0x2110], xmm0
mov dword [ebp - 0x20d8], esi
mov dword [ebp - 0x20c8], edi
mov dword [ebp - 0x20a8], eax
mov dword [ebp - 0x20a4], 0x408
mov dword [ebp - 4], 0
mov eax, dword [ebx + 0xc]
shr dword [ebx + 0x14], 2
shr dword [ebx + 0x1c], 2
mov edx, dword [ebx + 0x48]
shr eax, 2
shr ecx, 2
cmp dword [ebx + 0x18], 0
mov dword [ebp - 0x20cc], ecx
mov ecx, eax
mov dword [ebp - 0x20dc], 0
mov dword [ebx + 0xc], eax
mov dword [ebp - 0x20b0], eax
mov dword [ebp - 0x20d4], 1
jne 0x5a4cbf
mov dword [ebx + 0x1c], 0
mov dword [ebp - 0x20b8], 0
jmp 0x5a4ce6
test dl, 4
jne 0x5a4cdc
mov esi, dword [ebx + 0x1c]
mov dword [ebp - 0x20b8], esi
mov esi, dword [ebp - 0x20d8]
mov dword [ebx + 0x1c], 1
jmp 0x5a4ce6
mov dword [ebp - 0x20b8], 1
test dl, 1
je 0x5a4d33
mov esi, dword [ebx + 0x2c]
mov ecx, 1
mov dword [ebp - 0x20b0], ecx
mov dword [ebp - 0x20d4], eax
mov dword [ebp - 0x20d8], esi
cmp eax, ecx
jbe 0x5a4d33
cmp esi, ecx
jle 0x5a4d36
push esi
lea ecx, [ebp - 0x20a8]
call fcn.0055c020
mov eax, dword [ebp - 0x20a8]
movsd xmm7, qword [ebx + 0x38]
mov ecx, dword [ebp - 0x20b0]
mov edx, dword [ebx + 0x48]
mov dword [ebp - 0x20dc], eax
cmp esi, 1
jne 0x5a50a4
lea eax, [ebp - 0x1048]
mov dword [ebp - 0x104c], 0x408
mov dword [ebp - 0x1050], eax
mov byte [ebp - 4], 1
mov edi, dword [ebx + 0xc]
cmp edi, 1
jbe 0x5a4e73
cmp dword [ebx + 0x2c], 1
jle 0x5a4e73
push dword [ebp - 0x20d0]
lea ecx, [ebp - 0x20a8]
call fcn.0055c020
mov eax, dword [ebp - 0x20d0]
xor ecx, ecx
mov esi, dword [ebp - 0x20a8]
mov dword [ebp - 0x20b0], esi
cmp eax, 4
jl 0x5a4e3d
mov ecx, dword [ebx + 8]
lea eax, [edi + edi*2]
mov edx, dword [ebp - 0x20b0]
mov esi, edi
shl esi, 4
add edx, 8
lea eax, [ecx + eax*4]
mov dword [ebp - 0x20c8], eax
lea eax, [ecx + edi*8]
mov dword [ebp - 0x20bc], eax
lea eax, [ecx + edi*4]
mov dword [ebp - 0x20ac], eax
mov eax, dword [ebp - 0x20d0]
add eax, 0xfffffffc
shr eax, 2
inc eax
mov edi, eax
lea ecx, [eax*4]
mov dword [ebp - 0x20dc], ecx
mov ecx, dword [ebx + 8]
mov eax, dword [ecx]
lea edx, [edx + 0x10]
mov dword [edx - 0x18], eax
add ecx, esi
mov eax, dword [ebp - 0x20ac]
add dword [ebp - 0x20ac], esi
mov eax, dword [eax]
mov dword [edx - 0x14], eax
mov eax, dword [ebp - 0x20bc]
add dword [ebp - 0x20bc], esi
mov eax, dword [eax]
mov dword [edx - 0x10], eax
mov eax, dword [ebp - 0x20c8]
add dword [ebp - 0x20c8], esi
mov eax, dword [eax]
mov dword [edx - 0xc], eax
dec edi
jne 0x5a4de8
mov ecx, dword [ebp - 0x20dc]
mov edi, dword [ebx + 0xc]
mov esi, dword [ebp - 0x20b0]
mov eax, dword [ebp - 0x20d0]
cmp ecx, eax
jge 0x5a4e70
lea eax, [edi*4]
mov dword [ebp - 0x20c0], eax
mov eax, ecx
imul eax, edi
mov edi, dword [ebx + 8]
lea edx, [edi + eax*4]
mov edi, dword [ebp - 0x20c0]
nop
mov eax, dword [edx]
add edx, edi
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, dword [ebp - 0x20d0]
jl 0x5a4e60
mov dword [ebx + 8], esi
mov esi, dword [ebx + 0x14]
cmp esi, 1
jbe 0x5a4eb0
push dword [ebx + 0x30]
lea ecx, [ebp - 0x1050]
call fcn.0055c020
mov edx, dword [ebp - 0x1050]
xor ecx, ecx
cmp dword [ebx + 0x30], ecx
jle 0x5a4ead
mov edi, dword [ebx + 0x10]
shl esi, 2
lea esp, [esp]
mov eax, dword [edi]
add edi, esi
mov dword [edx + ecx*4], eax
inc ecx
cmp ecx, dword [ebx + 0x30]
jl 0x5a4ea0
mov dword [ebx + 0x10], edx
xor eax, eax
mov dword [ebp - 0x20ac], eax
cmp dword [ebp - 0x20d0], eax
jle 0x5a506b
mov edi, dword [ebp - 0x20cc]
mov edx, dword [ebp - 0x20b8]
mov esi, dword [ebx + 0x30]
movsd xmm4, qword [ebx + 0x40]
movsd xmm6, qword [ebx + 0x38]
shl edx, 2
mov dword [ebp - 0x20b8], edx
lea ecx, [esi - 2]
lea edx, [edi*4]
mov dword [ebp - 0x20bc], ecx
neg edi
mov dword [ebp - 0x20c8], edx
shl edi, 2
mov dword [ebp - 0x20cc], edi
mov edi, dword [ebx + 0x10]
sub edi, dword [ebp - 0x20c4]
mov edx, dword [ebx + 8]
movss xmm3, dword [edx + eax*4]
xor edx, edx
mov eax, dword [ebx + 0x18]
cvtps2pd xmm3, xmm3
mulsd xmm3, xmm6
test ecx, ecx
js 0x5a4fc5
mov ecx, dword [ebx + 0x1c]
lea esi, [ecx*8]
mov ecx, dword [ebp - 0x20c4]
mov dword [ebp - 0x20b0], esi
add ecx, 4
mov esi, dword [ebx + 0x10]
movss xmm2, dword [edi + ecx]
cvtps2pd xmm2, xmm2
movss xmm1, dword [esi + edx*4]
mov esi, dword [ebp - 0x20b0]
mulsd xmm2, xmm3
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm3
test eax, eax
jne 0x5a4f79
cvtpd2ps xmm0, xmm1
movss dword [ecx - 4], xmm0
cvtpd2ps xmm0, xmm2
jmp 0x5a4fae
movss xmm0, dword [eax]
mov esi, dword [ebx + 0x1c]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
addsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [ecx - 4], xmm0
movss xmm0, dword [eax + esi*4]
mov esi, dword [ebp - 0x20b0]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
addsd xmm0, xmm2
cvtpd2ps xmm0, xmm0
movss dword [ecx], xmm0
add edx, 2
add ecx, 8
add eax, esi
cmp edx, dword [ebp - 0x20bc]
jle 0x5a4f45
mov esi, dword [ebx + 0x30]
cmp edx, esi
jge 0x5a5028
mov ecx, dword [ebx + 0x1c]
shl ecx, 2
sub esi, edx
mov dword [ebp - 0x20c0], ecx
mov ecx, dword [ebp - 0x20c4]
lea ecx, [ecx + edx*4]
mov edx, dword [ebp - 0x20c0]
jmp 0x5a4ff0
movss xmm1, dword [edi + ecx]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm3
test eax, eax
jne 0x5a5006
cvtpd2ps xmm0, xmm1
jmp 0x5a5019
movss xmm0, dword [eax]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm4
addsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [ecx], xmm0
add eax, edx
add ecx, 4
dec esi
jne 0x5a4ff0
mov esi, dword [ebx + 0x30]
mov ecx, dword [ebx + 0x18]
add ecx, dword [ebp - 0x20b8]
mov eax, dword [ebp - 0x20ac]
add edi, dword [ebp - 0x20cc]
inc eax
mov dword [ebx + 0x18], ecx
mov ecx, dword [ebp - 0x20c4]
add ecx, dword [ebp - 0x20c8]
mov dword [ebp - 0x20c4], ecx
mov ecx, dword [ebp - 0x20bc]
mov dword [ebp - 0x20ac], eax
cmp eax, dword [ebp - 0x20d0]
jl 0x5a4f10
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1048]
mov eax, dword [ebp - 0x1050]
cmp eax, ecx
je 0x5a617d
push eax
call fcn.0052ef7e
lea eax, [ebp - 0x1048]
mov dword [ebp - 0x104c], 0x408
mov dword [ebp - 0x1050], eax
jmp 0x5a617a
test dl, 2
je 0x5a552d
cmp dword [ebp - 0x20d0], 0
jle 0x5a617d
mov edx, dword [ebp - 0x20b8]
lea eax, [ecx*4]
mov ecx, dword [ebx + 0x30]
mov dword [ebp - 0x20ec], eax
lea eax, [edx*4]
mov dword [ebp - 0x20e8], eax
mov eax, dword [ebp - 0x20cc]
shl eax, 2
mov dword [ebp - 0x20e0], eax
lea esp, [esp]
cmp dword [ebp - 0x20dc], 0
mov eax, dword [ebx + 8]
mov edx, dword [ebx + 0x10]
mov edi, dword [ebx + 0x18]
mov dword [ebp - 0x20bc], eax
mov dword [ebp - 0x20cc], edx
mov dword [ebp - 0x20c8], edi
je 0x5a521e
xor edx, edx
cmp esi, 4
jl 0x5a51d5
mov edx, eax
mov edi, dword [ebp - 0x20d4]
mov eax, dword [ebp - 0x20d4]
mov ecx, dword [ebp - 0x20dc]
shl edi, 4
add ecx, 8
lea eax, [eax + eax*2]
lea eax, [edx + eax*4]
mov dword [ebp - 0x20b8], eax
mov eax, dword [ebp - 0x20d4]
lea eax, [edx + eax*8]
mov dword [ebp - 0x20bc], eax
mov eax, dword [ebp - 0x20d4]
lea eax, [edx + eax*4]
mov dword [ebp - 0x20ac], eax
lea eax, [esi - 4]
shr eax, 2
inc eax
mov dword [ebp - 0x20c0], eax
mov esi, eax
lea edx, [eax*4]
mov dword [ebp - 0x20b4], edx
mov edx, dword [ebx + 8]
mov eax, dword [edx]
lea ecx, [ecx + 0x10]
mov dword [ecx - 0x18], eax
add edx, edi
mov eax, dword [ebp - 0x20ac]
add dword [ebp - 0x20ac], edi
mov eax, dword [eax]
mov dword [ecx - 0x14], eax
mov eax, dword [ebp - 0x20bc]
add dword [ebp - 0x20bc], edi
mov eax, dword [eax]
mov dword [ecx - 0x10], eax
mov eax, dword [ebp - 0x20b8]
add dword [ebp - 0x20b8], edi
mov eax, dword [eax]
mov dword [ecx - 0xc], eax
dec esi
jne 0x5a5186
mov esi, dword [ebp - 0x20d8]
mov edx, dword [ebp - 0x20b4]
mov ecx, dword [ebx + 0x30]
cmp edx, esi
jge 0x5a520c
mov ecx, dword [ebp - 0x20d4]
mov eax, edx
imul eax, ecx
lea edi, [ecx*4]
mov ecx, dword [ebx + 8]
lea ecx, [ecx + eax*4]
mov esi, dword [ebp - 0x20dc]
mov eax, dword [ecx]
add ecx, edi
mov dword [esi + edx*4], eax
inc edx
mov esi, dword [ebp - 0x20d8]
cmp edx, esi
jl 0x5a51f1
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebp - 0x20dc]
mov edx, dword [ebp - 0x20cc]
mov dword [ebp - 0x20bc], eax
mov dword [ebp - 0x20ac], 0
test ecx, ecx
jle 0x5a54f2
mov edi, dword [ebx + 0x14]
lea ecx, [esi - 4]
mov dword [ebp - 0x20b0], ecx
lea ecx, [edi*4]
mov dword [ebp - 0x20b8], ecx
mov ecx, dword [ebx + 0x1c]
shl ecx, 2
mov dword [ebp - 0x20f4], ecx
mov ecx, edi
neg ecx
mov edi, eax
shl ecx, 2
sub edi, dword [ebx + 0x10]
mov dword [ebp - 0x20b4], ecx
xor ecx, ecx
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm5, xmm5
xorps xmm6, xmm6
cmp dword [ebp - 0x20b0], ecx
jl 0x5a531d
add eax, 0xc
mov dword [ebp - 0x20c0], eax
lea eax, [edx + 4]
mov edx, dword [ebp - 0x20b0]
mov esi, dword [ebp - 0x20c0]
lea edx, [edx + 4]
shr edx, 2
lea ecx, [edx*4]
jmp 0x5a52b0
movss xmm1, dword [eax - 4]
movss xmm0, dword [esi - 0xc]
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm0
movss xmm0, dword [eax]
cvtps2pd xmm0, xmm0
addsd xmm3, xmm1
movss xmm1, dword [eax + edi]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm0
movss xmm0, dword [esi - 4]
cvtps2pd xmm0, xmm0
addsd xmm4, xmm1
movss xmm1, dword [eax + 4]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm0
movss xmm0, dword [esi]
add esi, 0x10
cvtps2pd xmm0, xmm0
addsd xmm5, xmm1
movss xmm1, dword [eax + 8]
cvtps2pd xmm1, xmm1
add eax, 0x10
mulsd xmm1, xmm0
addsd xmm6, xmm1
dec edx
jne 0x5a52b0
mov esi, dword [ebp - 0x20d8]
mov eax, esi
sub eax, ecx
cmp ecx, esi
jge 0x5a546d
cmp eax, 2
jb 0x5a5380
and eax, reloc.WS2_32.dll_accept
jns 0x5a533a
dec eax
or eax, 0xfffffffe
inc eax
mov edx, esi
xorps xmm2, xmm2
sub edx, eax
mov eax, dword [ebp - 0x20cc]
lea eax, [eax + ecx*4]
lea ebx, [ebx]
movsd xmm0, qword [eax + edi]
add ecx, 2
cvtps2pd xmm1, xmm0
movsd xmm0, qword [eax]
add eax, 8
cvtps2pd xmm0, xmm0
mulpd xmm1, xmm0
addpd xmm2, xmm1
cmp ecx, edx
jl 0x5a5350
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
addsd xmm3, xmm2
cmp ecx, esi
jge 0x5a546d
mov eax, esi
sub eax, ecx
cmp eax, 4
jl 0x5a543d
mov eax, dword [ebp - 0x20bc]
mov edx, dword [ebp - 0x20cc]
add edx, 4
lea eax, [eax + ecx*4]
add eax, 0xc
mov dword [ebp - 0x20c0], eax
lea edx, [edx + ecx*4]
mov eax, esi
mov esi, dword [ebp - 0x20c0]
sub eax, ecx
sub eax, 4
shr eax, 2
inc eax
lea ecx, [ecx + eax*4]
jmp 0x5a53d0
movss xmm2, dword [edx - 4]
movss xmm0, dword [esi - 0xc]
movss xmm1, dword [edi + edx]
cvtps2pd xmm0, xmm0
cvtps2pd xmm2, xmm2
cvtps2pd xmm1, xmm1
mulsd xmm2, xmm0
movss xmm0, dword [edx]
cvtps2pd xmm0, xmm0
addsd xmm3, xmm2
mulsd xmm1, xmm0
movss xmm0, dword [esi - 4]
cvtps2pd xmm0, xmm0
addsd xmm3, xmm1
movss xmm1, dword [edx + 4]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm0
movss xmm0, dword [esi]
add esi, 0x10
cvtps2pd xmm0, xmm0
addsd xmm3, xmm1
movss xmm1, dword [edx + 8]
cvtps2pd xmm1, xmm1
add edx, 0x10
mulsd xmm1, xmm0
addsd xmm3, xmm1
dec eax
jne 0x5a53d0
mov esi, dword [ebp - 0x20d8]
cmp ecx, esi
jge 0x5a546d
mov eax, dword [ebp - 0x20cc]
mov edx, esi
sub edx, ecx
lea eax, [eax + ecx*4]
mov edi, edi
movss xmm1, dword [edi + eax]
movss xmm0, dword [eax]
add eax, 4
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm0
addsd xmm3, xmm1
dec edx
jne 0x5a5450
mov ecx, dword [ebp - 0x20c8]
addsd xmm4, xmm3
mov eax, dword [ebp - 0x20ac]
mov edx, dword [ebp - 0x20c4]
addsd xmm4, xmm5
addsd xmm4, xmm6
mulsd xmm4, xmm7
test ecx, ecx
jne 0x5a549c
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm4
jmp 0x5a54b0
movss xmm0, dword [ecx]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [ebx + 0x40]
addsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
add ecx, dword [ebp - 0x20f4]
add edi, dword [ebp - 0x20b4]
movss dword [edx + eax*4], xmm0
inc eax
mov edx, dword [ebp - 0x20cc]
add edx, dword [ebp - 0x20b8]
cmp eax, dword [ebx + 0x30]
mov dword [ebp - 0x20ac], eax
mov eax, dword [ebp - 0x20bc]
mov dword [ebp - 0x20cc], edx
mov dword [ebp - 0x20c8], ecx
jl 0x5a5267
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebx + 8]
add eax, dword [ebp - 0x20ec]
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0x18]
add eax, dword [ebp - 0x20e8]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x20c4]
add eax, dword [ebp - 0x20e0]
dec dword [ebp - 0x20d0]
mov dword [ebp - 0x20c4], eax
jne 0x5a50f0
jmp 0x5a617d
mov eax, dword [ebx + 0x30]
shl eax, 2
cmp eax, 0x640
ja 0x5a5a56
cmp dword [ebp - 0x20d0], 0
jle 0x5a617d
mov edx, dword [ebp - 0x20b8]
lea eax, [edi - 4]
movsd xmm6, qword [ebx + 0x40]
mov dword [ebp - 0x20f4], eax
lea eax, [ecx*4]
mov dword [ebp - 0x20f8], eax
lea eax, [edx*4]
mov edx, dword [ebp - 0x20c4]
mov dword [ebp - 0x20f0], eax
mov eax, dword [ebp - 0x20cc]
lea ecx, [eax*4]
neg eax
shl eax, 2
mov dword [ebp - 0x20cc], eax
mov eax, dword [ebx + 0x10]
sub eax, edx
mov dword [ebp - 0x20e4], ecx
mov dword [ebp - 0x20b0], eax
jmp 0x5a55b0
mov eax, dword [ebx + 8]
mov dword [ebp - 0x20bc], eax
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x20b8], eax
mov eax, dword [ebp - 0x20dc]
test eax, eax
je 0x5a56e5
xor ecx, ecx
cmp esi, 4
jl 0x5a568d
mov ecx, dword [ebx + 8]
lea edx, [eax + 8]
mov eax, dword [ebp - 0x20d4]
mov edi, dword [ebp - 0x20d4]
shl edi, 4
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x20e8], eax
mov eax, dword [ebp - 0x20d4]
lea eax, [ecx + eax*8]
mov dword [ebp - 0x20bc], eax
mov eax, dword [ebp - 0x20d4]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x20ac], eax
lea eax, [esi - 4]
mov esi, dword [ebx + 8]
shr eax, 2
inc eax
mov dword [ebp - 0x20b4], eax
lea ecx, [eax*4]
mov dword [ebp - 0x20ec], ecx
mov ecx, dword [ebp - 0x20e8]
lea ecx, [ecx]
mov eax, dword [esi]
lea edx, [edx + 0x10]
mov dword [edx - 0x18], eax
add esi, edi
mov eax, dword [ebp - 0x20ac]
add dword [ebp - 0x20ac], edi
mov eax, dword [eax]
mov dword [edx - 0x14], eax
mov eax, dword [ebp - 0x20bc]
add dword [ebp - 0x20bc], edi
mov eax, dword [eax]
mov dword [edx - 0x10], eax
mov eax, dword [ecx]
add ecx, edi
dec dword [ebp - 0x20b4]
mov dword [edx - 0xc], eax
jne 0x5a5640
mov edi, dword [ebp - 0x20c8]
mov esi, dword [ebp - 0x20d8]
mov ecx, dword [ebp - 0x20ec]
cmp ecx, esi
jge 0x5a56d3
mov edx, dword [ebp - 0x20d4]
lea eax, [edx*4]
mov dword [ebp - 0x20e0], eax
mov eax, ecx
mov edi, dword [ebp - 0x20e0]
imul eax, edx
mov edx, dword [ebx + 8]
lea edx, [edx + eax*4]
mov esi, dword [ebp - 0x20dc]
mov eax, dword [edx]
add edx, edi
mov dword [esi + ecx*4], eax
inc ecx
mov esi, dword [ebp - 0x20d8]
cmp ecx, esi
jl 0x5a56b5
mov edi, dword [ebp - 0x20c8]
mov eax, dword [ebp - 0x20dc]
mov edx, dword [ebp - 0x20c4]
mov dword [ebp - 0x20bc], eax
lea eax, [edi - 4]
xor ecx, ecx
test eax, eax
js 0x5a5891
mov ecx, dword [ebp - 0x20f4]
add edx, 8
mov eax, dword [ebx + 0x1c]
add ecx, 4
mov edi, dword [ebp - 0x20b8]
shl eax, 4
shr ecx, 2
mov dword [ebp - 0x20c0], ecx
mov dword [ebp - 0x20e0], eax
mov eax, dword [ebx + 0x10]
shl ecx, 2
mov dword [ebp - 0x20ac], eax
mov dword [ebp - 0x20b4], edx
mov dword [ebp - 0x20e8], ecx
xor ecx, ecx
xorps xmm2, xmm2
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm5, xmm5
test esi, esi
jle 0x5a57ad
mov edx, dword [ebx + 0x14]
lea edi, [edx*4]
mov edx, dword [ebp - 0x20bc]
movss xmm1, dword [edx + ecx*4]
inc ecx
movss xmm0, dword [eax]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm1
addsd xmm2, xmm0
movss xmm0, dword [eax + 4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm3, xmm0
movss xmm0, dword [eax + 8]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm1
addsd xmm4, xmm0
movss xmm0, dword [eax + 0xc]
cvtps2pd xmm0, xmm0
add eax, edi
mulsd xmm0, xmm1
addsd xmm5, xmm0
cmp ecx, esi
jl 0x5a5753
mov edx, dword [ebp - 0x20b4]
mov edi, dword [ebp - 0x20b8]
mulsd xmm2, xmm7
mulsd xmm3, xmm7
mulsd xmm4, xmm7
mulsd xmm5, xmm7
test edi, edi
jne 0x5a57ed
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm2
movss dword [edx - 8], xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm3
movss dword [edx - 4], xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm4
movss dword [edx], xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm5
jmp 0x5a5850
movss xmm0, dword [edi]
cvtps2pd xmm0, xmm0
mov eax, dword [ebx + 0x1c]
mulsd xmm0, xmm6
addsd xmm0, xmm2
cvtpd2ps xmm0, xmm0
movss dword [edx - 8], xmm0
movss xmm0, dword [edi + eax*4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm6
addsd xmm0, xmm3
cvtpd2ps xmm0, xmm0
movss dword [edx - 4], xmm0
movss xmm0, dword [edi + eax*8]
lea eax, [eax + eax*2]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm6
addsd xmm0, xmm4
cvtpd2ps xmm0, xmm0
movss dword [edx], xmm0
movss xmm0, dword [edi + eax*4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm6
addsd xmm0, xmm5
cvtpd2ps xmm0, xmm0
mov eax, dword [ebp - 0x20ac]
add edi, dword [ebp - 0x20e0]
add eax, 0x10
movss dword [edx + 4], xmm0
add edx, 0x10
dec dword [ebp - 0x20c0]
mov dword [ebp - 0x20ac], eax
mov dword [ebp - 0x20b4], edx
mov dword [ebp - 0x20b8], edi
jne 0x5a5731
mov edi, dword [ebp - 0x20c8]
mov ecx, dword [ebp - 0x20e8]
cmp ecx, edi
jge 0x5a5a0f
mov eax, dword [ebp - 0x20c4]
sub edi, ecx
mov dword [ebp - 0x20c0], edi
lea eax, [eax + ecx*4]
mov dword [ebp - 0x20ac], eax
mov edi, eax
mov eax, dword [ebp - 0x20b0]
xor ecx, ecx
add eax, edi
xorps xmm2, xmm2
cmp esi, 4
jl 0x5a597f
mov ecx, dword [ebx + 0x14]
lea edx, [esi - 4]
shl ecx, 2
mov dword [ebp - 0x20b4], ecx
mov ecx, dword [ebp - 0x20bc]
add ecx, 8
shr edx, 2
inc edx
mov dword [ebp - 0x20e0], ecx
mov edi, ecx
lea ecx, [edx*4]
jmp 0x5a5900
movss xmm0, dword [eax]
movss xmm1, dword [edi - 8]
add eax, dword [ebp - 0x20b4]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm0
movss xmm0, dword [eax]
add eax, dword [ebp - 0x20b4]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm2
movss xmm2, dword [edi - 4]
cvtps2pd xmm2, xmm2
mulsd xmm2, xmm0
movss xmm0, dword [edi]
cvtps2pd xmm0, xmm0
addsd xmm2, xmm1
movss xmm1, dword [eax]
add eax, dword [ebp - 0x20b4]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm0
movss xmm0, dword [eax]
add eax, dword [ebp - 0x20b4]
cvtps2pd xmm0, xmm0
addsd xmm1, xmm2
movss xmm2, dword [edi + 4]
cvtps2pd xmm2, xmm2
add edi, 0x10
mulsd xmm2, xmm0
addsd xmm2, xmm1
dec edx
jne 0x5a5900
mov edi, dword [ebp - 0x20ac]
cmp ecx, esi
jge 0x5a59b4
mov edx, dword [ebx + 0x14]
mov edi, dword [ebp - 0x20bc]
shl edx, 2
nop
movss xmm1, dword [edi + ecx*4]
inc ecx
movss xmm0, dword [eax]
add eax, edx
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm0
addsd xmm2, xmm1
cmp ecx, esi
jl 0x5a5990
mov edi, dword [ebp - 0x20ac]
mov eax, dword [ebp - 0x20b8]
mulsd xmm2, xmm7
test eax, eax
jne 0x5a59cb
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm2
jmp 0x5a59de
movss xmm0, dword [eax]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm6
addsd xmm0, xmm2
cvtpd2ps xmm0, xmm0
mov edx, dword [ebx + 0x1c]
movss dword [edi], xmm0
add edi, 4
mov dword [ebp - 0x20ac], edi
lea ecx, [edx*4]
add eax, ecx
dec dword [ebp - 0x20c0]
mov dword [ebp - 0x20b8], eax
jne 0x5a58b2
mov edi, dword [ebp - 0x20c8]
mov eax, dword [ebx + 8]
add eax, dword [ebp - 0x20f8]
mov edx, dword [ebp - 0x20c4]
add edx, dword [ebp - 0x20e4]
mov dword [ebx + 8], eax
mov eax, dword [ebx + 0x18]
add eax, dword [ebp - 0x20f0]
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x20cc]
add dword [ebp - 0x20b0], eax
dec dword [ebp - 0x20d0]
mov dword [ebp - 0x20c4], edx
jne 0x5a55b0
jmp 0x5a617d
push edi
lea ecx, [ebp - 0x1070]
call fcn.005589c0
mov byte [ebp - 4], 2
cmp dword [ebp - 0x20d0], 0
mov esi, dword [ebp - 0x1070]
mov dword [ebp - 0x20b4], esi
jle 0x5a614a
mov eax, dword [ebp - 0x20b0]
mov edx, dword [ebp - 0x20b8]
movsd xmm4, qword [ebx + 0x40]
movaps xmm5, xmmword [ebp - 0x2110]
movsd xmm6, qword [ebx + 0x38]
shl eax, 2
mov dword [ebp - 0x20e0], eax
lea eax, [edx*4]
mov dword [ebp - 0x20e8], eax
mov eax, dword [ebp - 0x20cc]
shl eax, 2
mov dword [ebp - 0x20ec], eax
mov eax, dword [ebx + 8]
jmp 0x5a5ad0
mov edx, dword [ebp - 0x20d8]
mov dword [ebp - 0x20c0], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x20b8], eax
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x20cc], eax
mov eax, dword [ebp - 0x20dc]
test eax, eax
je 0x5a5c20
xor ecx, ecx
cmp edx, 4
jl 0x5a5bc3
mov ecx, dword [ebx + 8]
lea esi, [eax + 8]
mov eax, dword [ebp - 0x20d4]
mov edi, dword [ebp - 0x20d4]
shl edi, 4
lea eax, [eax + eax*2]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x20bc], eax
mov eax, dword [ebp - 0x20d4]
lea eax, [ecx + eax*8]
mov dword [ebp - 0x20ac], eax
mov eax, dword [ebp - 0x20d4]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x20b0], eax
lea eax, [edx - 4]
shr eax, 2
inc eax
mov dword [ebp - 0x20e4], eax
mov edx, eax
lea ecx, [eax*4]
mov dword [ebp - 0x20f8], ecx
mov ecx, dword [ebx + 8]
mov eax, dword [ecx]
lea esi, [esi + 0x10]
mov dword [esi - 0x18], eax
add ecx, edi
mov eax, dword [ebp - 0x20b0]
add dword [ebp - 0x20b0], edi
mov eax, dword [eax]
mov dword [esi - 0x14], eax
mov eax, dword [ebp - 0x20ac]
add dword [ebp - 0x20ac], edi
mov eax, dword [eax]
mov dword [esi - 0x10], eax
mov eax, dword [ebp - 0x20bc]
add dword [ebp - 0x20bc], edi
mov eax, dword [eax]
mov dword [esi - 0xc], eax
dec edx
jne 0x5a5b65
mov edi, dword [ebp - 0x20c8]
mov esi, dword [ebp - 0x20b4]
mov edx, dword [ebp - 0x20d8]
mov ecx, dword [ebp - 0x20f8]
mov eax, dword [ebp - 0x20dc]
cmp ecx, edx
jge 0x5a5c1a
mov esi, dword [ebp - 0x20d4]
mov edi, dword [ebx + 8]
lea eax, [esi*4]
mov dword [ebp - 0x20e4], eax
mov eax, ecx
imul eax, esi
lea esi, [edi + eax*4]
mov edi, dword [ebp - 0x20e4]
jmp 0x5a5bf0
mov edx, dword [ebp - 0x20dc]
mov eax, dword [esi]
add esi, edi
mov dword [edx + ecx*4], eax
inc ecx
mov edx, dword [ebp - 0x20d8]
cmp ecx, edx
jl 0x5a5bf0
mov edi, dword [ebp - 0x20c8]
mov esi, dword [ebp - 0x20b4]
mov eax, dword [ebp - 0x20dc]
mov dword [ebp - 0x20c0], eax
test edi, edi
jle 0x5a5c3a
mov ecx, edi
mov edi, esi
and ecx, 0x1fffffff
add ecx, ecx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x20c8]
xor eax, eax
mov dword [ebp - 0x20ac], eax
test edx, edx
jle 0x5a5e7c
mov esi, dword [ebp - 0x20b4]
mov ecx, dword [ebp - 0x20c0]
movss xmm2, dword [ecx + eax*4]
lea eax, [edi - 4]
cvtps2pd xmm2, xmm2
xor ecx, ecx
movsd xmm3, xmm2
unpcklpd xmm3, xmm3
test eax, eax
js 0x5a5cf9
mov edx, dword [ebp - 0x20b8]
lea eax, [esi + 0x10]
mov ecx, edi
add edx, 8
shr ecx, 2
mov dword [ebp - 0x20b0], ecx
shl ecx, 2
lea ecx, [ecx]
movss xmm1, dword [edx - 4]
movss xmm0, dword [edx - 8]
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm2
mulsd xmm0, xmm2
addsd xmm1, qword [eax - 8]
addsd xmm0, qword [eax - 0x10]
movsd qword [eax - 8], xmm1
movsd qword [eax - 0x10], xmm0
movss xmm1, dword [edx]
movss xmm0, dword [edx + 4]
add edx, 0x10
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm2
mulsd xmm0, xmm2
addsd xmm1, qword [eax]
addsd xmm0, qword [eax + 8]
movsd qword [eax], xmm1
movsd qword [eax + 8], xmm0
add eax, 0x20
dec dword [ebp - 0x20b0]
jne 0x5a5c90
mov edx, dword [ebp - 0x20d8]
mov eax, edi
sub eax, ecx
mov dword [ebp - 0x20f0], eax
cmp ecx, edi
jge 0x5a5e51
cmp eax, 2
jb 0x5a5d8a
lea eax, [esi - 8]
lea eax, [eax + edi*8]
mov dword [ebp - 0x20e4], eax
lea edx, [esi + ecx*8]
mov eax, dword [ebp - 0x20b8]
lea esi, [eax + ecx*4]
lea eax, [eax + edi*4]
add eax, 0xfffffffc
cmp edx, eax
ja 0x5a5d3a
cmp dword [ebp - 0x20e4], esi
jae 0x5a5d84
mov eax, dword [ebp - 0x20f0]
and eax, reloc.WS2_32.dll_accept
jns 0x5a5d4c
dec eax
or eax, 0xfffffffe
inc eax
mov dword [ebp - 0x20b0], edi
sub dword [ebp - 0x20b0], eax
mov eax, dword [ebp - 0x20b0]
mov edi, edi
movsd xmm0, qword [esi]
add ecx, 2
cvtps2pd xmm1, xmm0
add esi, 8
movupd xmm0, xmmword [edx]
mulpd xmm1, xmm3
addpd xmm1, xmm0
movupd xmmword [edx], xmm1
add edx, 0x10
cmp ecx, eax
jl 0x5a5d60
mov esi, dword [ebp - 0x20b4]
cmp ecx, edi
jge 0x5a5e4b
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x5a5e1e
mov edx, dword [ebp - 0x20b8]
lea eax, [esi + 0x10]
mov esi, edi
lea eax, [eax + ecx*8]
sub esi, ecx
sub esi, 4
lea edx, [edx + ecx*4]
shr esi, 2
add edx, 8
inc esi
lea ecx, [ecx + esi*4]
nop
movss xmm0, dword [edx - 8]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [eax - 0x10]
movsd qword [eax - 0x10], xmm0
movss xmm0, dword [edx - 4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [eax - 8]
movsd qword [eax - 8], xmm0
movss xmm0, dword [edx]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [eax]
movsd qword [eax], xmm0
movss xmm0, dword [edx + 4]
add edx, 0x10
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [eax + 8]
movsd qword [eax + 8], xmm0
add eax, 0x20
dec esi
jne 0x5a5dc0
cmp ecx, edi
jge 0x5a5e4b
mov esi, dword [ebp - 0x20b4]
mov eax, dword [ebp - 0x20b8]
mov edi, edi
movss xmm0, dword [eax + ecx*4]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [esi + ecx*8]
movsd qword [esi + ecx*8], xmm0
inc ecx
cmp ecx, edi
jl 0x5a5e30
mov edx, dword [ebp - 0x20d8]
mov esi, dword [ebx + 0x14]
mov eax, dword [ebp - 0x20ac]
inc eax
mov dword [ebp - 0x20ac], eax
lea ecx, [esi*4]
mov esi, dword [ebp - 0x20b4]
add dword [ebp - 0x20b8], ecx
cmp eax, edx
jl 0x5a5c50
cmp dword [ebx + 0x18], 0
jne 0x5a5fdc
xor ecx, ecx
test edi, edi
jle 0x5a6114
cmp edi, 2
jb 0x5a5f02
mov edx, dword [ebp - 0x20c4]
add edx, 0xfffffffc
lea edx, [edx + edi*4]
dec edi
lea eax, [esi + edi*8]
mov edi, dword [ebp - 0x20c8]
cmp dword [ebp - 0x20c4], eax
ja 0x5a5eb7
cmp edx, esi
jae 0x5a5f02
mov eax, edi
and eax, reloc.WS2_32.dll_accept
jns 0x5a5ec5
dec eax
or eax, 0xfffffffe
inc eax
mov edx, edi
sub edx, eax
mov eax, dword [ebp - 0x20c4]
mov dword [ebp - 0x20e4], edx
mov edx, esi
jmp 0x5a5ee0
movupd xmm0, xmmword [edx]
add ecx, 2
lea eax, [eax + 8]
lea edx, [edx + 0x10]
mulpd xmm0, xmm5
cvtpd2ps xmm0, xmm0
movsd qword [eax - 8], xmm0
cmp ecx, dword [ebp - 0x20e4]
jl 0x5a5ee0
cmp ecx, edi
jge 0x5a6114
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x5a5fa6
mov eax, dword [ebp - 0x20c4]
lea edx, [esi + 0x10]
mov esi, edi
lea edx, [edx + ecx*8]
sub esi, ecx
sub esi, 4
lea eax, [eax + ecx*4]
shr esi, 2
add eax, 8
inc esi
mov dword [ebp - 0x20c0], esi
lea ecx, [ecx + esi*4]
mov esi, dword [ebp - 0x20b4]
jmp 0x5a5f50
dec dword [ebp - 0x20c0]
lea edx, [edx + 0x20]
movsd xmm0, qword [edx - 0x30]
lea eax, [eax + 0x10]
mulsd xmm0, xmm6
cvtpd2ps xmm0, xmm0
movss dword [eax - 0x18], xmm0
movsd xmm0, qword [edx - 0x28]
mulsd xmm0, xmm6
cvtpd2ps xmm0, xmm0
movss dword [eax - 0x14], xmm0
movapd xmm0, xmm6
mulsd xmm0, qword [edx - 0x20]
cvtpd2ps xmm0, xmm0
movss dword [eax - 0x10], xmm0
movsd xmm0, qword [edx - 0x18]
mulsd xmm0, xmm6
cvtpd2ps xmm0, xmm0
movss dword [eax - 0xc], xmm0
jne 0x5a5f50
cmp ecx, edi
jge 0x5a6114
mov eax, dword [ebp - 0x20c4]
jmp 0x5a5fc0
movsd xmm0, qword [esi + ecx*8]
mulsd xmm0, xmm6
cvtpd2ps xmm0, xmm0
movss dword [eax + ecx*4], xmm0
inc ecx
cmp ecx, edi
jl 0x5a5fc0
jmp 0x5a6114
mov ecx, dword [ebp - 0x20cc]
xor eax, eax
cmp edi, 4
jl 0x5a60d3
mov eax, dword [ebx + 0x1c]
mov edx, dword [ebp - 0x20c4]
shl eax, 2
add edx, 8
mov dword [ebp - 0x20ac], eax
lea eax, [esi + 0x10]
mov dword [ebp - 0x20e4], eax
lea eax, [edi - 4]
mov esi, dword [ebp - 0x20e4]
shr eax, 2
inc eax
mov dword [ebp - 0x20c0], eax
shl eax, 2
movss xmm0, dword [ecx]
movsd xmm1, qword [esi - 0x10]
cvtps2pd xmm0, xmm0
add ecx, dword [ebp - 0x20ac]
mulsd xmm1, xmm6
mulsd xmm0, xmm4
addsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edx - 8], xmm0
movss xmm0, dword [ecx]
movsd xmm1, qword [esi - 8]
add ecx, dword [ebp - 0x20ac]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm6
mulsd xmm0, xmm4
addsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edx - 4], xmm0
movss xmm0, dword [ecx]
movsd xmm1, qword [esi]
add ecx, dword [ebp - 0x20ac]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm6
mulsd xmm0, xmm4
addsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [edx], xmm0
movss xmm0, dword [ecx]
movsd xmm1, qword [esi + 8]
add esi, 0x20
add ecx, dword [ebp - 0x20ac]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm6
mulsd xmm0, xmm4
addsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [edx + 4], xmm0
add edx, 0x10
dec dword [ebp - 0x20c0]
jne 0x5a6021
mov esi, dword [ebp - 0x20b4]
cmp eax, edi
jge 0x5a6114
mov edx, dword [ebx + 0x1c]
shl edx, 2
lea ecx, [ecx]
movss xmm0, dword [ecx]
add ecx, edx
movsd xmm1, qword [esi + eax*8]
mov esi, dword [ebp - 0x20c4]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm6
mulsd xmm0, xmm4
addsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [esi + eax*4], xmm0
inc eax
mov esi, dword [ebp - 0x20b4]
cmp eax, edi
jl 0x5a60e0
mov ecx, dword [ebx + 0x18]
add ecx, dword [ebp - 0x20e8]
mov eax, dword [ebx + 8]
add eax, dword [ebp - 0x20e0]
mov dword [ebx + 0x18], ecx
mov ecx, dword [ebp - 0x20c4]
add ecx, dword [ebp - 0x20ec]
dec dword [ebp - 0x20d0]
mov dword [ebx + 8], eax
mov dword [ebp - 0x20c4], ecx
jne 0x5a5ad0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x1068]
mov eax, dword [ebp - 0x1070]
cmp eax, ecx
je 0x5a617d
push eax
call fcn.0052ef7e
lea eax, [ebp - 0x1068]
mov dword [ebp - 0x106c], 0x208
mov dword [ebp - 0x1070], eax
add esp, 4
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20a0]
mov eax, dword [ebp - 0x20a8]
cmp eax, ecx
je 0x5a61b3
push eax
call fcn.0052ef7e
lea eax, [ebp - 0x20a0]
mov dword [ebp - 0x20a4], 0x408
add esp, 4
mov dword [ebp - 0x20a8], eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0052dfa4
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret