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

// Assembly:
subq $0x358, %rsp            # imm = 0x358
movq %rsi, 0xe8(%rsp)
movq %rdi, %rax
movq 0xe8(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
movq %rdx, 0xf8(%rsp)
movq %rax, 0x350(%rsp)
movq %rdi, 0x348(%rsp)
movq %rdx, 0x340(%rsp)
movq 0x350(%rsp), %rax
movq %rax, 0x108(%rsp)
callq 0x1bb50
movq %rax, %rdi
callq 0x1bed0
movq %rax, %rsi
leaq 0x330(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x1a920
leaq 0x647fa(%rip), %rsi     # 0x1184a8
movq %rsi, 0x100(%rsp)
leaq 0x320(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x1a920
movq 0x100(%rsp), %rsi
leaq 0x310(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x1a920
movq 0x108(%rsp), %rdi
movq 0x110(%rsp), %rsi
movq 0x118(%rsp), %rdx
movq 0x120(%rsp), %rcx
callq 0xaf570
jmp 0xb3d0f
leaq 0x310(%rsp), %rdi
callq 0x1a950
leaq 0x320(%rsp), %rdi
callq 0x1a950
leaq 0x330(%rsp), %rdi
callq 0x1a950
movq 0x108(%rsp), %rdi
leaq 0x6364b(%rip), %rax     # 0x117390
addq $0x10, %rax
movq %rax, (%rdi)
addq $0x78, %rdi
movq %rdi, 0xd8(%rsp)
xorl %eax, %eax
movl %eax, %esi
callq 0x1bcd0
movq 0x108(%rsp), %rdi
addq $0x88, %rdi
movq %rdi, 0xe0(%rsp)
xorl %eax, %eax
movl %eax, %esi
callq 0x1bcd0
movq 0xf0(%rsp), %rdi
callq 0x1be40
testb $0x1, %al
jne 0xb3ef7
movb $0x1, 0x2af(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq %rax, 0xc8(%rsp)
leaq 0x2c0(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0xb4e0
movq 0xd0(%rsp), %rsi
leaq 0x231d3(%rip), %rdx     # 0xd6fa7
leaq 0x2e0(%rsp), %rdi
callq 0xfa60
jmp 0xb3de3
xorl %eax, %eax
movl %eax, %esi
leaq 0x2b0(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0xfbe0
movq 0xc8(%rsp), %rdi
movq 0xc0(%rsp), %rcx
leaq 0x2e0(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb3e20
movq 0xc8(%rsp), %rdi
movb $0x0, 0x2af(%rsp)
leaq 0x61791(%rip), %rsi     # 0x1155c8
leaq -0x997ce(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb460c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x310(%rsp), %rdi
callq 0x1a950
leaq 0x320(%rsp), %rdi
callq 0x1a950
leaq 0x330(%rsp), %rdi
callq 0x1a950
jmp 0xb45ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb3ecc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0xfc00
leaq 0x2e0(%rsp), %rdi
callq 0xb6e8
leaq 0x2c0(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x2af(%rsp)
jne 0xb3ee5
jmp 0xb3ef2
movq 0xc8(%rsp), %rdi
callq 0xb2d0
jmp 0xb45d8
movq 0xf8(%rsp), %rdi
callq 0x1be40
testb $0x1, %al
jne 0xb402d
movb $0x1, 0x257(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq %rax, 0xb0(%rsp)
leaq 0x268(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0xb4e0
movq 0xb8(%rsp), %rsi
leaq 0x23084(%rip), %rdx     # 0xd6fce
leaq 0x288(%rsp), %rdi
callq 0xfa60
jmp 0xb3f59
xorl %eax, %eax
movl %eax, %esi
leaq 0x258(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0xfbe0
movq 0xb0(%rsp), %rdi
movq 0xa8(%rsp), %rcx
leaq 0x288(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb3f96
movq 0xb0(%rsp), %rdi
movb $0x0, 0x257(%rsp)
leaq 0x6161b(%rip), %rsi     # 0x1155c8
leaq -0x99944(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb460c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb4002
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x258(%rsp), %rdi
callq 0xfc00
leaq 0x288(%rsp), %rdi
callq 0xb6e8
leaq 0x268(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x257(%rsp)
jne 0xb401b
jmp 0xb4028
movq 0xb0(%rsp), %rdi
callq 0xb2d0
jmp 0xb45d8
movq 0x108(%rsp), %rdi
movq 0xf0(%rsp), %rsi
addq $0x78, %rdi
callq 0x1a510
movq 0x108(%rsp), %rdi
movq 0xf8(%rsp), %rsi
addq $0x88, %rdi
movq %rdi, 0x98(%rsp)
callq 0x1a510
movq 0x98(%rsp), %rdi
callq 0x1bb50
movq %rax, %rdi
movb $0x0, 0x22f(%rsp)
callq 0x3f060
movq %rax, 0xa0(%rsp)
jmp 0xb4091
movq 0xa0(%rsp), %rdi
callq 0x1a660
movq %rax, 0x80(%rsp)
leaq 0x643fb(%rip), %rsi     # 0x1184a8
leaq 0x240(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x1a920
movq 0x80(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x9f1a0
movb %al, 0x97(%rsp)
jmp 0xb40e0
movb 0x97(%rsp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, 0x7f(%rsp)
jne 0xb40f4
jmp 0xb4166
movq 0x108(%rsp), %rdi
addq $0x88, %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x3f070
movq %rax, 0x70(%rsp)
jmp 0xb4117
movq 0x70(%rsp), %rdi
callq 0x1a660
movq %rax, 0x58(%rsp)
leaq 0x6437b(%rip), %rsi     # 0x1184a8
leaq 0x230(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x1a920
movq 0x58(%rsp), %rdi
movq 0x60(%rsp), %rsi
movb $0x1, 0x22f(%rsp)
callq 0x9f1a0
movb %al, 0x6f(%rsp)
jmp 0xb415c
movb 0x6f(%rsp), %al
xorb $-0x1, %al
movb %al, 0x7f(%rsp)
movb 0x7f(%rsp), %al
movb %al, 0x57(%rsp)
testb $0x1, 0x22f(%rsp)
jne 0xb417a
jmp 0xb4187
leaq 0x230(%rsp), %rdi
callq 0x1a950
leaq 0x240(%rsp), %rdi
callq 0x1a950
movb 0x57(%rsp), %al
testb $0x1, %al
jne 0xb41a1
jmp 0xb434b
movb $0x1, 0x1d7(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0x108(%rsp), %rdi
movq %rax, 0x48(%rsp)
addq $0x88, %rdi
callq 0x1bb50
movq %rax, %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x1e8(%rsp), %rdi
callq *%rax
jmp 0xb41e2
leaq 0x22e10(%rip), %rdx     # 0xd6ff9
leaq 0x208(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0xfa60
jmp 0xb4200
xorl %eax, %eax
movl %eax, %esi
leaq 0x1d8(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xfbe0
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %rcx
leaq 0x208(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb4234
movq 0x48(%rsp), %rdi
movb $0x0, 0x1d7(%rsp)
leaq 0x61380(%rip), %rsi     # 0x1155c8
leaq -0x99bdf(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb460c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb45d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb42b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
testb $0x1, 0x22f(%rsp)
jne 0xb42a8
jmp 0xb42b5
leaq 0x230(%rsp), %rdi
callq 0x1a950
jmp 0xb42b7
leaq 0x240(%rsp), %rdi
callq 0x1a950
jmp 0xb45d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb4330
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb4323
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x1d8(%rsp), %rdi
callq 0xfc00
leaq 0x208(%rsp), %rdi
callq 0xb6e8
leaq 0x1e8(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x1d7(%rsp)
jne 0xb433c
jmp 0xb4346
movq 0x48(%rsp), %rdi
callq 0xb2d0
jmp 0xb45d8
movq 0x108(%rsp), %rdi
addq $0x88, %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x1bed0
movq %rax, %rdi
callq 0x1a660
movq 0x108(%rsp), %rdi
movq %rax, 0x30(%rsp)
addq $0x78, %rdi
callq 0x1bb50
movq %rax, %rdi
callq 0x3f070
movq %rax, 0x38(%rsp)
jmp 0xb4394
movq 0x38(%rsp), %rsi
leaq 0x1c0(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x1a920
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x9f1a0
movb %al, 0x2f(%rsp)
jmp 0xb43c0
movb 0x2f(%rsp), %al
xorb $-0x1, %al
movb %al, 0x1f(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x1a950
movb 0x1f(%rsp), %al
testb $0x1, %al
jne 0xb43e4
jmp 0xb45d0
movb $0x1, 0x12f(%rsp)
movl $0x38, %edi
callq 0xb1f0
movq 0x108(%rsp), %rdi
movq %rax, 0x10(%rsp)
addq $0x88, %rdi
callq 0x1bb50
movq %rax, %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x160(%rsp), %rdi
callq *%rax
jmp 0xb4425
leaq 0x22c02(%rip), %rdx     # 0xd702e
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0xfa60
jmp 0xb4443
movq 0x108(%rsp), %rdi
addq $0x78, %rdi
callq 0x1bb50
movq %rax, %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x140(%rsp), %rdi
callq *%rax
jmp 0xb446a
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x140(%rsp), %rdx
callq 0x1bf20
jmp 0xb4489
xorl %eax, %eax
movl %eax, %esi
leaq 0x130(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xfbe0
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rcx
leaq 0x1a0(%rsp), %rsi
movl $0x3, %edx
callq 0x35600
jmp 0xb44bd
movq 0x10(%rsp), %rdi
movb $0x0, 0x12f(%rsp)
leaq 0x610f7(%rip), %rsi     # 0x1155c8
leaq -0x99e68(%rip), %rdx    # 0x1a670
callq 0xb640
jmp 0xb460c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x1a950
jmp 0xb45d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb45b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb45ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb459e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
jmp 0xb4591
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x308(%rsp)
movl %eax, 0x304(%rsp)
leaq 0x130(%rsp), %rdi
callq 0xfc00
leaq 0x1a0(%rsp), %rdi
callq 0xb6e8
leaq 0x140(%rsp), %rdi
callq 0xb6e8
leaq 0x180(%rsp), %rdi
callq 0xb6e8
leaq 0x160(%rsp), %rdi
callq 0xb6e8
testb $0x1, 0x12f(%rsp)
jne 0xb45c4
jmp 0xb45ce
movq 0x10(%rsp), %rdi
callq 0xb2d0
jmp 0xb45d8
addq $0x358, %rsp            # imm = 0x358
retq
movq 0xe0(%rsp), %rdi
callq 0x1acc0
movq 0xd8(%rsp), %rdi
callq 0x1acc0
movq 0x108(%rsp), %rdi
callq 0xb0270
movq 0x308(%rsp), %rdi
callq 0xb680
nopl (%rax)