// File: /workspace/github_cpp_makefile_star2_O3/menhits[P]phplus/src/Actions/IfAction.cpp
// Function: IfElseAction::addToProg(std::shared_ptr<ActionData>, std::shared_ptr<ActionData>, CppProgram*)
void addToProg(Action inLeft, Action inRight, CppProgram* prog)
	{
		if (returnVal && prog->getExprLevel()>0)
		{
			prog->pushExpr();
				condition->addToProg(voidAction, voidAction, prog);
			prog->popExpr();
			prog->code(" ? ");
			prog->pushExpr();
				ifAction->addToProg(voidAction, voidAction, prog);
			prog->popExpr();
			prog->code(" : ");
			prog->pushExpr();
				elseAction->addToProg(voidAction, voidAction, prog);
			prog->popExpr();
		}
		else
		{
			prog->code("if ");
			prog->pushExpr();
				condition->addToProg(voidAction, voidAction, prog);
			prog->popExpr();
			prog->pushBlock();
				ifAction->addToProg(voidAction, voidAction, prog);
				prog->endln();
			prog->popBlock();
			prog->code("else");
			prog->pushBlock();
				elseAction->addToProg(voidAction, voidAction, prog);
				prog->endln();
			prog->popBlock();
		}
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %rcx, %rbx
movq %rdi, %r14
cmpb $0x1, 0xa8(%rdi)
jne 0x681c7
movq 0xa0(%rbx), %rdi
cmpl $0x0, 0x28(%rdi)
jle 0x681c7
callq 0x18e22
movq 0x78(%r14), %rdi
leaq 0x321ee(%rip), %r15     # 0x9a370
movq (%r15), %rdx
movq 0x8(%r15), %rax
movq %rdx, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
testq %rax, %rax
je 0x684bf
movq 0x31dff(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x684d2
incl 0x8(%rax)
movq %rdx, 0x78(%rsp)
movq %rax, 0x80(%rsp)
jmp 0x684ef
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x149c8(%rip), %rsi     # 0x7cb9f
leaq 0x149c4(%rip), %rdx     # 0x7cba2
leaq 0x58(%rsp), %rdi
callq 0xdfa8
movq 0xa0(%rbx), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1861a
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x68208
callq 0xa2b0
movq 0xa0(%rbx), %rdi
callq 0x18e22
movq 0x78(%r14), %rdi
leaq 0x32151(%rip), %r12     # 0x9a370
movq (%r12), %rdx
movq 0x8(%r12), %rax
movq %rdx, 0xa8(%rsp)
movq %rax, 0xb0(%rsp)
testq %rax, %rax
je 0x68258
movq 0x31d64(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x68268
incl 0x8(%rax)
movq %rdx, 0x28(%rsp)
movq %rax, 0x30(%rsp)
jmp 0x68284
movq %rdx, 0x28(%rsp)
movq $0x0, 0x30(%rsp)
jmp 0x68292
lock
incl 0x8(%rax)
movq (%r12), %rdx
movq 0x8(%r12), %rax
movq %rdx, 0x28(%rsp)
movq %rax, 0x30(%rsp)
testq %rax, %rax
je 0x68292
cmpb $0x0, (%rcx)
je 0x6828e
incl 0x8(%rax)
jmp 0x68292
lock
incl 0x8(%rax)
movq (%rdi), %rax
leaq 0xa8(%rsp), %rsi
leaq 0x28(%rsp), %rdx
movq %rbx, %rcx
callq *0x28(%rax)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x682b7
callq 0xdce4
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x682c9
callq 0xdce4
movq 0xa0(%rbx), %rdi
callq 0x18e94
movq 0xa0(%rbx), %rdi
callq 0x18faa
movq 0x88(%r14), %rdi
movq (%r12), %rdx
movq 0x8(%r12), %rax
movq %rdx, 0x98(%rsp)
movq %rax, 0xa0(%rsp)
testq %rax, %rax
je 0x68321
movq 0x31c9b(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x68331
incl 0x8(%rax)
movq %rdx, 0x18(%rsp)
movq %rax, 0x20(%rsp)
jmp 0x6834d
movq %rdx, 0x18(%rsp)
movq $0x0, 0x20(%rsp)
jmp 0x6835b
lock
incl 0x8(%rax)
movq (%r12), %rdx
movq 0x8(%r12), %rax
movq %rdx, 0x18(%rsp)
movq %rax, 0x20(%rsp)
testq %rax, %rax
je 0x6835b
cmpb $0x0, (%rcx)
je 0x68357
incl 0x8(%rax)
jmp 0x6835b
lock
incl 0x8(%rax)
movq (%rdi), %rax
leaq 0x98(%rsp), %rsi
leaq 0x18(%rsp), %rdx
movq %rbx, %rcx
callq *0x28(%rax)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x68380
callq 0xdce4
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x68392
callq 0xdce4
movq 0xa0(%rbx), %rdi
callq 0x18918
movq 0xa0(%rbx), %rdi
callq 0x19110
leaq 0x58(%rsp), %rdi
movq %r15, (%rdi)
leaq 0xf885(%rip), %rsi      # 0x77c3e
leaq 0xf882(%rip), %rdx      # 0x77c42
callq 0xdfa8
movq 0xa0(%rbx), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1861a
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x683e5
callq 0xa2b0
movq 0xa0(%rbx), %rdi
callq 0x18faa
movq 0x98(%r14), %rdi
movq (%r12), %rdx
movq 0x8(%r12), %rax
movq %rdx, 0x88(%rsp)
movq %rax, 0x90(%rsp)
testq %rax, %rax
je 0x68431
movq 0x31b8b(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x68441
incl 0x8(%rax)
movq %rdx, 0x8(%rsp)
movq %rax, 0x10(%rsp)
jmp 0x6845d
movq %rdx, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
jmp 0x6846b
lock
incl 0x8(%rax)
movq (%r12), %rdx
movq 0x8(%r12), %rax
movq %rdx, 0x8(%rsp)
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x6846b
cmpb $0x0, (%rcx)
je 0x68467
incl 0x8(%rax)
jmp 0x6846b
lock
incl 0x8(%rax)
movq (%rdi), %rax
leaq 0x88(%rsp), %rsi
leaq 0x8(%rsp), %rdx
movq %rbx, %rcx
callq *0x28(%rax)
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x68490
callq 0xdce4
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x684a2
callq 0xdce4
movq 0xa0(%rbx), %rdi
callq 0x18918
movq 0xa0(%rbx), %rdi
callq 0x19110
jmp 0x6874a
movq %rdx, 0x78(%rsp)
movq $0x0, 0x80(%rsp)
jmp 0x684fd
lock
incl 0x8(%rax)
movq (%r15), %rdx
movq 0x8(%r15), %rax
movq %rdx, 0x78(%rsp)
movq %rax, 0x80(%rsp)
testq %rax, %rax
je 0x684fd
cmpb $0x0, (%rcx)
je 0x684f9
incl 0x8(%rax)
jmp 0x684fd
lock
incl 0x8(%rax)
movq (%rdi), %rax
leaq 0xd8(%rsp), %rsi
leaq 0x78(%rsp), %rdx
movq %rbx, %rcx
callq *0x28(%rax)
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x68525
callq 0xdce4
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x68537
callq 0xdce4
movq 0xa0(%rbx), %rdi
callq 0x18e94
leaq 0x68(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x1474b(%rip), %rsi     # 0x7cc9f
leaq 0x14747(%rip), %rdx     # 0x7cca2
leaq 0x58(%rsp), %rdi
callq 0xdfa8
movq 0xa0(%rbx), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1861a
movq 0x58(%rsp), %rdi
cmpq %r12, %rdi
je 0x68585
callq 0xa2b0
movq 0xa0(%rbx), %rdi
callq 0x18e22
movq 0x88(%r14), %rdi
movq (%r15), %rdx
movq 0x8(%r15), %rax
movq %rdx, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
testq %rax, %rax
je 0x685cf
movq 0x319ed(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x685df
incl 0x8(%rax)
movq %rdx, 0x48(%rsp)
movq %rax, 0x50(%rsp)
jmp 0x685f9
movq %rdx, 0x48(%rsp)
movq $0x0, 0x50(%rsp)
jmp 0x68607
lock
incl 0x8(%rax)
movq (%r15), %rdx
movq 0x8(%r15), %rax
movq %rdx, 0x48(%rsp)
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x68607
cmpb $0x0, (%rcx)
je 0x68603
incl 0x8(%rax)
jmp 0x68607
lock
incl 0x8(%rax)
movq (%rdi), %rax
leaq 0xc8(%rsp), %rsi
leaq 0x48(%rsp), %rdx
movq %rbx, %rcx
callq *0x28(%rax)
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x6862c
callq 0xdce4
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x6863e
callq 0xdce4
movq 0xa0(%rbx), %rdi
callq 0x18e94
leaq 0x58(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x1464a(%rip), %rsi     # 0x7cca3
leaq 0x14646(%rip), %rdx     # 0x7cca6
callq 0xdfa8
movq 0xa0(%rbx), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1861a
movq 0x58(%rsp), %rdi
cmpq %r12, %rdi
je 0x68685
callq 0xa2b0
movq 0xa0(%rbx), %rdi
callq 0x18e22
movq 0x98(%r14), %rdi
movq (%r15), %rdx
movq 0x8(%r15), %rax
movq %rdx, 0xb8(%rsp)
movq %rax, 0xc0(%rsp)
testq %rax, %rax
je 0x686cf
movq 0x318ed(%rip), %rcx     # 0x99fa8
cmpb $0x0, (%rcx)
je 0x686df
incl 0x8(%rax)
movq %rdx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
jmp 0x686f9
movq %rdx, 0x38(%rsp)
movq $0x0, 0x40(%rsp)
jmp 0x68707
lock
incl 0x8(%rax)
movq (%r15), %rdx
movq 0x8(%r15), %rax
movq %rdx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x68707
cmpb $0x0, (%rcx)
je 0x68703
incl 0x8(%rax)
jmp 0x68707
lock
incl 0x8(%rax)
movq (%rdi), %rax
leaq 0xb8(%rsp), %rsi
leaq 0x38(%rsp), %rdx
movq %rbx, %rcx
callq *0x28(%rax)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x6872c
callq 0xdce4
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x6873e
callq 0xdce4
movq 0xa0(%rbx), %rdi
callq 0x18e94
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x6876b
callq 0xdce4
movq 0xc0(%rsp), %rdi
jmp 0x6882e
jmp 0x6879e
jmp 0x6884e
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x68791
callq 0xdce4
movq 0xd0(%rsp), %rdi
jmp 0x6882e
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r12, %rdi
jne 0x68847
jmp 0x68851
jmp 0x6884e
movq %rax, %rbx
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x687ce
callq 0xdce4
movq 0xe0(%rsp), %rdi
jmp 0x6882e
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x687ea
callq 0xdce4
movq 0x90(%rsp), %rdi
jmp 0x6882e
jmp 0x6883a
jmp 0x6884e
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x6880a
callq 0xdce4
movq 0xa0(%rsp), %rdi
jmp 0x6882e
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x68826
callq 0xdce4
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x68851
callq 0xdce4
jmp 0x68851
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x68851
callq 0xa2b0
jmp 0x68851
movq %rax, %rbx
movq %rbx, %rdi
callq 0xa510
nop