// File: /workspace/github_cpp_makefile_star2_O3/corecodec[P]coremake/coremake.c
// Function: dumpcond
void dumpcond(FILE* f,itemcond* p,int first,int prev,int* startpos,int nobreak)
{
    int pos = ftell(f);
    if (startpos && !nobreak && pos>*startpos+200)
    {
        fprintf(f,"\\\n    ");
        *startpos = pos;
    }

    itemcond_reduce(p);

	if (!first && (p->func==COND_OR || p->func==COND_AND) && p->func!=prev)
		fprintf(f,"(");

	switch (p->func)
	{
	case COND_GET:
		fprintf(f,"defined(%s)",p->value->value);
		break;
	case COND_NOT:
        if (p->a->func == COND_NOT)
		    dumpcond(f,p->a->a,0,COND_NOT,startpos,0);
        else
        {
		    fprintf(f,"!");
		    dumpcond(f,p->a,0,p->func,startpos,1);
        }
		break;
	case COND_OR:
		dumpcond(f,p->a,0,p->func,startpos,0);
		fprintf(f," || ");
		dumpcond(f,p->b,0,p->func,startpos,0);
		break;
	case COND_AND:
		dumpcond(f,p->a,0,p->func,startpos,0);
		fprintf(f," && ");
		dumpcond(f,p->b,0,p->func,startpos,0);
		break;
	case COND_0:
		fprintf(f,"0");
		break;
	case COND_1:
		fprintf(f,"1");
		break;
	}

	if (!first && (p->func==COND_OR || p->func==COND_AND) && p->func!=prev)
		fprintf(f,")");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %r9d, %ebp
movq %r8, %r12
movl %ecx, 0x4(%rsp)
movl %edx, %r15d
movq %rsi, %r14
movq %rdi, %rbx
callq 0x2210
movq %rax, %r13
testq %r12, %r12
sete %al
testl %ebp, %ebp
setne %cl
orb %al, %cl
jne 0x5c33
movl $0xc8, %eax
addl (%r12), %eax
cmpl %r13d, %eax
jge 0x5c33
leaq 0xb90a(%rip), %rdi      # 0x11527
movl $0x6, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x2330
movl %r13d, (%r12)
movq %r14, %rdi
callq 0x2f23
testl %r15d, %r15d
jne 0x5c65
movl 0x4(%r14), %eax
leal -0x3(%rax), %ecx
cmpl $-0x2, %ecx
setb %cl
cmpl 0x4(%rsp), %eax
sete %al
orb %cl, %al
jne 0x5c65
movl $0x28, %edi
movq %rbx, %rsi
callq 0x21a0
movl 0x4(%r14), %eax
cmpq $0x5, %rax
ja 0x5d43
leaq 0xb3b6(%rip), %rcx      # 0x11030
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x8(%r14), %rax
movq (%rax), %rdx
leaq 0xb89d(%rip), %rsi      # 0x1152e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x2200
jmp 0x5d43
movl $0x31, %edi
jmp 0x5d3b
movq 0x10(%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
movl $0x2, %ecx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x5bd3
leaq 0xb875(%rip), %rdi      # 0x1153f
jmp 0x5d0a
movq 0x10(%r14), %rax
cmpl $0x3, 0x4(%rax)
jne 0x5d8a
movq 0x10(%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
movl $0x3, %ecx
jmp 0x5d29
movq 0x10(%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
movl $0x1, %ecx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x5bd3
leaq 0xb830(%rip), %rdi      # 0x1153a
movl $0x4, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x2330
movq 0x18(%r14), %rsi
movl 0x4(%r14), %ecx
movq %rbx, %rdi
xorl %edx, %edx
movq %r12, %r8
xorl %r9d, %r9d
callq 0x5bd3
jmp 0x5d43
movl $0x30, %edi
movq %rbx, %rsi
callq 0x21a0
testl %r15d, %r15d
jne 0x5d60
movl 0x4(%r14), %eax
leal -0x3(%rax), %ecx
cmpl $-0x2, %ecx
setb %cl
cmpl 0x4(%rsp), %eax
sete %al
orb %cl, %al
je 0x5d6f
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x29, %edi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x21a0
movl $0x21, %edi
movq %rbx, %rsi
callq 0x21a0
movq 0x10(%r14), %rsi
movl 0x4(%r14), %ecx
movq %rbx, %rdi
xorl %edx, %edx
movq %r12, %r8
movl $0x1, %r9d
jmp 0x5d2f