// File: menhits[P]phplus/src/Namespace.cpp
// Function: NamespaceData::getActionForTokenWithInput(std::shared_ptr<TokenData>, std::shared_ptr<TypeBase>, std::shared_ptr<TypeBase>, bool, bool, std::shared_ptr<TokenData>)
Action NamespaceData::getActionForTokenWithInput(Token token, Type left, Type right, bool dynamic, bool throwSourceError, Token tokenForError)
{
	vector<Action> matches;
	vector<AstNodeBase*> nodes;
	bool foundNodes=false;
	AstNode tupleNode; // this is needed for memory management, so if a tuple node is needed it can be kept around until the function exits
	
	string searchText = (token->getOp() ? token->getOp()->getText() : token->getText());
	
	getNodes(nodes, searchText, true, dynamic, false);
	
	if (left->getType()==TypeBase::TUPLE && token->getType()==TokenData::IDENTIFIER)
	{
		auto match=left->getSubType(searchText);
		
		if (match.type)
		{
			if (right->isVoid())
			{
				tupleNode=AstActionWrapper::make(getElemFromTupleAction(left, searchText));
				nodes.push_back(&*tupleNode);
			}
		}
	}
	
	if (!nodes.empty())
		foundNodes=true;
	
	nodesToMatchingActions(matches, nodes, left, right);
	
	if (!matches.empty())
	{
		if (matches.size() == 1)
		{
			return matches[0];
		}
		else if (throwSourceError)
		{
			throw PhplusError("multiple matching instances of '"+token->getText()+"' found", SOURCE_ERROR, tokenForError);
		}
		else
		{
			return nullptr;
		}
	}
	
	nodes.clear();
	getNodes(nodes, searchText, false, false, true);
	
	if (!nodes.empty())
		foundNodes=true;
	
	for (auto i: nodes)
	{
		AstNode instance=i->makeCopyWithSpecificTypes(left, right);
		
		if (instance)
		{
			matches.push_back(instance->getAction());
			actions.add(token->getText(), move(instance));
		}
	}
	
	if (!matches.empty())
	{
		if (matches.size() == 1)
		{
			return matches[0];
		}
		else if (throwSourceError)
		{
			throw PhplusError("multiple whatev instances of '"+token->getText()+"' found", SOURCE_ERROR, tokenForError);
		}
		else
		{
			return nullptr;
		}
	}
	
	if (!foundNodes && dynamic && token->getType()==TokenData::IDENTIFIER && left->isVoid() && right->isCreatable())
	{
		return addVar(right, token->getText());
	}
	
	if (throwSourceError)
	{
		if (foundNodes)
			throw PhplusError("correct overload of '"+token->getText()+"' tidak ditemukan for types "+left->getString()+" and "+right->getString(), SOURCE_ERROR, tokenForError);
		else
			throw PhplusError("'"+token->getText()+"' tidak ditemukan", SOURCE_ERROR, tokenForError);
	}
	else
	{
		return nullptr;
	}
}

