// File: Luthaf[P]zeopp/voro++/src/container_prd.cc
// Function: voro::container_periodic_base::create_vertical_image(int, int, int)
void container_periodic_base::create_vertical_image(int di,int dj,int dk) {
	int l,dijk=di+nx*(dj+oy*dk),dijkl,dijkr,ima=step_div(dk-ez,nz);
	int qj=dj+step_int(-ima*byz*ysp),qjdiv=step_div(qj-ey,ny);
	int qi=di+step_int((-ima*bxz-qjdiv*bxy)*xsp),qidiv=step_div(qi,nx);
	int fi=qi-qidiv*nx,fj=qj-qjdiv*ny,fijk=fi+nx*(fj+oy*(dk-ima*nz)),fijk2;
	double disy=ima*byz+qjdiv*by,switchy=(dj-ey)*boxy-ima*byz-qjdiv*by;
	double disx=ima*bxz+qjdiv*bxy+qidiv*bx,switchx=di*boxx-ima*bxz-qjdiv*bxy-qidiv*bx;
	double switchx2,disxl,disxr,disx2,disxr2;

	if(di==0) {dijkl=dijk+nx-1;disxl=disx+bx;}
	else {dijkl=dijk-1;disxl=disx;}

	if(di==nx-1) {dijkr=dijk-nx+1;disxr=disx-bx;}
	else {dijkr=dijk+1;disxr=disx;}

	// Down-left image computation
	bool y_exist=dj!=0;
	if((img[dijk]&1)==0) {
		img[dijkl]|=2;
		if(y_exist) {
			img[dijkl-nx]|=8;
			img[dijk-nx]|=4;
		}
		for(l=0;l<co[fijk];l++) {
			if(p[fijk][ps*l+1]>switchy) {
				if(p[fijk][ps*l]>switchx) put_image(dijk,fijk,l,disx,disy,bz*ima);
				else put_image(dijkl,fijk,l,disxl,disy,bz*ima);
			} else {
				if(!y_exist) continue;
				if(p[fijk][ps*l]>switchx) put_image(dijk-nx,fijk,l,disx,disy,bz*ima);
				else put_image(dijkl-nx,fijk,l,disxl,disy,bz*ima);
			}
		}
	}

	// Down-right image computation
	if((img[dijk]&2)==0) {
		if(fi==nx-1) {
			fijk2=fijk+1-nx;switchx2=switchx+(1-nx)*boxx;disx2=disx+bx;disxr2=disxr+bx;
		} else {
			fijk2=fijk+1;switchx2=switchx+boxx;disx2=disx;disxr2=disxr;
		}
		img[dijkr]|=1;
		if(y_exist) {
			img[dijkr-nx]|=4;
			img[dijk-nx]|=8;
		}
		for(l=0;l<co[fijk2];l++) {
			if(p[fijk2][ps*l+1]>switchy) {
				if(p[fijk2][ps*l]>switchx2) put_image(dijkr,fijk2,l,disxr2,disy,bz*ima);
				else put_image(dijk,fijk2,l,disx2,disy,bz*ima);
			} else {
				if(!y_exist) continue;
				if(p[fijk2][ps*l]>switchx2) put_image(dijkr-nx,fijk2,l,disxr2,disy,bz*ima);
				else put_image(dijk-nx,fijk2,l,disx2,disy,bz*ima);
			}
		}
	}

	// Recomputation of some intermediate quantities for boundary cases
	if(fj==wy-1) {
		fijk+=nx*(1-ny)-fi;
		switchy+=(1-ny)*boxy;
		disy+=by;
		qi=di+step_int(-(ima*bxz+(qjdiv+1)*bxy)*xsp);
		int dqidiv=step_div(qi,nx)-qidiv;qidiv+=dqidiv;
		fi=qi-qidiv*nx;
		fijk+=fi;
		disx+=bxy+bx*dqidiv;
		disxl+=bxy+bx*dqidiv;
		disxr+=bxy+bx*dqidiv;
		switchx-=bxy+bx*dqidiv;
	} else {
		fijk+=nx;switchy+=boxy;
	}

	// Up-left image computation
	y_exist=dj!=oy-1;
	if((img[dijk]&4)==0) {
		img[dijkl]|=8;
		if(y_exist) {
			img[dijkl+nx]|=2;
			img[dijk+nx]|=1;
		}
		for(l=0;l<co[fijk];l++) {
			if(p[fijk][ps*l+1]>switchy) {
				if(!y_exist) continue;
				if(p[fijk][ps*l]>switchx) put_image(dijk+nx,fijk,l,disx,disy,bz*ima);
				else put_image(dijkl+nx,fijk,l,disxl,disy,bz*ima);
			} else {
				if(p[fijk][ps*l]>switchx) put_image(dijk,fijk,l,disx,disy,bz*ima);
				else put_image(dijkl,fijk,l,disxl,disy,bz*ima);
			}
		}
	}

	// Up-right image computation
	if((img[dijk]&8)==0) {
		if(fi==nx-1) {
			fijk2=fijk+1-nx;switchx2=switchx+(1-nx)*boxx;disx2=disx+bx;disxr2=disxr+bx;
		} else {
			fijk2=fijk+1;switchx2=switchx+boxx;disx2=disx;disxr2=disxr;
		}
		img[dijkr]|=4;
		if(y_exist) {
			img[dijkr+nx]|=1;
			img[dijk+nx]|=2;
		}
		for(l=0;l<co[fijk2];l++) {
			if(p[fijk2][ps*l+1]>switchy) {
				if(!y_exist) continue;
				if(p[fijk2][ps*l]>switchx2) put_image(dijkr+nx,fijk2,l,disxr2,disy,bz*ima);
				else put_image(dijk+nx,fijk2,l,disx2,disy,bz*ima);
			} else {
				if(p[fijk2][ps*l]>switchx2) put_image(dijkr,fijk2,l,disxr2,disy,bz*ima);
				else put_image(dijk,fijk2,l,disx2,disy,bz*ima);
			}
		}
	}

	// All contributions to the block now added, so set all four bits of
	// the image information
	img[dijk]=15;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movl -0xc(%rbp), %ecx
movl 0x128(%rax), %edx
movl -0x10(%rbp), %esi
movl 0x190(%rax), %edi
imull -0x14(%rbp), %edi
addl %edi, %esi
imull %esi, %edx
addl %edx, %ecx
movl %ecx, -0x1c(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movl -0x14(%rbp), %esi
subl 0x184(%rax), %esi
movl 0x130(%rax), %edx
callq 0x1ee80
movl %eax, %ecx
movq -0xa0(%rbp), %rax
movl %ecx, -0x28(%rbp)
movl -0x10(%rbp), %ecx
movl %ecx, -0xa8(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
xorl %ecx, %ecx
subl -0x28(%rbp), %ecx
cvtsi2sd %ecx, %xmm0
mulsd 0x20(%rax), %xmm0
mulsd 0x160(%rax), %xmm0
callq 0x1f4a0
movl -0xa8(%rbp), %ecx
movl %eax, %edx
movq -0xa0(%rbp), %rax
addl %edx, %ecx
movl %ecx, -0x2c(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movl -0x2c(%rbp), %esi
subl 0x180(%rax), %esi
movl 0x12c(%rax), %edx
callq 0x1ee80
movl %eax, %ecx
movq -0xa0(%rbp), %rax
movl %ecx, -0x30(%rbp)
movl -0xc(%rbp), %ecx
movl %ecx, -0xa4(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
xorl %ecx, %ecx
subl -0x28(%rbp), %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x18(%rax), %xmm2
cvtsi2sdl -0x30(%rbp), %xmm1
mulsd 0x8(%rax), %xmm1
movq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
mulsd 0x158(%rax), %xmm0
callq 0x1f4a0
movl -0xa4(%rbp), %ecx
movl %eax, %edx
movq -0xa0(%rbp), %rax
addl %edx, %ecx
movl %ecx, -0x34(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movl -0x34(%rbp), %esi
movl 0x128(%rax), %edx
callq 0x1ee80
movl %eax, %ecx
movq -0xa0(%rbp), %rax
movl %ecx, -0x38(%rbp)
movl -0x34(%rbp), %ecx
movl -0x38(%rbp), %edx
imull 0x128(%rax), %edx
subl %edx, %ecx
movl %ecx, -0x3c(%rbp)
movl -0x2c(%rbp), %ecx
movl -0x30(%rbp), %edx
imull 0x12c(%rax), %edx
subl %edx, %ecx
movl %ecx, -0x40(%rbp)
movl -0x3c(%rbp), %ecx
movl 0x128(%rax), %edx
movl -0x40(%rbp), %esi
movl 0x190(%rax), %edi
movl -0x14(%rbp), %r8d
movl -0x28(%rbp), %r9d
imull 0x130(%rax), %r9d
subl %r9d, %r8d
imull %r8d, %edi
addl %edi, %esi
imull %esi, %edx
addl %edx, %ecx
movl %ecx, -0x44(%rbp)
cvtsi2sdl -0x28(%rbp), %xmm0
movsd 0x20(%rax), %xmm2
cvtsi2sdl -0x30(%rbp), %xmm1
mulsd 0x10(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movl -0x10(%rbp), %ecx
subl 0x180(%rax), %ecx
cvtsi2sd %ecx, %xmm1
movsd 0x148(%rax), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm0
mulsd 0x20(%rax), %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvtsi2sdl -0x30(%rbp), %xmm0
movsd 0x10(%rax), %xmm2
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
cvtsi2sdl -0x28(%rbp), %xmm1
movsd 0x18(%rax), %xmm2
cvtsi2sdl -0x30(%rbp), %xmm0
mulsd 0x8(%rax), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvtsi2sdl -0x38(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm0
movsd 0x140(%rax), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm1
mulsd 0x18(%rax), %xmm1
movq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsi2sdl -0x30(%rbp), %xmm1
movsd 0x8(%rax), %xmm2
movq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
cvtsi2sdl -0x38(%rbp), %xmm0
movsd (%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x50f56
movq -0xa0(%rbp), %rax
movl -0x1c(%rbp), %ecx
addl 0x128(%rax), %ecx
subl $0x1, %ecx
movl %ecx, -0x20(%rbp)
movsd -0x60(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, -0x78(%rbp)
jmp 0x50f69
movl -0x1c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x20(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movq -0xa0(%rbp), %rcx
movl -0xc(%rbp), %eax
movl 0x128(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x50fa6
movq -0xa0(%rbp), %rax
movl -0x1c(%rbp), %ecx
subl 0x128(%rax), %ecx
addl $0x1, %ecx
movl %ecx, -0x24(%rbp)
movsd -0x60(%rbp), %xmm0
subsd (%rax), %xmm0
movsd %xmm0, -0x80(%rbp)
jmp 0x50fb9
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0xa0(%rbp), %rax
cmpl $0x0, -0x10(%rbp)
setne %cl
andb $0x1, %cl
movb %cl, -0x91(%rbp)
movq 0x1c0(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x511f6
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %edx
orl $0x2, %edx
movb %dl, (%rax,%rcx)
testb $0x1, -0x91(%rbp)
je 0x51052
movq -0xa0(%rbp), %rdx
movq 0x1c0(%rdx), %rax
movl -0x20(%rbp), %ecx
subl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %esi
orl $0x8, %esi
movb %sil, (%rax,%rcx)
movq 0x1c0(%rdx), %rax
movl -0x1c(%rbp), %ecx
subl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edx
orl $0x4, %edx
movb %dl, (%rax,%rcx)
movl $0x0, -0x18(%rbp)
movq -0xa0(%rbp), %rcx
movl -0x18(%rbp), %eax
movq 0x1b0(%rcx), %rcx
movslq -0x44(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x511f4
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0x5113d
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x5110b
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x60(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51138
movq -0xa0(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x78(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x511e4
testb $0x1, -0x91(%rbp)
jne 0x5114b
jmp 0x511e6
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x511af
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
subl 0x128(%rdi), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x60(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x511e2
movq -0xa0(%rbp), %rdi
movl -0x20(%rbp), %esi
subl 0x128(%rdi), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x78(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x511e4
jmp 0x511e6
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x51059
jmp 0x511f6
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x514e5
movq -0xa0(%rbp), %rcx
movl -0x3c(%rbp), %eax
movl 0x128(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x51292
movq -0xa0(%rbp), %rax
movl -0x44(%rbp), %ecx
addl $0x1, %ecx
subl 0x128(%rax), %ecx
movl %ecx, -0x48(%rbp)
movsd -0x68(%rbp), %xmm1
movl $0x1, %ecx
subl 0x128(%rax), %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x140(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x60(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x80(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0x512ce
movq -0xa0(%rbp), %rax
movl -0x44(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x48(%rbp)
movsd -0x68(%rbp), %xmm0
addsd 0x140(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x24(%rbp), %rcx
movsbl (%rax,%rcx), %edx
orl $0x1, %edx
movb %dl, (%rax,%rcx)
testb $0x1, -0x91(%rbp)
je 0x51335
movq -0xa0(%rbp), %rdx
movq 0x1c0(%rdx), %rax
movl -0x24(%rbp), %ecx
subl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %esi
orl $0x4, %esi
movb %sil, (%rax,%rcx)
movq 0x1c0(%rdx), %rax
movl -0x1c(%rbp), %ecx
subl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edx
orl $0x8, %edx
movb %dl, (%rax,%rcx)
movl $0x0, -0x18(%rbp)
movq -0xa0(%rbp), %rcx
movl -0x18(%rbp), %eax
movq 0x1b0(%rcx), %rcx
movslq -0x48(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x514e3
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x48(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0x51426
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x48(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x70(%rbp), %xmm0
jbe 0x513f1
movq -0xa0(%rbp), %rdi
movl -0x24(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x90(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51421
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x88(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x514d3
testb $0x1, -0x91(%rbp)
jne 0x51434
jmp 0x514d5
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x48(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x70(%rbp), %xmm0
jbe 0x5149b
movq -0xa0(%rbp), %rdi
movl -0x24(%rbp), %esi
subl 0x128(%rdi), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x90(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x514d1
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
subl 0x128(%rdi), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x88(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x514d3
jmp 0x514d5
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x5133c
jmp 0x514e5
movq -0xa0(%rbp), %rcx
movl -0x40(%rbp), %eax
movl 0x188(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x516ab
movq -0xa0(%rbp), %rax
movl 0x128(%rax), %ecx
movl $0x1, %edx
subl 0x12c(%rax), %edx
imull %edx, %ecx
subl -0x3c(%rbp), %ecx
addl -0x44(%rbp), %ecx
movl %ecx, -0x44(%rbp)
movl $0x1, %ecx
subl 0x12c(%rax), %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x148(%rax), %xmm2
movsd -0x58(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x10(%rax), %xmm0
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movl -0xc(%rbp), %ecx
movl %ecx, -0xac(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
cvtsi2sdl -0x28(%rbp), %xmm0
movsd 0x18(%rax), %xmm2
movl -0x30(%rbp), %ecx
addl $0x1, %ecx
cvtsi2sd %ecx, %xmm1
mulsd 0x8(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd 0x158(%rax), %xmm0
callq 0x1f4a0
movl -0xac(%rbp), %ecx
movl %eax, %edx
movq -0xa0(%rbp), %rax
addl %edx, %ecx
movl %ecx, -0x34(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movl -0x34(%rbp), %esi
movl 0x128(%rax), %edx
callq 0x1ee80
movl %eax, %ecx
movq -0xa0(%rbp), %rax
subl -0x38(%rbp), %ecx
movl %ecx, -0x98(%rbp)
movl -0x98(%rbp), %ecx
addl -0x38(%rbp), %ecx
movl %ecx, -0x38(%rbp)
movl -0x34(%rbp), %ecx
movl -0x38(%rbp), %edx
imull 0x128(%rax), %edx
subl %edx, %ecx
movl %ecx, -0x3c(%rbp)
movl -0x3c(%rbp), %ecx
addl -0x44(%rbp), %ecx
movl %ecx, -0x44(%rbp)
movsd 0x8(%rax), %xmm1
movsd (%rax), %xmm0
cvtsi2sdl -0x98(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x8(%rax), %xmm1
movsd (%rax), %xmm0
cvtsi2sdl -0x98(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x8(%rax), %xmm1
movsd (%rax), %xmm0
cvtsi2sdl -0x98(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
addsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd 0x8(%rax), %xmm0
movsd (%rax), %xmm1
cvtsi2sdl -0x98(%rbp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x68(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
jmp 0x516d0
movq -0xa0(%rbp), %rax
movl 0x128(%rax), %ecx
addl -0x44(%rbp), %ecx
movl %ecx, -0x44(%rbp)
movsd 0x148(%rax), %xmm0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movq -0xa0(%rbp), %rax
movl -0x10(%rbp), %ecx
movl 0x190(%rax), %edx
subl $0x1, %edx
cmpl %edx, %ecx
setne %cl
andb $0x1, %cl
movb %cl, -0x91(%rbp)
movq 0x1c0(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x51917
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %edx
orl $0x8, %edx
movb %dl, (%rax,%rcx)
testb $0x1, -0x91(%rbp)
je 0x51773
movq -0xa0(%rbp), %rdx
movq 0x1c0(%rdx), %rax
movl -0x20(%rbp), %ecx
addl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %esi
orl $0x2, %esi
movb %sil, (%rax,%rcx)
movq 0x1c0(%rdx), %rax
movl -0x1c(%rbp), %ecx
addl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edx
orl $0x1, %edx
movb %dl, (%rax,%rcx)
movl $0x0, -0x18(%rbp)
movq -0xa0(%rbp), %rcx
movl -0x18(%rbp), %eax
movq 0x1b0(%rcx), %rcx
movslq -0x44(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x51915
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0x51878
testb $0x1, -0x91(%rbp)
jne 0x517dc
jmp 0x51907
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x51840
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
addl 0x128(%rdi), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x60(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51873
movq -0xa0(%rbp), %rdi
movl -0x20(%rbp), %esi
addl 0x128(%rdi), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x78(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51905
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x518d6
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x60(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51903
movq -0xa0(%rbp), %rdi
movl -0x20(%rbp), %esi
movl -0x44(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x78(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51905
jmp 0x51907
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x5177a
jmp 0x51917
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x1c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x51c06
movq -0xa0(%rbp), %rcx
movl -0x3c(%rbp), %eax
movl 0x128(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x519b3
movq -0xa0(%rbp), %rax
movl -0x44(%rbp), %ecx
addl $0x1, %ecx
subl 0x128(%rax), %ecx
movl %ecx, -0x48(%rbp)
movsd -0x68(%rbp), %xmm1
movl $0x1, %ecx
subl 0x128(%rax), %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x140(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x60(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x80(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, -0x90(%rbp)
jmp 0x519ef
movq -0xa0(%rbp), %rax
movl -0x44(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x48(%rbp)
movsd -0x68(%rbp), %xmm0
addsd 0x140(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x80(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x24(%rbp), %rcx
movsbl (%rax,%rcx), %edx
orl $0x4, %edx
movb %dl, (%rax,%rcx)
testb $0x1, -0x91(%rbp)
je 0x51a56
movq -0xa0(%rbp), %rdx
movq 0x1c0(%rdx), %rax
movl -0x24(%rbp), %ecx
addl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %esi
orl $0x1, %esi
movb %sil, (%rax,%rcx)
movq 0x1c0(%rdx), %rax
movl -0x1c(%rbp), %ecx
addl 0x128(%rdx), %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %edx
orl $0x2, %edx
movb %dl, (%rax,%rcx)
movl $0x0, -0x18(%rbp)
movq -0xa0(%rbp), %rcx
movl -0x18(%rbp), %eax
movq 0x1b0(%rcx), %rcx
movslq -0x48(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x51c04
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x48(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0x51b61
testb $0x1, -0x91(%rbp)
jne 0x51abf
jmp 0x51bf6
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x48(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x70(%rbp), %xmm0
jbe 0x51b26
movq -0xa0(%rbp), %rdi
movl -0x24(%rbp), %esi
addl 0x128(%rdi), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x90(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51b5c
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
addl 0x128(%rdi), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x88(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51bf4
movq -0xa0(%rbp), %rcx
movq 0x1a8(%rcx), %rax
movslq -0x48(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl 0x1cc(%rcx), %ecx
imull -0x18(%rbp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
ucomisd -0x70(%rbp), %xmm0
jbe 0x51bc2
movq -0xa0(%rbp), %rdi
movl -0x24(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x90(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51bf2
movq -0xa0(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x48(%rbp), %edx
movl -0x18(%rbp), %ecx
movsd -0x88(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
movsd 0x28(%rdi), %xmm2
cvtsi2sdl -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm2
callq 0x50a80
jmp 0x51bf4
jmp 0x51bf6
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x51a5d
jmp 0x51c06
movq -0xa0(%rbp), %rax
movq 0x1c0(%rax), %rax
movslq -0x1c(%rbp), %rcx
movb $0xf, (%rax,%rcx)
addq $0xb0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop