// File: menhits[P]phplus/src/Actions/BranchAction.cpp
// Function: LeftBranchAction::LeftBranchAction(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>)
LeftBranchAction(Action leftInputIn, Action actionIn)
			:ActionData(actionIn->getReturnType(), Void, Void)
	{
		if (!actionIn)
			throw PhplusError(string() + "branch action created sent null action", INTERNAL_ERROR);
		
		if (!leftInputIn)
			throw PhplusError(string() + "branch action created sent null leftInput", INTERNAL_ERROR);
		
		action=actionIn;
		leftInput=leftInputIn;
		
		if (!leftInput->getInLeftType()->matches(Void) || !leftInput->getInRightType()->matches(Void))
		{
			throw PhplusError(leftInput->getDescription() + " put into branch even though its inputs are not void", INTERNAL_ERROR);
		}
		
		if (!leftInput->getReturnType()->matches(action->getInLeftType()))
		{
			throw PhplusError(leftInput->getDescription() + " return type is not the same as the left input of " + action->getDescription(), INTERNAL_ERROR);
		}
	}

// Assembly:
subq $0x338, %rsp            # imm = 0x338
movq %rdx, 0xc8(%rsp)
movq %rdi, %rax
movq 0xc8(%rsp), %rdi
movq %rsi, 0xd0(%rsp)
movq %rdi, 0xd8(%rsp)
movq %rax, 0x330(%rsp)
movq %rsi, 0x328(%rsp)
movq %rdi, 0x320(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0xe8(%rsp)
callq 0x1bb50
movq %rax, %rdi
callq 0x1bed0
movq %rax, %rsi
leaq 0x310(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x1a920
leaq 0x63dea(%rip), %rsi     # 0x1184a8
movq %rsi, 0xe0(%rsp)
leaq 0x300(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x1a920
movq 0xe0(%rsp), %rsi
leaq 0x2f0(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x1a920
movq 0xe8(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rdx
movq 0x100(%rsp), %rcx
callq 0xaf570
jmp 0xb471f
leaq 0x2f0(%rsp), %rdi
callq 0x1a950
leaq 0x300(%rsp), %rdi
callq 0x1a950
leaq 0x310(%rsp), %rdi
callq 0x1a950
movq 0xe8(%rsp), %rdi
leaq 0x62c93(%rip), %rax     # 0x1173e8
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x78, %rdi
movq %rdi, 0xb8(%rsp)
callq 0x1bcc0
movq 0xe8(%rsp), %rdi
addq $0x88, %rdi
movq %rdi, 0xc0(%rsp)
callq 0x1bcc0
movq 0xd8(%rsp), %rdi
callq 0x1be40
testb $0x1, %al
jne 0xb48ff
movb $0x1, 0x28f(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq %rax, 0xa8(%rsp)
leaq 0x2a0(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0xb4e0
movq 0xb0(%rsp), %rsi
leaq 0x227cb(%rip), %rdx     # 0xd6fa7
leaq 0x2c0(%rsp), %rdi
callq 0xfa60
jmp 0xb47eb
xorl %eax, %eax
movl %eax, %esi
leaq 0x290(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0xfbe0
movq 0xa8(%rsp), %rdi
movq 0xa0(%rsp), %rcx
leaq 0x2c0(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb4828
movq 0xa8(%rsp), %rdi
movb $0x0, 0x28f(%rsp)
leaq 0x60d89(%rip), %rsi     # 0x1155c8
leaq -0x9a1d6(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb4fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0x1a950
leaq 0x300(%rsp), %rdi
callq 0x1a950
leaq 0x310(%rsp), %rdi
callq 0x1a950
jmp 0xb4fb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb48d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x290(%rsp), %rdi
callq 0xfc00
leaq 0x2c0(%rsp), %rdi
callq 0xb6e8
leaq 0x2a0(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x28f(%rsp)
jne 0xb48ed
jmp 0xb48fa
movq 0xa8(%rsp), %rdi
callq 0xb2d0
jmp 0xb4f8e
movq 0xd0(%rsp), %rdi
callq 0x1be40
testb $0x1, %al
jne 0xb4a35
movb $0x1, 0x237(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq %rax, 0x90(%rsp)
leaq 0x248(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0xb4e0
movq 0x98(%rsp), %rsi
leaq 0x2272b(%rip), %rdx     # 0xd707d
leaq 0x268(%rsp), %rdi
callq 0xfa60
jmp 0xb4961
xorl %eax, %eax
movl %eax, %esi
leaq 0x238(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0xfbe0
movq 0x90(%rsp), %rdi
movq 0x88(%rsp), %rcx
leaq 0x268(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb499e
movq 0x90(%rsp), %rdi
movb $0x0, 0x237(%rsp)
leaq 0x60c13(%rip), %rsi     # 0x1155c8
leaq -0x9a34c(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb4fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4a0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x238(%rsp), %rdi
callq 0xfc00
leaq 0x268(%rsp), %rdi
callq 0xb6e8
leaq 0x248(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x237(%rsp)
jne 0xb4a23
jmp 0xb4a30
movq 0x90(%rsp), %rdi
callq 0xb2d0
jmp 0xb4f8e
movq 0xe8(%rsp), %rdi
movq 0xd8(%rsp), %rsi
addq $0x88, %rdi
callq 0x1a510
movq 0xe8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
addq $0x78, %rdi
movq %rdi, 0x68(%rsp)
callq 0x1a510
movq 0x68(%rsp), %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x3f060
movq %rax, %rdi
callq 0x1a660
movq %rax, 0x70(%rsp)
leaq 0x63a13(%rip), %rsi     # 0x1184a8
leaq 0x220(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x1a920
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rsi
movb $0x0, 0x20f(%rsp)
callq 0x9f1a0
movb %al, 0x87(%rsp)
jmp 0xb4ac7
movb 0x87(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x67(%rsp)
jne 0xb4adb
jmp 0xb4b41
movq 0xe8(%rsp), %rdi
addq $0x78, %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x3f070
movq %rax, %rdi
callq 0x1a660
movq %rax, 0x50(%rsp)
leaq 0x639a0(%rip), %rsi     # 0x1184a8
leaq 0x210(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x1a920
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rsi
movb $0x1, 0x20f(%rsp)
callq 0x9f1a0
movb %al, 0x66(%rsp)
jmp 0xb4b37
movb 0x66(%rsp), %al
xorb $-0x1, %al
movb %al, 0x67(%rsp)
movb 0x67(%rsp), %al
movb %al, 0x4f(%rsp)
testb $0x1, 0x20f(%rsp)
jne 0xb4b55
jmp 0xb4b62
leaq 0x210(%rsp), %rdi
callq 0x1a950
leaq 0x220(%rsp), %rdi
callq 0x1a950
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0xb4b7c
jmp 0xb4d0a
movb $0x1, 0x1b7(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x40(%rsp)
addq $0x78, %rdi
callq 0x1bb50
movq %rax, %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x1c8(%rsp), %rdi
callq *%rax
jmp 0xb4bba
leaq 0x22438(%rip), %rdx     # 0xd6ff9
leaq 0x1e8(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0xfa60
jmp 0xb4bd8
xorl %eax, %eax
movl %eax, %esi
leaq 0x1b8(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xfbe0
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rcx
leaq 0x1e8(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb4c0c
movq 0x40(%rsp), %rdi
movb $0x0, 0x1b7(%rsp)
leaq 0x609a8(%rip), %rsi     # 0x1155c8
leaq -0x9a5b7(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb4fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4c76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
testb $0x1, 0x20f(%rsp)
jne 0xb4c67
jmp 0xb4c74
leaq 0x210(%rsp), %rdi
callq 0x1a950
jmp 0xb4c76
leaq 0x220(%rsp), %rdi
callq 0x1a950
jmp 0xb4f8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4cef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4ce2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0xfc00
leaq 0x1e8(%rsp), %rdi
callq 0xb6e8
leaq 0x1c8(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x1b7(%rsp)
jne 0xb4cfb
jmp 0xb4d05
movq 0x40(%rsp), %rdi
callq 0xb2d0
jmp 0xb4f8e
movq 0xe8(%rsp), %rdi
addq $0x78, %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x1bed0
movq %rax, %rdi
callq 0x1a660
movq 0xe8(%rsp), %rdi
movq %rax, 0x20(%rsp)
addq $0x88, %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x3f060
movq %rax, %rsi
leaq 0x1a0(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x1a920
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x9f1a0
movb %al, 0x37(%rsp)
jmp 0xb4d76
movb 0x37(%rsp), %al
xorb $-0x1, %al
movb %al, 0x1f(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x1a950
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0xb4d9a
jmp 0xb4f86
movb $0x1, 0x10f(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0xe8(%rsp), %rdi
movq %rax, 0x10(%rsp)
addq $0x78, %rdi
callq 0x1bb50
movq %rax, %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x140(%rsp), %rdi
callq *%rax
jmp 0xb4dd8
leaq 0x222c8(%rip), %rdx     # 0xd70a7
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0xfa60
jmp 0xb4df6
movq 0xe8(%rsp), %rdi
addq $0x88, %rdi
callq 0x1bb50
movq %rax, %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x120(%rsp), %rdi
callq *%rax
jmp 0xb4e20
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0x1bf20
jmp 0xb4e3f
xorl %eax, %eax
movl %eax, %esi
leaq 0x110(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xfbe0
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rcx
leaq 0x180(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb4e73
movq 0x10(%rsp), %rdi
movb $0x0, 0x10f(%rsp)
leaq 0x60741(%rip), %rsi     # 0x1155c8
leaq -0x9a81e(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb4fc2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x1a950
jmp 0xb4f8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4f6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4f61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4f54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
jmp 0xb4f47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2e8(%rsp)
movl %eax, 0x2e4(%rsp)
leaq 0x110(%rsp), %rdi
callq 0xfc00
leaq 0x180(%rsp), %rdi
callq 0xb6e8
leaq 0x120(%rsp), %rdi
callq 0xb6e8
leaq 0x160(%rsp), %rdi
callq 0xb6e8
leaq 0x140(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x10f(%rsp)
jne 0xb4f7a
jmp 0xb4f84
movq 0x10(%rsp), %rdi
callq 0xb2d0
jmp 0xb4f8e
addq $0x338, %rsp            # imm = 0x338
retq
movq 0xc0(%rsp), %rdi
callq 0x1acc0
movq 0xb8(%rsp), %rdi
callq 0x1acc0
movq 0xe8(%rsp), %rdi
callq 0xb0270
movq 0x2e8(%rsp), %rdi
callq 0xb680
nopw %cs:(%rax,%rax)
nopl (%rax)