// File: besm6[P]pascal-re/pascompl.cc
// Function: standProc::checkElementForReadWrite()
void checkElementForReadWrite() {
        RangeT * l5typ1z;

        regsUsed = regsUsed - Bits(12);
        if (l4typ3z->k == kindRange)
            l4typ3z = l4typ3z->cast<RangeT>().base;
        curVarKind = l4typ3z->k;
        helperNo = 36;                   /* P/WI */
        if (l4typ3z == IntegerType)
            l4var15z = 10;
        else if (l4typ3z == RealType) {
            helperNo = 37;               /* P/WR */
            l4var15z = 14;
        } else if (l4typ3z == CharType) {
            helperNo = 38;               /* P/WC */
            l4var15z = 1;
        } else if (curVarKind == kindScalar) {
            helperNo = 41;               /* P/WX */
            dumpEnumNames(static_cast<ScalarT*>(l4typ3z));
            l4var15z = 8;
        } else if (isCharArray(l4typ3z)) {
            l5typ1z = l4typ3z->cast<ArrayT>().range;
            l4var15z = l5typ1z->right - l5typ1z->left + 1;
            if (not l4typ3z->cast<ArrayT>().pck)
                helperNo = 81;            /* P/WA */
            else if (6 >= l4var15z)
                helperNo = 39;            /* P/A6 */
            else
                helperNo = 40;           /* P/A7 */
        } else if (l4typ3z->size == 1) {
            helperNo = 42;               /* P/WO */
            l4var15z = 17;
        } else {
            error(34); /* errTypeIsNotAFileElementType */
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movl $0xc, %edi
callq 0x48e0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rsi
leaq 0x56d03(%rip), %rdi     # 0x80110
callq 0x1e4e0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, 0x56ce8(%rip)     # 0x80110
movq 0x10(%rax), %rax
cmpl $0x2, 0x10(%rax)
jne 0x2944e
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1ea10
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq 0x18(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rcx
movl 0x10(%rcx), %ecx
movl %ecx, 0x56b69(%rip)     # 0x7ffc8
movq $0x24, 0x70(%rax)
movq 0x10(%rax), %rax
cmpq 0x56c36(%rip), %rax     # 0x800a8
jne 0x29485
movq -0x28(%rbp), %rax
movq $0xa, 0x60(%rax)
jmp 0x295d1
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
cmpq 0x56c1c(%rip), %rax     # 0x800b0
jne 0x294af
movq -0x28(%rbp), %rax
movq $0x25, 0x70(%rax)
movq $0xe, 0x60(%rax)
jmp 0x295cf
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
cmpq 0x56bfa(%rip), %rax     # 0x800b8
jne 0x294d9
movq -0x28(%rbp), %rax
movq $0x26, 0x70(%rax)
movq $0x1, 0x60(%rax)
jmp 0x295cd
cmpl $0x1, 0x56ae8(%rip)     # 0x7ffc8
jne 0x29508
movq -0x28(%rbp), %rax
movq $0x29, 0x70(%rax)
movq 0x10(%rax), %rdi
callq 0x14060
movq -0x28(%rbp), %rax
movq $0x8, 0x60(%rax)
jmp 0x295cb
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x14aa0
testb $0x1, %al
jne 0x2951b
jmp 0x29599
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1e210
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq 0x20(%rcx), %rcx
movq %rcx, -0x10(%rbp)
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq -0x10(%rbp), %rdx
subq 0x28(%rdx), %rcx
addq $0x1, %rcx
movq %rcx, 0x60(%rax)
movq 0x10(%rax), %rdi
callq 0x1e210
testb $0x1, 0x28(%rax)
jne 0x2956c
movq -0x28(%rbp), %rax
movq $0x51, 0x70(%rax)
jmp 0x29597
movq -0x28(%rbp), %rcx
movl $0x6, %eax
cmpq 0x60(%rcx), %rax
jl 0x29589
movq -0x28(%rbp), %rax
movq $0x27, 0x70(%rax)
jmp 0x29595
movq -0x28(%rbp), %rax
movq $0x28, 0x70(%rax)
jmp 0x29597
jmp 0x295c9
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x1, (%rax)
jne 0x295bd
movq -0x28(%rbp), %rax
movq $0x2a, 0x70(%rax)
movq $0x11, 0x60(%rax)
jmp 0x295c7
movl $0x22, %edi
callq 0x7b40
jmp 0x295c9
jmp 0x295cb
jmp 0x295cd
jmp 0x295cf
jmp 0x295d1
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)