// File: IdelCoder[P]PTransE-ag/Test_TransE_path.cpp
// Function: Test::run()
void run()
    {
		// 读取关系和实体的向量
        FILE* f1 = fopen(("relation2vec.txt"+version).c_str(),"r");
        FILE* f3 = fopen(("entity2vec.txt"+version).c_str(),"r");
        cout<<relation_num<<' '<<entity_num<<endl;
        int relation_num_fb=relation_num;
        relation_vec.resize(relation_num_fb*2);
        for (int i=0; i<relation_num_fb*2;i++)
        {
        //	int tmp;
        //	fscanf(f1,"%d",&tmp);
            relation_vec[i].resize(n);
            for (int ii=0; ii<n; ii++)
                fscanf(f1,"%lf",&relation_vec[i][ii]);
        }
        entity_vec.resize(entity_num);
        for (int i=0; i<entity_num;i++)
        {
        //	int tmp;
        	//fscanf(f3,"%d",&tmp);
            entity_vec[i].resize(n);
            for (int ii=0; ii<n; ii++)
                fscanf(f3,"%lf",&entity_vec[i][ii]);
            if (vec_len(entity_vec[i])-1>1e-3)
            	cout<<"wrong_entity"<<i<<' '<<vec_len(entity_vec[i])<<endl;
        }
        fclose(f1);
        fclose(f3);
		
		
		
		double lsum=0 ,lsum_filter= 0;
		double rsum = 0,rsum_filter=0;
		double mid_sum = 0,mid_sum_filter=0;
		double lp_n=0,lp_n_filter = 0;
		double rp_n=0,rp_n_filter = 0;
		double mid_p_n=0,mid_p_n_filter = 0;
		map<int,double> lsum_r,lsum_filter_r;
		map<int,double> rsum_r,rsum_filter_r;
		map<int,double> mid_sum_r,mid_sum_filter_r;
		map<int,double> lp_n_r,lp_n_filter_r;
		map<int,double> rp_n_r,rp_n_filter_r;
		map<int,double> mid_p_n_r,mid_p_n_filter_r;
		map<int,int> rel_num;

		// 各度结点的头实体预测表现
		// map<度数, tuple<累计排名，累计Hits@N数，总数> >
		map<int, tuple<long, int, int> > hd_raw;
		map<int, tuple<long, int, int> > td_raw;
		map<int, tuple<long, int, int> > hd_filter;
		map<int, tuple<long, int, int> > td_filter;
		
		
		double l_one2one=0,r_one2one=0,one2one_num=0;
        double l_n2one=0,r_n2one=0,n2one_num=0;
        double l_one2n=0,r_one2n=0,one2n_num=0;
        double l_n2n=0,r_n2n=0,n2n_num=0;
		

		int hit_n = 1;
		// e1_e2是top500的实体对（这是测试结果）
		//FILE* f_e1_e2 = fopen("../e1_e2.txt","w");
		map<pair<int,int>,int> e1_e2;
		for (int testid = 0; testid<fb_l.size()/2; testid+=1)
		{
			int h = fb_h[testid*2];
			int l = fb_l[testid*2];
			int rel = fb_r[testid*2];
			rel_num[rel]+=1;
			// 存储候选实体得分
			vector<pair<int,double> > a;
			
            if (rel_type[rel]==0)
                one2one_num+=1;
            else
            if (rel_type[rel]==1)
                n2one_num+=1;
            else
            if (rel_type[rel]==2)
                one2n_num+=1;
            else
                n2n_num+=1;
			

			double ttt=0;
			int filter = 0;
			// 头实体预测  
			used = "0";
			for (int i=0; i<entity_num; i++)
			{
				// 计算损失值（使用TransE的能量函数）(head prediction)
				double sum = calc_sum(i,l,rel);
				a.push_back(make_pair(i,sum));
			}

			int rerank_num = 500;
			// 递减排序
			sort(a.begin(),a.end(),cmp);
			used = "1";
			for (int i=a.size()-1; i>=a.size()-rerank_num; i--)
			{
				// 计算损失值（PTransE的能量函数）(head prediction)
				double sum = calc_sum(a[i].first,l,rel);
				a[i].second = sum;
			}
			
			sort(a.begin(),a.end(),cmp);
			for (int i=a.size()-1; i>=0; i--)
			{
				if (a.size()-i<=rerank_num)
				    //保存top 500的实体，实际没啥用
					e1_e2[make_pair(a[i].first,l)] = 1;
				if (ok[make_pair(a[i].first,rel)].count(l)>0)
				    // 无效的变量
					ttt++;
			    if (ok[make_pair(a[i].first,rel)].count(l)==0)
			    	// filter rank
					filter+=1;
				
				if (a[i].first ==h)
				{
					// 当前答案是正确答案
					lsum+=a.size()-i;
					lsum_filter+=filter+1;
					// 作用未知
					lsum_r[rel]+=a.size()-i;
					lsum_filter_r[rel]+=filter+1;

					// 答案的度
					int ans_degree = entity_degree[h];
					if(hd_raw.count(ans_degree) == 0) {
						auto tup_raw = make_tuple(a.size()-i, 0, 1);
						auto tup_filter = make_tuple(filter+1, 0, 1);
						hd_raw[ans_degree] = tup_raw;
						hd_filter[ans_degree] = tup_filter;
					} else {
						get<0>(hd_raw[ans_degree]) += a.size()-i;
						get<0>(hd_filter[ans_degree]) += filter+1;
						get<2>(hd_raw[ans_degree]) ++;
						get<2>(hd_filter[ans_degree])++;
					}
					if (a.size()-i<=hit_n)
					{
						// 排名小于hit_n
						lp_n+=1;
						lp_n_r[rel]+=1;
						get<1>(hd_raw[ans_degree]) ++;
					}
					if (filter<hit_n)
					{
						get<1>(hd_filter[ans_degree]) ++;
						// 关系类型细分的情况
						// 考虑的是filter过后的
						lp_n_filter+=1;
						lp_n_filter_r[rel]+=1;
						if (rel_type[rel]==0)
                            l_one2one+=1;
                        else
                        if (rel_type[rel]==1)
                            l_n2one+=1;
                        else
                        if (rel_type[rel]==2)
                            l_one2n+=1;
                        else
                            l_n2n+=1;
						
					}
					//if (a.size()-i>20)
					//	break;
				}
			}
			a.clear();
			// tail prediction
			used = "0";
			for (int i=0; i<entity_num; i++)
			{
				double sum = calc_sum(h,i,rel);
				a.push_back(make_pair(i,sum));
			}
			sort(a.begin(),a.end(),cmp);
			used = "1";
			sort(a.begin(),a.end(),cmp);
			for (int i=a.size()-1; i>=a.size()-rerank_num; i--)
			{
				double sum = calc_sum(h,a[i].first,rel);
				a[i].second = sum;
			}

			sort(a.begin(),a.end(),cmp);
			ttt=0;
			filter=0;
			for (int i=a.size()-1; i>=0; i--)
			{
				if (a.size()-i<=rerank_num)
					e1_e2[make_pair(h,a[i].first)] = 1;
				if (ok[make_pair(h,rel)].count(a[i].first)>0)
					ttt++;
				if (ok[make_pair(h,rel)].count(a[i].first)==0)
			    	filter+=1;
				if (a[i].first==l)
				{
					rsum+=a.size()-i;
					rsum_filter+=filter+1;
					rsum_r[rel]+=a.size()-i;
					rsum_filter_r[rel]+=filter+1;
					// 答案的度
					int ans_degree = entity_degree[l];
					if(td_raw.count(ans_degree) == 0) {
						auto tup_raw = make_tuple(a.size()-i, 0, 1);
						auto tup_filter = make_tuple(filter+1, 0, 1);
						td_raw[ans_degree] = tup_raw;
						td_filter[ans_degree] = tup_filter;
					} else {
						get<0>(td_raw[ans_degree]) += a.size()-i;
						get<0>(td_filter[ans_degree]) += filter+1;
						get<2>(td_raw[ans_degree]) ++;
						get<2>(td_filter[ans_degree])++;
					}
					if (a.size()-i<=hit_n)
					{
						rp_n+=1;
						rp_n_r[rel]+=1;
						get<1>(td_raw[ans_degree])++;
					}
					if (filter<hit_n)
					{
						get<1>(td_filter[ans_degree])++;
						rp_n_filter+=1;
						rp_n_filter_r[rel]+=1;
						;
												if (rel_type[rel]==0)
						                            r_one2one+=1;
						                        else
						                        if (rel_type[rel]==1)
						                            r_n2one+=1;
						                        else
						                        if (rel_type[rel]==2)
						                            r_one2n+=1;
						                        else
						                            r_n2n+=1;
						
					}
					//if (a.size()-i>20)
					//	break;
				}
			}
			a.clear();
			// relation prediction
			for (int i=0; i<relation_num; i++)
			{
				double sum = 0;
				sum+=calc_sum(h,l,i);
				a.push_back(make_pair(i,sum));
			}
			sort(a.begin(),a.end(),cmp);
			ttt=0;
			filter=0;
			for (int i=a.size()-1; i>=0; i--)
			{
				if (ok[make_pair(h,a[i].first)].count(l)>0)
					ttt++;
				if (ok[make_pair(h,a[i].first)].count(l)==0)
			    	filter+=1;
				if (a[i].first==rel)
				{
					mid_sum+=a.size()-i;
					mid_sum_filter+=filter+1;
					mid_sum_r[rel]+=a.size()-i;
					mid_sum_filter_r[rel]+=filter+1;
					if (a.size()-i<=hit_n)
					{
						mid_p_n+=1;
						mid_p_n_r[rel]+=1;
					}
					if (filter<hit_n)
					{
						mid_p_n_filter+=1;
						mid_p_n_filter_r[rel]+=1;
					}
					break;
				}
			}
			if (testid%100==0)
			{
				// testid head预测平均排名 head预测hits@n平均值 tail预测平均排名 tail预测hits@n平均值
				// filter版本对应的结果
				cout<<testid<<":"<<"\t"<<lsum/(testid+1)<<' '<<lp_n/(testid+1)<<' '
				<<rsum/(testid+1)<<' '<<rp_n/(testid+1)<<"\t"
				<<lsum_filter/(testid+1)<<' '<<lp_n_filter/(testid+1)<<' '
				<<rsum_filter/(testid+1)<<' '<<rp_n_filter/(testid+1)<<endl;
				// relation预测平均排名 relation预测平均hits （filter）relation预测平均排名 （filter）relation预测平均hits
				cout<<"\t"<<mid_sum/(testid+1)<<' '<<mid_p_n/(testid+1)<<"\t"<<mid_sum_filter/(testid+1)<<' '<<mid_p_n_filter/(testid+1)<<endl;
				// head预测的关系类型数量
               cout<<l_one2one<<" "<<l_one2n<<" "<<l_n2one<<' '<<l_n2n<<endl;
			   // tail预测的关系类型数量
               cout<<r_one2one<<" "<<r_one2n<<" "<<r_n2one<<' '<<r_n2n<<endl;
			   // 各个类型的关系数量
               cout<<one2one_num<<" "<<one2n_num<<" "<<n2one_num<<' '<<n2n_num<<endl;
			   // head prediction和tail prediction的各类细分关系的hits@n
               cout<<l_one2one/one2one_num<<" "<<l_one2n/one2n_num<<" "<<l_n2one/n2one_num<<' '<<l_n2n/n2n_num<<endl;
               cout<<r_one2one/one2one_num<<" "<<r_one2n/one2n_num<<" "<<r_n2one/n2one_num<<' '<<r_n2n/n2n_num<<endl;
				
			}
		}
	//	for (map<pair<int,int>,int>::iterator it = e1_e2.begin(); it!=e1_e2.end(); it++)
	//		fprintf(f_e1_e2,"%d %d\n",it->first.first,it->first.second);
	//	fclose(f_e1_e2);
	//	cout<<"\t"<<mid_sum/(fb_l.size()/2+1)<<' '<<mid_p_n/(fb_l.size()/2+1)<<"\t"<<mid_sum_filter/(fb_l.size()/2+1)<<' '<<mid_p_n_filter/(fb_l.size()/2+1)<<endl;
	//	cout<<"left:"<<lsum/fb_l.size()<<'\t'<<lp_n/fb_l.size()<<"\t"<<lsum_filter/fb_l.size()<<'\t'<<lp_n_filter/fb_l.size()<<endl;
	//	cout<<"right:"<<rsum/fb_r.size()<<'\t'<<rp_n/fb_r.size()<<'\t'<<rsum_filter/fb_r.size()<<'\t'<<rp_n_filter/fb_r.size()<<endl;
		/*for (int rel=0; rel<relation_num; rel++)
		{
			int num = rel_num[rel];
			cout<<"rel:"<<id2relation[rel]<<' '<<num<<endl;
			cout<<"left:"<<lsum_r[rel]/num<<'\t'<<lp_n_r[rel]/num<<"\t"<<lsum_filter_r[rel]/num<<'\t'<<lp_n_filter_r[rel]/num<<endl;
			cout<<"right:"<<rsum_r[rel]/num<<'\t'<<rp_n_r[rel]/num<<'\t'<<rsum_filter_r[rel]/num<<'\t'<<rp_n_filter_r[rel]/num<<endl;
			cout<<"mid:"<<mid_sum_r[rel]/num<<'\t'<<mid_p_n_r[rel]/num<<'\t'<<mid_sum_filter_r[rel]/num<<'\t'<<mid_p_n_filter_r[rel]/num<<endl;
		}*/
		// 保存各度的运行结果
		// 分别是hd_raw, hd_filter, td_raw, td_filter
		FILE* f_hd_raw = fopen("hd_raw.csv","w");
		for(auto iter = hd_raw.begin(); iter != hd_raw.end(); iter++) {
			fprintf(f_hd_raw, "%d,%ld,%ld,%d\n", iter->first,get<0>(iter->second),get<1>(iter->second),get<2>(iter->second));
		}
		fclose(f_hd_raw);
		FILE* f_hd_filter = fopen("hd_filter.csv","w");
		for(auto iter = hd_filter.begin(); iter != hd_filter.end(); iter++) {
			fprintf(f_hd_filter, "%d,%ld,%ld,%d\n", iter->first,get<0>(iter->second),get<1>(iter->second),get<2>(iter->second));
		}
		fclose(f_hd_filter);
		FILE* f_td_raw = fopen("td_raw.csv","w");
		for(auto iter = td_raw.begin(); iter != td_raw.end(); iter++) {
			fprintf(f_td_raw, "%d,%ld,%ld,%d\n", iter->first,get<0>(iter->second),get<1>(iter->second),get<2>(iter->second));
		}
		fclose(f_td_raw);
		FILE* f_td_filter = fopen("td_filter.csv","w");
		for(auto iter = td_filter.begin(); iter != td_filter.end(); iter++) {
			fprintf(f_td_filter, "%d,%ld,%ld,%d\n", iter->first,get<0>(iter->second),get<1>(iter->second),get<2>(iter->second));
		}
		fclose(f_td_filter);
    }

