// File: menhits[P]phplus/src/Type.cpp
// Function: TupleType::actuallyIs(std::shared_ptr<TypeBase>)
Type actuallyIs(Type target)
	{
		if (target->getType()!=TUPLE)
		{
			if ((*subTypes).size()==1)
			{
				return (*subTypes)[0].type->actuallyIs(target);
			}
			else
			{
				throw PhplusError("actuallyIs called on tuple with target that is not tuple", INTERNAL_ERROR);
			}
		}
		
		TupleTypeMaker maker;
		
		auto targetTypes=target->getAllSubTypes();
		
		for (int i=0; i<(int)subTypes->size(); i++)
		{
			maker.add((*subTypes)[i].name, (*subTypes)[i].type->actuallyIs((*targetTypes)[i].type));
		}
		
		return maker.get(true);
	}

// Assembly:
subq $0x148, %rsp            # imm = 0x148
movq %rdx, 0x58(%rsp)
movq %rdi, %rax
movq 0x58(%rsp), %rdi
movq %rax, 0x60(%rsp)
movq %rax, %rcx
movq %rcx, 0x68(%rsp)
movq %rax, 0x140(%rsp)
movq %rsi, 0x138(%rsp)
movq %rdi, 0x130(%rsp)
movq 0x138(%rsp), %rax
movq %rax, 0x70(%rsp)
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
callq *0x40(%rax)
cmpl $0x7, %eax
je 0xa2f49
movq 0x70(%rsp), %rdi
addq $0x48, %rdi
callq 0xa0b20
movq %rax, %rdi
callq 0x2df40
cmpq $0x1, %rax
jne 0xa2e40
movq 0x70(%rsp), %rdi
addq $0x48, %rdi
callq 0xa0b20
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2df60
movq %rax, %rdi
addq $0x20, %rdi
callq 0x1a660
movq 0x58(%rsp), %rsi
movq %rax, 0x48(%rsp)
leaq 0x120(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x1a920
movq 0x60(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq (%rsi), %rax
movq (%rax), %rax
callq *%rax
jmp 0xa2e08
leaq 0x120(%rsp), %rdi
callq 0x1a950
jmp 0xa3180
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x1a950
jmp 0xa318d
movb $0x1, 0xd7(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq %rax, 0x38(%rsp)
leaq 0xef(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xb690
movq 0x40(%rsp), %rdx
leaq 0x33292(%rip), %rsi     # 0xd6107
leaq 0xf0(%rsp), %rdi
callq 0xb4c0
jmp 0xa2e84
xorl %eax, %eax
movl %eax, %esi
leaq 0xd8(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xfbe0
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rcx
leaq 0xf0(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xa2eb8
movq 0x38(%rsp), %rdi
movb $0x0, 0xd7(%rsp)
leaq 0x726fc(%rip), %rsi     # 0x1155c8
leaq -0x88863(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xa319a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0xa2f21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0xfc00
leaq 0xf0(%rsp), %rdi
callq 0xb6e8
leaq 0xef(%rsp), %rdi
callq 0xb3f0
testb $0x1, 0xd7(%rsp)
jne 0xa2f3a
jmp 0xa2f44
movq 0x38(%rsp), %rdi
callq 0xb2d0
jmp 0xa318d
leaq 0xc8(%rsp), %rdi
callq 0x9f900
movq 0x58(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
movq 0x58(%rax), %rax
callq *%rax
movq %rax, 0x28(%rsp)
jmp 0xa2f73
movq 0x28(%rsp), %rax
movq %rax, 0xc0(%rsp)
movl $0x0, 0xbc(%rsp)
movq 0x70(%rsp), %rdi
movl 0xbc(%rsp), %eax
movl %eax, 0x24(%rsp)
addq $0x48, %rdi
callq 0xa0ae0
movq %rax, %rdi
callq 0x2df40
movq %rax, %rcx
movl 0x24(%rsp), %eax
cmpl %ecx, %eax
jge 0xa3149
movq 0x70(%rsp), %rdi
addq $0x48, %rdi
callq 0xa0b20
movq %rax, 0x18(%rsp)
jmp 0xa2fd0
movq 0x18(%rsp), %rdi
movslq 0xbc(%rsp), %rsi
callq 0x2df60
movq %rax, %rsi
leaq 0x98(%rsp), %rdi
callq 0xb1a0
jmp 0xa2ff4
movq 0x70(%rsp), %rdi
addq $0x48, %rdi
callq 0xa0b20
movq %rax, 0x10(%rsp)
jmp 0xa3009
movq 0x10(%rsp), %rdi
movslq 0xbc(%rsp), %rsi
callq 0x2df60
movq %rax, %rdi
addq $0x20, %rdi
callq 0x1a660
movq %rax, (%rsp)
movq 0xc0(%rsp), %rdi
movslq 0xbc(%rsp), %rsi
callq 0x2df60
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x78(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x1a920
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq (%rsi), %rax
movq (%rax), %rax
leaq 0x88(%rsp), %rdi
callq *%rax
jmp 0xa3071
leaq 0xc8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x9f990
jmp 0xa3090
leaq 0x88(%rsp), %rdi
callq 0x1a950
leaq 0x78(%rsp), %rdi
callq 0x1a950
leaq 0x98(%rsp), %rdi
callq 0xb6e8
movl 0xbc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xbc(%rsp)
jmp 0xa2f8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0xa3171
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0xa313a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
jmp 0xa3130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x118(%rsp)
movl %eax, 0x114(%rsp)
leaq 0x88(%rsp), %rdi
callq 0x1a950
leaq 0x78(%rsp), %rdi
callq 0x1a950
leaq 0x98(%rsp), %rdi
callq 0xb6e8
jmp 0xa3171
movq 0x60(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
movl $0x1, %edx
callq 0xa0070
jmp 0xa3162
leaq 0xc8(%rsp), %rdi
callq 0x1c080
jmp 0xa3180
leaq 0xc8(%rsp), %rdi
callq 0x1c080
jmp 0xa318d
movq 0x68(%rsp), %rax
addq $0x148, %rsp            # imm = 0x148
retq
movq 0x118(%rsp), %rdi
callq 0xb680
nopw (%rax,%rax)