// File: /workspace/github_cpp_makefile_star2_O3/menhits[P]phplus/src/Actions/BranchAction.cpp
// Function: BranchAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		Action leftInTmp = leftInput;
		Action rightInTmp = rightInput;
		
		if (leftInTmp->getReturnType()!=action->getInLeftType())
			leftInTmp=cppTupleCastAction(leftInTmp, action->getInLeftType());
		
		if (rightInTmp->getReturnType()!=action->getInRightType())
			rightInTmp=cppTupleCastAction(rightInTmp, action->getInRightType());
		
		action->addToProg(leftInTmp, rightInTmp, prog);
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rcx, %rbp
movq %rdi, %r12
movq 0x88(%rdi), %rbx
movq 0x90(%rdi), %r13
testq %r13, %r13
je 0x64bd3
movq 0x353e5(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x64bce
incl 0x8(%r13)
jmp 0x64bd3
lock
incl 0x8(%r13)
movq 0x98(%r12), %r14
movq 0xa0(%r12), %r15
testq %r15, %r15
je 0x64bff
movq 0x353b9(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x64bfa
incl 0x8(%r15)
jmp 0x64bff
lock
incl 0x8(%r15)
movq 0x78(%r12), %rdi
movq 0x38(%rdi), %rax
cmpq %rax, 0x28(%rbx)
je 0x64c32
movq %rbx, 0x78(%rsp)
movq %r13, 0x80(%rsp)
testq %r13, %r13
je 0x64c4a
movq 0x35381(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x64c3c
incl 0x8(%r13)
jmp 0x64c4a
movq %r13, 0x8(%rsp)
jmp 0x64cdf
lock
incl 0x8(%r13)
movq 0x78(%r12), %rdi
movq 0x38(%rdi), %rax
movq %rax, 0x68(%rsp)
movq 0x40(%rdi), %rax
movq %rax, 0x70(%rsp)
testq %rax, %rax
je 0x64c72
movq 0x35344(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x64c6e
incl 0x8(%rax)
jmp 0x64c72
lock
incl 0x8(%rax)
leaq 0x10(%rsp), %rdi
leaq 0x78(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x6a814
movq 0x10(%rsp), %rbx
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
testq %r13, %r13
je 0x64cb9
movq %r13, %rdi
callq 0xdce4
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x64cb9
callq 0xdce4
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x64cc8
callq 0xdce4
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x64cda
callq 0xdce4
movq 0x78(%r12), %rdi
movq 0x48(%rdi), %rax
cmpq %rax, 0x28(%r14)
je 0x64d0a
movq %r14, 0x58(%rsp)
movq %r15, 0x60(%rsp)
testq %r15, %r15
je 0x64d28
movq 0x352a9(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x64d1a
incl 0x8(%r15)
jmp 0x64d28
movq %rbp, %r13
movq %r15, %rbp
movq 0x8(%rsp), %r15
jmp 0x64dbd
lock
incl 0x8(%r15)
movq 0x78(%r12), %rdi
movq 0x48(%rdi), %rax
movq %rax, 0x48(%rsp)
movq 0x50(%rdi), %rax
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x64d50
movq 0x35266(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x64d4c
incl 0x8(%rax)
jmp 0x64d50
lock
incl 0x8(%rax)
movq %rbp, %r13
leaq 0x10(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x48(%rsp), %rdx
callq 0x6a814
movq 0x10(%rsp), %r14
movq 0x18(%rsp), %rbp
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
testq %r15, %r15
je 0x64d95
movq %r15, %rdi
callq 0xdce4
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x64d95
callq 0xdce4
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x64da4
callq 0xdce4
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
movq 0x8(%rsp), %r15
je 0x64db8
callq 0xdce4
movq 0x78(%r12), %rdi
movq %rbx, 0x38(%rsp)
movq %r15, 0x40(%rsp)
testq %r15, %r15
je 0x64de3
movq 0x351d5(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x64dde
incl 0x8(%r15)
jmp 0x64de3
lock
incl 0x8(%r15)
movq %r14, 0x28(%rsp)
movq %rbp, 0x30(%rsp)
testq %rbp, %rbp
je 0x64e07
movq 0x351af(%rip), %rax     # 0x99fa8
cmpb $0x0, (%rax)
je 0x64e03
incl 0x8(%rbp)
jmp 0x64e07
lock
incl 0x8(%rbp)
movq (%rdi), %rax
leaq 0x38(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %r13, %rcx
callq *0x28(%rax)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x64e29
callq 0xdce4
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x64e38
callq 0xdce4
testq %rbp, %rbp
je 0x64e45
movq %rbp, %rdi
callq 0xdce4
testq %r15, %r15
je 0x64e52
movq %r15, %rdi
callq 0xdce4
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x64e76
callq 0xdce4
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0x64e85
callq 0xdce4
movq 0x8(%rsp), %r13
jmp 0x64edb
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x64e9e
callq 0xdce4
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x64edb
callq 0xdce4
jmp 0x64edb
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x64ec4
callq 0xdce4
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x64ed3
callq 0xdce4
movq 0x8(%rsp), %r13
movq %rbp, %r15
testq %r15, %r15
je 0x64ee8
movq %r15, %rdi
callq 0xdce4
testq %r13, %r13
je 0x64ef5
movq %r13, %rdi
callq 0xdce4
movq %rbx, %rdi
callq 0xa510
nop