// File: menhits[P]phplus/src/StackFrame.cpp
// Function: StackFrame::setInput(std::shared_ptr<TypeBase>, std::shared_ptr<TypeBase>)
void StackFrame::setInput(Type left, Type right)
{
	if (inputSet)
	{
		error.log("StackFrame::setInput called multiple times", INTERNAL_ERROR);
	}
	else
	{
		if (left->isCreatable())
		{
			leftInputOffset=frameSize;
			leftInputIndex=members.size();
			addMember(left);
		}
		else if (left!=Void)
		{
			throw PhplusError("stack frame left input set to "+left->getString()+", which is neither creatable nore a normal void", INTERNAL_ERROR);
		}
		
		if (right->isCreatable())
		{
			rightInputOffset=frameSize;
			rightInputIndex=members.size();
			addMember(right);
		}
		else if (right!=Void)
		{
			throw PhplusError("stack frame right input set to "+right->getString()+", which is neither creatable nore a normal void", INTERNAL_ERROR);
		}
		
		inputSet=true;
	}
}

// Assembly:
subq $0x1c8, %rsp            # imm = 0x1C8
movq %rsi, 0x40(%rsp)
movq %rdx, 0x48(%rsp)
movq %rdi, 0x1c0(%rsp)
movq %rsi, 0x1b8(%rsp)
movq %rdx, 0x1b0(%rsp)
movq 0x1c0(%rsp), %rax
movq %rax, 0x50(%rsp)
testb $0x1, 0x20(%rax)
je 0x9bd85
leaq 0x18f(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xb690
movq 0x38(%rsp), %rdx
leaq 0x39e5c(%rip), %rsi     # 0xd5b1a
leaq 0x190(%rsp), %rdi
callq 0xb4c0
jmp 0x9bccd
xorl %eax, %eax
movl %eax, %esi
leaq 0x168(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xfbe0
movq 0x30(%rsp), %rcx
leaq 0x7c6d4(%rip), %rdi     # 0x1183c3
leaq 0x190(%rsp), %rsi
movl $0x3, %edx
callq 0x34c70
jmp 0x9bd03
leaq 0x168(%rsp), %rdi
callq 0xfc00
leaq 0x190(%rsp), %rdi
callq 0xb6e8
leaq 0x18f(%rsp), %rdi
callq 0xb3f0
jmp 0x9c1b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9bd73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0x168(%rsp), %rdi
callq 0xfc00
leaq 0x190(%rsp), %rdi
callq 0xb6e8
leaq 0x18f(%rsp), %rdi
callq 0xb3f0
jmp 0x9c1bf
movq 0x40(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
callq *0x20(%rax)
testb $0x1, %al
jne 0x9bd9e
jmp 0x9be1b
movq 0x50(%rsp), %rdi
movq 0x18(%rdi), %rax
movq %rax, 0x30(%rdi)
callq 0x9c510
movq 0x40(%rsp), %rsi
movq %rax, %rcx
movq 0x50(%rsp), %rax
movl %ecx, 0x24(%rax)
leaq 0x158(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x1a920
movq 0x50(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x9ba90
jmp 0x9bde3
leaq 0x158(%rsp), %rdi
callq 0x1a950
jmp 0x9bfa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0x158(%rsp), %rdi
callq 0x1a950
jmp 0x9c1bf
movq 0x40(%rsp), %rdi
leaq 0x7c681(%rip), %rsi     # 0x1184a8
callq 0x1be90
testb $0x1, %al
jne 0x9be35
jmp 0x9bfa6
movb $0x1, 0xe7(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0x40(%rsp), %rdi
movq %rax, 0x20(%rsp)
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq 0xf8(%rsp), %rdi
callq *%rax
jmp 0x9be6c
leaq 0x39cd2(%rip), %rsi     # 0xd5b45
leaq 0x118(%rsp), %rdi
leaq 0xf8(%rsp), %rdx
callq 0x1bcf0
jmp 0x9be8a
leaq 0x39cd3(%rip), %rdx     # 0xd5b64
leaq 0x138(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0xfa60
jmp 0x9bea8
xorl %eax, %eax
movl %eax, %esi
leaq 0xe8(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0xfbe0
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rcx
leaq 0x138(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0x9bedc
movq 0x20(%rsp), %rdi
movb $0x0, 0xe7(%rsp)
leaq 0x796d8(%rip), %rsi     # 0x1155c8
leaq -0x81887(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0x9c1cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9bf8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9bf7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9bf71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0xfc00
leaq 0x138(%rsp), %rdi
callq 0xb6e8
leaq 0x118(%rsp), %rdi
callq 0xb6e8
leaq 0xf8(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0xe7(%rsp)
jne 0x9bf97
jmp 0x9bfa1
movq 0x20(%rsp), %rdi
callq 0xb2d0
jmp 0x9c1bf
jmp 0x9bfa8
movq 0x48(%rsp), %rdi
callq 0x1a660
movq %rax, %rdi
movq (%rdi), %rax
callq *0x20(%rax)
testb $0x1, %al
jne 0x9bfc1
jmp 0x9c03e
movq 0x50(%rsp), %rdi
movq 0x18(%rdi), %rax
movq %rax, 0x38(%rdi)
callq 0x9c510
movq 0x48(%rsp), %rsi
movq %rax, %rcx
movq 0x50(%rsp), %rax
movl %ecx, 0x28(%rax)
leaq 0xd0(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x1a920
movq 0x50(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x9ba90
jmp 0x9c006
leaq 0xd0(%rsp), %rdi
callq 0x1a950
jmp 0x9c1ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x1a950
jmp 0x9c1bf
movq 0x48(%rsp), %rdi
leaq 0x7c45e(%rip), %rsi     # 0x1184a8
callq 0x1be90
testb $0x1, %al
jne 0x9c058
jmp 0x9c1ac
movb $0x1, 0x5f(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0x48(%rsp), %rdi
movq %rax, 0x8(%rsp)
callq 0x1a660
movq %rax, %rsi
movq (%rsi), %rax
movq 0x8(%rax), %rax
leaq 0x70(%rsp), %rdi
callq *%rax
jmp 0x9c089
leaq 0x39b04(%rip), %rsi     # 0xd5b94
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x1bcf0
jmp 0x9c0a4
leaq 0x39ab9(%rip), %rdx     # 0xd5b64
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xfa60
jmp 0x9c0c2
xorl %eax, %eax
movl %eax, %esi
leaq 0x60(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xfbe0
movq 0x8(%rsp), %rdi
movq (%rsp), %rcx
leaq 0xb0(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0x9c0f1
movq 0x8(%rsp), %rdi
movb $0x0, 0x5f(%rsp)
leaq 0x794c6(%rip), %rsi     # 0x1155c8
leaq -0x81a99(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0x9c1cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9c197
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9c18d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
jmp 0x9c180
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x180(%rsp)
movl %eax, 0x17c(%rsp)
leaq 0x60(%rsp), %rdi
callq 0xfc00
leaq 0xb0(%rsp), %rdi
callq 0xb6e8
leaq 0x90(%rsp), %rdi
callq 0xb6e8
leaq 0x70(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x5f(%rsp)
jne 0x9c1a0
jmp 0x9c1aa
movq 0x8(%rsp), %rdi
callq 0xb2d0
jmp 0x9c1bf
jmp 0x9c1ae
movq 0x50(%rsp), %rax
movb $0x1, 0x20(%rax)
addq $0x1c8, %rsp            # imm = 0x1C8
retq
movq 0x180(%rsp), %rdi
callq 0xb680
nopl (%rax)