// File: /workspace/github_cpp_makefile_star2_O1/besm6[P]pascal-re/pascompl.cc
// Function: parseTypeRef::parseTypeRef(Types*&, Bitset)
parseTypeRef::parseTypeRef(TypesPtr & newType, Bitset skipTarget_)
    : skipTarget(skipTarget_)
{
    bool &inTypeDef = programme::super.back()->inTypeDef;
    super.push_back(this);
    isPacked = false;
L12247:
    if (SY == LPAREN) {
        span = 0;
        int93z = 0;
        inSymbol();
        curField = NULL;
        curType = new ScalarT(48);
        ScalarT & scalar = curType->cast<ScalarT>();
        while (SY == IDENT) {
            if (isDefined)
                error(errIdentAlreadyDefined);
            curEnum = new IdentRec(curIdent, curFrameRegTemplate,
                                   symHashTabBase[bucket], curType,
                                   ENUMID, NULL, span);
            symHashTabBase[bucket] = curEnum;
            span = span + 1;
            if (curField == NULL) {
                scalar.enums = curEnum;
            } else {
                curField->list() = curEnum;
            };
            curField = curEnum;
            inSymbol();
            if (SY == COMMA) {
                int93z = 0;
                inSymbol();
            } else {
                if (SY != RPAREN)
                    requiredSymErr(RPAREN);
            }
        } /* 12324 */
        checkSymAndRead(RPAREN);
        if (curField == NULL) {
            curType = BooleanType;
            error(errNoIdent);
        } else {
            // curType@ := [1, nrOfBits(span - 1), kindScalar, , span, 0];
            scalar.size = 1;
            scalar.bits = nrOfBits(span - 1);
            scalar.numen = span;
            scalar.start = 0;
        }
    } else /* 12344 */
    if (SY == ARROW) {
        inSymbol();
        if (SY != IDENT) {
            error(errNoIdent);
            curType = pointerType;
        } else {
            if (hashTravPtr == NULL) {
                if (inTypeDef) {
                    if (knownInType(curEnum)) {
                        curType = curEnum->typ;
                    } else {
                        definExprPtrType(IntegerType);
                    }
                } else {
L12366:             error(errNotAType);
                    curType = pointerType;
                }
            } else {
                if (hashTravPtr->cl != TYPEID) {
                    goto L12366;
                }
                curType = new PtrT(15, hashTravPtr->typ);
            } /* 12405 */
            inSymbol();
        }
    } else /* 12410 */
    if (SY == IDENT) {
        if (hashTravPtr != NULL) {
            if (hashTravPtr->cl == TYPEID) {
                curType = hashTravPtr->typ;
            } else {
                goto L12760;
            }
        } else {
            if (inTypeDef) {
                if (knownInType(curEnum)) {
                    curType = curEnum->typ;
                    curType->cast<PtrT>().pbase = BooleanType;
                } else {
                    definExprPtrType(BooleanType);
                }
            } else {
                error(errNotAType);
                curType = IntegerType;
            }
        }
        inSymbol();
    } else { /* 12440 */
        if (SY == PACKEDSY) {
            isPacked = true;
            inSymbol();
            goto L12247;
        }
        if (SY == RECORDSY) { /* 12446 */
            curType = new RecordT;
            RecordT & record = curType->cast<RecordT>();
            typ121z = curType;
            record.size = 0;
            record.bits = 48;
            record.cases = NULL;
            record.fields = NULL;
            record.hasFiles = false;
            record.pckrec = isPacked;
            cases.size = 0;
            cases.count = 0;
            parseRecordDecl(curType, true);
            checkSymAndRead(ENDSY);
        } else if (SY == ARRAYSY) {
            inSymbol();
            if (SY == LBRACK)
                inSymbol();
            tempType = NULL;
L12476:
            parseTypeRef(nestedType, skipTarget + Bits(OFSY));
            curVarKind = nestedType->k;
            if (curVarKind != kindRange) {
                if (curVarKind == kindScalar and
                    nestedType != IntegerType) {
                    span = nestedType->cast<ScalarT>().numen;
                } else {
                    error(8); /* errNotAnIndexType */
                    nestedType = IntegerType;
                    span = 10;
                }
                defineRange(nestedType, 0, span - 1);
            } /* 12524 */
            l3typ26z = new ArrayT(ord(tempType), 48, NULL);
            l3typ26z->range = static_cast<RangeT*>(nestedType);
            if (tempType == NULL)
                curType = l3typ26z;
            else
                tempType->cast<ArrayT>().base = l3typ26z;
            tempType = l3typ26z;
            if (SY == COMMA) {
                inSymbol();
                goto L12476;
            }
            if (SY == RBRACK)
                inSymbol();
            checkSymAndRead(OFSY);
            parseTypeRef(nestedType, skipTarget);
            l3typ26z->base = nestedType;
            if (isFileType(nestedType))
                error(errTypeMustNotBeFile);
            do {
                span = l3typ26z->range->right - l3typ26z->range->left + 1;
                tempType = (Types*)ptr(l3typ26z->size);
                l3int22z = l3typ26z->base->bits;
                // Don't clear t->pck flag for word-sized arrays.
                //if (24 < l3int22z)
                //    isPacked = false;
                l3typ26z->bits = 48;
                if (isPacked) {
                    l3int22z = 48 / l3int22z;
                    if (l3int22z == 9) {
                        l3int22z = 8;
                    } else if (l3int22z == 5) {
                          l3int22z = 4;
                    }
                    l3typ26z->perWord = l3int22z;
                    l3typ26z->pcksize = 48 / l3int22z;
                    l3int22z = span * l3typ26z->pcksize;
                    if (l3int22z % 48 == 0)
                        numBits = 0;
                    else
                        numBits = 1;
                    l3typ26z->size = l3int22z / 48 + numBits;
                    if (l3typ26z->size == 1)
                        l3typ26z->bits = l3int22z;
                } else { /* 12633 */
                    l3typ26z->size = span * l3typ26z->base->size;
                    curVal.i = l3typ26z->base->size;
                    curVal.m = curVal.m * BitRange(7,47) + Bits(0);
                    if (l3typ26z->range->base != IntegerType)
                        curVal.m = curVal.m + Bits(1, 3);
                    l3typ26z->perWord = KMUL+ I8 + getFCSToffset();
                } /* 12652 */
                l3typ26z->pck = isPacked;
                isPacked = false;
                cond = (curType == l3typ26z);
                l3typ26z = static_cast<ArrayT*>(tempType);
            } while (!cond);
        } else /* 12663 */
        if (SY == FILESY) {
            inSymbol();
            checkSymAndRead(OFSY);
            parseTypeRef(nestedType, skipTarget);
            if (isFileType(nestedType))
                error(errTypeMustNotBeFile);
            if (isPacked) {
                l3int22z = nestedType->bits;
                if (24 < l3int22z)
                    isPacked = false;
            }
            if (not isPacked)
                l3int22z = 0;
            curType = new FileT(nestedType, l3int22z);
        } else /* 12721 */
        if (SY == SETSY) {
            inSymbol();
            checkSymAndRead(OFSY);
            parseTypeRef(nestedType, skipTarget);
            if (nestedType->k == kindRange and
                nestedType->cast<RangeT>().left >= 0 and
               47 >= nestedType->cast<RangeT>().right)
                numBits = nestedType->cast<RangeT>().right + 1;
            else if (nestedType->k == kindScalar and
                     48 >= nestedType->cast<ScalarT>().numen)
                numBits = nestedType->cast<ScalarT>().numen;
            else {
                numBits = 48;
                error(63); /* errBadBaseTypeForSet */
            }
            curType = new SetT(numBits, nestedType);
        } else {
L12760:     parseLiteral(tempType, leftBound, true);
            if (tempType != NULL) {
                inSymbol();
                if (SY != COLON) {
                    requiredSymErr(COLON);
                } else {
                    inSymbol();
                }
                parseLiteral(curType, rightBound, true);
                if (curType == tempType and
                    curType->k == kindScalar) {
                    defineRange(curType, leftBound.i, rightBound.i);
                    inSymbol();
                    goto L13020;
                }
            }
            error(64); /* errIncorrectRangeDefinition */
            curType = BooleanType;
        }
    }
L13020:
    if (errors)
        skip(skipToSet + Bits(RPAREN, RBRACK, SEMICOLON, OFSY));
    newType = curType;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1ca8, %rsp           # imm = 0x1CA8
movq %rsi, %rbp
movq %rdi, %r14
movq %rdx, (%rdi)
leaq 0x10(%rdi), %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x30(%rdi)
movups %xmm0, 0x40(%rdi)
movups %xmm0, 0x50(%rdi)
movups %xmm0, 0x60(%rdi)
movups %xmm0, 0x70(%rdi)
movups %xmm0, 0x80(%rdi)
movups %xmm0, 0x90(%rdi)
movq 0xb0018(%rip), %rax     # 0xbd388
movq -0x8(%rax), %r12
leaq 0x10(%rsp), %rsi
movq %rdi, (%rsi)
leaq 0xb007d(%rip), %rdi     # 0xbd400
callq 0x1b48c
movb $0x0, 0x8(%r14)
leaq 0x1298(%rsp), %r15
movl 0x57491(%rip), %eax     # 0x6482c
cmpl $0x1b, %eax
jne 0xd3af
movb $0x1, 0x8(%r14)
movq %r15, %rdi
callq 0x6e26
jmp 0xd395
cmpl $0x19, %eax
movq %rbp, 0x8(%rsp)
jle 0xd450
addl $-0x1a, %eax
cmpl $0x4, %eax
ja 0xd9bf
leaq 0xf258(%rip), %rcx      # 0x1c628
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x888(%rsp), %rdi
callq 0x6e26
movl $0x2a, %edi
callq 0x82d3
leaq 0xe0(%r14), %rsi
movq (%r14), %rdx
leaq 0x18(%rsp), %rdi
callq 0xd322
addq $-0x8, 0xafffc(%rip)    # 0xbd408
movq 0xe0(%r14), %rax
movl 0x10(%rax), %ecx
cmpl $0x1, %ecx
je 0xdd75
cmpl $0x2, %ecx
jne 0xdd88
cmpq $0x0, 0x28(%rax)
js 0xdd70
movq 0x30(%rax), %rdx
cmpq $0x2f, %rdx
jg 0xdd70
incq %rdx
movq %rdx, 0xb0(%r14)
jmp 0xdd9d
testl %eax, %eax
je 0xd9a5
cmpl $0x7, %eax
je 0xda14
cmpl $0x11, %eax
jne 0xd9bf
leaq 0x16e8(%rsp), %rdi
callq 0x6e26
cmpl $0x0, 0x573ae(%rip)     # 0x6482c
je 0xdd05
movl $0x3, %edi
callq 0x589e
movq 0x57543(%rip), %rax     # 0x649d8
jmp 0xddcb
leaq 0x9f8(%rsp), %rdi
callq 0x6e26
movl $0x2a, %edi
callq 0x82d3
leaq 0xe0(%r14), %rsi
movq (%r14), %rdx
leaq 0x120(%rsp), %rdi
callq 0xd322
addq $-0x8, 0xaff38(%rip)    # 0xbd408
movq 0xe0(%r14), %rax
movl 0x10(%rax), %ecx
cmpl $0x7, %ecx
je 0xd4ea
cmpl $0x6, %ecx
jne 0xd4f4
cmpb $0x1, 0x28(%rax)
jne 0xd4f4
movl $0x9, %edi
callq 0x589e
cmpb $0x1, 0x8(%r14)
jne 0xd518
movq 0xe0(%r14), %rax
movq 0x8(%rax), %rax
movq %rax, 0xb8(%r14)
cmpq $0x19, %rax
jl 0xd518
movb $0x0, 0x8(%r14)
cmpb $0x0, 0x8(%r14)
jne 0xd52a
movq $0x0, 0xb8(%r14)
movl $0x28, %edi
callq 0x3d03
movq 0xb8(%r14), %rcx
movq 0xe0(%r14), %rdx
movq $0x1e, (%rax)
movq $0x30, 0x8(%rax)
movl $0x7, 0x10(%rax)
movq %rdx, 0x18(%rax)
movq %rcx, 0x20(%rax)
jmp 0xddcb
leaq 0xfb8(%rsp), %rdi
callq 0x6e26
cmpl $0x8, 0x572b3(%rip)     # 0x6482c
jne 0xd588
leaq 0xe48(%rsp), %rdi
callq 0x6e26
movabsq $0xffffffffffdf, %rbx   # imm = 0xFFFFFFFFFFDF
movq $0x0, 0xe8(%r14)
leaq 0xe0(%r14), %r15
leaq 0xf0(%r14), %r13
leaq 0x330(%rsp), %r12
movq (%r14), %rdx
andq %rbx, %rdx
orq $0x20, %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0xd322
addq $-0x8, 0xafe38(%rip)    # 0xbd408
movq 0xe0(%r14), %rax
movl 0x10(%rax), %ecx
movl %ecx, 0x57338(%rip)     # 0x64918
cmpl $0x2, %ecx
je 0xd640
cmpl $0x1, %ecx
jne 0xd609
cmpq 0x57407(%rip), %rax     # 0x649f8
je 0xd609
cmpl $0x1, %ecx
jne 0xdf31
movq 0x20(%rax), %rax
movq %rax, 0xc0(%r14)
jmp 0xd62c
movl $0x8, %edi
callq 0x589e
movq 0x573de(%rip), %rax     # 0x649f8
movq %rax, 0xe0(%r14)
movq $0xa, 0xc0(%r14)
movq 0xc0(%r14), %rdx
decq %rdx
movq %r15, %rdi
xorl %esi, %esi
callq 0x609a
movl $0x40, %edi
callq 0x3d03
movq %rax, %rbp
movq 0xe8(%r14), %rdi
callq 0x3d9a
movq %rax, (%rbp)
movq $0x30, 0x8(%rbp)
movl $0x5, 0x10(%rbp)
movq $0x0, 0x18(%rbp)
movq %rbp, 0xd8(%r14)
movq 0xe0(%r14), %rax
movq %rax, 0x20(%rbp)
movq 0xe8(%r14), %rax
movq %r13, %rcx
testq %rax, %rax
je 0xd6a6
cmpl $0x5, 0x10(%rax)
jne 0xdefb
addq $0x18, %rax
movq %rax, %rcx
movq %rbp, (%rcx)
movq %rbp, 0xe8(%r14)
movl 0x57176(%rip), %eax     # 0x6482c
cmpl $0xe, %eax
jne 0xd743
leaq 0xcd8(%rsp), %rdi
callq 0x6e26
jmp 0xd5b3
movl $0x30, %edi
callq 0x3d03
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x6, 0x10(%rax)
movq %rax, 0xf0(%r14)
movq %rax, 0x572da(%rip)     # 0x649d0
movq $0x0, (%rax)
movq $0x30, 0x8(%rax)
movups %xmm0, 0x18(%rax)
movb $0x0, 0x28(%rax)
movb 0x8(%r14), %cl
movb %cl, 0x29(%rax)
movups %xmm0, (%rbx)
leaq 0x1128(%rsp), %rdi
movq %rax, %rsi
movl $0x1, %edx
callq 0xcc08
addq $-0x8, 0xafcec(%rip)    # 0xbd420
movl $0x27, %edi
callq 0x82d3
jmp 0xde9a
cmpl $0xd, %eax
jne 0xd755
leaq 0xb68(%rsp), %rdi
callq 0x6e26
movl $0x2a, %edi
callq 0x82d3
movq (%r14), %rdx
leaq 0x228(%rsp), %rdi
movq %r15, %rsi
callq 0xd322
addq $-0x8, 0xafc8e(%rip)    # 0xbd408
movq 0xd8(%r14), %rcx
movq 0xe0(%r14), %rax
movq %rax, 0x18(%rcx)
movl 0x10(%rax), %ecx
cmpl $0x7, %ecx
je 0xd79f
cmpl $0x6, %ecx
jne 0xd7a9
cmpb $0x1, 0x28(%rax)
jne 0xd7a9
movl $0x9, %edi
callq 0x589e
movabsq $-0x5555555555555555, %rbp # imm = 0xAAAAAAAAAAAAAAAB
movabsq $0x2aaaaaaaaaaaaaa0, %rbx # imm = 0x2AAAAAAAAAAAAAA0
movabsq $0x555555555555554, %r12 # imm = 0x555555555555554
leaq 0x57272(%rip), %r15     # 0x64a40
movabsq $0x1ffffffffff, %r13    # imm = 0x1FFFFFFFFFF
movq 0xd8(%r14), %rax
movq 0x20(%rax), %rcx
movq 0x30(%rcx), %rdx
subq 0x28(%rcx), %rdx
incq %rdx
movq %rdx, 0xc0(%r14)
movq (%rax), %rdi
callq 0x3d6b
movq %rax, 0xe8(%r14)
movq 0xd8(%r14), %rsi
movq 0x18(%rsi), %rax
movq 0x8(%rax), %rcx
movq %rcx, 0xb8(%r14)
movq $0x30, 0x8(%rsi)
cmpb $0x1, 0x8(%r14)
jne 0xd858
movl $0x30, %eax
xorl %edx, %edx
idivq %rcx
movq %rax, 0xb8(%r14)
cmpq $0x9, %rax
je 0xd8d9
cmpq $0x5, %rax
jne 0xd8e5
movl $0x4, %eax
jmp 0xd8de
movq (%rax), %rcx
imulq 0xc0(%r14), %rcx
movq %rcx, (%rsi)
movq (%rax), %rsi
movq %r15, %rdi
callq 0x3bf2
movq 0x571c8(%rip), %rax     # 0x64a40
andq %r13, %rax
movq %rax, %rcx
movabsq $0x800000000000, %rdx   # imm = 0x800000000000
orq %rdx, %rcx
movq %rcx, 0x571ae(%rip)     # 0x64a40
movq 0xd8(%r14), %rcx
movq 0x20(%rcx), %rcx
movq 0x18(%rcx), %rcx
cmpq 0x57150(%rip), %rcx     # 0x649f8
je 0xd8be
movabsq $0xd00000000000, %rcx   # imm = 0xD00000000000
orq %rcx, %rax
movq %rax, 0x57182(%rip)     # 0x64a40
callq 0x5f9d
addq $0x80f000, %rax         # imm = 0x80F000
movq 0xd8(%r14), %rcx
movq %rax, 0x30(%rcx)
jmp 0xd96d
movl $0x8, %eax
movq %rax, 0xb8(%r14)
movq 0xb8(%r14), %rcx
movq %rcx, 0x30(%rsi)
movl $0x30, %eax
xorl %edx, %edx
idivq %rcx
movq %rax, %rcx
movq %rax, 0x38(%rsi)
imulq 0xc0(%r14), %rcx
movq %rcx, %rax
movabsq $0x2aaaaaaaaaaaaaab, %rdx # imm = 0x2AAAAAAAAAAAAAAB
imulq %rdx
movq %rcx, 0xb8(%r14)
movq %rcx, %rax
imulq %rbp, %rax
addq %rbx, %rax
rorq $0x4, %rax
cmpq %r12, %rax
jbe 0xd940
movq $0x1, 0xb0(%r14)
jmp 0xd94b
movq $0x0, 0xb0(%r14)
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x3, %rdx
addq %rax, %rdx
addq 0xb0(%r14), %rdx
movq %rdx, (%rsi)
cmpq $0x1, %rdx
jne 0xd96d
movq %rcx, 0x8(%rsi)
movb 0x8(%r14), %al
movq 0xd8(%r14), %rcx
movb %al, 0x28(%rcx)
movb $0x0, 0x8(%r14)
movq 0xe8(%r14), %rax
cmpq %rcx, 0xf0(%r14)
sete 0x9(%r14)
movq %rax, 0xd8(%r14)
jne 0xd7d8
jmp 0xde9a
movq 0x57004(%rip), %rax     # 0x649b0
testq %rax, %rax
je 0xdc97
cmpl $0x0, 0x20(%rax)
je 0xddd7
leaq 0xe8(%r14), %rdi
leaq 0xa0(%r14), %r15
movq %r15, %rsi
movl $0x1, %edx
callq 0x8027
cmpq $0x0, 0xe8(%r14)
je 0xdc81
leaq 0x718(%rsp), %rdi
callq 0x6e26
cmpl $0x12, 0x56e30(%rip)    # 0x6482c
jne 0xdc07
leaq 0x5a8(%rsp), %rdi
callq 0x6e26
jmp 0xdc21
xorl %ebx, %ebx
movq %rbx, 0xc0(%r14)
movq %rbx, 0x56f34(%rip)     # 0x64958
leaq 0x1b38(%rsp), %rdi
callq 0x6e26
movq %rbx, 0xd0(%r14)
movl $0x30, %edi
callq 0x3d03
movq %rax, %r15
movq $0x1, (%rax)
movq $0x30, 0x8(%rax)
movl $0x1, 0x10(%rax)
movq %rax, 0xf0(%r14)
cmpl $0x0, 0x56dc3(%rip)     # 0x6482c
jne 0xdb95
leaq 0x5c76a(%rip), %rbx     # 0x6a1e0
leaq 0x19c8(%rsp), %r12
leaq 0x1858(%rsp), %r13
cmpb $0x1, 0x56ef6(%rip)     # 0x64983
jne 0xda99
movl $0x2, %edi
callq 0x589e
movl $0x60, %edi
callq 0x3d03
movq 0x56fa6(%rip), %rcx     # 0x64a50
movq 0x56df7(%rip), %rdx     # 0x648a8
movq 0x56e10(%rip), %rsi     # 0x648c8
movq (%rbx,%rsi,8), %rsi
movq 0xc0(%r14), %rdi
movq 0xf0(%r14), %r8
movq %rcx, (%rax)
movq %rdx, 0x8(%rax)
movq %rsi, 0x10(%rax)
movq %r8, 0x18(%rax)
movl $0x1, 0x20(%rax)
movq $0x0, 0x28(%rax)
movq %rdi, 0x30(%rax)
movq %rax, 0xc8(%r14)
movq 0x56dce(%rip), %rcx     # 0x648c8
movq %rax, (%rbx,%rcx,8)
incq 0xc0(%r14)
movq 0xd0(%r14), %rax
testq %rax, %rax
je 0xdb28
cmpl $0x0, 0x20(%rax)
je 0xdf12
movq 0xc8(%r14), %rcx
movq %rcx, 0x28(%rax)
jmp 0xdb33
movq 0xc8(%r14), %rax
movq %rax, 0x18(%r15)
movq 0xc8(%r14), %rax
movq %rax, 0xd0(%r14)
movq %r12, %rdi
callq 0x6e26
movl 0x56cdd(%rip), %eax     # 0x6482c
cmpl $0xc, %eax
je 0xdb88
cmpl $0xe, %eax
jne 0xdb6e
movq $0x0, 0x56df4(%rip) # 0x64958
movq %r13, %rdi
callq 0x6e26
jmp 0xdb88
movq 0x56d0b(%rip), %rax     # 0x64880
cmpq 0x56d0c(%rip), %rax     # 0x64888
je 0xdb88
movl $0x64, %edi
callq 0x589e
cmpl $0x0, 0x56c9d(%rip)     # 0x6482c
je 0xda86
movl $0xc, %edi
callq 0x82d3
cmpq $0x0, 0xd0(%r14)
je 0xdd53
movq $0x1, (%r15)
movq 0xc0(%r14), %rax
leaq -0x1(%rax), %rcx
movabsq $0xffffffffffdf, %rdx   # imm = 0xFFFFFFFFFFDF
orq $0x20, %rdx
testq %rdx, %rcx
je 0xdddd
movl $0x30, %edx
btq $0x2f, %rcx
jb 0xdde2
movabsq $0x800000000000, %rdx   # imm = 0x800000000000
decq %rdx
andq %rdx, %rcx
bsrq %rcx, %rdx
xorq $-0x40, %rdx
addq $0x41, %rdx
jmp 0xdde2
movq 0x56c72(%rip), %rax     # 0x64880
cmpq 0x56c73(%rip), %rax     # 0x64888
je 0xdc21
movl $0x6a, %edi
callq 0x589e
leaq 0xf0(%r14), %r12
leaq 0xa8(%r14), %r13
movq %r12, %rdi
movq %r13, %rsi
movl $0x1, %edx
callq 0x8027
movq 0xf0(%r14), %rax
cmpq 0xe8(%r14), %rax
jne 0xdc81
cmpl $0x1, 0x10(%rax)
jne 0xdc81
movq (%r15), %rsi
shlq $0x17, %rsi
sarq $0x17, %rsi
movq (%r13), %rdx
shlq $0x17, %rdx
sarq $0x17, %rdx
movq %r12, %rdi
callq 0x609a
leaq 0x438(%rsp), %rdi
jmp 0xde95
movl $0x40, %edi
callq 0x589e
movq 0x56d56(%rip), %rax     # 0x649e8
jmp 0xddcb
cmpb $0x1, 0x3a(%r12)
jne 0xddf7
movq 0xaf6de(%rip), %rax     # 0xbd388
movq -0x8(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0xde7e
movq 0x56d90(%rip), %rcx     # 0x64a50
movq 0x10(%rax), %rax
movq %rax, 0xc8(%r14)
testq %rax, %rax
je 0xde7e
cmpq %rcx, (%rax)
jne 0xdcc0
movq 0xc8(%r14), %rax
movq 0x18(%rax), %rax
movq %rax, 0xf0(%r14)
cmpl $0x3, 0x10(%rax)
jne 0xdf50
movq 0x56cec(%rip), %rcx     # 0x649e8
movq %rcx, 0x18(%rax)
jmp 0xde8d
movq 0x56ca4(%rip), %rax     # 0x649b0
testq %rax, %rax
je 0xde11
cmpl $0x0, 0x20(%rax)
jne 0xde5c
movl $0x20, %edi
callq 0x3d03
movq 0x56c80(%rip), %rcx     # 0x649b0
movq 0x18(%rcx), %rcx
movq $0x1, (%rax)
movq $0xf, 0x8(%rax)
movl $0x3, 0x10(%rax)
movq %rcx, 0x18(%rax)
jmp 0xde6d
movq 0x56c8e(%rip), %rax     # 0x649e8
movq %rax, 0xf0(%r14)
movl $0x3, %edi
callq 0x589e
jmp 0xde9a
cmpl $0x1, %ecx
jne 0xdd88
movq 0x20(%rax), %rax
cmpq $0x30, %rax
jg 0xdd88
movq %rax, 0xb0(%r14)
jmp 0xdd9d
movq $0x30, 0xb0(%r14)
movl $0x3f, %edi
callq 0x589e
movl $0x20, %edi
callq 0x3d03
movq 0xb0(%r14), %rcx
movq 0xe0(%r14), %rdx
movq $0x1, (%rax)
movq %rcx, 0x8(%rax)
movl $0x4, 0x10(%rax)
movq %rdx, 0x18(%rax)
movq %rax, 0xf0(%r14)
jmp 0xde9a
movq 0x18(%rax), %rax
jmp 0xde08
movl $0x31, %edx
movq %rdx, 0x8(%r15)
movq %rax, 0x20(%r15)
movq $0x0, 0x28(%r15)
jmp 0xde9a
movl $0x4, %edi
callq 0x589e
movq 0x56bf0(%rip), %rax     # 0x649f8
movq %rax, 0xf0(%r14)
jmp 0xde8d
cmpb $0x1, 0x3a(%r12)
jne 0xde5c
movq 0xaf568(%rip), %rax     # 0xbd388
movq -0x8(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0xdee7
movq 0x56c1a(%rip), %rcx     # 0x64a50
movq 0x10(%rax), %rax
movq %rax, 0xc8(%r14)
testq %rax, %rax
je 0xdee7
cmpq %rcx, (%rax)
jne 0xde36
movq 0xc8(%r14), %rax
movq 0x18(%rax), %rax
jmp 0xde6d
movl $0x4, %edi
callq 0x589e
movq 0x56b6b(%rip), %rax     # 0x649d8
movq %rax, 0xf0(%r14)
leaq 0x1578(%rsp), %rdi
jmp 0xde95
movq 0x56b63(%rip), %rsi     # 0x649e8
movq %r14, %rdi
callq 0x175f0
leaq 0x1408(%rsp), %rdi
callq 0x6e26
cmpb $0x1, 0x56ae5(%rip)     # 0x64986
jne 0xdec6
movabsq $0xfff2ffffffdf, %rax   # imm = 0xFFF2FFFFFFDF
andq 0x56944(%rip), %rax     # 0x647f8
movabsq $0xd00000020, %rdi      # imm = 0xD00000020
orq %rax, %rdi
callq 0x7f7c
movq 0xf0(%r14), %rax
movq 0x8(%rsp), %rcx
movq %rax, (%rcx)
addq $0x1ca8, %rsp           # imm = 0x1CA8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x56b0a(%rip), %rsi     # 0x649f8
movq %r14, %rdi
callq 0x175f0
jmp 0xde74
leaq 0xf946(%rip), %rdi      # 0x1d848
leaq 0xf6ab(%rip), %rsi      # 0x1d5b4
leaq 0xfa12(%rip), %rcx      # 0x1d922
jmp 0xdf46
leaq 0xf6c1(%rip), %rdi      # 0x1d5da
leaq 0xf694(%rip), %rsi      # 0x1d5b4
leaq 0xf7c6(%rip), %rcx      # 0x1d6ed
movl $0x2d5, %edx            # imm = 0x2D5
callq 0x3170
leaq 0xf910(%rip), %rdi      # 0x1d848
leaq 0xf675(%rip), %rsi      # 0x1d5b4
leaq 0xfa37(%rip), %rcx      # 0x1d97d
movl $0x1f7, %edx            # imm = 0x1F7
callq 0x3170
leaq 0xf8f1(%rip), %rdi      # 0x1d848
leaq 0xf656(%rip), %rsi      # 0x1d5b4
leaq 0xfa37(%rip), %rcx      # 0x1d99c
jmp 0xdf46