// File: besm6[P]pascal-re/pascompl.cc
// Function: standProc::startReadOrWrite(bool)
void startReadOrWrite(bool l5arg1z) {
        expression();
        l4typ3z = curExpr->typ;
        l4exp7z = curExpr;
        if (not l5arg1z) {
            if (not lvalOpSet.has(curExpr->op))
                error(27); /* errExpressionWhereVariableExpected */
        }
        if (l4exp9z == NULL) {
            if (l4typ3z && l4typ3z->k == kindFile) {
                l4exp9z = curExpr;
            } else {
                l4exp9z = new Expr;
                l4exp9z->typ = textType;
                l4exp9z->op = GETVAR;
                if (l5arg1z) {
                    if (outputFile != NULL)
                        l4exp9z->id1 = outputFile;
                    else
                        error(77); /* errNoOutput */
                } else {
                    if (inputFile != NULL)
                        l4exp9z->id1 = inputFile;
                    else {
                        error(37); /* errInputMissingInProgramHeader */
                    }
                }
            }
            arg2Type = l4exp9z->typ;
            l4var13z.ii = typeCheck(arg2Type->cast<FileT>().fbase, CharType);
            l4bool12z = true;
            l4exp8z = new Expr;
            l4exp8z->typ = arg2Type->cast<FileT>().fbase;
            l4exp8z->op = FILEPTR;
            l4exp8z->expr1 = l4exp9z;
            l4exp6z = new Expr;
            l4exp6z->typ = l4exp8z->typ;
            l4exp6z->op = ASSIGNOP;
            if (l5arg1z)
                l4exp6z->expr1 = l4exp8z;
            else
                l4exp6z->expr2 = l4exp8z;
        } /* 17002 */
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x60(%rbp)
callq 0x14e90
movq -0x60(%rbp), %rax
movq 0x57104(%rip), %rcx     # 0x80160
movq (%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x570f6(%rip), %rcx     # 0x80160
movq %rcx, 0x30(%rax)
testb $0x1, -0x9(%rbp)
jne 0x2909c
movq 0x570e5(%rip), %rax     # 0x80160
movl 0x8(%rax), %eax
movl %eax, %esi
leaq 0x56e29(%rip), %rdi     # 0x7feb0
callq 0x1e5f0
testb $0x1, %al
jne 0x2909a
movl $0x1b, %edi
callq 0x7b40
jmp 0x2909c
movq -0x60(%rbp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x29262
movq -0x60(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x290d8
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x7, 0x10(%rax)
jne 0x290d8
movq -0x60(%rbp), %rax
movq 0x57091(%rip), %rcx     # 0x80160
movq %rcx, 0x40(%rax)
jmp 0x29164
movl $0x20, %edi
callq 0x1e2e0
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, 0x40(%rax)
movq 0x56fac(%rip), %rdx     # 0x800a0
movq 0x40(%rax), %rcx
movq %rdx, (%rcx)
movq 0x40(%rax), %rax
movl $0x1d, 0x8(%rax)
testb $0x1, -0x9(%rbp)
je 0x29137
cmpq $0x0, 0x56f34(%rip)     # 0x80048
je 0x2912b
movq -0x60(%rbp), %rax
movq 0x56f27(%rip), %rcx     # 0x80048
movq 0x40(%rax), %rax
movq %rcx, 0x10(%rax)
jmp 0x29135
movl $0x4d, %edi
callq 0x7b40
jmp 0x29162
cmpq $0x0, 0x56f11(%rip)     # 0x80050
je 0x29156
movq -0x60(%rbp), %rax
movq 0x56f04(%rip), %rcx     # 0x80050
movq 0x40(%rax), %rax
movq %rcx, 0x10(%rax)
jmp 0x29160
movl $0x25, %edi
callq 0x7b40
jmp 0x29162
jmp 0x29164
movq -0x60(%rbp), %rax
movq 0x40(%rax), %rax
movq (%rax), %rax
movq %rax, 0x56f5a(%rip)     # 0x800d0
movq 0x56f53(%rip), %rdi     # 0x800d0
callq 0x1ebe0
movq 0x18(%rax), %rsi
movq 0x56f2b(%rip), %rdx     # 0x800b8
leaq -0x58(%rbp), %rdi
callq 0xb280
leaq -0x58(%rbp), %rdi
callq 0x1e950
movb %al, %cl
movq -0x60(%rbp), %rax
andb $0x1, %cl
movzbl %cl, %ecx
movq %rcx, 0x50(%rax)
leaq -0x58(%rbp), %rdi
callq 0x1e9c0
movq -0x60(%rbp), %rax
movb $0x1, 0x4a(%rax)
movl $0x20, %edi
callq 0x1e2e0
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, 0x38(%rax)
movq 0x56ef4(%rip), %rdi     # 0x800d0
callq 0x1ebe0
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq 0x18(%rcx), %rdx
movq 0x38(%rax), %rcx
movq %rdx, (%rcx)
movq 0x38(%rax), %rcx
movl $0x23, 0x8(%rcx)
movq 0x40(%rax), %rcx
movq 0x38(%rax), %rax
movq %rcx, 0x10(%rax)
movl $0x20, %edi
callq 0x1e2e0
movq %rax, %rcx
movq -0x60(%rbp), %rax
movq %rcx, 0x28(%rax)
movq 0x38(%rax), %rcx
movq (%rcx), %rdx
movq 0x28(%rax), %rcx
movq %rdx, (%rcx)
movq 0x28(%rax), %rax
movl $0x1b, 0x8(%rax)
testb $0x1, -0x9(%rbp)
je 0x29250
movq -0x60(%rbp), %rax
movq 0x38(%rax), %rcx
movq 0x28(%rax), %rax
movq %rcx, 0x10(%rax)
jmp 0x29260
movq -0x60(%rbp), %rax
movq 0x38(%rax), %rcx
movq 0x28(%rax), %rax
movq %rcx, 0x18(%rax)
jmp 0x29262
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)