// File: menhits[P]phplus/src/CppProgram.cpp
// Function: CppProgram::getTypeCode[abi:cxx11](std::shared_ptr<TypeBase>)
string CppProgram::getTypeCode(Type in)
{
	switch (in->getType())
	{
	case TypeBase::VOID:
		return "void";
		
	case TypeBase::DUB:
		return "double";
		
	case TypeBase::INT:
		return "int";
	
	case TypeBase::BYTE:
		return "unsigned char";
	
	case TypeBase::BOOL:
		return "bool";
		
	case TypeBase::PTR:
		if (in->getSubType()->isWhatev())
			return "void *";
		else
			return getTypeCode(in->getSubType())+" *";
		
	case TypeBase::TUPLE:
	{
		if (in->getAllSubTypes()->size()==1)
			return getTypeCode((*in->getAllSubTypes())[0].type);
		
		string compact="{"+in->getCompactString()+"}";
		
		if (!globalNames->hasPp(compact))
		{
			globalNames->addPp(compact, in->nameHint);
			string code;
			code+="struct ";
			code+=globalNames->getCpp(compact);
			code+="\n{\n";
			for (auto i: *in->getAllSubTypes())
			{
				code+=indentString(getTypeCode(i.type)+" "+i.name+";\n", indent);
			}
			
			code+="\n";
			code+=indentString(globalNames->getCpp(compact), indent);
			code+="() {}\n";
			
			code+="\n";
			auto conNames=globalNames->makeChild();
			code+=indentString(globalNames->getCpp(compact), indent);
			code+="(";
			bool first=true;
			for (auto i: *in->getAllSubTypes())
			{
				if (first) first=false; else code+=", ";
				conNames->addPp("+"+i.name+"_in");
				code+=getTypeCode(i.type)+" "+conNames->getCpp("+"+i.name+"_in");
			}
			code+=")\n";
			code+=indentString("{\n", indent);
			for (auto i: *in->getAllSubTypes())
			{
				code+=indentString(i.name+" = "+conNames->getCpp("+"+i.name+"_in")+";\n", indent, 2);
			}
			code+=indentString("}\n", indent);
			
			code+="};\n";
			
			if (!globalTypesCode.empty())
				globalTypesCode+="\n";
			globalTypesCode+=code;
		}
		
		return globalNames->getCpp(compact);
	}
	
	default:
		throw PhplusError("CppProgram::getTypeCode called with invalid type "+(TypeBase::getString(in->getType())), INTERNAL_ERROR);
	}
}

