// File: /workspace/github_cpp_makefile_star2_O3/besm6[P]pascal-re/pascompl.cc
// Function: structBranch(bool)
bool structBranch(bool isGoto)
{
    StrLabel * curLab;
    int ii;
    bool ret = true;
    StrLabel * &strLabList = programme::super.back()->strLabList;

    if (SY == IDENT or not isGoto) {
        curLab = strLabList;
        ii = 1;
        while (curLab != NULL) {
            if (curLab->ident == 0) {
                ii = ii - 1;
            } else {
                if (curLab->ident == curIdent) {
                    if (ii == 1) {
                        if (isGoto) {
                            form1Insn(InsnTemp[UJ] + curLab->offset);
                        } else {
                            formJump(curLab->exitTarget);
                        }
                    } else {
                        form1Insn(getValueOrAllocSymtab(ii) +
                                  (KVTM+I13));
                        if (isGoto) {
                            form1Insn(KVTM+I10 + curLab->offset);
                        } else {
                            jumpType = KVTM+I10;
                            formJump(curLab->exitTarget);
                            jumpType = InsnTemp[UJ];
                        };
                        form1Insn(getHelperProc(60) +
                                  06437777713700000); /* P/ZAM */
                    };
                    return ret;
                }
            }
            curLab = curLab->next;
        }
        if (not isGoto and SY != IDENT) {
            if (ii != 1) {
                form1Insn(getValueOrAllocSymtab(ii) + (KVTM+I13));
                form1Insn(getHelperProc(60)); /* P/ZAM */
            }
            formJump(int53z);
        } else {
            error(errNotDefined);
        }
    } else
        return false;
    return ret;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %edi, %ebp
movl 0x54af9(%rip), %eax     # 0x6481c
testl %eax, %eax
sete %cl
movl %ebp, %ebx
xorb $0x1, %bl
orb %cl, %bl
cmpb $0x1, %bl
jne 0xfeb0
movq 0xad639(%rip), %rcx     # 0xbd378
movq -0x8(%rcx), %rcx
movq 0x78(%rcx), %r14
testq %r14, %r14
je 0xfdd8
movl $0x1, %ecx
movq 0x54ce4(%rip), %rdx     # 0x64a40
movq 0x8(%r14), %rsi
testq %rsi, %rsi
je 0xfd6f
cmpq %rdx, %rsi
jne 0xfd71
jmp 0xfe02
decl %ecx
movq (%r14), %r14
testq %r14, %r14
jne 0xfd5c
testl %eax, %eax
sete %al
orb %bpl, %al
jne 0xfde2
cmpl $0x1, %ecx
je 0xfdf1
movslq %ecx, %rdi
callq 0x617e
leaq 0xda0000(%rax), %rdi
callq 0x59a2
movq 0x5ae0d(%rip), %rdi     # 0x6abb0
testq %rdi, %rdi
jne 0xfdca
movq 0x147b1(%rip), %rax     # 0x24560
movq %rax, 0x54c7a(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, %rdi
movq %rax, 0x5ade6(%rip)     # 0x6abb0
addq $0xdc8000, %rdi         # imm = 0xDC8000
callq 0x59a2
jmp 0xfdf1
testl %eax, %eax
sete %al
orb %bpl, %al
je 0xfdf1
movl $0xb, %edi
callq 0x58ff
jmp 0xfeb0
leaq 0x54a18(%rip), %rdi     # 0x64810
callq 0x5b33
jmp 0xfeb0
cmpl $0x1, %ecx
jne 0xfe1c
testb %bpl, %bpl
je 0xfe45
movq 0x10(%r14), %rdi
addq 0x596c1(%rip), %rdi     # 0x694d8
jmp 0xfeab
movslq %ecx, %rdi
callq 0x617e
leaq 0xda0000(%rax), %rdi
callq 0x59a2
testb %bpl, %bpl
je 0xfe4e
movl $0xaa0000, %edi         # imm = 0xAA0000
addq 0x10(%r14), %rdi
callq 0x59a2
jmp 0xfe73
addq $0x18, %r14
movq %r14, %rdi
jmp 0xfdf8
movq $0xaa0000, 0x549a7(%rip) # imm = 0xAA0000
addq $0x18, %r14
movq %r14, %rdi
callq 0x5b33
movq 0x5966c(%rip), %rax     # 0x694d8
movq %rax, 0x5498d(%rip)     # 0x64800
movq 0x5ad36(%rip), %rax     # 0x6abb0
testq %rax, %rax
jne 0xfe9e
movq 0x146da(%rip), %rax     # 0x24560
movq %rax, 0x54ba3(%rip)     # 0x64a30
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5c15
movq %rax, 0x5ad12(%rip)     # 0x6abb0
movabsq $0xd200000c0000, %rdi   # imm = 0xD200000C0000
addq %rax, %rdi
callq 0x59a2
movl %ebx, %eax
popq %rbx
popq %r14
popq %rbp
retq