// File: /workspace/github_cpp_makefile_star2_O3/Luthaf[P]zeopp/voro++/src/cmd_line.cc
// Function: main
int main(int argc,char **argv) {
	int i=1,j=-7,custom_output=0,nx,ny,nz,init_mem(8);
	double ls=0;
	blocks_mode bm=none;
	bool gnuplot_output=false,povp_output=false,povv_output=false,polydisperse=false;
	bool xperiodic=false,yperiodic=false,zperiodic=false,ordered=false,verbose=false;
	pre_container *pcon=NULL;pre_container_poly *pconp=NULL;
	wall_list wl;

	// If there's one argument, check to see if it's requesting help.
	// Otherwise, bail out with an error.
	if(argc==2) {
		if(strcmp(argv[1],"-h")==0||strcmp(argv[1],"--help")==0) {
			help_message();return 0;
		} else if(strcmp(argv[1],"-hc")==0) {
			custom_output_message();return 0;
		} else if(strcmp(argv[1],"--version")==0) {
			version_message();return 0;
		} else {
			error_message();
			return VOROPP_CMD_LINE_ERROR;
		}
	}

	// If there aren't enough command-line arguments, then bail out
	// with an error.
	if(argc<7) {
	       error_message();
	       return VOROPP_CMD_LINE_ERROR;
	}

	// We have enough arguments. Now start searching for command-line
	// options.
	while(i<argc-7) {
		if(strcmp(argv[i],"-c")==0) {
			if(i>=argc-8) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			if(custom_output==0) {
				custom_output=++i;
			} else {
				fputs("voro++: multiple custom output strings detected\n",stderr);
				wl.deallocate();
				return VOROPP_CMD_LINE_ERROR;
			}
		} else if(strcmp(argv[i],"-g")==0) {
			gnuplot_output=true;
		} else if(strcmp(argv[i],"-h")==0||strcmp(argv[i],"--help")==0) {
			help_message();wl.deallocate();return 0;
		} else if(strcmp(argv[i],"-hc")==0) {
			custom_output_message();wl.deallocate();return 0;
		} else if(strcmp(argv[i],"-l")==0) {
			if(i>=argc-8) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			if(bm!=none) {
				fputs("voro++: Conflicting options about grid setup (-l/-n)\n",stderr);
				wl.deallocate();
				return VOROPP_CMD_LINE_ERROR;
			}
			bm=length_scale;
			i++;ls=atof(argv[i]);
		} else if(strcmp(argv[i],"-m")==0) {
			i++;init_mem=atoi(argv[i]);
		} else if(strcmp(argv[i],"-n")==0) {
			if(i>=argc-10) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			if(bm!=none) {
				fputs("voro++: Conflicting options about grid setup (-l/-n)\n",stderr);
				wl.deallocate();
				return VOROPP_CMD_LINE_ERROR;
			}
			bm=specified;
			i++;
			nx=atoi(argv[i++]);
			ny=atoi(argv[i++]);
			nz=atoi(argv[i]);
			if(nx<=0||ny<=0||nz<=0) {
				fputs("voro++: Computational grid specified with -n must be greater than one\n"
				      "in each direction\n",stderr);
				wl.deallocate();
				return VOROPP_CMD_LINE_ERROR;
			}
		} else if(strcmp(argv[i],"-o")==0) {
			ordered=true;
		} else if(strcmp(argv[i],"-p")==0) {
			xperiodic=yperiodic=zperiodic=true;
		} else if(strcmp(argv[i],"-px")==0) {
			xperiodic=true;
		} else if(strcmp(argv[i],"-py")==0) {
			yperiodic=true;
		} else if(strcmp(argv[i],"-pz")==0) {
			zperiodic=true;
		} else if(strcmp(argv[i],"-r")==0) {
			polydisperse=true;
		} else if(strcmp(argv[i],"-v")==0) {
			verbose=true;
		} else if(strcmp(argv[i],"--version")==0) {
			version_message();
			wl.deallocate();
			return 0;
		} else if(strcmp(argv[i],"-wb")==0) {
			if(i>=argc-13) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			i++;
			double w0=atof(argv[i++]),w1=atof(argv[i++]);
			double w2=atof(argv[i++]),w3=atof(argv[i++]);
			double w4=atof(argv[i++]),w5=atof(argv[i]);
			wl.add_wall(new wall_plane(-1,0,0,-w0,j));j--;
			wl.add_wall(new wall_plane(1,0,0,w1,j));j--;
			wl.add_wall(new wall_plane(0,-1,0,-w2,j));j--;
			wl.add_wall(new wall_plane(0,1,0,w3,j));j--;
			wl.add_wall(new wall_plane(0,0,-1,-w4,j));j--;
			wl.add_wall(new wall_plane(0,0,1,w5,j));j--;
		} else if(strcmp(argv[i],"-ws")==0) {
			if(i>=argc-11) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			i++;
			double w0=atof(argv[i++]),w1=atof(argv[i++]);
			double w2=atof(argv[i++]),w3=atof(argv[i]);
			wl.add_wall(new wall_sphere(w0,w1,w2,w3,j));
			j--;
		} else if(strcmp(argv[i],"-wp")==0) {
			if(i>=argc-11) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			i++;
			double w0=atof(argv[i++]),w1=atof(argv[i++]);
			double w2=atof(argv[i++]),w3=atof(argv[i]);
			wl.add_wall(new wall_plane(w0,w1,w2,w3,j));
			j--;
		} else if(strcmp(argv[i],"-wc")==0) {
			if(i>=argc-14) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			i++;
			double w0=atof(argv[i++]),w1=atof(argv[i++]);
			double w2=atof(argv[i++]),w3=atof(argv[i++]);
			double w4=atof(argv[i++]),w5=atof(argv[i++]);
			double w6=atof(argv[i]);
			wl.add_wall(new wall_cylinder(w0,w1,w2,w3,w4,w5,w6,j));
			j--;
		} else if(strcmp(argv[i],"-wo")==0) {
			if(i>=argc-14) {error_message();wl.deallocate();return VOROPP_CMD_LINE_ERROR;}
			i++;
			double w0=atof(argv[i++]),w1=atof(argv[i++]);
			double w2=atof(argv[i++]),w3=atof(argv[i++]);
			double w4=atof(argv[i++]),w5=atof(argv[i++]);
			double w6=atof(argv[i]);
			wl.add_wall(new wall_cone(w0,w1,w2,w3,w4,w5,w6,j));
			j--;
		} else if(strcmp(argv[i],"-y")==0) {
			povp_output=povv_output=true;
		} else if(strcmp(argv[i],"-yp")==0) {
			povp_output=true;
		} else if(strcmp(argv[i],"-yv")==0) {
			povv_output=true;
		} else {
			wl.deallocate();
			error_message();
			return VOROPP_CMD_LINE_ERROR;
		}
		i++;
	}

	// Check the memory guess is positive
	if(init_mem<=0) {
		fputs("voro++: The memory allocation must be positive\n",stderr);
		wl.deallocate();
		return VOROPP_CMD_LINE_ERROR;
	}

	// Read in the dimensions of the test box, and estimate the number of
	// boxes to divide the region up into
	double ax=atof(argv[i]),bx=atof(argv[i+1]);
	double ay=atof(argv[i+2]),by=atof(argv[i+3]);
	double az=atof(argv[i+4]),bz=atof(argv[i+5]);

	// Check that for each coordinate, the minimum value is smaller
	// than the maximum value
	if(bx<ax) {
		fputs("voro++: Minimum x coordinate exceeds maximum x coordinate\n",stderr);
		wl.deallocate();
		return VOROPP_CMD_LINE_ERROR;
	}
	if(by<ay) {
		fputs("voro++: Minimum y coordinate exceeds maximum y coordinate\n",stderr);
		wl.deallocate();
		return VOROPP_CMD_LINE_ERROR;
	}
	if(bz<az) {
		fputs("voro++: Minimum z coordinate exceeds maximum z coordinate\n",stderr);
		wl.deallocate();
		return VOROPP_CMD_LINE_ERROR;
	}

	if(bm==none) {
		if(polydisperse) {
			pconp=new pre_container_poly(ax,bx,ay,by,az,bz,xperiodic,yperiodic,zperiodic);
			pconp->import(argv[i+6]);
			pconp->guess_optimal(nx,ny,nz);
		} else {
			pcon=new pre_container(ax,bx,ay,by,az,bz,xperiodic,yperiodic,zperiodic);
			pcon->import(argv[i+6]);
			pcon->guess_optimal(nx,ny,nz);
		}
	} else {
		double nxf,nyf,nzf;
		if(bm==length_scale) {

			// Check that the length scale is positive and
			// reasonably large
			if(ls<tolerance) {
				fputs("voro++: ",stderr);
				if(ls<0) {
					fputs("The length scale must be positive\n",stderr);
				} else {
					fprintf(stderr,"The length scale is smaller than the safe limit of %g. Either\nincrease the particle length scale, or recompile with a different limit.\n",tolerance);
				}
				wl.deallocate();
				return VOROPP_CMD_LINE_ERROR;
			}
			ls=0.6/ls;
			nxf=(bx-ax)*ls+1;
			nyf=(by-ay)*ls+1;
			nzf=(bz-az)*ls+1;

			nx=int(nxf);ny=int(nyf);nz=int(nzf);
		} else {
			nxf=nx;nyf=ny;nzf=nz;
		}

		// Compute the number regions based on the length scale
		// provided. If the total number exceeds a cutoff then bail
		// out, to prevent making a massive memory allocation. Do this
		// test using floating point numbers, since huge integers could
		// potentially wrap around to negative values.
		if(nxf*nyf*nzf>max_regions) {
			fprintf(stderr,"voro++: Number of computational blocks exceeds the maximum allowed of %d.\n"
				       "Either increase the particle length scale, or recompile with an increased\nmaximum.",max_regions);
			wl.deallocate();
			return VOROPP_MEMORY_ERROR;
		}
	}

	// Check that the output filename is a sensible length
	int flen=strlen(argv[i+6]);
	if(flen>4096) {
		fputs("voro++: Filename too long\n",stderr);
		wl.deallocate();
		return VOROPP_CMD_LINE_ERROR;
	}

	// Open files for output
	char *buffer=new char[flen+7];
	sprintf(buffer,"%s.vol",argv[i+6]);
	FILE *outfile=safe_fopen(buffer,"w"),*gnu_file,*povp_file,*povv_file;
	if(gnuplot_output) {
		sprintf(buffer,"%s.gnu",argv[i+6]);
		gnu_file=safe_fopen(buffer,"w");
	} else gnu_file=NULL;
	if(povp_output) {
		sprintf(buffer,"%s_p.pov",argv[i+6]);
		povp_file=safe_fopen(buffer,"w");
	} else povp_file=NULL;
	if(povv_output) {
		sprintf(buffer,"%s_v.pov",argv[i+6]);
		povv_file=safe_fopen(buffer,"w");
	} else povv_file=NULL;
	delete [] buffer;

	const char *c_str=(custom_output==0?(polydisperse?"%i %q %v %r":"%i %q %v"):argv[custom_output]);

	// Now switch depending on whether polydispersity was enabled, and
	// whether output ordering is requested
	double vol=0;int tp=0,vcc=0;
	if(polydisperse) {
		if(ordered) {
			particle_order vo;
			container_poly con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
			con.add_wall(wl);
			if(bm==none) {
				pconp->setup(vo,con);delete pconp;
			} else con.import(vo,argv[i+6]);

			c_loop_order vlo(con,vo);
			cmd_line_output(vlo,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
		} else {
			container_poly con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
			con.add_wall(wl);

			if(bm==none) {
				pconp->setup(con);delete pconp;
			} else con.import(argv[i+6]);

			c_loop_all vla(con);
			cmd_line_output(vla,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
		}
	} else {
		if(ordered) {
			particle_order vo;
			container con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
			con.add_wall(wl);
			if(bm==none) {
				pcon->setup(vo,con);delete pcon;
			} else con.import(vo,argv[i+6]);

			c_loop_order vlo(con,vo);
			cmd_line_output(vlo,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
		} else {
			container con(ax,bx,ay,by,az,bz,nx,ny,nz,xperiodic,yperiodic,zperiodic,init_mem);
			con.add_wall(wl);
			if(bm==none) {
				pcon->setup(con);delete pcon;
			} else con.import(argv[i+6]);
			c_loop_all vla(con);
			cmd_line_output(vla,con,c_str,outfile,gnu_file,povp_file,povv_file,verbose,vol,vcc,tp);
		}
	}

	// Print information if verbose output requested
	if(verbose) {
		printf("Container geometry        : [%g:%g] [%g:%g] [%g:%g]\n"
		       "Computational grid size   : %d by %d by %d (%s)\n"
		       "Filename                  : %s\n"
		       "Output string             : %s%s\n",ax,bx,ay,by,az,bz,nx,ny,nz,
		       bm==none?"estimated from file":(bm==length_scale?
		       "estimated using length scale":"directly specified"),
		       argv[i+6],c_str,custom_output==0?" (default)":"");
		printf("Total imported particles  : %d (%.2g per grid block)\n"
		       "Total V. cells computed   : %d\n"
		       "Total container volume    : %g\n"
		       "Total V. cell volume      : %g\n",tp,((double) tp)/(nx*ny*nz),
		       vcc,(bx-ax)*(by-ay)*(bz-az),vol);
	}

	// Close output files
	fclose(outfile);
	if(gnu_file!=NULL) fclose(gnu_file);
	if(povp_file!=NULL) fclose(povp_file);
	if(povv_file!=NULL) fclose(povv_file);
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x388, %rsp            # imm = 0x388
movq %rsi, %rbx
movl %edi, %r14d
leaq 0x48(%rsp), %rdi
callq 0x13c32
cmpl $0x2, %r14d
jne 0x34a1
movq 0x8(%rbx), %rbx
cmpb $0x2d, (%rbx)
jne 0x3450
cmpb $0x68, 0x1(%rbx)
jne 0x3450
cmpb $0x0, 0x2(%rbx)
je 0x4204
leaq 0x34c0f(%rip), %rsi     # 0x38066
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
je 0x4204
leaq 0x34bff(%rip), %rsi     # 0x3806d
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
je 0x420d
leaq 0x34bec(%rip), %rsi     # 0x38071
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
jne 0x4edb
leaq 0x34b4e(%rip), %rdi     # 0x37fea
jmp 0x4214
cmpl $0x7, %r14d
jl 0x4966
cmpl $0x9, %r14d
jb 0x4192
movq %rbx, 0x18(%rsp)
leal -0x7(%r14), %eax
movl %eax, 0x88(%rsp)
leal -0xe(%r14), %eax
movl %eax, 0xf4(%rsp)
leal -0xb(%r14), %eax
movl %eax, 0x44(%rsp)
leal -0xd(%r14), %eax
movl %eax, 0xc8(%rsp)
leal -0xa(%r14), %eax
movl %eax, 0x80(%rsp)
addl $-0x8, %r14d
movq %r14, 0x78(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xb0(%rsp)
movl $0x8, %eax
movq %rax, 0xc0(%rsp)
xorl %r14d, %r14d
movl $0xfffffff9, %ebx       # imm = 0xFFFFFFF9
movl $0x1, %ebp
leaq 0x4179c(%rip), %rax     # 0x44cc0
addq $0x10, %rax
movq %rax, 0x38(%rsp)
xorps %xmm0, %xmm0
movhps 0x33ad9(%rip), %xmm0    # xmm0 = xmm0[0,1],mem[0,1]
movaps %xmm0, 0x170(%rsp)
xorps %xmm0, %xmm0
movhps 0x33abf(%rip), %xmm0    # xmm0 = xmm0[0,1],mem[0,1]
movaps %xmm0, 0x160(%rsp)
leaq 0x41718(%rip), %rax     # 0x44c70
addq $0x10, %rax
movq %rax, 0x158(%rsp)
leaq 0x417a5(%rip), %rax     # 0x44d10
addq $0x10, %rax
movq %rax, 0x150(%rsp)
leaq 0x417e2(%rip), %rax     # 0x44d60
addq $0x10, %rax
movq %rax, 0x148(%rsp)
xorl %r13d, %r13d
movl $0x0, 0x70(%rsp)
movl $0x0, 0x90(%rsp)
movl $0x0, 0xb8(%rsp)
xorl %r12d, %r12d
movl $0x0, 0x34(%rsp)
movl $0x0, 0x30(%rsp)
movl $0x0, 0x2c(%rsp)
movl $0x0, 0xbc(%rsp)
movl $0x0, 0x6c(%rsp)
movq %rbx, 0x10(%rsp)
movl %r14d, 0xc(%rsp)
movl %r13d, %ebx
movslq %ebp, %r15
movq 0x18(%rsp), %rax
movq (%rax,%r15,8), %r14
movb (%r14), %r13b
cmpb $0x2d, %r13b
jne 0x3631
cmpb $0x63, 0x1(%r14)
jne 0x360d
cmpb $0x0, 0x2(%r14)
je 0x3824
cmpb $0x67, 0x1(%r14)
jne 0x361f
cmpb $0x0, 0x2(%r14)
je 0x384e
cmpb $0x68, 0x1(%r14)
jne 0x3631
cmpb $0x0, 0x2(%r14)
je 0x421e
movq %r14, %rdi
leaq 0x34a2b(%rip), %rsi     # 0x38066
callq 0x21a0
testl %eax, %eax
je 0x421e
movq %r14, %rdi
leaq 0x34a1b(%rip), %rsi     # 0x3806d
callq 0x21a0
testl %eax, %eax
je 0x4772
cmpb $0x2d, %r13b
jne 0x36bf
cmpb $0x6c, 0x1(%r14)
jne 0x3677
cmpb $0x0, 0x2(%r14)
je 0x3859
cmpb $0x6d, 0x1(%r14)
jne 0x3689
cmpb $0x0, 0x2(%r14)
je 0x3895
cmpb $0x6e, 0x1(%r14)
jne 0x369b
cmpb $0x0, 0x2(%r14)
je 0x38b3
cmpb $0x6f, 0x1(%r14)
jne 0x36ad
cmpb $0x0, 0x2(%r14)
je 0x392f
cmpb $0x70, 0x1(%r14)
jne 0x36bf
cmpb $0x0, 0x2(%r14)
je 0x3c54
movq %r14, %rdi
leaq 0x34a72(%rip), %rsi     # 0x3813b
callq 0x21a0
testl %eax, %eax
je 0x3c60
movq %r14, %rdi
leaq 0x34a5f(%rip), %rsi     # 0x3813f
callq 0x21a0
testl %eax, %eax
je 0x3819
movq %r14, %rdi
leaq 0x34a4c(%rip), %rsi     # 0x38143
callq 0x21a0
testl %eax, %eax
je 0x3843
cmpb $0x2d, %r13b
jne 0x372e
cmpb $0x72, 0x1(%r14)
jne 0x371c
cmpb $0x0, 0x2(%r14)
je 0x3e3c
cmpb $0x76, 0x1(%r14)
jne 0x372e
cmpb $0x0, 0x2(%r14)
je 0x3e4c
movq %r14, %rdi
leaq 0x34939(%rip), %rsi     # 0x38071
callq 0x21a0
testl %eax, %eax
je 0x4f1b
movq %r14, %rdi
leaq 0x349f8(%rip), %rsi     # 0x38147
callq 0x21a0
testl %eax, %eax
je 0x393d
movq %r14, %rdi
leaq 0x349e5(%rip), %rsi     # 0x3814b
callq 0x21a0
testl %eax, %eax
je 0x3c87
movq %r14, %rdi
leaq 0x349d2(%rip), %rsi     # 0x3814f
callq 0x21a0
testl %eax, %eax
je 0x3d61
movq %r14, %rdi
leaq 0x349bf(%rip), %rsi     # 0x38153
callq 0x21a0
testl %eax, %eax
je 0x3e57
movq %r14, %rdi
leaq 0x349ac(%rip), %rsi     # 0x38157
callq 0x21a0
testl %eax, %eax
je 0x3fc0
cmpb $0x2d, %r13b
jne 0x37d0
cmpb $0x79, 0x1(%r14)
jne 0x37d0
cmpb $0x0, 0x2(%r14)
je 0x417b
movq %r14, %rdi
leaq 0x34981(%rip), %rsi     # 0x3815b
callq 0x21a0
testl %eax, %eax
movl %ebx, %r13d
je 0x416d
movq %r14, %rdi
leaq 0x3496b(%rip), %rsi     # 0x3815f
callq 0x21a0
movb $0x1, %cl
movl %ecx, 0xb8(%rsp)
testl %eax, %eax
movl 0xc(%rsp), %r14d
movq 0x10(%rsp), %rbx
je 0x3c73
jmp 0x4f8e
movb $0x1, %al
movl %eax, 0x30(%rsp)
jmp 0x3c66
cmpl 0x78(%rsp), %ebp
jge 0x4f49
cmpl $0x0, 0xc(%rsp)
jne 0x4f5b
incl %ebp
movl %ebp, %r14d
jmp 0x3c6b
movb $0x1, %al
movl %eax, 0x2c(%rsp)
jmp 0x3c66
movb $0x1, %al
movl %eax, 0x70(%rsp)
jmp 0x3c66
cmpl 0x78(%rsp), %ebp
jge 0x4f49
testl %ebx, %ebx
jne 0x4f52
incl %ebp
movq 0x18(%rsp), %rax
movq 0x8(%rax,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xb0(%rsp)
movl $0x1, %r13d
movl 0xc(%rsp), %r14d
jmp 0x3c6e
incl %ebp
movq 0x18(%rsp), %rax
movq 0x8(%rax,%r15,8), %rdi
callq 0x21e0
movq %rax, 0xc0(%rsp)
jmp 0x3c66
cmpl 0x80(%rsp), %ebp
jge 0x4f49
testl %ebx, %ebx
jne 0x4f52
movq 0x18(%rsp), %rbx
movq 0x8(%rbx,%r15,8), %rdi
callq 0x21e0
movl %eax, %r13d
movl %eax, 0x28(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x21e0
movl %eax, %r14d
movl %eax, 0x24(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x21e0
movl %eax, 0x20(%rsp)
testl %r13d, %r13d
jle 0x4f64
testl %r14d, %r14d
movq 0x10(%rsp), %rbx
jle 0x4f64
testl %eax, %eax
movl 0xc(%rsp), %r14d
jle 0x4f64
addl $0x3, %ebp
movl $0x2, %r13d
jmp 0x3c73
movb $0x1, %al
movl %eax, 0xbc(%rsp)
jmp 0x3c66
cmpl 0xc8(%rsp), %ebp
jge 0x4f49
movq 0x18(%rsp), %r14
movq 0x8(%r14,%r15,8), %rdi
callq 0x2170
movaps %xmm0, 0xd0(%rsp)
movq 0x10(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa8(%rsp)
movq 0x18(%r14,%r15,8), %rdi
callq 0x2170
movaps %xmm0, 0x110(%rsp)
movq 0x20(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa0(%rsp)
movq 0x28(%r14,%r15,8), %rdi
callq 0x2170
movaps %xmm0, 0x130(%rsp)
movq 0x30(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xe0(%rsp)
movl $0x30, %edi
callq 0x2120
movl %ebx, %r13d
movq 0x10(%rsp), %rbx
movq %rax, %r14
movapd 0xd0(%rsp), %xmm1
xorpd 0x3365c(%rip), %xmm1    # 0x37040
movq 0x38(%rsp), %rax
movq %rax, (%r14)
movl %ebx, 0x8(%r14)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, 0x10(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movlpd %xmm1, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3a27
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
leal -0x1(%rbx), %eax
movq 0x38(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x10(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3a8f
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
leal -0x2(%rbx), %eax
movapd 0x110(%rsp), %xmm1
xorpd 0x33584(%rip), %xmm1    # 0x37040
movq 0x38(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
movaps 0x170(%rsp), %xmm0
movups %xmm0, 0x10(%r14)
movq $0x0, 0x20(%r14)
movlpd %xmm1, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3afe
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
leal -0x3(%rbx), %eax
movq 0x38(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
movaps 0x160(%rsp), %xmm0
movups %xmm0, 0x10(%r14)
movq $0x0, 0x20(%r14)
movsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3b65
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
leal -0x4(%rbx), %eax
movapd 0x130(%rsp), %xmm1
xorpd 0x334ae(%rip), %xmm1    # 0x37040
movq 0x38(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r14)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, 0x20(%r14)
movlpd %xmm1, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3bd5
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
leal -0x5(%rbx), %eax
movq 0x38(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%r14)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x20(%r14)
movsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3c3d
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
addl $0x6, %ebp
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
addl $-0x6, %ebx
jmp 0x4163
movb $0x1, %al
movl %eax, 0x2c(%rsp)
movb $0x1, %al
movl %eax, 0x30(%rsp)
movb $0x1, %al
movl %eax, 0x34(%rsp)
movl 0xc(%rsp), %r14d
movl %ebx, %r13d
movq 0x10(%rsp), %rbx
incl %ebp
cmpl 0x88(%rsp), %ebp
jl 0x35d9
jmp 0x422a
cmpl 0x44(%rsp), %ebp
jge 0x4f49
movq 0x18(%rsp), %r14
movq 0x8(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movq 0x10(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa8(%rsp)
movq 0x18(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x110(%rsp)
movq 0x20(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa0(%rsp)
movl $0x30, %edi
callq 0x2120
movl %ebx, %r13d
movq 0x10(%rsp), %rbx
movq %rax, %r14
movq 0x158(%rsp), %rax
movq %rax, (%r14)
movl %ebx, 0x8(%r14)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x110(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3e34
leaq 0x48(%rsp), %rdi
callq 0x157a8
jmp 0x3e2f
cmpl 0x44(%rsp), %ebp
jge 0x4f49
movq 0x18(%rsp), %r14
movq 0x8(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movq 0x10(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa8(%rsp)
movq 0x18(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x110(%rsp)
movq 0x20(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa0(%rsp)
movl $0x30, %edi
callq 0x2120
movl %ebx, %r13d
movq 0x10(%rsp), %rbx
movq %rax, %r14
movq 0x38(%rsp), %rax
movq %rax, (%r14)
movl %ebx, 0x8(%r14)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x110(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x3e34
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
addl $0x4, %ebp
jmp 0x4155
movl 0xc(%rsp), %r14d
movl %ebx, %r13d
movb $0x1, %r12b
jmp 0x3c6e
movb $0x1, %al
movl %eax, 0x6c(%rsp)
jmp 0x3c66
cmpl 0xf4(%rsp), %ebp
jge 0x4f49
movq 0x18(%rsp), %r14
movq 0x8(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movq 0x10(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x110(%rsp)
movq 0x18(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa0(%rsp)
movq 0x20(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa8(%rsp)
movq 0x28(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x130(%rsp)
movq 0x30(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xe0(%rsp)
movq 0x38(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x128(%rsp)
movl $0x50, %edi
callq 0x2120
movl %ebx, %r13d
movq 0x10(%rsp), %rbx
movq %rax, %r14
movq 0x150(%rsp), %rax
movq %rax, (%r14)
movl %ebx, 0x8(%r14)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0x110(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movsd 0x130(%rsp), %xmm1
movsd %xmm1, 0x30(%r14)
movsd 0xe0(%rsp), %xmm2
movsd %xmm2, 0x38(%r14)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
movsd 0x33080(%rip), %xmm0    # 0x37008
divsd %xmm2, %xmm0
movsd %xmm0, 0x40(%r14)
movsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x48(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x4152
leaq 0x48(%rsp), %rdi
callq 0x157a8
jmp 0x414d
cmpl 0xf4(%rsp), %ebp
jge 0x4f49
movq 0x18(%rsp), %r14
movq 0x8(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa8(%rsp)
movq 0x10(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xa0(%rsp)
movq 0x18(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x130(%rsp)
movq 0x20(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x110(%rsp)
movq 0x28(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xe0(%rsp)
movq 0x30(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x128(%rsp)
movq 0x38(%r14,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movl $0x60, %edi
callq 0x2120
movl %ebx, %r13d
movq 0x10(%rsp), %rbx
movq %rax, %r14
movq 0x148(%rsp), %rax
movq %rax, (%r14)
movl %ebx, 0x8(%r14)
movsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x130(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0x110(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movsd 0xe0(%rsp), %xmm1
movsd %xmm1, 0x30(%r14)
movsd 0x128(%rsp), %xmm2
movsd %xmm2, 0x38(%r14)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
movsd 0x32f17(%rip), %xmm0    # 0x37008
divsd %xmm2, %xmm0
movsd %xmm0, 0x40(%r14)
movsd 0xd0(%rsp), %xmm0
callq 0x20d0
movsd %xmm0, 0x48(%r14)
movsd 0xd0(%rsp), %xmm0
callq 0x2060
movsd %xmm0, 0x50(%r14)
movsd 0xd0(%rsp), %xmm0
callq 0x2250
movsd %xmm0, 0x58(%r14)
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x4152
leaq 0x48(%rsp), %rdi
callq 0x157a8
movq 0x50(%rsp), %rax
addl $0x7, %ebp
leaq 0x8(%rax), %rcx
movq %rcx, 0x50(%rsp)
movq %r14, (%rax)
decl %ebx
movl 0xc(%rsp), %r14d
jmp 0x3c73
movb $0x1, %al
movl %eax, 0x90(%rsp)
jmp 0x388b
movb $0x1, %al
movl %eax, 0xb8(%rsp)
movb $0x1, %al
movl %eax, 0x90(%rsp)
jmp 0x3c66
xorps %xmm0, %xmm0
movsd %xmm0, 0xb0(%rsp)
movl $0x8, %eax
movq %rax, 0xc0(%rsp)
xorl %r14d, %r14d
movl $0x1, %ebp
xorl %r13d, %r13d
movl $0x0, 0x70(%rsp)
movl $0x0, 0x90(%rsp)
movl $0x0, 0xb8(%rsp)
xorl %r12d, %r12d
movl $0x0, 0x34(%rsp)
movl $0x0, 0x30(%rsp)
movl $0x0, 0x2c(%rsp)
movl $0x0, 0xbc(%rsp)
movl $0x0, 0x6c(%rsp)
jmp 0x4240
leaq 0x32e55(%rip), %rdi     # 0x37060
jmp 0x4214
leaq 0x33681(%rip), %rdi     # 0x37895
callq 0x21d0
jmp 0x4e5b
leaq 0x32e3b(%rip), %rdi     # 0x37060
jmp 0x4779
cmpl $0x0, 0xc0(%rsp)
jle 0x4f40
movslq %ebp, %rbp
movq 0x18(%rsp), %rbx
movq (%rbx,%rbp,8), %rdi
callq 0x2170
movsd %xmm0, 0x10(%rsp)
movq 0x8(%rbx,%rbp,8), %rdi
callq 0x2170
movsd %xmm0, 0x18(%rsp)
movq 0x10(%rbx,%rbp,8), %rdi
callq 0x2170
movsd %xmm0, 0x88(%rsp)
movq 0x18(%rbx,%rbp,8), %rdi
callq 0x2170
movsd %xmm0, 0x38(%rsp)
movq 0x20(%rbx,%rbp,8), %rdi
callq 0x2170
movsd %xmm0, 0x80(%rsp)
movq 0x28(%rbx,%rbp,8), %rdi
callq 0x2170
movsd %xmm0, 0x78(%rsp)
movsd 0x10(%rsp), %xmm0
ucomisd 0x18(%rsp), %xmm0
ja 0x4e7b
movsd 0x88(%rsp), %xmm0
ucomisd 0x38(%rsp), %xmm0
ja 0x4e84
movsd 0x80(%rsp), %xmm0
ucomisd 0x78(%rsp), %xmm0
ja 0x4e8d
testl %r13d, %r13d
movl %r13d, 0x44(%rsp)
je 0x4387
cmpl $0x1, %r13d
jne 0x4414
movsd 0x32d17(%rip), %xmm1    # 0x37018
movsd 0xb0(%rsp), %xmm0
ucomisd %xmm0, %xmm1
ja 0x4f27
movsd 0x32d04(%rip), %xmm3    # 0x37020
divsd %xmm0, %xmm3
movsd 0x18(%rsp), %xmm0
subsd 0x10(%rsp), %xmm0
mulsd %xmm3, %xmm0
movsd 0x32cd0(%rip), %xmm4    # 0x37008
addsd %xmm4, %xmm0
movsd 0x38(%rsp), %xmm1
subsd 0x88(%rsp), %xmm1
mulsd %xmm3, %xmm1
addsd %xmm4, %xmm1
movsd 0x78(%rsp), %xmm2
subsd 0x80(%rsp), %xmm2
mulsd %xmm3, %xmm2
cvttsd2si %xmm0, %eax
addsd %xmm4, %xmm2
movl %eax, 0x28(%rsp)
cvttsd2si %xmm1, %eax
movl %eax, 0x24(%rsp)
cvttsd2si %xmm2, %eax
movl %eax, 0x20(%rsp)
jmp 0x4429
testb $0x1, %r12b
je 0x48d5
movl $0x80, %edi
callq 0x2120
movq %rax, %r15
movzbl 0x34(%rsp), %esi
andl $0x1, %esi
movzbl 0x30(%rsp), %edx
andl $0x1, %edx
movzbl 0x2c(%rsp), %ecx
andl $0x1, %ecx
movq %rax, %rdi
movsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
movl $0x4, %r8d
callq 0x30054
movq 0x30(%rbx,%rbp,8), %rsi
movq %r15, %rdi
callq 0x50b6
leaq 0x28(%rsp), %rsi
leaq 0x24(%rsp), %rdx
leaq 0x20(%rsp), %rcx
movq %r15, %rdi
callq 0x301ac
jmp 0x4442
xorps %xmm0, %xmm0
cvtsi2sdl 0x28(%rsp), %xmm0
cvtsi2sdl 0x24(%rsp), %xmm1
cvtsi2sdl 0x20(%rsp), %xmm2
mulsd %xmm1, %xmm0
mulsd %xmm2, %xmm0
ucomisd 0x32bef(%rip), %xmm0    # 0x37028
ja 0x4eea
xorl %r15d, %r15d
movq $0x0, 0xc8(%rsp)
movq 0x30(%rbx,%rbp,8), %r13
movq %r13, %rdi
callq 0x20a0
cmpl $0x1001, %eax           # imm = 0x1001
jge 0x4eb4
movl %r14d, 0xc(%rsp)
addl $0x7, %eax
movslq %eax, %rdi
callq 0x2030
movq %rax, %r14
leaq 0x33f30(%rip), %rsi     # 0x383b0
movq %rax, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x2050
leaq 0x33f23(%rip), %rsi     # 0x383b7
movq %r14, %rdi
callq 0x13485
movq %rax, 0xb0(%rsp)
testb $0x1, 0x70(%rsp)
je 0x44d7
movq 0x30(%rbx,%rbp,8), %rdx
leaq 0x33f02(%rip), %rsi     # 0x383b9
movq %r14, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x33eef(%rip), %rsi     # 0x383b7
movq %r14, %rdi
callq 0x13485
movq %rax, 0x70(%rsp)
jmp 0x44e0
movq $0x0, 0x70(%rsp)
testb $0x1, 0x90(%rsp)
je 0x4519
movq 0x30(%rbx,%rbp,8), %rdx
leaq 0x33eca(%rip), %rsi     # 0x383c0
movq %r14, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x33eb0(%rip), %rsi     # 0x383b7
movq %r14, %rdi
callq 0x13485
movq %rax, 0x90(%rsp)
jmp 0x4525
movq $0x0, 0x90(%rsp)
testb $0x1, 0xb8(%rsp)
je 0x4559
movq 0x30(%rbx,%rbp,8), %rdx
leaq 0x33e8e(%rip), %rsi     # 0x383c9
movq %r14, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x33e6b(%rip), %rsi     # 0x383b7
movq %r14, %rdi
callq 0x13485
movq %rax, %r13
jmp 0x455c
xorl %r13d, %r13d
movq %r14, %rdi
callq 0x2180
movl 0xc(%rsp), %eax
testl %eax, %eax
je 0x4574
cltq
movq (%rbx,%rax,8), %r14
jmp 0x458a
leaq 0x33e57(%rip), %rax     # 0x383d2
leaq 0x33e5c(%rip), %r14     # 0x383de
testb $0x1, %r12b
cmovneq %rax, %r14
movq $0x0, 0xe8(%rsp)
xorl %eax, %eax
movl %eax, 0x9c(%rsp)
movl %eax, 0x98(%rsp)
testb $0x1, %r12b
je 0x468d
testb $0x1, 0xbc(%rsp)
je 0x478f
movl $0x8000, %edi           # imm = 0x8000
callq 0x2030
movq %rax, %r12
movq %rax, 0xf8(%rsp)
movq %rax, 0x100(%rsp)
movl $0x1000, 0x108(%rsp) # imm = 0x1000
movl 0x28(%rsp), %esi
movl 0x24(%rsp), %edx
movl 0x20(%rsp), %ecx
movzbl 0x2c(%rsp), %eax
andl $0x1, %eax
movzbl 0x34(%rsp), %r8d
andl $0x1, %r8d
movzbl 0x30(%rsp), %r9d
andl $0x1, %r9d
leaq 0x180(%rsp), %rdi
movq 0x10(%rsp), %xmm0
movq 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
pushq 0xc0(%rsp)
pushq %rax
callq 0x13dd0
addq $0x10, %rsp
leaq 0x1d0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x15720
cmpl $0x0, 0x44(%rsp)
je 0x4b07
movq 0x30(%rbx,%rbp,8), %rdx
leaq 0x180(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x5122
jmp 0x4b34
testb $0x1, 0xbc(%rsp)
je 0x482e
movl $0x8000, %edi           # imm = 0x8000
callq 0x2030
movq 0xc8(%rsp), %r12
movq %rax, %r15
movq %rax, 0xf8(%rsp)
movq %rax, 0x100(%rsp)
movl $0x1000, 0x108(%rsp) # imm = 0x1000
movl 0x28(%rsp), %esi
movl 0x24(%rsp), %edx
movl 0x20(%rsp), %ecx
movzbl 0x2c(%rsp), %eax
andl $0x1, %eax
movzbl 0x34(%rsp), %r8d
andl $0x1, %r8d
movzbl 0x30(%rsp), %r9d
andl $0x1, %r9d
leaq 0x180(%rsp), %rdi
movq 0x10(%rsp), %xmm0
movq 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
pushq 0xc0(%rsp)
pushq %rax
callq 0x13d32
addq $0x10, %rsp
leaq 0x1d0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x15720
cmpl $0x0, 0x44(%rsp)
je 0x4c0a
movq 0x30(%rbx,%rbp,8), %rdx
leaq 0x180(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x5e46
jmp 0x4c37
leaq 0x3311c(%rip), %rdi     # 0x37895
callq 0x21d0
xorl %ebx, %ebx
leaq 0x48(%rsp), %rdi
callq 0x15772
jmp 0x4e5d
movl 0x28(%rsp), %esi
movl 0x24(%rsp), %edx
movl 0x20(%rsp), %ecx
movzbl 0x2c(%rsp), %eax
andl $0x1, %eax
movzbl 0x34(%rsp), %r8d
andl $0x1, %r8d
movzbl 0x30(%rsp), %r9d
andl $0x1, %r9d
leaq 0x180(%rsp), %rdi
movq 0x10(%rsp), %xmm0
movq 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
pushq 0xc0(%rsp)
pushq %rax
callq 0x13dd0
addq $0x10, %rsp
leaq 0x1d0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x15720
cmpl $0x0, 0x44(%rsp)
je 0x4970
movq 0x30(%rbx,%rbp,8), %rsi
leaq 0x180(%rsp), %rdi
callq 0x571c
jmp 0x4995
movl 0x28(%rsp), %esi
movl 0x24(%rsp), %edx
movl 0x20(%rsp), %ecx
movzbl 0x2c(%rsp), %eax
andl $0x1, %eax
movzbl 0x34(%rsp), %r8d
andl $0x1, %r8d
movzbl 0x30(%rsp), %r9d
andl $0x1, %r9d
leaq 0x180(%rsp), %rdi
movq 0x10(%rsp), %xmm0
movq 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
pushq 0xc0(%rsp)
pushq %rax
callq 0x13d32
addq $0x10, %rsp
movq 0xc8(%rsp), %r15
leaq 0x1d0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x15720
cmpl $0x0, 0x44(%rsp)
je 0x4a35
movq 0x30(%rbx,%rbp,8), %rsi
leaq 0x180(%rsp), %rdi
callq 0x6440
jmp 0x4a5a
movl $0x80, %edi
callq 0x2120
movq %rax, %r15
movzbl 0x34(%rsp), %esi
andl $0x1, %esi
movzbl 0x30(%rsp), %edx
andl $0x1, %edx
movzbl 0x2c(%rsp), %ecx
andl $0x1, %ecx
movq %rax, %rdi
movsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
movl $0x3, %r8d
callq 0x30054
movq 0x30(%rbx,%rbp,8), %rsi
movq %r15, %rdi
callq 0x50ec
leaq 0x28(%rsp), %rsi
leaq 0x24(%rsp), %rdx
leaq 0x20(%rsp), %rcx
movq %r15, %rdi
callq 0x301ac
movq %r15, 0xc8(%rsp)
xorl %r15d, %r15d
jmp 0x444e
callq 0x2312
jmp 0x4ee0
leaq 0x180(%rsp), %rsi
movq %r15, %rdi
callq 0x30554
movq %r15, %rdi
callq 0x30112
movl $0x80, %esi
movq %r15, %rdi
callq 0x2130
leaq 0x180(%rsp), %rsi
movaps (%rsi), %xmm0
leaq 0x320(%rsp), %rdi
movaps %xmm0, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl 0xd0(%rsi), %eax
pshufd $0x4e, 0xb0(%rsi), %xmm0 # xmm0 = mem[2,3,0,1]
movl %eax, 0x14(%rdi)
movdqu %xmm0, 0x18(%rdi)
movq 0xc0(%rsi), %rax
movq %rax, 0x28(%rdi)
subq $0x8, %rsp
leaq 0xa4(%rsp), %rax
leaq 0xa0(%rsp), %r10
leaq 0xf0(%rsp), %r11
movzbl 0x74(%rsp), %r15d
andl $0x1, %r15d
movq %r14, %rdx
movq 0xb8(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x98(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r15
pushq %r13
callq 0x5752
addq $0x30, %rsp
leaq 0x280(%rsp), %rdi
callq 0x6b6a
jmp 0x4af5
leaq 0x180(%rsp), %rsi
movq %r15, %rdi
callq 0x3049c
movq %r15, %rdi
callq 0x30112
movl $0x80, %esi
movq %r15, %rdi
callq 0x2130
leaq 0x180(%rsp), %rsi
movaps (%rsi), %xmm0
leaq 0x320(%rsp), %rdi
movaps %xmm0, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl 0xd0(%rsi), %eax
pshufd $0x4e, 0xb0(%rsi), %xmm0 # xmm0 = mem[2,3,0,1]
movl %eax, 0x14(%rdi)
movdqu %xmm0, 0x18(%rdi)
movq 0xc0(%rsi), %rax
movq %rax, 0x28(%rdi)
subq $0x8, %rsp
leaq 0xa4(%rsp), %rax
leaq 0xa0(%rsp), %r10
leaq 0xf0(%rsp), %r11
movzbl 0x74(%rsp), %r15d
andl $0x1, %r15d
movq %r14, %rdx
movq 0xb8(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x98(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r15
pushq %r13
callq 0x6476
addq $0x30, %rsp
leaq 0x258(%rsp), %rdi
callq 0x6b94
leaq 0x180(%rsp), %rdi
callq 0x13c68
jmp 0x4d09
leaq 0xf8(%rsp), %rsi
leaq 0x180(%rsp), %rdx
movq %r15, %rdi
callq 0x306ee
movq %r15, %rdi
callq 0x30112
movl $0x80, %esi
movq %r15, %rdi
callq 0x2130
leaq 0x180(%rsp), %rsi
movdqa (%rsi), %xmm0
leaq 0x320(%rsp), %rdi
movdqa %xmm0, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl 0xd0(%rsi), %eax
pshufd $0x4e, 0xb0(%rsi), %xmm1 # xmm1 = mem[2,3,0,1]
movl %eax, 0x14(%rdi)
movdqu %xmm1, 0x18(%rdi)
movq 0xc0(%rsi), %rax
movq %rax, 0x28(%rdi)
leaq 0xf8(%rsp), %rax
movq %rax, 0x48(%rdi)
pshufd $0xec, %xmm0, %xmm0     # xmm0 = xmm0[0,3,2,3]
movq %xmm0, 0x60(%rdi)
subq $0x8, %rsp
leaq 0xa4(%rsp), %rax
leaq 0xa0(%rsp), %r10
leaq 0xf0(%rsp), %r11
movzbl 0x74(%rsp), %r15d
andl $0x1, %r15d
movq %r14, %rdx
movq 0xb8(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x98(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r15
pushq %r13
callq 0x515a
addq $0x30, %rsp
leaq 0x280(%rsp), %rdi
callq 0x6b6a
leaq 0x180(%rsp), %rdi
callq 0x13c68
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x4d09
jmp 0x4d04
leaq 0xf8(%rsp), %rsi
leaq 0x180(%rsp), %rdx
movq %r12, %rdi
callq 0x3061a
movq %r12, %rdi
callq 0x30112
movl $0x80, %esi
movq %r12, %rdi
callq 0x2130
leaq 0x180(%rsp), %rsi
movdqa (%rsi), %xmm0
leaq 0x320(%rsp), %rdi
movdqa %xmm0, (%rdi)
movl 0x10(%rsi), %eax
movl %eax, 0x10(%rdi)
movl 0xd0(%rsi), %eax
pshufd $0x4e, 0xb0(%rsi), %xmm1 # xmm1 = mem[2,3,0,1]
movl %eax, 0x14(%rdi)
movdqu %xmm1, 0x18(%rdi)
movq 0xc0(%rsi), %rax
movq %rax, 0x28(%rdi)
leaq 0xf8(%rsp), %rax
movq %rax, 0x48(%rdi)
pshufd $0xec, %xmm0, %xmm0     # xmm0 = xmm0[0,3,2,3]
movq %xmm0, 0x60(%rdi)
subq $0x8, %rsp
leaq 0xa4(%rsp), %rax
leaq 0xa0(%rsp), %r10
leaq 0xf0(%rsp), %r11
movzbl 0x74(%rsp), %r15d
andl $0x1, %r15d
movq %r14, %rdx
movq 0xb8(%rsp), %rcx
movq 0x78(%rsp), %r8
movq 0x98(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r15
pushq %r13
callq 0x5e7e
addq $0x30, %rsp
leaq 0x258(%rsp), %rdi
callq 0x6b94
leaq 0x180(%rsp), %rdi
callq 0x13c68
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x4d09
callq 0x2180
movq 0x70(%rsp), %r15
testb $0x1, 0x6c(%rsp)
je 0x4e22
movl 0x44(%rsp), %edx
cmpl $0x1, %edx
leaq 0x33779(%rip), %rax     # 0x384a0
leaq 0x3378f(%rip), %rcx     # 0x384bd
cmoveq %rax, %rcx
testl %edx, %edx
leaq 0x33751(%rip), %r8      # 0x3848c
cmovneq %rcx, %r8
cmpl $0x0, 0xc(%rsp)
movl 0x28(%rsp), %esi
movl 0x24(%rsp), %edx
movl 0x20(%rsp), %ecx
movq 0x30(%rbx,%rbp,8), %r9
leaq 0x33774(%rip), %rax     # 0x384d0
leaq 0x38992(%rip), %r10     # 0x3d6f5
cmoveq %rax, %r10
leaq 0x33679(%rip), %rdi     # 0x383e7
movsd 0x10(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x38(%rsp), %xmm3
movsd 0x80(%rsp), %xmm4
movsd 0x78(%rsp), %xmm5
movb $0x6, %al
pushq %r10
pushq %r14
callq 0x2040
addq $0x10, %rsp
movl 0x9c(%rsp), %esi
xorps %xmm0, %xmm0
cvtsi2sd %esi, %xmm0
movl 0x24(%rsp), %eax
imull 0x28(%rsp), %eax
imull 0x20(%rsp), %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movl 0x98(%rsp), %edx
movsd 0x18(%rsp), %xmm2
subsd 0x10(%rsp), %xmm2
movsd 0x38(%rsp), %xmm1
subsd 0x88(%rsp), %xmm1
mulsd %xmm2, %xmm1
movapd %xmm1, %xmm2
movsd 0x78(%rsp), %xmm1
subsd 0x80(%rsp), %xmm1
mulsd %xmm2, %xmm1
movsd 0xe8(%rsp), %xmm2
leaq 0x336c0(%rip), %rdi     # 0x384db
movb $0x3, %al
callq 0x2040
movq 0xb0(%rsp), %rdi
callq 0x2110
testq %r15, %r15
je 0x4e3c
movq %r15, %rdi
callq 0x2110
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x4e4e
callq 0x2110
testq %r13, %r13
je 0x4e5b
movq %r13, %rdi
callq 0x2110
xorl %ebx, %ebx
leaq 0x48(%rsp), %rdi
callq 0x13c5a
movl %ebx, %eax
addq $0x388, %rsp            # imm = 0x388
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x33311(%rip), %rdi     # 0x38193
jmp 0x4e94
leaq 0x33343(%rip), %rdi     # 0x381ce
jmp 0x4e94
leaq 0x33375(%rip), %rdi     # 0x38209
movq 0x40145(%rip), %rax     # 0x44fe0
movq (%rax), %rsi
callq 0x2140
movl $0x4, %ebx
leaq 0x48(%rsp), %rdi
callq 0x15772
jmp 0x4e5d
movq 0x40125(%rip), %rax     # 0x44fe0
movq (%rax), %rsi
leaq 0x334d0(%rip), %rdi     # 0x38395
callq 0x2140
movl $0x4, %ebx
leaq 0x48(%rsp), %rdi
callq 0x15772
jmp 0x4e5d
callq 0x232e
movl $0x4, %ebx
jmp 0x4e5d
movq 0x400ef(%rip), %rax     # 0x44fe0
movq (%rax), %rdi
leaq 0x333fd(%rip), %rsi     # 0x382f8
movl $0x1000000, %edx        # imm = 0x1000000
xorl %eax, %eax
callq 0x21b0
movl $0x2, %ebx
leaq 0x48(%rsp), %rdi
callq 0x15772
jmp 0x4e5d
leaq 0x330c8(%rip), %rdi     # 0x37fea
jmp 0x4779
callq 0x22b2
movl $0x4, %ebx
leaq 0x48(%rsp), %rdi
callq 0x15772
jmp 0x4e5d
leaq 0x3321c(%rip), %rdi     # 0x38163
jmp 0x4f6b
leaq 0x330c3(%rip), %rdi     # 0x38013
jmp 0x4f6b
leaq 0x33153(%rip), %rdi     # 0x380ac
jmp 0x4f6b
leaq 0x33119(%rip), %rdi     # 0x3807b
jmp 0x4f6b
leaq 0x33177(%rip), %rdi     # 0x380e2
movq 0x4006e(%rip), %rax     # 0x44fe0
movq (%rax), %rsi
callq 0x2140
movl $0x4, %ebx
leaq 0x48(%rsp), %rdi
callq 0x15772
jmp 0x4e5d
leaq 0x48(%rsp), %rdi
callq 0x15772
callq 0x2296
jmp 0x4ee0
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
jmp 0x4fb8
movq %rax, %rbx
movl $0x80, %esi
movq %r15, %rdi
callq 0x2130
jmp 0x50a4
jmp 0x50a1
jmp 0x5003
jmp 0x5032
jmp 0x5066
jmp 0x5078
movq %rax, %rbx
jmp 0x502d
movq %rax, %rbx
jmp 0x505c
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x6b94
leaq 0x180(%rsp), %rdi
callq 0x13c68
movq 0xf8(%rsp), %r15
testq %r15, %r15
je 0x50a4
movq %r15, %rdi
jmp 0x505f
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x6b6a
leaq 0x180(%rsp), %rdi
callq 0x13c68
movq 0xf8(%rsp), %r12
testq %r12, %r12
je 0x50a4
movq %r12, %rdi
callq 0x2180
jmp 0x50a4
movq %rax, %rbx
leaq 0x258(%rsp), %rdi
callq 0x6b94
jmp 0x5088
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x6b6a
leaq 0x180(%rsp), %rdi
callq 0x13c68
jmp 0x50a4
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
jmp 0x50a1
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x13c5a
movq %rbx, %rdi
callq 0x2230