// File: 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
movq %rsp, %rbp
subq $0xae0, %rsp            # imm = 0xAE0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x1, -0x14(%rbp)
movl $0xfffffff9, -0x18(%rbp) # imm = 0xFFFFFFF9
movl $0x0, -0x1c(%rbp)
movl $0x8, -0x2c(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movb $0x0, -0x3d(%rbp)
movb $0x0, -0x3e(%rbp)
movb $0x0, -0x3f(%rbp)
movb $0x0, -0x40(%rbp)
movb $0x0, -0x41(%rbp)
movb $0x0, -0x42(%rbp)
movb $0x0, -0x43(%rbp)
movb $0x0, -0x44(%rbp)
movb $0x0, -0x45(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x1c4c0
cmpl $0x2, -0x8(%rbp)
jne 0x2557
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x54bdc(%rip), %rsi     # 0x57056
callq 0x2190
cmpl $0x0, %eax
je 0x249d
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x54bc6(%rip), %rsi     # 0x57059
callq 0x2190
cmpl $0x0, %eax
jne 0x24ce
callq 0x2360
jmp 0x24a4
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x4735
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x54b83(%rip), %rsi     # 0x57060
callq 0x2190
cmpl $0x0, %eax
jne 0x2504
callq 0x2380
jmp 0x24ee
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x54b51(%rip), %rsi     # 0x57064
callq 0x2190
cmpl $0x0, %eax
jne 0x253a
callq 0x23a0
jmp 0x2524
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
callq 0x23c0
jmp 0x2541
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
cmpl $0x7, -0x8(%rbp)
jge 0x257a
callq 0x23c0
jmp 0x2564
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
jmp 0x257c
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x7, %ecx
cmpl %ecx, %eax
jge 0x35f0
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54ace(%rip), %rsi     # 0x5706e
callq 0x2190
cmpl $0x0, %eax
jne 0x2635
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x8, %ecx
cmpl %ecx, %eax
jl 0x25e3
callq 0x23c0
jmp 0x25c2
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x25cd
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
cmpl $0x0, -0x1c(%rbp)
jne 0x25f7
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x2630
movq 0x639e2(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x54a69(%rip), %rdi     # 0x57071
callq 0x2140
jmp 0x260f
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x261a
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
jmp 0x35e2
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54a5a(%rip), %rsi     # 0x570a2
callq 0x2190
cmpl $0x0, %eax
jne 0x265b
movb $0x1, -0x3d(%rbp)
jmp 0x35e0
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x549e8(%rip), %rsi     # 0x57056
callq 0x2190
cmpl $0x0, %eax
je 0x2695
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x549ce(%rip), %rsi     # 0x57059
callq 0x2190
cmpl $0x0, %eax
jne 0x26bd
callq 0x2360
jmp 0x269c
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x26a7
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54990(%rip), %rsi     # 0x57060
callq 0x2190
cmpl $0x0, %eax
jne 0x2702
callq 0x2380
jmp 0x26e1
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x26ec
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54990(%rip), %rsi     # 0x570a5
callq 0x2190
cmpl $0x0, %eax
jne 0x27c2
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0x8, %ecx
cmpl %ecx, %eax
jl 0x2758
callq 0x23c0
jmp 0x2737
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2742
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
cmpl $0x0, -0x3c(%rbp)
je 0x2797
movq 0x6387b(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x54939(%rip), %rdi     # 0x570a8
callq 0x2140
jmp 0x2776
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2781
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl $0x1, -0x3c(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x38(%rbp)
jmp 0x35da
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54909(%rip), %rsi     # 0x570de
callq 0x2190
cmpl $0x0, %eax
jne 0x2801
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x21d0
movl %eax, -0x2c(%rbp)
jmp 0x35d8
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x548cd(%rip), %rsi     # 0x570e1
callq 0x2190
cmpl $0x0, %eax
jne 0x2946
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0xa, %ecx
cmpl %ecx, %eax
jl 0x2857
callq 0x23c0
jmp 0x2836
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2841
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
cmpl $0x0, -0x3c(%rbp)
je 0x2896
movq 0x6377c(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x5483a(%rip), %rdi     # 0x570a8
callq 0x2140
jmp 0x2875
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2880
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl $0x2, -0x3c(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x14(%rbp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x21d0
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
movl %ecx, %edx
addl $0x1, %edx
movl %edx, -0x14(%rbp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x21d0
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x21d0
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x20(%rbp)
jle 0x2908
cmpl $0x0, -0x24(%rbp)
jle 0x2908
cmpl $0x0, -0x28(%rbp)
jg 0x2941
movq 0x636d1(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x547cb(%rip), %rdi     # 0x570e4
callq 0x2140
jmp 0x2920
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x292b
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
jmp 0x35d6
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x547e4(%rip), %rsi     # 0x5713d
callq 0x2190
cmpl $0x0, %eax
jne 0x296c
movb $0x1, -0x44(%rbp)
jmp 0x35d4
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x547c1(%rip), %rsi     # 0x57140
callq 0x2190
cmpl $0x0, %eax
jne 0x299a
movb $0x1, -0x43(%rbp)
movb $0x1, -0x42(%rbp)
movb $0x1, -0x41(%rbp)
jmp 0x35d2
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54796(%rip), %rsi     # 0x57143
callq 0x2190
cmpl $0x0, %eax
jne 0x29c0
movb $0x1, -0x41(%rbp)
jmp 0x35d0
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54774(%rip), %rsi     # 0x57147
callq 0x2190
cmpl $0x0, %eax
jne 0x29e6
movb $0x1, -0x42(%rbp)
jmp 0x35ce
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54752(%rip), %rsi     # 0x5714b
callq 0x2190
cmpl $0x0, %eax
jne 0x2a0c
movb $0x1, -0x43(%rbp)
jmp 0x35cc
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54730(%rip), %rsi     # 0x5714f
callq 0x2190
cmpl $0x0, %eax
jne 0x2a32
movb $0x1, -0x40(%rbp)
jmp 0x35ca
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x5470d(%rip), %rsi     # 0x57152
callq 0x2190
cmpl $0x0, %eax
jne 0x2a58
movb $0x1, -0x45(%rbp)
jmp 0x35c8
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x545f9(%rip), %rsi     # 0x57064
callq 0x2190
cmpl $0x0, %eax
jne 0x2a9d
callq 0x23a0
jmp 0x2a7c
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2a87
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x546a5(%rip), %rsi     # 0x57155
callq 0x2190
cmpl $0x0, %eax
jne 0x2eb1
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0xd, %ecx
cmpl %ecx, %eax
jl 0x2af3
callq 0x23c0
jmp 0x2ad2
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2add
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl -0x14(%rbp), %eax
incl %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x90(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x98(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xa0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xa8(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xb0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xb8(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9c0(%rbp)
jmp 0x2bc7
movq -0x9c0(%rbp), %rdi
movaps 0x5346b(%rip), %xmm0    # 0x56040
movsd -0x90(%rbp), %xmm3
pxor %xmm0, %xmm3
movl -0x18(%rbp), %esi
movsd 0x5343c(%rip), %xmm0    # 0x56028
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x47a0
jmp 0x2bf9
movq -0x9c0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2c0b
movl -0x18(%rbp), %eax
decl %eax
movl %eax, -0x18(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9c8(%rbp)
jmp 0x2c26
movq -0x9c8(%rbp), %rdi
movsd -0x98(%rbp), %xmm3
movl -0x18(%rbp), %esi
movsd 0x533d0(%rip), %xmm0    # 0x56010
xorps %xmm2, %xmm2
movaps %xmm2, %xmm1
callq 0x47a0
jmp 0x2c4d
movq -0x9c8(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2c5f
movl -0x18(%rbp), %eax
decl %eax
movl %eax, -0x18(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9d0(%rbp)
jmp 0x2c7a
movq -0x9d0(%rbp), %rdi
movaps 0x533b8(%rip), %xmm0    # 0x56040
movsd -0xa0(%rbp), %xmm3
pxor %xmm0, %xmm3
movl -0x18(%rbp), %esi
movsd 0x53389(%rip), %xmm1    # 0x56028
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x47a0
jmp 0x2cac
movq -0x9d0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2cbe
movl -0x18(%rbp), %eax
decl %eax
movl %eax, -0x18(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9d8(%rbp)
jmp 0x2cd9
movq -0x9d8(%rbp), %rdi
movsd -0xa8(%rbp), %xmm3
movl -0x18(%rbp), %esi
movsd 0x5331d(%rip), %xmm1    # 0x56010
xorps %xmm2, %xmm2
movaps %xmm2, %xmm0
callq 0x47a0
jmp 0x2d00
movq -0x9d8(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2d12
movl -0x18(%rbp), %eax
decl %eax
movl %eax, -0x18(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9e0(%rbp)
jmp 0x2d2d
movq -0x9e0(%rbp), %rdi
movaps 0x53305(%rip), %xmm0    # 0x56040
movsd -0xb0(%rbp), %xmm3
pxor %xmm0, %xmm3
movl -0x18(%rbp), %esi
xorps %xmm1, %xmm1
movsd 0x532d3(%rip), %xmm2    # 0x56028
movaps %xmm1, %xmm0
callq 0x47a0
jmp 0x2d5f
movq -0x9e0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2d71
movl -0x18(%rbp), %eax
decl %eax
movl %eax, -0x18(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9e8(%rbp)
jmp 0x2d8c
movq -0x9e8(%rbp), %rdi
movsd -0xb8(%rbp), %xmm3
movl -0x18(%rbp), %esi
xorps %xmm1, %xmm1
movsd 0x53267(%rip), %xmm2    # 0x56010
movaps %xmm1, %xmm0
callq 0x47a0
jmp 0x2db3
movq -0x9e8(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2dc5
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x35c4
movq -0x9c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x9c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x9d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x9d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x9e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x9e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54295(%rip), %rsi     # 0x57159
callq 0x2190
cmpl $0x0, %eax
jne 0x3011
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0xb, %ecx
cmpl %ecx, %eax
jl 0x2f07
callq 0x23c0
jmp 0x2ee6
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x2ef1
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl -0x14(%rbp), %eax
incl %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xc0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xc8(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xd0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xd8(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9f0(%rbp)
jmp 0x2f9b
movq -0x9f0(%rbp), %rdi
movsd -0xc0(%rbp), %xmm0
movsd -0xc8(%rbp), %xmm1
movsd -0xd0(%rbp), %xmm2
movsd -0xd8(%rbp), %xmm3
movl -0x18(%rbp), %esi
callq 0x4820
jmp 0x2fcc
movq -0x9f0(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x2fde
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x35c2
movq -0x9f0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x54139(%rip), %rsi     # 0x5715d
callq 0x2190
cmpl $0x0, %eax
jne 0x3171
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0xb, %ecx
cmpl %ecx, %eax
jl 0x3067
callq 0x23c0
jmp 0x3046
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3051
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl -0x14(%rbp), %eax
incl %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xe0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xe8(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xf0(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0xf8(%rbp)
movl $0x30, %edi
callq 0x2120
movq %rax, -0x9f8(%rbp)
jmp 0x30fb
movq -0x9f8(%rbp), %rdi
movsd -0xe0(%rbp), %xmm0
movsd -0xe8(%rbp), %xmm1
movsd -0xf0(%rbp), %xmm2
movsd -0xf8(%rbp), %xmm3
movl -0x18(%rbp), %esi
callq 0x47a0
jmp 0x312c
movq -0x9f8(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x313e
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x35c0
movq -0x9f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x30, %esi
callq 0x2130
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x53fdd(%rip), %rsi     # 0x57161
callq 0x2190
cmpl $0x0, %eax
jne 0x3349
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0xe, %ecx
cmpl %ecx, %eax
jl 0x31c7
callq 0x23c0
jmp 0x31a6
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x31b1
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl -0x14(%rbp), %eax
incl %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x100(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x108(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x110(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x118(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x120(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x128(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x130(%rbp)
movl $0x50, %edi
callq 0x2120
movq %rax, -0xa00(%rbp)
jmp 0x32bb
movq -0xa00(%rbp), %rdi
movsd -0x100(%rbp), %xmm0
movsd -0x108(%rbp), %xmm1
movsd -0x110(%rbp), %xmm2
movsd -0x118(%rbp), %xmm3
movsd -0x120(%rbp), %xmm4
movsd -0x128(%rbp), %xmm5
movsd -0x130(%rbp), %xmm6
movl -0x18(%rbp), %esi
callq 0x48a0
jmp 0x3304
movq -0xa00(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x3316
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x35be
movq -0xa00(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x50, %esi
callq 0x2130
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x53e09(%rip), %rsi     # 0x57165
callq 0x2190
cmpl $0x0, %eax
jne 0x3521
movl -0x14(%rbp), %eax
movl -0x8(%rbp), %ecx
subl $0xe, %ecx
cmpl %ecx, %eax
jl 0x339f
callq 0x23c0
jmp 0x337e
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3389
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl -0x14(%rbp), %eax
incl %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x138(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x140(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x148(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x150(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x158(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movl %ecx, %edx
incl %edx
movl %edx, -0x14(%rbp)
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x160(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x168(%rbp)
movl $0x60, %edi
callq 0x2120
movq %rax, -0xa08(%rbp)
jmp 0x3493
movq -0xa08(%rbp), %rdi
movsd -0x138(%rbp), %xmm0
movsd -0x140(%rbp), %xmm1
movsd -0x148(%rbp), %xmm2
movsd -0x150(%rbp), %xmm3
movsd -0x158(%rbp), %xmm4
movsd -0x160(%rbp), %xmm5
movsd -0x168(%rbp), %xmm6
movl -0x18(%rbp), %esi
callq 0x4990
jmp 0x34dc
movq -0xa08(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4750
jmp 0x34ee
movl -0x18(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x35bc
movq -0xa08(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x60, %esi
callq 0x2130
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x53c35(%rip), %rsi     # 0x57169
callq 0x2190
cmpl $0x0, %eax
jne 0x3548
movb $0x1, -0x3f(%rbp)
movb $0x1, -0x3e(%rbp)
jmp 0x35ba
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x53c11(%rip), %rsi     # 0x5716c
callq 0x2190
cmpl $0x0, %eax
jne 0x356b
movb $0x1, -0x3e(%rbp)
jmp 0x35b8
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x53bf2(%rip), %rsi     # 0x57170
callq 0x2190
cmpl $0x0, %eax
jne 0x358e
movb $0x1, -0x3f(%rbp)
jmp 0x35b6
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3599
callq 0x23c0
jmp 0x35a0
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
jmp 0x35b8
jmp 0x35ba
jmp 0x35bc
jmp 0x35be
jmp 0x35c0
jmp 0x35c2
jmp 0x35c4
jmp 0x35c6
jmp 0x35c8
jmp 0x35ca
jmp 0x35cc
jmp 0x35ce
jmp 0x35d0
jmp 0x35d2
jmp 0x35d4
jmp 0x35d6
jmp 0x35d8
jmp 0x35da
jmp 0x35dc
jmp 0x35de
jmp 0x35e0
jmp 0x35e2
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x257c
cmpl $0x0, -0x2c(%rbp)
jg 0x362f
movq 0x629e3(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x53b6d(%rip), %rdi     # 0x57174
callq 0x2140
jmp 0x360e
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3619
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x170(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x178(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x180(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x188(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x4, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x190(%rbp)
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x5, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x2170
movsd %xmm0, -0x198(%rbp)
movsd -0x178(%rbp), %xmm1
movsd -0x170(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x372d
movq 0x628e5(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x53a9f(%rip), %rdi     # 0x571a4
callq 0x2140
jmp 0x370c
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3717
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movsd -0x188(%rbp), %xmm1
movsd -0x180(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x377c
movq 0x62896(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x53a8b(%rip), %rdi     # 0x571df
callq 0x2140
jmp 0x375b
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3766
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movsd -0x198(%rbp), %xmm1
movsd -0x190(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x37cb
movq 0x62847(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x53a77(%rip), %rdi     # 0x5721a
callq 0x2140
jmp 0x37aa
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x37b5
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
cmpl $0x0, -0x3c(%rbp)
jne 0x3975
testb $0x1, -0x40(%rbp)
je 0x38a9
movl $0x80, %edi
callq 0x2120
movq %rax, -0xa10(%rbp)
jmp 0x37f2
movq -0xa10(%rbp), %rdi
movsd -0x170(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
movsd -0x188(%rbp), %xmm3
movsd -0x190(%rbp), %xmm4
movsd -0x198(%rbp), %xmm5
movzbl -0x43(%rbp), %ecx
movzbl -0x42(%rbp), %edx
movzbl -0x41(%rbp), %esi
andl $0x1, %esi
andl $0x1, %edx
andl $0x1, %ecx
callq 0x4ab0
jmp 0x3845
movq -0xa10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rsi
callq 0x4b40
jmp 0x3868
movq -0x58(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x24(%rbp), %rdx
leaq -0x28(%rbp), %rcx
callq 0x4ca90
jmp 0x387f
jmp 0x3970
movq -0xa10(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x80, %esi
callq 0x2130
jmp 0x4735
movl $0x80, %edi
callq 0x2120
movq %rax, -0xa18(%rbp)
jmp 0x38bc
movq -0xa18(%rbp), %rdi
movsd -0x170(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
movsd -0x188(%rbp), %xmm3
movsd -0x190(%rbp), %xmm4
movsd -0x198(%rbp), %xmm5
movzbl -0x43(%rbp), %ecx
movzbl -0x42(%rbp), %edx
movzbl -0x41(%rbp), %esi
andl $0x1, %esi
andl $0x1, %edx
andl $0x1, %ecx
callq 0x4b90
jmp 0x390f
movq -0xa18(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rsi
callq 0x4c20
jmp 0x3932
movq -0x50(%rbp), %rdi
leaq -0x20(%rbp), %rsi
leaq -0x24(%rbp), %rdx
leaq -0x28(%rbp), %rcx
callq 0x4ca90
jmp 0x3949
jmp 0x3970
movq -0xa18(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
movl $0x80, %esi
callq 0x2130
jmp 0x4735
jmp 0x3b54
cmpl $0x1, -0x3c(%rbp)
jne 0x3ac7
movsd 0x52681(%rip), %xmm0    # 0x56008
ucomisd -0x38(%rbp), %xmm0
jbe 0x3a0b
movq 0x6264b(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x538b6(%rip), %rdi     # 0x57255
callq 0x2140
jmp 0x39a6
xorps %xmm0, %xmm0
ucomisd -0x38(%rbp), %xmm0
jbe 0x39ca
movq 0x62629(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x5389d(%rip), %rdi     # 0x5725e
callq 0x2140
jmp 0x39c8
jmp 0x39ea
movq 0x6260f(%rip), %rax     # 0x65fe0
movq (%rax), %rdi
leaq 0x538a6(%rip), %rsi     # 0x57281
movsd 0x52625(%rip), %xmm0    # 0x56008
movb $0x1, %al
callq 0x21a0
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x39f5
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movsd 0x52605(%rip), %xmm0    # 0x56018
divsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x178(%rbp), %xmm0
subsd -0x170(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd 0x525d2(%rip), %xmm1    # 0x56010
addsd %xmm1, %xmm0
movsd %xmm0, -0x1a0(%rbp)
movsd -0x188(%rbp), %xmm0
subsd -0x180(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd 0x525a5(%rip), %xmm1    # 0x56010
addsd %xmm1, %xmm0
movsd %xmm0, -0x1a8(%rbp)
movsd -0x198(%rbp), %xmm0
subsd -0x190(%rbp), %xmm0
movsd -0x38(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd 0x52578(%rip), %xmm1    # 0x56010
addsd %xmm1, %xmm0
movsd %xmm0, -0x1b0(%rbp)
cvttsd2si -0x1a0(%rbp), %eax
movl %eax, -0x20(%rbp)
cvttsd2si -0x1a8(%rbp), %eax
movl %eax, -0x24(%rbp)
cvttsd2si -0x1b0(%rbp), %eax
movl %eax, -0x28(%rbp)
jmp 0x3aee
cvtsi2sdl -0x20(%rbp), %xmm0
movsd %xmm0, -0x1a0(%rbp)
cvtsi2sdl -0x24(%rbp), %xmm0
movsd %xmm0, -0x1a8(%rbp)
cvtsi2sdl -0x28(%rbp), %xmm0
movsd %xmm0, -0x1b0(%rbp)
movsd -0x1a0(%rbp), %xmm0
mulsd -0x1a8(%rbp), %xmm0
mulsd -0x1b0(%rbp), %xmm0
movsd 0x52512(%rip), %xmm1    # 0x56020
ucomisd %xmm1, %xmm0
jbe 0x3b52
movq 0x624c5(%rip), %rax     # 0x65fe0
movq (%rax), %rdi
leaq 0x537e4(%rip), %rsi     # 0x57309
xorl %eax, %eax
movl $0x1000000, %edx        # imm = 0x1000000
callq 0x21a0
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3b3c
movl $0x2, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
jmp 0x3b54
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x6, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdi
callq 0x20a0
movl %eax, -0x1b4(%rbp)
cmpl $0x1000, -0x1b4(%rbp)   # imm = 0x1000
jle 0x3bb5
movq 0x6245d(%rip), %rax     # 0x65fe0
movq (%rax), %rsi
leaq 0x53819(%rip), %rdi     # 0x573a6
callq 0x2140
jmp 0x3b94
leaq -0x78(%rbp), %rdi
callq 0x1e760
jmp 0x3b9f
movl $0x4, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x4720
movl -0x1b4(%rbp), %eax
addl $0x7, %eax
movslq %eax, %rdi
callq 0x2030
movq %rax, -0xa20(%rbp)
jmp 0x3bcf
movq -0xa20(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq -0x1c0(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rdx
leaq 0x537c9(%rip), %rsi     # 0x573c1
xorl %eax, %eax
callq 0x2050
movq -0x1c0(%rbp), %rdi
leaq 0x537bb(%rip), %rsi     # 0x573c8
callq 0x1b800
movq %rax, -0xa28(%rbp)
jmp 0x3c1b
movq -0xa28(%rbp), %rax
movq %rax, -0x1c8(%rbp)
testb $0x1, -0x3d(%rbp)
je 0x3c7d
movq -0x1c0(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rdx
leaq 0x53780(%rip), %rsi     # 0x573ca
xorl %eax, %eax
callq 0x2050
movq -0x1c0(%rbp), %rdi
leaq 0x53769(%rip), %rsi     # 0x573c8
callq 0x1b800
movq %rax, -0xa30(%rbp)
jmp 0x3c6d
movq -0xa30(%rbp), %rax
movq %rax, -0x1d0(%rbp)
jmp 0x3c88
movq $0x0, -0x1d0(%rbp)
testb $0x1, -0x3e(%rbp)
je 0x3cdc
movq -0x1c0(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rdx
leaq 0x53728(%rip), %rsi     # 0x573d1
xorl %eax, %eax
callq 0x2050
movq -0x1c0(%rbp), %rdi
leaq 0x5370a(%rip), %rsi     # 0x573c8
callq 0x1b800
movq %rax, -0xa38(%rbp)
jmp 0x3ccc
movq -0xa38(%rbp), %rax
movq %rax, -0x1d8(%rbp)
jmp 0x3ce7
movq $0x0, -0x1d8(%rbp)
testb $0x1, -0x3f(%rbp)
je 0x3d3b
movq -0x1c0(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rdx
leaq 0x536d2(%rip), %rsi     # 0x573da
xorl %eax, %eax
callq 0x2050
movq -0x1c0(%rbp), %rdi
leaq 0x536ab(%rip), %rsi     # 0x573c8
callq 0x1b800
movq %rax, -0xa40(%rbp)
jmp 0x3d2b
movq -0xa40(%rbp), %rax
movq %rax, -0x1e0(%rbp)
jmp 0x3d46
movq $0x0, -0x1e0(%rbp)
movq -0x1c0(%rbp), %rax
movq %rax, -0xa48(%rbp)
cmpq $0x0, %rax
je 0x3d66
movq -0xa48(%rbp), %rdi
callq 0x2180
cmpl $0x0, -0x1c(%rbp)
jne 0x3d8d
movb -0x40(%rbp), %dl
leaq 0x53679(%rip), %rax     # 0x573ef
leaq 0x53666(%rip), %rcx     # 0x573e3
testb $0x1, %dl
cmovneq %rcx, %rax
movq %rax, -0xa50(%rbp)
jmp 0x3da0
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xa50(%rbp)
movq -0xa50(%rbp), %rax
movq %rax, -0x1e8(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1f0(%rbp)
movl $0x0, -0x1f4(%rbp)
movl $0x0, -0x1f8(%rbp)
testb $0x1, -0x40(%rbp)
je 0x4160
testb $0x1, -0x44(%rbp)
je 0x3fcd
leaq -0x210(%rbp), %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4c70
jmp 0x3df4
movsd -0x170(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
movsd -0x188(%rbp), %xmm3
movsd -0x190(%rbp), %xmm4
movsd -0x198(%rbp), %xmm5
movl -0x20(%rbp), %esi
movl -0x24(%rbp), %edx
movl -0x28(%rbp), %ecx
movl -0x2c(%rbp), %r10d
movzbl -0x42(%rbp), %r9d
movzbl -0x41(%rbp), %r8d
movzbl -0x43(%rbp), %edi
movq %rsp, %rax
movl %r10d, 0x8(%rax)
andl $0x1, %edi
movl %edi, (%rax)
andl $0x1, %r8d
andl $0x1, %r9d
leaq -0x3b0(%rbp), %rdi
callq 0x1c810
jmp 0x3e61
leaq -0x360(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1e700
jmp 0x3e73
cmpl $0x0, -0x3c(%rbp)
jne 0x3ef6
movq -0x58(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x3b0(%rbp), %rdx
callq 0x4d430
jmp 0x3e92
movq -0x58(%rbp), %rax
movq %rax, -0xa58(%rbp)
cmpq $0x0, %rax
je 0x3ec0
movq -0xa58(%rbp), %rdi
callq 0x4cd0
movq -0xa58(%rbp), %rdi
movl $0x80, %esi
callq 0x2130
jmp 0x3f1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x3fbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x5260
jmp 0x3fbc
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rdx
leaq -0x3b0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x4cf0
jmp 0x3f18
jmp 0x3f1a
leaq -0x418(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
leaq -0x210(%rbp), %rdx
callq 0x4d40
jmp 0x3f36
movq -0x1e8(%rbp), %rdx
movq -0x1c8(%rbp), %rcx
movq -0x1d0(%rbp), %r8
movq -0x1d8(%rbp), %r9
movq -0x1e0(%rbp), %rsi
movzbl -0x45(%rbp), %edi
movq %rsp, %rax
leaq -0x1f4(%rbp), %r10
movq %r10, 0x20(%rax)
leaq -0x1f8(%rbp), %r10
movq %r10, 0x18(%rax)
leaq -0x1f0(%rbp), %r10
movq %r10, 0x10(%rax)
andl $0x1, %edi
movl %edi, 0x8(%rax)
movq %rsi, (%rax)
leaq -0x418(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x4d90
jmp 0x3f9f
leaq -0x3b0(%rbp), %rdi
callq 0x5260
leaq -0x210(%rbp), %rdi
callq 0x5290
jmp 0x415b
leaq -0x210(%rbp), %rdi
callq 0x5290
jmp 0x4735
movsd -0x170(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
movsd -0x188(%rbp), %xmm3
movsd -0x190(%rbp), %xmm4
movsd -0x198(%rbp), %xmm5
movl -0x20(%rbp), %esi
movl -0x24(%rbp), %edx
movl -0x28(%rbp), %ecx
movl -0x2c(%rbp), %r10d
movzbl -0x42(%rbp), %r9d
movzbl -0x41(%rbp), %r8d
movzbl -0x43(%rbp), %edi
movq %rsp, %rax
movl %r10d, 0x8(%rax)
andl $0x1, %edi
movl %edi, (%rax)
andl $0x1, %r8d
andl $0x1, %r9d
leaq -0x5b8(%rbp), %rdi
callq 0x1c810
jmp 0x403a
leaq -0x568(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1e700
jmp 0x404c
cmpl $0x0, -0x3c(%rbp)
jne 0x40b4
movq -0x58(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x4d080
jmp 0x4064
movq -0x58(%rbp), %rax
movq %rax, -0xa60(%rbp)
cmpq $0x0, %rax
je 0x4092
movq -0xa60(%rbp), %rdi
callq 0x4cd0
movq -0xa60(%rbp), %rdi
movl $0x80, %esi
callq 0x2130
jmp 0x40d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x5260
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rsi
leaq -0x5b8(%rbp), %rdi
callq 0x52c0
jmp 0x40cf
jmp 0x40d1
leaq -0x600(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x5310
jmp 0x40e6
movq -0x1e8(%rbp), %rdx
movq -0x1c8(%rbp), %rcx
movq -0x1d0(%rbp), %r8
movq -0x1d8(%rbp), %r9
movq -0x1e0(%rbp), %rsi
movzbl -0x45(%rbp), %edi
movq %rsp, %rax
leaq -0x1f4(%rbp), %r10
movq %r10, 0x20(%rax)
leaq -0x1f8(%rbp), %r10
movq %r10, 0x18(%rax)
leaq -0x1f0(%rbp), %r10
movq %r10, 0x10(%rax)
andl $0x1, %edi
movl %edi, 0x8(%rax)
movq %rsi, (%rax)
leaq -0x600(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x5340
jmp 0x414f
leaq -0x5b8(%rbp), %rdi
callq 0x5260
jmp 0x44e6
testb $0x1, -0x44(%rbp)
je 0x4356
leaq -0x618(%rbp), %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x4c70
jmp 0x417d
movsd -0x170(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
movsd -0x188(%rbp), %xmm3
movsd -0x190(%rbp), %xmm4
movsd -0x198(%rbp), %xmm5
movl -0x20(%rbp), %esi
movl -0x24(%rbp), %edx
movl -0x28(%rbp), %ecx
movl -0x2c(%rbp), %r10d
movzbl -0x42(%rbp), %r9d
movzbl -0x41(%rbp), %r8d
movzbl -0x43(%rbp), %edi
movq %rsp, %rax
movl %r10d, 0x8(%rax)
andl $0x1, %edi
movl %edi, (%rax)
andl $0x1, %r8d
andl $0x1, %r9d
leaq -0x790(%rbp), %rdi
callq 0x1c680
jmp 0x41ea
leaq -0x740(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1e700
jmp 0x41fc
cmpl $0x0, -0x3c(%rbp)
jne 0x427f
movq -0x50(%rbp), %rdi
leaq -0x618(%rbp), %rsi
leaq -0x790(%rbp), %rdx
callq 0x4d270
jmp 0x421b
movq -0x50(%rbp), %rax
movq %rax, -0xa68(%rbp)
cmpq $0x0, %rax
je 0x4249
movq -0xa68(%rbp), %rdi
callq 0x5800
movq -0xa68(%rbp), %rdi
movl $0x80, %esi
callq 0x2130
jmp 0x42a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x4345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x5d60
jmp 0x4345
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rdx
leaq -0x790(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0x5820
jmp 0x42a1
jmp 0x42a3
leaq -0x7f8(%rbp), %rdi
leaq -0x790(%rbp), %rsi
leaq -0x618(%rbp), %rdx
callq 0x5870
jmp 0x42bf
movq -0x1e8(%rbp), %rdx
movq -0x1c8(%rbp), %rcx
movq -0x1d0(%rbp), %r8
movq -0x1d8(%rbp), %r9
movq -0x1e0(%rbp), %rsi
movzbl -0x45(%rbp), %edi
movq %rsp, %rax
leaq -0x1f4(%rbp), %r10
movq %r10, 0x20(%rax)
leaq -0x1f8(%rbp), %r10
movq %r10, 0x18(%rax)
leaq -0x1f0(%rbp), %r10
movq %r10, 0x10(%rax)
andl $0x1, %edi
movl %edi, 0x8(%rax)
movq %rsi, (%rax)
leaq -0x7f8(%rbp), %rdi
leaq -0x790(%rbp), %rsi
callq 0x58c0
jmp 0x4328
leaq -0x790(%rbp), %rdi
callq 0x5d60
leaq -0x618(%rbp), %rdi
callq 0x5290
jmp 0x44e4
leaq -0x618(%rbp), %rdi
callq 0x5290
jmp 0x4735
movsd -0x170(%rbp), %xmm0
movsd -0x178(%rbp), %xmm1
movsd -0x180(%rbp), %xmm2
movsd -0x188(%rbp), %xmm3
movsd -0x190(%rbp), %xmm4
movsd -0x198(%rbp), %xmm5
movl -0x20(%rbp), %esi
movl -0x24(%rbp), %edx
movl -0x28(%rbp), %ecx
movl -0x2c(%rbp), %r10d
movzbl -0x42(%rbp), %r9d
movzbl -0x41(%rbp), %r8d
movzbl -0x43(%rbp), %edi
movq %rsp, %rax
movl %r10d, 0x8(%rax)
andl $0x1, %edi
movl %edi, (%rax)
andl $0x1, %r8d
andl $0x1, %r9d
leaq -0x970(%rbp), %rdi
callq 0x1c680
jmp 0x43c3
leaq -0x920(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x1e700
jmp 0x43d5
cmpl $0x0, -0x3c(%rbp)
jne 0x443d
movq -0x50(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x4ced0
jmp 0x43ed
movq -0x50(%rbp), %rax
movq %rax, -0xa70(%rbp)
cmpq $0x0, %rax
je 0x441b
movq -0xa70(%rbp), %rdi
callq 0x5800
movq -0xa70(%rbp), %rdi
movl $0x80, %esi
callq 0x2130
jmp 0x445a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x970(%rbp), %rdi
callq 0x5d60
jmp 0x4735
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq 0x30(%rax,%rcx,8), %rsi
leaq -0x970(%rbp), %rdi
callq 0x5d90
jmp 0x4458
jmp 0x445a
leaq -0x9b8(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x5de0
jmp 0x446f
movq -0x1e8(%rbp), %rdx
movq -0x1c8(%rbp), %rcx
movq -0x1d0(%rbp), %r8
movq -0x1d8(%rbp), %r9
movq -0x1e0(%rbp), %rsi
movzbl -0x45(%rbp), %edi
movq %rsp, %rax
leaq -0x1f4(%rbp), %r10
movq %r10, 0x20(%rax)
leaq -0x1f8(%rbp), %r10
movq %r10, 0x18(%rax)
leaq -0x1f0(%rbp), %r10
movq %r10, 0x10(%rax)
andl $0x1, %edi
movl %edi, 0x8(%rax)
movq %rsi, (%rax)
leaq -0x9b8(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x5e10
jmp 0x44d8
leaq -0x970(%rbp), %rdi
callq 0x5d60
jmp 0x44e6
testb $0x1, -0x45(%rbp)
je 0x46b3
movsd -0x170(%rbp), %xmm0
movsd %xmm0, -0xab0(%rbp)
movsd -0x178(%rbp), %xmm0
movsd %xmm0, -0xaa8(%rbp)
movsd -0x180(%rbp), %xmm0
movsd %xmm0, -0xaa0(%rbp)
movsd -0x188(%rbp), %xmm0
movsd %xmm0, -0xa98(%rbp)
movsd -0x190(%rbp), %xmm0
movsd %xmm0, -0xa90(%rbp)
movsd -0x198(%rbp), %xmm0
movsd %xmm0, -0xa88(%rbp)
movl -0x20(%rbp), %eax
movl %eax, -0xa7c(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0xa78(%rbp)
movl -0x28(%rbp), %eax
movl %eax, -0xa74(%rbp)
cmpl $0x0, -0x3c(%rbp)
jne 0x4581
leaq 0x52f25(%rip), %rax     # 0x5749d
movq %rax, -0xab8(%rbp)
jmp 0x45a0
movl -0x3c(%rbp), %edx
leaq 0x52f43(%rip), %rax     # 0x574ce
leaq 0x52f1f(%rip), %rcx     # 0x574b1
cmpl $0x1, %edx
cmoveq %rcx, %rax
movq %rax, -0xab8(%rbp)
movl -0xa74(%rbp), %ecx
movl -0xa78(%rbp), %edx
movl -0xa7c(%rbp), %esi
movsd -0xa88(%rbp), %xmm5
movsd -0xa90(%rbp), %xmm4
movsd -0xa98(%rbp), %xmm3
movsd -0xaa0(%rbp), %xmm2
movsd -0xaa8(%rbp), %xmm1
movsd -0xab0(%rbp), %xmm0
movq -0xab8(%rbp), %r8
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rdi
movq 0x30(%rax,%rdi,8), %r9
movq -0x1e8(%rbp), %rdi
movl -0x1c(%rbp), %eax
testl %eax, %eax
leaq 0x52ed8(%rip), %rax     # 0x574e1
leaq 0x57d85(%rip), %r10     # 0x5c395
cmoveq %rax, %r10
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rdi, (%rax)
leaq 0x52dd3(%rip), %rdi     # 0x573f8
movb $0x6, %al
callq 0x2040
jmp 0x462e
movl -0x1f4(%rbp), %esi
cvtsi2sd %esi, %xmm0
movl -0x20(%rbp), %eax
movl -0x24(%rbp), %ecx
imull %ecx, %eax
movl -0x28(%rbp), %ecx
imull %ecx, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movl -0x1f8(%rbp), %edx
movsd -0x178(%rbp), %xmm1
movsd -0x170(%rbp), %xmm2
subsd %xmm2, %xmm1
movsd -0x188(%rbp), %xmm2
movsd -0x180(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
movsd -0x198(%rbp), %xmm2
movsd -0x190(%rbp), %xmm3
subsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
movsd -0x1f0(%rbp), %xmm2
leaq 0x52e44(%rip), %rdi     # 0x574ec
movb $0x3, %al
callq 0x2040
jmp 0x46b1
jmp 0x46b3
movq -0x1c8(%rbp), %rdi
callq 0x2110
jmp 0x46c1
cmpq $0x0, -0x1d0(%rbp)
je 0x46db
movq -0x1d0(%rbp), %rdi
callq 0x2110
jmp 0x46d9
jmp 0x46db
cmpq $0x0, -0x1d8(%rbp)
je 0x46f5
movq -0x1d8(%rbp), %rdi
callq 0x2110
jmp 0x46f3
jmp 0x46f5
cmpq $0x0, -0x1e0(%rbp)
je 0x470f
movq -0x1e0(%rbp), %rdi
callq 0x2110
jmp 0x470d
jmp 0x470f
movl $0x0, -0x4(%rbp)
movl $0x1, -0x88(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x1c510
movl -0x4(%rbp), %eax
addq $0xae0, %rsp            # imm = 0xAE0
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x1c510
movq -0x80(%rbp), %rdi
callq 0x2220
nopw (%rax,%rax)