// File: /workspace/github_cpp_makefile_star2_O3/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 $0x318, %rsp            # imm = 0x318
leaq 0x118(%rsp), %rdi
callq 0x21b0
movl $0x10, %eax
leaq 0x108(%rsp), %r15
movq %rsp, %r13
movl %eax, 0xa4(%rsp)
cvtsi2sd %eax, %xmm1
movsd 0x7c0b(%rip), %xmm0     # 0xa008
callq 0x21e0
addsd 0x7c06(%rip), %xmm0     # 0xa010
cvttsd2si %xmm0, %r14d
movl %r14d, %ebp
negl %ebp
xorl %ebx, %ebx
xorpd %xmm0, %xmm0
movsd %xmm0, 0x38(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd %xmm0, 0x50(%rsp)
movsd %xmm0, 0x58(%rsp)
movsd %xmm0, 0x60(%rsp)
movsd %xmm0, 0x78(%rsp)
movsd %xmm0, 0x70(%rsp)
movsd %xmm0, 0x90(%rsp)
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0x98(%rsp)
leaq 0xa8(%rsp), %r12
movq %r14, 0xc8(%rsp)
movl %ebx, 0x4(%rsp)
callq 0x20c0
movq %rax, %rbx
movq %r12, %rdi
movl %r14d, %esi
callq 0x839c
movq %r15, %rdi
movq %r12, %rsi
callq 0x9021
movq %r12, %rdi
movq %r15, %rsi
callq 0x8aee
movq %r15, %rdi
callq 0x8432
movq %r15, %rdi
movl %r14d, %esi
movl %r14d, %edx
callq 0x3048
leaq 0x18(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x3fe1
movq %r15, %rdi
movq %r12, %rsi
callq 0x3728
movq %r12, %rdi
callq 0x30d0
testl %r14d, %r14d
jle 0x251b
movl $0x1, %r12d
leal (%r14,%r12), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movq %r15, %rdi
movl %r12d, %esi
movl %r12d, %edx
callq 0x3ab4
leal (%r12,%rbp), %eax
incl %eax
movl %r12d, %ecx
incl %ecx
movl %ecx, %r12d
cmpl $0x1, %eax
jne 0x24ef
leaq 0x18(%rsp), %rdi
movq %r15, %rsi
leaq 0xa8(%rsp), %rdx
callq 0x3ac9
leaq 0xf8(%rsp), %rdi
movq %r15, %rsi
callq 0x3f3a
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7ac0(%rip), %xmm0     # 0xa018
movsd %xmm0, 0x68(%rsp)
movl $0x6, %edx
movq 0xba66(%rip), %rdi      # 0xdfd0
leaq 0x7acf(%rip), %rsi      # 0xa040
callq 0x2160
movq 0xba53(%rip), %rdi      # 0xdfd0
movl %r14d, %esi
callq 0x21d0
movq %rax, %rbx
movl $0x10, %edx
movq %rax, %rdi
leaq 0x7ab0(%rip), %rsi      # 0xa047
callq 0x2160
movq %rbx, %rdi
movsd 0x68(%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, (%rsp)
leaq 0x28(%rsp), %rdi
movl %r14d, %esi
callq 0x839c
callq 0x20c0
movq %rax, %rbx
movl $0x0, (%rsp)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x18(%rsp), %rdx
movq %r13, %rcx
callq 0x72d6
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x8aee
movq %r12, %rdi
callq 0x8432
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x79dc(%rip), %xmm0     # 0xa018
movsd %xmm0, 0x68(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl (%rsp), %xmm0
movsd %xmm0, 0xf0(%rsp)
movl $0x2, %edx
movq 0xb971(%rip), %rdi      # 0xdfd0
leaq 0x79f2(%rip), %rsi      # 0xa058
callq 0x2160
movq 0xb95e(%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 0x8(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
leaq 0x18(%rsp), %rdx
callq 0x4acd
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x8aee
movq %r13, %rdi
callq 0x8432
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7924(%rip), %xmm0     # 0xa018
movsd %xmm0, 0xe8(%rsp)
movq %r13, %rdi
movq %r12, %rsi
leaq 0xa8(%rsp), %rdx
callq 0x85dc
movq %r13, %rdi
movl $0x2, %esi
callq 0x8f1c
movsd %xmm0, 0xe0(%rsp)
movq %r13, %rdi
callq 0x8432
movl $0x3, %edx
movq 0xb896(%rip), %rdi      # 0xdfd0
leaq 0x791a(%rip), %rsi      # 0xa05b
callq 0x2160
movq %rbp, %r13
movq %r14, %rbp
movq 0xc8(%rsp), %r14
movq 0xb875(%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, (%rsp)
callq 0x20c0
movq %rax, %rbx
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x18(%rsp), %rdx
movq %r13, %rcx
callq 0x60f1
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x8aee
movq %r12, %rdi
callq 0x8432
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x783a(%rip), %xmm0     # 0xa018
movsd %xmm0, 0xd8(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl (%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
movl $0x4, %edx
movq 0xb7cc(%rip), %rdi      # 0xdfd0
leaq 0x7854(%rip), %rsi      # 0xa05f
callq 0x2160
movq 0xb7b9(%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 0x2a9a
movq %rax, %rbx
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x18(%rsp), %rdx
movsd 0x77ad(%rip), %xmm0     # 0xa020
movq %r13, %rcx
callq 0x63d4
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x8aee
movq %r12, %rdi
callq 0x8432
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7770(%rip), %xmm0     # 0xa018
movsd %xmm0, 0xc0(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl (%rsp), %xmm0
movsd %xmm0, 0xb8(%rsp)
movl $0x5, %edx
movq 0xb702(%rip), %rdi      # 0xdfd0
leaq 0x778f(%rip), %rsi      # 0xa064
callq 0x2160
movq 0xb6ef(%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, (%rsp)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x18(%rsp), %rdx
movsd 0x76f1(%rip), %xmm0     # 0xa028
movq %r13, %rcx
callq 0x63d4
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x8aee
movsd 0x58(%rsp), %xmm0
addsd 0xc0(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x60(%rsp), %xmm0
addsd 0xb8(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
movq %r12, %rdi
callq 0x8432
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x7682(%rip), %xmm0     # 0xa018
movsd 0x48(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x48(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl (%rsp), %xmm0
movsd 0x50(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x50(%rsp)
cmpl $0x63, %r14d
jg 0x2a9a
movl $0x4, %edx
movq 0xb5fc(%rip), %rdi      # 0xdfd0
leaq 0x768f(%rip), %rsi      # 0xa06a
callq 0x2160
movq 0xb5e9(%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, (%rsp)
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
leaq 0x18(%rsp), %rdx
movsd 0x75f3(%rip), %xmm0     # 0xa030
movq %r13, %rcx
callq 0x63d4
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
callq 0x8aee
movq %r12, %rdi
callq 0x8432
callq 0x20c0
subq %rbx, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x75a6(%rip), %xmm0     # 0xa018
movsd 0x38(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x38(%rsp)
xorps %xmm0, %xmm0
cvtsi2sdl (%rsp), %xmm0
movsd 0x40(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x40(%rsp)
movl 0x4(%rsp), %ebx
movsd 0x98(%rsp), %xmm0
addsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movsd 0x90(%rsp), %xmm0
addsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x90(%rsp)
movsd 0x80(%rsp), %xmm0
addsd 0xe8(%rsp), %xmm0
movsd %xmm0, 0x80(%rsp)
movsd 0x88(%rsp), %xmm0
addsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movsd 0x78(%rsp), %xmm0
addsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
movsd 0x70(%rsp), %xmm0
addsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
leaq 0x28(%rsp), %rdi
callq 0x8432
leaq 0xf8(%rsp), %rdi
callq 0x30d0
leaq 0x18(%rsp), %rdi
callq 0x8432
movq %r15, %rdi
callq 0x30d0
leaq 0xa8(%rsp), %r12
movq %r12, %rdi
callq 0x8432
incl %ebx
cmpl $0xb, %ebx
jne 0x247e
leaq 0x118(%rsp), %r12
movq %r12, %rdi
leaq 0x74e8(%rip), %rsi      # 0xa06f
movl $0x1, %edx
callq 0x2050
movq %r12, %rdi
movl %r14d, %esi
callq 0x21d0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x74cd(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x90(%rsp), %xmm0
divsd 0x7477(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x749d(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x98(%rsp), %xmm0
divsd 0x7447(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7470(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x744d(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x742d(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x740a(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x73ea(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x80(%rsp), %xmm0
divsd 0x7394(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x73ba(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x88(%rsp), %xmm0
divsd 0x7364(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x738d(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x736a(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x734a(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7327(%rip), %rsi      # 0xa078
callq 0x2160
xorpd %xmm0, %xmm0
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7307(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x70(%rsp), %xmm0
divsd 0x72b4(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x72da(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x78(%rsp), %xmm0
divsd 0x7287(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x72b0(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x60(%rsp), %xmm0
divsd 0x725d(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7283(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x58(%rsp), %xmm0
divsd 0x7230(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7259(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x50(%rsp), %xmm0
divsd 0x7206(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x722c(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x48(%rsp), %xmm0
divsd 0x71d9(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x7202(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x40(%rsp), %xmm0
divsd 0x71af(%rip), %xmm0     # 0xa038
movq %r12, %rdi
callq 0x21a0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x71d5(%rip), %rsi      # 0xa078
callq 0x2160
movsd 0x38(%rsp), %xmm0
divsd 0x7182(%rip), %xmm0     # 0xa038
movq %rbx, %rdi
callq 0x21a0
movq 0x118(%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 0xa4(%rsp), %eax
incl %eax
cmpl $0x6f, %eax
jne 0x23ea
movq 0xb0b5(%rip), %rax      # 0xdfc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x120(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x118(%rsp,%rcx)
callq 0x2120
leaq 0x210(%rsp), %rdi
callq 0x2070
movl $0x1, %eax
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2f7e
jmp 0x2fc5
jmp 0x2f7e
jmp 0x2f7e
jmp 0x2fc5
jmp 0x2fc5
jmp 0x2f7e
jmp 0x2fc5
jmp 0x2f7e
movq %rax, %rbx
jmp 0x2fdf
jmp 0x2fc0
jmp 0x2fc5
jmp 0x2feb
jmp 0x2fc5
jmp 0x2f7e
jmp 0x2fc5
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x8432
jmp 0x2fc8
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x8432
jmp 0x2ffb
jmp 0x2feb
jmp 0x2fa3
movq %rax, %rbx
jmp 0x2ffb
jmp 0x2fb9
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x30d0
jmp 0x2fee
movq %rax, %rbx
jmp 0x3008
jmp 0x2fc5
movq %rax, %rbx
jmp 0x2fd2
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8432
leaq 0xf8(%rsp), %rdi
callq 0x30d0
leaq 0x18(%rsp), %rdi
callq 0x8432
jmp 0x2fee
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x30d0
leaq 0xa8(%rsp), %rdi
callq 0x8432
movq 0xafb9(%rip), %rax      # 0xdfc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x120(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x118(%rsp,%rcx)
callq 0x2120
leaq 0x210(%rsp), %rdi
callq 0x2070
movq %rbx, %rdi
callq 0x21f0