// File: 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
movq %rsp, %rbp
subq $0x1dd0, %rsp           # imm = 0x1DD0
movq %rdx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x1d48(%rbp)
movq -0x8(%rbp), %rax
movq %rax, (%rdi)
addq $0x10, %rdi
callq 0x21aa0
leaq 0xc5bb7(%rip), %rdi     # 0xd8a30
callq 0x1e890
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq (%rcx), %rcx
addq $0x3a, %rcx
movq %rcx, -0x20(%rbp)
movq %rax, -0x28(%rbp)
leaq 0xc5c12(%rip), %rdi     # 0xd8ab0
leaq -0x28(%rbp), %rsi
callq 0x21d90
movq -0x1d48(%rbp), %rax
movb $0x0, 0x8(%rax)
cmpl $0x7, 0x6d023(%rip)     # 0x7fedc
jne 0x131a6
movq -0x1d48(%rbp), %rax
movq $0x0, 0xc0(%rax)
movq $0x0, 0x6d12c(%rip) # 0x80008
leaq -0x198(%rbp), %rdi
callq 0x9790
movq -0x1d48(%rbp), %rax
movq $0x0, 0xd0(%rax)
movl $0x30, %edi
movq %rdi, -0x1d58(%rbp)
callq 0x1e2e0
movq -0x1d58(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1d50(%rbp)
callq 0x21dc0
jmp 0x12f26
movq -0x1d48(%rbp), %rax
movq -0x1d50(%rbp), %rcx
movq %rcx, 0xf0(%rax)
movq 0xf0(%rax), %rdi
callq 0x1ea60
movq %rax, -0x1b0(%rbp)
cmpl $0x0, 0x6cf87(%rip)     # 0x7fedc
jne 0x1310a
testb $0x1, 0x6d0d1(%rip)     # 0x80033
je 0x12f93
movl $0x2, %edi
callq 0x7b40
jmp 0x12f93
movq -0x1d50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
movl $0x60, %edi
callq 0x1e2e0
movq %rax, %rdi
movq -0x1d48(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x1d60(%rbp)
movq 0x6d148(%rip), %rsi     # 0x80100
movq 0x6cf99(%rip), %rdx     # 0x7ff58
movq 0x6cfb2(%rip), %r8      # 0x7ff78
leaq 0x728c3(%rip), %rcx     # 0x85890
movq (%rcx,%r8,8), %rcx
movq 0xc0(%rax), %r9
movq 0xf0(%rax), %r8
movq %rsp, %rax
movq %r9, 0x8(%rax)
movq $0x0, (%rax)
movl $0x1, %r9d
callq 0x21df0
jmp 0x12ffa
movq -0x1d48(%rbp), %rax
movq -0x1d60(%rbp), %rcx
movq %rcx, 0xc8(%rax)
movq 0xc8(%rax), %rsi
movq 0x6cf5b(%rip), %rdx     # 0x7ff78
leaq 0x7286c(%rip), %rcx     # 0x85890
movq %rsi, (%rcx,%rdx,8)
movq 0xc0(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0xc0(%rax)
cmpq $0x0, 0xd0(%rax)
jne 0x13082
movq -0x1d48(%rbp), %rax
movq 0xc8(%rax), %rcx
movq -0x1b0(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0x130ad
movq -0x1d60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
movq -0x1d48(%rbp), %rax
movq 0xc8(%rax), %rcx
movq %rcx, -0x1d68(%rbp)
movq 0xd0(%rax), %rdi
callq 0x1e970
movq -0x1d68(%rbp), %rcx
movq %rcx, (%rax)
movq -0x1d48(%rbp), %rax
movq 0xc8(%rax), %rcx
movq %rcx, 0xd0(%rax)
leaq -0x320(%rbp), %rdi
callq 0x9790
cmpl $0xe, 0x6ce07(%rip)     # 0x7fedc
jne 0x130f0
movq $0x0, 0x6cf26(%rip) # 0x80008
leaq -0x490(%rbp), %rdi
callq 0x9790
jmp 0x13105
cmpl $0xc, 0x6cde5(%rip)     # 0x7fedc
je 0x13103
movl $0xc, %edi
callq 0x90f0
jmp 0x13105
jmp 0x12f4e
movl $0xc, %edi
callq 0xb110
movq -0x1d48(%rbp), %rax
cmpq $0x0, 0xd0(%rax)
jne 0x13146
movq -0x1d48(%rbp), %rax
movq 0x6cf65(%rip), %rcx     # 0x80098
movq %rcx, 0xf0(%rax)
movl $0x3, %edi
callq 0x7b40
jmp 0x131a1
movq -0x1d48(%rbp), %rax
movq -0x1b0(%rbp), %rcx
movq $0x1, (%rcx)
movq 0xc0(%rax), %rdi
subq $0x1, %rdi
callq 0x8740
movq %rax, %rdx
movq -0x1d48(%rbp), %rax
movq -0x1b0(%rbp), %rcx
movq %rdx, 0x8(%rcx)
movq 0xc0(%rax), %rcx
movq -0x1b0(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x1b0(%rbp), %rax
movq $0x0, 0x28(%rax)
jmp 0x13fe5
cmpl $0x11, 0x6cd2f(%rip)    # 0x7fedc
jne 0x132f3
leaq -0x600(%rbp), %rdi
callq 0x9790
cmpl $0x0, 0x6cd16(%rip)     # 0x7fedc
je 0x131ec
movl $0x3, %edi
callq 0x7b40
movq -0x1d48(%rbp), %rax
movq 0x6cea8(%rip), %rcx     # 0x80088
movq %rcx, 0xf0(%rax)
jmp 0x132ee
cmpq $0x0, 0x6ce6c(%rip)     # 0x80060
jne 0x1326b
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x13248
movq -0x1d48(%rbp), %rdi
addq $0xc8, %rdi
callq 0xb080
testb $0x1, %al
jne 0x13218
jmp 0x13233
movq -0x1d48(%rbp), %rax
movq 0xc8(%rax), %rcx
movq 0x18(%rcx), %rcx
movq %rcx, 0xf0(%rax)
jmp 0x13246
movq -0x1d48(%rbp), %rdi
movq 0x6ce67(%rip), %rsi     # 0x800a8
callq 0x21e50
jmp 0x13269
jmp 0x1324a
movl $0x4, %edi
callq 0x7b40
movq -0x1d48(%rbp), %rax
movq 0x6ce26(%rip), %rcx     # 0x80088
movq %rcx, 0xf0(%rax)
jmp 0x132e2
movq 0x6cdee(%rip), %rax     # 0x80060
cmpl $0x0, 0x20(%rax)
je 0x1327a
jmp 0x1324a
movl $0x20, %edi
callq 0x1e2e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1d70(%rbp)
movq 0x6cdc8(%rip), %rax     # 0x80060
movq 0x18(%rax), %rdx
movl $0xf, %esi
callq 0x21f50
jmp 0x132a8
movq -0x1d48(%rbp), %rax
movq -0x1d70(%rbp), %rcx
movq %rcx, 0xf0(%rax)
jmp 0x132e2
movq -0x1d70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
leaq -0x770(%rbp), %rdi
callq 0x9790
jmp 0x13fe3
cmpl $0x0, 0x6cbe2(%rip)     # 0x7fedc
jne 0x133e5
cmpq $0x0, 0x6cd58(%rip)     # 0x80060
je 0x1333c
movq 0x6cd4f(%rip), %rax     # 0x80060
cmpl $0x0, 0x20(%rax)
jne 0x13332
movq -0x1d48(%rbp), %rax
movq 0x6cd3b(%rip), %rcx     # 0x80060
movq 0x18(%rcx), %rcx
movq %rcx, 0xf0(%rax)
jmp 0x13337
jmp 0x13ea6
jmp 0x133d4
movq -0x20(%rbp), %rax
testb $0x1, (%rax)
je 0x133b3
movq -0x1d48(%rbp), %rdi
addq $0xc8, %rdi
callq 0xb080
testb $0x1, %al
jne 0x1335e
jmp 0x1339e
movq -0x1d48(%rbp), %rax
movq 0xc8(%rax), %rcx
movq 0x18(%rcx), %rcx
movq %rcx, 0xf0(%rax)
movq 0x6cd1a(%rip), %rcx     # 0x80098
movq %rcx, -0x1d78(%rbp)
movq 0xf0(%rax), %rdi
callq 0x1eab0
movq -0x1d78(%rbp), %rcx
movq %rcx, 0x18(%rax)
jmp 0x133b1
movq -0x1d48(%rbp), %rdi
movq 0x6ccec(%rip), %rsi     # 0x80098
callq 0x21e50
jmp 0x133d2
movl $0x4, %edi
callq 0x7b40
movq -0x1d48(%rbp), %rax
movq 0x6ccdd(%rip), %rcx     # 0x800a8
movq %rcx, 0xf0(%rax)
jmp 0x133d4
leaq -0x8e0(%rbp), %rdi
callq 0x9790
jmp 0x13fe1
cmpl $0x1b, 0x6caf0(%rip)    # 0x7fedc
jne 0x1340a
movq -0x1d48(%rbp), %rax
movb $0x1, 0x8(%rax)
leaq -0xa50(%rbp), %rdi
callq 0x9790
jmp 0x12eb2
cmpl $0x1d, 0x6cacb(%rip)    # 0x7fedc
jne 0x13531
movl $0x30, %edi
callq 0x1e2e0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1d80(%rbp)
callq 0x21fa0
jmp 0x13435
movq -0x1d48(%rbp), %rax
movq -0x1d80(%rbp), %rcx
movq %rcx, 0xf0(%rax)
movq 0xf0(%rax), %rdi
callq 0x1e840
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq %rcx, -0xa58(%rbp)
movq 0xf0(%rax), %rcx
movq %rcx, 0x6cc0b(%rip)     # 0x80080
movq -0xa58(%rbp), %rcx
movq $0x0, (%rcx)
movq -0xa58(%rbp), %rcx
movq $0x30, 0x8(%rcx)
movq -0xa58(%rbp), %rcx
movq $0x0, 0x18(%rcx)
movq -0xa58(%rbp), %rcx
movq $0x0, 0x20(%rcx)
movq -0xa58(%rbp), %rcx
movb $0x0, 0x28(%rcx)
movb 0x8(%rax), %dl
movq -0xa58(%rbp), %rcx
andb $0x1, %dl
movb %dl, 0x29(%rcx)
movq $0x0, 0x10(%rax)
movq $0x0, 0x18(%rax)
movq 0xf0(%rax), %rsi
leaq -0xbc8(%rbp), %rdi
movl $0x1, %edx
callq 0x12480
leaq -0xbc8(%rbp), %rdi
callq 0x21d70
movl $0x27, %edi
callq 0xb110
jmp 0x13fdf
movq -0x1d80(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
cmpl $0x1c, 0x6c9a4(%rip)    # 0x7fedc
jne 0x13b8d
leaq -0xd38(%rbp), %rdi
callq 0x9790
cmpl $0x8, 0x6c98b(%rip)     # 0x7fedc
jne 0x1355f
leaq -0xea8(%rbp), %rdi
callq 0x9790
movq -0x1d48(%rbp), %rax
movq $0x0, 0xe8(%rax)
movq -0x1d48(%rbp), %rax
addq $0xe0, %rax
movq %rax, -0x1d88(%rbp)
movl $0x2a, %edi
callq 0x48e0
movq -0x1d48(%rbp), %rdi
movq %rax, -0xfc0(%rbp)
movq -0xfc0(%rbp), %rsi
callq 0x1db20
movq -0x1d88(%rbp), %rsi
movq %rax, -0xfb8(%rbp)
movq -0xfb8(%rbp), %rdx
leaq -0xfb0(%rbp), %rdi
callq 0x12e40
leaq -0xfb0(%rbp), %rdi
callq 0x219f0
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, 0x6c9db(%rip)     # 0x7ffc8
cmpl $0x2, 0x6c9d4(%rip)     # 0x7ffc8
je 0x13693
cmpl $0x1, 0x6c9c7(%rip)     # 0x7ffc8
jne 0x13644
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rax
cmpq 0x6ca90(%rip), %rax     # 0x800a8
je 0x13644
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0x1ea60
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq 0x20(%rcx), %rcx
movq %rcx, 0xc0(%rax)
jmp 0x1366e
movl $0x8, %edi
callq 0x7b40
movq -0x1d48(%rbp), %rax
movq 0x6ca4c(%rip), %rcx     # 0x800a8
movq %rcx, 0xe0(%rax)
movq $0xa, 0xc0(%rax)
movq -0x1d48(%rbp), %rax
movq %rax, %rdi
addq $0xe0, %rdi
movq 0xc0(%rax), %rdx
subq $0x1, %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x87b0
movl $0x40, %edi
callq 0x1e2e0
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq %rcx, -0x1d90(%rbp)
movq %rcx, -0x1d98(%rbp)
movq 0xe8(%rax), %rdi
callq 0x4ea0
movq -0x1d90(%rbp), %rdi
movq %rax, %rsi
xorl %eax, %eax
movl %eax, %ecx
movl $0x30, %edx
callq 0x1e360
jmp 0x136db
movq -0x1d48(%rbp), %rax
movq -0x1d98(%rbp), %rcx
movq %rcx, 0xd8(%rax)
movq 0xe0(%rax), %rdx
movq 0xd8(%rax), %rcx
movq %rdx, 0x20(%rcx)
cmpq $0x0, 0xe8(%rax)
jne 0x13746
movq -0x1d48(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, 0xf0(%rax)
jmp 0x13772
movq -0x1d98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
movq -0x1d48(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, -0x1da0(%rbp)
movq 0xe8(%rax), %rdi
callq 0x1e210
movq -0x1da0(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x1d48(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rcx, 0xe8(%rax)
cmpl $0xe, 0x6c74e(%rip)     # 0x7fedc
jne 0x137a1
leaq -0x1130(%rbp), %rdi
callq 0x9790
jmp 0x13571
cmpl $0xd, 0x6c734(%rip)     # 0x7fedc
jne 0x137b6
leaq -0x12a0(%rbp), %rdi
callq 0x9790
movl $0x2a, %edi
callq 0xb110
movq -0x1d48(%rbp), %rax
movq %rax, %rsi
addq $0xe0, %rsi
movq (%rax), %rax
movq %rax, -0x13b0(%rbp)
movq -0x13b0(%rbp), %rdx
leaq -0x13a8(%rbp), %rdi
callq 0x12e40
leaq -0x13a8(%rbp), %rdi
callq 0x219f0
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdx
movq 0xd8(%rax), %rcx
movq %rdx, 0x18(%rcx)
movq 0xe0(%rax), %rdi
callq 0xb030
testb $0x1, %al
jne 0x13825
jmp 0x1382f
movl $0x9, %edi
callq 0x7b40
jmp 0x13831
movq -0x1d48(%rbp), %rax
movq 0xd8(%rax), %rcx
movq 0x20(%rcx), %rcx
movq 0x30(%rcx), %rcx
movq 0xd8(%rax), %rdx
movq 0x20(%rdx), %rdx
subq 0x28(%rdx), %rcx
addq $0x1, %rcx
movq %rcx, 0xc0(%rax)
movq 0xd8(%rax), %rax
movq (%rax), %rdi
callq 0x4e10
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq %rcx, 0xe8(%rax)
movq 0xd8(%rax), %rcx
movq 0x18(%rcx), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0xb8(%rax)
movq 0xd8(%rax), %rcx
movq $0x30, 0x8(%rcx)
testb $0x1, 0x8(%rax)
je 0x13a0a
movq -0x1d48(%rbp), %rcx
movl $0x30, %eax
cqto
idivq 0xb8(%rcx)
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq %rcx, 0xb8(%rax)
cmpq $0x9, 0xb8(%rax)
jne 0x138f4
movq -0x1d48(%rbp), %rax
movq $0x8, 0xb8(%rax)
jmp 0x13919
movq -0x1d48(%rbp), %rax
cmpq $0x5, 0xb8(%rax)
jne 0x13917
movq -0x1d48(%rbp), %rax
movq $0x4, 0xb8(%rax)
jmp 0x13919
movq -0x1d48(%rbp), %rcx
movq 0xb8(%rcx), %rdx
movq 0xd8(%rcx), %rax
movq %rdx, 0x30(%rax)
movl $0x30, %eax
cqto
idivq 0xb8(%rcx)
movq %rax, %rdx
movq -0x1d48(%rbp), %rax
movq 0xd8(%rax), %rcx
movq %rdx, 0x38(%rcx)
movq 0xc0(%rax), %rcx
movq 0xd8(%rax), %rdx
imulq 0x38(%rdx), %rcx
movq %rcx, 0xb8(%rax)
movq 0xb8(%rax), %rax
movl $0x30, %ecx
cqto
idivq %rcx
cmpq $0x0, %rdx
jne 0x1399a
movq -0x1d48(%rbp), %rax
movq $0x0, 0xb0(%rax)
jmp 0x139ac
movq -0x1d48(%rbp), %rax
movq $0x1, 0xb0(%rax)
movq -0x1d48(%rbp), %rax
movq 0xb8(%rax), %rax
movl $0x30, %ecx
cqto
idivq %rcx
movq %rax, %rdx
movq -0x1d48(%rbp), %rax
addq 0xb0(%rax), %rdx
movq 0xd8(%rax), %rcx
movq %rdx, (%rcx)
movq 0xd8(%rax), %rax
cmpq $0x1, (%rax)
jne 0x13a05
movq -0x1d48(%rbp), %rax
movq 0xb8(%rax), %rcx
movq 0xd8(%rax), %rax
movq %rcx, 0x8(%rax)
jmp 0x13b34
movq -0x1d48(%rbp), %rax
movq 0xc0(%rax), %rdx
movq 0xd8(%rax), %rcx
movq 0x18(%rcx), %rcx
imulq (%rcx), %rdx
movq 0xd8(%rax), %rcx
movq %rdx, (%rcx)
movq 0xd8(%rax), %rax
movq 0x18(%rax), %rax
movq (%rax), %rsi
leaq 0x6c6aa(%rip), %rdi     # 0x800f0
callq 0x4ad0
movl $0x7, %edi
movl $0x2f, %esi
callq 0x4a60
movq %rax, -0x13c8(%rbp)
movq -0x13c8(%rbp), %rsi
leaq 0x6c681(%rip), %rdi     # 0x800f0
callq 0x1e580
movq %rax, -0x13c0(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x48e0
movq %rax, -0x13d0(%rbp)
movq -0x13d0(%rbp), %rsi
leaq -0x13c0(%rbp), %rdi
callq 0x1db20
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq %rcx, -0x13b8(%rbp)
movq -0x13b8(%rbp), %rcx
movq %rcx, 0x6c633(%rip)     # 0x800f0
movq 0xd8(%rax), %rax
movq 0x20(%rax), %rax
movq 0x18(%rax), %rax
cmpq 0x6c5d5(%rip), %rax     # 0x800a8
je 0x13b13
movl $0x1, %edi
movl $0x3, %esi
callq 0x4940
movq %rax, -0x13e0(%rbp)
movq -0x13e0(%rbp), %rsi
leaq 0x6c5f7(%rip), %rdi     # 0x800f0
callq 0x1db20
movq %rax, -0x13d8(%rbp)
movq -0x13d8(%rbp), %rax
movq %rax, 0x6c5dd(%rip)     # 0x800f0
callq 0x8580
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
addq $0x80f000, %rcx         # imm = 0x80F000
movq 0xd8(%rax), %rax
movq %rcx, 0x30(%rax)
movq -0x1d48(%rbp), %rax
movb 0x8(%rax), %dl
movq 0xd8(%rax), %rcx
andb $0x1, %dl
movb %dl, 0x28(%rcx)
movb $0x0, 0x8(%rax)
movq 0xf0(%rax), %rcx
cmpq 0xd8(%rax), %rcx
sete %cl
andb $0x1, %cl
movb %cl, 0x9(%rax)
movq 0xe8(%rax), %rcx
movq %rcx, 0xd8(%rax)
movq -0x1d48(%rbp), %rax
movb 0x9(%rax), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x13831
jmp 0x13fdd
cmpl $0x1e, 0x6c348(%rip)    # 0x7fedc
jne 0x13cdd
leaq -0x1550(%rbp), %rdi
callq 0x9790
movl $0x2a, %edi
callq 0xb110
movq -0x1d48(%rbp), %rax
movq %rax, %rsi
addq $0xe0, %rsi
movq (%rax), %rax
movq %rax, -0x1660(%rbp)
movq -0x1660(%rbp), %rdx
leaq -0x1658(%rbp), %rdi
callq 0x12e40
leaq -0x1658(%rbp), %rdi
callq 0x219f0
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0xb030
testb $0x1, %al
jne 0x13c03
jmp 0x13c0d
movl $0x9, %edi
callq 0x7b40
movq -0x1d48(%rbp), %rax
testb $0x1, 0x8(%rax)
je 0x13c4e
movq -0x1d48(%rbp), %rcx
movq 0xe0(%rcx), %rax
movq 0x8(%rax), %rax
movq %rax, 0xb8(%rcx)
movl $0x18, %eax
cmpq 0xb8(%rcx), %rax
jge 0x13c4c
movq -0x1d48(%rbp), %rax
movb $0x0, 0x8(%rax)
jmp 0x13c4e
movq -0x1d48(%rbp), %rax
testb $0x1, 0x8(%rax)
jne 0x13c6d
movq -0x1d48(%rbp), %rax
movq $0x0, 0xb8(%rax)
movl $0x28, %edi
callq 0x1e2e0
movq %rax, %rdi
movq -0x1d48(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x1da8(%rbp)
movq 0xb8(%rax), %rdx
movq 0xe0(%rax), %rsi
callq 0x21fd0
jmp 0x13ca0
movq -0x1d48(%rbp), %rax
movq -0x1da8(%rbp), %rcx
movq %rcx, 0xf0(%rax)
jmp 0x13fdb
movq -0x1da8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
cmpl $0x1a, 0x6c1f8(%rip)    # 0x7fedc
jne 0x13ea4
leaq -0x17d0(%rbp), %rdi
callq 0x9790
movl $0x2a, %edi
callq 0xb110
movq -0x1d48(%rbp), %rax
movq %rax, %rsi
addq $0xe0, %rsi
movq (%rax), %rax
movq %rax, -0x18e0(%rbp)
movq -0x18e0(%rbp), %rdx
leaq -0x18d8(%rbp), %rdi
callq 0x12e40
leaq -0x18d8(%rbp), %rdi
callq 0x219f0
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rax
cmpl $0x2, 0x10(%rax)
jne 0x13db7
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0x1ea10
cmpq $0x0, 0x28(%rax)
jl 0x13db7
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0x1ea10
movq %rax, %rcx
movl $0x2f, %eax
cmpq 0x30(%rcx), %rax
jl 0x13db7
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0x1ea10
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq 0x30(%rcx), %rcx
addq $0x1, %rcx
movq %rcx, 0xb0(%rax)
jmp 0x13e34
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rax
cmpl $0x1, 0x10(%rax)
jne 0x13e16
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0x1ea60
movq %rax, %rcx
movl $0x30, %eax
cmpq 0x20(%rcx), %rax
jl 0x13e16
movq -0x1d48(%rbp), %rax
movq 0xe0(%rax), %rdi
callq 0x1ea60
movq %rax, %rcx
movq -0x1d48(%rbp), %rax
movq 0x20(%rcx), %rcx
movq %rcx, 0xb0(%rax)
jmp 0x13e32
movq -0x1d48(%rbp), %rax
movq $0x30, 0xb0(%rax)
movl $0x3f, %edi
callq 0x7b40
jmp 0x13e34
movl $0x20, %edi
callq 0x1e2e0
movq %rax, %rdi
movq -0x1d48(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x1db0(%rbp)
movq 0xb0(%rax), %rsi
movq 0xe0(%rax), %rdx
callq 0x22020
jmp 0x13e67
movq -0x1d48(%rbp), %rax
movq -0x1db0(%rbp), %rcx
movq %rcx, 0xf0(%rax)
jmp 0x13fd9
movq -0x1db0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
callq 0x1e330
jmp 0x14054
jmp 0x13ea6
movq -0x1d48(%rbp), %rsi
movq %rsi, %rdi
addq $0xe8, %rdi
addq $0xa0, %rsi
movl $0x1, %edx
callq 0xad20
movq -0x1d48(%rbp), %rax
cmpq $0x0, 0xe8(%rax)
je 0x13fba
leaq -0x1a50(%rbp), %rdi
callq 0x9790
cmpl $0x12, 0x6bfec(%rip)    # 0x7fedc
je 0x13efe
movl $0x12, %edi
callq 0x90f0
jmp 0x13f0a
leaq -0x1bc0(%rbp), %rdi
callq 0x9790
movq -0x1d48(%rbp), %rsi
movq %rsi, %rdi
addq $0xf0, %rdi
addq $0xa8, %rsi
movl $0x1, %edx
callq 0xad20
movq -0x1d48(%rbp), %rcx
movq 0xf0(%rcx), %rax
cmpq 0xe8(%rcx), %rax
jne 0x13fb8
movq -0x1d48(%rbp), %rax
movq 0xf0(%rax), %rax
cmpl $0x1, 0x10(%rax)
jne 0x13fb8
movq -0x1d48(%rbp), %rdi
movq %rdi, %rax
addq $0xf0, %rax
movq %rax, -0x1dc0(%rbp)
addq $0xa0, %rdi
callq 0x1dfb0
movq -0x1d48(%rbp), %rdi
movq %rax, -0x1db8(%rbp)
addq $0xa8, %rdi
callq 0x1dfb0
movq -0x1dc0(%rbp), %rdi
movq -0x1db8(%rbp), %rsi
movq %rax, %rdx
callq 0x87b0
leaq -0x1d30(%rbp), %rdi
callq 0x9790
jmp 0x13fe7
jmp 0x13fba
movl $0x40, %edi
callq 0x7b40
movq -0x1d48(%rbp), %rax
movq 0x6c0c6(%rip), %rcx     # 0x80098
movq %rcx, 0xf0(%rax)
jmp 0x13fdb
jmp 0x13fdd
jmp 0x13fdf
jmp 0x13fe1
jmp 0x13fe3
jmp 0x13fe5
jmp 0x13fe7
testb $0x1, 0x6c048(%rip)     # 0x80036
je 0x14036
movl $0xc, %edi
movl $0xd, %esi
movl $0xf, %edx
movl $0x2a, %ecx
callq 0x4a00
movq %rax, -0x1d40(%rbp)
movq -0x1d40(%rbp), %rsi
leaq 0x6be8a(%rip), %rdi     # 0x7fea8
callq 0x1db20
movq %rax, -0x1d38(%rbp)
movq -0x1d38(%rbp), %rdi
callq 0xac60
movq -0x1d48(%rbp), %rax
movq 0xf0(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
addq $0x1dd0, %rsp           # imm = 0x1DD0
popq %rbp
retq
movq -0x1a0(%rbp), %rdi
callq 0x44c0