// File: /workspace/github_cpp_makefile_star2_O3/IdelCoder[P]PTransE-ag/Train_PTransE-pos.cpp
// Function: Train::bfgs()
void bfgs()
    {
        // margin是损失函数L(h,r,t)使用的，margin_rel是损失函数L(p,r)使用的
        double margin = 1,margin_rel = 1;
        cout<<"margin="<<' '<<margin<<"margin_rel="<<margin_rel<<endl;
        cout <<"positive_margin="<< " " << positive_margin <<endl;
        res=0;
        // mini-batch中每一批的样本量
        int nbatches=100;
        // 可能等同于nepoch，迭代的轮数
        int neval = 500;
        int batchsize = fb_h.size()/nbatches;
 		relation_tmp=relation_vec;
		entity_tmp = entity_vec;
		map<string, int> fb_count;
        for (int eval=0; eval<neval; eval++)
        {
            // 每轮迭代
        	res=0;
            positive_margin_count = 0;
         	for (int batch = 0; batch<nbatches; batch++)
         	{
                // 每一批次，都随机选择一个头结点（似乎没有使用）
				int e1 = rand_max(entity_num);
         		for (int k=0; k<batchsize; k++)
         		{
                    // 每个样本
					int j=rand_max(entity_num);
					int i=rand_max(fb_h.size());
                    // fb_h，fb_r，fb_l的索引都是三元组的索引，相同索引，就是同一个三元组
					int e1 = fb_h[i], rel = fb_r[i], e2  = fb_l[i];


					int rand_tmp = rand()%100;
					if (rand_tmp<25)
					{
                        // ok的类型是map<pair<int,int>, map<int,int> >
						while (ok[make_pair(e1,rel)].count(j)>0)
                            j=rand_max(entity_num);
                        train_kb(e1,e2,rel,e1,j,rel,margin);
                        // 替换尾实体
                        int candidate_size = givenHeadRel[to_string(e1) + "_" + to_string(rel)].size();
                        if(candidate_size > 1) {
                            j = givenHeadRel[to_string(e1) + "_" + to_string(rel)][rand() % candidate_size];
                            while (j == e2) {
                                j = givenHeadRel[to_string(e1) + "_" + to_string(rel)][rand() % candidate_size];
                            }

                            train_pos(e1, e2, rel, e1, j, rel, margin);
                        }


                        // 固定头结点和关系，随机出训练集中不存在的三元组来训练


					}
					else
					if (rand_tmp<50)
					{
						while (ok[make_pair(j,rel)].count(e2)>0)
                            j=rand_max(entity_num);
                        train_kb(e1,e2,rel,j,e2,rel,margin);
                        // 替换头实体
                        int candidate_size = givenTailRel[to_string(e2) + "_" + to_string(rel)].size();
                        if(candidate_size > 1) {
                            j = givenTailRel[to_string(e2) + "_" + to_string(rel)][rand() % candidate_size];
                            while (j == e1) {
                                j = givenTailRel[to_string(e2) + "_" + to_string(rel)][rand() % candidate_size];
                            }


                            train_pos(e1,e2,rel,j,e2,rel,margin);
                        }



					}
					else
					{
                        // rand_tmp [50, 100)
						int rel_neg = rand_max(relation_num);
						while (ok[make_pair(e1,rel_neg)].count(e2)>0)
                            rel_neg = rand_max(relation_num);
                        train_kb(e1,e2,rel,e1,e2,rel_neg,margin);

					}
                    // fb_path的类型vector<vector<pair<vector<int>,double> > >
					if (fb_path[i].size()>0)
					{
                        // 这个三元组存在其他路径
                        // relation_num包括了逆关系
						int rel_neg = rand_max(relation_num);
						while (ok[make_pair(e1,rel_neg)].count(e2)>0)
							rel_neg = rand_max(relation_num);
                        // 随机出一个不存在的三元组
						for (int path_id = 0; path_id<fb_path[i].size(); path_id++)
						{
                            // 遍历第i个三元组对应的每一条路径
                            // fb_path类型vector<vector<pair<vector<int>,double> > >
                            // rel_path 就是某条路径所组成的关系的数组
							vector<int> rel_path = fb_path[i][path_id].first;
							string  s = "";
                            // path2s的类型是map<vector<int>,string>
							if (path2s.count(rel_path)==0)
							{
							    ostringstream oss;//创建一个流
                                // 将这些数组组合成一个路径的字符串
								for (int ii=0; ii<rel_path.size(); ii++)
								{
									oss<<rel_path[ii]<<" ";
								}
							    s=oss.str();//
                                // path2s的key是路径的关系数组，value是关系数组转成的字符串
								path2s[rel_path] = s;
							}
                            // s是路径的字符串
							s = path2s[rel_path];
                            // pr是每条路径的概率
							double pr = fb_path[i][path_id].second;
                            // pr_path是路径的置信度
							double pr_path = 0;
							if (path_confidence.count(make_pair(s,rel))>0)
								pr_path = path_confidence[make_pair(s,rel)];
							pr_path = 0.99*pr_path + 0.01;
                            // rel是三元组实际存在的关系，rel_neg是这个三元组两个实体间不存在的关系
                            // rel_path是这个关系对应的一个路径
							train_path(rel,rel_neg,rel_path,2*margin,pr*pr_path);
						}
					}
                    // e1,e2,rel组成了这个三元组，j则是用来替换头或者尾的实体，构成一个corrupted triplets
					norm(relation_tmp[rel]);
            		norm(entity_tmp[e1]);
            		norm(entity_tmp[e2]);
            		norm(entity_tmp[j]);
                    // 这句话也没有效果
					e1 = e2;
         		}
                // 每一批迭代过后，更新relation_vec和entity_vec
	            relation_vec = relation_tmp;
	            entity_vec = entity_tmp;
         	}
            // 每一轮迭代过后，记录实体和关系的向量
            cout<<"eval:"<<eval<<' '<<res<<' '<<positive_margin_count<<endl;
            FILE* f2 = fopen(("relation2vec.txt"+version).c_str(),"w");
            FILE* f3 = fopen(("entity2vec.txt"+version).c_str(),"w");
            // 每一行对应一个关系的向量
            for (int i=0; i<relation_num; i++)
            {
                for (int ii=0; ii<n; ii++)
                    fprintf(f2,"%.6lf\t",relation_vec[i][ii]);
                fprintf(f2,"\n");
            }
            for (int i=0; i<entity_num; i++)
            {
                for (int ii=0; ii<n; ii++)
                    fprintf(f3,"%.6lf\t",entity_vec[i][ii]);
                fprintf(f3,"\n");
            }
            fclose(f2);
            fclose(f3);
        }//所有epoch结束
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2a8, %rsp            # imm = 0x2A8
movq %rdi, %r12
movq 0x9079(%rip), %rbx      # 0xefd8
leaq 0x5248(%rip), %rsi      # 0xb1ae
movl $0x7, %edx
movq %rbx, %rdi
callq 0x2210
leaq 0xc0(%rsp), %rsi
movb $0x20, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x2210
movsd 0x5085(%rip), %xmm0     # 0xb018
movq %rax, %rdi
callq 0x22e0
movq %rax, %r14
leaq 0x51f4(%rip), %rsi      # 0xb199
movl $0xb, %edx
movq %rax, %rdi
callq 0x2210
movq %r14, %rdi
movsd 0x505b(%rip), %xmm0     # 0xb018
callq 0x22e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x51b2(%rip), %rsi      # 0xb1a5
movl $0x10, %edx
movq %rbx, %rdi
callq 0x2210
leaq 0x5126(%rip), %rsi      # 0xb12d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x2210
movsd 0x930c(%rip), %xmm0     # 0xf328
movq %rbx, %rdi
callq 0x22e0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
xorl %ebx, %ebx
movq %rbx, 0x38(%r12)
movq 0x70(%r12), %rax
subq 0x68(%r12), %rax
sarq $0x2, %rax
shrq $0x2, %rax
movabsq $0x28f5c28f5c28f5c3, %rcx # imm = 0x28F5C28F5C28F5C3
mulq %rcx
shrq $0x2, %rdx
movq %rdx, 0xb8(%rsp)
leaq 0xe0(%r12), %rsi
leaq 0x110(%r12), %rdi
movq %rdi, 0x248(%rsp)
movq %rsi, 0x250(%rsp)
callq 0x7f5e
leaq 0xf8(%r12), %rsi
leaq 0x128(%r12), %rdi
movq %rdi, 0x238(%rsp)
movq %rsi, 0x240(%rsp)
callq 0x7f5e
leaq 0x280(%rsp), %rax
movl $0x0, (%rax)
movq %rbx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, 0x20(%rax)
movq %r12, 0xa0(%rsp)
movq %rbx, 0xb0(%rsp)
movq $0x0, 0x38(%r12)
movl $0x0, 0x40(%r12)
xorl %ebx, %ebx
movl %ebx, 0xa8(%rsp)
movl 0x525fb(%rip), %esi     # 0x58714
movq %r12, %rdi
callq 0x80e6
cmpl $0x0, 0xb8(%rsp)
jle 0x7827
xorl %eax, %eax
movl %eax, 0xac(%rsp)
movl 0x525d6(%rip), %esi     # 0x58714
movq %r12, %rdi
callq 0x80e6
movl %eax, %r13d
movq 0x70(%r12), %rsi
subq 0x68(%r12), %rsi
shrq $0x2, %rsi
movq %r12, %rdi
callq 0x80e6
movslq %eax, %rdx
movq 0x68(%r12), %rax
movq 0x80(%r12), %rcx
movl (%rax,%rdx,4), %r14d
movq 0x98(%r12), %rax
movl (%rax,%rdx,4), %r15d
movq %rdx, 0x258(%rsp)
movl (%rcx,%rdx,4), %ebp
callq 0x2070
cltq
imulq $0x51eb851f, %rax, %rcx # imm = 0x51EB851F
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x25, %rcx
addl %edx, %ecx
imull $0x64, %ecx, %ecx
subl %ecx, %eax
cmpl $0x18, %eax
movq %r14, 0x78(%rsp)
movq %r15, 0x50(%rsp)
jg 0x622d
movq %r15, %rbx
shlq $0x20, %rbx
orq %r14, %rbx
movq %rbx, 0xc0(%rsp)
movq %r12, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x5680
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x62ad
addq $0x8, %rax
movq %rax, %rdx
xorl %esi, %esi
cmpl %r13d, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x61ef
cmpq %rax, %rdx
je 0x62ad
cmpl 0x20(%rdx), %r13d
jl 0x62ad
movl 0x524f4(%rip), %esi     # 0x58714
movq %r12, %rdi
callq 0x80e6
movl %eax, %r13d
jmp 0x61c3
cmpl $0x31, %eax
ja 0x6342
movq 0x50(%rsp), %rbx
shlq $0x20, %rbx
movl %r13d, %eax
orq %rbx, %rax
movq %rax, 0xc0(%rsp)
movq %r12, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x5680
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x63cd
addq $0x8, %rax
movq %rax, %rdx
xorl %esi, %esi
cmpl %ebp, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x6271
cmpq %rax, %rdx
je 0x63cd
cmpl 0x20(%rdx), %ebp
jl 0x63cd
movl 0x52474(%rip), %esi     # 0x58714
movq %r12, %rdi
callq 0x80e6
movl %eax, %r13d
jmp 0x623f
movq 0x50(%rsp), %rcx
movl %ecx, (%rsp)
movq %r12, %rdi
movq 0x78(%rsp), %rbx
movl %ebx, %esi
movl %ebp, %edx
movl %ebx, %r8d
movl %r13d, %r9d
movsd 0x4d49(%rip), %xmm0     # 0xb018
callq 0x812a
movl %ebx, %eax
negl %eax
cmovsl %ebx, %eax
movl $0x1, %r12d
movl %eax, 0x88(%rsp)
cmpl $0xa, %eax
jb 0x648b
movl $0x4, %r12d
movl 0x88(%rsp), %eax
cmpl $0x63, %eax
jbe 0x6482
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6488
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x648b
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x62fe
addl $-0x3, %r12d
jmp 0x648b
movl 0x523c8(%rip), %esi     # 0x58710
movq %r12, %rdi
callq 0x80e6
movl %eax, %r14d
leaq 0xc0(%rsp), %rbx
movq 0x78(%rsp), %r15
movq %r14, %rax
shlq $0x20, %rax
orq %r15, %rax
movq %rax, 0xc0(%rsp)
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5680
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x6459
addq $0x8, %rax
movq %rax, %rdx
xorl %esi, %esi
cmpl %ebp, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x6391
cmpq %rax, %rdx
je 0x6459
cmpl 0x20(%rdx), %ebp
jl 0x6459
movl 0x52350(%rip), %esi     # 0x58710
movq %r12, %rdi
callq 0x80e6
movl %eax, %r14d
jmp 0x6360
movq 0x50(%rsp), %rcx
movl %ecx, (%rsp)
movq %r12, %rdi
movq 0x78(%rsp), %rsi
movl %ebp, %edx
movl %r13d, %r8d
movl %ebp, %r9d
movsd 0x4c2b(%rip), %xmm0     # 0xb018
callq 0x812a
movl %ebp, %r15d
negl %r15d
cmovsl %ebp, %r15d
movl $0x1, %r14d
cmpl $0xa, %r15d
jb 0x6775
movl $0x4, %r14d
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x6763
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6772
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6775
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6415
addl $-0x3, %r14d
jmp 0x6775
movl %r14d, (%rsp)
movq %r12, %rdi
movl %r15d, %esi
movl %ebp, %edx
movq 0x50(%rsp), %rcx
movl %r15d, %r8d
movl %ebp, %r9d
movsd 0x4ba0(%rip), %xmm0     # 0xb018
callq 0x812a
jmp 0x73ea
addl $-0x2, %r12d
jmp 0x648b
decl %r12d
movq 0x78(%rsp), %rax
movl %eax, %r14d
shrl $0x1f, %r14d
leal (%r12,%r14), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x58(%rsp), %rdi
addq %r14, %rdi
movl %r12d, %esi
movl 0x88(%rsp), %edx
callq 0x54b4
movq %rbx, %rdi
leaq 0x4c0d(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq %r14, 0x98(%rsp)
je 0x650d
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x6513
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rax
movl %eax, %ebx
negl %ebx
cmovsl %eax, %ebx
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x6588
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x657f
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6585
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6588
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x654a
addl $-0x3, %r14d
jmp 0x6588
addl $-0x2, %r14d
jmp 0x6588
decl %r14d
movq 0x50(%rsp), %r12
shrl $0x1f, %r12d
leal (%r14,%r12), %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x30(%rsp), %rdi
addq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x65d9
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x660a
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0x6605
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x6616
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x6624
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xd0(%rsp), %rsi
movq %rsi, 0xc0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x6655
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x665b
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x8bd6(%rip), %rdi      # 0xf258
leaq 0xc0(%rsp), %rsi
callq 0x81ec
movq 0x8(%rax), %r14
subq (%rax), %r14
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x66b0
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x66c4
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x66d8
callq 0x21a0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x66ec
callq 0x21a0
shrq $0x2, %r14
movq %r14, 0x80(%rsp)
cmpl $0x2, %r14d
jl 0x73ea
movl $0x1, %r14d
movl 0x88(%rsp), %r13d
cmpl $0xa, %r13d
jb 0x6a4b
movl $0x4, %r14d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x6769
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6a48
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6a4b
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6723
addl $-0x3, %r14d
jmp 0x6a4b
addl $-0x2, %r14d
jmp 0x6775
addl $-0x2, %r14d
jmp 0x6a4b
decl %r14d
movl %ebp, %r12d
shrl $0x1f, %r12d
leal (%r14,%r12), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x58(%rsp), %rdi
movq %r12, 0x88(%rsp)
addq %r12, %rdi
movl %r14d, %esi
movl %r15d, %edx
callq 0x54b4
movq %rbx, %rdi
leaq 0x4924(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x67ee
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x67f4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x50(%rsp), %rax
movl %eax, %ebx
negl %ebx
cmovsl %eax, %ebx
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x6869
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x6860
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6866
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6869
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x682b
addl $-0x3, %r14d
jmp 0x6869
addl $-0x2, %r14d
jmp 0x6869
decl %r14d
movq 0x50(%rsp), %r12
shrl $0x1f, %r12d
leal (%r14,%r12), %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x30(%rsp), %rdi
addq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x68ba
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x68eb
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0x68e6
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x68f7
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x6905
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xd0(%rsp), %rsi
movq %rsi, 0xc0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x6936
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x693c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x8925(%rip), %rdi      # 0xf288
leaq 0xc0(%rsp), %rsi
callq 0x81ec
movq 0x8(%rax), %r14
subq (%rax), %r14
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x6991
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x69a5
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x69b9
callq 0x21a0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x69cd
callq 0x21a0
shrq $0x2, %r14
movq %r14, 0x98(%rsp)
cmpl $0x2, %r14d
jl 0x73ea
movl $0x1, %r14d
cmpl $0xa, %r15d
movq 0x88(%rsp), %r13
jb 0x6f22
movl $0x4, %r14d
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x6f19
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6f1f
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6f22
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6a04
addl $-0x3, %r14d
jmp 0x6f22
decl %r14d
movl %ebx, 0x94(%rsp)
movq 0x98(%rsp), %r15
leal (%r14,%r15), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x58(%rsp), %rdi
addq %r15, %rdi
movl %r14d, %esi
movl %r13d, %edx
callq 0x54b4
movq %rbx, %rdi
leaq 0x464e(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6ac4
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x6aca
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl 0x94(%rsp), %ebx
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x6b3a
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x6b31
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6b37
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6b3a
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6afc
addl $-0x3, %r14d
jmp 0x6b3a
addl $-0x2, %r14d
jmp 0x6b3a
decl %r14d
leal (%r14,%r12), %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x30(%rsp), %rdi
addq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x6b82
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x6bb3
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0x6bae
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x6bbf
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x6bcd
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xd0(%rsp), %rsi
movq %rsi, 0xc0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x6bfe
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x6c04
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x862d(%rip), %rdi      # 0xf258
leaq 0xc0(%rsp), %rsi
callq 0x81ec
movq %rax, %r14
callq 0x2070
cltd
idivl 0x80(%rsp)
movslq %edx, %rax
movq (%r14), %rcx
movl (%rcx,%rax,4), %r13d
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x6c6c
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x6c80
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x6c94
callq 0x21a0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x6ca8
callq 0x21a0
cmpl %ebp, %r13d
jne 0x6ef7
movl $0x1, %r14d
movl 0x88(%rsp), %r13d
cmpl $0xa, %r13d
jb 0x6d0c
movl $0x4, %r14d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x6d03
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6d09
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6d0c
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6cce
addl $-0x3, %r14d
jmp 0x6d0c
addl $-0x2, %r14d
jmp 0x6d0c
decl %r14d
movq 0x98(%rsp), %r15
leal (%r14,%r15), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x58(%rsp), %rdi
addq %r15, %rdi
movl %r14d, %esi
movl %r13d, %edx
callq 0x54b4
movq %rbx, %rdi
leaq 0x4394(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6d7e
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x6d84
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl 0x94(%rsp), %ebx
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x6df4
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x6deb
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x6df1
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x6df4
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6db6
addl $-0x3, %r14d
jmp 0x6df4
addl $-0x2, %r14d
jmp 0x6df4
decl %r14d
leal (%r14,%r12), %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x30(%rsp), %rdi
addq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x6e3c
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x6e6d
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0x6e68
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x6e79
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x6e87
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xd0(%rsp), %rsi
movq %rsi, 0xc0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x6eb8
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x6ebe
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x8373(%rip), %rdi      # 0xf258
leaq 0xc0(%rsp), %rsi
callq 0x81ec
jmp 0x6c38
movq 0x50(%rsp), %rcx
movl %ecx, (%rsp)
movq 0xa0(%rsp), %rdi
movq 0x78(%rsp), %rsi
movl %ebp, %edx
movl %esi, %r8d
movl %r13d, %r9d
jmp 0x73dd
addl $-0x2, %r14d
jmp 0x6f22
decl %r14d
movl %ebx, 0x80(%rsp)
leal (%r14,%r13), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x58(%rsp), %rdi
addq %r13, %rdi
movl %r14d, %esi
movl %r15d, %edx
callq 0x54b4
movq %rbx, %rdi
leaq 0x417f(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x6f93
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x6f99
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl 0x80(%rsp), %ebx
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x7009
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x7000
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x7006
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x7009
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x6fcb
addl $-0x3, %r14d
jmp 0x7009
addl $-0x2, %r14d
jmp 0x7009
decl %r14d
leal (%r14,%r12), %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x30(%rsp), %rdi
addq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x7051
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x7082
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0x707d
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x708e
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x709c
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xd0(%rsp), %rsi
movq %rsi, 0xc0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x70cd
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x70d3
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x818e(%rip), %rdi      # 0xf288
leaq 0xc0(%rsp), %rsi
callq 0x81ec
movq %rax, %r14
callq 0x2070
cltd
idivl 0x98(%rsp)
movslq %edx, %rax
movq (%r14), %rcx
movl (%rcx,%rax,4), %r13d
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x713b
callq 0x21a0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x714f
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7163
callq 0x21a0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x7177
callq 0x21a0
cmpl 0x78(%rsp), %r13d
jne 0x73c0
movl $0x1, %r14d
cmpl $0xa, %r15d
movq 0x88(%rsp), %r13
jb 0x71dd
movl $0x4, %r14d
movl %r15d, %eax
cmpl $0x63, %eax
jbe 0x71d4
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x71da
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x71dd
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x719f
addl $-0x3, %r14d
jmp 0x71dd
addl $-0x2, %r14d
jmp 0x71dd
decl %r14d
leal (%r14,%r13), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x58(%rsp), %rdi
addq %r13, %rdi
movl %r14d, %esi
movl %r15d, %edx
callq 0x54b4
movq %rbx, %rdi
leaq 0x3ecb(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7247
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x724d
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movl 0x80(%rsp), %ebx
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x1, %r14d
cmpl $0xa, %ebx
jb 0x72bd
movl $0x4, %r14d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0x72b4
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x72ba
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x72bd
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r14d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x727f
addl $-0x3, %r14d
jmp 0x72bd
addl $-0x2, %r14d
jmp 0x72bd
decl %r14d
leal (%r14,%r12), %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
movq 0x30(%rsp), %rdi
addq %r12, %rdi
movl %r14d, %esi
movl %ebx, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x7305
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
jbe 0x7336
movl $0xf, %edi
leaq 0x40(%rsp), %r9
cmpq %r9, %rsi
je 0x7331
movq 0x40(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x7342
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x7350
leaq 0x30(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xd0(%rsp), %rsi
movq %rsi, 0xc0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x7381
movq %rdx, 0xc0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd0(%rsp)
jmp 0x7387
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xc8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x7eda(%rip), %rdi      # 0xf288
leaq 0xc0(%rsp), %rsi
callq 0x81ec
jmp 0x7107
movq 0x50(%rsp), %rcx
movl %ecx, (%rsp)
movq 0xa0(%rsp), %rdi
movq 0x78(%rsp), %rsi
movl %ebp, %edx
movl %r13d, %r8d
movl %ebp, %r9d
movsd 0x3c33(%rip), %xmm0     # 0xb018
callq 0x8268
movq 0xa0(%rsp), %r12
movq 0xb0(%r12), %rax
movq 0x258(%rsp), %rcx
leaq (%rcx,%rcx,2), %r15
movq 0x8(%rax,%r15,8), %rcx
cmpq (%rax,%r15,8), %rcx
je 0x77a1
movl 0x512f5(%rip), %esi     # 0x58710
movq %r12, %rdi
callq 0x80e6
movl %eax, %ebx
movq %rbx, %rax
shlq $0x20, %rax
addq 0x78(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq %r12, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x5680
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x747a
addq $0x8, %rax
movq %rax, %rdx
xorl %esi, %esi
cmpl %ebp, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x7459
cmpq %rax, %rdx
je 0x747a
cmpl 0x20(%rdx), %ebp
jge 0x7415
movq %rbx, 0x80(%rsp)
movq 0xb0(%r12), %rax
movq (%rax,%r15,8), %rsi
cmpq %rsi, 0x8(%rax,%r15,8)
je 0x77a1
xorl %ebx, %ebx
movq %rbx, %r14
shlq $0x5, %r14
addq %r14, %rsi
leaq 0x30(%rsp), %rdi
callq 0x5522
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x10(%rsp), %rdi
leaq 0x3d1f(%rip), %rdx      # 0xb1e4
movq %rdx, %rsi
callq 0x9308
leaq 0x7d24(%rip), %rdi      # 0xf1f8
leaq 0x30(%rsp), %rsi
callq 0x8cd8
leaq 0x7d1b(%rip), %rcx      # 0xf200
cmpq %rcx, %rax
jne 0x75c5
leaq 0xc0(%rsp), %rdi
callq 0x2270
movq 0x30(%rsp), %rax
cmpq %rax, 0x38(%rsp)
je 0x7548
xorl %r12d, %r12d
movl (%rax,%r12,4), %esi
leaq 0xc0(%rsp), %rdi
callq 0x2310
movl $0x1, %edx
movq %rax, %rdi
leaq 0x3c03(%rip), %rsi      # 0xb12d
callq 0x2210
incq %r12
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %r12, %rcx
ja 0x750a
leaq 0x58(%rsp), %r12
movq %r12, %rdi
leaq 0xc8(%rsp), %rsi
callq 0x22d0
leaq 0x10(%rsp), %rdi
movq %r12, %rsi
callq 0x2240
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x757e
callq 0x21a0
leaq 0x7c73(%rip), %rdi      # 0xf1f8
leaq 0x30(%rsp), %rsi
callq 0x8368
movq 0xa0(%rsp), %r12
movq %rax, %rdi
leaq 0x10(%rsp), %rsi
callq 0x2100
leaq 0xc0(%rsp), %rdi
movq 0x7a1d(%rip), %rsi      # 0xefd0
callq 0x20f0
leaq 0x130(%rsp), %rdi
callq 0x20a0
leaq 0x7c2c(%rip), %rdi      # 0xf1f8
leaq 0x30(%rsp), %rsi
callq 0x8368
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x2100
movq 0xb0(%r12), %rax
movq (%rax,%r15,8), %rax
movsd 0x18(%rax,%r14), %xmm0
movsd %xmm0, 0x88(%rsp)
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0xc0(%rsp), %r14
movq %r14, %rdi
callq 0x55a2
movq 0x50(%rsp), %rax
movl %eax, 0xe0(%rsp)
leaq 0x7be9(%rip), %rdi      # 0xf228
movq %r14, %rsi
callq 0x90a4
movq %rax, %r14
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x7664
callq 0x21a0
leaq 0x7bc5(%rip), %rax      # 0xf230
cmpq %rax, %r14
je 0x76e1
leaq 0xd0(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0xc0(%rsp), %r14
movq %r14, %rdi
callq 0x55a2
movq 0x50(%rsp), %rax
movl %eax, 0xe0(%rsp)
leaq 0x7b78(%rip), %rdi      # 0xf228
movq %r14, %rsi
callq 0x4c3c
movsd (%rax), %xmm0
movsd %xmm0, 0x98(%rsp)
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x76ed
callq 0x21a0
jmp 0x76ed
xorps %xmm0, %xmm0
movsd %xmm0, 0x98(%rsp)
leaq 0x260(%rsp), %r14
movq %r14, %rdi
leaq 0x30(%rsp), %rsi
callq 0x5522
movsd 0x98(%rsp), %xmm0
mulsd 0x3925(%rip), %xmm0     # 0xb038
addsd 0x3925(%rip), %xmm0     # 0xb040
movsd 0x88(%rsp), %xmm1
mulsd %xmm0, %xmm1
movq %r12, %rdi
movq 0x50(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq %r14, %rcx
movsd 0x3905(%rip), %xmm0     # 0xb048
callq 0x8404
movq 0x260(%rsp), %rdi
testq %rdi, %rdi
je 0x775a
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x776e
callq 0x21a0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x777d
callq 0x21a0
incq %rbx
movq 0xb0(%r12), %rax
movq (%rax,%r15,8), %rsi
movq 0x8(%rax,%r15,8), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0x749b
movslq 0x78(%rsp), %rbx
movslq 0x50(%rsp), %rax
movslq %ebp, %r14
leaq (%rax,%rax,2), %rsi
shlq $0x3, %rsi
addq 0x110(%r12), %rsi
movq %r12, %rdi
callq 0x5eb8
leaq (%rbx,%rbx,2), %rsi
shlq $0x3, %rsi
addq 0x128(%r12), %rsi
movq %r12, %rdi
callq 0x5eb8
leaq (%r14,%r14,2), %rsi
shlq $0x3, %rsi
addq 0x128(%r12), %rsi
movq %r12, %rdi
callq 0x5eb8
movslq %r13d, %rax
leaq (%rax,%rax,2), %rsi
shlq $0x3, %rsi
addq 0x128(%r12), %rsi
movq %r12, %rdi
callq 0x5eb8
movl 0xac(%rsp), %eax
incl %eax
cmpl 0xb8(%rsp), %eax
jne 0x6131
movq 0x250(%rsp), %rdi
movq 0x248(%rsp), %rsi
callq 0x7f5e
movl 0xa8(%rsp), %ebx
movq 0x240(%rsp), %rdi
movq 0x238(%rsp), %rsi
callq 0x7f5e
incl %ebx
cmpl $0x64, %ebx
jne 0x610c
movl $0x5, %edx
movq 0x7769(%rip), %rbx      # 0xefd8
movq %rbx, %rdi
leaq 0x393d(%rip), %rsi      # 0xb1b6
callq 0x2210
leaq 0xc0(%rsp), %r15
movq 0xb0(%rsp), %r13
movq %rbx, %rdi
movl %r13d, %esi
callq 0x2310
movb $0x20, 0xc0(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movsd 0x38(%r12), %xmm0
movq %rax, %rdi
callq 0x22e0
movb $0x20, 0xc0(%rsp)
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x2210
movl 0x40(%r12), %esi
movq %rax, %rdi
callq 0x2310
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
movq %r15, %rdi
leaq 0x38a3(%rip), %rsi      # 0xb1bc
leaq 0x79e8(%rip), %r12      # 0xf308
movq %r12, %rdx
callq 0x4841
leaq 0xd0(%rsp), %rbx
movq 0xc0(%rsp), %rdi
leaq 0x388e(%rip), %rsi      # 0xb1cd
callq 0x2230
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7959
callq 0x21a0
movq %r15, %rdi
leaq 0x386c(%rip), %rsi      # 0xb1cf
movq %r12, %rdx
callq 0x4841
movq 0xc0(%rsp), %rdi
leaq 0x3853(%rip), %rsi      # 0xb1cd
callq 0x2230
movq %rax, %r12
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7994
callq 0x21a0
cmpl $0x0, 0x50d75(%rip)     # 0x58710
jle 0x7a02
xorl %ebx, %ebx
movq 0xa0(%rsp), %r13
cmpl $0x0, 0x30(%r13)
leaq 0x382b(%rip), %rbp      # 0xb1de
jle 0x79e6
xorl %r15d, %r15d
movq 0xe0(%r13), %rax
leaq (%rbx,%rbx,2), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r15,8), %xmm0
movq %r14, %rdi
movq %rbp, %rsi
movb $0x1, %al
callq 0x2280
incq %r15
movslq 0x30(%r13), %rax
cmpq %rax, %r15
jl 0x79b8
movl $0xa, %edi
movq %r14, %rsi
callq 0x2260
incq %rbx
movslq 0x50d13(%rip), %rax     # 0x58710
cmpq %rax, %rbx
jl 0x799f
cmpl $0x0, 0x50d0b(%rip)     # 0x58714
jle 0x7a70
xorl %ebx, %ebx
movq 0xa0(%rsp), %r13
cmpl $0x0, 0x30(%r13)
leaq 0x37bd(%rip), %rbp      # 0xb1de
jle 0x7a54
xorl %r15d, %r15d
movq 0xf8(%r13), %rax
leaq (%rbx,%rbx,2), %rcx
movq (%rax,%rcx,8), %rax
movsd (%rax,%r15,8), %xmm0
movq %r12, %rdi
movq %rbp, %rsi
movb $0x1, %al
callq 0x2280
incq %r15
movslq 0x30(%r13), %rax
cmpq %rax, %r15
jl 0x7a26
movl $0xa, %edi
movq %r12, %rsi
callq 0x2260
incq %rbx
movslq 0x50ca9(%rip), %rax     # 0x58714
cmpq %rax, %rbx
jl 0x7a0d
movq %r14, %rdi
callq 0x21d0
movq %r12, %rdi
callq 0x21d0
movq 0xb0(%rsp), %rbx
incl %ebx
cmpl $0x1f4, %ebx            # imm = 0x1F4
movq 0xa0(%rsp), %r12
jne 0x60f0
leaq 0x278(%rsp), %rdi
callq 0x5252
addq $0x2a8, %rsp            # imm = 0x2A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7be3
jmp 0x7be3
jmp 0x7be3
jmp 0x7be3
jmp 0x7b51
jmp 0x7b6a
jmp 0x7b32
jmp 0x7be3
jmp 0x7b83
jmp 0x7b32
jmp 0x7b51
jmp 0x7be3
jmp 0x7b32
jmp 0x7b51
jmp 0x7b6a
jmp 0x7b6a
jmp 0x7b83
jmp 0x7b83
jmp 0x7be3
jmp 0x7be3
jmp 0x7be3
jmp 0x7b32
jmp 0x7b6a
jmp 0x7b51
jmp 0x7b83
jmp 0x7be3
jmp 0x7be3
jmp 0x7b83
jmp 0x7b6a
jmp 0x7b51
jmp 0x7b32
jmp 0x7be3
jmp 0x7be3
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x7b54
callq 0x21a0
jmp 0x7b54
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7b6d
callq 0x21a0
jmp 0x7b6d
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7b86
callq 0x21a0
jmp 0x7b86
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
jne 0x7c34
jmp 0x7c39
jmp 0x7be3
jmp 0x7bf2
jmp 0x7bed
jmp 0x7be3
jmp 0x7be3
jmp 0x7bed
jmp 0x7bb0
jmp 0x7bf2
jmp 0x7bed
movq %rax, %rbx
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
jne 0x7bda
jmp 0x7c16
movq %rax, %rbx
movq 0x260(%rsp), %rdi
testq %rdi, %rdi
je 0x7c16
callq 0x21a0
jmp 0x7c16
jmp 0x7bed
movq %rax, %rbx
jmp 0x7c39
movq %rax, %rbx
jmp 0x7c2a
movq %rax, %rbx
jmp 0x7c16
movq %rax, %rbx
movq 0x73d4(%rip), %rsi      # 0xefd0
leaq 0xc0(%rsp), %rdi
callq 0x20f0
leaq 0x130(%rsp), %rdi
callq 0x20a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x7c2a
callq 0x21a0
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x7c39
callq 0x21a0
leaq 0x278(%rsp), %rdi
callq 0x5252
movq %rbx, %rdi
callq 0x2320