// Assembly:
subq $0xd98, %rsp            # imm = 0xD98
movq %rdi, 0xd90(%rsp)
movq 0xd90(%rsp), %rax
movq %rax, 0x648(%rsp)
leaq 0x1a551(%rip), %rsi     # 0x201a7
leaq 0x27643(%rip), %rdx     # 0x2d2a0
leaq 0xd68(%rsp), %rdi
movq %rdi, 0x650(%rsp)
callq 0xfbb0
movq 0x650(%rsp), %rdi
callq 0x20e0
movq %rax, %rdi
leaq 0x1a447(%rip), %rsi     # 0x200d0
callq 0x2240
movq %rax, 0x658(%rsp)
jmp 0x5c98
leaq 0xd68(%rsp), %rdi
callq 0x23f8
movq 0x658(%rsp), %rax
movq %rax, 0xd88(%rsp)
leaq 0x1a4fc(%rip), %rsi     # 0x201b8
leaq 0x275dd(%rip), %rdx     # 0x2d2a0
leaq 0xd30(%rsp), %rdi
movq %rdi, 0x638(%rsp)
callq 0xfbb0
movq 0x638(%rsp), %rdi
callq 0x20e0
movq %rax, %rdi
leaq 0x1a3e1(%rip), %rsi     # 0x200d0
callq 0x2240
movq %rax, 0x640(%rsp)
jmp 0x5cfe
leaq 0xd30(%rsp), %rdi
callq 0x23f8
movq 0x640(%rsp), %rax
movq %rax, 0xd50(%rsp)
movl 0x27787(%rip), %esi     # 0x2d4a8
movq 0x272b0(%rip), %rdi     # 0x2cfd8
callq 0x2350
movq %rax, %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, %rdi
movl 0x27769(%rip), %esi     # 0x2d4ac
callq 0x2350
movq %rax, %rdi
movq 0x2726e(%rip), %rsi     # 0x2cfc0
callq 0x2210
movq 0x648(%rsp), %rdi
movl 0x27743(%rip), %eax     # 0x2d4a8
movl %eax, 0xd2c(%rsp)
movl 0xd2c(%rsp), %eax
shll %eax
movslq %eax, %rsi
callq 0xfce0
movl $0x0, 0xd28(%rsp)
movl 0xd28(%rsp), %eax
movl 0xd2c(%rsp), %ecx
shll %ecx
cmpl %ecx, %eax
jge 0x5ea7
movq 0x648(%rsp), %rdi
movslq 0xd28(%rsp), %rsi
callq 0xfd80
movq %rax, %rdi
movslq 0x2744d(%rip), %rsi     # 0x2d20c
callq 0xfda0
movl $0x0, 0xd24(%rsp)
movl 0xd24(%rsp), %eax
cmpl 0x27430(%rip), %eax     # 0x2d20c
jge 0x5e8f
movq 0x648(%rsp), %rdi
movq 0xd88(%rsp), %rax
movq %rax, 0x630(%rsp)
movslq 0xd28(%rsp), %rsi
callq 0xfd80
movq %rax, %rdi
movslq 0xd24(%rsp), %rsi
callq 0x4ef0
movq 0x630(%rsp), %rdi
movq %rax, %rdx
leaq 0x1a360(%rip), %rsi     # 0x20189
movb $0x0, %al
callq 0x23a0
movl 0xd24(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xd24(%rsp)
jmp 0x5dcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd60(%rsp)
movl %eax, 0xd5c(%rsp)
leaq 0xd68(%rsp), %rdi
callq 0x23f8
jmp 0x9120
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd60(%rsp)
movl %eax, 0xd5c(%rsp)
leaq 0xd30(%rsp), %rdi
callq 0x23f8
jmp 0x9120
jmp 0x5e91
movl 0xd28(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xd28(%rsp)
jmp 0x5d88
movq 0x648(%rsp), %rdi
addq $0x18, %rdi
movslq 0x275f2(%rip), %rsi     # 0x2d4ac
callq 0xfce0
movl $0x0, 0xd20(%rsp)
movl 0xd20(%rsp), %eax
cmpl 0x275d5(%rip), %eax     # 0x2d4ac
jge 0x60e6
movq 0x648(%rsp), %rdi
addq $0x18, %rdi
movslq 0xd20(%rsp), %rsi
callq 0xfd80
movq %rax, %rdi
movslq 0x2730c(%rip), %rsi     # 0x2d20c
callq 0xfda0
movl $0x0, 0xd1c(%rsp)
movl 0xd1c(%rsp), %eax
cmpl 0x272ef(%rip), %eax     # 0x2d20c
jge 0x5f84
movq 0x648(%rsp), %rdi
movq 0xd50(%rsp), %rax
movq %rax, 0x628(%rsp)
addq $0x18, %rdi
movslq 0xd20(%rsp), %rsi
callq 0xfd80
movq %rax, %rdi
movslq 0xd1c(%rsp), %rsi
callq 0x4ef0
movq 0x628(%rsp), %rdi
movq %rax, %rdx
leaq 0x1a21f(%rip), %rsi     # 0x20189
movb $0x0, %al
callq 0x23a0
movl 0xd1c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xd1c(%rsp)
jmp 0x5f10
movq 0x648(%rsp), %rdi
addq $0x18, %rdi
movslq 0xd20(%rsp), %rsi
callq 0xfd80
movq %rax, %rsi
leaq 0xd00(%rsp), %rdi
callq 0xfe40
leaq 0xd00(%rsp), %rdi
callq 0x2970
movsd 0x1a046(%rip), %xmm1    # 0x20008
subsd %xmm1, %xmm0
movsd %xmm0, 0x620(%rsp)
leaq 0xd00(%rsp), %rdi
callq 0xb450
movsd 0x620(%rsp), %xmm0
movsd 0x1a02b(%rip), %xmm1    # 0x20018
ucomisd %xmm1, %xmm0
jbe 0x60ce
movq 0x26fda(%rip), %rdi     # 0x2cfd8
leaq 0x1a1c2(%rip), %rsi     # 0x201c7
callq 0x21c0
movq %rax, %rdi
movl 0xd20(%rsp), %esi
callq 0x2350
movq %rax, %rdi
movl $0x20, %esi
callq 0x2230
movq 0x648(%rsp), %rdi
movq %rax, 0x610(%rsp)
addq $0x18, %rdi
movslq 0xd20(%rsp), %rsi
callq 0xfd80
movq %rax, %rsi
leaq 0xce8(%rsp), %rdi
movq %rdi, 0x608(%rsp)
callq 0xfe40
movq 0x608(%rsp), %rdi
callq 0x2970
movq 0x610(%rsp), %rdi
callq 0x23c0
movq %rax, 0x618(%rsp)
jmp 0x6083
movq 0x618(%rsp), %rdi
movq 0x26f2e(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x6099
leaq 0xce8(%rsp), %rdi
callq 0xb450
jmp 0x60ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd60(%rsp)
movl %eax, 0xd5c(%rsp)
leaq 0xce8(%rsp), %rdi
callq 0xb450
jmp 0x9120
jmp 0x60d0
movl 0xd20(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xd20(%rsp)
jmp 0x5eca
movq 0xd88(%rsp), %rdi
callq 0x21d0
movq 0xd50(%rsp), %rdi
callq 0x21d0
xorps %xmm0, %xmm0
movsd %xmm0, 0xce0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xcd8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xcd0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xcc8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xcc0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xcb8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xcb0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xca8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xca0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xc98(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xc90(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0xc88(%rsp)
leaq 0xc58(%rsp), %rdi
callq 0xff40
leaq 0xc28(%rsp), %rdi
callq 0xff40
leaq 0xbf8(%rsp), %rdi
callq 0xff40
leaq 0xbc8(%rsp), %rdi
callq 0xff40
leaq 0xb98(%rsp), %rdi
callq 0xff40
leaq 0xb68(%rsp), %rdi
callq 0xff40
leaq 0xb38(%rsp), %rdi
callq 0xff40
leaq 0xb08(%rsp), %rdi
callq 0xff40
leaq 0xad8(%rsp), %rdi
callq 0xff40
leaq 0xaa8(%rsp), %rdi
callq 0xff40
leaq 0xa78(%rsp), %rdi
callq 0xff40
leaq 0xa48(%rsp), %rdi
callq 0xff40
leaq 0xa18(%rsp), %rdi
callq 0x4e20
leaq 0x9e8(%rsp), %rdi
callq 0xff50
leaq 0x9b8(%rsp), %rdi
callq 0xff50
leaq 0x988(%rsp), %rdi
callq 0xff50
leaq 0x958(%rsp), %rdi
callq 0xff50
xorps %xmm0, %xmm0
movsd %xmm0, 0x950(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x948(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x940(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x938(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x930(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x928(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x920(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x918(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x910(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x908(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x900(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x8f8(%rsp)
movl $0x1, 0x8f4(%rsp)
leaq 0x8c0(%rsp), %rdi
callq 0xff60
movl $0x0, 0x8bc(%rsp)
movq 0x648(%rsp), %rdi
movslq 0x8bc(%rsp), %rax
movq %rax, 0x600(%rsp)
addq $0x90, %rdi
callq 0xb8d0
movq %rax, %rcx
movq 0x600(%rsp), %rax
shrq %rcx
cmpq %rcx, %rax
jae 0x8a52
movq 0x648(%rsp), %rdi
addq $0x78, %rdi
movl 0x8bc(%rsp), %eax
addl %eax, %eax
movslq %eax, %rsi
callq 0xff70
movq 0x648(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x8b8(%rsp)
addq $0x90, %rdi
movl 0x8bc(%rsp), %eax
addl %eax, %eax
movslq %eax, %rsi
callq 0xff70
movq 0x648(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x8b4(%rsp)
addq $0xa8, %rdi
movl 0x8bc(%rsp), %eax
addl %eax, %eax
movslq %eax, %rsi
callq 0xff70
movl (%rax), %eax
movl %eax, 0x8b0(%rsp)
leaq 0xa18(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x5870
movq %rax, 0x5f8(%rsp)
jmp 0x63f2
movq 0x5f8(%rsp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq 0x898(%rsp), %rdi
callq 0xff90
movslq 0x8b0(%rsp), %rsi
leaq 0x26e6b(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x0, (%rax)
jne 0x645f
movsd 0x19bd9(%rip), %xmm0    # 0x20008
addsd 0x940(%rsp), %xmm0
movsd %xmm0, 0x940(%rsp)
jmp 0x64e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd60(%rsp)
movl %eax, 0xd5c(%rsp)
jmp 0x9036
movslq 0x8b0(%rsp), %rsi
leaq 0x26e1a(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x1, (%rax)
jne 0x6494
movsd 0x19b88(%rip), %xmm0    # 0x20008
addsd 0x928(%rsp), %xmm0
movsd %xmm0, 0x928(%rsp)
jmp 0x64e5
movslq 0x8b0(%rsp), %rsi
leaq 0x26de5(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x2, (%rax)
jne 0x64c9
movsd 0x19b53(%rip), %xmm0    # 0x20008
addsd 0x910(%rsp), %xmm0
movsd %xmm0, 0x910(%rsp)
jmp 0x64e3
movsd 0x19b37(%rip), %xmm0    # 0x20008
addsd 0x8f8(%rsp), %xmm0
movsd %xmm0, 0x8f8(%rsp)
jmp 0x64e5
jmp 0x64e7
movq $0x0, 0x890(%rsp)
movl $0x0, 0x88c(%rsp)
leaq 0x26d33(%rip), %rdi     # 0x2d238
leaq 0x19cc8(%rip), %rsi     # 0x201d4
callq 0x2270
jmp 0x6513
movl $0x0, 0x888(%rsp)
movl 0x888(%rsp), %eax
cmpl 0x26f81(%rip), %eax     # 0x2d4ac
jge 0x660c
movq 0x648(%rsp), %rdi
movl 0x888(%rsp), %esi
movl 0x8b4(%rsp), %edx
movl 0x8b0(%rsp), %ecx
callq 0xffa0
movsd %xmm0, 0x5f0(%rsp)
jmp 0x655e
movsd 0x5f0(%rsp), %xmm0
movsd %xmm0, 0x880(%rsp)
leaq 0x888(%rsp), %rdi
leaq 0x880(%rsp), %rsi
callq 0x10da0
movsd %xmm0, 0x5e0(%rsp)
movl %eax, 0x5ec(%rsp)
jmp 0x6597
movsd 0x5e0(%rsp), %xmm0
movl 0x5ec(%rsp), %eax
movl %eax, 0x870(%rsp)
movsd %xmm0, 0x878(%rsp)
leaq 0x898(%rsp), %rdi
leaq 0x870(%rsp), %rsi
callq 0x10d70
jmp 0x65ce
jmp 0x65d0
movl 0x888(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x888(%rsp)
jmp 0x651e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd60(%rsp)
movl %eax, 0xd5c(%rsp)
leaq 0x898(%rsp), %rdi
callq 0x113b0
jmp 0x9036
movl $0x1f4, 0x86c(%rsp) # imm = 0x1F4
leaq 0x898(%rsp), %rdi
movq %rdi, 0x5d8(%rsp)
callq 0x10e30
movq 0x5d8(%rsp), %rdi
movq %rax, 0x860(%rsp)
callq 0x10e60
movq %rax, 0x858(%rsp)
movq 0x860(%rsp), %rdi
movq 0x858(%rsp), %rsi
leaq -0x3b20(%rip), %rdx     # 0x2b40
callq 0x10de0
jmp 0x6667
leaq 0x26bca(%rip), %rdi     # 0x2d238
leaq 0x199eb(%rip), %rsi     # 0x20060
callq 0x2270
jmp 0x667c
leaq 0x898(%rsp), %rdi
callq 0x10e90
subq $0x1, %rax
movl %eax, 0x854(%rsp)
movslq 0x854(%rsp), %rax
movq %rax, 0x5d0(%rsp)
leaq 0x898(%rsp), %rdi
callq 0x10e90
movq %rax, %rcx
movq 0x5d0(%rsp), %rax
movslq 0x86c(%rsp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jb 0x676a
movslq 0x854(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq 0x648(%rsp), %rdi
movl (%rax), %esi
movl 0x8b4(%rsp), %edx
movl 0x8b0(%rsp), %ecx
callq 0xffa0
movsd %xmm0, 0x5c8(%rsp)
jmp 0x670d
movsd 0x5c8(%rsp), %xmm0
movsd %xmm0, 0x848(%rsp)
movsd 0x848(%rsp), %xmm0
movsd %xmm0, 0x5c0(%rsp)
movslq 0x854(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movsd 0x5c0(%rsp), %xmm0
movsd %xmm0, 0x8(%rax)
movl 0x854(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x854(%rsp)
jmp 0x6694
leaq 0x898(%rsp), %rdi
movq %rdi, 0x5b8(%rsp)
callq 0x10e30
movq 0x5b8(%rsp), %rdi
movq %rax, 0x840(%rsp)
callq 0x10e60
movq %rax, 0x838(%rsp)
movq 0x840(%rsp), %rdi
movq 0x838(%rsp), %rsi
leaq -0x3c73(%rip), %rdx     # 0x2b40
callq 0x10de0
jmp 0x67ba
leaq 0x898(%rsp), %rdi
callq 0x10e90
subq $0x1, %rax
movl %eax, 0x834(%rsp)
cmpl $0x0, 0x834(%rsp)
jl 0x701e
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x834(%rsp), %rcx
subq %rcx, %rax
movslq 0x86c(%rsp), %rcx
cmpq %rcx, %rax
ja 0x6871
movslq 0x834(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq %rax, %rdi
leaq 0x8b4(%rsp), %rsi
callq 0xc100
movq %rax, 0x5b0(%rsp)
jmp 0x6834
movq 0x5b0(%rsp), %rax
movq %rax, 0x82c(%rsp)
leaq 0x8c0(%rsp), %rdi
leaq 0x82c(%rsp), %rsi
callq 0x10ed0
movq %rax, 0x5a8(%rsp)
jmp 0x6863
movq 0x5a8(%rsp), %rax
movl $0x1, (%rax)
movq 0x648(%rsp), %rax
addq $0xf0, %rax
movq %rax, 0x598(%rsp)
movslq 0x834(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq %rax, %rdi
leaq 0x8b0(%rsp), %rsi
callq 0xc100
movq %rax, 0x5a0(%rsp)
jmp 0x68b6
movq 0x598(%rsp), %rdi
movq 0x5a0(%rsp), %rax
movq %rax, 0x824(%rsp)
leaq 0x824(%rsp), %rsi
callq 0xc010
movq %rax, 0x590(%rsp)
jmp 0x68e5
movq 0x590(%rsp), %rdi
leaq 0x8b4(%rsp), %rsi
callq 0x10fc0
movq %rax, 0x588(%rsp)
jmp 0x6904
movq 0x588(%rsp), %rax
cmpq $0x0, %rax
jbe 0x692c
movsd 0x196ee(%rip), %xmm0    # 0x20008
addsd 0x890(%rsp), %xmm0
movsd %xmm0, 0x890(%rsp)
movq 0x648(%rsp), %rax
addq $0xf0, %rax
movq %rax, 0x578(%rsp)
movslq 0x834(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq %rax, %rdi
leaq 0x8b0(%rsp), %rsi
callq 0xc100
movq %rax, 0x580(%rsp)
jmp 0x6971
movq 0x578(%rsp), %rdi
movq 0x580(%rsp), %rax
movq %rax, 0x81c(%rsp)
leaq 0x81c(%rsp), %rsi
callq 0xc010
movq %rax, 0x570(%rsp)
jmp 0x69a0
movq 0x570(%rsp), %rdi
leaq 0x8b4(%rsp), %rsi
callq 0x10fc0
movq %rax, 0x568(%rsp)
jmp 0x69bf
movq 0x568(%rsp), %rax
cmpq $0x0, %rax
jne 0x69de
movl 0x88c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x88c(%rsp)
movslq 0x834(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movl (%rax), %eax
cmpl 0x8b8(%rsp), %eax
jne 0x7006
leaq 0x898(%rsp), %rdi
movq %rdi, 0x528(%rsp)
callq 0x10e90
movq 0x528(%rsp), %rdi
movslq 0x834(%rsp), %rcx
subq %rcx, %rax
movq %rax, %xmm1
movaps 0x195fa(%rip), %xmm0    # 0x20030
movaps %xmm0, 0x530(%rsp)
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x195f6(%rip), %xmm0    # 0x20040
movaps %xmm0, 0x540(%rsp)
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0xce0(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xce0(%rsp)
movl 0x88c(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
movsd 0xcd8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xcd8(%rsp)
callq 0x10e90
movaps 0x530(%rsp), %xmm2
movaps 0x540(%rsp), %xmm1
movslq 0x834(%rsp), %rcx
subq %rcx, %rax
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, 0x558(%rsp)
leaq 0xc58(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x560(%rsp)
jmp 0x6afa
movq 0x560(%rsp), %rax
movsd 0x558(%rsp), %xmm1
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl 0x88c(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x518(%rsp)
leaq 0xc28(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x520(%rsp)
jmp 0x6b4c
movq 0x520(%rsp), %rax
movsd 0x518(%rsp), %xmm1
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x26908(%rip), %rdi     # 0x2d478
leaq 0x8b8(%rsp), %rsi
callq 0x5870
movq %rax, 0x510(%rsp)
jmp 0x6b87
movq 0x510(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x818(%rsp)
leaq 0x9e8(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x11110
movq %rax, 0x508(%rsp)
jmp 0x6bb7
movq 0x508(%rsp), %rax
cmpq $0x0, %rax
jne 0x6ce0
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x834(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x800(%rsp)
movl $0x0, 0x7fc(%rsp)
movl $0x1, 0x7f8(%rsp)
leaq 0x808(%rsp), %rdi
leaq 0x800(%rsp), %rsi
leaq 0x7fc(%rsp), %rdx
leaq 0x7f8(%rsp), %rcx
callq 0x11170
jmp 0x6c26
movl 0x88c(%rsp), %eax
incl %eax
movl %eax, 0x7e8(%rsp)
movl $0x0, 0x7e4(%rsp)
movl $0x1, 0x7e0(%rsp)
leaq 0x7ec(%rsp), %rdi
leaq 0x7e8(%rsp), %rsi
leaq 0x7e4(%rsp), %rdx
leaq 0x7e0(%rsp), %rcx
callq 0x111b0
jmp 0x6c73
leaq 0x9e8(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x500(%rsp)
jmp 0x6c92
movq 0x500(%rsp), %rdi
leaq 0x808(%rsp), %rsi
callq 0x112e0
leaq 0x988(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4f8(%rsp)
jmp 0x6cc6
movq 0x4f8(%rsp), %rdi
leaq 0x7ec(%rsp), %rsi
callq 0x11320
jmp 0x6df2
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x834(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x4e8(%rsp)
leaq 0x9e8(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4f0(%rsp)
jmp 0x6d1f
movq 0x4f0(%rsp), %rdi
callq 0x11360
movq 0x4e8(%rsp), %rdx
movq (%rax), %rcx
addq %rdx, %rcx
movq %rcx, (%rax)
movl 0x88c(%rsp), %eax
incl %eax
cltq
movq %rax, 0x4d8(%rsp)
leaq 0x988(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4e0(%rsp)
jmp 0x6d6f
movq 0x4e0(%rsp), %rdi
callq 0x11360
movq 0x4d8(%rsp), %rdx
movq (%rax), %rcx
addq %rdx, %rcx
movq %rcx, (%rax)
leaq 0x9e8(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4d0(%rsp)
jmp 0x6dac
movq 0x4d0(%rsp), %rdi
callq 0x11370
movl (%rax), %ecx
incl %ecx
movl %ecx, (%rax)
leaq 0x988(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4c8(%rsp)
jmp 0x6dde
movq 0x4c8(%rsp), %rdi
callq 0x11370
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x834(%rsp), %rcx
subq %rcx, %rax
movslq 0x8f4(%rsp), %rcx
cmpq %rcx, %rax
ja 0x6ea7
movsd 0xcb0(%rsp), %xmm0
movsd 0x191dc(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, 0xcb0(%rsp)
leaq 0xb38(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x4c0(%rsp)
jmp 0x6e58
movq 0x4c0(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x1919c(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x9e8(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4b8(%rsp)
jmp 0x6e93
movq 0x4b8(%rsp), %rdi
callq 0x11380
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movl 0x88c(%rsp), %eax
cmpl 0x8f4(%rsp), %eax
jge 0x7004
leaq 0x988(%rsp), %rdi
leaq 0x818(%rsp), %rsi
callq 0x111f0
movq %rax, 0x4b0(%rsp)
jmp 0x6eda
movq 0x4b0(%rsp), %rdi
callq 0x11380
movl (%rax), %ecx
incl %ecx
movl %ecx, (%rax)
movsd 0xca8(%rsp), %xmm0
movsd 0x1910a(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, 0xca8(%rsp)
leaq 0xb08(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x4a8(%rsp)
jmp 0x6f2a
movq 0x4a8(%rsp), %rax
movsd 0x190ce(%rip), %xmm0    # 0x20008
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movslq 0x8b0(%rsp), %rsi
leaq 0x26337(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x0, (%rax)
jne 0x6f7a
movsd 0x190a5(%rip), %xmm0    # 0x20008
addsd 0x950(%rsp), %xmm0
movsd %xmm0, 0x950(%rsp)
jmp 0x7002
movslq 0x8b0(%rsp), %rsi
leaq 0x262ff(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x1, (%rax)
jne 0x6faf
movsd 0x1906d(%rip), %xmm0    # 0x20008
addsd 0x938(%rsp), %xmm0
movsd %xmm0, 0x938(%rsp)
jmp 0x7000
movslq 0x8b0(%rsp), %rsi
leaq 0x262ca(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x2, (%rax)
jne 0x6fe4
movsd 0x19038(%rip), %xmm0    # 0x20008
addsd 0x920(%rsp), %xmm0
movsd %xmm0, 0x920(%rsp)
jmp 0x6ffe
movsd 0x1901c(%rip), %xmm0    # 0x20008
addsd 0x908(%rsp), %xmm0
movsd %xmm0, 0x908(%rsp)
jmp 0x7000
jmp 0x7002
jmp 0x7004
jmp 0x7006
jmp 0x7008
movl 0x834(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x834(%rsp)
jmp 0x67d2
leaq 0x898(%rsp), %rdi
callq 0x11390
leaq 0x26206(%rip), %rdi     # 0x2d238
leaq 0x1919b(%rip), %rsi     # 0x201d4
callq 0x2270
jmp 0x7040
movl $0x0, 0x7dc(%rsp)
movl 0x7dc(%rsp), %eax
cmpl 0x26454(%rip), %eax     # 0x2d4ac
jge 0x7113
movq 0x648(%rsp), %rdi
movl 0x8b8(%rsp), %esi
movl 0x7dc(%rsp), %edx
movl 0x8b0(%rsp), %ecx
callq 0xffa0
movsd %xmm0, 0x4a0(%rsp)
jmp 0x708b
movsd 0x4a0(%rsp), %xmm0
movsd %xmm0, 0x7d0(%rsp)
leaq 0x7dc(%rsp), %rdi
leaq 0x7d0(%rsp), %rsi
callq 0x10da0
movsd %xmm0, 0x490(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x70c4
movsd 0x490(%rsp), %xmm0
movl 0x49c(%rsp), %eax
movl %eax, 0x7c0(%rsp)
movsd %xmm0, 0x7c8(%rsp)
leaq 0x898(%rsp), %rdi
leaq 0x7c0(%rsp), %rsi
callq 0x10d70
jmp 0x70fb
jmp 0x70fd
movl 0x7dc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x7dc(%rsp)
jmp 0x704b
leaq 0x898(%rsp), %rdi
movq %rdi, 0x488(%rsp)
callq 0x10e30
movq 0x488(%rsp), %rdi
movq %rax, 0x7b8(%rsp)
callq 0x10e60
movq %rax, 0x7b0(%rsp)
movq 0x7b8(%rsp), %rdi
movq 0x7b0(%rsp), %rsi
leaq -0x461c(%rip), %rdx     # 0x2b40
callq 0x10de0
jmp 0x7163
leaq 0x260ce(%rip), %rdi     # 0x2d238
leaq 0x18eef(%rip), %rsi     # 0x20060
callq 0x2270
jmp 0x7178
leaq 0x898(%rsp), %rdi
movq %rdi, 0x480(%rsp)
callq 0x10e30
movq 0x480(%rsp), %rdi
movq %rax, 0x7a8(%rsp)
callq 0x10e60
movq %rax, 0x7a0(%rsp)
movq 0x7a8(%rsp), %rdi
movq 0x7a0(%rsp), %rsi
leaq -0x4681(%rip), %rdx     # 0x2b40
callq 0x10de0
jmp 0x71c8
leaq 0x898(%rsp), %rdi
callq 0x10e90
subq $0x1, %rax
movl %eax, 0x79c(%rsp)
movslq 0x79c(%rsp), %rax
movq %rax, 0x478(%rsp)
leaq 0x898(%rsp), %rdi
callq 0x10e90
movq %rax, %rcx
movq 0x478(%rsp), %rax
movslq 0x86c(%rsp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jb 0x72c4
movl 0x8b8(%rsp), %eax
movl %eax, 0x46c(%rsp)
movslq 0x79c(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq 0x648(%rsp), %rdi
movl 0x46c(%rsp), %esi
movl (%rax), %edx
movl 0x8b0(%rsp), %ecx
callq 0xffa0
movsd %xmm0, 0x470(%rsp)
jmp 0x7267
movsd 0x470(%rsp), %xmm0
movsd %xmm0, 0x790(%rsp)
movsd 0x790(%rsp), %xmm0
movsd %xmm0, 0x460(%rsp)
movslq 0x79c(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movsd 0x460(%rsp), %xmm0
movsd %xmm0, 0x8(%rax)
movl 0x79c(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x79c(%rsp)
jmp 0x71e0
leaq 0x898(%rsp), %rdi
movq %rdi, 0x458(%rsp)
callq 0x10e30
movq 0x458(%rsp), %rdi
movq %rax, 0x788(%rsp)
callq 0x10e60
movq %rax, 0x780(%rsp)
movq 0x788(%rsp), %rdi
movq 0x780(%rsp), %rsi
leaq -0x47cd(%rip), %rdx     # 0x2b40
callq 0x10de0
jmp 0x7314
xorps %xmm0, %xmm0
movsd %xmm0, 0x890(%rsp)
movl $0x0, 0x88c(%rsp)
leaq 0x898(%rsp), %rdi
callq 0x10e90
subq $0x1, %rax
movl %eax, 0x77c(%rsp)
cmpl $0x0, 0x77c(%rsp)
jl 0x7b8f
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x77c(%rsp), %rcx
subq %rcx, %rax
movslq 0x86c(%rsp), %rcx
cmpq %rcx, %rax
ja 0x73e2
movslq 0x77c(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq %rax, %rsi
leaq 0x8b8(%rsp), %rdi
callq 0xc100
movq %rax, 0x450(%rsp)
jmp 0x73a5
movq 0x450(%rsp), %rax
movq %rax, 0x774(%rsp)
leaq 0x8c0(%rsp), %rdi
leaq 0x774(%rsp), %rsi
callq 0x10ed0
movq %rax, 0x448(%rsp)
jmp 0x73d4
movq 0x448(%rsp), %rax
movl $0x1, (%rax)
movq 0x648(%rsp), %rax
addq $0xf0, %rax
movq %rax, 0x438(%rsp)
leaq 0x8b8(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0xc100
movq %rax, 0x440(%rsp)
jmp 0x7417
movq 0x438(%rsp), %rdi
movq 0x440(%rsp), %rax
movq %rax, 0x76c(%rsp)
leaq 0x76c(%rsp), %rsi
callq 0xc010
movq %rax, 0x430(%rsp)
jmp 0x7446
movslq 0x77c(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq 0x430(%rsp), %rdi
movq %rax, %rsi
callq 0x10fc0
movq %rax, 0x428(%rsp)
jmp 0x7475
movq 0x428(%rsp), %rax
cmpq $0x0, %rax
jbe 0x749d
movsd 0x18b7d(%rip), %xmm0    # 0x20008
addsd 0x890(%rsp), %xmm0
movsd %xmm0, 0x890(%rsp)
movq 0x648(%rsp), %rax
addq $0xf0, %rax
movq %rax, 0x418(%rsp)
leaq 0x8b8(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0xc100
movq %rax, 0x420(%rsp)
jmp 0x74d2
movq 0x418(%rsp), %rdi
movq 0x420(%rsp), %rax
movq %rax, 0x764(%rsp)
leaq 0x764(%rsp), %rsi
callq 0xc010
movq %rax, 0x410(%rsp)
jmp 0x7501
movslq 0x77c(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq 0x410(%rsp), %rdi
movq %rax, %rsi
callq 0x10fc0
movq %rax, 0x408(%rsp)
jmp 0x7530
movq 0x408(%rsp), %rax
cmpq $0x0, %rax
jne 0x754f
movl 0x88c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x88c(%rsp)
movslq 0x77c(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movl (%rax), %eax
cmpl 0x8b4(%rsp), %eax
jne 0x7b77
leaq 0x898(%rsp), %rdi
movq %rdi, 0x3c8(%rsp)
callq 0x10e90
movq 0x3c8(%rsp), %rdi
movslq 0x77c(%rsp), %rcx
subq %rcx, %rax
movq %rax, %xmm1
movaps 0x18a89(%rip), %xmm0    # 0x20030
movaps %xmm0, 0x3d0(%rsp)
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x18a85(%rip), %xmm0    # 0x20040
movaps %xmm0, 0x3e0(%rsp)
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0xcd0(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xcd0(%rsp)
movl 0x88c(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
movsd 0xcc8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xcc8(%rsp)
callq 0x10e90
movaps 0x3d0(%rsp), %xmm2
movaps 0x3e0(%rsp), %xmm1
movslq 0x77c(%rsp), %rcx
subq %rcx, %rax
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, 0x3f8(%rsp)
leaq 0xbf8(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x400(%rsp)
jmp 0x766b
movq 0x400(%rsp), %rax
movsd 0x3f8(%rsp), %xmm1
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl 0x88c(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x3b8(%rsp)
leaq 0xbc8(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x3c0(%rsp)
jmp 0x76bd
movq 0x3c0(%rsp), %rax
movsd 0x3b8(%rsp), %xmm1
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x25d97(%rip), %rdi     # 0x2d478
leaq 0x8b4(%rsp), %rsi
callq 0x5870
movq %rax, 0x3b0(%rsp)
jmp 0x76f8
movq 0x3b0(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x760(%rsp)
leaq 0x9b8(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x11110
movq %rax, 0x3a8(%rsp)
jmp 0x7728
movq 0x3a8(%rsp), %rax
cmpq $0x0, %rax
jne 0x7851
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x77c(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x748(%rsp)
movl $0x0, 0x744(%rsp)
movl $0x1, 0x740(%rsp)
leaq 0x750(%rsp), %rdi
leaq 0x748(%rsp), %rsi
leaq 0x744(%rsp), %rdx
leaq 0x740(%rsp), %rcx
callq 0x11170
jmp 0x7797
movl 0x88c(%rsp), %eax
incl %eax
movl %eax, 0x730(%rsp)
movl $0x0, 0x72c(%rsp)
movl $0x1, 0x728(%rsp)
leaq 0x734(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x72c(%rsp), %rdx
leaq 0x728(%rsp), %rcx
callq 0x111b0
jmp 0x77e4
leaq 0x9b8(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x3a0(%rsp)
jmp 0x7803
movq 0x3a0(%rsp), %rdi
leaq 0x750(%rsp), %rsi
callq 0x112e0
leaq 0x958(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x398(%rsp)
jmp 0x7837
movq 0x398(%rsp), %rdi
leaq 0x734(%rsp), %rsi
callq 0x11320
jmp 0x7963
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x77c(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x388(%rsp)
leaq 0x9b8(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x390(%rsp)
jmp 0x7890
movq 0x390(%rsp), %rdi
callq 0x11360
movq 0x388(%rsp), %rdx
movq (%rax), %rcx
addq %rdx, %rcx
movq %rcx, (%rax)
movl 0x88c(%rsp), %eax
incl %eax
cltq
movq %rax, 0x378(%rsp)
leaq 0x958(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x380(%rsp)
jmp 0x78e0
movq 0x380(%rsp), %rdi
callq 0x11360
movq 0x378(%rsp), %rdx
movq (%rax), %rcx
addq %rdx, %rcx
movq %rcx, (%rax)
leaq 0x9b8(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x370(%rsp)
jmp 0x791d
movq 0x370(%rsp), %rdi
callq 0x11370
movl (%rax), %ecx
incl %ecx
movl %ecx, (%rax)
leaq 0x958(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x368(%rsp)
jmp 0x794f
movq 0x368(%rsp), %rdi
callq 0x11370
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x77c(%rsp), %rcx
subq %rcx, %rax
movslq 0x8f4(%rsp), %rcx
cmpq %rcx, %rax
ja 0x7a18
movsd 0xca0(%rsp), %xmm0
movsd 0x1866b(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, 0xca0(%rsp)
leaq 0xad8(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x360(%rsp)
jmp 0x79c9
movq 0x360(%rsp), %rax
movsd (%rax), %xmm0
movsd 0x1862b(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x9b8(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x358(%rsp)
jmp 0x7a04
movq 0x358(%rsp), %rdi
callq 0x11380
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movl 0x88c(%rsp), %eax
cmpl 0x8f4(%rsp), %eax
jge 0x7b75
leaq 0x958(%rsp), %rdi
leaq 0x760(%rsp), %rsi
callq 0x111f0
movq %rax, 0x350(%rsp)
jmp 0x7a4b
movq 0x350(%rsp), %rdi
callq 0x11380
movl (%rax), %ecx
incl %ecx
movl %ecx, (%rax)
movsd 0xc98(%rsp), %xmm0
movsd 0x18599(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, 0xc98(%rsp)
leaq 0xaa8(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x348(%rsp)
jmp 0x7a9b
movq 0x348(%rsp), %rax
movsd 0x1855d(%rip), %xmm0    # 0x20008
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movslq 0x8b0(%rsp), %rsi
leaq 0x257c6(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x0, (%rax)
jne 0x7aeb
movsd 0x18534(%rip), %xmm0    # 0x20008
addsd 0x948(%rsp), %xmm0
movsd %xmm0, 0x948(%rsp)
jmp 0x7b73
movslq 0x8b0(%rsp), %rsi
leaq 0x2578e(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x1, (%rax)
jne 0x7b20
movsd 0x184fc(%rip), %xmm0    # 0x20008
addsd 0x930(%rsp), %xmm0
movsd %xmm0, 0x930(%rsp)
jmp 0x7b71
movslq 0x8b0(%rsp), %rsi
leaq 0x25759(%rip), %rdi     # 0x2d288
callq 0xff70
cmpl $0x2, (%rax)
jne 0x7b55
movsd 0x184c7(%rip), %xmm0    # 0x20008
addsd 0x918(%rsp), %xmm0
movsd %xmm0, 0x918(%rsp)
jmp 0x7b6f
movsd 0x184ab(%rip), %xmm0    # 0x20008
addsd 0x900(%rsp), %xmm0
movsd %xmm0, 0x900(%rsp)
jmp 0x7b71
jmp 0x7b73
jmp 0x7b75
jmp 0x7b77
jmp 0x7b79
movl 0x77c(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x77c(%rsp)
jmp 0x7343
leaq 0x898(%rsp), %rdi
callq 0x11390
movl $0x0, 0x724(%rsp)
movl 0x724(%rsp), %eax
cmpl 0x258f4(%rip), %eax     # 0x2d4a8
jge 0x7c88
movq 0x648(%rsp), %rdi
movq $0x0, 0x718(%rsp)
movl 0x8b8(%rsp), %esi
movl 0x8b4(%rsp), %edx
movl 0x724(%rsp), %ecx
callq 0xffa0
movsd %xmm0, 0x340(%rsp)
jmp 0x7bf3
movsd 0x340(%rsp), %xmm1
movsd 0x718(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x718(%rsp)
leaq 0x724(%rsp), %rdi
leaq 0x718(%rsp), %rsi
callq 0x10da0
movsd %xmm0, 0x330(%rsp)
movl %eax, 0x33c(%rsp)
jmp 0x7c39
movsd 0x330(%rsp), %xmm0
movl 0x33c(%rsp), %eax
movl %eax, 0x708(%rsp)
movsd %xmm0, 0x710(%rsp)
leaq 0x898(%rsp), %rdi
leaq 0x708(%rsp), %rsi
callq 0x10d70
jmp 0x7c70
jmp 0x7c72
movl 0x724(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x724(%rsp)
jmp 0x7ba7
leaq 0x898(%rsp), %rdi
movq %rdi, 0x328(%rsp)
callq 0x10e30
movq 0x328(%rsp), %rdi
movq %rax, 0x700(%rsp)
callq 0x10e60
movq %rax, 0x6f8(%rsp)
movq 0x700(%rsp), %rdi
movq 0x6f8(%rsp), %rsi
leaq -0x5191(%rip), %rdx     # 0x2b40
callq 0x10de0
jmp 0x7cd8
xorps %xmm0, %xmm0
movsd %xmm0, 0x890(%rsp)
movl $0x0, 0x88c(%rsp)
leaq 0x898(%rsp), %rdi
callq 0x10e90
subq $0x1, %rax
movl %eax, 0x6f4(%rsp)
cmpl $0x0, 0x6f4(%rsp)
jl 0x8102
movq 0x648(%rsp), %rax
addq $0xf0, %rax
movq %rax, 0x318(%rsp)
movslq 0x6f4(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq %rax, %rsi
leaq 0x8b8(%rsp), %rdi
callq 0xc100
movq %rax, 0x320(%rsp)
jmp 0x7d5a
movq 0x318(%rsp), %rdi
movq 0x320(%rsp), %rax
movq %rax, 0x6ec(%rsp)
leaq 0x6ec(%rsp), %rsi
callq 0xc010
movq %rax, 0x310(%rsp)
jmp 0x7d89
movq 0x310(%rsp), %rdi
leaq 0x8b4(%rsp), %rsi
callq 0x10fc0
movq %rax, 0x308(%rsp)
jmp 0x7da8
movq 0x308(%rsp), %rax
cmpq $0x0, %rax
jbe 0x7dd0
movsd 0x1824a(%rip), %xmm0    # 0x20008
addsd 0x890(%rsp), %xmm0
movsd %xmm0, 0x890(%rsp)
movq 0x648(%rsp), %rax
addq $0xf0, %rax
movq %rax, 0x2f8(%rsp)
movslq 0x6f4(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movq %rax, %rsi
leaq 0x8b8(%rsp), %rdi
callq 0xc100
movq %rax, 0x300(%rsp)
jmp 0x7e15
movq 0x2f8(%rsp), %rdi
movq 0x300(%rsp), %rax
movq %rax, 0x6e4(%rsp)
leaq 0x6e4(%rsp), %rsi
callq 0xc010
movq %rax, 0x2f0(%rsp)
jmp 0x7e44
movq 0x2f0(%rsp), %rdi
leaq 0x8b4(%rsp), %rsi
callq 0x10fc0
movq %rax, 0x2e8(%rsp)
jmp 0x7e63
movq 0x2e8(%rsp), %rax
cmpq $0x0, %rax
jne 0x7e82
movl 0x88c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x88c(%rsp)
movslq 0x6f4(%rsp), %rsi
leaq 0x898(%rsp), %rdi
callq 0x10eb0
movl (%rax), %eax
cmpl 0x8b0(%rsp), %eax
jne 0x80ea
leaq 0x898(%rsp), %rdi
movq %rdi, 0x2a8(%rsp)
callq 0x10e90
movq 0x2a8(%rsp), %rdi
movslq 0x6f4(%rsp), %rcx
subq %rcx, %rax
movq %rax, %xmm1
movaps 0x18156(%rip), %xmm0    # 0x20030
movaps %xmm0, 0x2b0(%rsp)
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x18152(%rip), %xmm0    # 0x20040
movaps %xmm0, 0x2c0(%rsp)
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0xcc0(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xcc0(%rsp)
movl 0x88c(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
movsd 0xcb8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xcb8(%rsp)
callq 0x10e90
movaps 0x2b0(%rsp), %xmm2
movaps 0x2c0(%rsp), %xmm1
movslq 0x6f4(%rsp), %rcx
subq %rcx, %rax
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, 0x2d8(%rsp)
leaq 0xb98(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x2e0(%rsp)
jmp 0x7f9e
movq 0x2e0(%rsp), %rax
movsd 0x2d8(%rsp), %xmm1
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl 0x88c(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, 0x298(%rsp)
leaq 0xb68(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x2a0(%rsp)
jmp 0x7ff0
movq 0x2a0(%rsp), %rax
movsd 0x298(%rsp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
leaq 0x898(%rsp), %rdi
callq 0x10e90
movslq 0x6f4(%rsp), %rcx
subq %rcx, %rax
movslq 0x8f4(%rsp), %rcx
cmpq %rcx, %rax
ja 0x8083
movsd 0xc90(%rsp), %xmm0
movsd 0x17fc9(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, 0xc90(%rsp)
leaq 0xa78(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x290(%rsp)
jmp 0x806b
movq 0x290(%rsp), %rax
movsd 0x17f8d(%rip), %xmm0    # 0x20008
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movl 0x88c(%rsp), %eax
cmpl 0x8f4(%rsp), %eax
jge 0x80e8
movsd 0xc88(%rsp), %xmm0
movsd 0x17f64(%rip), %xmm1    # 0x20008
addsd %xmm1, %xmm0
movsd %xmm0, 0xc88(%rsp)
leaq 0xa48(%rsp), %rdi
leaq 0x8b0(%rsp), %rsi
callq 0x11020
movq %rax, 0x288(%rsp)
jmp 0x80d0
movq 0x288(%rsp), %rax
movsd 0x17f28(%rip), %xmm0    # 0x20008
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
jmp 0x8102
jmp 0x80ec
movl 0x6f4(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0x6f4(%rsp)
jmp 0x7d07
movl 0x8bc(%rsp), %eax
movl $0x64, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x8a2f
movl 0x8bc(%rsp), %esi
movq 0x24eb0(%rip), %rdi     # 0x2cfd8
callq 0x2350
movq %rax, 0x280(%rsp)
jmp 0x8137
movq 0x280(%rsp), %rdi
leaq 0x17fd8(%rip), %rsi     # 0x2011e
callq 0x21c0
movq %rax, 0x278(%rsp)
jmp 0x8155
movq 0x278(%rsp), %rdi
leaq 0x17f03(%rip), %rsi     # 0x20067
callq 0x21c0
movq %rax, 0x270(%rsp)
jmp 0x8173
movq 0x270(%rsp), %rdi
movsd 0xce0(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x268(%rsp)
jmp 0x81a4
movq 0x268(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x260(%rsp)
jmp 0x81c0
movq 0x260(%rsp), %rdi
movsd 0xcb0(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x258(%rsp)
jmp 0x81f1
movq 0x258(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x250(%rsp)
jmp 0x820d
movq 0x250(%rsp), %rdi
movsd 0xcd0(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x248(%rsp)
jmp 0x823e
movq 0x248(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x240(%rsp)
jmp 0x825a
movq 0x240(%rsp), %rdi
movsd 0xca0(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x238(%rsp)
jmp 0x828b
movq 0x238(%rsp), %rdi
leaq 0x17dcd(%rip), %rsi     # 0x20067
callq 0x21c0
movq %rax, 0x230(%rsp)
jmp 0x82a9
movq 0x230(%rsp), %rdi
movsd 0xcd8(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x228(%rsp)
jmp 0x82da
movq 0x228(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x220(%rsp)
jmp 0x82f6
movq 0x220(%rsp), %rdi
movsd 0xca8(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x218(%rsp)
jmp 0x8327
movq 0x218(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x210(%rsp)
jmp 0x8343
movq 0x210(%rsp), %rdi
movsd 0xcc8(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x208(%rsp)
jmp 0x8374
movq 0x208(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x200(%rsp)
jmp 0x8390
movq 0x200(%rsp), %rdi
movsd 0xc98(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x1f8(%rsp)
jmp 0x83c1
movq 0x1f8(%rsp), %rdi
movq 0x24bf0(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x83d7
movq 0x24bfa(%rip), %rdi     # 0x2cfd8
leaq 0x17c82(%rip), %rsi     # 0x20067
callq 0x21c0
movq %rax, 0x1f0(%rsp)
jmp 0x83f4
movq 0x1f0(%rsp), %rdi
movsd 0xcc0(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x1e8(%rsp)
jmp 0x8425
movq 0x1e8(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x1e0(%rsp)
jmp 0x8441
movq 0x1e0(%rsp), %rdi
movsd 0xc90(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x1d8(%rsp)
jmp 0x8472
movq 0x1d8(%rsp), %rdi
leaq 0x17be6(%rip), %rsi     # 0x20067
callq 0x21c0
movq %rax, 0x1d0(%rsp)
jmp 0x8490
movq 0x1d0(%rsp), %rdi
movsd 0xcb8(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x1c8(%rsp)
jmp 0x84c1
movq 0x1c8(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x1c0(%rsp)
jmp 0x84dd
movq 0x1c0(%rsp), %rdi
movsd 0xc88(%rsp), %xmm0
movl 0x8bc(%rsp), %eax
incl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0x1b8(%rsp)
jmp 0x850e
movq 0x1b8(%rsp), %rdi
movq 0x24aa3(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x8524
movsd 0x950(%rsp), %xmm0
movq 0x24aa4(%rip), %rdi     # 0x2cfd8
callq 0x23c0
movq %rax, 0x1b0(%rsp)
jmp 0x8543
movq 0x1b0(%rsp), %rdi
leaq 0x17c33(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x1a8(%rsp)
jmp 0x8561
movq 0x1a8(%rsp), %rdi
movsd 0x920(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x1a0(%rsp)
jmp 0x8581
movq 0x1a0(%rsp), %rdi
leaq 0x17bf5(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x198(%rsp)
jmp 0x859f
movq 0x198(%rsp), %rdi
movsd 0x938(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x190(%rsp)
jmp 0x85bf
movq 0x190(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x188(%rsp)
jmp 0x85db
movq 0x188(%rsp), %rdi
movsd 0x908(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x180(%rsp)
jmp 0x85fb
movq 0x180(%rsp), %rdi
movq 0x249b6(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x8611
movsd 0x948(%rsp), %xmm0
movq 0x249b7(%rip), %rdi     # 0x2cfd8
callq 0x23c0
movq %rax, 0x178(%rsp)
jmp 0x8630
movq 0x178(%rsp), %rdi
leaq 0x17b46(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x170(%rsp)
jmp 0x864e
movq 0x170(%rsp), %rdi
movsd 0x918(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x168(%rsp)
jmp 0x866e
movq 0x168(%rsp), %rdi
leaq 0x17b08(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x160(%rsp)
jmp 0x868c
movq 0x160(%rsp), %rdi
movsd 0x930(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x158(%rsp)
jmp 0x86ac
movq 0x158(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x150(%rsp)
jmp 0x86c8
movq 0x150(%rsp), %rdi
movsd 0x900(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x148(%rsp)
jmp 0x86e8
movq 0x148(%rsp), %rdi
movq 0x248c9(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x86fe
movsd 0x940(%rsp), %xmm0
movq 0x248ca(%rip), %rdi     # 0x2cfd8
callq 0x23c0
movq %rax, 0x140(%rsp)
jmp 0x871d
movq 0x140(%rsp), %rdi
leaq 0x17a59(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x138(%rsp)
jmp 0x873b
movq 0x138(%rsp), %rdi
movsd 0x910(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x130(%rsp)
jmp 0x875b
movq 0x130(%rsp), %rdi
leaq 0x17a1b(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x128(%rsp)
jmp 0x8779
movq 0x128(%rsp), %rdi
movsd 0x928(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x120(%rsp)
jmp 0x8799
movq 0x120(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0x118(%rsp)
jmp 0x87b5
movq 0x118(%rsp), %rdi
movsd 0x8f8(%rsp), %xmm0
callq 0x23c0
movq %rax, 0x110(%rsp)
jmp 0x87d5
movq 0x110(%rsp), %rdi
movq 0x247dc(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x87eb
movsd 0x950(%rsp), %xmm0
movsd 0x940(%rsp), %xmm1
divsd %xmm1, %xmm0
movq 0x247d0(%rip), %rdi     # 0x2cfd8
callq 0x23c0
movq %rax, 0x108(%rsp)
jmp 0x8817
movq 0x108(%rsp), %rdi
leaq 0x1795f(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0x100(%rsp)
jmp 0x8835
movq 0x100(%rsp), %rdi
movsd 0x920(%rsp), %xmm0
movsd 0x910(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0xf8(%rsp)
jmp 0x8862
movq 0xf8(%rsp), %rdi
leaq 0x17914(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0xf0(%rsp)
jmp 0x8880
movq 0xf0(%rsp), %rdi
movsd 0x938(%rsp), %xmm0
movsd 0x928(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0xe8(%rsp)
jmp 0x88ad
movq 0xe8(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0xe0(%rsp)
jmp 0x88c9
movq 0xe0(%rsp), %rdi
movsd 0x908(%rsp), %xmm0
movsd 0x8f8(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0xd8(%rsp)
jmp 0x88f6
movq 0xd8(%rsp), %rdi
movq 0x246bb(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x890c
movsd 0x948(%rsp), %xmm0
movsd 0x940(%rsp), %xmm1
divsd %xmm1, %xmm0
movq 0x246af(%rip), %rdi     # 0x2cfd8
callq 0x23c0
movq %rax, 0xd0(%rsp)
jmp 0x8938
movq 0xd0(%rsp), %rdi
leaq 0x1783e(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0xc8(%rsp)
jmp 0x8956
movq 0xc8(%rsp), %rdi
movsd 0x918(%rsp), %xmm0
movsd 0x910(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0xc0(%rsp)
jmp 0x8983
movq 0xc0(%rsp), %rdi
leaq 0x177f3(%rip), %rsi     # 0x20185
callq 0x21c0
movq %rax, 0xb8(%rsp)
jmp 0x89a1
movq 0xb8(%rsp), %rdi
movsd 0x930(%rsp), %xmm0
movsd 0x928(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0xb0(%rsp)
jmp 0x89ce
movq 0xb0(%rsp), %rdi
movl $0x20, %esi
callq 0x2230
movq %rax, 0xa8(%rsp)
jmp 0x89ea
movq 0xa8(%rsp), %rdi
movsd 0x900(%rsp), %xmm0
movsd 0x8f8(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x23c0
movq %rax, 0xa0(%rsp)
jmp 0x8a17
movq 0xa0(%rsp), %rdi
movq 0x2459a(%rip), %rsi     # 0x2cfc0
callq 0x2210
jmp 0x8a2d
jmp 0x8a2f
leaq 0x898(%rsp), %rdi
callq 0x113b0
movl 0x8bc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x8bc(%rsp)
jmp 0x6320
leaq 0x1777d(%rip), %rdi     # 0x201d6
leaq 0x17781(%rip), %rsi     # 0x201e1
callq 0x2240
movq %rax, 0x98(%rsp)
jmp 0x8a6f
movq 0x98(%rsp), %rax
movq %rax, 0x6d8(%rsp)
leaq 0x9e8(%rsp), %rdi
callq 0x11410
movq %rax, 0x6d0(%rsp)
leaq 0x9e8(%rsp), %rdi
callq 0x11460
movq %rax, 0x6c8(%rsp)
leaq 0x6d0(%rsp), %rdi
leaq 0x6c8(%rsp), %rsi
callq 0x11440
testb $0x1, %al
jne 0x8ac7
jmp 0x8b92
movq 0x6d8(%rsp), %rax
movq %rax, 0x78(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x11490
movl (%rax), %eax
movl %eax, 0x84(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11360
movq (%rax), %rax
movq %rax, 0x88(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11380
movl (%rax), %eax
movl %eax, 0x94(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11370
movq 0x78(%rsp), %rdi
movl 0x84(%rsp), %edx
movq 0x88(%rsp), %rcx
movl 0x94(%rsp), %r8d
movl (%rax), %r9d
leaq 0x17674(%rip), %rsi     # 0x201e3
movb $0x0, %al
callq 0x22a0
leaq 0x6d0(%rsp), %rdi
xorl %esi, %esi
callq 0x114b0
movq %rax, 0x6c0(%rsp)
jmp 0x8a94
movq 0x6d8(%rsp), %rdi
callq 0x21d0
jmp 0x8ba1
leaq 0x1764a(%rip), %rdi     # 0x201f2
leaq 0x17632(%rip), %rsi     # 0x201e1
callq 0x2240
movq %rax, 0x70(%rsp)
jmp 0x8bbb
movq 0x70(%rsp), %rax
movq %rax, 0x6b8(%rsp)
leaq 0x988(%rsp), %rdi
callq 0x11410
movq %rax, 0x6b0(%rsp)
leaq 0x988(%rsp), %rdi
callq 0x11460
movq %rax, 0x6a8(%rsp)
leaq 0x6b0(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
callq 0x11440
testb $0x1, %al
jne 0x8c10
jmp 0x8cc9
movq 0x6b8(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x6b0(%rsp), %rdi
callq 0x11490
movl (%rax), %eax
movl %eax, 0x5c(%rsp)
leaq 0x6b0(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11360
movq (%rax), %rax
movq %rax, 0x60(%rsp)
leaq 0x6b0(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11380
movl (%rax), %eax
movl %eax, 0x6c(%rsp)
leaq 0x6b0(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11370
movq 0x50(%rsp), %rdi
movl 0x5c(%rsp), %edx
movq 0x60(%rsp), %rcx
movl 0x6c(%rsp), %r8d
movl (%rax), %r9d
leaq 0x1753d(%rip), %rsi     # 0x201e3
movb $0x0, %al
callq 0x22a0
leaq 0x6b0(%rsp), %rdi
xorl %esi, %esi
callq 0x114b0
movq %rax, 0x6a0(%rsp)
jmp 0x8bdd
movq 0x6b8(%rsp), %rdi
callq 0x21d0
jmp 0x8cd8
leaq 0x17521(%rip), %rdi     # 0x20200
leaq 0x174fb(%rip), %rsi     # 0x201e1
callq 0x2240
movq %rax, 0x48(%rsp)
jmp 0x8cf2
movq 0x48(%rsp), %rax
movq %rax, 0x698(%rsp)
leaq 0x9b8(%rsp), %rdi
callq 0x11410
movq %rax, 0x690(%rsp)
leaq 0x9b8(%rsp), %rdi
callq 0x11460
movq %rax, 0x688(%rsp)
leaq 0x690(%rsp), %rdi
leaq 0x688(%rsp), %rsi
callq 0x11440
testb $0x1, %al
jne 0x8d47
jmp 0x8e00
movq 0x698(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x690(%rsp), %rdi
callq 0x11490
movl (%rax), %eax
movl %eax, 0x34(%rsp)
leaq 0x690(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11360
movq (%rax), %rax
movq %rax, 0x38(%rsp)
leaq 0x690(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11380
movl (%rax), %eax
movl %eax, 0x44(%rsp)
leaq 0x690(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11370
movq 0x28(%rsp), %rdi
movl 0x34(%rsp), %edx
movq 0x38(%rsp), %rcx
movl 0x44(%rsp), %r8d
movl (%rax), %r9d
leaq 0x17406(%rip), %rsi     # 0x201e3
movb $0x0, %al
callq 0x22a0
leaq 0x690(%rsp), %rdi
xorl %esi, %esi
callq 0x114b0
movq %rax, 0x680(%rsp)
jmp 0x8d14
movq 0x698(%rsp), %rdi
callq 0x21d0
jmp 0x8e0f
leaq 0x173f5(%rip), %rdi     # 0x2020b
leaq 0x173c4(%rip), %rsi     # 0x201e1
callq 0x2240
movq %rax, 0x20(%rsp)
jmp 0x8e29
movq 0x20(%rsp), %rax
movq %rax, 0x678(%rsp)
leaq 0x958(%rsp), %rdi
callq 0x11410
movq %rax, 0x670(%rsp)
leaq 0x958(%rsp), %rdi
callq 0x11460
movq %rax, 0x668(%rsp)
leaq 0x670(%rsp), %rdi
leaq 0x668(%rsp), %rsi
callq 0x11440
testb $0x1, %al
jne 0x8e7e
jmp 0x8f35
movq 0x678(%rsp), %rax
movq %rax, (%rsp)
leaq 0x670(%rsp), %rdi
callq 0x11490
movl (%rax), %eax
movl %eax, 0xc(%rsp)
leaq 0x670(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11360
movq (%rax), %rax
movq %rax, 0x10(%rsp)
leaq 0x670(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11380
movl (%rax), %eax
movl %eax, 0x1c(%rsp)
leaq 0x670(%rsp), %rdi
callq 0x11490
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11370
movq (%rsp), %rdi
movl 0xc(%rsp), %edx
movq 0x10(%rsp), %rcx
movl 0x1c(%rsp), %r8d
movl (%rax), %r9d
leaq 0x172d1(%rip), %rsi     # 0x201e3
movb $0x0, %al
callq 0x22a0
leaq 0x670(%rsp), %rdi
xorl %esi, %esi
callq 0x114b0
movq %rax, 0x660(%rsp)
jmp 0x8e4b
movq 0x678(%rsp), %rdi
callq 0x21d0
jmp 0x8f44
leaq 0x8c0(%rsp), %rdi
callq 0x114f0
leaq 0x958(%rsp), %rdi
callq 0x11500
leaq 0x988(%rsp), %rdi
callq 0x11500
leaq 0x9b8(%rsp), %rdi
callq 0x11500
leaq 0x9e8(%rsp), %rdi
callq 0x11500
leaq 0xa18(%rsp), %rdi
callq 0x4e30
leaq 0xa48(%rsp), %rdi
callq 0x11510
leaq 0xa78(%rsp), %rdi
callq 0x11510
leaq 0xaa8(%rsp), %rdi
callq 0x11510
leaq 0xad8(%rsp), %rdi
callq 0x11510
leaq 0xb08(%rsp), %rdi
callq 0x11510
leaq 0xb38(%rsp), %rdi
callq 0x11510
leaq 0xb68(%rsp), %rdi
callq 0x11510
leaq 0xb98(%rsp), %rdi
callq 0x11510
leaq 0xbc8(%rsp), %rdi
callq 0x11510
leaq 0xbf8(%rsp), %rdi
callq 0x11510
leaq 0xc28(%rsp), %rdi
callq 0x11510
leaq 0xc58(%rsp), %rdi
callq 0x11510
addq $0xd98, %rsp            # imm = 0xD98
retq
leaq 0x8c0(%rsp), %rdi
callq 0x114f0
leaq 0x958(%rsp), %rdi
callq 0x11500
leaq 0x988(%rsp), %rdi
callq 0x11500
leaq 0x9b8(%rsp), %rdi
callq 0x11500
leaq 0x9e8(%rsp), %rdi
callq 0x11500
leaq 0xa18(%rsp), %rdi
callq 0x4e30
leaq 0xa48(%rsp), %rdi
callq 0x11510
leaq 0xa78(%rsp), %rdi
callq 0x11510
leaq 0xaa8(%rsp), %rdi
callq 0x11510
leaq 0xad8(%rsp), %rdi
callq 0x11510
leaq 0xb08(%rsp), %rdi
callq 0x11510
leaq 0xb38(%rsp), %rdi
callq 0x11510
leaq 0xb68(%rsp), %rdi
callq 0x11510
leaq 0xb98(%rsp), %rdi
callq 0x11510
leaq 0xbc8(%rsp), %rdi
callq 0x11510
leaq 0xbf8(%rsp), %rdi
callq 0x11510
leaq 0xc28(%rsp), %rdi
callq 0x11510
leaq 0xc58(%rsp), %rdi
callq 0x11510
movq 0xd60(%rsp), %rdi
callq 0x2360
nopl (%rax)