// File: /workspace/github_cpp_makefile_star2_O1/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 $0x378, %rsp            # imm = 0x378
movq %rsi, %rbx
movl %edi, %r12d
leaq 0x28(%rsp), %rdi
callq 0x13944
cmpl $0x2, %r12d
jne 0x3413
movq 0x8(%rbx), %rbx
leaq 0x34ca4(%rip), %rsi     # 0x38056
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
je 0x40ca
leaq 0x34c90(%rip), %rsi     # 0x38059
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
je 0x40ca
leaq 0x34c80(%rip), %rsi     # 0x38060
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
je 0x43c4
leaq 0x34c6d(%rip), %rsi     # 0x38064
movq %rbx, %rdi
callq 0x21a0
testl %eax, %eax
jne 0x4ef6
leaq 0x34bcc(%rip), %rdi     # 0x37fda
jmp 0x40d1
cmpl $0x7, %r12d
jl 0x48db
cmpl $0x9, %r12d
jl 0x40f6
leal -0x7(%r12), %eax
movl %eax, 0x68(%rsp)
leal -0xe(%r12), %eax
movl %eax, 0xc0(%rsp)
leal -0xb(%r12), %eax
movl %eax, 0x48(%rsp)
leal -0xd(%r12), %eax
movl %eax, 0x58(%rsp)
leal -0xa(%r12), %eax
movl %eax, 0x60(%rsp)
addl $-0x8, %r12d
xorpd %xmm0, %xmm0
movsd %xmm0, 0xb0(%rsp)
movl $0x8, %eax
movq %rax, 0xf8(%rsp)
movl $0xfffffff9, %eax       # imm = 0xFFFFFFF9
movq %rax, 0x8(%rsp)
movl $0x1, %r13d
leaq 0x42834(%rip), %rax     # 0x45cc0
addq $0x10, %rax
movq %rax, 0x20(%rsp)
leaq 0x427d4(%rip), %rax     # 0x45c70
addq $0x10, %rax
movq %rax, 0xb8(%rsp)
leaq 0x42861(%rip), %rax     # 0x45d10
addq $0x10, %rax
movq %rax, 0x168(%rsp)
leaq 0x4289e(%rip), %rax     # 0x45d60
addq $0x10, %rax
movq %rax, 0x160(%rsp)
movl $0x0, 0x7c(%rsp)
xorl %ebp, %ebp
movq $0x0, 0x50(%rsp)
movq $0x0, 0x70(%rsp)
movq $0x0, 0x138(%rsp)
movq $0x0, 0xf0(%rsp)
movq $0x0, 0xa8(%rsp)
movq $0x0, 0xa0(%rsp)
movq $0x0, 0x98(%rsp)
movq $0x0, 0x140(%rsp)
movq $0x0, 0xc8(%rsp)
movslq %r13d, %r15
movq (%rbx,%r15,8), %r14
movq %r14, %rdi
leaq 0x34b1f(%rip), %rsi     # 0x3806e
callq 0x21a0
testl %eax, %eax
je 0x377c
movq %r14, %rdi
leaq 0x34b3c(%rip), %rsi     # 0x380a2
callq 0x21a0
testl %eax, %eax
je 0x379d
movq %r14, %rdi
leaq 0x34ad9(%rip), %rsi     # 0x38056
callq 0x21a0
testl %eax, %eax
je 0x43b8
movq %r14, %rdi
leaq 0x34ac5(%rip), %rsi     # 0x38059
callq 0x21a0
testl %eax, %eax
je 0x43b8
movq %r14, %rdi
leaq 0x34ab5(%rip), %rsi     # 0x38060
callq 0x21a0
testl %eax, %eax
je 0x48be
movq %r14, %rdi
leaq 0x34ae3(%rip), %rsi     # 0x380a5
callq 0x21a0
testl %eax, %eax
je 0x37a9
movq %r14, %rdi
leaq 0x34b05(%rip), %rsi     # 0x380de
callq 0x21a0
testl %eax, %eax
je 0x37da
movq %r14, %rdi
leaq 0x34af1(%rip), %rsi     # 0x380e1
callq 0x21a0
testl %eax, %eax
je 0x37f4
movq %r14, %rdi
leaq 0x34b36(%rip), %rsi     # 0x3813d
callq 0x21a0
testl %eax, %eax
je 0x385a
movq %r14, %rdi
leaq 0x34b22(%rip), %rsi     # 0x38140
callq 0x21a0
testl %eax, %eax
je 0x3866
movq %r14, %rdi
leaq 0x34b0e(%rip), %rsi     # 0x38143
callq 0x21a0
testl %eax, %eax
je 0x387a
movq %r14, %rdi
leaq 0x34afb(%rip), %rsi     # 0x38147
callq 0x21a0
testl %eax, %eax
je 0x3897
movq %r14, %rdi
leaq 0x34ae8(%rip), %rsi     # 0x3814b
callq 0x21a0
testl %eax, %eax
je 0x38a3
movq %r14, %rdi
leaq 0x34ad5(%rip), %rsi     # 0x3814f
callq 0x21a0
testl %eax, %eax
je 0x38af
movq %r14, %rdi
leaq 0x34ac1(%rip), %rsi     # 0x38152
callq 0x21a0
testl %eax, %eax
je 0x38bb
movq %r14, %rdi
leaq 0x349bc(%rip), %rsi     # 0x38064
callq 0x21a0
testl %eax, %eax
je 0x4f4f
movq %r14, %rdi
leaq 0x34a96(%rip), %rsi     # 0x38155
callq 0x21a0
testl %eax, %eax
je 0x38c7
movq %r14, %rdi
leaq 0x34a83(%rip), %rsi     # 0x38159
callq 0x21a0
testl %eax, %eax
je 0x3c03
movq %r14, %rdi
leaq 0x34a70(%rip), %rsi     # 0x3815d
callq 0x21a0
testl %eax, %eax
je 0x3cd6
movq %r14, %rdi
leaq 0x34a5d(%rip), %rsi     # 0x38161
callq 0x21a0
testl %eax, %eax
je 0x3da6
movq %r14, %rdi
leaq 0x34a4a(%rip), %rsi     # 0x38165
callq 0x21a0
testl %eax, %eax
je 0x3f08
movq %r14, %rdi
leaq 0x34a37(%rip), %rsi     # 0x38169
callq 0x21a0
testl %eax, %eax
je 0x40b4
movq %r14, %rdi
leaq 0x34a23(%rip), %rsi     # 0x3816c
callq 0x21a0
testl %eax, %eax
je 0x40be
movq %r14, %rdi
leaq 0x34a10(%rip), %rsi     # 0x38170
callq 0x21a0
movb $0x1, %cl
movq %rcx, 0x138(%rsp)
testl %eax, %eax
je 0x3884
jmp 0x4f5b
cmpl %r12d, %r13d
jge 0x4f1f
cmpl $0x0, 0x7c(%rsp)
jne 0x4f2b
incl %r13d
movl %r13d, 0x7c(%rsp)
jmp 0x3884
movb $0x1, %al
movq %rax, 0x50(%rsp)
jmp 0x3884
cmpl %r12d, %r13d
jge 0x4f1f
testl %ebp, %ebp
jne 0x4f37
incl %r13d
movq 0x8(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xb0(%rsp)
movl $0x1, %ebp
jmp 0x3884
incl %r13d
movq 0x8(%rbx,%r15,8), %rdi
callq 0x21e0
movq %rax, 0xf8(%rsp)
jmp 0x3884
cmpl 0x60(%rsp), %r13d
jge 0x4f1f
testl %ebp, %ebp
jne 0x4f37
movq 0x8(%rbx,%r15,8), %rdi
callq 0x21e0
movl %eax, %ebp
movl %eax, 0x1c(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x21e0
movl %eax, %r14d
movl %eax, 0x18(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x21e0
movl %eax, 0x14(%rsp)
testl %ebp, %ebp
jle 0x4f43
testl %r14d, %r14d
jle 0x4f43
testl %eax, %eax
jle 0x4f43
addl $0x3, %r13d
movl $0x2, %ebp
jmp 0x3884
movb $0x1, %al
movq %rax, 0x140(%rsp)
jmp 0x3884
movb $0x1, %al
movq %rax, 0x98(%rsp)
movb $0x1, %al
movq %rax, 0xa0(%rsp)
movb $0x1, %al
movq %rax, 0xa8(%rsp)
incl %r13d
cmpl 0x68(%rsp), %r13d
jl 0x353e
jmp 0x417c
movb $0x1, %al
movq %rax, 0xa0(%rsp)
jmp 0x3884
movb $0x1, %al
movq %rax, 0x98(%rsp)
jmp 0x3884
movb $0x1, %al
movq %rax, 0xf0(%rsp)
jmp 0x3884
movb $0x1, %al
movq %rax, 0xc8(%rsp)
jmp 0x3884
cmpl 0x58(%rsp), %r13d
jge 0x4f1f
movq 0x8(%rbx,%r15,8), %rdi
callq 0x2170
movapd %xmm0, 0xd0(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x90(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x2170
movapd %xmm0, 0x120(%rsp)
movq 0x20(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x88(%rsp)
movq 0x28(%rbx,%r15,8), %rdi
callq 0x2170
movapd %xmm0, 0x150(%rsp)
movq 0x30(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xe8(%rsp)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movapd 0xd0(%rsp), %xmm1
xorpd 0x336ce(%rip), %xmm1    # 0x37030
movq 0x20(%rsp), %rax
movq %rax, (%r14)
movq 0x8(%rsp), %rax
movl %eax, 0x8(%r14)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, 0x10(%r14)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x18(%r14)
movlpd %xmm1, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x39a7
leaq 0x28(%rsp), %rdi
callq 0x155a8
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0x8(%rsp), %rax
decl %eax
movq 0x20(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x10(%r14)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x18(%r14)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3a15
leaq 0x28(%rsp), %rdi
callq 0x155a8
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0x8(%rsp), %rax
addl $-0x2, %eax
movapd 0x120(%rsp), %xmm0
xorpd 0x335e4(%rip), %xmm0    # 0x37030
movq 0x20(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
xorl %eax, %eax
movq %rax, 0x10(%r14)
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
movq %rcx, 0x18(%r14)
movq %rax, 0x20(%r14)
movlpd %xmm0, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3a8c
leaq 0x28(%rsp), %rdi
callq 0x155a8
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0x8(%rsp), %rax
addl $-0x3, %eax
movq 0x20(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
xorl %eax, %eax
movq %rax, 0x10(%r14)
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, 0x18(%r14)
movq %rax, 0x20(%r14)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3afb
leaq 0x28(%rsp), %rdi
callq 0x155a8
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0x8(%rsp), %rax
addl $-0x4, %eax
movapd 0x150(%rsp), %xmm1
xorpd 0x334fe(%rip), %xmm1    # 0x37030
movq 0x20(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%r14)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, 0x20(%r14)
movlpd %xmm1, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3b72
leaq 0x28(%rsp), %rdi
callq 0x155a8
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0x8(%rsp), %rax
addl $-0x5, %eax
movq 0x20(%rsp), %rcx
movq %rcx, (%r14)
movl %eax, 0x8(%r14)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%r14)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x20(%r14)
movsd 0xe8(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3be1
leaq 0x28(%rsp), %rdi
callq 0x155a8
addl $0x6, %r13d
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movq 0x8(%rsp), %rax
addl $-0x6, %eax
jmp 0x40aa
cmpl 0x48(%rsp), %r13d
jge 0x4f1f
movq 0x8(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x90(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x120(%rsp)
movq 0x20(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x88(%rsp)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0xb8(%rsp), %rax
movq %rax, (%r14)
movq 0x8(%rsp), %rax
movl %eax, 0x8(%r14)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3d9d
leaq 0x28(%rsp), %rdi
callq 0x155a8
jmp 0x3d9d
cmpl 0x48(%rsp), %r13d
jge 0x4f1f
movq 0x8(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x90(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x120(%rsp)
movq 0x20(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x88(%rsp)
movl $0x30, %edi
callq 0x2120
movq %rax, %r14
movq 0x20(%rsp), %rax
movq %rax, (%r14)
movq 0x8(%rsp), %rax
movl %eax, 0x8(%r14)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x3d9d
leaq 0x28(%rsp), %rdi
callq 0x155a8
addl $0x4, %r13d
jmp 0x4092
cmpl 0xc0(%rsp), %r13d
jge 0x4f1f
movq 0x8(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x120(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x88(%rsp)
movq 0x20(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x90(%rsp)
movq 0x28(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x150(%rsp)
movq 0x30(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xe8(%rsp)
movq 0x38(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x148(%rsp)
movl $0x50, %edi
callq 0x2120
movq %rax, %r14
movq 0x168(%rsp), %rax
movq %rax, (%r14)
movq 0x8(%rsp), %rax
movl %eax, 0x8(%r14)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movsd 0x150(%rsp), %xmm1
movsd %xmm1, 0x30(%r14)
movsd 0xe8(%rsp), %xmm2
movsd %xmm2, 0x38(%r14)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
movsd 0x33138(%rip), %xmm0    # 0x37008
divsd %xmm2, %xmm0
movsd %xmm0, 0x40(%r14)
movsd 0x148(%rsp), %xmm0
movsd %xmm0, 0x48(%r14)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x408e
leaq 0x28(%rsp), %rdi
callq 0x155a8
jmp 0x408e
cmpl 0xc0(%rsp), %r13d
jge 0x4f1f
movq 0x8(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x90(%rsp)
movq 0x10(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x88(%rsp)
movq 0x18(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x150(%rsp)
movq 0x20(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x120(%rsp)
movq 0x28(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xe8(%rsp)
movq 0x30(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0x148(%rsp)
movq 0x38(%rbx,%r15,8), %rdi
callq 0x2170
movsd %xmm0, 0xd0(%rsp)
movl $0x60, %edi
callq 0x2120
movq %rax, %r14
movq 0x160(%rsp), %rax
movq %rax, (%r14)
movq 0x8(%rsp), %rax
movl %eax, 0x8(%r14)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x10(%r14)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x18(%r14)
movsd 0x150(%rsp), %xmm0
movsd %xmm0, 0x20(%r14)
movsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x28(%r14)
movsd 0xe8(%rsp), %xmm1
movsd %xmm1, 0x30(%r14)
movsd 0x148(%rsp), %xmm2
movsd %xmm2, 0x38(%r14)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
mulsd %xmm2, %xmm2
addsd %xmm0, %xmm2
movsd 0x32fd6(%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 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jne 0x408e
leaq 0x28(%rsp), %rdi
callq 0x155a8
addl $0x7, %r13d
movq 0x30(%rsp), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x30(%rsp)
movq %r14, (%rax)
movq 0x8(%rsp), %rax
decl %eax
movq %rax, 0x8(%rsp)
jmp 0x3884
movb $0x1, %al
movq %rax, 0x138(%rsp)
movb $0x1, %al
movq %rax, 0x70(%rsp)
jmp 0x3884
leaq 0x32f7f(%rip), %rdi     # 0x37050
callq 0x21d0
xorl %ebp, %ebp
leaq 0x28(%rsp), %rdi
callq 0x1396c
movl %ebp, %eax
addq $0x378, %rsp            # imm = 0x378
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x1, %r14d
movl $0x8, %r15d
xorpd %xmm0, %xmm0
movsd %xmm0, 0xb0(%rsp)
movq $0x0, 0xc8(%rsp)
movq $0x0, 0x140(%rsp)
movq $0x0, 0x98(%rsp)
movq $0x0, 0xa0(%rsp)
movq $0x0, 0xa8(%rsp)
movq $0x0, 0xf0(%rsp)
movq $0x0, 0x138(%rsp)
movq $0x0, 0x70(%rsp)
movq $0x0, 0x50(%rsp)
xorl %ebp, %ebp
xorl %r13d, %r13d
jmp 0x418c
movslq %r13d, %r14
movl 0x7c(%rsp), %r13d
movq 0xf8(%rsp), %r15
testl %r15d, %r15d
jle 0x48ea
movq (%rbx,%r14,8), %rdi
callq 0x2170
movsd %xmm0, 0x68(%rsp)
movq 0x8(%rbx,%r14,8), %rdi
callq 0x2170
movsd %xmm0, 0x60(%rsp)
movq 0x10(%rbx,%r14,8), %rdi
callq 0x2170
movsd %xmm0, 0x8(%rsp)
movq 0x18(%rbx,%r14,8), %rdi
callq 0x2170
movsd %xmm0, 0x20(%rsp)
movq 0x20(%rbx,%r14,8), %rdi
callq 0x2170
movsd %xmm0, 0x58(%rsp)
movq 0x28(%rbx,%r14,8), %rdi
callq 0x2170
movsd %xmm0, 0x48(%rsp)
movsd 0x68(%rsp), %xmm0
ucomisd 0x60(%rsp), %xmm0
ja 0x4914
movsd 0x8(%rsp), %xmm0
ucomisd 0x20(%rsp), %xmm0
ja 0x491d
movsd 0x58(%rsp), %xmm0
ucomisd 0x48(%rsp), %xmm0
ja 0x4926
testl %ebp, %ebp
movq %r15, 0xf8(%rsp)
je 0x42cb
cmpl $0x1, %ebp
jne 0x4365
movsd 0x32dc5(%rip), %xmm1    # 0x37010
movsd 0xb0(%rsp), %xmm0
ucomisd %xmm0, %xmm1
ja 0x4f00
movsd 0x32db2(%rip), %xmm3    # 0x37018
divsd %xmm0, %xmm3
movsd 0x60(%rsp), %xmm0
subsd 0x68(%rsp), %xmm0
mulsd %xmm3, %xmm0
movsd 0x32d86(%rip), %xmm4    # 0x37008
addsd %xmm4, %xmm0
movsd 0x20(%rsp), %xmm1
subsd 0x8(%rsp), %xmm1
mulsd %xmm3, %xmm1
addsd %xmm4, %xmm1
movsd 0x48(%rsp), %xmm2
subsd 0x58(%rsp), %xmm2
mulsd %xmm3, %xmm2
cvttsd2si %xmm0, %eax
addsd %xmm4, %xmm2
movl %eax, 0x1c(%rsp)
cvttsd2si %xmm1, %eax
movl %eax, 0x18(%rsp)
cvttsd2si %xmm2, %eax
movl %eax, 0x14(%rsp)
jmp 0x437a
movl %ebp, %r12d
testb $0x1, 0xf0(%rsp)
je 0x43d0
movl $0x80, %edi
callq 0x2120
movq %rax, %r15
movzbl 0xa8(%rsp), %esi
andl $0x1, %esi
movzbl 0xa0(%rsp), %edx
andl $0x1, %edx
movzbl 0x98(%rsp), %ecx
andl $0x1, %ecx
movq %rax, %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
movl $0x4, %r8d
callq 0x2fbe0
movq 0x30(%rbx,%r14,8), %rsi
movq %r15, %rdi
callq 0x5080
leaq 0x1c(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x14(%rsp), %rcx
movq %r15, %rdi
callq 0x2fd1a
movl %r13d, %ebp
jmp 0x43a7
xorps %xmm0, %xmm0
cvtsi2sdl 0x1c(%rsp), %xmm0
cvtsi2sdl 0x18(%rsp), %xmm1
cvtsi2sdl 0x14(%rsp), %xmm2
movl %ebp, %r12d
mulsd %xmm1, %xmm0
mulsd %xmm2, %xmm0
ucomisd 0x32c93(%rip), %xmm0    # 0x37020
ja 0x4ec2
xorl %ebp, %ebp
movb $0x1, %r15b
testb %r15b, %r15b
je 0x40d8
movl %r13d, %ebp
xorl %r15d, %r15d
movq $0x0, 0xb8(%rsp)
jmp 0x4462
leaq 0x32c91(%rip), %rdi     # 0x37050
jmp 0x48c5
leaq 0x334ba(%rip), %rdi     # 0x37885
jmp 0x40d1
movl $0x80, %edi
callq 0x2120
movq %rax, %r15
movzbl 0xa8(%rsp), %esi
andl $0x1, %esi
movzbl 0xa0(%rsp), %edx
andl $0x1, %edx
movzbl 0x98(%rsp), %ecx
andl $0x1, %ecx
movq %rax, %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
movl $0x3, %r8d
callq 0x2fbe0
movq 0x30(%rbx,%r14,8), %rsi
movq %r15, %rdi
callq 0x50b6
leaq 0x1c(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x14(%rsp), %rcx
movq %r15, %rdi
callq 0x2fd1a
movq %r15, 0xb8(%rsp)
movl %r13d, %ebp
xorl %r15d, %r15d
movq 0x30(%rbx,%r14,8), %r13
movq %r13, %rdi
callq 0x20a0
cmpl $0x1001, %eax           # imm = 0x1001
jge 0x4e98
movq %r15, 0xc0(%rsp)
addl $0x7, %eax
movslq %eax, %rdi
callq 0x2030
movq %rax, %r15
leaq 0x33f2a(%rip), %rsi     # 0x383c1
movq %rax, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x2050
leaq 0x33f1d(%rip), %rsi     # 0x383c8
movq %r15, %rdi
callq 0x1324d
movq %rax, 0xb0(%rsp)
testb $0x1, 0x50(%rsp)
je 0x44ee
movq 0x30(%rbx,%r14,8), %rdx
leaq 0x33efc(%rip), %rsi     # 0x383ca
movq %r15, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x33ee9(%rip), %rsi     # 0x383c8
movq %r15, %rdi
callq 0x1324d
movq %rax, 0x50(%rsp)
jmp 0x44f7
movq $0x0, 0x50(%rsp)
testb $0x1, 0x70(%rsp)
je 0x452a
movq 0x30(%rbx,%r14,8), %rdx
leaq 0x33ec7(%rip), %rsi     # 0x383d1
movq %r15, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x33ead(%rip), %rsi     # 0x383c8
movq %r15, %rdi
callq 0x1324d
movq %rax, 0x70(%rsp)
jmp 0x4533
movq $0x0, 0x70(%rsp)
testb $0x1, 0x138(%rsp)
je 0x4567
movq 0x30(%rbx,%r14,8), %rdx
leaq 0x33e91(%rip), %rsi     # 0x383da
movq %r15, %rdi
xorl %eax, %eax
callq 0x2050
leaq 0x33e6e(%rip), %rsi     # 0x383c8
movq %r15, %rdi
callq 0x1324d
movq %rax, %r13
jmp 0x456a
xorl %r13d, %r13d
movq %r15, %rdi
callq 0x2180
testl %ebp, %ebp
movl %ebp, 0x7c(%rsp)
je 0x458b
movslq %ebp, %rax
movq (%rbx,%rax,8), %r15
movq 0xf0(%rsp), %rcx
jmp 0x45a8
leaq 0x33e51(%rip), %rax     # 0x383e3
leaq 0x33e56(%rip), %r15     # 0x383ef
movq 0xf0(%rsp), %rcx
testb $0x1, %cl
cmovneq %rax, %r15
movq $0x0, 0x100(%rsp)
xorl %eax, %eax
movl %eax, 0x84(%rsp)
movl %eax, 0x80(%rsp)
testb $0x1, %cl
movl %r12d, %ebp
je 0x46ad
testb $0x1, 0x140(%rsp)
movq 0xf8(%rsp), %r12
je 0x478a
movl $0x8000, %edi           # imm = 0x8000
callq 0x2030
movq %rax, 0x108(%rsp)
movq %rax, 0x110(%rsp)
movl $0x1000, 0x118(%rsp) # imm = 0x1000
movl 0x1c(%rsp), %esi
movl 0x18(%rsp), %edx
movl 0x14(%rsp), %ecx
movzbl 0x98(%rsp), %eax
andl $0x1, %eax
movzbl 0xa8(%rsp), %r8d
andl $0x1, %r8d
movzbl 0xa0(%rsp), %r9d
andl $0x1, %r9d
leaq 0x170(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
pushq %r12
pushq %rax
callq 0x13ade
addq $0x10, %rsp
leaq 0x1c0(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x15526
testl %ebp, %ebp
je 0x4b15
movq 0x30(%rbx,%r14,8), %rdx
leaq 0x170(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x50ec
jmp 0x4b4f
testb $0x1, 0x140(%rsp)
movq 0xf8(%rsp), %r12
je 0x4824
movl $0x8000, %edi           # imm = 0x8000
callq 0x2030
movq %rax, 0x108(%rsp)
movq %rax, 0x110(%rsp)
movl $0x1000, 0x118(%rsp) # imm = 0x1000
movl 0x1c(%rsp), %esi
movl 0x18(%rsp), %edx
movl 0x14(%rsp), %ecx
movzbl 0x98(%rsp), %eax
andl $0x1, %eax
movzbl 0xa8(%rsp), %r8d
andl $0x1, %r8d
movzbl 0xa0(%rsp), %r9d
andl $0x1, %r9d
leaq 0x170(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
pushq %r12
pushq %rax
callq 0x13a40
addq $0x10, %rsp
leaq 0x1c0(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x15526
testl %ebp, %ebp
je 0x4c33
movq 0x30(%rbx,%r14,8), %rdx
leaq 0x170(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x5e24
jmp 0x4c6d
movl 0x1c(%rsp), %esi
movl 0x18(%rsp), %edx
movl 0x14(%rsp), %ecx
movzbl 0x98(%rsp), %eax
andl $0x1, %eax
movzbl 0xa8(%rsp), %r8d
andl $0x1, %r8d
movzbl 0xa0(%rsp), %r9d
andl $0x1, %r9d
leaq 0x170(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
pushq %r12
pushq %rax
callq 0x13ade
addq $0x10, %rsp
leaq 0x1c0(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x15526
testl %ebp, %ebp
je 0x4950
movq 0x30(%rbx,%r14,8), %rsi
leaq 0x170(%rsp), %rdi
callq 0x56f4
jmp 0x4982
movl 0x1c(%rsp), %esi
movl 0x18(%rsp), %edx
movl 0x14(%rsp), %ecx
movzbl 0x98(%rsp), %eax
andl $0x1, %eax
movzbl 0xa8(%rsp), %r8d
andl $0x1, %r8d
movzbl 0xa0(%rsp), %r9d
andl $0x1, %r9d
leaq 0x170(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
pushq %r12
pushq %rax
callq 0x13a40
addq $0x10, %rsp
leaq 0x1c0(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x15526
testl %ebp, %ebp
je 0x4a2c
movq 0x30(%rbx,%r14,8), %rsi
leaq 0x170(%rsp), %rdi
callq 0x642c
jmp 0x4a5e
leaq 0x32fc0(%rip), %rdi     # 0x37885
callq 0x21d0
xorl %ebp, %ebp
leaq 0x28(%rsp), %rdi
callq 0x15578
jmp 0x40d8
callq 0x2312
movl $0x4, %ebp
jmp 0x40d8
leaq 0x33883(%rip), %rdi     # 0x38174
movq 0x416e8(%rip), %rax     # 0x45fe0
movq (%rax), %rsi
callq 0x2140
movl $0x4, %ebp
leaq 0x28(%rsp), %rdi
callq 0x15578
jmp 0x40d8
leaq 0x33889(%rip), %rdi     # 0x381a4
jmp 0x492d
leaq 0x338bb(%rip), %rdi     # 0x381df
jmp 0x492d
leaq 0x338ed(%rip), %rdi     # 0x3821a
movq 0x416ac(%rip), %rax     # 0x45fe0
movq (%rax), %rsi
callq 0x2140
movl $0x4, %ebp
leaq 0x28(%rsp), %rdi
callq 0x15578
jmp 0x40d8
leaq 0x170(%rsp), %rsi
movq 0xc0(%rsp), %rdi
callq 0x300f2
movq 0xc0(%rsp), %r12
movq %r12, %rdi
callq 0x2fc9e
movl $0x80, %esi
movq %r12, %rdi
callq 0x2130
leaq 0x170(%rsp), %rsi
movl (%rsi), %eax
leaq 0x310(%rsp), %rdi
movl %eax, (%rdi)
movupd 0x4(%rsi), %xmm0
movupd %xmm0, 0x4(%rdi)
movl 0xd0(%rsi), %eax
movl %eax, 0x14(%rdi)
movq 0xb8(%rsi), %rax
movq %rax, 0x18(%rdi)
movq 0xb0(%rsi), %rax
movq %rax, 0x20(%rdi)
movq 0xc0(%rsi), %rax
movq %rax, 0x28(%rdi)
subq $0x8, %rsp
leaq 0x8c(%rsp), %rax
leaq 0x88(%rsp), %r10
leaq 0x108(%rsp), %r11
movzbl 0xd0(%rsp), %r12d
andl $0x1, %r12d
movq %r15, %rdx
movq 0xb8(%rsp), %rcx
movq 0x58(%rsp), %r8
movq 0x78(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r12
pushq %r13
callq 0x572a
addq $0x30, %rsp
leaq 0x270(%rsp), %rdi
callq 0x6b5c
jmp 0x4b03
leaq 0x170(%rsp), %rsi
movq 0xb8(%rsp), %rdi
callq 0x3003a
movq 0xb8(%rsp), %r12
movq %r12, %rdi
callq 0x2fc9e
movl $0x80, %esi
movq %r12, %rdi
callq 0x2130
leaq 0x170(%rsp), %rsi
movl (%rsi), %eax
leaq 0x310(%rsp), %rdi
movl %eax, (%rdi)
movupd 0x4(%rsi), %xmm0
movupd %xmm0, 0x4(%rdi)
movl 0xd0(%rsi), %eax
movl %eax, 0x14(%rdi)
movq 0xb8(%rsi), %rax
movq %rax, 0x18(%rdi)
movq 0xb0(%rsi), %rax
movq %rax, 0x20(%rdi)
movq 0xc0(%rsi), %rax
movq %rax, 0x28(%rdi)
subq $0x8, %rsp
leaq 0x8c(%rsp), %rax
leaq 0x88(%rsp), %r10
leaq 0x108(%rsp), %r11
movzbl 0xd0(%rsp), %r12d
andl $0x1, %r12d
movq %r15, %rdx
movq 0xb8(%rsp), %rcx
movq 0x58(%rsp), %r8
movq 0x78(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r12
pushq %r13
callq 0x6462
addq $0x30, %rsp
leaq 0x248(%rsp), %rdi
callq 0x6b86
leaq 0x170(%rsp), %rdi
callq 0x1397a
jmp 0x4d4d
leaq 0x108(%rsp), %rsi
leaq 0x170(%rsp), %rdx
movq 0xc0(%rsp), %rdi
callq 0x3028c
movq 0xc0(%rsp), %r12
movq %r12, %rdi
callq 0x2fc9e
movl $0x80, %esi
movq %r12, %rdi
callq 0x2130
leaq 0x170(%rsp), %rsi
movl (%rsi), %eax
leaq 0x310(%rsp), %rdi
movl %eax, (%rdi)
movq 0x4(%rsi), %rcx
movq %rcx, 0x4(%rdi)
movl 0xc(%rsi), %ecx
movl %ecx, 0xc(%rdi)
movl 0x10(%rsi), %edx
movl %edx, 0x10(%rdi)
movl 0xd0(%rsi), %edx
movl %edx, 0x14(%rdi)
movq 0xb8(%rsi), %rdx
movq %rdx, 0x18(%rdi)
movq 0xb0(%rsi), %rdx
movq %rdx, 0x20(%rdi)
movq 0xc0(%rsi), %rdx
movq %rdx, 0x28(%rdi)
leaq 0x108(%rsp), %rdx
movq %rdx, 0x48(%rdi)
movl %eax, 0x60(%rdi)
movl %ecx, 0x64(%rdi)
subq $0x8, %rsp
leaq 0x8c(%rsp), %rax
leaq 0x88(%rsp), %r10
leaq 0x108(%rsp), %r11
movzbl 0xd0(%rsp), %r12d
andl $0x1, %r12d
movq %r15, %rdx
movq 0xb8(%rsp), %rcx
movq 0x58(%rsp), %r8
movq 0x78(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r12
pushq %r13
callq 0x5124
addq $0x30, %rsp
leaq 0x270(%rsp), %rdi
callq 0x6b5c
leaq 0x170(%rsp), %rdi
callq 0x1397a
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x4d4d
jmp 0x4d48
leaq 0x108(%rsp), %rsi
leaq 0x170(%rsp), %rdx
movq 0xb8(%rsp), %rdi
callq 0x301b8
movq 0xb8(%rsp), %r12
movq %r12, %rdi
callq 0x2fc9e
movl $0x80, %esi
movq %r12, %rdi
callq 0x2130
leaq 0x170(%rsp), %rsi
movl (%rsi), %eax
leaq 0x310(%rsp), %rdi
movl %eax, (%rdi)
movq 0x4(%rsi), %rcx
movq %rcx, 0x4(%rdi)
movl 0xc(%rsi), %ecx
movl %ecx, 0xc(%rdi)
movl 0x10(%rsi), %edx
movl %edx, 0x10(%rdi)
movl 0xd0(%rsi), %edx
movl %edx, 0x14(%rdi)
movq 0xb8(%rsi), %rdx
movq %rdx, 0x18(%rdi)
movq 0xb0(%rsi), %rdx
movq %rdx, 0x20(%rdi)
movq 0xc0(%rsi), %rdx
movq %rdx, 0x28(%rdi)
leaq 0x108(%rsp), %rdx
movq %rdx, 0x48(%rdi)
movl %eax, 0x60(%rdi)
movl %ecx, 0x64(%rdi)
subq $0x8, %rsp
leaq 0x8c(%rsp), %rax
leaq 0x88(%rsp), %r10
leaq 0x108(%rsp), %r11
movzbl 0xd0(%rsp), %r12d
andl $0x1, %r12d
movq %r15, %rdx
movq 0xb8(%rsp), %rcx
movq 0x58(%rsp), %r8
movq 0x78(%rsp), %r9
pushq %rax
pushq %r10
pushq %r11
pushq %r12
pushq %r13
callq 0x5e5c
addq $0x30, %rsp
leaq 0x248(%rsp), %rdi
callq 0x6b86
leaq 0x170(%rsp), %rdi
callq 0x1397a
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x4d4d
callq 0x2180
movq 0x50(%rsp), %r12
testb $0x1, 0xc8(%rsp)
je 0x4e59
cmpl $0x1, %ebp
leaq 0x33747(%rip), %rax     # 0x384b1
leaq 0x3375d(%rip), %rcx     # 0x384ce
cmoveq %rax, %rcx
testl %ebp, %ebp
leaq 0x3371f(%rip), %r8      # 0x3849d
cmovneq %rcx, %r8
cmpl $0x0, 0x7c(%rsp)
movl 0x1c(%rsp), %esi
movl 0x18(%rsp), %edx
movl 0x14(%rsp), %ecx
movq 0x30(%rbx,%r14,8), %r9
leaq 0x33742(%rip), %rax     # 0x384e1
leaq 0x388a7(%rip), %r10     # 0x3d64d
cmoveq %rax, %r10
leaq 0x33647(%rip), %rdi     # 0x383f8
movsd 0x68(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x20(%rsp), %xmm3
movsd 0x58(%rsp), %xmm4
movsd 0x48(%rsp), %xmm5
movb $0x6, %al
pushq %r10
pushq %r15
callq 0x2040
addq $0x10, %rsp
movl 0x84(%rsp), %esi
xorps %xmm0, %xmm0
cvtsi2sd %esi, %xmm0
movl 0x18(%rsp), %eax
imull 0x1c(%rsp), %eax
imull 0x14(%rsp), %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movl 0x80(%rsp), %edx
movsd 0x60(%rsp), %xmm2
subsd 0x68(%rsp), %xmm2
movsd 0x20(%rsp), %xmm1
subsd 0x8(%rsp), %xmm1
mulsd %xmm2, %xmm1
movapd %xmm1, %xmm2
movsd 0x48(%rsp), %xmm1
subsd 0x58(%rsp), %xmm1
mulsd %xmm2, %xmm1
movsd 0x100(%rsp), %xmm2
leaq 0x3369a(%rip), %rdi     # 0x384ec
movb $0x3, %al
callq 0x2040
movq 0xb0(%rsp), %rdi
callq 0x2110
testq %r12, %r12
je 0x4e73
movq %r12, %rdi
callq 0x2110
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x4e82
callq 0x2110
testq %r13, %r13
je 0x40d6
movq %r13, %rdi
callq 0x2110
jmp 0x40d6
movq 0x41141(%rip), %rax     # 0x45fe0
movq (%rax), %rsi
leaq 0x334fd(%rip), %rdi     # 0x383a6
callq 0x2140
movl $0x4, %ebp
leaq 0x28(%rsp), %rdi
callq 0x15578
jmp 0x40d8
movq 0x41117(%rip), %rax     # 0x45fe0
movq (%rax), %rdi
leaq 0x33436(%rip), %rsi     # 0x38309
xorl %r15d, %r15d
movl $0x1000000, %edx        # imm = 0x1000000
xorl %eax, %eax
callq 0x21b0
movl $0x2, %ebp
leaq 0x28(%rsp), %rdi
callq 0x15578
jmp 0x4398
callq 0x232e
jmp 0x48e0
movl %ebp, %r12d
callq 0x22b2
leaq 0x28(%rsp), %rdi
callq 0x15578
movl $0x4, %ebp
xorl %r15d, %r15d
jmp 0x4398
leaq 0x330dd(%rip), %rdi     # 0x38003
jmp 0x48f1
leaq 0x3313f(%rip), %rdi     # 0x38071
jmp 0x48f1
leaq 0x3316a(%rip), %rdi     # 0x380a8
jmp 0x48f1
leaq 0x3319a(%rip), %rdi     # 0x380e4
jmp 0x48f1
leaq 0x33084(%rip), %rdi     # 0x37fda
jmp 0x48c5
leaq 0x28(%rsp), %rdi
callq 0x15578
callq 0x2296
jmp 0x48e0
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x4fd5
jmp 0x5001
jmp 0x5032
jmp 0x5044
movq %rax, %rbx
jmp 0x4ff2
movq %rax, %rbx
jmp 0x501e
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x4fc0
movq %rax, %rbx
movl $0x80, %esi
movq %r15, %rdi
callq 0x2130
jmp 0x506e
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
callq 0x6b86
leaq 0x170(%rsp), %rdi
callq 0x1397a
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x506e
jmp 0x502b
movq %rax, %rbx
leaq 0x270(%rsp), %rdi
callq 0x6b5c
leaq 0x170(%rsp), %rdi
callq 0x1397a
movq 0x108(%rsp), %rdi
testq %rdi, %rdi
je 0x506e
callq 0x2180
jmp 0x506e
movq %rax, %rbx
leaq 0x248(%rsp), %rdi
callq 0x6b86
jmp 0x5054
movq %rax, %rbx
leaq 0x270(%rsp), %rdi
callq 0x6b5c
leaq 0x170(%rsp), %rdi
callq 0x1397a
jmp 0x506e
jmp 0x506b
jmp 0x506b
jmp 0x506b
jmp 0x506b
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1396c
movq %rbx, %rdi
callq 0x2230