// File: /workspace/github_cpp_makefile_star2_O1/besm6[P]pascal-re/pascompl.cc
// Function: parseLval()
void parseLval()
{
    ExprPtr l4exp1z, l4exp2z;
    TypesPtr l4typ3z;
    Kind l4var4z;

    if (hashTravPtr->cl == FIELDID) {
        curExpr = expr62z;
        goto L13530;
    } else {
        curExpr = new Expr;
        curExpr->typ = hashTravPtr->typ;
        curExpr->op = GETVAR;
        curExpr->id1 = hashTravPtr;
L13462:
        inSymbol();
        l4typ3z = curExpr->typ;
        l4var4z = l4typ3z->k;
        if (SY == ARROW) {
            l4exp1z = new Expr;
            l4exp1z->expr1 = curExpr;
            if (l4var4z == kindPtr) {
                l4exp1z->typ = l4typ3z->cast<PtrT>().pbase;
                l4exp1z->op = DEREF;
            } else if (l4var4z == kindFile) {
                l4exp1z->typ = l4typ3z->cast<FileT>().fbase;
                l4exp1z->op = FILEPTR;
            } else {
                stmtName = "  ^   ";
                error(errWrongVarTypeBefore);
                l4exp1z->typ = l4typ3z;
            }
            curExpr = l4exp1z;
        } else if (SY == PERIOD) {
            if (l4var4z == kindRecord) {
                int93z = 3;
                typ121z = l4typ3z;
                inSymbol();
                if (hashTravPtr == NULL) {
                    error(20); /* errDigitGreaterThan7 ??? */
                } else {
L13530:             l4exp1z = new Expr;
                    l4exp1z->typ = hashTravPtr->typ;
                    l4exp1z->op = GETFIELD;
                    l4exp1z->expr1 = curExpr;
                    l4exp1z->id2 = hashTravPtr;
                    curExpr = l4exp1z;
                }
            } else {
                stmtName = "  .   ";
                error(errWrongVarTypeBefore);
            }
        } else if (SY == LBRACK) {
            stmtName = "  [   ";
            do {
                l4exp1z = curExpr;
                expression();
                l4typ3z = l4exp1z->typ;
                if (l4typ3z->k != kindArray) {
                    error(errWrongVarTypeBefore);
                } else {
                    if (not typeCheck(l4typ3z->cast<ArrayT>().range, curExpr->typ))
                        error(66 /*errOtherIndexTypeNeeded */);
                    l4exp2z = new Expr;
                    l4exp2z->typ = l4typ3z->cast<ArrayT>().base;
                    l4exp2z->expr1 = l4exp1z;
                    l4exp2z->expr2 = curExpr;
                    l4exp2z->op = GETELT;
                    l4exp1z = l4exp2z;
                }
                curExpr = l4exp1z;
                stmtName = "  ,   ";
            } while (SY == COMMA);
            if (SY != RBRACK)
                error(67 /*errNeedBracketAfterIndices*/);
        } else return;
    }
    goto L13462;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
movq 0x56117(%rip), %rax     # 0x649b0
cmpl $0x5, 0x20(%rax)
jne 0xe8ee
movq 0x55fba(%rip), %rax     # 0x64860
movq %rax, 0x56203(%rip)     # 0x64ab0
movl $0x20, %edi
callq 0x3d03
movq 0x560f2(%rip), %rcx     # 0x649b0
movq 0x18(%rcx), %rcx
movq %rcx, (%rax)
movl $0x21, 0x8(%rax)
movq 0x561dd(%rip), %rcx     # 0x64ab0
movq %rcx, 0x10(%rax)
movq 0x560d2(%rip), %rcx     # 0x649b0
movq %rcx, 0x18(%rax)
movq %rax, 0x561c7(%rip)     # 0x64ab0
jmp 0xeb35
movl $0x20, %edi
callq 0x3d03
movq %rax, 0x561b1(%rip)     # 0x64ab0
movq 0x560aa(%rip), %rcx     # 0x649b0
movq 0x18(%rcx), %rcx
movq %rcx, (%rax)
movq 0x5619c(%rip), %rax     # 0x64ab0
movl $0x1d, 0x8(%rax)
movq 0x5608e(%rip), %rcx     # 0x649b0
movq %rcx, 0x10(%rax)
jmp 0xeb35
movl $0x20, %edi
callq 0x3d03
movq %rax, %rbx
movq 0x56171(%rip), %rax     # 0x64ab0
movq %rax, 0x10(%rbx)
cmpl $0x7, %ebp
je 0xeae4
cmpl $0x3, %ebp
jne 0xeaff
cmpl $0x3, 0x10(%r14)
jne 0xebb5
movq 0x18(%r14), %rax
movq %rax, (%rbx)
movl $0x22, 0x8(%rbx)
jmp 0xeb2e
cmpl $0x6, %ebp
jne 0xeab6
movq $0x3, 0x55fd1(%rip) # 0x64958
movq %r14, 0x56042(%rip)     # 0x649d0
leaq 0x48(%rsp), %rdi
callq 0x6e26
cmpq $0x0, 0x56010(%rip)     # 0x649b0
jne 0xe8ad
movl $0x14, %edi
callq 0x589e
jmp 0xeb35
movq 0x55f3c(%rip), %rdx     # 0x648f8
leaq 0x55f2d(%rip), %rdi     # 0x648f0
leaq 0xe941(%rip), %rcx      # 0x1d30b
movl $0x6, %r8d
xorl %esi, %esi
callq 0x3390
movq 0x560d2(%rip), %r14     # 0x64ab0
callq 0xebcc
movq (%r14), %r15
cmpl $0x5, 0x10(%r15)
jne 0xea5f
cmpl $0x5, 0x10(%r15)
jne 0xeb7f
movq 0x20(%r15), %rsi
movq 0x560ad(%rip), %rax     # 0x64ab0
movq (%rax), %rdx
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x83b2
addq $-0x8, 0xae99f(%rip)    # 0xbd3b8
cmpb $0x0, (%rbx)
jne 0xea28
movl $0x42, %edi
callq 0x589e
movl $0x20, %edi
callq 0x3d03
cmpl $0x5, 0x10(%r15)
jne 0xeb7f
movq 0x18(%r15), %rcx
movq %rcx, (%rax)
movq %r14, 0x10(%rax)
movq 0x56061(%rip), %rcx     # 0x64ab0
movq %rcx, 0x18(%rax)
movl $0x1c, 0x8(%rax)
movq %rax, %r14
jmp 0xea69
movl $0x16, %edi
callq 0x589e
movq %r14, 0x56040(%rip)     # 0x64ab0
movq 0x55e81(%rip), %rdx     # 0x648f8
leaq 0x55e72(%rip), %rdi     # 0x648f0
leaq 0xe88d(%rip), %rcx      # 0x1d312
movl $0x6, %r8d
xorl %esi, %esi
callq 0x3390
movl 0x55d94(%rip), %eax     # 0x6482c
cmpl $0xe, %eax
je 0xe9d7
cmpl $0xd, %eax
je 0xeb35
movl $0x43, %edi
callq 0x589e
jmp 0xeb35
movq 0x55e3b(%rip), %rdx     # 0x648f8
leaq 0x55e2c(%rip), %rdi     # 0x648f0
leaq 0xe839(%rip), %rcx      # 0x1d304
movl $0x6, %r8d
xorl %esi, %esi
callq 0x3390
movl $0x16, %edi
callq 0x589e
jmp 0xeb35
cmpl $0x7, 0x10(%r14)
jne 0xeb9e
movq 0x18(%r14), %rax
movq %rax, (%rbx)
movl $0x23, 0x8(%rbx)
jmp 0xeb2e
movq 0x55df2(%rip), %rdx     # 0x648f8
leaq 0x55de3(%rip), %rdi     # 0x648f0
leaq 0xe7e9(%rip), %rcx      # 0x1d2fd
movl $0x6, %r8d
xorl %esi, %esi
callq 0x3390
movl $0x16, %edi
callq 0x589e
movq %r14, (%rbx)
movq %rbx, 0x55f7b(%rip)     # 0x64ab0
leaq 0x1b8(%rsp), %rdi
callq 0x6e26
movl 0x55ce4(%rip), %eax     # 0x6482c
cmpl $0x8, %eax
je 0xe9b5
movq 0x55f58(%rip), %rcx     # 0x64ab0
movq (%rcx), %r14
movl 0x10(%r14), %ebp
cmpl $0x10, %eax
je 0xe973
cmpl $0x11, %eax
je 0xe92b
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0xecc2(%rip), %rdi      # 0x1d848
leaq 0xea27(%rip), %rsi      # 0x1d5b4
leaq 0xed8e(%rip), %rcx      # 0x1d922
movl $0x1f7, %edx            # imm = 0x1F7
callq 0x3170
leaq 0xeca3(%rip), %rdi      # 0x1d848
leaq 0xea08(%rip), %rsi      # 0x1d5b4
leaq 0xee05(%rip), %rcx      # 0x1d9b8
jmp 0xeb94
leaq 0xec8c(%rip), %rdi      # 0x1d848
leaq 0xe9f1(%rip), %rsi      # 0x1d5b4
leaq 0xedd2(%rip), %rcx      # 0x1d99c
jmp 0xeb94