// File: /workspace/github_cpp_makefile_star2_O3/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:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4c8, %rsp            # imm = 0x4C8
movq %rdi, 0x60(%rsp)
leaq 0x6977(%rip), %rsi      # 0xb1fc
leaq 0xa9d4(%rip), %rdx      # 0xf260
leaq 0x198(%rsp), %rbx
movq %rbx, %rdi
callq 0x7a2f
movq (%rbx), %rdi
leaq 0x6855(%rip), %rsi      # 0xb0fb
callq 0x2220
movq %rax, %r13
movq (%rbx), %rdi
leaq 0x1a8(%rsp), %r12
cmpq %r12, %rdi
je 0x48c3
callq 0x21b0
leaq 0x6943(%rip), %rsi      # 0xb20d
leaq 0xa98f(%rip), %rdx      # 0xf260
leaq 0x198(%rsp), %rbx
movq %rbx, %rdi
callq 0x7a2f
movq (%rbx), %rdi
leaq 0x6810(%rip), %rsi      # 0xb0fb
callq 0x2220
movq %rax, 0xa0(%rsp)
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x4905
callq 0x21b0
movl 0xab5d(%rip), %esi      # 0xf468
movq 0xa6c6(%rip), %rdi      # 0xefd8
callq 0x22f0
leaq 0x198(%rsp), %rsi
movb $0x20, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x2210
movl 0xab37(%rip), %esi      # 0xf46c
movq %rax, %rdi
callq 0x22f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movslq 0xaafa(%rip), %r14      # 0xf468
leaq (%r14,%r14), %rbx
movq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0x7ab0
testq %r14, %r14
jle 0x4a0e
movl %ebx, %eax
movq %rax, 0x68(%rsp)
movl 0xa837(%rip), %eax      # 0xf1cc
leaq 0x6818(%rip), %rbx      # 0xb1b4
xorl %r14d, %r14d
movq 0x60(%rsp), %r15
leaq (%r14,%r14,2), %rbp
leaq (,%rbp,8), %rdi
movq 0x60(%rsp), %rcx
addq (%rcx), %rdi
movslq %eax, %rsi
callq 0x7b32
movl 0xa806(%rip), %eax      # 0xf1cc
testl %eax, %eax
jle 0x4a04
movq %r14, 0x48(%rsp)
xorl %r12d, %r12d
xorl %r14d, %r14d
movq (%r15), %rax
movq (%rax,%rbp,8), %rdx
addq %r12, %rdx
movq %r13, %rdi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2340
incq %r14
movslq 0xa7d6(%rip), %rax      # 0xf1cc
addq $0x8, %r12
cmpq %rax, %r14
jl 0x49d5
movq 0x48(%rsp), %r14
incq %r14
cmpq 0x68(%rsp), %r14
jne 0x49a4
movq %r13, 0x98(%rsp)
movq 0x60(%rsp), %rax
leaq 0x18(%rax), %r12
movslq 0xaa46(%rip), %rsi      # 0xf46c
movq %r12, %rdi
callq 0x7ab0
cmpl $0x0, 0xaa37(%rip)      # 0xf46c
movq 0xa0(%rsp), %r14
jle 0x4c67
leaq 0x676a(%rip), %r15      # 0xb1b4
xorl %r13d, %r13d
movq %r13, 0x48(%rsp)
leaq (,%r13,2), %rbx
addq %r13, %rbx
leaq (,%rbx,8), %rax
movq (%r12), %rdi
movq %rax, 0x68(%rsp)
addq %rax, %rdi
movslq 0xa754(%rip), %rsi      # 0xf1cc
callq 0x7b32
cmpl $0x0, 0xa748(%rip)      # 0xf1cc
jle 0x4ab6
xorl %ebp, %ebp
xorl %r13d, %r13d
movq (%r12), %rax
movq (%rax,%rbx,8), %rdx
addq %rbp, %rdx
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x2340
incq %r13
movslq 0xa71f(%rip), %rax      # 0xf1cc
addq $0x8, %rbp
cmpq %rax, %r13
jl 0x4a8b
movq (%r12), %rsi
movq 0x68(%rsp), %rbp
addq %rbp, %rsi
leaq 0x240(%rsp), %rdi
callq 0x7b64
movq 0x240(%rsp), %rax
movq 0x248(%rsp), %rcx
subq %rax, %rcx
je 0x4b0d
sarq $0x3, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
xorpd %xmm0, %xmm0
xorl %edx, %edx
movsd (%rax,%rdx,8), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %rdx
cmpq %rdx, %rcx
jne 0x4af6
jmp 0x4b11
xorpd %xmm0, %xmm0
ucomisd 0x6567(%rip), %xmm0     # 0xb080
jb 0x4b21
sqrtsd %xmm0, %xmm0
jmp 0x4b26
callq 0x2180
movq 0x48(%rsp), %r13
addsd 0x653d(%rip), %xmm0     # 0xb070
movq 0x240(%rsp), %rdi
testq %rdi, %rdi
je 0x4b51
movsd %xmm0, 0x48(%rsp)
callq 0x21b0
movsd 0x48(%rsp), %xmm0
ucomisd 0x651f(%rip), %xmm0     # 0xb078
jbe 0x4c54
movl $0xc, %edx
movq 0xa46d(%rip), %rbx      # 0xefd8
movq %rbx, %rdi
leaq 0x66a7(%rip), %rsi      # 0xb21c
callq 0x2210
movq %rbx, %rdi
movl %r13d, %esi
callq 0x22f0
movb $0x20, 0x198(%rsp)
movl $0x1, %edx
movq %rax, %rdi
leaq 0x198(%rsp), %rsi
callq 0x2210
movq %rax, %rbx
addq (%r12), %rbp
leaq 0x1c8(%rsp), %rdi
movq %rbp, %rsi
callq 0x7b64
movq 0x1c8(%rsp), %rax
movq 0x1d0(%rsp), %rcx
subq %rax, %rcx
je 0x4bf7
sarq $0x3, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
xorpd %xmm0, %xmm0
xorl %edx, %edx
movsd (%rax,%rdx,8), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %rdx
cmpq %rdx, %rcx
jne 0x4be0
jmp 0x4bfb
xorpd %xmm0, %xmm0
ucomisd 0x647d(%rip), %xmm0     # 0xb080
jb 0x4c0b
sqrtsd %xmm0, %xmm0
jmp 0x4c10
callq 0x2180
movq %rbx, %rdi
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq 0x1c8(%rsp), %rdi
testq %rdi, %rdi
je 0x4c54
callq 0x21b0
incq %r13
movslq 0xa80e(%rip), %rax      # 0xf46c
cmpq %rax, %r13
jl 0x4a4d
movq 0x98(%rsp), %rdi
callq 0x21d0
movq %r14, %rdi
callq 0x21d0
leaq 0x1a0(%rsp), %rcx
xorl %eax, %eax
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x4a0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x470(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x440(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x410(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x3e0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x3b0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x380(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x350(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x320(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x2f0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x2c0(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x290(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x170(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x140(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x218(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x1e8(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x260(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
movq 0x60(%rsp), %r14
movq 0x90(%r14), %rax
movq 0x98(%r14), %rcx
subq %rax, %rcx
cmpq $0x5, %rcx
jb 0x66cb
leaq 0xf0(%r14), %rbp
xorl %r12d, %r12d
leaq 0x20(%rsp), %r15
xorpd %xmm0, %xmm0
movsd %xmm0, 0x68(%rsp)
movsd %xmm0, 0xa0(%rsp)
movsd %xmm0, 0x98(%rsp)
movsd %xmm0, 0x128(%rsp)
movsd %xmm0, 0x100(%rsp)
movsd %xmm0, 0xf8(%rsp)
movsd %xmm0, 0x120(%rsp)
movsd %xmm0, 0x110(%rsp)
movsd %xmm0, 0x118(%rsp)
movsd %xmm0, 0x108(%rsp)
movsd %xmm0, 0xf0(%rsp)
movsd %xmm0, 0xe8(%rsp)
movsd %xmm0, 0xe0(%rsp)
movsd %xmm0, 0xc0(%rsp)
movsd %xmm0, 0x88(%rsp)
movsd %xmm0, 0xd0(%rsp)
movsd %xmm0, 0xb0(%rsp)
movsd %xmm0, 0x70(%rsp)
movsd %xmm0, 0xa8(%rsp)
movsd %xmm0, 0xc8(%rsp)
movsd %xmm0, 0x80(%rsp)
movsd %xmm0, 0xb8(%rsp)
movsd %xmm0, 0xd8(%rsp)
movsd %xmm0, 0x78(%rsp)
movq %rbp, 0x48(%rsp)
movq 0x78(%r14), %rcx
movl (%rcx,%r12,8), %ecx
movl %ecx, 0x40(%rsp)
movl (%rax,%r12,8), %eax
movl %eax, 0x44(%rsp)
movq 0xa8(%r14), %rax
movl (%rax,%r12,8), %eax
movl %eax, 0xc(%rsp)
leaq 0x288(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x4672
incl (%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movslq 0xc(%rsp), %rax
movq 0xa299(%rip), %rcx      # 0xf248
movl (%rcx,%rax,4), %eax
cmpl $0x2, %eax
je 0x4ff2
cmpl $0x1, %eax
je 0x4fdc
testl %eax, %eax
jne 0x500e
movsd 0x88(%rsp), %xmm0
addsd 0x608f(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x88(%rsp)
jmp 0x5022
movsd 0x78(%rsp), %xmm0
addsd 0x6076(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x78(%rsp)
jmp 0x5022
movsd 0x80(%rsp), %xmm0
addsd 0x605d(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x80(%rsp)
jmp 0x5022
movsd 0x70(%rsp), %xmm0
addsd 0x6044(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x70(%rsp)
movq %r12, 0x130(%rsp)
movq 0xa1cf(%rip), %rdx      # 0xf200
movl $0x1, %r8d
leaq 0xa1ba(%rip), %rdi      # 0xf1f8
xorl %esi, %esi
leaq 0x61e2(%rip), %rcx      # 0xb229
callq 0x2280
cmpl $0x0, 0xa419(%rip)      # 0xf46c
jle 0x50a8
xorl %ebx, %ebx
movl 0x44(%rsp), %edx
movl 0xc(%rsp), %ecx
movq %r14, %rdi
movl %ebx, %esi
callq 0x7be4
movl %ebx, 0x10(%rsp)
movsd %xmm0, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x5091
movupd 0x10(%rsp), %xmm0
movupd %xmm0, (%rsi)
addq $0x10, 0x28(%rsp)
jmp 0x509e
movq %r15, %rdi
leaq 0x10(%rsp), %rdx
callq 0x8a0e
incl %ebx
cmpl 0xa3c6(%rip), %ebx      # 0xf46c
jl 0x5057
movq 0x20(%rsp), %rbx
movq 0x28(%rsp), %r15
cmpq %r15, %rbx
je 0x50f2
movq %r15, %rax
subq %rbx, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %rbx, %rdi
movq %r15, %rsi
leaq -0x267f(%rip), %rcx     # 0x2a5c
callq 0x8b45
movq %rbx, %rdi
movq %r15, %rsi
leaq -0x2691(%rip), %rdx     # 0x2a5c
callq 0x8c10
movq 0xa107(%rip), %rdx      # 0xf200
movl $0x1, %r8d
leaq 0xa0f2(%rip), %rdi      # 0xf1f8
xorl %esi, %esi
leaq 0x5f81(%rip), %rcx      # 0xb090
callq 0x2280
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rbx
movq %rbx, %rax
subq %r15, %rax
movq %rax, %r12
shrq $0x4, %r12
leal -0x1(%r12), %ecx
movslq %ecx, %r14
sarq $0x4, %rax
leaq -0x1f4(%rax), %rcx
cmpq %r14, %rcx
ja 0x518f
addl $-0x2, %r12d
shlq $0x4, %r14
movl (%r15,%r14), %esi
movl 0x44(%rsp), %edx
movl 0xc(%rsp), %ecx
movq 0x60(%rsp), %rdi
callq 0x7be4
movq 0x20(%rsp), %r15
movsd %xmm0, 0x8(%r15,%r14)
movslq %r12d, %r14
movq 0x28(%rsp), %rbx
movq %rbx, %rax
subq %r15, %rax
sarq $0x4, %rax
leaq -0x1f4(%rax), %rcx
leal -0x1(%r14), %r12d
cmpq %r14, %rcx
jbe 0x5147
cmpq %rbx, %r15
je 0x51d1
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x2752(%rip), %rcx     # 0x2a5c
callq 0x8b45
leaq 0x10(%rsp), %r14
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x2769(%rip), %rdx     # 0x2a5c
callq 0x8c10
movq 0x28(%rsp), %rbx
jmp 0x51d6
leaq 0x10(%rsp), %r14
movq 0x20(%rsp), %rax
movq %rbx, %rcx
subq %rax, %rcx
shrq $0x4, %rcx
decl %ecx
js 0x5672
movl %ecx, %ebx
xorl %r15d, %r15d
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
subq %rbx, %rcx
cmpq $0x1f4, %rcx            # imm = 0x1F4
ja 0x5244
movq %rbx, %rcx
shlq $0x4, %rcx
movl (%rax,%rcx), %eax
movl 0x44(%rsp), %ecx
shlq $0x20, %rcx
orq %rax, %rcx
movq %rcx, 0x10(%rsp)
leaq 0x258(%rsp), %rdi
movq %r14, %rsi
callq 0x8406
movl $0x1, (%rax)
movq 0x20(%rsp), %rax
movq %rbx, %r12
shlq $0x4, %r12
movl (%rax,%r12), %eax
movl 0xc(%rsp), %ecx
shlq $0x20, %rcx
orq %rax, %rcx
movq %rcx, 0x10(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0x6f48
movq 0x20(%rsp), %rax
movl (%rax,%r12), %eax
movl 0xc(%rsp), %ecx
shlq $0x20, %rcx
orq %rax, %rcx
movq %rcx, 0x10(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0x6f48
movq 0x10(%rax), %rcx
addq $0x8, %rax
movq %rax, %rdi
testq %rcx, %rcx
je 0x52ce
movl 0x44(%rsp), %esi
movq %rax, %rdx
xorl %edi, %edi
cmpl %esi, 0x20(%rcx)
setl %dil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rdi,8), %rcx
testq %rcx, %rcx
jne 0x52a5
movq %rax, %rdi
cmpq %rax, %rdx
je 0x52ce
cmpl 0x20(%rdx), %esi
cmovlq %rax, %rdx
movq %rdx, %rdi
xorl %ecx, %ecx
cmpq %rax, %rdi
sete %cl
addl %ecx, %r15d
movq 0x20(%rsp), %rax
movl (%rax,%r12), %ecx
cmpl 0x40(%rsp), %ecx
jne 0x54db
movq 0x28(%rsp), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
subq %rbx, %rcx
movq %rcx, %xmm0
punpckldq 0x5d28(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x5d30(%rip), %xmm0     # 0xb040
movapd %xmm0, 0x50(%rsp)
leaq 0x198(%rsp), %rdi
leaq 0xc(%rsp), %r14
movq %r14, %rsi
callq 0x84d8
movapd 0x50(%rsp), %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd (%rax), %xmm0
movapd %xmm1, 0x50(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x498(%rsp), %rdi
movq %r14, %rsi
callq 0x84d8
leal 0x1(%r15), %r12d
xorps %xmm1, %xmm1
cvtsi2sd %r12d, %xmm1
movsd (%rax), %xmm0
movsd %xmm1, 0x90(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0xa0b1(%rip), %rdi      # 0xf438
leaq 0x40(%rsp), %rsi
callq 0x4672
movl (%rax), %eax
movl %eax, 0x10(%rsp)
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x53e5
leaq 0x170(%rsp), %r9
movq %r9, %r8
movq %r8, %rcx
movq %rdi, %rdx
movl 0x20(%rdi), %esi
xorl %edi, %edi
cmpl %eax, %esi
setl %dil
movq %rdx, %r8
cmovlq %rcx, %r8
movq 0x10(%rdx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0x53af
cmpq %r9, %r8
je 0x53e5
cmpl %eax, %esi
cmovlq %rcx, %rdx
cmpl 0x20(%rdx), %eax
jge 0x5591
movq 0x20(%rsp), %r13
movq 0x28(%rsp), %r14
leaq 0x168(%rsp), %rdi
leaq 0x10(%rsp), %rbp
movq %rbp, %rsi
callq 0x853e
subq %r13, %r14
sarq $0x4, %r14
subq %rbx, %r14
movq %r14, 0x8(%rax)
movq $0x1, (%rax)
leaq 0x210(%rsp), %rdi
movq %rbp, %rsi
callq 0x853e
movl %r12d, %ecx
movq %rcx, 0x8(%rax)
movq $0x1, (%rax)
leaq 0xc(%rsp), %rsi
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
sarq $0x4, %rax
subq %rbx, %rax
cmpq $0x1, %rax
ja 0x549f
movsd 0x120(%rsp), %xmm0
addsd 0x5bfc(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x120(%rsp)
leaq 0x3a8(%rsp), %rdi
callq 0x84d8
movsd (%rax), %xmm0
addsd 0x5bda(%rip), %xmm0     # 0xb060
movsd %xmm0, (%rax)
leaq 0x168(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
incl 0x4(%rax)
leaq 0x10(%rsp), %r14
testl %r15d, %r15d
je 0x54f0
movq 0x48(%rsp), %rbp
movsd 0x68(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0xa0(%rsp), %xmm0
addsd 0x90(%rsp), %xmm0
movsd %xmm0, 0xa0(%rsp)
leaq -0x1(%rbx), %rax
testq %rbx, %rbx
movq %rax, %rbx
jg 0x51f2
jmp 0x5668
leaq 0x210(%rsp), %rdi
movq %r14, %rsi
callq 0x853e
incl 0x4(%rax)
movsd 0x110(%rsp), %xmm0
addsd 0x5b4c(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x110(%rsp)
leaq 0x378(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x84d8
movsd (%rax), %xmm0
addsd 0x5b25(%rip), %xmm0     # 0xb060
movsd %xmm0, (%rax)
movslq 0xc(%rsp), %rax
movq 0x9cfd(%rip), %rcx      # 0xf248
movl (%rcx,%rax,4), %eax
cmpl $0x2, %eax
je 0x5620
cmpl $0x1, %eax
leaq 0x10(%rsp), %r14
je 0x5601
testl %eax, %eax
movq 0x48(%rsp), %rbp
jne 0x5649
movsd 0xe0(%rsp), %xmm0
addsd 0x5add(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xe0(%rsp)
jmp 0x54ae
movq 0x20(%rsp), %r13
movq 0x28(%rsp), %r14
leaq 0x168(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
subq %r13, %r14
sarq $0x4, %r14
subq %rbx, %r14
addq %r14, 0x8(%rax)
leaq 0x210(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
movl %r12d, %ecx
addq %rcx, 0x8(%rax)
leaq 0x168(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
incl (%rax)
leaq 0x210(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
incl (%rax)
jmp 0x5437
movsd 0xd0(%rsp), %xmm0
addsd 0x5a4e(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xd0(%rsp)
jmp 0x54a9
movsd 0xd8(%rsp), %xmm0
addsd 0x5a2f(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xd8(%rsp)
movq 0x48(%rsp), %rbp
leaq 0x10(%rsp), %r14
jmp 0x54ae
movsd 0xc8(%rsp), %xmm0
addsd 0x5a06(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xc8(%rsp)
jmp 0x54ae
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rbx
cmpq %rax, %rbx
je 0x567c
movq %rax, 0x28(%rsp)
movq 0x9b7d(%rip), %rdx      # 0xf200
movl $0x1, %r8d
leaq 0x9b68(%rip), %rdi      # 0xf1f8
xorl %esi, %esi
leaq 0x5b90(%rip), %rcx      # 0xb229
callq 0x2280
cmpl $0x0, 0x9dc7(%rip)      # 0xf46c
movq 0x60(%rsp), %r14
leaq 0x20(%rsp), %r15
jle 0x5704
xorl %ebx, %ebx
movl 0x40(%rsp), %esi
movl 0xc(%rsp), %ecx
movq %r14, %rdi
movl %ebx, %edx
callq 0x7be4
movl %ebx, 0x10(%rsp)
movsd %xmm0, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x56ed
movupd 0x10(%rsp), %xmm0
movupd %xmm0, (%rsi)
addq $0x10, 0x28(%rsp)
jmp 0x56fa
movq %r15, %rdi
leaq 0x10(%rsp), %rdx
callq 0x8a0e
incl %ebx
cmpl 0x9d6a(%rip), %ebx      # 0xf46c
jl 0x56b3
movq 0x20(%rsp), %rbx
movq 0x28(%rsp), %r15
cmpq %r15, %rbx
je 0x574e
movq %r15, %rax
subq %rbx, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %rbx, %rdi
movq %r15, %rsi
leaq -0x2cdb(%rip), %rcx     # 0x2a5c
callq 0x8b45
movq %rbx, %rdi
movq %r15, %rsi
leaq -0x2ced(%rip), %rdx     # 0x2a5c
callq 0x8c10
movq 0x9aab(%rip), %rdx      # 0xf200
movl $0x1, %r8d
leaq 0x9a96(%rip), %rdi      # 0xf1f8
xorl %esi, %esi
leaq 0x5925(%rip), %rcx      # 0xb090
callq 0x2280
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r15
cmpq %r15, %r12
je 0x57c4
movq %r15, %rax
subq %r12, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r12, %rdi
movq %r15, %rsi
leaq -0x2d47(%rip), %rcx     # 0x2a5c
callq 0x8b45
movq %r12, %rdi
movq %r15, %rsi
leaq -0x2d59(%rip), %rdx     # 0x2a5c
callq 0x8c10
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r15
movq %r15, %rax
subq %r12, %rax
movq %rax, %r14
shrq $0x4, %r14
leal -0x1(%r14), %ecx
movslq %ecx, %rbx
sarq $0x4, %rax
leaq -0x1f4(%rax), %rcx
cmpq %rbx, %rcx
ja 0x5834
addl $-0x2, %r14d
movl 0x40(%rsp), %esi
shlq $0x4, %rbx
movl (%r12,%rbx), %edx
movl 0xc(%rsp), %ecx
movq 0x60(%rsp), %rdi
callq 0x7be4
movq 0x20(%rsp), %r12
movsd %xmm0, 0x8(%r12,%rbx)
movslq %r14d, %rbx
movq 0x28(%rsp), %r15
movq %r15, %rax
subq %r12, %rax
sarq $0x4, %rax
leaq -0x1f4(%rax), %rcx
leal -0x1(%rbx), %r14d
cmpq %rbx, %rcx
jbe 0x57ec
cmpq %r15, %r12
je 0x587b
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r12, %rdi
movq %r15, %rsi
leaq -0x2df7(%rip), %rcx     # 0x2a5c
callq 0x8b45
leaq 0x10(%rsp), %r14
movq %r12, %rdi
movq %r15, %rsi
leaq -0x2e0e(%rip), %rdx     # 0x2a5c
callq 0x8c10
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r15
jmp 0x5880
leaq 0x10(%rsp), %r14
movq %r15, %rax
subq %r12, %rax
shrq $0x4, %rax
decl %eax
js 0x5cf9
movl %eax, %ebx
xorl %r15d, %r15d
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
subq %rbx, %rcx
cmpq $0x1f4, %rcx            # imm = 0x1F4
ja 0x58e4
movq %rbx, %rcx
shlq $0x4, %rcx
movl 0x40(%rsp), %edx
movl (%rax,%rcx), %eax
shlq $0x20, %rax
orq %rdx, %rax
movq %rax, 0x10(%rsp)
leaq 0x258(%rsp), %rdi
movq %r14, %rsi
callq 0x8406
movl $0x1, (%rax)
movl 0x40(%rsp), %eax
movl 0xc(%rsp), %ecx
shlq $0x20, %rcx
orq %rax, %rcx
movq %rcx, 0x10(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
callq 0x6f48
movq %rbx, %r14
shlq $0x4, %r14
movq 0x20(%rsp), %rsi
addq %r14, %rsi
movq %rax, %rdi
callq 0x8490
movl 0x40(%rsp), %eax
movl 0xc(%rsp), %ecx
shlq $0x20, %rcx
orq %rax, %rcx
movq %rcx, 0x10(%rsp)
movq %rbp, %rdi
leaq 0x10(%rsp), %rsi
callq 0x6f48
movq 0x20(%rsp), %rsi
addq %r14, %rsi
movq %rax, %rdi
callq 0x8490
cmpq $0x1, %rax
adcl $0x0, %r15d
movq 0x20(%rsp), %rax
movl (%rax,%r14), %ecx
cmpl 0x44(%rsp), %ecx
jne 0x5b5d
movq 0x28(%rsp), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
subq %rbx, %rcx
movq %rcx, %xmm0
punpckldq 0x56ae(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x56b6(%rip), %xmm0     # 0xb040
movapd %xmm0, 0x50(%rsp)
leaq 0x468(%rsp), %rdi
leaq 0xc(%rsp), %r14
movq %r14, %rsi
callq 0x84d8
movapd 0x50(%rsp), %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd (%rax), %xmm0
movapd %xmm1, 0x50(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x438(%rsp), %rdi
movq %r14, %rsi
callq 0x84d8
leal 0x1(%r15), %r12d
xorps %xmm1, %xmm1
cvtsi2sd %r12d, %xmm1
movsd (%rax), %xmm0
movsd %xmm1, 0x90(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x9a37(%rip), %rdi      # 0xf438
leaq 0x44(%rsp), %rsi
callq 0x4672
movl (%rax), %eax
movl %eax, 0x10(%rsp)
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x5a5f
leaq 0x140(%rsp), %r9
movq %r9, %r8
movq %r8, %rcx
movq %rdi, %rdx
movl 0x20(%rdi), %esi
xorl %edi, %edi
cmpl %eax, %esi
setl %dil
movq %rdx, %r8
cmovlq %rcx, %r8
movq 0x10(%rdx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0x5a29
cmpq %r9, %r8
je 0x5a5f
cmpl %eax, %esi
cmovlq %rcx, %rdx
cmpl 0x20(%rdx), %eax
jge 0x5c18
movq 0x20(%rsp), %r13
movq 0x28(%rsp), %r14
leaq 0x138(%rsp), %rdi
leaq 0x10(%rsp), %rbp
movq %rbp, %rsi
callq 0x853e
subq %r13, %r14
sarq $0x4, %r14
subq %rbx, %r14
movq %r14, 0x8(%rax)
movq $0x1, (%rax)
leaq 0x1e0(%rsp), %rdi
movq %rbp, %rsi
callq 0x853e
movl %r12d, %ecx
movq %rcx, 0x8(%rax)
movq $0x1, (%rax)
leaq 0xc(%rsp), %rsi
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
sarq $0x4, %rax
subq %rbx, %rax
cmpq $0x1, %rax
ja 0x5b19
movsd 0x118(%rsp), %xmm0
addsd 0x5582(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x118(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x84d8
movsd (%rax), %xmm0
addsd 0x5560(%rip), %xmm0     # 0xb060
movsd %xmm0, (%rax)
leaq 0x138(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
incl 0x4(%rax)
leaq 0x10(%rsp), %r14
testl %r15d, %r15d
je 0x5b77
movq 0x48(%rsp), %rbp
movsd 0x98(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movsd 0x128(%rsp), %xmm0
addsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x128(%rsp)
jmp 0x5b62
leaq 0x10(%rsp), %r14
leaq -0x1(%rbx), %rax
testq %rbx, %rbx
movq %rax, %rbx
jg 0x5897
jmp 0x5cef
leaq 0x1e0(%rsp), %rdi
movq %r14, %rsi
callq 0x853e
incl 0x4(%rax)
movsd 0x108(%rsp), %xmm0
addsd 0x54c5(%rip), %xmm0     # 0xb060
movsd %xmm0, 0x108(%rsp)
leaq 0x318(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x84d8
movsd (%rax), %xmm0
addsd 0x549e(%rip), %xmm0     # 0xb060
movsd %xmm0, (%rax)
movslq 0xc(%rsp), %rax
movq 0x9676(%rip), %rcx      # 0xf248
movl (%rcx,%rax,4), %eax
cmpl $0x2, %eax
je 0x5ca7
cmpl $0x1, %eax
leaq 0x10(%rsp), %r14
je 0x5c88
testl %eax, %eax
movq 0x48(%rsp), %rbp
jne 0x5cd0
movsd 0xc0(%rsp), %xmm0
addsd 0x5456(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xc0(%rsp)
jmp 0x5b28
movq 0x20(%rsp), %r13
movq 0x28(%rsp), %r14
leaq 0x138(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
subq %r13, %r14
sarq $0x4, %r14
subq %rbx, %r14
addq %r14, 0x8(%rax)
leaq 0x1e0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
movl %r12d, %ecx
addq %rcx, 0x8(%rax)
leaq 0x138(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
incl (%rax)
leaq 0x1e0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x853e
incl (%rax)
jmp 0x5ab1
movsd 0xb0(%rsp), %xmm0
addsd 0x53c7(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xb0(%rsp)
jmp 0x5b23
movsd 0xb8(%rsp), %xmm0
addsd 0x53a8(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xb8(%rsp)
movq 0x48(%rsp), %rbp
leaq 0x10(%rsp), %r14
jmp 0x5b28
movsd 0xa8(%rsp), %xmm0
addsd 0x537f(%rip), %xmm0     # 0xb060
movsd %xmm0, 0xa8(%rsp)
jmp 0x5b28
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r15
cmpq %r12, %r15
je 0x5d06
movq %r12, 0x28(%rsp)
movq %r12, %r15
cmpl $0x0, 0x975b(%rip)      # 0xf468
jle 0x5d7e
xorl %ebx, %ebx
movq 0x60(%rsp), %r14
leaq 0x20(%rsp), %r15
movl 0x40(%rsp), %esi
movl 0x44(%rsp), %edx
movq %r14, %rdi
movl %ebx, %ecx
callq 0x7be4
addsd 0x534b(%rip), %xmm0     # 0xb080
movl %ebx, 0x10(%rsp)
movsd %xmm0, 0x18(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x5d5d
movupd 0x10(%rsp), %xmm0
movupd %xmm0, (%rsi)
addq $0x10, 0x28(%rsp)
jmp 0x5d6a
movq %r15, %rdi
leaq 0x10(%rsp), %rdx
callq 0x8a0e
incl %ebx
cmpl 0x96f6(%rip), %ebx      # 0xf468
jl 0x5d1b
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r15
cmpq %r15, %r12
je 0x5dc8
movq %r15, %rax
subq %r12, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r12, %rdi
movq %r15, %rsi
leaq -0x334b(%rip), %rcx     # 0x2a5c
callq 0x8b45
movq %r12, %rdi
movq %r15, %rsi
leaq -0x335d(%rip), %rdx     # 0x2a5c
callq 0x8c10
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r15
subq %r12, %r15
shrq $0x4, %r15
movl %r15d, %r15d
xorl %ebx, %ebx
decq %r15
testl %r15d, %r15d
js 0x600a
movl %r15d, %r14d
andl $0x7fffffff, %r14d      # imm = 0x7FFFFFFF
movq %r14, %r13
shlq $0x4, %r13
movl 0x40(%rsp), %eax
movl (%r12,%r13), %ecx
shlq $0x20, %rcx
orq %rax, %rcx
movq %rcx, 0x10(%rsp)
movq %rbp, %rdi
leaq 0x10(%rsp), %r12
movq %r12, %rsi
callq 0x6f48
movq 0x20(%rsp), %rax
movl 0x40(%rsp), %ecx
movl (%rax,%r13), %eax
shlq $0x20, %rax
orq %rcx, %rax
movq %rax, 0x10(%rsp)
movq %rbp, %rdi
movq %r12, %rsi
callq 0x6f48
movq 0x10(%rax), %rcx
addq $0x8, %rax
movq %rax, %rdi
testq %rcx, %rcx
je 0x5e79
movl 0x44(%rsp), %esi
movq %rax, %rdx
xorl %edi, %edi
cmpl %esi, 0x20(%rcx)
setl %dil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rdi,8), %rcx
testq %rcx, %rcx
jne 0x5e50
movq %rax, %rdi
cmpq %rax, %rdx
je 0x5e79
cmpl 0x20(%rdx), %esi
cmovlq %rax, %rdx
movq %rdx, %rdi
xorl %ecx, %ecx
cmpq %rax, %rdi
sete %cl
addl %ecx, %ebx
movq 0x20(%rsp), %r12
movl (%r12,%r13), %eax
cmpl 0xc(%rsp), %eax
movq 0x48(%rsp), %rbp
jne 0x5dd4
movq 0x28(%rsp), %rax
subq %r12, %rax
sarq $0x4, %rax
subq %r14, %rax
movq %rax, %xmm0
punpckldq 0x5179(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x5181(%rip), %xmm0     # 0xb040
movapd %xmm0, 0x50(%rsp)
leaq 0x408(%rsp), %rdi
leaq 0xc(%rsp), %r15
movq %r15, %rsi
callq 0x84d8
movq 0x130(%rsp), %r12
movapd 0x50(%rsp), %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd (%rax), %xmm0
movapd %xmm1, 0x50(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x3d8(%rsp), %rdi
movq %r15, %rsi
callq 0x84d8
leal 0x1(%rbx), %ecx
xorps %xmm1, %xmm1
cvtsi2sd %ecx, %xmm1
movsd (%rax), %xmm0
movsd %xmm1, 0x90(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
sarq $0x4, %rax
subq %r14, %rax
cmpq $0x1, %rax
ja 0x5f88
leaq 0x2e8(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x84d8
movsd 0x50fa(%rip), %xmm1     # 0xb060
movsd 0xf0(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xf0(%rsp)
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movsd 0x100(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x100(%rsp)
movsd 0xf8(%rsp), %xmm0
addsd 0x90(%rsp), %xmm0
movsd %xmm0, 0xf8(%rsp)
testl %ebx, %ebx
leaq 0x10(%rsp), %r14
jne 0x6005
leaq 0x2b8(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x84d8
movsd 0x5082(%rip), %xmm1     # 0xb060
movsd 0xe8(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0xe8(%rsp)
movsd (%rax), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
leaq 0x10(%rsp), %r14
movq %r12, %rax
jmp 0x6017
movq 0x130(%rsp), %rax
leaq 0x10(%rsp), %r14
movq %rax, %r12
imull $0xc28f5c29, %eax, %eax # imm = 0xC28F5C29
rorl $0x2, %eax
cmpl $0x28f5c28, %eax        # imm = 0x28F5C28
ja 0x668e
movq 0x8fa3(%rip), %rdi      # 0xefd8
movl %r12d, %esi
callq 0x22f0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x50fa(%rip), %rsi      # 0xb149
callq 0x2210
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x502f(%rip), %rsi      # 0xb092
callq 0x2210
leal 0x1(%r12), %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd 0x68(%rsp), %xmm0
movsd %xmm1, 0x50(%rsp)
divsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0x120(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0x98(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0x118(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4f70(%rip), %rsi      # 0xb092
callq 0x2210
movsd 0xa0(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0x110(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0x128(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0x108(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movl $0x1, %edx
movq 0x8de0(%rip), %rdi      # 0xefd8
leaq 0x4e93(%rip), %rsi      # 0xb092
callq 0x2210
movsd 0x100(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq 0x8dbe(%rip), %rdi      # 0xefd8
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0xf0(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4e35(%rip), %rsi      # 0xb092
callq 0x2210
movsd 0xf8(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0xe8(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq 0x8d02(%rip), %rdi      # 0xefd8
movsd 0xe0(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4eba(%rip), %rsi      # 0xb1b0
callq 0x2210
movq %rbx, %rdi
movsd 0xd8(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4e92(%rip), %rsi      # 0xb1b0
callq 0x2210
movq %rbx, %rdi
movsd 0xd0(%rsp), %xmm0
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movq %rax, %rdi
movsd 0xc8(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq 0x8c4d(%rip), %rdi      # 0xefd8
movsd 0xc0(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4e05(%rip), %rsi      # 0xb1b0
callq 0x2210
movq %rbx, %rdi
movsd 0xb8(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4ddd(%rip), %rsi      # 0xb1b0
callq 0x2210
movq %rbx, %rdi
movsd 0xb0(%rsp), %xmm0
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movq %rax, %rdi
movsd 0xa8(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq 0x8b98(%rip), %rdi      # 0xefd8
movsd 0x88(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4d50(%rip), %rsi      # 0xb1b0
callq 0x2210
movq %rbx, %rdi
movsd 0x80(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4d28(%rip), %rsi      # 0xb1b0
callq 0x2210
movq %rbx, %rdi
movsd 0x78(%rsp), %xmm0
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movq %rax, %rdi
movsd 0x70(%rsp), %xmm0
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movsd 0xe0(%rsp), %xmm0
divsd 0x88(%rsp), %xmm0
movq 0x8ad7(%rip), %rdi      # 0xefd8
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4c98(%rip), %rsi      # 0xb1b0
callq 0x2210
movsd 0xd8(%rsp), %xmm0
divsd 0x80(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4c67(%rip), %rsi      # 0xb1b0
callq 0x2210
movsd 0xd0(%rsp), %xmm0
divsd 0x78(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0xc8(%rsp), %xmm0
divsd 0x70(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movsd 0xc0(%rsp), %xmm0
divsd 0x88(%rsp), %xmm0
movq 0x8a04(%rip), %rdi      # 0xefd8
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4bc5(%rip), %rsi      # 0xb1b0
callq 0x2210
movsd 0xb8(%rsp), %xmm0
divsd 0x80(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22c0
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x4b94(%rip), %rsi      # 0xb1b0
callq 0x2210
movsd 0xb0(%rsp), %xmm0
divsd 0x78(%rsp), %xmm0
movq %rbx, %rdi
callq 0x22c0
movb $0x20, 0x10(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x2210
movsd 0xa8(%rsp), %xmm0
divsd 0x70(%rsp), %xmm0
movq %rax, %rdi
callq 0x22c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2140
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
leaq 0x20(%rsp), %r15
je 0x66a2
callq 0x21b0
incq %r12
movq 0x60(%rsp), %r14
movq 0x90(%r14), %rax
movq 0x98(%r14), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
shrq %rcx
cmpq %r12, %rcx
ja 0x4f59
leaq 0x4b59(%rip), %rdi      # 0xb22b
leaq 0x4b5d(%rip), %rsi      # 0xb236
callq 0x2220
movq %rax, %rbx
movq 0x180(%rsp), %r14
leaq 0x170(%rsp), %r12
cmpq %r12, %r14
je 0x672a
leaq 0x4b3b(%rip), %r15      # 0xb238
movq 0x30(%r14), %rcx
movl 0x2c(%r14), %r8d
movl 0x20(%r14), %edx
movl 0x28(%r14), %r9d
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x2250
movq %r14, %rdi
callq 0x2150
movq %rax, %r14
cmpq %r12, %rax
jne 0x66fd
movq %rbx, %rdi
callq 0x21d0
leaq 0x4b0e(%rip), %rdi      # 0xb247
leaq 0x4af6(%rip), %rsi      # 0xb236
callq 0x2220
movq %rax, %rbx
movq 0x228(%rsp), %r14
leaq 0x218(%rsp), %r12
cmpq %r12, %r14
je 0x6791
leaq 0x4ad4(%rip), %r15      # 0xb238
movq 0x30(%r14), %rcx
movl 0x2c(%r14), %r8d
movl 0x20(%r14), %edx
movl 0x28(%r14), %r9d
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x2250
movq %r14, %rdi
callq 0x2150
movq %rax, %r14
cmpq %r12, %rax
jne 0x6764
movq %rbx, %rdi
callq 0x21d0
leaq 0x4ab5(%rip), %rdi      # 0xb255
leaq 0x4a8f(%rip), %rsi      # 0xb236
callq 0x2220
movq %rax, %rbx
movq 0x150(%rsp), %r14
leaq 0x140(%rsp), %r13
cmpq %r13, %r14
leaq 0x1e8(%rsp), %r12
je 0x6800
leaq 0x4a65(%rip), %r15      # 0xb238
movq 0x30(%r14), %rcx
movl 0x2c(%r14), %r8d
movl 0x20(%r14), %edx
movl 0x28(%r14), %r9d
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x2250
movq %r14, %rdi
callq 0x2150
movq %rax, %r14
cmpq %r13, %rax
jne 0x67d3
movq %rbx, %rdi
callq 0x21d0
leaq 0x4a51(%rip), %rdi      # 0xb260
leaq 0x4a20(%rip), %rsi      # 0xb236
callq 0x2220
movq %rax, %rbx
movq 0x1f8(%rsp), %r14
cmpq %r12, %r14
je 0x685f
leaq 0x4a06(%rip), %r15      # 0xb238
movq 0x30(%r14), %rcx
movl 0x2c(%r14), %r8d
movl 0x20(%r14), %edx
movl 0x28(%r14), %r9d
movq %rbx, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x2250
movq %r14, %rdi
callq 0x2150
movq %rax, %r14
cmpq %r12, %rax
jne 0x6832
movq %rbx, %rdi
callq 0x21d0
leaq 0x258(%rsp), %rdi
callq 0x98a8
leaq 0x1e0(%rsp), %rdi
callq 0x98f2
leaq 0x210(%rsp), %rdi
callq 0x98f2
leaq 0x138(%rsp), %rdi
callq 0x98f2
leaq 0x168(%rsp), %rdi
callq 0x98f2
leaq 0x288(%rsp), %rdi
callq 0x6c8e
leaq 0x2b8(%rsp), %rdi
callq 0x993c
leaq 0x2e8(%rsp), %rdi
callq 0x993c
leaq 0x318(%rsp), %rdi
callq 0x993c
leaq 0x348(%rsp), %rdi
callq 0x993c
leaq 0x378(%rsp), %rdi
callq 0x993c
leaq 0x3a8(%rsp), %rdi
callq 0x993c
leaq 0x3d8(%rsp), %rdi
callq 0x993c
leaq 0x408(%rsp), %rdi
callq 0x993c
leaq 0x438(%rsp), %rdi
callq 0x993c
leaq 0x468(%rsp), %rdi
callq 0x993c
leaq 0x498(%rsp), %rdi
callq 0x993c
leaq 0x198(%rsp), %rdi
callq 0x993c
addq $0x4c8, %rsp            # imm = 0x4C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x69c8
jmp 0x69b6
jmp 0x69b6
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
testq %rdi, %rdi
je 0x6ab2
callq 0x21b0
jmp 0x6ab2
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
jmp 0x69b6
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x69c8
callq 0x21b0
leaq 0x258(%rsp), %rdi
callq 0x98a8
leaq 0x1e0(%rsp), %rdi
callq 0x98f2
leaq 0x210(%rsp), %rdi
callq 0x98f2
leaq 0x138(%rsp), %rdi
callq 0x98f2
leaq 0x168(%rsp), %rdi
callq 0x98f2
leaq 0x288(%rsp), %rdi
callq 0x6c8e
leaq 0x2b8(%rsp), %rdi
callq 0x993c
leaq 0x2e8(%rsp), %rdi
callq 0x993c
leaq 0x318(%rsp), %rdi
callq 0x993c
leaq 0x348(%rsp), %rdi
callq 0x993c
leaq 0x378(%rsp), %rdi
callq 0x993c
leaq 0x3a8(%rsp), %rdi
callq 0x993c
leaq 0x3d8(%rsp), %rdi
callq 0x993c
leaq 0x408(%rsp), %rdi
callq 0x993c
leaq 0x438(%rsp), %rdi
callq 0x993c
leaq 0x468(%rsp), %rdi
callq 0x993c
leaq 0x498(%rsp), %rdi
callq 0x993c
leaq 0x198(%rsp), %rdi
callq 0x993c
movq %rbx, %rdi
callq 0x2300