// File: /workspace/github_cpp_makefile_star2_O1/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 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0x4887
leaq 0x8681(%rip), %rsi      # 0xb0ae
movq %rbx, %rdi
callq 0x2360
leaq 0x18(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2a5c
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x2a62
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
leaq 0x8637(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2a9d
callq 0x21a0
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2ab0
callq 0x21a0
leaq 0x85f3(%rip), %rsi      # 0xb0aa
leaq 0xc82a(%rip), %rdx      # 0xf2e8
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0x4887
leaq 0x85ed(%rip), %rsi      # 0xb0bf
movq %rbx, %rdi
callq 0x2360
leaq 0x18(%rsp), %rbx
movq %rbx, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2b02
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x2b08
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
leaq 0x8591(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, 0x88(%rsp)
movq 0x8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2b48
callq 0x21a0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x2b5c
callq 0x21a0
leaq 0x856d(%rip), %rsi      # 0xb0d0
leaq 0xc7c6(%rip), %r15      # 0xf330
leaq 0x4(%rsp), %rcx
movq %r14, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
jne 0x2c1c
leaq 0x8(%rsp), %r12
leaq 0x4(%rsp), %rbx
leaq 0x853a(%rip), %r13      # 0xb0d0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r15, %rdi
callq 0x20d0
leaq (%rax,%r15), %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0x9642
movl 0x4(%rsp), %ebp
leaq 0x55b86(%rip), %rdi     # 0x58748
movq %r12, %rsi
callq 0x4908
movl %ebp, (%rax)
leaq 0x55ba5(%rip), %rdi     # 0x58778
movq %rbx, %rsi
callq 0x4984
movq %rax, %rdi
movq %r12, %rsi
callq 0x2100
incl 0x55b28(%rip)           # 0x58714
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2c00
callq 0x21a0
movq %r14, %rdi
movq %r13, %rsi
movq %r15, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
je 0x2b96
leaq 0x84ad(%rip), %rsi      # 0xb0d0
leaq 0xc706(%rip), %r14      # 0xf330
leaq 0x4(%rsp), %rcx
movq 0x88(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
jne 0x2d3e
leaq 0x8(%rsp), %r15
leaq 0x55b52(%rip), %r13     # 0x587a8
leaq 0x4(%rsp), %rbp
leaq 0x40(%rsp), %r12
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x9642
movl 0x4(%rsp), %ebx
leaq 0x55a8c(%rip), %rdi     # 0x58718
movq %r15, %rsi
callq 0x4908
movl %ebx, (%rax)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x4984
movq %rax, %rdi
movq %r15, %rsi
callq 0x2100
movq %r12, %rdi
leaq 0x841f(%rip), %rsi      # 0xb0d5
movq %r15, %rdx
callq 0x4887
movl 0x4(%rsp), %eax
movl $0x541, %ecx            # imm = 0x541
addl %ecx, %eax
movl %eax, 0xb0(%rsp)
movq %r13, %rdi
leaq 0xb0(%rsp), %rsi
callq 0x49e8
movq %rax, %rdi
movq %r12, %rsi
callq 0x2240
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x2cff
callq 0x21a0
incl 0x55a0b(%rip)           # 0x58710
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x2d19
callq 0x21a0
movq 0x88(%rsp), %rdi
leaq 0x83a8(%rip), %rsi      # 0xb0d0
movq %r14, %rdx
movq %rbp, %rcx
xorl %eax, %eax
callq 0x2350
cmpl $0x2, %eax
je 0x2c60
leaq 0x8365(%rip), %rsi      # 0xb0aa
leaq 0xc59c(%rip), %rdx      # 0xf2e8
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0x4887
leaq 0x8377(%rip), %rsi      # 0xb0d7
movq %rbx, %rdi
callq 0x2360
leaq 0x18(%rsp), %rbx
movq %rbx, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2d90
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x2d96
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
leaq 0x8303(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, 0x88(%rsp)
movq 0x8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2dd6
callq 0x21a0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x2dea
callq 0x21a0
leaq 0x82f1(%rip), %rsi      # 0xb0e2
leaq 0xc538(%rip), %r14      # 0xf330
movq 0x88(%rsp), %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
jne 0x3ac5
leaq 0xc0(%rsp), %r13
leaq 0x120(%rsp), %rbp
movl $0xd1b71759, %ebx       # imm = 0xD1B71759
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x9642
movq 0x88(%rsp), %rdi
leaq 0x8288(%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 0x9642
movq 0x88(%rsp), %rdi
leaq 0x824b(%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 0x9642
leaq 0x55879(%rip), %rdi     # 0x58748
leaq 0x40(%rsp), %rsi
callq 0x4908
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x2f33
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x2f2a
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x2f30
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x2f33
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x2efa
addl $-0x3, %r15d
jmp 0x2f33
addl $-0x2, %r15d
jmp 0x2f33
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 0x54d4
leaq 0x90(%rsp), %rdi
leaq 0x8164(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2fae
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x2fb4
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x55745(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x4908
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x303a
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x3031
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x3037
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x303a
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3001
addl $-0x3, %r15d
jmp 0x303a
addl $-0x2, %r15d
jmp 0x303a
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x60(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x60(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54d4
movq 0x8(%rsp), %rcx
movl $0xf, %esi
leaq 0x18(%rsp), %rax
cmpq %rax, %rcx
je 0x3086
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %r8
movq 0x68(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
leaq 0x100(%rsp), %rbp
leaq 0x70(%rsp), %r15
leaq 0x8(%rsp), %r13
jbe 0x30c1
movl $0xf, %esi
cmpq %r15, 0x60(%rsp)
je 0x30bc
movq 0x70(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x30d0
movq 0x60(%rsp), %rsi
movq %r13, %rdi
callq 0x2090
jmp 0x30de
leaq 0x60(%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 0x3107
movq %rdx, 0xf0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x100(%rsp)
jmp 0x310e
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 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x313d
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3151
callq 0x21a0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x316b
callq 0x21a0
leaq 0xc0e6(%rip), %rdi      # 0xf258
leaq 0xf0(%rsp), %rsi
callq 0xa106
movq %rax, %r15
leaq 0xc0d7(%rip), %rax      # 0xf260
cmpq %rax, %r15
je 0x31bd
leaq 0x555b3(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x4908
movq 0x48(%r15), %rsi
cmpq 0x50(%r15), %rsi
je 0x320c
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%r15)
jmp 0x3289
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
leaq 0x5556d(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x4908
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x321d
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x322d
addq $0x40, %r15
movq %r15, %rdi
movq %rax, %rdx
callq 0x96d2
jmp 0x3289
leaq 0x90(%rsp), %rdi
movq %rax, %rdx
callq 0x96d2
movq %r13, %rdi
leaq 0xf0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x4a4c
leaq 0xc00c(%rip), %rdi      # 0xf258
movq %r13, %rsi
callq 0xa14c
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x3263
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3277
callq 0x21a0
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x3289
callq 0x21a0
leaq 0x554b8(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x4908
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x32f7
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x32ee
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x32f4
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x32f7
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x32be
addl $-0x3, %r15d
jmp 0x32f7
addl $-0x2, %r15d
jmp 0x32f7
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x60(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x60(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54d4
leaq 0x60(%rsp), %rdi
leaq 0x7daf(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3363
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x3369
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x55390(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x4908
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x33ef
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x33e6
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x33ec
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x33ef
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x33b6
addl $-0x3, %r15d
jmp 0x33ef
addl $-0x2, %r15d
jmp 0x33ef
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 0x54d4
movq 0x8(%rsp), %rcx
movl $0xf, %esi
leaq 0x18(%rsp), %rax
cmpq %rax, %rcx
je 0x3447
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %r8
movq 0xd8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
leaq 0x70(%rsp), %r15
leaq 0x8(%rsp), %r13
jbe 0x348b
movl $0xf, %esi
leaq 0xe0(%rsp), %rdi
cmpq %rdi, 0xd0(%rsp)
je 0x3486
movq 0xe0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x349d
movq 0xd0(%rsp), %rsi
movq %r13, %rdi
callq 0x2090
jmp 0x34ae
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 0x34df
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0x34e5
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 0x351f
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3533
callq 0x21a0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x3542
callq 0x21a0
leaq 0xbd3f(%rip), %rdi      # 0xf288
leaq 0x90(%rsp), %rsi
callq 0xa106
movq %rax, %r15
leaq 0xbd30(%rip), %rax      # 0xf290
cmpq %rax, %r15
je 0x3591
leaq 0x551dc(%rip), %rdi     # 0x58748
leaq 0x40(%rsp), %rsi
callq 0x4908
movq 0x48(%r15), %rsi
cmpq 0x50(%r15), %rsi
je 0x35ce
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%r15)
jmp 0x3642
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x5519f(%rip), %rdi     # 0x58748
leaq 0x40(%rsp), %rsi
callq 0x4908
movq 0x68(%rsp), %rsi
cmpq 0x70(%rsp), %rsi
je 0x35df
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x68(%rsp)
jmp 0x35ec
addq $0x40, %r15
movq %r15, %rdi
movq %rax, %rdx
callq 0x96d2
jmp 0x3642
leaq 0x60(%rsp), %rdi
movq %rax, %rdx
callq 0x96d2
movq %r13, %rdi
leaq 0x90(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x4a4c
leaq 0xbc80(%rip), %rdi      # 0xf288
movq %r13, %rsi
callq 0xa14c
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x361f
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3633
callq 0x21a0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x3642
callq 0x21a0
leaq 0x550ff(%rip), %rdi     # 0x58748
leaq 0x40(%rsp), %rsi
callq 0x4908
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x36ad
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x36a4
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x36aa
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x36ad
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x3674
addl $-0x3, %r15d
jmp 0x36ad
addl $-0x2, %r15d
jmp 0x36ad
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 0x54d4
leaq 0xd0(%rsp), %rdi
leaq 0x79ea(%rip), %rsi      # 0xb0e5
callq 0x2360
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3728
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x372e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x54ffb(%rip), %rdi     # 0x58748
leaq 0xb0(%rsp), %rsi
callq 0x4908
movl (%rax), %ebp
movl %ebp, %r13d
negl %r13d
cmovsl %ebp, %r13d
movl $0x1, %r15d
cmpl $0xa, %r13d
jb 0x37b4
movl $0x4, %r15d
movl %r13d, %eax
cmpl $0x63, %eax
jbe 0x37ab
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x37b1
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x37b4
movl %eax, %ecx
imulq %rbx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x377b
addl $-0x3, %r15d
jmp 0x37b4
addl $-0x2, %r15d
jmp 0x37b4
decl %r15d
shrl $0x1f, %ebp
leal (%r15,%rbp), %esi
leaq 0x148(%rsp), %rax
movq %rax, 0x138(%rsp)
leaq 0x138(%rsp), %rdi
movl $0x2d, %edx
callq 0x2220
addq 0x138(%rsp), %rbp
movq %rbp, %rdi
movl %r15d, %esi
movl %r13d, %edx
callq 0x54d4
movq 0x8(%rsp), %rcx
movl $0xf, %esi
leaq 0x18(%rsp), %rax
cmpq %rax, %rcx
je 0x380c
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %r8
movq 0x140(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
leaq 0xc0(%rsp), %r13
movq %r12, %rbp
jbe 0x3851
movl $0xf, %esi
leaq 0x148(%rsp), %rdi
cmpq %rdi, 0x138(%rsp)
je 0x384c
movq 0x148(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x3865
movq 0x138(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x2090
jmp 0x3876
leaq 0x138(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x2200
leaq 0x70(%rsp), %rsi
movq %rsi, 0x60(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x389b
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x38a1
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x38d8
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x38ec
callq 0x21a0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x3906
callq 0x21a0
leaq 0xb9ab(%rip), %rdi      # 0xf2b8
leaq 0x60(%rsp), %rsi
callq 0xa106
movq %rax, %r15
leaq 0xb99f(%rip), %rax      # 0xf2c0
cmpq %rax, %r15
je 0x3955
leaq 0x54deb(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x4908
movq 0x48(%r15), %rsi
cmpq 0x50(%r15), %rsi
je 0x39a4
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%r15)
jmp 0x3a23
xorps %xmm0, %xmm0
movaps %xmm0, 0xd0(%rsp)
movq $0x0, 0xe0(%rsp)
leaq 0x54da5(%rip), %rdi     # 0x58718
leaq 0x110(%rsp), %rsi
callq 0x4908
movq 0xd8(%rsp), %rsi
cmpq 0xe0(%rsp), %rsi
je 0x39b5
movl (%rax), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xd8(%rsp)
jmp 0x39c5
addq $0x40, %r15
movq %r15, %rdi
movq %rax, %rdx
callq 0x96d2
jmp 0x3a23
leaq 0xd0(%rsp), %rdi
movq %rax, %rdx
callq 0x96d2
leaq 0x8(%rsp), %r15
movq %r15, %rdi
leaq 0x60(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x4a4c
leaq 0xb8d2(%rip), %rdi      # 0xf2b8
movq %r15, %rsi
callq 0xa14c
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x39fd
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3a11
callq 0x21a0
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x3a23
callq 0x21a0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x3a37
callq 0x21a0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x3a51
callq 0x21a0
movq 0xf0(%rsp), %rdi
leaq 0x100(%rsp), %rax
cmpq %rax, %rdi
je 0x3a6b
callq 0x21a0
movq 0x110(%rsp), %rdi
cmpq %rbp, %rdi
je 0x3a7d
callq 0x21a0
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3a8f
callq 0x21a0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3aa3
callq 0x21a0
movq 0x88(%rsp), %rdi
leaq 0x7630(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
je 0x2e28
leaq 0x75de(%rip), %rsi      # 0xb0aa
leaq 0xb815(%rip), %rdx      # 0xf2e8
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0x4887
leaq 0x7600(%rip), %rsi      # 0xb0e7
movq %rbx, %rdi
callq 0x2360
leaq 0x18(%rsp), %r14
movq %r14, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x3b17
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x3b1e
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
leaq 0x757b(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3b59
callq 0x21a0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3b6d
callq 0x21a0
leaq 0x756e(%rip), %rsi      # 0xb0e2
leaq 0xb7b5(%rip), %r14      # 0xf330
movq %rbx, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
jne 0x3f51
leaq 0x753a(%rip), %r12      # 0xb0d2
leaq 0x138(%rsp), %r13
leaq 0xf0(%rsp), %rbp
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x9642
movq %rbx, %rdi
leaq 0x750d(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq %r14, %rdi
callq 0x20d0
leaq (%rax,%r14), %rdx
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x9642
leaq 0x54b3f(%rip), %r14     # 0x58748
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0xa256
leaq 0x54b33(%rip), %rcx     # 0x58750
cmpq %rcx, %rax
jne 0x3c7a
movl $0xc, %edx
movq 0xb3aa(%rip), %rdi      # 0xefd8
leaq 0x74c1(%rip), %rsi      # 0xb0f6
callq 0x2210
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0xb38d(%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
movq %r14, %rdi
leaq 0x40(%rsp), %rsi
callq 0xa256
leaq 0x54ac2(%rip), %rcx     # 0x58750
cmpq %rcx, %rax
jne 0x3ceb
movl $0xc, %edx
movq 0xb339(%rip), %rdi      # 0xefd8
leaq 0x7450(%rip), %rsi      # 0xb0f6
callq 0x2210
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0xb31c(%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
movq %r14, %rdi
leaq 0x8(%rsp), %rsi
callq 0x4908
movl (%rax), %eax
movl %eax, 0x88(%rsp)
movq %r14, %rdi
leaq 0x40(%rsp), %rsi
callq 0x4908
movl (%rax), %eax
movl %eax, 0x15c(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x60(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x4(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
xorps %xmm0, %xmm0
movaps %xmm0, 0x110(%rsp)
movq $0x0, 0x120(%rsp)
movq 0x118(%rsp), %r14
testq %r14, %r14
je 0x3d84
xorl %r15d, %r15d
movq (%r15), %rdi
testq %rdi, %rdi
je 0x3d6f
callq 0x21a0
addq $0x20, %r15
cmpq %r14, %r15
jne 0x3d62
movq $0x0, 0x118(%rsp)
cmpl $0x0, 0x4(%rsp)
jle 0x3eb3
xorl %r14d, %r14d
xorps %xmm0, %xmm0
movaps %xmm0, 0xf0(%rsp)
movq $0x0, 0x100(%rsp)
cmpq $0x0, 0xf8(%rsp)
je 0x3dc0
movq $0x0, 0xf8(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
leaq 0xd0(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x0, 0xd0(%rsp)
jle 0x3e33
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 0x3e1b
movl 0x138(%rsp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xf8(%rsp)
jmp 0x3e26
movq %rbp, %rdi
movq %r13, %rdx
callq 0x96d2
incl %r15d
cmpl 0xd0(%rsp), %r15d
jl 0x3de2
movq %rbx, %rdi
leaq 0x72f4(%rip), %rsi      # 0xb131
leaq 0x90(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
leaq 0xb0(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
callq 0x5542
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
leaq 0x110(%rsp), %rdi
movq %r15, %rsi
callq 0xa2e0
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x3e93
callq 0x21a0
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x3ea5
callq 0x21a0
incl %r14d
cmpl 0x4(%rsp), %r14d
jl 0x3d92
movl 0x60(%rsp), %r15d
leaq 0x160(%rsp), %r14
movq %r14, %rdi
leaq 0x110(%rsp), %rsi
callq 0x4bb0
leaq 0x54919(%rip), %rdi     # 0x587f0
movl 0x88(%rsp), %esi
movl 0x15c(%rsp), %edx
movl %r15d, %ecx
movq %r14, %r8
callq 0x4ac0
movq %r14, %rdi
leaq 0xb436(%rip), %r14      # 0xf330
callq 0x4c34
leaq 0x110(%rsp), %rdi
callq 0x4c34
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x3f20
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x3f34
callq 0x21a0
movq %rbx, %rdi
leaq 0x71a4(%rip), %rsi      # 0xb0e2
movq %r14, %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
je 0x3ba8
shll 0x547b9(%rip)           # 0x58710
movq 0xb07a(%rip), %r15      # 0xefd8
leaq 0x719e(%rip), %rsi      # 0xb103
movl $0xd, %edx
movq %r15, %rdi
callq 0x2210
movl 0x54798(%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 0x7160(%rip), %rsi      # 0xb111
movl $0xb, %edx
movq %r15, %rdi
callq 0x2210
movl 0x54750(%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 0x70ad(%rip), %rsi      # 0xb0aa
leaq 0xb2e4(%rip), %rdx      # 0xf2e8
leaq 0x40(%rsp), %r15
movq %r15, %rdi
callq 0x4887
leaq 0x7105(%rip), %rsi      # 0xb11d
movq %r15, %rdi
callq 0x2360
leaq 0x18(%rsp), %r14
movq %r14, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x4048
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x404f
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
leaq 0x704a(%rip), %rsi      # 0xb0bd
callq 0x2230
movq %rax, %r15
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x408a
callq 0x21a0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
leaq 0xb292(%rip), %r14      # 0xf330
je 0x40a5
callq 0x21a0
leaq 0x7026(%rip), %rsi      # 0xb0d2
leaq 0x4(%rsp), %rdx
movq %r15, %rdi
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
jne 0x434b
leaq 0x110(%rsp), %r12
leaq 0x8(%rsp), %r13
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x70fd(%rip), %rdx      # 0xb1e4
movq %rdx, %rsi
callq 0x9642
cmpl $0x0, 0x4(%rsp)
jle 0x4261
xorl %ebp, %ebp
movq %r15, %rdi
leaq 0x6fdc(%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 0x9642
movq 0x40(%rsp), %rcx
movq 0x48(%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 0x4181
movq %rdx, 0xb0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc0(%rsp)
jmp 0x4188
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 0x6f7b(%rip), %rsi      # 0xb12d
callq 0x2360
leaq 0x18(%rsp), %r14
movq %r14, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x41df
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x41e6
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
movq %r13, %rsi
callq 0x2240
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x421a
callq 0x21a0
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
leaq 0xb0fc(%rip), %r14      # 0xf330
je 0x423b
callq 0x21a0
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x4255
callq 0x21a0
incl %ebp
cmpl 0x4(%rsp), %ebp
jl 0x40fc
movq %r15, %rdi
leaq 0x6e67(%rip), %rsi      # 0xb0d2
leaq 0x4(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x0, 0x4(%rsp)
jle 0x4318
xorl %ebp, %ebp
movq %r15, %rdi
leaq 0x6ea1(%rip), %rsi      # 0xb12f
movq %r12, %rdx
leaq 0xb0(%rsp), %rcx
xorl %eax, %eax
callq 0x2350
movsd 0xb0(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x55c2
movl 0x110(%rsp), %eax
movl %eax, 0x28(%rsp)
leaq 0xaf45(%rip), %rdi      # 0xf228
movq %r13, %rsi
callq 0x4c74
movsd 0x88(%rsp), %xmm0
movsd %xmm0, (%rax)
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x430c
callq 0x21a0
incl %ebp
cmpl 0x4(%rsp), %ebp
jl 0x4284
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x432c
callq 0x21a0
movq %r15, %rdi
leaq 0x6d9c(%rip), %rsi      # 0xb0d2
leaq 0x4(%rsp), %rdx
xorl %eax, %eax
callq 0x2350
cmpl $0x1, %eax
je 0x40d1
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 0x46c4
jmp 0x46c4
jmp 0x46c4
jmp 0x46c4
movq %rax, %rbx
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x4713
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a9a
jmp 0x43f7
jmp 0x43c5
jmp 0x43f4
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a9a
jmp 0x43de
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4a9a
jmp 0x43c8
jmp 0x43db
movq %rax, %rbx
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
jne 0x4561
jmp 0x45e0
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
jne 0x4593
jmp 0x4598
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x445d
callq 0x21a0
jmp 0x445d
jmp 0x45dd
jmp 0x445a
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x4c34
jmp 0x46e8
movq %rax, %rbx
jmp 0x46e8
jmp 0x4518
jmp 0x464c
jmp 0x4654
jmp 0x464c
jmp 0x4654
jmp 0x46c4
jmp 0x4518
movq %rax, %rbx
jmp 0x454c
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
jmp 0x455c
movq %rax, %rbx
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x4538
callq 0x21a0
jmp 0x4538
movq %rax, %rbx
jmp 0x4584
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x4570
callq 0x21a0
jmp 0x4570
jmp 0x45dd
jmp 0x4518
jmp 0x46c4
jmp 0x46c4
movq %rax, %rbx
jmp 0x463b
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
jmp 0x463b
movq %rax, %rbx
jmp 0x45c1
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x45ad
callq 0x21a0
jmp 0x45ad
jmp 0x4518
jmp 0x4654
jmp 0x464c
movq %rax, %rbx
jmp 0x471d
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
jmp 0x460a
jmp 0x4654
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x454c
callq 0x21a0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x45e0
callq 0x21a0
jmp 0x45e0
movq %rax, %rbx
jmp 0x4598
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x4584
callq 0x21a0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x4598
callq 0x21a0
leaq 0xc0(%rsp), %r13
leaq 0x100(%rsp), %rbp
jmp 0x460a
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x45c1
callq 0x21a0
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x4621
callq 0x21a0
jmp 0x4621
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
leaq 0x100(%rsp), %rbp
leaq 0xa0(%rsp), %rax
movq 0x90(%rsp), %rdi
cmpq %rax, %rdi
je 0x460a
callq 0x21a0
movq 0xf0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4629
callq 0x21a0
jmp 0x4629
movq %rax, %rbx
leaq 0xc0(%rsp), %r13
movq 0x110(%rsp), %rdi
cmpq %r12, %rdi
je 0x463b
callq 0x21a0
movq 0xb0(%rsp), %rdi
cmpq %r13, %rdi
jne 0x46bd
jmp 0x46c7
jmp 0x464c
movq %rax, %rbx
jmp 0x4709
movq %rax, %rbx
jmp 0x46f5
jmp 0x46d3
jmp 0x46d3
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x46d6
callq 0x21a0
jmp 0x46d6
jmp 0x46d3
jmp 0x46c4
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
jmp 0x46b8
jmp 0x46c4
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
cmpq %r14, %rdi
je 0x46a8
callq 0x21a0
jmp 0x46a8
jmp 0x46c4
movq %rax, %rbx
movq 0x110(%rsp), %rdi
leaq 0x120(%rsp), %rax
cmpq %rax, %rdi
je 0x46c7
callq 0x21a0
jmp 0x46c7
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
jmp 0x4713
movq %rax, %rbx
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x46e8
callq 0x21a0
leaq 0x110(%rsp), %rdi
callq 0x4c34
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4709
callq 0x21a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x471d
callq 0x21a0
movq %rbx, %rdi
callq 0x2320