// File: /workspace/github_cpp_makefile_star2_O1/yukimasano[P]cpp_matrix/SRDD.cpp
// Function: main
int main()
{
	ofstream outfile;
	int i = 1;

	for (int j=16; j<=110; j+=1){
		/* format of output is
		# format    0 kappa=size , 1 SD Count, 2 SD Time, 3 CG Count, 4 CG time,
		#           5 CG_pre count 6 CG_pre time
		#           7 LU time, 8 LU delx, 9 QR time, 10 QR delx
		#						11 full QR time 12 full QR delx
		#						13 Jacobi count 14 Jacobi Time
		#						15 SOR1 "-" 16
		#						17 SOR1.5 "-" 18
		#						19 SOR0.5 "-" 20
		*/
		double sd_co =0.0;
		double sd_ti =0.0;
		double cg_co =0.0;
		double cg_ti =0.0;
		double cgp_co =0.0;
		double cgp_ti =0.0;
		double lu_ti =0.0;
		double lu_dx =0.0;
		double qr_ti =0.0;
		double qr_dx =0.0;
		double qre_ti =0.0;
		double qre_dx =0.0;
		double jac_co =0.0;
		double jac_ti =0.0;
		double sor1_co =0.0;
		double sor1_ti =0.0;
		double sor15_co =0.0;
		double sor15_ti =0.0;
		double sor05_co =0.0;
		double sor05_ti =0.0;
    i = pow(1.09,j)+8;




		// for loop to average measurements
	  for (int k=0;k<=10 ;k++){
			//VERSION ITERATIVE
			clock_t begin = clock();
			Vector x(i);
			x= randv(x);
			Matrix A(i,i);
			A = randm(A);
			for (int o=1; o<=i;  o++){
				A.set_val(o,o,o+i);
			}
			Vector b = A*x;
			Matrix AA = A;

			clock_t end = clock();
			double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			cout<<"dim = "<<i<<" time for prep: "<<elapsed_secs<<endl;
			// /////////////////////////////
			int count = 0;
	    //// code starts here /////////////////////////////////////
			Vector x1(i);
			begin = clock();
			count = 0;
			x1 = SD(A,b, count);
			end = clock();
			elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
      sd_ti += elapsed_secs;
			sd_co += count;
			cout<<"SD"<<flush<<endl;

			// else{
			// 	sd_ti = 0;
			// 	sd_co = 0;
			// }

			// begin = clock();
			// count = 0;
			// x1 = CG(AA,b2, count);
			// end = clock();
			// elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			// cg_ti += elapsed_secs;
			// cg_co += count;

			// cout<<"CG"<<flush<<endl;
      //
			// begin = clock();
			// count = 0;
			// x1 = CG_pre(AA,b2, count);
			// end = clock();
			// elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			// cgp_ti += elapsed_secs;
			// cgp_co += count;


			////////////////// non-iterative solvers

			begin = clock();
			x1 = LUsolve(A,b);
			end = clock();
			elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			double delx = (x1 - x).norm();
			lu_ti += elapsed_secs;
			lu_dx += delx;
      //
			// if (i<150){
			// 	//cout<<"QR2"<<flush<<endl;
			// 	cout<<"QR2"<<flush<<endl;
      //
			//   begin = clock();
			// 	x1 = QRsolve2(A,b);
			// 	end = clock();
			// 	elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			// 	delx = (x1 - x).norm();
			// 	qr_ti += elapsed_secs;
			// 	qr_dx += delx;
			// }
			// else{
			// 	qr_ti = 0;
			// 	qr_dx = 0;
			// }
      //
			// cout<<"QR"<<flush<<endl;
      // if (i<200){
			// 	begin = clock();
			// 	x1 = QRsolve(A,b);
			// 	end = clock();
			// 	elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			// 	delx = (x1 - x).norm();
			// 	qre_ti += elapsed_secs;
			// 	qre_dx += delx;
			// }
			// else{
			// 	qre_ti = 0;
			// 	qre_dx = 0;
			// }
			cout<<"Jac"<<flush<<endl;

			count = 0;
			begin = clock();
			x1 = Jacobi(A,b,count);
			end = clock();
			elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
			jac_ti += elapsed_secs;
			jac_co += count;

			cout<<"SOR1"<<flush<<endl;

			begin = clock();
			if (i<140){
				x1 = SOR(A,b,1.0 , count);
				end = clock();
				elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
				sor1_ti += elapsed_secs;
				sor1_co += count;
				cout<<"SOR15"<<flush<<endl;

				begin = clock();
				count = 0;
				x1 = SOR(A,b,1.5 , count);
		    end = clock();
		    elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
				sor15_ti += elapsed_secs;
				sor15_co += count;
			}
			if (i<100){
				cout<<"SOR5"<<flush<<endl;
				begin = clock();
				count = 0;
				x1 = SOR(A,b,0.5 , count);
				end = clock();
				elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
				sor05_ti += elapsed_secs;
				sor05_co += count;
		  }

		}
		//cout<<"done"<<flush<<endl;
		outfile.open("SRDD.txt", fstream::app);
		outfile<<i<<",";
		outfile<< sd_co/10<<","<< sd_ti/10 << ",";
		outfile<< cg_co/10<<","<< cg_ti/10 << ",";
		outfile<< cgp_co/10<<","<< cgp_ti/10 << ",";
		outfile<< lu_ti/10<<","<< lu_dx/10 << ",";
		outfile<< qr_ti/10<<","<< qr_dx/10 << ",";
		outfile<< qre_ti/10<<","<< qre_dx/10<<",";
		outfile<< jac_co/10<<","<< jac_ti/10 << ",";
		outfile<< sor1_co/10<<","<< sor1_ti/10 << ",";
		outfile<< sor15_co/10<<","<< sor15_ti/10 << ",";
		outfile<< sor05_co/10<<","<< sor05_ti/10;
		outfile<<endl;
		outfile.flush();
		outfile.close();
	}

  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
leaq 0x128(%rsp), %rdi
callq 0x21b0
movl $0x10, %eax
leaq 0x118(%rsp), %r15
leaq 0xc(%rsp), %r13
movl %eax, 0xb4(%rsp)
cvtsi2sd %eax, %xmm1
movsd 0x7c09(%rip), %xmm0     # 0xa008
callq 0x21e0
addsd 0x7c04(%rip), %xmm0     # 0xa010
cvttsd2si %xmm0, %r14d
movl %r14d, %ebp
negl %ebp
xorl %ebx, %ebx
xorpd %xmm0, %xmm0
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x60(%rsp)
movsd %xmm0, 0x70(%rsp)
movsd %xmm0, 0x68(%rsp)
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0xa8(%rsp)
movsd %xmm0, 0x90(%rsp)
movsd %xmm0, 0x98(%rsp)
movsd %xmm0, 0xa0(%rsp)
leaq 0xb8(%rsp), %r12
movq %r14, 0xd8(%rsp)
movl %ebx, 0x24(%rsp)
callq 0x20c0
movq %rax, %rbx
movq %r12, %rdi
movl %r14d, %esi
callq 0x841c
movq %r15, %rdi
movq %r12, %rsi
callq 0x90b9
movq %r12, %rdi
movq %r15, %rsi
callq 0x8b90
movq %r15, %rdi
callq 0x84c4
movq %r15, %rdi
movl %r14d, %esi
movl %r14d, %edx
callq 0x306c
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x4014
movq %r15, %rdi
movq %r12, %rsi
callq 0x3754
movq %r12, %rdi
callq 0x3100
testl %r14d, %r14d
jle 0x2523
movl $0x1, %r12d
leal (%r14,%r12), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movq %r15, %rdi
movl %r12d, %esi
movl %r12d, %edx
callq 0x3ae0
leal (%r12,%rbp), %eax
incl %eax
movl %r12d, %ecx
incl %ecx
movl %ecx, %r12d
cmpl $0x1, %eax
jne 0x24f7
leaq 0x28(%rsp), %rdi
movq %r15, %rsi
leaq 0xb8(%rsp), %rdx
callq 0x3af5
leaq 0x108(%rsp), %rdi
movq %r15, %rsi
callq 0x3f66
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7ab8(%rip), %xmm0     # 0xa018
movsd %xmm0, 0x78(%rsp)
movl $0x6, %edx
movq 0xba5e(%rip), %rdi      # 0xdfd0
leaq 0x7ac7(%rip), %rsi      # 0xa040
callq 0x2160
movq 0xba4b(%rip), %rdi      # 0xdfd0
movl %r14d, %esi
callq 0x21d0
movq %rax, %rbx
movl $0x10, %edx
movq %rax, %rdi
leaq 0x7aa8(%rip), %rsi      # 0xa047
callq 0x2160
movq %rbx, %rdi
movsd 0x78(%rsp), %xmm0
callq 0x21a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
movl $0x0, 0xc(%rsp)
leaq 0x38(%rsp), %rdi
movl %r14d, %esi
callq 0x841c
callq 0x20c0
movq %rax, %rbx
movl $0x0, 0xc(%rsp)
leaq 0x10(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x28(%rsp), %rdx
movq %r13, %rcx
callq 0x7326
leaq 0x38(%rsp), %rdi
movq %r12, %rsi
callq 0x8b90
movq %r12, %rdi
callq 0x84c4
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x79d2(%rip), %xmm0     # 0xa018
movsd %xmm0, 0x78(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc(%rsp), %xmm0
movsd %xmm0, 0x100(%rsp)
movl $0x2, %edx
movq 0xb966(%rip), %rdi      # 0xdfd0
leaq 0x79e7(%rip), %rsi      # 0xa058
callq 0x2160
movq 0xb953(%rip), %rdi      # 0xdfd0
callq 0x20d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
movq %rbp, %r14
movq %r13, %rbp
callq 0x20c0
movq %rax, %rbx
leaq 0x10(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
leaq 0x28(%rsp), %rdx
callq 0x4b02
leaq 0x38(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x8b90
movq %r13, %rdi
callq 0x84c4
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7919(%rip), %xmm0     # 0xa018
movsd %xmm0, 0xf8(%rsp)
movq %r13, %rdi
movq %r12, %rsi
leaq 0xb8(%rsp), %rdx
callq 0x867c
movq %r13, %rdi
movl $0x2, %esi
callq 0x8fb0
movsd %xmm0, 0xf0(%rsp)
movq %r13, %rdi
callq 0x84c4
movl $0x3, %edx
movq 0xb88b(%rip), %rdi      # 0xdfd0
leaq 0x790f(%rip), %rsi      # 0xa05b
callq 0x2160
movq %rbp, %r13
movq %r14, %rbp
movq 0xd8(%rsp), %r14
movq 0xb86a(%rip), %rdi      # 0xdfd0
callq 0x20d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
movl $0x0, 0xc(%rsp)
callq 0x20c0
movq %rax, %rbx
leaq 0x10(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x28(%rsp), %rdx
movq %r13, %rcx
callq 0x6122
leaq 0x38(%rsp), %rdi
movq %r12, %rsi
callq 0x8b90
movq %r12, %rdi
callq 0x84c4
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x782e(%rip), %xmm0     # 0xa018
movsd %xmm0, 0xe8(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc(%rsp), %xmm0
movsd %xmm0, 0xe0(%rsp)
movl $0x4, %edx
movq 0xb7bf(%rip), %rdi      # 0xdfd0
leaq 0x7847(%rip), %rsi      # 0xa05f
callq 0x2160
movq 0xb7ac(%rip), %rdi      # 0xdfd0
callq 0x20d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
callq 0x20c0
cmpl $0x8b, %r14d
jg 0x29ce
movq %rax, %rbx
leaq 0x10(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x28(%rsp), %rdx
movsd 0x77a0(%rip), %xmm0     # 0xa020
movq %r13, %rcx
callq 0x6405
leaq 0x38(%rsp), %rdi
movq %r12, %rsi
callq 0x8b90
movq %r12, %rdi
callq 0x84c4
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7763(%rip), %xmm0     # 0xa018
movsd %xmm0, 0xd0(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
movl $0x5, %edx
movq 0xb6f4(%rip), %rdi      # 0xdfd0
leaq 0x7781(%rip), %rsi      # 0xa064
callq 0x2160
movq 0xb6e1(%rip), %rdi      # 0xdfd0
callq 0x20d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
callq 0x20c0
movq %rax, %rbx
movl $0x0, 0xc(%rsp)
leaq 0x10(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x28(%rsp), %rdx
movsd 0x76e2(%rip), %xmm0     # 0xa028
movq %r13, %rcx
callq 0x6405
leaq 0x38(%rsp), %rdi
movq %r12, %rsi
callq 0x8b90
movsd 0x70(%rsp), %xmm0
addsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
movsd 0x68(%rsp), %xmm0
addsd 0xc8(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
movq %r12, %rdi
callq 0x84c4
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7673(%rip), %xmm0     # 0xa018
movsd 0x58(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x58(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc(%rsp), %xmm0
movsd 0x60(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x60(%rsp)
cmpl $0x63, %r14d
jg 0x2aac
movl $0x4, %edx
movq 0xb5ec(%rip), %rdi      # 0xdfd0
leaq 0x767f(%rip), %rsi      # 0xa06a
callq 0x2160
movq 0xb5d9(%rip), %rdi      # 0xdfd0
callq 0x20d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
callq 0x20c0
movq %rax, %rbx
movl $0x0, 0xc(%rsp)
leaq 0x10(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x28(%rsp), %rdx
movsd 0x75e2(%rip), %xmm0     # 0xa030
movq %r13, %rcx
callq 0x6405
leaq 0x38(%rsp), %rdi
movq %r12, %rsi
callq 0x8b90
movq %r12, %rdi
callq 0x84c4
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7595(%rip), %xmm0     # 0xa018
movsd 0x48(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x48(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl 0xc(%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x50(%rsp)
movl 0x24(%rsp), %ebx
movsd 0xa0(%rsp), %xmm0
addsd 0x78(%rsp), %xmm0
movsd %xmm0, 0xa0(%rsp)
movsd 0xa8(%rsp), %xmm0
addsd 0x100(%rsp), %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0x98(%rsp), %xmm0
addsd 0xf8(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movsd 0x90(%rsp), %xmm0
addsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x90(%rsp)
movsd 0x88(%rsp), %xmm0
addsd 0xe8(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movsd 0x80(%rsp), %xmm0
addsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x80(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x84c4
leaq 0x108(%rsp), %rdi
callq 0x3100
leaq 0x28(%rsp), %rdi
callq 0x84c4
movq %r15, %rdi
callq 0x3100
leaq 0xb8(%rsp), %r12
movq %r12, %rdi
callq 0x84c4
incl %ebx
cmpl $0xb, %ebx
jne 0x2486
leaq 0x128(%rsp), %r12
movq %r12, %rdi
leaq 0x74ca(%rip), %rsi      # 0xa06f
movl $0x1, %edx
callq 0x2050
movq %r12, %rdi
movl %r14d, %esi
callq 0x21d0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x74af(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0xa8(%rsp), %xmm0
divsd 0x7459(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x747f(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0xa0(%rsp), %xmm0
divsd 0x7429(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7452(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x742f(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x740f(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x73ec(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x73cc(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x98(%rsp), %xmm0
divsd 0x7376(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x739c(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x90(%rsp), %xmm0
divsd 0x7346(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x736f(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x734c(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x732c(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7309(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x72e9(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x80(%rsp), %xmm0
divsd 0x7293(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x72b9(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x88(%rsp), %xmm0
divsd 0x7263(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x728c(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x68(%rsp), %xmm0
divsd 0x7239(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x725f(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x70(%rsp), %xmm0
divsd 0x720c(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7235(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x60(%rsp), %xmm0
divsd 0x71e2(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7208(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x58(%rsp), %xmm0
divsd 0x71b5(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x71de(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x50(%rsp), %xmm0
divsd 0x718b(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x71b1(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x48(%rsp), %xmm0
divsd 0x715e(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movq 0x128(%rsp), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2150
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x20d0
movq %r12, %rdi
callq 0x20d0
movq %r12, %rdi
callq 0x2180
movl 0xb4(%rsp), %eax
incl %eax
cmpl $0x6f, %eax
jne 0x23ec
movq 0xb091(%rip), %rax      # 0xdfc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x130(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x128(%rsp,%rcx)
callq 0x2120
leaq 0x220(%rsp), %rdi
callq 0x2070
movl $0x1, %eax
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2fe9
jmp 0x2fe9
jmp 0x2fe9
jmp 0x2fa2
jmp 0x2fa2
jmp 0x2fa2
jmp 0x2fe9
jmp 0x2fa2
jmp 0x2fe4
movq %rax, %rbx
jmp 0x3003
jmp 0x2fa2
jmp 0x300f
jmp 0x2fe9
jmp 0x2fe9
jmp 0x2fa2
jmp 0x2fe9
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x84c4
jmp 0x2fec
jmp 0x2fc9
jmp 0x300f
jmp 0x2fdd
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x84c4
jmp 0x301f
movq %rax, %rbx
jmp 0x301f
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3100
jmp 0x3012
movq %rax, %rbx
jmp 0x302c
jmp 0x2fe9
movq %rax, %rbx
jmp 0x2ff6
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x84c4
leaq 0x108(%rsp), %rdi
callq 0x3100
leaq 0x28(%rsp), %rdi
callq 0x84c4
jmp 0x3012
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x3100
leaq 0xb8(%rsp), %rdi
callq 0x84c4
movq 0xaf95(%rip), %rax      # 0xdfc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x130(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x128(%rsp,%rcx)
callq 0x2120
leaq 0x220(%rsp), %rdi
callq 0x2070
movq %rbx, %rdi
callq 0x21f0