// Assembly:
subq $0x5d8, %rsp            # imm = 0x5D8
movl %r9d, %eax
movq %r8, 0xb0(%rsp)
movq %rcx, 0xb8(%rsp)
movq %rdx, %rcx
movq 0xb8(%rsp), %rdx
movq %rcx, 0xe8(%rsp)
movq %rsi, %rcx
movq 0xe8(%rsp), %rsi
movq %rcx, 0xc0(%rsp)
movq %rdi, %r9
movq 0xc0(%rsp), %rdi
movq %r9, 0xc8(%rsp)
movb %al, %cl
movq %r9, %rax
movq %rax, 0xd0(%rsp)
movq 0x5e8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movb 0x5e0(%rsp), %al
movq %r9, 0x5d0(%rsp)
movq %rdi, 0x5c8(%rsp)
movq %rsi, 0x5c0(%rsp)
movq %rdx, 0x5b8(%rsp)
movq %r8, 0x5b0(%rsp)
andb $0x1, %cl
movb %cl, 0x5af(%rsp)
andb $0x1, %al
movb %al, 0x5ae(%rsp)
movq 0x5c8(%rsp), %rax
movq %rax, 0xe0(%rsp)
leaq 0x590(%rsp), %rdi
callq 0x1aa90
leaq 0x578(%rsp), %rdi
callq 0x3ed60
movb $0x0, 0x577(%rsp)
leaq 0x568(%rsp), %rdi
callq 0x1b210
movq 0xe8(%rsp), %rdi
callq 0x1bb70
movq %rax, %rsi
movb $0x0, 0x517(%rsp)
leaq 0x538(%rsp), %rdi
callq 0x1bc10
jmp 0x3ccc8
leaq 0x538(%rsp), %rdi
callq 0x1bef0
testb $0x1, %al
jne 0x3ccdb
jmp 0x3cd23
movq 0xe8(%rsp), %rdi
callq 0x1bb70
movq %rax, %rsi
leaq 0x518(%rsp), %rdi
callq 0x1bc10
jmp 0x3ccfa
movb $0x1, 0x517(%rsp)
leaq 0x518(%rsp), %rdi
callq 0xf9f0
movq %rax, %rsi
leaq 0x548(%rsp), %rdi
callq 0xfa00
jmp 0x3cd21
jmp 0x3cd44
movq 0xe8(%rsp), %rdi
callq 0x1bb70
movq %rax, %rsi
leaq 0x548(%rsp), %rdi
callq 0x1bb80
jmp 0x3cd42
jmp 0x3cd44
testb $0x1, 0x517(%rsp)
jne 0x3cd50
jmp 0x3cd5d
leaq 0x518(%rsp), %rdi
callq 0xf9a0
leaq 0x538(%rsp), %rdi
callq 0xf9a0
leaq 0x4f0(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0xb1a0
jmp 0x3cd81
movq 0xe0(%rsp), %rdi
movzbl 0x5af(%rsp), %r8d
andl $0x1, %r8d
leaq 0x578(%rsp), %rsi
leaq 0x4f0(%rsp), %rdx
movl $0x1, %ecx
xorl %r9d, %r9d
callq 0x3e1b0
jmp 0x3cdb5
leaq 0x4f0(%rsp), %rdi
callq 0xb6e8
movq 0xb8(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
movl %eax, 0xac(%rsp)
jmp 0x3cde4
movl 0xac(%rsp), %eax
cmpl $0x7, %eax
jne 0x3d13f
movq 0xe8(%rsp), %rdi
callq 0x1bb70
movq %rax, %rdi
callq 0x1bee0
movl %eax, 0xa8(%rsp)
jmp 0x3ce12
movl 0xa8(%rsp), %eax
cmpl $0x2, %eax
jne 0x3d13f
movq 0xb8(%rsp), %rdi
callq 0x1a660
movq %rax, 0xa0(%rsp)
leaq 0x4b8(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0xb1a0
jmp 0x3ce4e
movq 0xa0(%rsp), %rsi
movq (%rsi), %rax
movq 0x50(%rax), %rax
leaq 0x4d8(%rsp), %rdi
leaq 0x4b8(%rsp), %rdx
callq *%rax
jmp 0x3ce71
leaq 0x4b8(%rsp), %rdi
callq 0xb6e8
leaq 0x4d8(%rsp), %rdi
addq $0x8, %rdi
callq 0x1d820
testb $0x1, %al
jne 0x3ce98
jmp 0x3d11e
movq 0xb0(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movb %al, 0x9f(%rsp)
jmp 0x3ceba
movb 0x9f(%rsp), %al
testb $0x1, %al
jne 0x3ceca
jmp 0x3d11c
movq 0xb8(%rsp), %rsi
leaq 0x490(%rsp), %rdi
callq 0x1a920
leaq 0x470(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0xb1a0
jmp 0x3cef6
leaq 0x4a0(%rsp), %rdi
leaq 0x490(%rsp), %rsi
leaq 0x470(%rsp), %rdx
callq 0xbff10
jmp 0x3cf15
leaq 0x4b0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x3ea90
jmp 0x3cf2c
leaq 0x568(%rsp), %rdi
movq %rdi, 0x88(%rsp)
leaq 0x4b0(%rsp), %rsi
movq %rsi, 0x80(%rsp)
callq 0x3ee60
movq 0x80(%rsp), %rdi
callq 0x3ecb0
leaq 0x4a0(%rsp), %rdi
callq 0x1acc0
leaq 0x470(%rsp), %rdi
callq 0xb6e8
leaq 0x490(%rsp), %rdi
callq 0x1a950
movq 0x88(%rsp), %rdi
callq 0x3e8c0
movq %rax, 0x90(%rsp)
jmp 0x3cf9c
movq 0x90(%rsp), %rax
movq %rax, 0x468(%rsp)
leaq 0x578(%rsp), %rdi
leaq 0x468(%rsp), %rsi
callq 0x3e890
jmp 0x3cfc3
jmp 0x3d11c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3df56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d026
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
testb $0x1, 0x517(%rsp)
jne 0x3d017
jmp 0x3d024
leaq 0x518(%rsp), %rdi
callq 0xf9a0
jmp 0x3d026
leaq 0x538(%rsp), %rdi
callq 0xf9a0
jmp 0x3df56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3df49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x4f0(%rsp), %rdi
callq 0xb6e8
jmp 0x3df49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x4b8(%rsp), %rdi
callq 0xb6e8
jmp 0x3df49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d12d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d10d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d100
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x1acc0
leaq 0x470(%rsp), %rdi
callq 0xb6e8
leaq 0x490(%rsp), %rdi
callq 0x1a950
jmp 0x3d12d
jmp 0x3d11e
leaq 0x4d8(%rsp), %rdi
callq 0x3eec0
jmp 0x3d13f
leaq 0x4d8(%rsp), %rdi
callq 0x3eec0
jmp 0x3df49
leaq 0x578(%rsp), %rdi
callq 0x3ed70
testb $0x1, %al
jne 0x3d158
movb $0x1, 0x577(%rsp)
movq 0xb8(%rsp), %rsi
leaq 0x458(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x1a920
movq 0xb0(%rsp), %rsi
leaq 0x448(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x1a920
movq 0xe0(%rsp), %rdi
movq 0x70(%rsp), %rcx
movq 0x78(%rsp), %r8
leaq 0x590(%rsp), %rsi
leaq 0x578(%rsp), %rdx
callq 0x3e470
jmp 0x3d1b5
leaq 0x448(%rsp), %rdi
callq 0x1a950
leaq 0x458(%rsp), %rdi
callq 0x1a950
leaq 0x590(%rsp), %rdi
callq 0x3eee0
testb $0x1, %al
jne 0x3d3fb
leaq 0x590(%rsp), %rdi
callq 0x22290
cmpq $0x1, %rax
jne 0x3d25b
leaq 0x590(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3ef30
movq 0xc8(%rsp), %rdi
movq %rax, %rsi
callq 0x1ac60
movl $0x1, 0x444(%rsp)
jmp 0x3df05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x448(%rsp), %rdi
callq 0x1a950
leaq 0x458(%rsp), %rdi
callq 0x1a950
jmp 0x3df49
testb $0x1, 0x5ae(%rsp)
je 0x3d3da
movb $0x1, 0x3cf(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x68(%rsp)
callq 0x1bb70
movq %rax, %rsi
leaq 0x3e0(%rsp), %rdi
callq 0x1bb80
jmp 0x3d29f
leaq 0x950a0(%rip), %rsi     # 0xd2346
leaq 0x400(%rsp), %rdi
leaq 0x3e0(%rsp), %rdx
callq 0x1bcf0
jmp 0x3d2bd
leaq 0x950a3(%rip), %rdx     # 0xd2367
leaq 0x420(%rsp), %rdi
leaq 0x400(%rsp), %rsi
callq 0xfa60
jmp 0x3d2db
movq 0xd8(%rsp), %rsi
leaq 0x3d0(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x1bc90
movq 0x68(%rsp), %rdi
movq 0x60(%rsp), %rcx
leaq 0x420(%rsp), %rsi
xorl %edx, %edx
callq 0x35600
jmp 0x3d310
movq 0x68(%rsp), %rdi
movb $0x0, 0x3cf(%rsp)
leaq 0xd82a4(%rip), %rsi     # 0x1155c8
leaq -0x22cbb(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0x3df8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d3bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d3b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d3a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x3d0(%rsp), %rdi
callq 0xfc00
leaq 0x420(%rsp), %rdi
callq 0xb6e8
leaq 0x400(%rsp), %rdi
callq 0xb6e8
leaq 0x3e0(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x3cf(%rsp)
jne 0x3d3cb
jmp 0x3d3d5
movq 0x68(%rsp), %rdi
callq 0xb2d0
jmp 0x3df49
movq 0xc8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1bcd0
movl $0x1, 0x444(%rsp)
jmp 0x3df05
leaq 0x578(%rsp), %rdi
callq 0x3ef50
leaq 0x3a8(%rsp), %rdi
leaq 0x548(%rsp), %rsi
callq 0xb1a0
jmp 0x3d41f
movq 0xe0(%rsp), %rdi
leaq 0x578(%rsp), %rsi
leaq 0x3a8(%rsp), %rdx
xorl %r8d, %r8d
movl $0x1, %r9d
movl %r8d, %ecx
callq 0x3e1b0
jmp 0x3d44a
leaq 0x3a8(%rsp), %rdi
callq 0xb6e8
leaq 0x578(%rsp), %rdi
callq 0x3ed70
testb $0x1, %al
jne 0x3d498
movb $0x1, 0x577(%rsp)
jmp 0x3d498
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x3a8(%rsp), %rdi
callq 0xb6e8
jmp 0x3df49
leaq 0x578(%rsp), %rax
movq %rax, 0x3a0(%rsp)
movq 0x3a0(%rsp), %rdi
callq 0x3ef70
movq %rax, 0x398(%rsp)
movq 0x3a0(%rsp), %rdi
callq 0x3efa0
movq %rax, 0x390(%rsp)
leaq 0x398(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x3efd0
testb $0x1, %al
jne 0x3d4f0
jmp 0x3d72d
leaq 0x398(%rsp), %rdi
callq 0x3f010
movq 0xb8(%rsp), %rsi
movq (%rax), %rax
movq %rax, 0x388(%rsp)
movq 0x388(%rsp), %rax
movq %rax, 0x48(%rsp)
leaq 0x370(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x1a920
movq 0xb0(%rsp), %rsi
leaq 0x360(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x1a920
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x58(%rsp), %rcx
movq (%rsi), %rax
movq 0x30(%rax), %rax
leaq 0x380(%rsp), %rdi
callq *%rax
jmp 0x3d56b
leaq 0x360(%rsp), %rdi
callq 0x1a950
leaq 0x370(%rsp), %rdi
callq 0x1a950
leaq 0x380(%rsp), %rdi
callq 0x3f020
testb $0x1, %al
jne 0x3d59b
jmp 0x3d6fc
leaq 0x380(%rsp), %rdi
callq 0x1a5f0
movq %rax, %rsi
leaq 0x350(%rsp), %rdi
callq 0x1aaa0
jmp 0x3d5ba
leaq 0x590(%rsp), %rdi
leaq 0x350(%rsp), %rsi
callq 0x1be60
jmp 0x3d5d1
leaq 0x350(%rsp), %rdi
callq 0x1acc0
movq 0xe0(%rsp), %rax
movq 0xe8(%rsp), %rdi
addq $0x50, %rax
movq %rax, 0x40(%rsp)
callq 0x1bb70
movq %rax, %rsi
leaq 0x330(%rsp), %rdi
callq 0x1bb80
jmp 0x3d60e
leaq 0x328(%rsp), %rdi
movq %rdi, 0x38(%rsp)
leaq 0x380(%rsp), %rsi
callq 0x1b710
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rdx
leaq 0x330(%rsp), %rsi
callq 0x399a0
jmp 0x3d641
leaq 0x328(%rsp), %rdi
callq 0x1b3f0
leaq 0x330(%rsp), %rdi
callq 0xb6e8
jmp 0x3d6fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x360(%rsp), %rdi
callq 0x1a950
leaq 0x370(%rsp), %rdi
callq 0x1a950
jmp 0x3df49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d71b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x1acc0
jmp 0x3d71b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x328(%rsp), %rdi
callq 0x1b3f0
leaq 0x330(%rsp), %rdi
callq 0xb6e8
jmp 0x3d71b
leaq 0x380(%rsp), %rdi
callq 0x1b3f0
leaq 0x398(%rsp), %rdi
callq 0x3f040
jmp 0x3d4d2
leaq 0x380(%rsp), %rdi
callq 0x1b3f0
jmp 0x3df49
leaq 0x590(%rsp), %rdi
callq 0x3eee0
testb $0x1, %al
jne 0x3d926
leaq 0x590(%rsp), %rdi
callq 0x22290
cmpq $0x1, %rax
jne 0x3d786
leaq 0x590(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3ef30
movq 0xc8(%rsp), %rdi
movq %rax, %rsi
callq 0x1ac60
movl $0x1, 0x444(%rsp)
jmp 0x3df05
testb $0x1, 0x5ae(%rsp)
je 0x3d905
movb $0x1, 0x2b7(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x30(%rsp)
callq 0x1bb70
movq %rax, %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x1bb80
jmp 0x3d7ca
leaq 0x94b9e(%rip), %rsi     # 0xd236f
leaq 0x2e8(%rsp), %rdi
leaq 0x2c8(%rsp), %rdx
callq 0x1bcf0
jmp 0x3d7e8
leaq 0x94b78(%rip), %rdx     # 0xd2367
leaq 0x308(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
callq 0xfa60
jmp 0x3d806
movq 0xd8(%rsp), %rsi
leaq 0x2b8(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x1bc90
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rcx
leaq 0x308(%rsp), %rsi
xorl %edx, %edx
callq 0x35600
jmp 0x3d83b
movq 0x30(%rsp), %rdi
movb $0x0, 0x2b7(%rsp)
leaq 0xd7d79(%rip), %rsi     # 0x1155c8
leaq -0x231e6(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0x3df8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d8ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d8dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3d8d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0xfc00
leaq 0x308(%rsp), %rdi
callq 0xb6e8
leaq 0x2e8(%rsp), %rdi
callq 0xb6e8
leaq 0x2c8(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x2b7(%rsp)
jne 0x3d8f6
jmp 0x3d900
movq 0x30(%rsp), %rdi
callq 0xb2d0
jmp 0x3df49
movq 0xc8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1bcd0
movl $0x1, 0x444(%rsp)
jmp 0x3df05
testb $0x1, 0x577(%rsp)
jne 0x3da90
testb $0x1, 0x5af(%rsp)
je 0x3da90
movq 0xe8(%rsp), %rdi
callq 0x1bb70
movq %rax, %rdi
callq 0x1bee0
movl %eax, 0x24(%rsp)
jmp 0x3d95d
movl 0x24(%rsp), %eax
cmpl $0x2, %eax
jne 0x3da90
movq 0xb8(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movb %al, 0x23(%rsp)
jmp 0x3d989
movb 0x23(%rsp), %al
testb $0x1, %al
jne 0x3d996
jmp 0x3da90
movq 0xb0(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x20(%rax), %rax
callq *%rax
movb %al, 0x22(%rsp)
jmp 0x3d9b5
movb 0x22(%rsp), %al
testb $0x1, %al
jne 0x3d9c2
jmp 0x3da90
movq 0xb0(%rsp), %rsi
leaq 0x2a0(%rsp), %rdi
callq 0x1a920
movq 0xe8(%rsp), %rdi
callq 0x1bb70
movq %rax, %rsi
leaq 0x280(%rsp), %rdi
callq 0x1bb80
jmp 0x3d9f6
movq 0xe0(%rsp), %rsi
movq 0xc8(%rsp), %rdi
leaq 0x2a0(%rsp), %rdx
leaq 0x280(%rsp), %rcx
callq 0x3b400
jmp 0x3da1d
leaq 0x280(%rsp), %rdi
callq 0xb6e8
leaq 0x2a0(%rsp), %rdi
callq 0x1a950
movl $0x1, 0x444(%rsp)
jmp 0x3df05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3da7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x280(%rsp), %rdi
callq 0xb6e8
leaq 0x2a0(%rsp), %rdi
callq 0x1a950
jmp 0x3df49
testb $0x1, 0x5ae(%rsp)
je 0x3dee9
testb $0x1, 0x577(%rsp)
je 0x3dd7d
movb $0x1, 0x16f(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x18(%rsp)
callq 0x1bb70
movq %rax, %rsi
leaq 0x1c0(%rsp), %rdi
callq 0x1bb80
jmp 0x3dae2
leaq 0x948a5(%rip), %rsi     # 0xd238e
leaq 0x1e0(%rsp), %rdi
leaq 0x1c0(%rsp), %rdx
callq 0x1bcf0
jmp 0x3db00
leaq 0x9489d(%rip), %rdx     # 0xd23a4
leaq 0x200(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0xfa60
jmp 0x3db1e
movq 0xb8(%rsp), %rdi
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq 0x1a0(%rsp), %rdi
callq *%rax
jmp 0x3db41
leaq 0x220(%rsp), %rdi
leaq 0x200(%rsp), %rsi
leaq 0x1a0(%rsp), %rdx
callq 0x1bf20
jmp 0x3db60
leaq 0x9485a(%rip), %rdx     # 0xd23c1
leaq 0x240(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0xfa60
jmp 0x3db7e
movq 0xb0(%rsp), %rdi
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq 0x180(%rsp), %rdi
callq *%rax
jmp 0x3dba1
leaq 0x260(%rsp), %rdi
leaq 0x240(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0x1bf20
jmp 0x3dbc0
movq 0xd8(%rsp), %rsi
leaq 0x170(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x1bc90
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rcx
leaq 0x260(%rsp), %rsi
xorl %edx, %edx
callq 0x35600
jmp 0x3dbf5
movq 0x18(%rsp), %rdi
movb $0x0, 0x16f(%rsp)
leaq 0xd79bf(%rip), %rsi     # 0x1155c8
leaq -0x235a0(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0x3df8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dd07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0x170(%rsp), %rdi
callq 0xfc00
leaq 0x260(%rsp), %rdi
callq 0xb6e8
leaq 0x180(%rsp), %rdi
callq 0xb6e8
leaq 0x240(%rsp), %rdi
callq 0xb6e8
leaq 0x220(%rsp), %rdi
callq 0xb6e8
leaq 0x1a0(%rsp), %rdi
callq 0xb6e8
leaq 0x200(%rsp), %rdi
callq 0xb6e8
leaq 0x1e0(%rsp), %rdi
callq 0xb6e8
leaq 0x1c0(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x16f(%rsp)
jne 0x3dd6e
jmp 0x3dd78
movq 0x18(%rsp), %rdi
callq 0xb2d0
jmp 0x3df49
movb $0x1, 0xf7(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x8(%rsp)
callq 0x1bb70
movq %rax, %rsi
leaq 0x108(%rsp), %rdi
callq 0x1bb80
jmp 0x3ddb3
leaq 0x98ce0(%rip), %rsi     # 0xd6a9a
leaq 0x128(%rsp), %rdi
leaq 0x108(%rsp), %rdx
callq 0x1bcf0
jmp 0x3ddd1
leaq 0x945ef(%rip), %rdx     # 0xd23c7
leaq 0x148(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0xfa60
jmp 0x3ddef
movq 0xd8(%rsp), %rsi
leaq 0xf8(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x1bc90
movq 0x8(%rsp), %rdi
movq (%rsp), %rcx
leaq 0x148(%rsp), %rsi
xorl %edx, %edx
callq 0x35600
jmp 0x3de22
movq 0x8(%rsp), %rdi
movb $0x0, 0xf7(%rsp)
leaq 0xd7792(%rip), %rsi     # 0x1155c8
leaq -0x237cd(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0x3df8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3ded1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3dec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
jmp 0x3deb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x530(%rsp)
movl %eax, 0x52c(%rsp)
leaq 0xf8(%rsp), %rdi
callq 0xfc00
leaq 0x148(%rsp), %rdi
callq 0xb6e8
leaq 0x128(%rsp), %rdi
callq 0xb6e8
leaq 0x108(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0xf7(%rsp)
jne 0x3dedd
jmp 0x3dee7
movq 0x8(%rsp), %rdi
callq 0xb2d0
jmp 0x3df49
movq 0xc8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1bcd0
movl $0x1, 0x444(%rsp)
leaq 0x548(%rsp), %rdi
callq 0xb6e8
leaq 0x568(%rsp), %rdi
callq 0x1b3f0
leaq 0x578(%rsp), %rdi
callq 0x3ee00
leaq 0x590(%rsp), %rdi
callq 0x1adb0
movq 0xd0(%rsp), %rax
addq $0x5d8, %rsp            # imm = 0x5D8
retq
leaq 0x548(%rsp), %rdi
callq 0xb6e8
leaq 0x568(%rsp), %rdi
callq 0x1b3f0
leaq 0x578(%rsp), %rdi
callq 0x3ee00
leaq 0x590(%rsp), %rdi
callq 0x1adb0
movq 0x530(%rsp), %rdi
callq 0xb680
nopw (%rax,%rax)