LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/BranchAction.cpp
// Function: BranchAction::getDescription[abi:cxx11]()
string getDescription()
	{
		if (leftInput && action && rightInput)
		{
			return str::makeRootUpBinaryTree(action->getDescription(), leftInput->getReturnType()->getName(), rightInput->getReturnType()->getName(), leftInput->getDescription(), rightInput->getDescription());
			//return getReturnType()->toString() + " <- [" + leftInput->getDescription() + "].[" + action->getDescription() + "]:[" + rightInput->getDescription() + "]";
			//return "(" + leftInput->getDescription() + " -> " + action->getDescription() + " <- " + rightInput->getDescription() + ")";
			//return getReturnType()->getName() + " <- " + leftInput->getDescription() + "." + action->getDescription() + ":" + rightInput->getDescription();
		}
		else
			return "[branch with null element]";
	}

// Assembly:
pushq %r14
pushq %rbx
subq $0xa8, %rsp
movq %rdi, %rbx
cmpq $0x0, 0x88(%rsi)
je 0x4812a
movq %rsi, %r14
movq 0x78(%rsi), %rsi
testq %rsi, %rsi
je 0x4812a
cmpq $0x0, 0x98(%r14)
je 0x4812a
movq (%rsi), %rax
leaq 0x8(%rsp), %rdi
callq *0x18(%rax)
movq 0x88(%r14), %rax
movq 0x28(%rax), %rsi
leaq 0x88(%rsp), %rdi
callq 0x3af9c
movq 0x98(%r14), %rax
movq 0x28(%rax), %rsi
leaq 0x68(%rsp), %rdi
callq 0x3af9c
movq 0x88(%r14), %rsi
movq (%rsi), %rax
leaq 0x48(%rsp), %rdi
callq *0x18(%rax)
movq 0x98(%r14), %rsi
movq (%rsi), %rax
leaq 0x28(%rsp), %rdi
callq *0x18(%rax)
leaq 0x8(%rsp), %rsi
leaq 0x88(%rsp), %rdx
leaq 0x68(%rsp), %rcx
leaq 0x48(%rsp), %r8
leaq 0x28(%rsp), %r9
movq %rbx, %rdi
callq 0x5141d
leaq 0x28(%rsp), %rdi
callq 0xa558
leaq 0x48(%rsp), %rdi
callq 0xa558
leaq 0x68(%rsp), %rdi
callq 0xa558
leaq 0x88(%rsp), %rdi
callq 0xa558
leaq 0x8(%rsp), %rdi
callq 0xa558
jmp 0x4813e
leaq 0x116e9(%rip), %rsi     # 0x5981a
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0xa150
movq %rbx, %rax
addq $0xa8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xa558
jmp 0x4815e
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0xa558
jmp 0x4816d
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xa558
jmp 0x4817c
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0xa558
jmp 0x4818e
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/BranchAction.cpp
// Function: BranchAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		void* leftData=leftInput->execute(nullptr, nullptr);
		void* rightData=rightInput->execute(nullptr, nullptr);
		void* outData=action->execute(leftData, rightData);
		free(leftData);
		free(rightData);
		return outData;
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x88(%rdi), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %r14
movq 0x98(%rbx), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %r15
movq 0x78(%rbx), %rdi
movq (%rdi), %rax
movq %r14, %rsi
movq %r15, %rdx
callq *0x20(%rax)
movq %rax, %rbx
movq %r14, %rdi
callq 0xa330
movq %r15, %rdi
callq 0xa330
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/BranchAction.cpp
// Function: BranchAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		Action leftInTmp = leftInput;
		Action rightInTmp = rightInput;
		
		if (leftInTmp->getReturnType()!=action->getInLeftType())
			leftInTmp=cppTupleCastAction(leftInTmp, action->getInLeftType());
		
		if (rightInTmp->getReturnType()!=action->getInRightType())
			rightInTmp=cppTupleCastAction(rightInTmp, action->getInRightType());
		
		action->addToProg(leftInTmp, rightInTmp, prog);
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rcx, %rbx
movq %rdi, %r14
leaq 0x88(%rdi), %rsi
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x12c1e
leaq 0x98(%r14), %rsi
leaq 0x8(%rsp), %rdi
callq 0x12c1e
movq (%r15), %rax
movq 0x78(%r14), %r15
movq 0x28(%rax), %rax
cmpq 0x38(%r15), %rax
je 0x482b7
leaq 0x88(%rsp), %r15
leaq 0x28(%rsp), %rsi
movq %r15, %rdi
callq 0x12c1e
movq 0x78(%r14), %rsi
addq $0x38, %rsi
leaq 0x78(%rsp), %r12
movq %r12, %rdi
callq 0x12c0a
leaq 0x18(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x4c21a
leaq 0x28(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13816
leaq 0x20(%rsp), %rdi
callq 0xc984
leaq 0x80(%rsp), %rdi
callq 0xc984
leaq 0x90(%rsp), %rdi
callq 0xc984
movq 0x78(%r14), %r15
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rax
cmpq 0x48(%r15), %rax
je 0x4832e
leaq 0x68(%rsp), %r15
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x12c1e
movq 0x78(%r14), %rsi
addq $0x48, %rsi
leaq 0x58(%rsp), %r12
movq %r12, %rdi
callq 0x12c0a
leaq 0x18(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x4c21a
leaq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x13816
leaq 0x20(%rsp), %rdi
callq 0xc984
leaq 0x60(%rsp), %rdi
callq 0xc984
leaq 0x70(%rsp), %rdi
callq 0xc984
movq 0x78(%r14), %r15
leaq 0x48(%rsp), %r14
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x12c1e
leaq 0x38(%rsp), %r12
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x12c1e
movq (%r15), %rax
movq %r15, %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %rbx, %rcx
callq *0x28(%rax)
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x50(%rsp), %rdi
callq 0xc984
leaq 0x10(%rsp), %rdi
callq 0xc984
leaq 0x30(%rsp), %rdi
callq 0xc984
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0xc984
leaq 0x70(%rsp), %rdi
jmp 0x483db
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0xc984
leaq 0x90(%rsp), %rdi
jmp 0x483db
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x50(%rsp), %rdi
callq 0xc984
leaq 0x10(%rsp), %rdi
callq 0xc984
leaq 0x30(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/FunctionAction.cpp
// Function: FunctionAction::getDescription[abi:cxx11]()
string getDescription()
	{
		return str::putStringInTreeNodeBox("call func "+nameHint);
		//if (!action)
		//	resolveAction();
		//return "func: " + description;//action->getDescription();
	}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0x8(%rsi), %rdx
leaq 0x10af8(%rip), %rsi     # 0x599dd
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0xc8a1
movq %rbx, %rdi
movq %r14, %rsi
callq 0x50b7a
leaq 0x8(%rsp), %rdi
callq 0xa558
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0xa500
nop
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/FunctionAction.cpp
// Function: FunctionAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		if (!action)
			resolveAction();
		
		void * oldStackPtr=stackPtr;
		
		stackPtr=malloc(stackFame->getSize());
		
		if (inLeft)
			memcpy((char*)stackPtr+stackFame->getLeftOffset(), inLeft, getInLeftType()->getSize());
		
		if (inRight)
			memcpy((char*)stackPtr+stackFame->getRightOffset(), inRight, getInRightType()->getSize());
		
		void* out=action->execute(nullptr, nullptr);
		
		free(stackPtr);
		stackPtr=oldStackPtr;
		
		return out;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
cmpq $0x0, 0x88(%rdi)
jne 0x48f4e
movq %rbx, %rdi
callq 0x49374
leaq 0x31463(%rip), %rbp     # 0x7a3b8
movq (%rbp), %rax
movq %rax, (%rsp)
movq 0x78(%rbx), %r13
movq 0x18(%r13), %rdi
callq 0xa390
movq %rax, (%rbp)
testq %r15, %r15
je 0x48f99
movq %rax, %r12
movq %r13, %rdi
callq 0x3cb20
addq %rax, %r12
movq 0x38(%rbx), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %r12, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xa260
testq %r14, %r14
je 0x48fc6
movq (%rbp), %r15
movq 0x78(%rbx), %rdi
callq 0x3cba2
addq %rax, %r15
movq 0x48(%rbx), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0xa260
movq 0x88(%rbx), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rbx
movq (%rbp), %rdi
callq 0xa330
movq (%rsp), %rax
movq %rax, (%rbp)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/IfAction.cpp
// Function: IfAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		void* conditionOut=condition->execute(nullptr, nullptr);
		if (*((bool*)conditionOut))
		{
			free(ifAction->execute(nullptr, nullptr));
		}
		free(conditionOut);
		return nullptr;
	}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0x78(%rdi), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rbx
cmpb $0x1, (%rax)
jne 0x4a08a
movq 0x88(%r14), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rdi
callq 0xa330
movq %rbx, %rdi
callq 0xa330
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/IfAction.cpp
// Function: IfAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		prog->code("if ");
		prog->pushExpr();
		condition->addToProg(voidAction, voidAction, prog);
		prog->popExpr();
		prog->pushBlock();
		ifAction->addToProg(voidAction, voidAction, prog);
		prog->endln();
		prog->popBlock();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rcx, %rbx
movq %rdi, %r14
leaq 0xfad0(%rip), %rsi      # 0x59b87
leaq 0x48(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xa150
leaq 0x48(%rsp), %rsi
movq %rbx, %rdi
callq 0x39d6c
leaq 0x48(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0x3a5fa
movq 0x78(%r14), %r15
leaq 0x30260(%rip), %r12     # 0x7a350
leaq 0x38(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
callq 0x12c1e
leaq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq %r12, %rsi
callq 0x12c1e
movq (%r15), %rax
movq %r15, %rdi
movq %r13, %rsi
movq %rbp, %rdx
movq %rbx, %rcx
callq *0x28(%rax)
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0x3a692
movq %rbx, %rdi
callq 0x3b71e
movq 0x88(%r14), %r14
leaq 0x301fc(%rip), %r15     # 0x7a350
leaq 0x18(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x12c1e
leaq 0x8(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x12c1e
movq (%r14), %rax
movq %r14, %rdi
movq %r12, %rsi
movq %r13, %rdx
movq %rbx, %rcx
callq *0x28(%rax)
leaq 0x10(%rsp), %rdi
callq 0xc984
leaq 0x20(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0x3b712
movq %rbx, %rdi
callq 0x3b72a
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xc984
leaq 0x20(%rsp), %rdi
jmp 0x4a1df
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
jmp 0x4a1f8
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0xa558
jmp 0x4a1f8
movq %rax, %rbx
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/IfAction.cpp
// Function: IfElseAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		void* out;
		void* conditionOut=condition->execute(nullptr, nullptr);
		if (*((bool*)conditionOut))
		{
			out=ifAction->execute(nullptr, nullptr);
		}
		else
		{
			out=elseAction->execute(nullptr, nullptr);
		}
		free(conditionOut);
		if (returnVal)
		{
			return out;
		}
		else
		{
			free(out);
			return nullptr;
		}
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x78(%rdi), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %r15
movzbl (%rax), %eax
xorl $0x1, %eax
shll $0x4, %eax
movq 0x88(%rbx,%rax), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %r14
movq %r15, %rdi
callq 0xa330
cmpb $0x0, 0xa8(%rbx)
jne 0x4a55d
movq %r14, %rdi
callq 0xa330
xorl %r14d, %r14d
movq %r14, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/ListAction.cpp
// Function: listAction(std::vector<std::shared_ptr<ActionData>, std::allocator<std::shared_ptr<ActionData>>> const&, std::vector<std::shared_ptr<ActionData>, std::allocator<std::shared_ptr<ActionData>>> const&)
Action listAction(const vector<Action>& actionsIn, const vector<Action>& destroyersIn)
{
	if (actionsIn.size()==0 && destroyersIn.size()==0)
	{
		return voidAction;
	}
	else if (actionsIn.size()==1 && destroyersIn.size()==0)
	{
		return actionsIn[0];
	}
	else
	{
		return Action(new ListAction(actionsIn, destroyersIn));
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movq (%rsi), %rsi
movq 0x8(%r15), %rax
subq %rsi, %rax
sarq $0x4, %rax
cmpq $0x1, %rax
je 0x4ab75
testq %rax, %rax
jne 0x4ab7e
movq 0x8(%r14), %rax
cmpq (%r14), %rax
jne 0x4ab7e
leaq 0x2f7dd(%rip), %rsi     # 0x7a350
jmp 0x4aba6
movq 0x8(%r14), %rax
cmpq (%r14), %rax
je 0x4aba6
movl $0xa8, %edi
callq 0xa2c0
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x4af48
movq %rbx, %rdi
movq %r12, %rsi
callq 0x4b66a
jmp 0x4abae
movq %rbx, %rdi
callq 0x12c1e
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %r12, %rdi
callq 0xa2a0
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/ListAction.cpp
// Function: ListAction::getDescription[abi:cxx11]()
string getDescription()
	{
		vector<string> data;
		
		for (auto i=actions.begin(); i!=actions.end(); ++i)
		{
			if (*i)
				data.push_back((*i)->getDescription());
			else
				data.push_back(str::putStringInTreeNodeBox("[null action]"));
		}
		
		return str::makeList(data);
		/*
		string out;
		out+="\n{";
		
		for (auto i=actions.begin(); i!=actions.end(); ++i)
		{
			out+="\n\t";
			
			string str;
			
			if (*i)
				str=(*i)->getDescription();
			else
				str="[null action]";
			
			for (unsigned j=0; j<str.size(); ++j)
			{
				out+=str[j];
				
				if (str[j]=='\n')
					out+='\t';
			}
			
			out+="\n";
		}
		
		out+="}\n";
		
		return out;
		*/
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %r14
movq %rdi, 0x8(%rsp)
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %r15
movaps %xmm0, (%r15)
andq $0x0, 0x10(%r15)
movq 0x78(%rsi), %r12
leaq 0x48(%rsp), %r13
leaq 0x7(%rsp), %rbp
leaq 0x28(%rsp), %rbx
cmpq 0x80(%r14), %r12
je 0x4b38f
movq (%r12), %rsi
testq %rsi, %rsi
je 0x4b351
movq (%rsi), %rax
movq %rbx, %rdi
callq *0x18(%rax)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x13632
movq %rbx, %rdi
jmp 0x4b384
movq %r13, %rdi
leaq 0xea0b(%rip), %rsi      # 0x59d66
movq %rbp, %rdx
callq 0xa150
movq %rbx, %rdi
movq %r13, %rsi
callq 0x50b7a
movq %r15, %rdi
movq %rbx, %rsi
callq 0x13632
movq %rbx, %rdi
callq 0xa558
movq %r13, %rdi
callq 0xa558
addq $0x10, %r12
jmp 0x4b326
leaq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x50c0f
leaq 0x10(%rsp), %rdi
callq 0x11670
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4b3da
movq %rax, %rbx
jmp 0x4b3d3
jmp 0x4b3da
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xa558
leaq 0x48(%rsp), %rdi
jmp 0x4b3e7
movq %rax, %rbx
jmp 0x4b3ec
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xa558
leaq 0x10(%rsp), %rdi
callq 0x11670
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/ListAction.cpp
// Function: ListAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		auto i=actions.begin();
		
		for (; i!=std::prev(actions.end()); ++i)
		{
			free((*i)->execute(nullptr, nullptr));
		}
		
		void* returnVal=(*i)->execute(nullptr, nullptr);
		
		for (auto j: destroyers)
		{
			free(j->execute(nullptr, nullptr));
		}
		
		return returnVal;
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r14
movq 0x78(%rdi), %r15
movq 0x80(%r14), %r12
addq $-0x10, %r12
movq (%r15), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rbx
cmpq %r12, %r15
je 0x4b440
movq %rbx, %rdi
callq 0xa330
addq $0x10, %r15
jmp 0x4b412
movq 0x90(%r14), %r15
movq 0x98(%r14), %r13
leaq 0x8(%rsp), %r14
movq %rsp, %r12
cmpq %r13, %r15
je 0x4b48a
movq %r12, %rdi
movq %r15, %rsi
callq 0x12c1e
movq (%rsp), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rdi
callq 0xa330
movq %r14, %rdi
callq 0xc984
addq $0x10, %r15
jmp 0x4b456
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %r14, %rdi
callq 0xc984
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/LoopAction.cpp
// Function: LoopAction::getDescription[abi:cxx11]()
string getDescription()
	{
		string body=loopAction->getDescription();
		if (endAction!=voidAction)
		{
			vector<string> data={body, endAction->getDescription()};
			body=str::makeList(data);
		}
		return str::makeRootUpBinaryTree("@", condition->getReturnType()->getName(), "", condition->getDescription(), body);
		//return "while " + condition->getDescription() + " do " + loopAction->getDescription();
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xd0, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x88(%rsi), %rsi
movq (%rsi), %rax
leaq 0x70(%rsp), %rdi
callq *0x18(%rax)
movq 0x98(%r14), %rax
leaq 0x2e734(%rip), %rcx     # 0x7a350
cmpq (%rcx), %rax
je 0x4bcae
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xa3b0
leaq 0x50(%rsp), %rdi
movq 0x98(%r14), %rsi
movq (%rsi), %rax
callq *0x18(%rax)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x90(%rsp), %rcx
callq 0x11a0a
pushq $0x20
popq %r15
leaq (%rsp,%r15), %rdi
addq $0x30, %rdi
callq 0xa558
addq $-0x20, %r15
cmpq $-0x20, %r15
jne 0x4bc64
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x50c0f
leaq 0x70(%rsp), %rdi
leaq 0x30(%rsp), %r15
movq %r15, %rsi
callq 0xa350
movq %r15, %rdi
callq 0xa558
leaq 0x10(%rsp), %rdi
callq 0x11670
leaq 0x836b(%rip), %rsi      # 0x54020
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xa150
movq 0x78(%r14), %rax
movq 0x28(%rax), %rsi
leaq 0x10(%rsp), %rdi
callq 0x3af9c
leaq 0x8d42(%rip), %rsi      # 0x54a1f
leaq 0x90(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0xa150
movq 0x78(%r14), %rsi
movq (%rsi), %rax
leaq 0xb0(%rsp), %rdi
callq *0x18(%rax)
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x90(%rsp), %rcx
leaq 0xb0(%rsp), %r8
leaq 0x70(%rsp), %r9
movq %rbx, %rdi
callq 0x5141d
leaq 0xb0(%rsp), %rdi
callq 0xa558
leaq 0x90(%rsp), %rdi
callq 0xa558
leaq 0x10(%rsp), %rdi
callq 0xa558
leaq 0x30(%rsp), %rdi
callq 0xa558
leaq 0x70(%rsp), %rdi
callq 0xa558
movq %rbx, %rax
addq $0xd0, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x11670
jmp 0x4bde8
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x30, %rdi
callq 0xa558
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x4bd86
jmp 0x4bde8
jmp 0x4bdd6
jmp 0x4bde5
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xa558
jmp 0x4bdb8
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xa558
jmp 0x4bdca
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xa558
jmp 0x4bdd9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xa558
jmp 0x4bde8
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/LoopAction.cpp
// Function: LoopAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		void* conditionOut;
		
		while (true)
		{
			conditionOut=condition->execute(nullptr, nullptr);
			if (!(*((bool*)conditionOut)))
				break;
			free(conditionOut);
			free(loopAction->execute(nullptr, nullptr));
			free(endAction->execute(nullptr, nullptr));
		}
		
		free(conditionOut);
		
		return nullptr;
	}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x78(%rbx), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movb (%rax), %bpl
movq %rax, %rdi
callq 0xa330
cmpb $0x1, %bpl
jne 0x4be53
movq 0x88(%rbx), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rdi
callq 0xa330
movq 0x98(%rbx), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %rdi
callq 0xa330
jmp 0x4be00
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/LoopAction.cpp
// Function: LoopAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		prog->code("while ");
		
		prog->pushExpr();
			condition->addToProg(prog);
		prog->popExpr();
		
		prog->pushBlock();
			loopAction->addToProg(prog);
			prog->endln();
			if (endAction!=voidAction)
			{
				endAction->addToProg(prog);
				prog->endln();
			}
		prog->popBlock();
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rcx, %rbx
movq %rdi, %r14
leaq 0xe02a(%rip), %rsi      # 0x59e9c
leaq 0x10(%rsp), %r15
leaq 0xf(%rsp), %rdx
movq %r15, %rdi
callq 0xa150
movq %rbx, %rdi
movq %r15, %rsi
callq 0x39d6c
leaq 0x10(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0x3a5fa
movq 0x78(%r14), %rdi
movq %rbx, %rsi
callq 0x3a606
movq %rbx, %rdi
callq 0x3a692
movq %rbx, %rdi
callq 0x3b71e
movq 0x88(%r14), %rdi
movq %rbx, %rsi
callq 0x3a606
movq %rbx, %rdi
callq 0x3b712
movq 0x98(%r14), %rdi
leaq 0x2e46e(%rip), %rax     # 0x7a350
cmpq (%rax), %rdi
je 0x4bef7
movq %rbx, %rsi
callq 0x3a606
movq %rbx, %rdi
callq 0x3b712
movq %rbx, %rdi
callq 0x3b72a
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/MakeTupleAction.cpp
// Function: getElemFromTupleAction(std::shared_ptr<TypeBase>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Action getElemFromTupleAction(Type source, string name)
{
	if (!source->getSubType(name).type)
		throw PhplusError("could not find '"+name+"' in "+source->getString(), SOURCE_ERROR);
	
	Action out=Action(new GetElemFromTupleAction(source, name));
	
	return out;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %r15
leaq 0xc8(%rsp), %r13
movq %r13, %rdi
movq %rdx, %rsi
callq 0xa3b0
movq (%r15), %rax
leaq 0x10(%rsp), %rdi
movq %r15, %rsi
movq %r13, %rdx
callq *0x50(%rax)
leaq 0x20(%rsp), %rdi
movq -0x8(%rdi), %r15
callq 0xc984
leaq 0xc8(%rsp), %rdi
callq 0xa558
testq %r15, %r15
je 0x4c0d5
movl $0xc8, %edi
callq 0xa2c0
movq %rax, %r15
movq %rsp, %rdi
movq %r14, %rsi
callq 0x12c0a
leaq 0x48(%rsp), %rdi
movq %r12, %rsi
callq 0xa3b0
movb $0x1, %bpl
movq %rsp, %rsi
leaq 0x48(%rsp), %rdx
movq %r15, %rdi
callq 0x4c688
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4dcb4
leaq 0x48(%rsp), %rdi
callq 0xa558
leaq 0x8(%rsp), %rdi
callq 0xc984
movq %rbx, %rax
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x38
popq %rdi
callq 0xa1b0
movq %rax, %rbx
leaq 0xde09(%rip), %rsi      # 0x59ef0
leaq 0x88(%rsp), %rdi
movq %r12, %rdx
callq 0xc8a1
leaq 0xde03(%rip), %rdx      # 0x59f01
leaq 0x10(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0xc882
movq (%r14), %rsi
movq (%rsi), %rax
leaq 0x68(%rsp), %rdi
callq *0x8(%rax)
leaq 0xa8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x1205e
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rcx
movaps %xmm0, (%rcx)
movb $0x1, %bpl
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x19f06
xorl %ebp, %ebp
leaq 0x2b43a(%rip), %rsi     # 0x77598
leaq -0x3aad3(%rip), %rdx    # 0x11692
movq %rbx, %rdi
callq 0xa4e0
movq %rax, %r14
leaq 0x38(%rsp), %rdi
callq 0xc984
leaq 0xa8(%rsp), %rdi
callq 0xa558
jmp 0x4c18f
movq %rax, %r14
movb $0x1, %bpl
leaq 0x68(%rsp), %rdi
callq 0xa558
jmp 0x4c1a1
movq %rax, %r14
movb $0x1, %bpl
leaq 0x10(%rsp), %rdi
callq 0xa558
jmp 0x4c1b3
movq %rax, %r14
movb $0x1, %bpl
leaq 0x88(%rsp), %rdi
callq 0xa558
testb %bpl, %bpl
jne 0x4c1ca
jmp 0x4c212
movq %rax, %r14
movq %rbx, %rdi
callq 0xa230
jmp 0x4c212
movq %rax, %r14
movb $0x1, %bpl
jmp 0x4c1fb
movq %rax, %r14
leaq 0xc8(%rsp), %rdi
callq 0xa558
jmp 0x4c212
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0xa558
leaq 0x8(%rsp), %rdi
callq 0xc984
testb %bpl, %bpl
je 0x4c212
movq %r15, %rdi
callq 0xa2a0
movq %r14, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/MakeTupleAction.cpp
// Function: GetElemFromTupleAction::GetElemFromTupleAction(std::shared_ptr<TypeBase>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
GetElemFromTupleAction(Type typeInIn, string nameIn):
		ActionData(typeInIn->getSubType(nameIn).type, typeInIn, Void)
	{
		typeIn=typeInIn;
		typeOut=typeInIn->getSubType(nameIn).type;
		// if no type was found, the ActionData constructor would have already thrown an error
		name=nameIn;
		size=typeOut->getSize();
		offset=typeIn->getSubType(name).offset;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbx
movq (%rsi), %r14
leaq 0x98(%rsp), %r13
movq %r13, %rdi
movq %rdx, %rsi
callq 0xa3b0
movq (%r14), %rax
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq *0x50(%rax)
leaq 0x28(%rsp), %rax
leaq 0x18(%rsp), %r14
movups -0x8(%r14), %xmm0
movaps %xmm0, -0x8(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x8(%r14)
leaq 0x48(%rsp), %rbp
movq %rbp, %rdi
movq %r12, %rsi
callq 0x12c0a
leaq 0x2dce5(%rip), %rsi     # 0x7a3e0
leaq 0x38(%rsp), %r13
movq %r13, %rdi
callq 0x12c0a
leaq 0x20(%rsp), %rsi
movq %rbx, %rdi
movq %rbp, %rdx
movq %r13, %rcx
callq 0x44704
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x50(%rsp), %rdi
callq 0xc984
leaq 0x28(%rsp), %rdi
callq 0xc984
movq %r14, %rdi
callq 0xc984
leaq 0x98(%rsp), %rdi
callq 0xa558
leaq 0x2d1f3(%rip), %rax     # 0x79948
movq %rax, (%rbx)
leaq 0x78(%rbx), %rdi
leaq 0xa8(%rbx), %r14
leaq 0xb8(%rbx), %rax
xorps %xmm0, %xmm0
movups %xmm0, 0x78(%rbx)
movups %xmm0, 0x88(%rbx)
movq %rax, 0xa8(%rbx)
andq $0x0, 0xb0(%rbx)
movb $0x0, 0xb8(%rbx)
movq %r12, %rsi
callq 0x12ba2
movq (%r12), %r12
leaq 0x78(%rsp), %rdi
movq %r15, %rsi
callq 0xa3b0
movq (%r12), %rax
leaq 0x8(%rsp), %rdi
leaq 0x78(%rsp), %rdx
movq %r12, %rsi
callq *0x50(%rax)
leaq 0x88(%rbx), %r12
leaq 0x10(%rsp), %rsi
movq %r12, %rdi
callq 0x135a2
leaq 0x18(%rsp), %rdi
callq 0xc984
leaq 0x78(%rsp), %rdi
callq 0xa558
movq %r14, %rdi
movq %r15, %rsi
callq 0xa1d0
movq (%r12), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %rax, 0xa0(%rbx)
movq 0x78(%rbx), %r15
leaq 0x58(%rsp), %rdi
movq %r14, %rsi
callq 0xa3b0
movq (%r15), %rax
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rdx
movq %r15, %rsi
callq *0x50(%rax)
leaq 0x18(%rsp), %rdi
movl -0x10(%rdi), %eax
movl %eax, 0x98(%rbx)
callq 0xc984
leaq 0x58(%rsp), %rdi
callq 0xa558
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
leaq 0x58(%rsp), %rdi
jmp 0x4c866
jmp 0x4c8ac
movq %rax, %r15
leaq 0x78(%rsp), %rdi
callq 0xa558
jmp 0x4c8af
jmp 0x4c8ac
movq %rax, %r15
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x50(%rsp), %rdi
callq 0xc984
leaq 0x28(%rsp), %rdi
callq 0xc984
movq %r14, %rdi
callq 0xc984
jmp 0x4c89d
movq %rax, %r15
leaq 0x98(%rsp), %rdi
callq 0xa558
jmp 0x4c8d7
movq %rax, %r15
movq %r14, %rdi
callq 0xa558
leaq 0x90(%rbx), %rdi
callq 0xc984
leaq 0x80(%rbx), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0x44e86
movq %r15, %rdi
callq 0xa500
nop
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/MakeTupleAction.cpp
// Function: MakeTupleAction::getDescription[abi:cxx11]()
string getDescription()
	{
		return str::putStringInTreeNodeBox("make tuple of type "+getReturnType()->getName());
		
		//return "[tuple of type " + getReturnType()->getString() + "]";
		
		/*string out;
		out+="\n{";
		
		for (auto i=sourceActions.begin(); i!=sourceActions.end(); ++i)
		{
			out+="\n\t";
			
			string str;
			
			if (*i)
				str=(*i)->getDescription();
			else
				str="[null action]";
			
			for (unsigned j=0; j<str.size(); ++j)
			{
				out+=str[j];
				
				if (str[j]=='\n')
					out+='\t';
			}
			
			out+="\n";
		}
		
		out+="}\n";
		
		return out;*/
	}

// Assembly:
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
movq 0x28(%rsi), %rsi
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x3af9c
leaq 0xd3ee(%rip), %rsi      # 0x59fa4
leaq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x11ff8
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x50b7a
leaq 0x8(%rsp), %rdi
callq 0xa558
leaq 0x28(%rsp), %rdi
callq 0xa558
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0xa558
jmp 0x4cc01
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0xa500
nop
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/MakeTupleAction.cpp
// Function: MakeTupleAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		void* out=malloc(getReturnType()->getSize());
		size_t offset=0;
		
		for (auto i=sourceActions.begin(); i!=sourceActions.end(); ++i)
		{
			void* val=(*i)->execute(nullptr, nullptr);
			memcpy((char*)out+offset, val, (*i)->getReturnType()->getSize());
			free(val);
			offset+=(*i)->getReturnType()->getSize();
		}
		
		return out;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x28(%rdi), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %rax, %rdi
callq 0xa390
movq %rax, %r14
movq 0x78(%rbx), %r13
xorl %ebp, %ebp
cmpq 0x80(%rbx), %r13
je 0x4cc96
movq (%r13), %rdi
movq (%rdi), %rax
xorl %esi, %esi
xorl %edx, %edx
callq *0x20(%rax)
movq %rax, %r15
leaq (%r14,%rbp), %r12
movq (%r13), %rax
movq 0x28(%rax), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %r12, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xa260
movq %r15, %rdi
callq 0xa330
movq (%r13), %rax
movq 0x28(%rax), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
addq %rax, %rbp
addq $0x10, %r13
jmp 0x4cc3d
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/MakeTupleAction.cpp
// Function: MakeTupleAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		if (sourceActions.size()==1)
		{
			sourceActions[0]->addToProg(prog);
			return;
		}
		
		prog->code(prog->getTypeCode(getReturnType()));
		prog->pushExpr();
		bool start=true;
		for (auto i: sourceActions)
		{
			if (!start) prog->code(", ");
			start=false;
			
			i->addToProg(prog);
		}
		prog->popExpr();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rcx, %rbx
movq 0x78(%rdi), %rax
movq 0x80(%rdi), %rcx
subq %rax, %rcx
cmpq $0x10, %rcx
jne 0x4cce6
movq (%rax), %rdi
movq %rbx, %rsi
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3a606
movq %rdi, %r14
leaq 0x28(%rdi), %rsi
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x12c0a
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x15e88
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x39d6c
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0xa558
leaq 0x20(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0x3a5fa
movq 0x78(%r14), %r12
movq 0x80(%r14), %rbp
movb $0x1, %r14b
leaq 0x8(%rsp), %r13
cmpq %rbp, %r12
je 0x4cda6
movq %r13, %rdi
movq %r12, %rsi
callq 0x12c1e
testb $0x1, %r14b
jne 0x4cd86
movq %r15, %rdi
leaq 0xb12c(%rip), %rsi      # 0x57e95
leaq 0x7(%rsp), %rdx
callq 0xa150
movq %rbx, %rdi
movq %r15, %rsi
callq 0x39d6c
movq %r15, %rdi
callq 0xa558
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x3a606
leaq 0x10(%rsp), %rdi
callq 0xc984
addq $0x10, %r12
xorl %r14d, %r14d
jmp 0x4cd49
movq %rbx, %rdi
callq 0x3a692
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xa558
jmp 0x4cdcf
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
jmp 0x4cdef
jmp 0x4cde7
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0xa558
jmp 0x4cdea
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: constGetAction(void const*, std::shared_ptr<TypeBase>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<NamespaceData>)
Action constGetAction(const void* in, Type typeIn, string textIn, Namespace ns)
{
	Action action=Action(new ConstGetAction(in, typeIn, textIn));
	if (ns)
	{
		Action copier=ns->getCopier(typeIn);
		if (copier)
			action=branchAction(voidAction, copier, action);
	}
	return action;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %r8, %r12
movq %rcx, %rbp
movq %rdx, %r15
movq %rsi, %r13
movq %rdi, %rbx
movl $0x80, %edi
callq 0xa2c0
movq %rax, %r14
leaq 0x18(%rsp), %rdi
movq %r15, %rsi
callq 0x12c0a
leaq 0x78(%rsp), %rdi
movq %rbp, %rsi
callq 0xa3b0
movb $0x1, %bpl
leaq 0x18(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %r14, %rdi
movq %r13, %rsi
callq 0x4ea86
xorl %ebp, %ebp
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4f632
leaq 0x78(%rsp), %rdi
callq 0xa558
leaq 0x20(%rsp), %rdi
callq 0xc984
movq (%r12), %r12
testq %r12, %r12
je 0x4e5e1
leaq 0x70(%rsp), %r14
leaq 0x68(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x12c0a
leaq 0x8(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x1ca78
leaq 0x70(%rsp), %rdi
callq 0xc984
cmpq $0x0, 0x8(%rsp)
je 0x4e5d7
leaq 0x10(%rsp), %r14
leaq 0x2bdf0(%rip), %rsi     # 0x7a350
leaq 0x48(%rsp), %r15
movq %r15, %rdi
callq 0x12c1e
leaq 0x38(%rsp), %r12
leaq 0x8(%rsp), %rsi
movq %r12, %rdi
callq 0x12c1e
leaq 0x28(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x12c1e
leaq 0x58(%rsp), %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x4658c
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x13816
leaq 0x60(%rsp), %rdi
callq 0xc984
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x50(%rsp), %rdi
callq 0xc984
leaq 0x10(%rsp), %rdi
callq 0xc984
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x50(%rsp), %rdi
callq 0xc984
jmp 0x4e61c
movq %rax, %r15
movq %r14, %rdi
callq 0xc984
addq $0x8, %rbx
movq %rbx, %rdi
callq 0xc984
jmp 0x4e65e
movq %rax, %r15
movb $0x1, %bpl
jmp 0x4e647
movq %rax, %r15
leaq 0x78(%rsp), %rdi
callq 0xa558
leaq 0x20(%rsp), %rdi
callq 0xc984
testb %bpl, %bpl
je 0x4e65e
movq %r14, %rdi
callq 0xa2a0
movq %r15, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: VarGetAction::VarGetAction(unsigned long, void**, std::shared_ptr<TypeBase>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
VarGetAction(size_t in, void ** stackPtrPtrIn, Type typeIn, string idIn):
		ActionData(typeIn, Void, Void)
	{
		offset=in;
		stackPtrPtr=stackPtrPtrIn;
		nameHint=idIn;
		
		setDescription("get " + typeIn->getString() + " '" + idIn + "'");
		
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %r8, %rbx
movq %rcx, %r15
movq %rdx, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdi, %rbp
leaq 0x18(%rsp), %rdi
movq %rcx, %rsi
callq 0x12c0a
leaq 0x2bd42(%rip), %r14     # 0x7a3e0
leaq 0x38(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x12c0a
leaq 0x28(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x12c0a
movq %rbp, %rdi
leaq 0x18(%rsp), %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x44704
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x20(%rsp), %rdi
callq 0xc984
leaq 0x2b49a(%rip), %rax     # 0x79b90
movq %rax, (%rbp)
movq 0x8(%rsp), %rax
movq %rax, 0x80(%rbp)
movq 0x10(%rsp), %rax
movq %rax, 0x78(%rbp)
leaq 0x8(%rbp), %rdi
movq %rbx, %rsi
callq 0xa1d0
movq (%r15), %rsi
movq (%rsi), %rax
leaq 0x48(%rsp), %rdi
callq *0x8(%rax)
leaq 0xbadc(%rip), %rsi      # 0x5a20c
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x11ff8
leaq 0xab0b(%rip), %rdx      # 0x59251
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xc882
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
movq %rbx, %rdx
callq 0x184b5
leaq 0xaadb(%rip), %rdx      # 0x59252
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xc882
leaq 0x58(%rbp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0xa1d0
leaq 0xc8(%rsp), %rdi
callq 0xa558
leaq 0xa8(%rsp), %rdi
callq 0xa558
leaq 0x88(%rsp), %rdi
callq 0xa558
leaq 0x68(%rsp), %rdi
callq 0xa558
leaq 0x48(%rsp), %rdi
callq 0xa558
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xc8(%rsp), %rdi
callq 0xa558
jmp 0x4e7ff
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0xa558
jmp 0x4e811
movq %rax, %r14
leaq 0x88(%rsp), %rdi
callq 0xa558
jmp 0x4e823
movq %rax, %r14
leaq 0x68(%rsp), %rdi
callq 0xa558
jmp 0x4e832
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0xa558
jmp 0x4e843
jmp 0x4e840
movq %rax, %r14
movq %rbp, %rdi
callq 0x44e86
movq %r14, %rdi
callq 0xa500
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x20(%rsp), %rdi
callq 0xc984
jmp 0x4e84b
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: VarSetAction::VarSetAction(unsigned long, void**, std::shared_ptr<TypeBase>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
VarSetAction(size_t in, void ** stackPtrPtrIn, Type typeIn, string idIn):
		ActionData(Void, Void, typeIn)
	{
		offset=in;
		stackPtrPtr=stackPtrPtrIn;
		nameHint=idIn;
		
		setDescription("set " + typeIn->getString() + " '" + idIn + "'");
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %r8, %r13
movq %rcx, %r15
movq %rdx, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdi, %rbx
leaq 0x2bb3f(%rip), %rbp     # 0x7a3e0
leaq 0x38(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
callq 0x12c0a
leaq 0x28(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
callq 0x12c0a
leaq 0x18(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x12c0a
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %rbp, %rcx
callq 0x44704
leaq 0x20(%rsp), %rdi
callq 0xc984
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
leaq 0x2b2e1(%rip), %rax     # 0x79be8
movq %rax, (%rbx)
movq 0x8(%rsp), %rax
movq %rax, 0x80(%rbx)
movq 0x10(%rsp), %rax
movq %rax, 0x78(%rbx)
leaq 0x8(%rbx), %rdi
movq %r13, %rsi
callq 0xa1d0
movq (%r15), %rsi
movq (%rsi), %rax
leaq 0x48(%rsp), %rdi
callq *0x8(%rax)
leaq 0xb92e(%rip), %rsi      # 0x5a26e
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x11ff8
leaq 0xa8fb(%rip), %rdx      # 0x59251
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xc882
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
movq %r13, %rdx
callq 0x184b5
leaq 0xa8cb(%rip), %rdx      # 0x59252
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xc882
leaq 0x58(%rbx), %rdi
leaq 0xc8(%rsp), %rsi
callq 0xa1d0
leaq 0xc8(%rsp), %rdi
callq 0xa558
leaq 0xa8(%rsp), %rdi
callq 0xa558
leaq 0x88(%rsp), %rdi
callq 0xa558
leaq 0x68(%rsp), %rdi
callq 0xa558
leaq 0x48(%rsp), %rdi
callq 0xa558
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xc8(%rsp), %rdi
callq 0xa558
jmp 0x4ea0f
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0xa558
jmp 0x4ea21
movq %rax, %r14
leaq 0x88(%rsp), %rdi
callq 0xa558
jmp 0x4ea33
movq %rax, %r14
leaq 0x68(%rsp), %rdi
callq 0xa558
jmp 0x4ea42
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0xa558
jmp 0x4ea53
jmp 0x4ea50
movq %rax, %r14
movq %rbx, %rdi
callq 0x44e86
movq %r14, %rdi
callq 0xa500
movq %rax, %r14
leaq 0x20(%rsp), %rdi
callq 0xc984
leaq 0x30(%rsp), %rdi
callq 0xc984
leaq 0x40(%rsp), %rdi
callq 0xc984
jmp 0x4ea5b
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: VarGetAction::execute(void*, void*)
void* execute(void* inLeft, void* inRight)
	{
		if (!(*stackPtrPtr))
		{
			throw PhplusError("something fucked up big time. VarGetAction::execute called while stack pointer is still null", RUNTIME_ERROR);
		}
		
		void* out=malloc(returnType->getSize());
		memcpy(out, (char*)(*stackPtrPtr)+offset, returnType->getSize());
		return out;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq 0x78(%rdi), %rax
cmpq $0x0, (%rax)
je 0x4ec80
movq %rdi, %rbx
movq 0x28(%rdi), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %rax, %rdi
callq 0xa390
movq %rax, %r14
movq 0x28(%rbx), %rdi
movq 0x78(%rbx), %rax
movq (%rax), %r15
addq 0x80(%rbx), %r15
movq (%rdi), %rax
callq *0x38(%rax)
movq %r14, %rdi
movq %r15, %rsi
movq %rax, %rdx
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa260
pushq $0x38
popq %rdi
callq 0xa1b0
movq %rax, %rbx
leaq 0xb57f(%rip), %rsi      # 0x5a211
leaq 0x28(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xa150
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rcx
movaps %xmm0, (%rcx)
movb $0x1, %bpl
leaq 0x28(%rsp), %rsi
pushq $0x4
popq %rdx
movq %rbx, %rdi
callq 0x19f06
xorl %ebp, %ebp
leaq 0x288d0(%rip), %rsi     # 0x77598
leaq -0x3d63d(%rip), %rdx    # 0x11692
movq %rbx, %rdi
callq 0xa4e0
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0xc984
leaq 0x28(%rsp), %rdi
callq 0xa558
testb %bpl, %bpl
jne 0x4ecf8
jmp 0x4ed00
movq %rax, %r14
movq %rbx, %rdi
callq 0xa230
movq %r14, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: VarGetAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		/*
		if ((nameHint=="me" || nameHint=="in") && getReturnType()->getType()==TypeBase::TUPLE)
		{
			prog->code(prog->getTypeCode(getReturnType()));
			prog->pushExpr();
				bool isFirst=true;
				for (auto i: *getReturnType()->getAllSubTypes())
				{
					if (!isFirst)
						prog->code(", ");
					isFirst=false;
					prog->name(i.name);
				}
			prog->popExpr();
		}
		else
		*/
		{
			prog->declareVar(nameHint, getReturnType());
			prog->name(nameHint);
		}
	}

// Assembly:
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rcx, %r14
movq %rdi, %rbx
leaq 0x28(%rdi), %rsi
leaq 0x8(%rsp), %rdi
callq 0x12c0a
leaq 0x5cf5(%rip), %rsi      # 0x54a1f
leaq 0x18(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xa150
addq $0x8, %rbx
leaq 0x8(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x16cbc
leaq 0x18(%rsp), %rdi
callq 0xa558
leaq 0x10(%rsp), %rdi
callq 0xc984
movq %r14, %rdi
movq %rbx, %rsi
callq 0x39d78
addq $0x38, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0xa558
jmp 0x4ed8b
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0xa500
nop
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: VarSetAction::execute(void*, void*)
void* execute(void* left, void* right)
	{
		if (!(*stackPtrPtr))
		{
			throw PhplusError("something fucked up big time. VarSetAction::execute called while stack pointer is still null", RUNTIME_ERROR);
		}
		
		//copy data on to the stack location of the var
		memcpy((char*)(*stackPtrPtr)+offset, right, inRightType->getSize());
		
		//return a new copy of the data
		void* out=malloc(returnType->getSize());
		memcpy(out, (char*)(*stackPtrPtr)+offset, inRightType->getSize());
		//return out;
		return nullptr;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq 0x78(%rdi), %rax
movq (%rax), %r15
testq %r15, %r15
je 0x4ee64
movq %rdx, %r14
movq %rdi, %rbx
addq 0x80(%rdi), %r15
movq 0x48(%rdi), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0xa260
movq 0x28(%rbx), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq 0x48(%rbx), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x38
popq %rdi
callq 0xa1b0
movq %rax, %rbx
leaq 0xb3fd(%rip), %rsi      # 0x5a273
leaq 0x28(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xa150
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rcx
movaps %xmm0, (%rcx)
movb $0x1, %bpl
leaq 0x28(%rsp), %rsi
pushq $0x4
popq %rdx
movq %rbx, %rdi
callq 0x19f06
xorl %ebp, %ebp
leaq 0x286ec(%rip), %rsi     # 0x77598
leaq -0x3d821(%rip), %rdx    # 0x11692
movq %rbx, %rdi
callq 0xa4e0
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0xc984
leaq 0x28(%rsp), %rdi
callq 0xa558
testb %bpl, %bpl
jne 0x4eedc
jmp 0x4eee4
movq %rax, %r14
movq %rbx, %rdi
callq 0xa230
movq %r14, %rdi
callq 0xa500
// File: /workspace/github_cpp_makefile_star2_O2/menhits[P]phplus/src/Actions/VarAction.cpp
// Function: VarSetAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		/*
		if ((nameHint=="me" || nameHint=="in") && getReturnType()->getType()==TypeBase::TUPLE)
		{
			if (prog->getExprLevel()>0)
			{
				throw PhplusError("can not set 'in' or 'me' inside expression in C++ because of some really dumb reason", INTERNAL_ERROR);
			}
			
			prog->pushBlock();
				prog->code(prog->getTypeCode(inRight->getReturnType()));
				prog->code(" tmp = ");
				prog->pushExpr();
					inRight->addToProg(prog);
				prog->popExpr();
				prog->endln();
				auto subs=*getReturnType()->getAllSubTypes();
				for (int i=0; i<(int)subs.size(); i++)
				{
					prog->name(subs[i].name);
					prog->code(" = ");
					prog->code("tmp."+(*inRight->getReturnType()->getAllSubTypes())[i].name);
					//prog->pushExpr();
						//getElemFromTupleAction(inRight->getReturnType(), (*inRight->getReturnType()->getAllSubTypes())[i].name)->addToProg(var, voidAction, prog);
					//prog->popExpr();
					prog->endln();
				}
			prog->popBlock();
		}
		else
		*/
		{
			prog->declareVar(nameHint, getInRightType());
			prog->name(nameHint);
			prog->code(" = ");
			prog->pushExpr();
			inRight->addToProg(prog);
			prog->popExpr();
			//if (prog->getExprLevel()==0)
			//	prog->endln();
		}
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x60, %rsp
movq %rcx, %rbx
movq %rdx, %r14
movq %rdi, %r15
leaq 0x48(%rdi), %rsi
leaq 0x10(%rsp), %rdi
callq 0x12c0a
leaq 0x5b0c(%rip), %rsi      # 0x54a1f
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0xa150
addq $0x8, %r15
leaq 0x10(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x16cbc
leaq 0x40(%rsp), %rdi
callq 0xa558
leaq 0x18(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
movq %r15, %rsi
callq 0x39d78
leaq 0x8ab1(%rip), %rsi      # 0x57a12
leaq 0x20(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xa150
leaq 0x20(%rsp), %rsi
movq %rbx, %rdi
callq 0x39d6c
leaq 0x20(%rsp), %rdi
callq 0xa558
movq %rbx, %rdi
callq 0x3a5fa
movq (%r14), %rdi
movq %rbx, %rsi
callq 0x3a606
movq %rbx, %rdi
callq 0x3a692
addq $0x60, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0xa558
jmp 0x4efdc
movq %rax, %rbx
jmp 0x4efdc
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0xa558
jmp 0x4efd2
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0xc984
movq %rbx, %rdi
callq 0xa500