// File: lotka[P]prologplusplus/predicate.cpp
// Function: Predicate::Predicate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<Predicate*, std::allocator<Predicate*>>&)
Predicate::Predicate(string s, vector<Predicate *> &predicates)
{
	s = strip_ws(s);
	// Count up to ":-"
	// commas
	int commas 	= 0;
	// left brackets
	int lb 		= 0;
	// right brackets
	int rb	    = 0;
	// conditionals
	int cond 	= 0;
	// dots
	int dot 	= 0;
	for(int i = 0; i < s.size(); ++i)
	{
		if(s[i] == ':')
		{
			if(s[i+1]=='-')
			{
				break;
			}
			else
			{
				cout << "Error: : followed by " << s[i+1] << endl;
				return;
			}
			cond = i + 2;
		}
		switch(s[i])
		{
			case ',':
				++commas;
				break;

			case '(':
				++lb;
				break;

			case ')':
				++rb;
				break;

			case '.':
				++dot;
				break;
		}
	}
	if(lb > 0)
	{
		name = cropString(s,'(');
	}
	else if(dot > 0)
	{
		name = cropString(s,'.');
	}
	else if(cond > 0)
	{
		name = cropString(s,':');
	}

	airty = commas + lb;

	// Add the airty to the name
	name = name + "\\0";
	name[name.size()-1] = '0'+airty;

	vector<string> raw_args;
	vector<string> raw_conditions;
	// Do the processing
	for(int i = 0; i < airty; ++i)
	{
		char delimiter;
		if(i != commas)
		{
			delimiter = ',';
		}
		else
		{
			delimiter = ')';
		}
		raw_args.push_back(cropString(s,delimiter));
	}
	cropString(s,'-');

	// cout << "name : " << name << endl;
	// cout << "Arguments : ";
 //  	for (unsigned int i = 0; i < raw_args.size(); ++i)
	// {
	// 	cout << raw_args[i] << ' ';
	// }
	if(s.size()>0)
	{
		for(int i = 0; i < s.size(); ++i)
		{
			if(s[i]==')' and s[i+1]==',')
			{
				raw_conditions.push_back(cropString(s,i+1));
				connectives.push_back(AND);
			}
			else if(s[i]==')' and s[i+1]==';')
			{
				raw_conditions.push_back(cropString(s,';'));
				connectives.push_back(OR);
			}
			else if(s[i]=='-' and s[i+1]=='>')
			{
				raw_conditions.push_back(cropString(s,'-'));
				cropString(s,'>');
				connectives.push_back(IMPLIES);
			}
			else if(s[i] == ')' and s[i+1] == '.')
			{
				raw_conditions.push_back(cropString(s,'.'));
				connectives.push_back(END);
				break;
			}
			else if(s[i] == '.')
			{
				raw_conditions.push_back(cropString(s,'.'));
				connectives.push_back(END);
				break;
			}
		}
	// 	cout << endl << "Conditions : ";
	//   	for (unsigned int i = 0; i < raw_conditions.size(); ++i)
	// 	{
	// 		cout << raw_conditions[i];
	// 		if(connectives[i] == AND)
	// 		{
	// 			cout << " and ";
	// 		}
	// 	}
	}
	// cout << endl;

	// Parsing finished.

	for(int i = 0; i < raw_args.size(); ++i)
	{
		Atom * a = new Atom(raw_args[i]);
		args.push_back(a);
	}

	for(int i = 0; i < raw_conditions.size(); ++i)
	{
		conditions.push_back(new PredicateRef(raw_conditions[i],predicates));
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3d0, %rsp            # imm = 0x3D0
movq %rsi, -0x2d0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
movq %rdi, %rax
movq %rax, -0x2f8(%rbp)
callq 0x2280
movq -0x2e0(%rbp), %rdi
addq $0x28, %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x3fa0
movq -0x2e0(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x6220
movq -0x2e0(%rbp), %rdi
addq $0x58, %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x6240
movq -0x2d0(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x20a0
jmp 0x549f
leaq -0x38(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x4cd0
jmp 0x54ae
movq -0x2d0(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2230
leaq -0x38(%rbp), %rdi
callq 0x20f0
leaq -0x58(%rbp), %rdi
callq 0x20f0
movl $0x0, -0x68(%rbp)
movl $0x0, -0x6c(%rbp)
movl $0x0, -0x70(%rbp)
movl $0x0, -0x74(%rbp)
movl $0x0, -0x78(%rbp)
movl $0x0, -0x7c(%rbp)
movq -0x2d0(%rbp), %rdi
movslq -0x7c(%rbp), %rax
movq %rax, -0x300(%rbp)
callq 0x2110
movq %rax, %rcx
movq -0x300(%rbp), %rax
cmpq %rcx, %rax
jae 0x56a3
movq -0x2d0(%rbp), %rdi
movslq -0x7c(%rbp), %rsi
callq 0x2330
movq %rax, -0x308(%rbp)
jmp 0x553d
movq -0x308(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x561e
movq -0x2d0(%rbp), %rdi
movl -0x7c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2330
movq %rax, -0x310(%rbp)
jmp 0x556d
movq -0x310(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x55ac
jmp 0x56a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x603c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x20f0
jmp 0x603c
movq 0x8a1d(%rip), %rdi      # 0xdfd0
leaq 0x3b70(%rip), %rsi      # 0x912a
callq 0x2190
movq %rax, -0x318(%rbp)
jmp 0x55c8
movq -0x2d0(%rbp), %rdi
movl -0x7c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2330
movq %rax, -0x320(%rbp)
jmp 0x55e5
movq -0x318(%rbp), %rdi
movq -0x320(%rbp), %rax
movsbl (%rax), %esi
callq 0x2210
movq %rax, -0x328(%rbp)
jmp 0x5604
movq -0x328(%rbp), %rdi
movq 0x89ae(%rip), %rsi      # 0xdfc0
callq 0x21c0
jmp 0x5619
jmp 0x601b
movq -0x2d0(%rbp), %rdi
movslq -0x7c(%rbp), %rsi
callq 0x2330
movq %rax, -0x330(%rbp)
jmp 0x5637
movq -0x330(%rbp), %rax
movsbl (%rax), %eax
addl $-0x28, %eax
movl %eax, %ecx
movq %rcx, -0x338(%rbp)
subl $0x6, %eax
ja 0x5693
movq -0x338(%rbp), %rax
leaq 0x3a98(%rip), %rcx      # 0x90f8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0x5693
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x5693
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x5693
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x5695
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x54fa
cmpl $0x0, -0x6c(%rbp)
jle 0x56e7
movq -0x2d0(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
movl $0x28, %edx
callq 0x4a90
jmp 0x56c3
movq -0x2f8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x2230
leaq -0xa0(%rbp), %rdi
callq 0x20f0
jmp 0x576b
cmpl $0x0, -0x78(%rbp)
jle 0x5728
movq -0x2d0(%rbp), %rsi
leaq -0xc0(%rbp), %rdi
movl $0x2e, %edx
callq 0x4a90
jmp 0x5707
movq -0x2f8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x2230
leaq -0xc0(%rbp), %rdi
callq 0x20f0
jmp 0x5769
cmpl $0x0, -0x74(%rbp)
jle 0x5767
movq -0x2d0(%rbp), %rsi
leaq -0xe0(%rbp), %rdi
movl $0x3a, %edx
callq 0x4a90
jmp 0x5748
movq -0x2f8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x2230
leaq -0xe0(%rbp), %rdi
callq 0x20f0
jmp 0x5769
jmp 0x576b
movq -0x2f8(%rbp), %rsi
movl -0x68(%rbp), %eax
movl -0x6c(%rbp), %ecx
addl %ecx, %eax
movl %eax, 0x20(%rsi)
leaq 0x3990(%rip), %rdx      # 0x9114
leaq -0x100(%rbp), %rdi
callq 0x6130
jmp 0x5792
movq -0x2f8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
movq %rsi, -0x350(%rbp)
callq 0x2230
movq -0x350(%rbp), %rdi
callq 0x20f0
movq -0x2f8(%rbp), %rdi
movb 0x20(%rdi), %al
addb $0x30, %al
movb %al, -0x341(%rbp)
callq 0x2110
movq -0x2f8(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x2330
movq %rax, -0x340(%rbp)
jmp 0x57ea
movq -0x340(%rbp), %rax
movb -0x341(%rbp), %cl
movb %cl, (%rax)
leaq -0x118(%rbp), %rdi
callq 0x6260
leaq -0x130(%rbp), %rdi
callq 0x6260
movl $0x0, -0x134(%rbp)
movq -0x2f8(%rbp), %rcx
movl -0x134(%rbp), %eax
cmpl 0x20(%rcx), %eax
jge 0x58c8
movl -0x134(%rbp), %eax
cmpl -0x68(%rbp), %eax
je 0x5845
movb $0x2c, -0x135(%rbp)
jmp 0x584c
movb $0x29, -0x135(%rbp)
movq -0x2d0(%rbp), %rsi
movsbl -0x135(%rbp), %edx
leaq -0x158(%rbp), %rdi
callq 0x4a90
jmp 0x5868
leaq -0x118(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x6280
jmp 0x587d
leaq -0x158(%rbp), %rdi
callq 0x20f0
movl -0x134(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x134(%rbp)
jmp 0x581b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x6024
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x20f0
jmp 0x6024
movq -0x2d0(%rbp), %rsi
leaq -0x178(%rbp), %rdi
movl $0x2d, %edx
callq 0x4a90
jmp 0x58e2
leaq -0x178(%rbp), %rdi
callq 0x20f0
movq -0x2d0(%rbp), %rdi
callq 0x2110
cmpq $0x0, %rax
jbe 0x5db4
movl $0x0, -0x17c(%rbp)
movq -0x2d0(%rbp), %rdi
movslq -0x17c(%rbp), %rax
movq %rax, -0x358(%rbp)
callq 0x2110
movq %rax, %rcx
movq -0x358(%rbp), %rax
cmpq %rcx, %rax
jae 0x5db2
movq -0x2d0(%rbp), %rdi
movslq -0x17c(%rbp), %rsi
callq 0x2330
movq %rax, -0x360(%rbp)
jmp 0x5957
movq -0x360(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x29, %eax
jne 0x5a20
movq -0x2d0(%rbp), %rdi
movl -0x17c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2330
movq %rax, -0x368(%rbp)
jmp 0x598a
movq -0x368(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
jne 0x5a20
movq -0x2d0(%rbp), %rsi
movl -0x17c(%rbp), %edx
incl %edx
leaq -0x1a0(%rbp), %rdi
callq 0x49a0
jmp 0x59ba
leaq -0x130(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x6280
jmp 0x59cf
leaq -0x1a0(%rbp), %rdi
callq 0x20f0
movq -0x2f8(%rbp), %rdi
addq $0x58, %rdi
movl $0x1, -0x1a4(%rbp)
leaq -0x1a4(%rbp), %rsi
callq 0x62b0
jmp 0x59fe
jmp 0x5d9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x20f0
jmp 0x6024
movq -0x2d0(%rbp), %rdi
movslq -0x17c(%rbp), %rsi
callq 0x2330
movq %rax, -0x370(%rbp)
jmp 0x5a3c
movq -0x370(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x29, %eax
jne 0x5b02
movq -0x2d0(%rbp), %rdi
movl -0x17c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2330
movq %rax, -0x378(%rbp)
jmp 0x5a6f
movq -0x378(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3b, %eax
jne 0x5b02
movq -0x2d0(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
movl $0x3b, %edx
callq 0x4a90
jmp 0x5a9c
leaq -0x130(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x6280
jmp 0x5ab1
leaq -0x1c8(%rbp), %rdi
callq 0x20f0
movq -0x2f8(%rbp), %rdi
addq $0x58, %rdi
movl $0x2, -0x1cc(%rbp)
leaq -0x1cc(%rbp), %rsi
callq 0x62b0
jmp 0x5ae0
jmp 0x5d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x20f0
jmp 0x6024
movq -0x2d0(%rbp), %rdi
movslq -0x17c(%rbp), %rsi
callq 0x2330
movq %rax, -0x380(%rbp)
jmp 0x5b1e
movq -0x380(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x5c0a
movq -0x2d0(%rbp), %rdi
movl -0x17c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2330
movq %rax, -0x388(%rbp)
jmp 0x5b51
movq -0x388(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3e, %eax
jne 0x5c0a
movq -0x2d0(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
movl $0x2d, %edx
callq 0x4a90
jmp 0x5b7e
leaq -0x130(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x6280
jmp 0x5b93
leaq -0x1f0(%rbp), %rdi
callq 0x20f0
movq -0x2d0(%rbp), %rsi
leaq -0x210(%rbp), %rdi
movl $0x3e, %edx
callq 0x4a90
jmp 0x5bb9
leaq -0x210(%rbp), %rdi
callq 0x20f0
movq -0x2f8(%rbp), %rdi
addq $0x58, %rdi
movl $0x3, -0x214(%rbp)
leaq -0x214(%rbp), %rsi
callq 0x62b0
jmp 0x5be8
jmp 0x5d98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x20f0
jmp 0x6024
movq -0x2d0(%rbp), %rdi
movslq -0x17c(%rbp), %rsi
callq 0x2330
movq %rax, -0x390(%rbp)
jmp 0x5c26
movq -0x390(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x29, %eax
jne 0x5cec
movq -0x2d0(%rbp), %rdi
movl -0x17c(%rbp), %eax
incl %eax
movslq %eax, %rsi
callq 0x2330
movq %rax, -0x398(%rbp)
jmp 0x5c59
movq -0x398(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x5cec
movq -0x2d0(%rbp), %rsi
leaq -0x238(%rbp), %rdi
movl $0x2e, %edx
callq 0x4a90
jmp 0x5c86
leaq -0x130(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x6280
jmp 0x5c9b
leaq -0x238(%rbp), %rdi
callq 0x20f0
movq -0x2f8(%rbp), %rdi
addq $0x58, %rdi
movl $0x4, -0x23c(%rbp)
leaq -0x23c(%rbp), %rsi
callq 0x62b0
jmp 0x5cca
jmp 0x5db2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x20f0
jmp 0x6024
movq -0x2d0(%rbp), %rdi
movslq -0x17c(%rbp), %rsi
callq 0x2330
movq %rax, -0x3a0(%rbp)
jmp 0x5d08
movq -0x3a0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x5d94
movq -0x2d0(%rbp), %rsi
leaq -0x260(%rbp), %rdi
movl $0x2e, %edx
callq 0x4a90
jmp 0x5d31
leaq -0x130(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x6280
jmp 0x5d46
leaq -0x260(%rbp), %rdi
callq 0x20f0
movq -0x2f8(%rbp), %rdi
addq $0x58, %rdi
movl $0x4, -0x264(%rbp)
leaq -0x264(%rbp), %rsi
callq 0x62b0
jmp 0x5d75
jmp 0x5db2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x20f0
jmp 0x6024
jmp 0x5d96
jmp 0x5d98
jmp 0x5d9a
jmp 0x5d9c
jmp 0x5d9e
movl -0x17c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x17c(%rbp)
jmp 0x590e
jmp 0x5db4
movl $0x0, -0x268(%rbp)
movslq -0x268(%rbp), %rax
movq %rax, -0x3a8(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x62e0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
cmpq %rcx, %rax
jae 0x5ed5
movl $0x40, %edi
callq 0x21a0
movq %rax, -0x3b0(%rbp)
jmp 0x5dfe
movb $0x1, -0x291(%rbp)
movslq -0x268(%rbp), %rsi
leaq -0x118(%rbp), %rdi
callq 0x6300
movq %rax, %rsi
leaq -0x290(%rbp), %rdi
callq 0x20a0
jmp 0x5e29
movq -0x3b0(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x3d10
jmp 0x5e3e
movb $0x0, -0x291(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x20f0
movq -0x3b0(%rbp), %rax
movq -0x2f8(%rbp), %rdi
movq %rax, -0x270(%rbp)
addq $0x28, %rdi
leaq -0x270(%rbp), %rsi
callq 0x61b0
jmp 0x5e78
jmp 0x5e7a
movl -0x268(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x268(%rbp)
jmp 0x5dbe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x5eb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x20f0
testb $0x1, -0x291(%rbp)
jne 0x5ebf
jmp 0x5ed0
movq -0x3b0(%rbp), %rdi
movl $0x40, %esi
callq 0x21b0
jmp 0x6024
movl $0x0, -0x298(%rbp)
movslq -0x298(%rbp), %rax
movq %rax, -0x3b8(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x62e0
movq %rax, %rcx
movq -0x3b8(%rbp), %rax
cmpq %rcx, %rax
jae 0x6003
movq -0x2f8(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x3c8(%rbp)
movl $0x40, %edi
callq 0x21a0
movq %rax, -0x3c0(%rbp)
jmp 0x5f31
movb $0x1, -0x2c1(%rbp)
movslq -0x298(%rbp), %rsi
leaq -0x130(%rbp), %rdi
callq 0x6300
movq %rax, %rsi
leaq -0x2c0(%rbp), %rdi
callq 0x20a0
jmp 0x5f5c
movq -0x3c0(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x2c0(%rbp), %rsi
callq 0x4db0
jmp 0x5f75
movq -0x3c8(%rbp), %rdi
movq -0x3c0(%rbp), %rax
movb $0x0, -0x2c1(%rbp)
movq %rax, -0x2a0(%rbp)
leaq -0x2a0(%rbp), %rsi
callq 0x6320
jmp 0x5f9f
leaq -0x2c0(%rbp), %rdi
callq 0x20f0
movl -0x298(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x298(%rbp)
jmp 0x5edf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x5fe5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x20f0
testb $0x1, -0x2c1(%rbp)
jne 0x5ff0
jmp 0x6001
movq -0x3c0(%rbp), %rdi
movl $0x40, %esi
callq 0x21b0
jmp 0x6024
leaq -0x130(%rbp), %rdi
callq 0x6350
leaq -0x118(%rbp), %rdi
callq 0x6350
addq $0x3d0, %rsp            # imm = 0x3D0
popq %rbp
retq
leaq -0x130(%rbp), %rdi
callq 0x6350
leaq -0x118(%rbp), %rdi
callq 0x6350
movq -0x2d8(%rbp), %rdi
callq 0x63b0
movq -0x2e8(%rbp), %rdi
callq 0x6410
movq -0x2f0(%rbp), %rdi
callq 0x2e70
movq -0x2e0(%rbp), %rdi
callq 0x20f0
movq -0x60(%rbp), %rdi
callq 0x22d0
nopw %cs:(%rax,%rax)