// File: /workspace/github_cpp_makefile_star2_O3/IdelCoder[P]PTransE-ag/Train_PTransE-pos.cpp
// Function: prepare()
void prepare()
{

    FILE* f1 = fopen(("../" + dir + "/entity2id.txt").c_str(),"r");
	FILE* f2 = fopen(("../" + dir + "/relation2id.txt").c_str(),"r");
	int x;

	while (fscanf(f1,"%s%d",buf,&x)==2)
	{
		string st=buf;
        // map<string,int> key是实体名，value是实体id。
		entity2id[st]=x;
        // map<int,string> key是id，value是实体名
		id2entity[x]=st;
		entity_num++;
	}
	while (fscanf(f2,"%s%d",buf,&x)==2)
	{
		string st=buf;
		relation2id[st]=x;
        // key是id,value是关系名
		id2relation[x]=st;
        // id加上1345，对应到“-关系名”，1345表示有1345个关系（应该是针对于数据集FB15k的）
		id2relation[x+1345] = "-"+st;
		relation_num++;
	}
    FILE* f_train = fopen(("../" + dir + "/train.txt").c_str(), "r");
    //cout << "getting train data" << endl;
    while (fscanf(f_train, "%s", buf) == 1) {
         string head = buf;
         //cout << "start: " << buf << endl;
         fscanf(f_train,"%s",buf);
         string tail = buf;
          fscanf(f_train,"%s",buf);
          string rel = buf;
        // 头结点和关系组合
        string headRel = to_string(entity2id[head]) + "_" + to_string(relation2id[rel]);
       // cout << headRel << endl;
        map<string, vector<int> >::iterator iter = givenHeadRel.find(headRel);
        if(iter == givenHeadRel.end()) {
            // key不存在
            vector<int> value = vector<int>();
            value.push_back(entity2id[tail]);
            givenHeadRel.insert(pair<string, vector<int> >(headRel, value));
        } else {
            iter->second.push_back(entity2id[tail]);
        }

        // 尾节点和关系组合

        string tailRel = to_string(entity2id[tail]) + "_" + to_string(relation2id[rel]);
        //cout << tailRel << endl;
        iter = givenTailRel.find(tailRel);
        if(iter == givenTailRel.end()) {
            // key不存在
            vector<int> value = vector<int>();
            value.push_back(entity2id[head]);
            givenTailRel.insert(pair<string, vector<int> >(tailRel, value));
        } else {
            iter->second.push_back(entity2id[head]);
        }

        // 头结点和尾节点组合
        string headTail = to_string(entity2id[head]) + "_" + to_string(entity2id[tail]);
        //cout << headTail << endl;
        iter = givenHeadTail.find(headTail);
        if(iter == givenHeadTail.end()) {
            // key不存在
            vector<int> value = vector<int>();
            value.push_back(relation2id[rel]);
            givenHeadTail.insert(pair<string, vector<int> >(headTail, value));
        } else {
            iter->second.push_back(relation2id[rel]);
        }

    }

    FILE* f_kb = fopen(("../" + dir + "/train_pra.txt").c_str(),"r");
	while (fscanf(f_kb,"%s",buf)==1)
    {
        string s1=buf;
        fscanf(f_kb,"%s",buf);
        string s2=buf;
        if (entity2id.count(s1)==0)
        {
            cout<<"miss entity:"<<s1<<endl;
        }
        if (entity2id.count(s2)==0)
        {
            cout<<"miss entity:"<<s2<<endl;
        }
        int e1 = entity2id[s1];
        int e2 = entity2id[s2];
        int rel;
        // rel是关系id
		fscanf(f_kb,"%d",&rel);
        // 就是实体之间的路径的数目
		fscanf(f_kb,"%d",&x);
        // pair<路径，精度>
		vector<pair<vector<int>,double> > b;
		b.clear();
		for (int i = 0; i<x; i++)
		{
			int y,z;
			vector<int> rel_path;
			rel_path.clear();
            // y是某条路径的长度（关系数）
			fscanf(f_kb,"%d",&y);
			for (int j=0; j<y; j++)
			{
                // 读取y所指的路径的关系，
				fscanf(f_kb,"%d",&z);
				rel_path.push_back(z);
			}
			double pr;
            // 读取这条路径的精度
			fscanf(f_kb,"%lf",&pr);
			b.push_back(make_pair(rel_path,pr));
		}
		//cout<<e1<<' '<<e2<<' '<<rel<<' '<<b.size()<<endl;
        // 训练需要的参数：头实体，尾实体，直连关系，（路径加精度）
        train.add(e1,e2,rel,b);
    }
    // 以上就是训练过程
    // 关系数目，包括了逆关系
	relation_num*=2;

    cout<<"relation_num="<<relation_num<<endl;
    cout<<"entity_num="<<entity_num<<endl;
	// confidence存放的是每条路径对于每个关系的置信度。比如e1-r1-e2，直连的关系是r1，e3-r2-e4的直连关系是r2。
    // 假设图中只有e1-e2和e3-e4之间存在路径r3-r4。那么，r3-r4只对r1和r2存在置信度，且均是0.5。
	FILE* f_confidence = fopen(("../" + dir + "/confidence.txt").c_str(),"r");
	while (fscanf(f_confidence,"%d",&x)==1)
	{
        // x是路径的长度
		string s = "";
		for (int i=0; i<x; i++)
		{
            // 读取路径中的关系
			fscanf(f_confidence,"%s",buf);
            // 拼接各个关系，组成路径字符串（每个关系是用id表示的）
			s = s + string(buf)+" ";
		}
        // 涉及到的关系数（如上注释的情况，就会是2）
		fscanf(f_confidence,"%d",&x);
		for (int i=0; i<x; i++)
		{
			int y;
			double pr;
            // 读取涉及到的关系以及其置信度
			fscanf(f_confidence,"%d%lf",&y,&pr);
		//	cout<<s<<' '<<y<<' '<<pr<<endl;
            // map<pair<string,int>,double> map<pair<路径字符串，涉及关系id>, 置信度>
			path_confidence[make_pair(s,y)] = pr;
		}
	}
	fclose(f_confidence);
    fclose(f_kb);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x178, %rsp            # imm = 0x178
leaq 0x8698(%rip), %rsi      # 0xb0aa
leaq 0xc8cf(%rip), %rdx      # 0xf2e8
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x4841
leaq 0x8681(%rip), %rsi      # 0xb0ae
movq %rbx, %rdi
callq 0x2360
leaq 0x20(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdi
je 0x2a5c
movq %rdi, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x2a65
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq %rbx, %rdi
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x8639(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, %r14
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2a9b
callq 0x21a0
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2aae
callq 0x21a0
leaq 0x85f5(%rip), %rsi      # 0xb0aa
leaq 0xc82c(%rip), %rdx      # 0xf2e8
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x4841
leaq 0x85ef(%rip), %rsi      # 0xb0bf
movq %rbx, %rdi
callq 0x2360
leaq 0x20(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2aff
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x2b05
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rsp), %rdi
leaq 0x8594(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, 0x68(%rsp)
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2b42
callq 0x21a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x2b56
callq 0x21a0
leaq 0x8573(%rip), %rsi      # 0xb0d0
leaq 0xc7cc(%rip), %r15      # 0xf330
leaq 0xc(%rsp), %rcx
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
jne 0x2c16
leaq 0x10(%rsp), %r12
leaq 0xc(%rsp), %rbx
leaq 0x8540(%rip), %r13      # 0xb0d0
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r15, %rdi
callq 0x20d0
leaq (%rax,%r15), %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0x9308
movl 0xc(%rsp), %ebp
leaq 0x55b8c(%rip), %rdi     # 0x58748
movq %r12, %rsi
callq 0x48c2
movl %ebp, (%rax)
leaq 0x55bab(%rip), %rdi     # 0x58778
movq %rbx, %rsi
callq 0x493e
movq %rax, %rdi
movq %r12, %rsi
callq 0x2100
incl 0x55b2e(%rip)           # 0x58714
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2bfa
callq 0x21a0
movq %r14, %rdi
movq %r13, %rsi
movq %r15, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
je 0x2b90
leaq 0x84b3(%rip), %rsi      # 0xb0d0
leaq 0xc70c(%rip), %r14      # 0xf330
leaq 0xc(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
jne 0x2d32
leaq 0x10(%rsp), %r15
leaq 0x55b5b(%rip), %r13     # 0x587a8
leaq 0xc(%rsp), %rbp
leaq 0x48(%rsp), %r12
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x9308
movl 0xc(%rsp), %ebx
leaq 0x55a95(%rip), %rdi     # 0x58718
movq %r15, %rsi
callq 0x48c2
movl %ebx, (%rax)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x493e
movq %rax, %rdi
movq %r15, %rsi
callq 0x2100
movq %r12, %rdi
leaq 0x8428(%rip), %rsi      # 0xb0d5
movq %r15, %rdx
callq 0x4841
movl 0xc(%rsp), %eax
movl $0x541, %ecx            # imm = 0x541
addl %ecx, %eax
movl %eax, 0xb0(%rsp)
movq %r13, %rdi
leaq 0xb0(%rsp), %rsi
callq 0x49a4
movq %rax, %rdi
movq %r12, %rsi
callq 0x2240
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x2cf6
callq 0x21a0
incl 0x55a14(%rip)           # 0x58710
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2d10
callq 0x21a0
movq 0x68(%rsp), %rdi
leaq 0x83b4(%rip), %rsi      # 0xb0d0
movq %r14, %rdx
movq %rbp, %rcx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
je 0x2c57
leaq 0x8371(%rip), %rsi      # 0xb0aa
leaq 0xc5a8(%rip), %rdx      # 0xf2e8
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x4841
leaq 0x8383(%rip), %rsi      # 0xb0d7
movq %rbx, %rdi
callq 0x2360
leaq 0x20(%rsp), %rbx
movq %rbx, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2d84
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x2d8a
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rsp), %rdi
leaq 0x830f(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, 0x68(%rsp)
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2dc7
callq 0x21a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x2ddb
callq 0x21a0
leaq 0x8300(%rip), %rsi      # 0xb0e2
leaq 0xc547(%rip), %r14      # 0xf330
movq 0x68(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
jne 0x3abc
leaq 0xc0(%rsp), %r13
leaq 0x120(%rsp), %rbp
movl $0xd1b71759, %ebx       # imm = 0xD1B71759
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x9308
movq 0x68(%rsp), %rdi
leaq 0x829d(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
movq %r13, 0xb0(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0xb0(%rsp), %rdi
movq %r14, %rsi
callq 0x9308
movq 0x68(%rsp), %rdi
leaq 0x8263(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
movq %rbp, %r12
movq %rbp, 0x110(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x110(%rsp), %rdi
movq %r14, %rsi
callq 0x9308
leaq 0x55891(%rip), %rdi     # 0x58748
leaq 0x48(%rsp), %rsi
callq 0x48c2
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x2f1b
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x2f12
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x2f18
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x2f1b
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x2ee2
addl $-0x3, %r15d
jmp 0x2f1b
addl $-0x2, %r15d
jmp 0x2f1b
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0xa0(%rsp), %rax
movq %rax, 0x90(%rsp)
leaq 0x90(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x90(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54b4
leaq 0x90(%rsp), %rdi
leaq 0x817c(%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 0x2f96
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x2f9c
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)
leaq 0x5575d(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x48c2
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x3022
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x3019
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x301f
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x3022
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x2fe9
addl $-0x3, %r15d
jmp 0x3022
addl $-0x2, %r15d
jmp 0x3022
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0x80(%rsp), %rax
movq %rax, 0x70(%rsp)
leaq 0x70(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x70(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x3071
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x70(%rsp), %rsi
movq 0x78(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq 0x100(%rsp), %rbp
leaq 0x80(%rsp), %r15
leaq 0x10(%rsp), %r13
jbe 0x30b5
movl $0xf, %edi
cmpq %r15, %rsi
je 0x30b0
movq 0x80(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x30bf
movq %r13, %rdi
callq 0x2090
jmp 0x30cd
leaq 0x70(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
movq %rbp, 0xf0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x30f6
movq %rdx, 0xf0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x100(%rsp)
jmp 0x30fd
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0xf8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x312c
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3140
callq 0x21a0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x315a
callq 0x21a0
leaq 0xc0f7(%rip), %rdi      # 0xf258
leaq 0xf0(%rsp), %rsi
callq 0x9dd2
movq %rax, %r15
leaq 0xc0e8(%rip), %rax      # 0xf260
cmpq %rax, %r15
je 0x31ac
leaq 0x555c4(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x48c2
movq 0x48(%r15), %rsi
cmpq 0x50(%r15), %rsi
je 0x31fb
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%r15)
jmp 0x3278
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
leaq 0x5557e(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x48c2
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x320c
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x321c
addq $0x40, %r15
movq %r15, %rdi
movq %rax, %rdx
callq 0x939e
jmp 0x3278
leaq 0x90(%rsp), %rdi
movq %rax, %rdx
callq 0x939e
movq %r13, %rdi
leaq 0xf0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x4a0a
leaq 0xc01d(%rip), %rdi      # 0xf258
movq %r13, %rsi
callq 0x9e18
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3252
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3266
callq 0x21a0
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x3278
callq 0x21a0
leaq 0x554c9(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x48c2
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x32e6
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x32dd
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x32e3
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x32e6
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x32ad
addl $-0x3, %r15d
jmp 0x32e6
addl $-0x2, %r15d
jmp 0x32e6
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0x80(%rsp), %rax
movq %rax, 0x70(%rsp)
leaq 0x70(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x70(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54b4
leaq 0x70(%rsp), %rdi
leaq 0x7dbd(%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 0x3355
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x335b
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)
leaq 0x5539e(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x48c2
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x33e1
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x33d8
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x33de
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x33e1
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x33a8
addl $-0x3, %r15d
jmp 0x33e1
addl $-0x2, %r15d
jmp 0x33e1
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0xd0(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0xd0(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x3439
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq 0x80(%rsp), %r15
leaq 0x10(%rsp), %r13
jbe 0x3483
movl $0xf, %edi
leaq 0xe0(%rsp), %r9
cmpq %r9, %rsi
je 0x347e
movq 0xe0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x348d
movq %r13, %rdi
callq 0x2090
jmp 0x349e
leaq 0xd0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xa0(%rsp), %rsi
movq %rsi, 0x90(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x34cf
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0x34d5
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x350f
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3523
callq 0x21a0
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x3532
callq 0x21a0
leaq 0xbd4f(%rip), %rdi      # 0xf288
leaq 0x90(%rsp), %rsi
callq 0x9dd2
movq %rax, %r15
leaq 0xbd40(%rip), %rax      # 0xf290
cmpq %rax, %r15
je 0x3581
leaq 0x551ec(%rip), %rdi     # 0x58748
leaq 0x48(%rsp), %rsi
callq 0x48c2
movq 0x48(%r15), %rsi
cmpq 0x50(%r15), %rsi
je 0x35c4
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%r15)
jmp 0x3638
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movq $0x0, 0x80(%rsp)
leaq 0x551ac(%rip), %rdi     # 0x58748
leaq 0x48(%rsp), %rsi
callq 0x48c2
movq 0x78(%rsp), %rsi
cmpq 0x80(%rsp), %rsi
je 0x35d5
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x78(%rsp)
jmp 0x35e2
addq $0x40, %r15
movq %r15, %rdi
movq %rax, %rdx
callq 0x939e
jmp 0x3638
leaq 0x70(%rsp), %rdi
movq %rax, %rdx
callq 0x939e
movq %r13, %rdi
leaq 0x90(%rsp), %rsi
leaq 0x70(%rsp), %rdx
callq 0x4a0a
leaq 0xbc8a(%rip), %rdi      # 0xf288
movq %r13, %rsi
callq 0x9e18
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x3615
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3629
callq 0x21a0
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x3638
callq 0x21a0
leaq 0x55109(%rip), %rdi     # 0x58748
leaq 0x48(%rsp), %rsi
callq 0x48c2
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x36a3
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x369a
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x36a0
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x36a3
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x366a
addl $-0x3, %r15d
jmp 0x36a3
addl $-0x2, %r15d
jmp 0x36a3
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
leaq 0xd0(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0xd0(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54b4
leaq 0xd0(%rsp), %rdi
leaq 0x79f4(%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 0x371e
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x3724
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)
leaq 0x55005(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x48c2
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x37aa
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x37a1
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x37a7
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x37aa
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3771
addl $-0x3, %r15d
jmp 0x37aa
addl $-0x2, %r15d
jmp 0x37aa
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0x150(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x140(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x140(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54b4
movq 0x10(%rsp), %rcx
movl $0xf, %edi
leaq 0x20(%rsp), %rax
cmpq %rax, %rcx
je 0x3802
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r8
movq 0x140(%rsp), %rsi
movq 0x148(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rdi, %rax
leaq 0xc0(%rsp), %r13
movq %r12, %rbp
jbe 0x384a
movl $0xf, %edi
leaq 0x150(%rsp), %r9
cmpq %r9, %rsi
je 0x3845
movq 0x150(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x3856
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x3867
leaq 0x140(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0x80(%rsp), %rsi
movq %rsi, 0x70(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x3892
movq %rdx, 0x70(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x80(%rsp)
jmp 0x3898
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x78(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x38cf
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x38e3
callq 0x21a0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x38fd
callq 0x21a0
leaq 0xb9b4(%rip), %rdi      # 0xf2b8
leaq 0x70(%rsp), %rsi
callq 0x9dd2
movq %rax, %r15
leaq 0xb9a8(%rip), %rax      # 0xf2c0
cmpq %rax, %r15
je 0x394c
leaq 0x54df4(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x48c2
movq 0x48(%r15), %rsi
cmpq 0x50(%r15), %rsi
je 0x399b
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%r15)
jmp 0x3a1a
xorps %xmm0, %xmm0
movaps %xmm0, 0xd0(%rsp)
movq $0x0, 0xe0(%rsp)
leaq 0x54dae(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x48c2
movq 0xd8(%rsp), %rsi
cmpq 0xe0(%rsp), %rsi
je 0x39ac
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xd8(%rsp)
jmp 0x39bc
addq $0x40, %r15
movq %r15, %rdi
movq %rax, %rdx
callq 0x939e
jmp 0x3a1a
leaq 0xd0(%rsp), %rdi
movq %rax, %rdx
callq 0x939e
leaq 0x10(%rsp), %r15
movq %r15, %rdi
leaq 0x70(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x4a0a
leaq 0xb8db(%rip), %rdi      # 0xf2b8
movq %r15, %rsi
callq 0x9e18
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x39f4
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3a08
callq 0x21a0
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x3a1a
callq 0x21a0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x3a31
callq 0x21a0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x3a4b
callq 0x21a0
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x3a65
callq 0x21a0
movq 0x110(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3a77
callq 0x21a0
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3a89
callq 0x21a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3a9d
callq 0x21a0
movq 0x68(%rsp), %rdi
leaq 0x7639(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
je 0x2e16
leaq 0x75e7(%rip), %rsi      # 0xb0aa
leaq 0xb81e(%rip), %rdx      # 0xf2e8
leaq 0x48(%rsp), %rbx
movq %rbx, %rdi
callq 0x4841
leaq 0x7609(%rip), %rsi      # 0xb0e7
movq %rbx, %rdi
callq 0x2360
leaq 0x20(%rsp), %r14
movq %r14, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3b0e
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x3b15
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rsp), %rdi
leaq 0x7584(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x3b50
callq 0x21a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3b64
callq 0x21a0
leaq 0x7577(%rip), %rsi      # 0xb0e2
leaq 0xb7be(%rip), %r14      # 0xf330
movq %rbx, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
jne 0x3f01
leaq 0x7543(%rip), %r12      # 0xb0d2
leaq 0x140(%rsp), %r13
leaq 0xf0(%rsp), %rbp
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0x9308
movq %rbx, %rdi
leaq 0x7516(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x9308
leaq 0x54b48(%rip), %rdi     # 0x58748
leaq 0x10(%rsp), %rsi
callq 0x9f22
leaq 0x54b3f(%rip), %rcx     # 0x58750
cmpq %rcx, %rax
jne 0x3c6e
movl $0xc, %edx
movq 0xb3b6(%rip), %rdi      # 0xefd8
leaq 0x74cd(%rip), %rsi      # 0xb0f6
callq 0x2210
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xb399(%rip), %rdi      # 0xefd8
callq 0x2210
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x54ad3(%rip), %rdi     # 0x58748
leaq 0x48(%rsp), %rsi
callq 0x9f22
leaq 0x54aca(%rip), %rcx     # 0x58750
cmpq %rcx, %rax
jne 0x3ce3
movl $0xc, %edx
movq 0xb341(%rip), %rdi      # 0xefd8
leaq 0x7458(%rip), %rsi      # 0xb0f6
callq 0x2210
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0xb324(%rip), %rdi      # 0xefd8
callq 0x2210
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x54a5e(%rip), %r14     # 0x58748
movq %r14, %rdi
leaq 0x10(%rsp), %rsi
callq 0x48c2
movl (%rax), %eax
movl %eax, 0x68(%rsp)
movq %r14, %rdi
leaq 0x48(%rsp), %rsi
callq 0x48c2
movl (%rax), %eax
movl %eax, 0x13c(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x70(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
movq %rbx, %rdi
movq %r12, %rsi
leaq 0xc(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
xorps %xmm0, %xmm0
movaps %xmm0, 0x110(%rsp)
movq $0x0, 0x120(%rsp)
cmpl $0x0, 0xc(%rsp)
jle 0x3e66
xorl %r14d, %r14d
xorps %xmm0, %xmm0
movaps %xmm0, 0xf0(%rsp)
movq $0x0, 0x100(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
leaq 0xd0(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x0, 0xd0(%rsp)
jle 0x3de6
xorl %r15d, %r15d
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x2350
movq 0xf8(%rsp), %rsi
cmpq 0x100(%rsp), %rsi
je 0x3dce
movl 0x140(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xf8(%rsp)
jmp 0x3dd9
movq %rbp, %rdi
movq %r13, %rdx
callq 0x939e
incl %r15d
cmpl 0xd0(%rsp), %r15d
jl 0x3d95
movq %rbx, %rdi
leaq 0x7341(%rip), %rsi      # 0xb131
leaq 0x90(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
leaq 0xb0(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
callq 0x5522
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
leaq 0x110(%rsp), %rdi
movq %r15, %rsi
callq 0x9fac
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x3e46
callq 0x21a0
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x3e58
callq 0x21a0
incl %r14d
cmpl 0xc(%rsp), %r14d
jl 0x3d5c
movl 0x70(%rsp), %r15d
leaq 0x160(%rsp), %r14
movq %r14, %rdi
leaq 0x110(%rsp), %rsi
callq 0x4b72
leaq 0x54966(%rip), %rdi     # 0x587f0
movl 0x68(%rsp), %esi
movl 0x13c(%rsp), %edx
movl %r15d, %ecx
movq %r14, %r8
callq 0x4a7e
movq %r14, %rdi
leaq 0xb486(%rip), %r14      # 0xf330
callq 0x4bf6
leaq 0x110(%rsp), %rdi
callq 0x4bf6
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x3ed0
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3ee4
callq 0x21a0
movq %rbx, %rdi
leaq 0x71f4(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
je 0x3b9f
shll 0x54809(%rip)           # 0x58710
movq 0xb0ca(%rip), %r15      # 0xefd8
leaq 0x71ee(%rip), %rsi      # 0xb103
movl $0xd, %edx
movq %r15, %rdi
callq 0x2210
movl 0x547e8(%rip), %esi     # 0x58710
movq %r15, %rdi
callq 0x2310
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x71b0(%rip), %rsi      # 0xb111
movl $0xb, %edx
movq %r15, %rdi
callq 0x2210
movl 0x547a0(%rip), %esi     # 0x58714
movq %r15, %rdi
callq 0x2310
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2120
leaq 0x70fd(%rip), %rsi      # 0xb0aa
leaq 0xb334(%rip), %rdx      # 0xf2e8
leaq 0x48(%rsp), %r15
movq %r15, %rdi
callq 0x4841
leaq 0x7155(%rip), %rsi      # 0xb11d
movq %r15, %rdi
callq 0x2360
leaq 0x20(%rsp), %r14
movq %r14, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3ff8
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x3fff
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x10(%rsp), %rdi
leaq 0x709a(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, %r15
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x403a
callq 0x21a0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
leaq 0xb2e2(%rip), %r14      # 0xf330
je 0x4055
callq 0x21a0
leaq 0x7076(%rip), %rsi      # 0xb0d2
leaq 0xc(%rsp), %rdx
movq %r15, %rdi
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
jne 0x42f5
leaq 0x110(%rsp), %r12
leaq 0x10(%rsp), %r13
leaq 0x58(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x714d(%rip), %rdx      # 0xb1e4
movq %rdx, %rsi
callq 0x9308
cmpl $0x0, 0xc(%rsp)
jle 0x4211
xorl %ebp, %ebp
movq %r15, %rdi
leaq 0x702c(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
leaq 0x120(%rsp), %rax
movq %rax, 0x110(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0x9308
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %r8
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0xc0(%rsp), %r14
movq %r14, 0xb0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4131
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x4138
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0xb8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rdi
leaq 0x6fcb(%rip), %rsi      # 0xb12d
callq 0x2360
leaq 0x20(%rsp), %r14
movq %r14, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x418f
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x4196
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x2240
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x41ca
callq 0x21a0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
leaq 0xb14c(%rip), %r14      # 0xf330
je 0x41eb
callq 0x21a0
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x4205
callq 0x21a0
incl %ebp
cmpl 0xc(%rsp), %ebp
jl 0x40ac
movq %r15, %rdi
leaq 0x6eb7(%rip), %rsi      # 0xb0d2
leaq 0xc(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x0, 0xc(%rsp)
jle 0x42c2
xorl %ebp, %ebp
movq %r15, %rdi
leaq 0x6ef1(%rip), %rsi      # 0xb12f
movq %r12, %rdx
leaq 0xb0(%rsp), %rcx
xorl %eax, %eax
callq 0x2350
movsd 0xb0(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x55a2
movl 0x110(%rsp), %eax
movl %eax, 0x30(%rsp)
leaq 0xaf98(%rip), %rdi      # 0xf228
movq %r13, %rsi
callq 0x4c3c
movsd 0x68(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x42b6
callq 0x21a0
incl %ebp
cmpl 0xc(%rsp), %ebp
jl 0x4234
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x42d6
callq 0x21a0
movq %r15, %rdi
leaq 0x6df2(%rip), %rsi      # 0xb0d2
leaq 0xc(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
je 0x4081
movq %r15, %rdi
callq 0x21d0
movq %rbx, %rdi
callq 0x21d0
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4678
jmp 0x4678
jmp 0x4678
jmp 0x4678
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x46c7
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x4a58
jmp 0x43a1
jmp 0x436f
jmp 0x439e
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x4a58
jmp 0x4388
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x4a58
jmp 0x4372
jmp 0x4385
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
jne 0x4512
jmp 0x4594
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
jne 0x4547
jmp 0x454c
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x4407
callq 0x21a0
jmp 0x4407
jmp 0x4591
jmp 0x4404
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x4bf6
jmp 0x469c
movq %rax, %rbx
jmp 0x469c
jmp 0x44c5
jmp 0x4600
jmp 0x4608
jmp 0x4600
jmp 0x4608
jmp 0x4678
jmp 0x44c5
movq %rax, %rbx
jmp 0x44f9
movq %rax, %rbx
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
jmp 0x4509
movq %rax, %rbx
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x44e5
callq 0x21a0
jmp 0x44e5
movq %rax, %rbx
jmp 0x4535
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x4521
callq 0x21a0
jmp 0x4521
jmp 0x4591
jmp 0x44c5
jmp 0x4678
jmp 0x4678
movq %rax, %rbx
jmp 0x45ef
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
jmp 0x45ef
movq %rax, %rbx
jmp 0x4575
movq %rax, %rbx
movq 0x70(%rsp), %rdi
cmpq %r15, %rdi
je 0x4561
callq 0x21a0
jmp 0x4561
jmp 0x44c5
jmp 0x4608
jmp 0x4600
movq %rax, %rbx
jmp 0x46d1
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
jmp 0x45be
jmp 0x4608
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x44f9
callq 0x21a0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x4594
callq 0x21a0
jmp 0x4594
movq %rax, %rbx
jmp 0x454c
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x4535
callq 0x21a0
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x454c
callq 0x21a0
leaq 0xc0(%rsp), %r13
leaq 0x100(%rsp), %rbp
jmp 0x45be
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x4575
callq 0x21a0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x45d5
callq 0x21a0
jmp 0x45d5
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
leaq 0x100(%rsp), %rbp
leaq 0xa0(%rsp), %rax
movq 0x90(%rsp), %rdi
cmpq %rax, %rdi
je 0x45be
callq 0x21a0
movq 0xf0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x45dd
callq 0x21a0
jmp 0x45dd
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
movq 0x110(%rsp), %rdi
cmpq %r12, %rdi
je 0x45ef
callq 0x21a0
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
jne 0x4671
jmp 0x467b
jmp 0x4600
movq %rax, %rbx
jmp 0x46bd
movq %rax, %rbx
jmp 0x46a9
jmp 0x4687
jmp 0x4687
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x468a
callq 0x21a0
jmp 0x468a
jmp 0x4687
jmp 0x4678
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
jmp 0x466c
jmp 0x4678
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
cmpq %r14, %rdi
je 0x465c
callq 0x21a0
jmp 0x465c
jmp 0x4678
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x467b
callq 0x21a0
jmp 0x467b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
jmp 0x46c7
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x469c
callq 0x21a0
leaq 0x110(%rsp), %rdi
callq 0x4bf6
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x46bd
callq 0x21a0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x46d1
callq 0x21a0
movq %rbx, %rdi
callq 0x2320