// File: /workspace/github_cpp_makefile_star2_O2/CK7[P]abawaca/src/ClusterData.cpp
// Function: ClusterData::ClusterData(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, ScafDpData const&)
ClusterData::ClusterData(string esom_lrn_file, const ScafDpData& scaf_db)
{
        FILE* fp = fopen(esom_lrn_file.c_str(), "r");

        if(!fp) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: could not read " << esom_lrn_file << endl << endl;
                exit(-1);
        }

        char line[8192] = {};

	/********** Read # of dps **********/
	// % 8430
        if(!fgets(line, 8192, fp)) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: " << esom_lrn_file << " is empty" << endl << endl;
                exit(-1);
        }

        // % 8430
        unsigned int ndps;
        char    c;
        if((sscanf(line, "%c %u", &c, &ndps) != 2) || (c != '%')) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: unexpected line 1 in " << esom_lrn_file << ": " << endl << line << endl << endl;
                exit(-1);
        }

	/********** Read # of dimensions **********/
	// % 12
        if(!fgets(line, 8192, fp)) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: failed to read line 2 in " << esom_lrn_file << endl << endl;
                exit(-1);
        }

        unsigned int ndimensions;
        if((sscanf(line, "%c %u", &c, &ndimensions) != 2) || (c != '%')) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: unexpected line 2 in " << esom_lrn_file << ": " << endl << line << endl << endl;
                exit(-1);
        }
	ndimensions--;		// Count in the file contains the dp column

	/********** Read weights for dimensions. We don't use it but just verify that the number found is right **********/
	// % 9	1	1	1	1	1	1	1	1	1	1	1
        if(!fgets(line, 8192, fp)) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: failed to read line 3 in " << esom_lrn_file << endl << endl;
                exit(-1);
        }

        unsigned int t = 1;
	while(strrchr(line, '\t') != NULL) {
		t++;
		*strrchr(line, '\t') = 0;
	}
        if(t != (ndimensions+1)) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: unexpected line 3 in " << esom_lrn_file << ": number of fileds is differemt that " << ndimensions << endl << line << endl << endl;
                exit(-1);
        }

	/********** Read dimension names **********/
	// % key	74-1	74-10	74-11	74-12	74-2	74-3	74-4	74-5	74-6	74-7	74-9
        if(!fgets(line, 8192, fp)) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: failed to read line 4 in " << esom_lrn_file << endl << endl;
                exit(-1);
        }

	// Chomp
	while((strlen(line)>0) && isspace(*(line+strlen(line)-1)))
		*(line+strlen(line)-1) = 0;

	dimensions.push_back(NULL);
	// We skip the first column which contains the dp title
	char *p1=strchr(line, '\t')+1, *p2=strchr(p1, '\t');
	size_t	i = 1;
	while(p2) {
		*p2 = 0;
		dimensions.push_back(new Dimension(i++, string(p1)));
		p1 = p2+1;
		p2=strchr(p1, '\t');
	}
	// Last dimension is not accompanied by a tab
	dimensions.push_back(new Dimension(i, string(p1)));

	if(i != ndimensions) {
                cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: number of dimensions found in line 4 (" << i << ") is different than expected (" << ndimensions << ") in file " << esom_lrn_file << ":" << endl << line << endl << endl;
                exit(-1);
	}

	/********** And finally, read the values themselves **********/	
	size_t entry=0;
	map<size_t, string>	data;

	while(fgets(line, 8192, fp)) {
		// Chomp
		while((strlen(line)>0) && isspace(*(line+strlen(line)-1)))
			*(line+strlen(line)-1) = 0;

		// Skip empty or comment lines
		if((line[0] == '%') || (strlen(line) == 0))
			continue;

		// The following means that we have more lines than expected by the % dps information
		if(entry >= ndps) {
			cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: number of datapoint lines found is higher than expected (" << ndps << "), file " << esom_lrn_file << endl << endl;
			exit(-1);
		}

		char *p1, *p2;
		size_t t=1;
		// Count the number of values and make sure it's what we would expect
		for(p1=line, p2=strchr(p1, '\t'); p2!=NULL; p1=p2+1, p2=strchr(p1, '\t'))
			t++;
		if(t != (ndimensions+1)) {
			cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: number of dimensions found is " << t << ", expected to find " << ndimensions << ": " << line << endl << endl; 
			exit(-1);
		}

		// 1	0.181737916437441	0	0.00990659188488923	0.551726686306843	0.0250488966425045	0.0706148967876072	0	0	0.00324475022645163	0.0147897529305731	0.142930508783691
		p1=line;
		p2=strchr(p1, '\t');
		*p2=0;
		int dp = scaf_db.dp_name2id(atoi(p1));

		if(dp != 0) {
			data.insert(pair<size_t, string>(dp, string(p2+1)));
		}
		entry++;
	}

	for(auto it=data.begin(); it!=data.end(); it++) {
		size_t dp = it->first;
		dps.insert(dp);
		int p1, p2, t;
		for(t=1, p1=0, p2=it->second.find('\t', 0); p2!=string::npos; t++, p1=p2+1, p2=p2=it->second.find('\t', p1)) {
			dimensions[t]->insert(dp, atof(it->second.substr(p1, p2-p1).c_str()));
		}
		// Last value
		dimensions[t]->insert(dp, atof(it->second.substr(p1).c_str()));
	}
	if(entry != ndps) {
		cerr << __FILE__ << " (" << __LINE__ << "): Fatal error: number of datapoint lines found (" << entry << ") is different than expected (" << ndps << "), file " << esom_lrn_file << endl << endl;
		exit(-1);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x20f8, %rsp           # imm = 0x20F8
movq %rdx, -0xb0(%rbp)
movq %rsi, %r12
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
leaq 0x18(%rdi), %rax
movq %rax, -0xa8(%rbp)
leaq 0x48(%rdi), %rax
movq %rax, 0x18(%rdi)
movq $0x1, 0x20(%rdi)
movups %xmm0, 0x28(%rdi)
movl $0x3f800000, 0x38(%rdi) # imm = 0x3F800000
movq %rdi, -0x40(%rbp)
movups %xmm0, 0x40(%rdi)
movq (%rsi), %rdi
leaq 0x860e(%rip), %rsi      # 0x15131
callq 0x4400
testq %rax, %rax
je 0xd042
movq %rax, %r13
leaq -0x2120(%rbp), %rbx
movl $0x2000, %edx           # imm = 0x2000
movq %rbx, %rdi
xorl %esi, %esi
callq 0x41f0
movq %rbx, %rdi
movl $0x2000, %esi           # imm = 0x2000
movq %r13, %rdx
callq 0x45a0
testq %rax, %rax
je 0xd09e
leaq 0x8c89(%rip), %rsi      # 0x157f3
leaq -0x2120(%rbp), %rdi
leaq -0x29(%rbp), %rdx
leaq -0x34(%rbp), %rcx
xorl %eax, %eax
callq 0x4330
cmpl $0x2, %eax
jne 0xd109
cmpb $0x25, -0x29(%rbp)
jne 0xd109
leaq -0x2120(%rbp), %rdi
movl $0x2000, %esi           # imm = 0x2000
movq %r13, %rdx
callq 0x45a0
testq %rax, %rax
je 0xd18b
leaq 0x8c3c(%rip), %rsi      # 0x157f3
leaq -0x2120(%rbp), %rdi
leaq -0x29(%rbp), %rdx
leaq -0x30(%rbp), %rcx
xorl %eax, %eax
callq 0x4330
cmpl $0x2, %eax
jne 0xd1e7
cmpb $0x25, -0x29(%rbp)
jne 0xd1e7
decl -0x30(%rbp)
leaq -0x2120(%rbp), %rdi
movl $0x2000, %esi           # imm = 0x2000
movq %r13, %rdx
callq 0x45a0
testq %rax, %rax
je 0xd269
xorl %r15d, %r15d
pushq $0x9
popq %r14
movq %rbx, %rdi
movl %r14d, %esi
callq 0x43b0
testq %rax, %rax
je 0xcc1f
movb $0x0, (%rax)
incl %r15d
jmp 0xcc07
cmpl %r15d, -0x30(%rbp)
jne 0xd2c5
leaq -0x2120(%rbp), %rdi
movl $0x2000, %esi           # imm = 0x2000
movq %r13, %rdx
callq 0x45a0
testq %rax, %rax
je 0xd34f
leaq -0x2120(%rbp), %rbx
movq %rbx, %rdi
callq 0x4160
testq %rax, %rax
je 0xcc79
movq %rax, %r14
movsbl -0x2121(%rbp,%rax), %edi
callq 0x4060
testl %eax, %eax
je 0xcc79
movb $0x0, -0x2121(%rbp,%r14)
jmp 0xcc4d
movq %r13, -0x48(%rbp)
movq %r12, -0x50(%rbp)
leaq -0xe0(%rbp), %rsi
andq $0x0, (%rsi)
movq -0x40(%rbp), %rdi
callq 0xdaca
leaq -0x2120(%rbp), %rdi
pushq $0x9
popq %rsi
callq 0x4130
movq %rax, %r13
pushq $0x1
popq %r15
leaq -0x120(%rbp), %r12
movq %r13, %rbx
incq %rbx
movq %rbx, %rdi
pushq $0x9
popq %rsi
callq 0x4130
testq %rax, %rax
je 0xcd20
movq %rax, %r13
movb $0x0, (%rax)
movl $0xa0, %edi
callq 0x4360
movq %rax, %r14
movq %r12, %rdi
movq %rbx, %rsi
leaq -0x80(%rbp), %rdx
callq 0x4140
movb $0x1, %bl
movq %r14, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0xc49a
movq %r14, -0xe0(%rbp)
xorl %ebx, %ebx
movq -0x40(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xdaca
movq %r12, %rdi
callq 0x4180
incq %r15
jmp 0xccb2
movl $0xa0, %edi
callq 0x4360
movq %rax, %r14
leaq -0x100(%rbp), %rdi
leaq -0x80(%rbp), %rdx
movq %rbx, %rsi
callq 0x4140
movq -0x48(%rbp), %r13
movb $0x1, %bl
leaq -0x100(%rbp), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0xc49a
leaq -0xe0(%rbp), %rsi
movq %r14, (%rsi)
xorl %ebx, %ebx
movq -0x40(%rbp), %rdi
callq 0xdaca
leaq -0x100(%rbp), %rdi
callq 0x4180
movl -0x30(%rbp), %eax
cmpq %r15, %rax
jne 0xd3ae
leaq -0xd8(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
xorl %r14d, %r14d
leaq -0x2120(%rbp), %r12
pushq $0x9
popq %r15
movq %r14, -0x58(%rbp)
movq %r12, %rdi
movl $0x2000, %esi           # imm = 0x2000
movq %r13, %rdx
callq 0x45a0
testq %rax, %rax
je 0xcf17
movq %r12, %rdi
callq 0x4160
testq %rax, %rax
je 0xcdf7
movq %rax, %rbx
movsbl -0x2121(%rbp,%rax), %edi
callq 0x4060
testl %eax, %eax
je 0xcdf7
movb $0x0, -0x2121(%rbp,%rbx)
jmp 0xcdcc
movzbl -0x2120(%rbp), %eax
testl %eax, %eax
je 0xcdb3
cmpl $0x25, %eax
je 0xcdb3
movl -0x34(%rbp), %eax
cmpq %rax, %r14
jae 0xd4f9
movq %r12, %rdi
movl %r15d, %esi
callq 0x4130
movq %rax, %r13
pushq $0x1
popq %r14
testq %rax, %rax
je 0xce3d
incq %r14
incq %rax
movq %rax, %rdi
movl %r15d, %esi
callq 0x4130
jmp 0xce25
movl -0x30(%rbp), %eax
incl %eax
cmpq %r14, %rax
jne 0xd572
movb $0x0, (%r13)
movq %r12, %rdi
callq 0x4580
movslq %eax, %rsi
movq -0xb0(%rbp), %rdi
callq 0xd7c4
movq %rax, %rbx
testl %ebx, %ebx
movq -0x58(%rbp), %r14
je 0xcf0b
incq %r13
leaq -0xa0(%rbp), %rdi
movq %r13, %rsi
leaq -0x35(%rbp), %rdx
callq 0x4140
movslq %ebx, %rax
movq %rax, -0x80(%rbp)
leaq -0x68(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movq -0xa0(%rbp), %rax
leaq -0x90(%rbp), %rdx
cmpq %rdx, %rax
je 0xcebf
movq %rax, -0x78(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x68(%rbp)
jmp 0xcec5
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
movq -0x98(%rbp), %rax
movq %rax, -0x70(%rbp)
movq %rdx, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
movb $0x0, -0x90(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xdc40
leaq -0x78(%rbp), %rdi
callq 0x4180
leaq -0xa0(%rbp), %rdi
callq 0x4180
incq %r14
movq -0x48(%rbp), %r13
jmp 0xcdaf
movq -0xc8(%rbp), %rbx
leaq -0xd8(%rbp), %rax
cmpq %rax, %rbx
je 0xd018
movq 0x20(%rbx), %rax
movq %rax, -0xa0(%rbp)
movq -0xa8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0xde0e
movq %rbx, -0x48(%rbp)
leaq 0x28(%rbx), %r15
xorl %edx, %edx
pushq $0x1
popq %r14
xorl %r12d, %r12d
movq %r15, %rdi
pushq $0x9
popq %rsi
callq 0x44a0
movq %rax, %rbx
movslq %r12d, %rdx
cmpl $-0x1, %ebx
je 0xcfc2
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq (%rax,%r14,8), %r12
movq -0xa0(%rbp), %r13
movl %ebx, %eax
subl %edx, %eax
movslq %eax, %rcx
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
callq 0x4380
movq -0x80(%rbp), %rdi
callq 0x4450
movq %r12, %rdi
movq %r13, %rsi
callq 0xc2fa
leaq -0x80(%rbp), %rdi
callq 0x4180
incq %r14
incl %ebx
movslq %ebx, %rdx
movl %ebx, %r12d
jmp 0xcf5d
movl %r14d, %eax
movq -0x40(%rbp), %rcx
movq (%rcx), %rcx
movq (%rcx,%rax,8), %rbx
movq -0xa0(%rbp), %r12
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
pushq $-0x1
popq %rcx
callq 0x4380
movq -0x80(%rbp), %rdi
callq 0x4450
movq %rbx, %rdi
movq %r12, %rsi
callq 0xc2fa
movq -0x58(%rbp), %r14
leaq -0x80(%rbp), %rdi
callq 0x4180
movq -0x48(%rbp), %rdi
callq 0x4250
movq %rax, %rbx
jmp 0xcf1e
movl -0x34(%rbp), %eax
cmpq %rax, %r14
jne 0xd465
leaq -0xe0(%rbp), %rdi
callq 0xda3e
addq $0x20f8, %rsp           # imm = 0x20F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x11f9f(%rip), %rdi     # 0x1efe8
leaq 0x8d1e(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8ea1(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x20
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8d0c(%rip), %rsi      # 0x15d82
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11f43(%rip), %rdi     # 0x1efe8
leaq 0x8cc2(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8e45(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x29
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8cd0(%rip), %rsi      # 0x15da2
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
leaq 0x86fd(%rip), %rsi      # 0x157e9
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11ed8(%rip), %rdi     # 0x1efe8
leaq 0x8c57(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8dda(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x31
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8c76(%rip), %rsi      # 0x15db3
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
leaq 0x9239(%rip), %rsi      # 0x16390
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
leaq -0x2120(%rbp), %rsi
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11e56(%rip), %rdi     # 0x1efe8
leaq 0x8bd5(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8d58(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x38
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8c1a(%rip), %rsi      # 0x15dd9
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11dfa(%rip), %rdi     # 0x1efe8
leaq 0x8b79(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8cfc(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x3e
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8be8(%rip), %rsi      # 0x15e03
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
leaq 0x915b(%rip), %rsi      # 0x16390
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
leaq -0x2120(%rbp), %rsi
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11d78(%rip), %rdi     # 0x1efe8
leaq 0x8af7(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8c7a(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x46
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8b8c(%rip), %rsi      # 0x15e29
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11d1c(%rip), %rdi     # 0x1efe8
leaq 0x8a9b(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8c1e(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x50
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8b5a(%rip), %rsi      # 0x15e53
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
leaq 0x8b66(%rip), %rsi      # 0x15e79
movq %rax, %rdi
callq 0x4340
movl -0x30(%rbp), %esi
movq %rax, %rdi
callq 0x4240
movq %rax, %rdi
callq 0x41a0
leaq -0x2120(%rbp), %rsi
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11c92(%rip), %rdi     # 0x1efe8
leaq 0x8a11(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8b94(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x57
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8b1c(%rip), %rsi      # 0x15e9f
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r12, %rsi
callq 0x42d0
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
pushq $-0x1
popq %rdi
callq 0x4430
movq 0x11c33(%rip), %rdi     # 0x1efe8
leaq 0x89b2(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8b35(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
pushq $0x6d
popq %rsi
movq %rax, %rdi
callq 0x4630
leaq 0x8ae7(%rip), %rsi      # 0x15ec9
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r15, %rsi
callq 0x4240
leaq 0x8b04(%rip), %rsi      # 0x15f00
movq %rax, %rdi
callq 0x4340
movl -0x30(%rbp), %esi
movq %rax, %rdi
callq 0x4240
leaq 0x8b09(%rip), %rsi      # 0x15f1f
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x42d0
leaq 0x8026(%rip), %rsi      # 0x15457
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
leaq -0x2120(%rbp), %rsi
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11b7c(%rip), %rdi     # 0x1efe8
leaq 0x88fb(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8a7e(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movl $0xa5, %esi
callq 0x4630
leaq 0x8b25(%rip), %rsi      # 0x15fc0
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq -0x58(%rbp), %rsi
callq 0x4240
leaq 0x8a4a(%rip), %rsi      # 0x15f00
movq %rax, %rdi
callq 0x4340
movl -0x34(%rbp), %esi
movq %rax, %rdi
callq 0x4240
leaq 0x8aa4(%rip), %rsi      # 0x15f74
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x42d0
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11ae8(%rip), %rdi     # 0x1efe8
leaq 0x8867(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x89ea(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movl $0x80, %esi
callq 0x4630
leaq 0x89fb(%rip), %rsi      # 0x15f2a
movq %rax, %rdi
callq 0x4340
movl -0x34(%rbp), %esi
movq %rax, %rdi
callq 0x4240
leaq 0x8a2b(%rip), %rsi      # 0x15f74
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq -0x50(%rbp), %rsi
callq 0x42d0
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq 0x11a6f(%rip), %rdi     # 0x1efe8
leaq 0x87ee(%rip), %rsi      # 0x15d6e
callq 0x4340
leaq 0x8971(%rip), %rsi      # 0x15efd
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movl $0x8a, %esi
callq 0x4630
leaq 0x89d5(%rip), %rsi      # 0x15f7d
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
movq %r14, %rsi
callq 0x4240
leaq 0x89ea(%rip), %rsi      # 0x15fac
movq %rax, %rdi
callq 0x4340
movl -0x30(%rbp), %esi
movq %rax, %rdi
callq 0x4240
leaq 0x8db4(%rip), %rsi      # 0x16390
movq %rax, %rdi
callq 0x4340
leaq -0x2120(%rbp), %rsi
movq %rax, %rdi
callq 0x4340
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x41a0
jmp 0xd3a6
movq %rax, %r15
leaq -0x78(%rbp), %rdi
callq 0x4180
leaq -0xa0(%rbp), %rdi
jmp 0xd67c
jmp 0xd670
jmp 0xd670
jmp 0xd670
jmp 0xd649
jmp 0xd649
jmp 0xd649
jmp 0xd64e
jmp 0xd649
jmp 0xd649
jmp 0xd670
jmp 0xd649
jmp 0xd649
jmp 0xd649
movq %rax, %r15
leaq -0x100(%rbp), %rdi
jmp 0xd65d
jmp 0xd670
jmp 0xd675
jmp 0xd670
movq %rax, %r15
jmp 0xd68d
movq %rax, %r15
jmp 0xd666
movq %rax, %r15
leaq -0x120(%rbp), %rdi
callq 0x4180
testb %bl, %bl
je 0xd68d
movq %r14, %rdi
callq 0x4310
jmp 0xd68d
movq %rax, %r15
jmp 0xd681
movq %rax, %r15
leaq -0x80(%rbp), %rdi
callq 0x4180
leaq -0xe0(%rbp), %rdi
callq 0xda3e
movq -0xa8(%rbp), %rdi
callq 0x7658
movq -0x40(%rbp), %rdi
callq 0xdab6
movq %r15, %rdi
callq 0x4660