// Assembly:
subq $0x818, %rsp            # imm = 0x818
movq %rdx, 0xe8(%rsp)
movq %rdi, %rax
movq 0xe8(%rsp), %rdi
movq %rax, 0xf0(%rsp)
movq %rax, %rcx
movq %rcx, 0xf8(%rsp)
movq %rax, 0x810(%rsp)
movq %rsi, 0x808(%rsp)
movq %rdi, 0x800(%rsp)
movq 0x808(%rsp), %rax
movq %rax, 0x100(%rsp)
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
decl %eax
movl %eax, %ecx
movq %rcx, 0x108(%rsp)
subl $0x6, %eax
ja 0x29e83
movq 0x108(%rsp), %rax
leaq 0xa91e2(%rip), %rcx     # 0xd181c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x7ff(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0xb690
movq 0xf0(%rsp), %rdi
movq 0xe0(%rsp), %rdx
leaq 0xad520(%rip), %rsi     # 0xd5b8f
callq 0xb4c0
jmp 0x28676
leaq 0x7ff(%rsp), %rdi
callq 0xb3f0
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7ff(%rsp), %rdi
callq 0xb3f0
jmp 0x29fd2
leaq 0x7eb(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0xb690
movq 0xf0(%rsp), %rdi
movq 0xd8(%rsp), %rdx
leaq 0xa94fe(%rip), %rsi     # 0xd1bd8
callq 0xb4c0
jmp 0x286e1
leaq 0x7eb(%rsp), %rdi
callq 0xb3f0
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7eb(%rsp), %rdi
callq 0xb3f0
jmp 0x29fd2
leaq 0x7ea(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0xb690
movq 0xf0(%rsp), %rdi
movq 0xd0(%rsp), %rdx
leaq 0xa94a0(%rip), %rsi     # 0xd1be5
callq 0xb4c0
jmp 0x2874c
leaq 0x7ea(%rsp), %rdi
callq 0xb3f0
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7ea(%rsp), %rdi
callq 0xb3f0
jmp 0x29fd2
leaq 0x7e9(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0xb690
movq 0xf0(%rsp), %rdi
movq 0xc8(%rsp), %rdx
leaq 0xa9602(%rip), %rsi     # 0xd1db2
callq 0xb4c0
jmp 0x287b7
leaq 0x7e9(%rsp), %rdi
callq 0xb3f0
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7e9(%rsp), %rdi
callq 0xb3f0
jmp 0x29fd2
leaq 0x7e8(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0xb690
movq 0xf0(%rsp), %rdi
movq 0xc0(%rsp), %rdx
leaq 0xa9485(%rip), %rsi     # 0xd1ca0
callq 0xb4c0
jmp 0x28822
leaq 0x7e8(%rsp), %rdi
callq 0xb3f0
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7e8(%rsp), %rdi
callq 0xb3f0
jmp 0x29fd2
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x48(%rax), %rax
leaq 0x7d8(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq *%rax
movq 0xb0(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movb %al, 0xbf(%rsp)
jmp 0x288a5
leaq 0x7d8(%rsp), %rdi
callq 0x1a950
movb 0xbf(%rsp), %al
testb $0x1, %al
jne 0x288c2
jmp 0x28953
leaq 0x7d7(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0xb690
movq 0xf0(%rsp), %rdi
movq 0xa8(%rsp), %rdx
leaq 0xa94d2(%rip), %rsi     # 0xd1dc0
callq 0xb4c0
jmp 0x288f5
leaq 0x7d7(%rsp), %rdi
callq 0xb3f0
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7d8(%rsp), %rdi
callq 0x1a950
jmp 0x29fd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7d7(%rsp), %rdi
callq 0xb3f0
jmp 0x29fd2
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x48(%rax), %rax
leaq 0x7a0(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq *%rax
movq 0x100(%rsp), %rsi
movq 0xa0(%rsp), %rdx
leaq 0x7b0(%rsp), %rdi
callq 0x285b0
jmp 0x2899b
movq 0xf0(%rsp), %rdi
leaq 0xa941a(%rip), %rdx     # 0xd1dc4
leaq 0x7b0(%rsp), %rsi
callq 0xfa60
jmp 0x289b9
leaq 0x7b0(%rsp), %rdi
callq 0xb6e8
leaq 0x7a0(%rsp), %rdi
callq 0x1a950
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28a0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x7b0(%rsp), %rdi
callq 0xb6e8
leaq 0x7a0(%rsp), %rdi
callq 0x1a950
jmp 0x29fd2
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
callq *0x58(%rax)
movq %rax, %rdi
callq 0x2df40
cmpq $0x1, %rax
jne 0x28ae1
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2df60
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x790(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x1a920
movq 0xf0(%rsp), %rdi
movq 0x100(%rsp), %rsi
movq 0x98(%rsp), %rdx
callq 0x285b0
jmp 0x28aa9
leaq 0x790(%rsp), %rdi
callq 0x1a950
jmp 0x29fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x790(%rsp), %rdi
callq 0x1a950
jmp 0x29fd2
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x10(%rax), %rax
leaq 0x730(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq *%rax
movq 0x90(%rsp), %rdx
leaq 0xa89b9(%rip), %rsi     # 0xd14d2
leaq 0x750(%rsp), %rdi
callq 0x1bcf0
jmp 0x28b28
leaq 0xac692(%rip), %rdx     # 0xd51c1
leaq 0x770(%rsp), %rdi
leaq 0x750(%rsp), %rsi
callq 0xfa60
jmp 0x28b46
leaq 0x750(%rsp), %rdi
callq 0xb6e8
leaq 0x730(%rsp), %rdi
callq 0xb6e8
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq %rax, %rdi
leaq 0x770(%rsp), %rsi
callq 0x23c50
movb %al, 0x8f(%rsp)
jmp 0x28b8d
movb 0x8f(%rsp), %al
testb $0x1, %al
jne 0x29e31
jmp 0x28b9e
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq 0xe8(%rsp), %rdi
movq %rax, 0x80(%rsp)
callq 0x1a660
movq 0x80(%rsp), %rdi
movq %rax, %rdx
addq $0x18, %rdx
leaq 0x770(%rsp), %rsi
callq 0x232f0
jmp 0x28be5
leaq 0x710(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0xb4e0
movq 0x78(%rsp), %rdi
leaq 0xa91c4(%rip), %rsi     # 0xd1dc7
callq 0xb360
jmp 0x28c0a
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq %rax, %rsi
leaq 0x6f0(%rsp), %rdi
leaq 0x770(%rsp), %rdx
callq 0x23eb0
jmp 0x28c38
leaq 0x710(%rsp), %rdi
leaq 0x6f0(%rsp), %rsi
callq 0xb470
jmp 0x28c4f
leaq 0x6f0(%rsp), %rdi
callq 0xb6e8
leaq 0xa916c(%rip), %rsi     # 0xd1dcf
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x28c72
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
movq %rax, 0x70(%rsp)
jmp 0x28c92
movq 0x70(%rsp), %rax
movq %rax, 0x6e8(%rsp)
movq 0x6e8(%rsp), %rdi
callq 0x2df80
movq %rax, 0x6e0(%rsp)
movq 0x6e8(%rsp), %rdi
callq 0x2dfb0
movq %rax, 0x6d8(%rsp)
leaq 0x6e0(%rsp), %rdi
leaq 0x6d8(%rsp), %rsi
callq 0x2dfe0
testb $0x1, %al
jne 0x28ce7
jmp 0x29012
leaq 0x6e0(%rsp), %rdi
callq 0x2e020
movq %rax, %rsi
leaq 0x6a8(%rsp), %rdi
callq 0x2e030
jmp 0x28d06
leaq 0x6c8(%rsp), %rsi
leaq 0x5f8(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x1a920
movq 0x100(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0x608(%rsp), %rdi
callq 0x285b0
jmp 0x28d3c
leaq 0xa8d29(%rip), %rdx     # 0xd1a6c
leaq 0x628(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0xfa60
jmp 0x28d5a
leaq 0x648(%rsp), %rdi
leaq 0x628(%rsp), %rsi
leaq 0x6a8(%rsp), %rdx
callq 0x2e070
jmp 0x28d79
leaq 0xac268(%rip), %rdx     # 0xd4fe8
leaq 0x668(%rsp), %rdi
leaq 0x648(%rsp), %rsi
callq 0xfa60
jmp 0x28d97
movq 0x100(%rsp), %rsi
leaq 0x5d8(%rsp), %rdi
callq 0xb1a0
jmp 0x28dae
leaq 0x688(%rsp), %rdi
leaq 0x668(%rsp), %rsi
leaq 0x5d8(%rsp), %rdx
movl $0x1, %ecx
callq 0xa8440
jmp 0x28dd2
leaq 0x710(%rsp), %rdi
leaq 0x688(%rsp), %rsi
callq 0xb470
jmp 0x28de9
leaq 0x688(%rsp), %rdi
callq 0xb6e8
leaq 0x5d8(%rsp), %rdi
callq 0xb6e8
leaq 0x668(%rsp), %rdi
callq 0xb6e8
leaq 0x648(%rsp), %rdi
callq 0xb6e8
leaq 0x628(%rsp), %rdi
callq 0xb6e8
leaq 0x608(%rsp), %rdi
callq 0xb6e8
leaq 0x5f8(%rsp), %rdi
callq 0x1a950
leaq 0x6a8(%rsp), %rdi
callq 0x1e980
leaq 0x6e0(%rsp), %rdi
callq 0x2e0c0
jmp 0x28cc9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28e9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x750(%rsp), %rdi
callq 0xb6e8
leaq 0x730(%rsp), %rdi
callq 0xb6e8
jmp 0x29fd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29e71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29e22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x6f0(%rsp), %rdi
callq 0xb6e8
jmp 0x29e22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28ff3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28fe6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28fd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28fcc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28fbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x28fb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x688(%rsp), %rdi
callq 0xb6e8
leaq 0x5d8(%rsp), %rdi
callq 0xb6e8
leaq 0x668(%rsp), %rdi
callq 0xb6e8
leaq 0x648(%rsp), %rdi
callq 0xb6e8
leaq 0x628(%rsp), %rdi
callq 0xb6e8
leaq 0x608(%rsp), %rdi
callq 0xb6e8
leaq 0x5f8(%rsp), %rdi
callq 0x1a950
leaq 0x6a8(%rsp), %rdi
callq 0x1e980
jmp 0x29e22
leaq 0xa8edf(%rip), %rsi     # 0xd1ef8
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x29028
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq %rax, %rsi
leaq 0x598(%rsp), %rdi
leaq 0x770(%rsp), %rdx
callq 0x23eb0
jmp 0x29056
movq 0x100(%rsp), %rsi
leaq 0x578(%rsp), %rdi
callq 0xb1a0
jmp 0x2906d
leaq 0x5b8(%rsp), %rdi
leaq 0x598(%rsp), %rsi
leaq 0x578(%rsp), %rdx
movl $0x1, %ecx
callq 0xa8440
jmp 0x29091
leaq 0x710(%rsp), %rdi
leaq 0x5b8(%rsp), %rsi
callq 0xb470
jmp 0x290a8
leaq 0x5b8(%rsp), %rdi
callq 0xb6e8
leaq 0x578(%rsp), %rdi
callq 0xb6e8
leaq 0x598(%rsp), %rdi
callq 0xb6e8
leaq 0xa8cfd(%rip), %rsi     # 0xd1dd3
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x290e5
leaq 0xa8e0c(%rip), %rsi     # 0xd1ef8
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x290fb
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq %rax, %rsi
leaq 0x568(%rsp), %rdi
callq 0x23210
jmp 0x29121
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq %rax, %rsi
leaq 0x528(%rsp), %rdi
leaq 0x770(%rsp), %rdx
callq 0x23eb0
jmp 0x2914f
movq 0x100(%rsp), %rsi
leaq 0x508(%rsp), %rdi
callq 0xb1a0
jmp 0x29166
leaq 0x548(%rsp), %rdi
leaq 0x528(%rsp), %rsi
leaq 0x508(%rsp), %rdx
movl $0x1, %ecx
callq 0xa8440
jmp 0x2918a
leaq 0x710(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0xb470
jmp 0x291a1
leaq 0x548(%rsp), %rdi
callq 0xb6e8
leaq 0x508(%rsp), %rdi
callq 0xb6e8
leaq 0x528(%rsp), %rdi
callq 0xb6e8
leaq 0xae019(%rip), %rsi     # 0xd71e8
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x291de
movq 0xe8(%rsp), %rdi
movb $0x1, 0x507(%rsp)
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
movq %rax, 0x60(%rsp)
jmp 0x29206
movq 0x60(%rsp), %rax
movq %rax, 0x4f8(%rsp)
movq 0x4f8(%rsp), %rdi
callq 0x2df80
movq %rax, 0x4f0(%rsp)
movq 0x4f8(%rsp), %rdi
callq 0x2dfb0
movq %rax, 0x4e8(%rsp)
leaq 0x4f0(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
callq 0x2dfe0
testb $0x1, %al
jne 0x2925b
jmp 0x29777
leaq 0x4f0(%rsp), %rdi
callq 0x2e020
movq %rax, %rsi
leaq 0x4b8(%rsp), %rdi
callq 0x2e030
jmp 0x2927a
testb $0x1, 0x507(%rsp)
je 0x29386
movb $0x0, 0x507(%rsp)
jmp 0x293b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x292ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x292e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x5b8(%rsp), %rdi
callq 0xb6e8
leaq 0x578(%rsp), %rdi
callq 0xb6e8
leaq 0x598(%rsp), %rdi
callq 0xb6e8
jmp 0x29e22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29374
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29367
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x548(%rsp), %rdi
callq 0xb6e8
leaq 0x508(%rsp), %rdi
callq 0xb6e8
leaq 0x528(%rsp), %rdi
callq 0xb6e8
jmp 0x29e15
leaq 0xac35d(%rip), %rsi     # 0xd56ea
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x2939c
jmp 0x293b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29765
leaq 0x568(%rsp), %rdi
callq 0x2d6b0
movq %rax, 0x58(%rsp)
leaq 0xad7d0(%rip), %rsi     # 0xd6ba0
leaq 0x478(%rsp), %rdi
leaq 0x4b8(%rsp), %rdx
callq 0xfab0
jmp 0x293e7
leaq 0xa89ec(%rip), %rdx     # 0xd1dda
leaq 0x498(%rsp), %rdi
leaq 0x478(%rsp), %rsi
callq 0xfa60
jmp 0x29405
leaq 0x457(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xb690
movq 0x50(%rsp), %rdx
leaq 0xa84f2(%rip), %rsi     # 0xd1915
leaq 0x458(%rsp), %rdi
callq 0xb4c0
jmp 0x29432
movq 0x58(%rsp), %rdi
leaq 0x498(%rsp), %rsi
leaq 0x458(%rsp), %rdx
callq 0x232f0
jmp 0x2944e
leaq 0x458(%rsp), %rdi
callq 0xb6e8
leaq 0x457(%rsp), %rdi
callq 0xb3f0
leaq 0x498(%rsp), %rdi
callq 0xb6e8
leaq 0x478(%rsp), %rdi
callq 0xb6e8
leaq 0x4d8(%rsp), %rsi
leaq 0x3e0(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x1a920
movq 0x100(%rsp), %rsi
movq 0x48(%rsp), %rdx
leaq 0x3f0(%rsp), %rdi
callq 0x285b0
jmp 0x294b8
leaq 0xa85ad(%rip), %rdx     # 0xd1a6c
leaq 0x410(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
callq 0xfa60
jmp 0x294d6
leaq 0x568(%rsp), %rdi
callq 0x2d6b0
movq %rax, 0x40(%rsp)
leaq 0xad6b1(%rip), %rsi     # 0xd6ba0
leaq 0x380(%rsp), %rdi
leaq 0x4b8(%rsp), %rdx
callq 0xfab0
jmp 0x29506
leaq 0xa88cd(%rip), %rdx     # 0xd1dda
leaq 0x3a0(%rsp), %rdi
leaq 0x380(%rsp), %rsi
callq 0xfa60
jmp 0x29524
movq 0x40(%rsp), %rsi
leaq 0x3c0(%rsp), %rdi
leaq 0x3a0(%rsp), %rdx
callq 0x23eb0
jmp 0x29540
leaq 0x430(%rsp), %rdi
leaq 0x410(%rsp), %rsi
leaq 0x3c0(%rsp), %rdx
callq 0x1bf20
jmp 0x2955f
leaq 0x710(%rsp), %rdi
leaq 0x430(%rsp), %rsi
callq 0xb470
jmp 0x29576
leaq 0x430(%rsp), %rdi
callq 0xb6e8
leaq 0x3c0(%rsp), %rdi
callq 0xb6e8
leaq 0x3a0(%rsp), %rdi
callq 0xb6e8
leaq 0x380(%rsp), %rdi
callq 0xb6e8
leaq 0x410(%rsp), %rdi
callq 0xb6e8
leaq 0x3f0(%rsp), %rdi
callq 0xb6e8
leaq 0x3e0(%rsp), %rdi
callq 0x1a950
leaq 0x4b8(%rsp), %rdi
callq 0x1e980
leaq 0x4f0(%rsp), %rdi
callq 0x2e0c0
jmp 0x2923d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29657
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x2963d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x458(%rsp), %rdi
callq 0xb6e8
leaq 0x457(%rsp), %rdi
callq 0xb3f0
leaq 0x498(%rsp), %rdi
callq 0xb6e8
leaq 0x478(%rsp), %rdi
callq 0xb6e8
jmp 0x29765
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29758
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x2974b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x2973e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29731
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29724
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29717
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x430(%rsp), %rdi
callq 0xb6e8
leaq 0x3c0(%rsp), %rdi
callq 0xb6e8
leaq 0x3a0(%rsp), %rdi
callq 0xb6e8
leaq 0x380(%rsp), %rdi
callq 0xb6e8
leaq 0x410(%rsp), %rdi
callq 0xb6e8
leaq 0x3f0(%rsp), %rdi
callq 0xb6e8
leaq 0x3e0(%rsp), %rdi
callq 0x1a950
leaq 0x4b8(%rsp), %rdi
callq 0x1e980
jmp 0x29e15
leaq 0xa8660(%rip), %rsi     # 0xd1dde
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x2978d
leaq 0x33f(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xb690
movq 0x38(%rsp), %rdx
leaq 0xa8625(%rip), %rsi     # 0xd1dd0
leaq 0x340(%rsp), %rdi
callq 0xb4c0
jmp 0x297ba
movq 0x100(%rsp), %rsi
leaq 0x318(%rsp), %rdi
callq 0xb1a0
jmp 0x297d1
leaq 0x360(%rsp), %rdi
leaq 0x340(%rsp), %rsi
leaq 0x318(%rsp), %rdx
movl $0x1, %ecx
callq 0xa8440
jmp 0x297f5
leaq 0x710(%rsp), %rdi
leaq 0x360(%rsp), %rsi
callq 0xb470
jmp 0x2980c
leaq 0x360(%rsp), %rdi
callq 0xb6e8
leaq 0x318(%rsp), %rdi
callq 0xb6e8
leaq 0x340(%rsp), %rdi
callq 0xb6e8
leaq 0x33f(%rsp), %rdi
callq 0xb3f0
movq 0xe8(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
movq %rax, 0x30(%rsp)
jmp 0x29860
movq 0x30(%rsp), %rax
movq %rax, 0x310(%rsp)
movq 0x310(%rsp), %rdi
callq 0x2df80
movq %rax, 0x308(%rsp)
movq 0x310(%rsp), %rdi
callq 0x2dfb0
movq %rax, 0x300(%rsp)
leaq 0x308(%rsp), %rdi
leaq 0x300(%rsp), %rsi
callq 0x2dfe0
testb $0x1, %al
jne 0x298b5
jmp 0x29c4e
leaq 0x308(%rsp), %rdi
callq 0x2e020
movq %rax, %rsi
leaq 0x2d0(%rsp), %rdi
callq 0x2e030
jmp 0x298d4
leaq 0xab98c(%rip), %rdx     # 0xd5267
leaq 0x250(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
callq 0x1ba50
jmp 0x298f2
leaq 0x568(%rsp), %rdi
callq 0x2d6b0
movq %rax, 0x28(%rsp)
leaq 0xad295(%rip), %rsi     # 0xd6ba0
leaq 0x1f0(%rsp), %rdi
leaq 0x2d0(%rsp), %rdx
callq 0xfab0
jmp 0x29922
leaq 0xa84b1(%rip), %rdx     # 0xd1dda
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0xfa60
jmp 0x29940
movq 0x28(%rsp), %rsi
leaq 0x230(%rsp), %rdi
leaq 0x210(%rsp), %rdx
callq 0x23eb0
jmp 0x2995c
leaq 0x270(%rsp), %rdi
leaq 0x250(%rsp), %rsi
leaq 0x230(%rsp), %rdx
callq 0x1bf20
jmp 0x2997b
leaq 0xab666(%rip), %rdx     # 0xd4fe8
leaq 0x290(%rsp), %rdi
leaq 0x270(%rsp), %rsi
callq 0xfa60
jmp 0x29999
movq 0x100(%rsp), %rsi
leaq 0x1d0(%rsp), %rdi
callq 0xb1a0
jmp 0x299b0
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
movl $0x2, %ecx
callq 0xa8440
jmp 0x299d4
leaq 0x710(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
callq 0xb470
jmp 0x299eb
leaq 0x2b0(%rsp), %rdi
callq 0xb6e8
leaq 0x1d0(%rsp), %rdi
callq 0xb6e8
leaq 0x290(%rsp), %rdi
callq 0xb6e8
leaq 0x270(%rsp), %rdi
callq 0xb6e8
leaq 0x230(%rsp), %rdi
callq 0xb6e8
leaq 0x210(%rsp), %rdi
callq 0xb6e8
leaq 0x1f0(%rsp), %rdi
callq 0xb6e8
leaq 0x250(%rsp), %rdi
callq 0xb6e8
leaq 0x2d0(%rsp), %rdi
callq 0x1e980
leaq 0x308(%rsp), %rdi
callq 0x2e0c0
jmp 0x29897
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29aef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29ae2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29ad5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x360(%rsp), %rdi
callq 0xb6e8
leaq 0x318(%rsp), %rdi
callq 0xb6e8
leaq 0x340(%rsp), %rdi
callq 0xb6e8
leaq 0x33f(%rsp), %rdi
callq 0xb3f0
jmp 0x29e15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29c3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29c2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29c22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29c15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29c08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29bfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29bee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29be1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0xb6e8
leaq 0x1d0(%rsp), %rdi
callq 0xb6e8
leaq 0x290(%rsp), %rdi
callq 0xb6e8
leaq 0x270(%rsp), %rdi
callq 0xb6e8
leaq 0x230(%rsp), %rdi
callq 0xb6e8
leaq 0x210(%rsp), %rdi
callq 0xb6e8
leaq 0x1f0(%rsp), %rdi
callq 0xb6e8
leaq 0x250(%rsp), %rdi
callq 0xb6e8
leaq 0x2d0(%rsp), %rdi
callq 0x1e980
jmp 0x29e15
leaq 0x18f(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xb690
movq 0x20(%rsp), %rdx
leaq 0xa8370(%rip), %rsi     # 0xd1fdc
leaq 0x190(%rsp), %rdi
callq 0xb4c0
jmp 0x29c7b
movq 0x100(%rsp), %rsi
leaq 0x168(%rsp), %rdi
callq 0xb1a0
jmp 0x29c92
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0x168(%rsp), %rdx
movl $0x1, %ecx
callq 0xa8440
jmp 0x29cb6
leaq 0x710(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0xb470
jmp 0x29ccd
leaq 0x1b0(%rsp), %rdi
callq 0xb6e8
leaq 0x168(%rsp), %rdi
callq 0xb6e8
leaq 0x190(%rsp), %rdi
callq 0xb6e8
leaq 0x18f(%rsp), %rdi
callq 0xb3f0
leaq 0xa80d9(%rip), %rsi     # 0xd1de1
leaq 0x710(%rsp), %rdi
callq 0xb360
jmp 0x29d17
movq 0x100(%rsp), %rdi
addq $0x80, %rdi
callq 0xb610
testb $0x1, %al
jne 0x29dde
movq 0x100(%rsp), %rdi
subq $-0x80, %rdi
leaq 0xa81b2(%rip), %rsi     # 0xd1ef8
callq 0xb360
jmp 0x29d4d
jmp 0x29dde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29dcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29dc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29db5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x1b0(%rsp), %rdi
callq 0xb6e8
leaq 0x168(%rsp), %rdi
callq 0xb6e8
leaq 0x190(%rsp), %rdi
callq 0xb6e8
leaq 0x18f(%rsp), %rdi
callq 0xb3f0
jmp 0x29e15
movq 0x100(%rsp), %rdi
subq $-0x80, %rdi
leaq 0x710(%rsp), %rsi
callq 0xb470
jmp 0x29df9
leaq 0x568(%rsp), %rdi
callq 0x2d6c0
leaq 0x710(%rsp), %rdi
callq 0xb6e8
jmp 0x29e31
leaq 0x568(%rsp), %rdi
callq 0x2d6c0
leaq 0x710(%rsp), %rdi
callq 0xb6e8
jmp 0x29e71
movq 0x100(%rsp), %rdi
addq $0xf8, %rdi
callq 0x2d6b0
movq 0xf0(%rsp), %rdi
movq %rax, %rsi
leaq 0x770(%rsp), %rdx
callq 0x23eb0
jmp 0x29e5f
leaq 0x770(%rsp), %rdi
callq 0xb6e8
jmp 0x29fc2
leaq 0x770(%rsp), %rdi
callq 0xb6e8
jmp 0x29fd2
movb $0x1, 0x117(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x10(%rsp)
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movl %eax, 0x1c(%rsp)
jmp 0x29eb9
movl 0x1c(%rsp), %esi
leaq 0x128(%rsp), %rdi
callq 0x9ee60
jmp 0x29ecc
leaq 0xa7f12(%rip), %rsi     # 0xd1de5
leaq 0x148(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x1bcf0
jmp 0x29eea
xorl %eax, %eax
movl %eax, %esi
leaq 0x118(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xfbe0
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rcx
leaq 0x148(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0x29f1e
movq 0x10(%rsp), %rdi
movb $0x0, 0x117(%rsp)
leaq 0xeb696(%rip), %rsi     # 0x1155c8
leaq -0xf8c9(%rip), %rdx     # 0x1a670
callq 0xb640
jmp 0x29fdf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29faa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
jmp 0x29f9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x7f0(%rsp)
movl %eax, 0x7ec(%rsp)
leaq 0x118(%rsp), %rdi
callq 0xfc00
leaq 0x148(%rsp), %rdi
callq 0xb6e8
leaq 0x128(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x117(%rsp)
jne 0x29fb6
jmp 0x29fc0
movq 0x10(%rsp), %rdi
callq 0xb2d0
jmp 0x29fd2
movq 0xf8(%rsp), %rax
addq $0x818, %rsp            # imm = 0x818
retq
movq 0x7f0(%rsp), %rdi
callq 0xb680
nop