// File: /workspace/github_cpp_makefile_star2_O1/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 0x54d8a(%rip), %eax     # 0x6482c
testl %eax, %eax
sete %cl
movl %ebp, %ebx
xorb $0x1, %bl
orb %cl, %bl
cmpb $0x1, %bl
jne 0xfc21
movq 0xad8ca(%rip), %rcx     # 0xbd388
movq -0x8(%rcx), %rcx
movq 0x78(%rcx), %r14
movl $0x1, %ecx
testq %r14, %r14
je 0xfaf4
movq 0x54f79(%rip), %rdx     # 0x64a50
movq 0x8(%r14), %rsi
testq %rsi, %rsi
je 0xfaea
cmpq %rdx, %rsi
jne 0xfaec
jmp 0xfb71
decl %ecx
movq (%r14), %r14
testq %r14, %r14
jne 0xfad7
testl %eax, %eax
sete %al
orb %bpl, %al
je 0xfb0d
movl $0xb, %edi
callq 0x589e
jmp 0xfc21
cmpl $0x1, %ecx
je 0xfb60
movslq %ecx, %rdi
callq 0x6128
leaq 0xda0000(%rax), %rdi
callq 0x5941
cmpq $0x0, 0x5b092(%rip)     # 0x6abc0
jne 0xfb4f
movq 0x14a39(%rip), %rax     # 0x24570
movq %rax, 0x54f02(%rip)     # 0x64a40
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5ba8
movq %rax, 0x5b071(%rip)     # 0x6abc0
movl $0xdc8000, %edi         # imm = 0xDC8000
addq 0x5b065(%rip), %rdi     # 0x6abc0
callq 0x5941
leaq 0x54cb9(%rip), %rdi     # 0x64820
callq 0x5ac6
jmp 0xfc21
cmpl $0x1, %ecx
jne 0xfb8b
testb %bpl, %bpl
je 0xfbb4
movq 0x10(%r14), %rdi
addq 0x59962(%rip), %rdi     # 0x694e8
jmp 0xfc1c
movslq %ecx, %rdi
callq 0x6128
leaq 0xda0000(%rax), %rdi
callq 0x5941
testb %bpl, %bpl
je 0xfbbd
movl $0xaa0000, %edi         # imm = 0xAA0000
addq 0x10(%r14), %rdi
callq 0x5941
jmp 0xfbe2
addq $0x18, %r14
movq %r14, %rdi
jmp 0xfb67
movq $0xaa0000, 0x54c48(%rip) # imm = 0xAA0000
addq $0x18, %r14
movq %r14, %rdi
callq 0x5ac6
movq 0x5990d(%rip), %rax     # 0x694e8
movq %rax, 0x54c2e(%rip)     # 0x64810
cmpq $0x0, 0x5afd6(%rip)     # 0x6abc0
jne 0xfc0b
movq 0x1497d(%rip), %rax     # 0x24570
movq %rax, 0x54e46(%rip)     # 0x64a40
movl $0x8c0000, %edi         # imm = 0x8C0000
callq 0x5ba8
movq %rax, 0x5afb5(%rip)     # 0x6abc0
movabsq $0xd200000c0000, %rdi   # imm = 0xD200000C0000
addq 0x5afa4(%rip), %rdi     # 0x6abc0
callq 0x5941
movl %ebx, %eax
popq %rbx
popq %r14
popq %rbp
retq