// File: /workspace/github_cpp_makefile_star2_O2/besm6[P]pascal-re/pascompl.cc
// Function: standProc::standProc()
standProc() { /* standProc */
        IdentRecPtr &l3idr12z = Statement::super.back()->l3idr12z;
        TypesPtr &l2typ13z = programme::super.back()->l2typ13z;
        bool &l3bool5z = Statement::super.back()->l3bool5z;
        int64_t ii;

        curVal.i = l3idr12z->procno();
        procNo = curVal.i;
        l4bool10z = (SY == LPAREN);
        l4var14z.i = moduleOffset;
        if (not l4bool10z and
            (BitRange(0,5) + BitRange(8,10) + Bits(12) + BitRange(16,28)).has(procNo))
            error(45); /* errNoOpenParenForStandProc */
        if ((BitRange(0,9) - Bits(6,7)).has(procNo)) {
            inSymbol();
            if (hashTravPtr == NULL || hashTravPtr->cl < VARID) {
                error(46); /* errNoVarForStandProc */
                if (hashTravPtr == NULL)
                    throw 8888;
            }
            parseLval();
            arg1Type = curExpr->typ;
            curVarKind = arg1Type->k;
        }
        if (procNo <= 6)
            jumpTarget = getHelperProc(29 + procNo); /* P/PF */
        switch (procNo) {
        case 0: case 1: case 2: case 3: { /* put, get, rewrite, reset */
            if (curVarKind != kindFile)
                error(47); /* errNoVarOfFileType */
            if (procNo == 3 and SY == COMMA) {
                (void) formOperator(ADDRTOR12);
                expression();
                if (not typeCheck(IntegerType, curExpr->typ))
                    error(14); /* errExprIsNotInteger */
                (void) formOperator(LOAD);
                formAndAlign(getHelperProc(97)); /*"P/RE"*/
            } else {
                (void) formOperator(FILEACCESS);
            }
        } break;
        case 4: case 5: { /* new, dispose */
            if (curVarKind != kindPtr)
                error(13); /* errVarIsNotPointer */
            heapCallsCnt = heapCallsCnt + 1;
              l4exp9z = curExpr;
              if (procNo == 5)
                  (void) formOperator(ADDRTOR9);
              l2typ13z = arg1Type->cast<PtrT>().pbase;
              ii = l2typ13z->size;
              if (charClass == EQOP) {
                  expression();
                  if (not typeCheck(IntegerType, curExpr->typ))
                      error(14); /* errExprIsNotInteger */
                  (void) formOperator(LOAD);
                  form1Insn(KATI+14);
              } else {
                  if (l2typ13z->k == kindRecord) {
                      l4typ1z = l2typ13z->cast<RecordT>().cases;
                      /*loop*/ while (SY == COMMA and l4typ1z != NULL) {
                          inSymbol();
                          parseLiteral(l4typ2z, curVal, true);
                          if (l4typ2z == NULL)
                              break; // exit loop
                          else {
                              inSymbol();
                              /*loop2*/ while (l4typ1z != NULL) {
                                  l4typ2z = l4typ1z;
                                  while (l4typ2z != NULL) {
                                      if (l4typ2z->cast<CasesT>().sel == curVal) {
                                          ii = l4typ1z->size;
                                          goto exit_loop2;
                                      }
                                      l4typ2z = l4typ2z->cast<CasesT>().sameAs;
                                  };
                                  l4typ1z = l4typ1z->cast<CasesT>().next;
                              } exit_loop2:;
                          }
                      }
                  }
                  form1Insn(KVTM+I14+getValueOrAllocSymtab(ii));
              }
              formAndAlign(jumpTarget);
              if (procNo == 4) {
                  curExpr = l4exp9z;
                  (void) formOperator(STORE);
              }
        } break;
        case 6: { /* halt */
            formAndAlign(jumpTarget);
            return;
        } break;
        case 7: { /* stop */
            form1Insn(KE74);
            return;
        } break;
        case 8: case 9: { /* setup, rollup */
            if (curVarKind != kindPtr)
                error(13); /* errVarIsNotPointer */
            if (procNo == 8) {
                form1Insn(KXTA+HEAPPTR);
                (void) formOperator(STORE);
            } else {
                (void) formOperator(LOAD);
                form1Insn(KATX+HEAPPTR);
            }
        } break;
        case 10: { /* write */
            writeProc();
        } break;
        case 11: { /* writeln */
L17753:     if (SY == LPAREN) {
                writeProc();
            } else {
                formAndAlign(getHelperProc(54)); /*"P/WOLN"*/
                return;
            }
        } break;
        case 12: { /* read */
            readProc();
        } break;
        case 13: { /* readln */
            if (SY == LPAREN) {
                readProc();
            } else {
                formAndAlign(getHelperProc(55)); /*"P/RILN"*/
                return;
            }
        } break;
        case 14: { /* exit */
            l4bool10z = (SY == LPAREN);
            if (l4bool10z)
                inSymbol();
            if (SY == IDENT) {
                if (not structBranch(false))
                    error(1); /* errCommaOrSemicolonNeeded */
                inSymbol();
            } else {
                formJump(int53z);
            }
            if (not l4bool10z)
                return;
        } break;
        case 15: { /* debug */
            if (optSflags.m.has(DebugPrint)) {
                procNo = 11;
                goto L17753;
            }
            while (SY != RPAREN)
                inSymbol();
        } break;
        case 16: { /* besm */
            expression();
            (void) formOperator(LITINSN);
            formAndAlign(curVal.i);
        } break;
        case 17: { /* mapia */
            l4typ1z = IntegerType;
            l4typ2z = AlfaType;
L20041:
            expression();
            if (not typeCheck(curExpr->typ, l4typ1z))
                error(errNeedOtherTypesOfOperands);
            checkSymAndRead(COMMA);
            (void) formOperator(LOAD);
            if (procNo == 17) {
                form3Insn(ASN64-33, KAUX+BITS15, KAEX+ASCII0);
            } else {
                form3Insn(KAPX+BITS15, ASN64+33, KAEX+ZERO);
            };
            verifyType(l4typ2z);
            (void) formOperator(STORE);
        } break;
        case 18: { /* mapai */
            l4typ1z = AlfaType;
            l4typ2z = IntegerType;
            goto L20041;
        } break;
        case 19: case 20: { /* pck, unpck */
            inSymbol();
            verifyType(CharType);
            checkSymAndRead(COMMA);
            (void) formOperator(ADDRTOR12);
            verifyType(AlfaType);
            if (procNo == 20) {
                (void) formOperator(LOAD);
            }
            formAndAlign(getHelperProc(procNo - 6));
            if (procNo == 19)
                (void) formOperator(STORE);
        } break;
        case 21: { /* pack */
            inSymbol();
            checkArrayArg();
            checkSymAndRead(COMMA);
            verifyType(NULL);
            l4exp6z = curExpr;
            doPackUnpack();
        } break;
        case 22: { /* unpack */
            inSymbol();
            verifyType(NULL);
            l4exp6z = curExpr;
            checkSymAndRead(COMMA);
            checkArrayArg();
            doPackUnpack();
        } break;
        case 23: case 24: case 25: case 26: case 27: case 28: { /* MARS procedures */
            l3bool5z = 24 < procNo;
            do {
                expression();
                if (curExpr->typ->size != 1)
                    error(5); /*errSimpleTypeReq*/
                (void) formOperator(LOAD);
                if (l3bool5z) {
                    checkSymAndRead(COMMA);
                    verifyType(NULL);
                    l4exp9z = curExpr;
                    if (SY == COLON) {
                        expression();
                        (void) formOperator(MKPUSH);
                    } else {
                        form2Insn(KVTM + I14 + l4exp9z->typ->size,
                                  KITS + 14);
                    }
                    curExpr = l4exp9z;
                    (void) formOperator(gen12);
                } else {
                    form2Insn(InsnTemp[XTS], InsnTemp[XTS]);
                }
                form1Insn(KWTC + I14 + 077751 + procNo);
                formAndAlign(getHelperProc(80)); /*"PAIB"*/
            } while (SY == COMMA);
        } break;
        }; /* 20257 */
        if ((BitRange(0,3) + BitRange(10,13) + Bits(5,21,22)).has(procNo))
            arithMode = 1;
        checkSymAndRead(RPAREN);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1428, %rsp           # imm = 0x1428
movq %rdi, %rbx
movq 0xa72c1(%rip), %rax     # 0xbc428
movq -0x8(%rax), %r13
movq 0xa7206(%rip), %rax     # 0xbc378
movq -0x8(%rax), %r15
movq 0x50(%r13), %rdi
callq 0x1683e
movq (%rax), %rsi
leaq 0x4e8a7(%rip), %rdi     # 0x63a30
callq 0x381c
movq 0x4e89b(%rip), %rax     # 0x63a30
shlq $0x17, %rax
sarq $0x17, %rax
movq %rax, 0x68(%rbx)
cmpl $0x7, 0x4e674(%rip)     # 0x6381c
sete 0x48(%rbx)
movq 0x4e6d5(%rip), %rsi     # 0x63888
leaq 0x58(%rbx), %rdi
callq 0x381c
movq 0x68(%rbx), %r14
cmpb $0x0, 0x48(%rbx)
pushq $0x1
popq %rbp
jne 0x1522c
cmpq $0x2f, %r14
jg 0x152cf
pushq $0x10
popq %rdi
pushq $0x1c
popq %rsi
callq 0x37ec
movq %r15, (%rsp)
movq %rax, %r15
pushq $0x5
popq %rsi
xorl %edi, %edi
callq 0x37ec
movq %rax, %r12
pushq $0x8
popq %rdi
pushq $0xa
popq %rsi
callq 0x37ec
orq %r12, %rax
movb $0x2f, %cl
subb %r14b, %cl
movq %rbp, %rdx
shlq %cl, %rdx
orq %r15, %rax
movq (%rsp), %r15
btsq $0x23, %rax
andq %rax, %rdx
shlq $0x10, %rdx
je 0x15236
pushq $0x2d
popq %rdi
callq 0x4f2c
movq 0x68(%rbx), %r14
cmpq $0x2f, %r14
jg 0x152cf
pushq $0x9
popq %rsi
xorl %edi, %edi
callq 0x37ec
movb $0x2f, %cl
subb %r14b, %cl
shlq %cl, %rbp
andq %rax, %rbp
movabsq $0xfcffffffffff, %rax   # imm = 0xFCFFFFFFFFFF
testq %rax, %rbp
je 0x152b2
leaq 0x12b8(%rsp), %rdi
callq 0x6316
movq 0x4e732(%rip), %rax     # 0x639a0
testq %rax, %rax
je 0x15279
cmpl $0x2, 0x20(%rax)
jg 0x1528f
pushq $0x2e
popq %rdi
callq 0x4f2c
cmpq $0x0, 0x4e717(%rip)     # 0x639a0
je 0x15a5e
callq 0xcda9
movq 0x4e805(%rip), %rax     # 0x63aa0
movq (%rax), %rax
movq %rax, 0x4e763(%rip)     # 0x63a08
movl 0x10(%rax), %eax
movl %eax, 0x4e65a(%rip)     # 0x63908
movq 0x68(%rbx), %r14
cmpq $0x6, %r14
jg 0x152cf
addq $0x1d, %r14
movq %r14, %rdi
callq 0x52d1
movq %rax, 0x4e53d(%rip)     # 0x63808
movq 0x68(%rbx), %r14
cmpq $0x1c, %r14
ja 0x159ec
leaq 0x471c(%rip), %rax      # 0x199fc
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
cmpq $0x19, %r14
setae 0x20(%r13)
leaq 0x120(%rsp), %r14
pushq $0x2
popq %rbp
movl $0xe9ffe9, %r12d        # imm = 0xE9FFE9
pushq $0x50
popq %r15
callq 0xd048
movq 0x4e78d(%rip), %rax     # 0x63aa0
movq (%rax), %rax
cmpq $0x1, (%rax)
je 0x15324
pushq $0x5
popq %rdi
callq 0x4f2c
movq %r14, %rdi
movl %ebp, %esi
callq 0xaa9a
addq $-0x8, 0xa708a(%rip)    # 0xbc3c0
cmpb $0x1, 0x20(%r13)
jne 0x15382
pushq $0xe
popq %rdi
callq 0x7429
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1703c
movq 0x4e74a(%rip), %rax     # 0x63aa0
movq %rax, 0x40(%rbx)
cmpl $0x12, 0x4e4bb(%rip)    # 0x6381c
jne 0x15393
callq 0xd048
leaq 0xb8(%rsp), %rdi
pushq $0xa
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa7040(%rip)    # 0xbc3c0
jmp 0x153ab
movq 0x52fff(%rip), %rdi     # 0x68388
movq %rdi, %rsi
callq 0x50e3
jmp 0x153cb
movq (%rax), %rax
movq (%rax), %rdi
movl $0xea0000, %eax         # imm = 0xEA0000
addq %rax, %rdi
movl $0x2300e, %esi          # imm = 0x2300E
callq 0x50e3
movq 0x40(%rbx), %rax
movq %rax, 0x4e6ea(%rip)     # 0x63aa0
leaq 0x50(%rsp), %rdi
pushq $0xc
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6ff5(%rip)    # 0xbc3c0
movq 0x68(%rbx), %rdi
addq %r12, %rdi
callq 0x4fcb
movq %r15, %rdi
callq 0x52d1
movq %rax, %rdi
callq 0x51c4
cmpl $0xe, 0x4e42e(%rip)     # 0x6381c
je 0x15307
jmp 0x159ec
cmpl $0x7, 0x4e508(%rip)     # 0x63908
je 0x1540e
pushq $0x2f
popq %rdi
callq 0x4f2c
movq 0x68(%rbx), %r14
cmpq $0x3, %r14
jne 0x15632
cmpl $0xe, 0x4e3fd(%rip)     # 0x6381c
jne 0x15632
leaq 0x6d0(%rsp), %rdi
pushq $0x8
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6f83(%rip)    # 0xbc3c0
callq 0xd048
movq 0x4e59f(%rip), %rsi     # 0x639e8
movq 0x4e650(%rip), %rax     # 0x63aa0
movq (%rax), %rdx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x74d4
addq $-0x8, 0xa6f40(%rip)    # 0xbc3a8
cmpb $0x0, (%r14)
jne 0x15476
pushq $0xe
popq %rdi
callq 0x4f2c
leaq 0x668(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6f32(%rip)    # 0xbc3c0
pushq $0x61
popq %rdi
callq 0x52d1
movq %rax, %rdi
jmp 0x1598b
cmpl $0x3, 0x4e463(%rip)     # 0x63908
je 0x154b3
pushq $0xd
popq %rdi
callq 0x4f2c
movq 0x68(%rbx), %r14
cmpq $0x8, %r14
jne 0x15641
movl $0x108017, %edi         # imm = 0x108017
callq 0x4fcb
leaq 0x460(%rsp), %rdi
jmp 0x158b9
cmpl $0x3, 0x4e42d(%rip)     # 0x63908
je 0x154e9
pushq $0xd
popq %rdi
callq 0x4f2c
movq 0x68(%rbx), %r14
incq 0x4e3d8(%rip)           # 0x638c8
movq 0x4e5a9(%rip), %rax     # 0x63aa0
movq %rax, 0x40(%rbx)
cmpq $0x5, %r14
jne 0x15519
leaq 0x598(%rsp), %rdi
pushq $0x5
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6ea7(%rip)    # 0xbc3c0
movq 0x4e4e8(%rip), %rdi     # 0x63a08
callq 0x12df0
movq 0x18(%rax), %rdi
movq %rdi, 0x58(%r15)
cmpl $0x9, 0x4e2e4(%rip)     # 0x63818
jne 0x15668
callq 0xd048
movq 0x4e4a2(%rip), %rsi     # 0x639e8
movq 0x4e553(%rip), %rax     # 0x63aa0
movq (%rax), %rdx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x74d4
addq $-0x8, 0xa6e43(%rip)    # 0xbc3a8
cmpb $0x0, (%r14)
jne 0x15573
pushq $0xe
popq %rdi
callq 0x4f2c
leaq 0x530(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6e35(%rip)    # 0xbc3c0
movl $0x2000e, %edi          # imm = 0x2000E
jmp 0x15745
leaq 0xa18(%rsp), %rdi
callq 0x6316
movq 0x4e44f(%rip), %rsi     # 0x639f8
movq %rbx, %rdi
callq 0x1703c
pushq $0xe
popq %rdi
callq 0x7429
leaq 0x258(%rsp), %rdi
pushq $0x8
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6def(%rip)    # 0xbc3c0
movq 0x4e428(%rip), %rsi     # 0x63a00
movq %rbx, %rdi
callq 0x1703c
movq 0x68(%rbx), %rdi
cmpq $0x14, %rdi
jne 0x15606
leaq 0x1f0(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6dbe(%rip)    # 0xbc3c0
movq 0x68(%rbx), %rdi
addq $-0x6, %rdi
callq 0x52d1
movq %rax, %rdi
callq 0x51c4
movq 0x68(%rbx), %r14
cmpq $0x13, %r14
jne 0x159f0
leaq 0x188(%rsp), %rdi
jmp 0x158b9
leaq 0x600(%rsp), %rdi
pushq $0xd
jmp 0x158bb
leaq 0x3f8(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6d67(%rip)    # 0xbc3c0
movl $0x100017, %edi         # imm = 0x100017
callq 0x4fcb
jmp 0x159ec
movq (%rdi), %r14
cmpl $0x6, 0x10(%rdi)
jne 0x15733
callq 0x12d3e
movq 0x18(%rax), %rax
movq %rax, (%rbx)
leaq 0x8(%rbx), %r15
testq %rax, %rax
sete %al
leaq 0x1148(%rsp), %r12
leaq 0x4e396(%rip), %r13     # 0x63a30
pushq $0x1
popq %rbp
cmpl $0xe, 0x4e178(%rip)     # 0x6381c
jne 0x15733
testb $0x1, %al
jne 0x15733
movq %r12, %rdi
callq 0x6316
movq %r15, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x71f0
cmpq $0x0, (%r15)
je 0x15733
leaq 0xfd8(%rsp), %rdi
callq 0x6316
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x1572c
movq %rdi, (%r15)
testq %rdi, %rdi
je 0x1570e
callq 0x14770
movq 0x4e33a(%rip), %rcx     # 0x63a30
xorq 0x18(%rax), %rcx
shlq $0x17, %rcx
je 0x1571f
movq (%r15), %rdi
callq 0x14770
movq 0x30(%rax), %rdi
jmp 0x156e2
movq (%rbx), %rdi
callq 0x14770
movq 0x28(%rax), %rdi
movq %rdi, (%rbx)
jmp 0x156dd
movq (%rbx), %rax
movq (%rax), %r14
xorl %eax, %eax
jmp 0x1569d
movb $0x1, %al
jmp 0x1569d
movq %r14, %rdi
callq 0x569a
movq %rax, %rdi
addq $0xea0000, %rdi         # imm = 0xEA0000
callq 0x4fcb
movq 0x4e0b7(%rip), %rdi     # 0x63808
callq 0x51c4
movq 0x68(%rbx), %r14
cmpq $0x4, %r14
jne 0x159f0
movq 0x40(%rbx), %rax
movq %rax, 0x4e331(%rip)     # 0x63aa0
leaq 0x4c8(%rsp), %rdi
jmp 0x158b9
testb $0x2, 0x4e2ed(%rip)     # 0x63a70
jne 0x15992
leaq 0xb88(%rsp), %r14
cmpl $0xc, 0x4e084(%rip)     # 0x6381c
je 0x159ec
movq %r14, %rdi
callq 0x6316
jmp 0x15791
cmpl $0x7, 0x4e06d(%rip)     # 0x6381c
jne 0x159b1
movq %rbx, %rdi
callq 0x16ebe
jmp 0x159ec
leaq 0x8a8(%rsp), %rdi
callq 0x6316
movq %rbx, %rdi
callq 0x170b0
pushq $0xe
popq %rdi
callq 0x7429
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1703c
movq 0x4e2b0(%rip), %rax     # 0x63aa0
movq %rax, 0x28(%rbx)
jmp 0x1591b
leaq 0x4e200(%rip), %rax     # 0x63a00
leaq 0x4e1e1(%rip), %rcx     # 0x639e8
jmp 0x15817
leaq 0x4e1d8(%rip), %rax     # 0x639e8
leaq 0x4e1e9(%rip), %rcx     # 0x63a00
movq (%rcx), %rcx
movq %rcx, (%rbx)
movq (%rax), %rax
movq %rax, 0x8(%rbx)
callq 0xd048
movq 0x4e270(%rip), %rax     # 0x63aa0
movq (%rax), %rsi
movq (%rbx), %rdx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x74d4
addq $-0x8, 0xa6b5d(%rip)    # 0xbc3a8
cmpb $0x0, (%r14)
jne 0x15859
pushq $0x15
popq %rdi
callq 0x4f2c
pushq $0xe
popq %rdi
callq 0x7429
leaq 0x328(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6b47(%rip)    # 0xbc3c0
cmpq $0x11, 0x68(%rbx)
jne 0x15891
movl $0x1e01f, %edi          # imm = 0x1E01F
movl $0x111012, %esi         # imm = 0x111012
movl $0x10a007, %edx         # imm = 0x10A007
jmp 0x158a0
movl $0x110012, %edi         # imm = 0x110012
movl $0x1e061, %esi          # imm = 0x1E061
movl $0x10a009, %edx         # imm = 0x10A009
callq 0x50f5
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
callq 0x1703c
leaq 0x2c0(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6af7(%rip)    # 0xbc3c0
jmp 0x159ec
movq 0x4df33(%rip), %rdi     # 0x63808
jmp 0x159bc
movl $0x3c000, %edi          # imm = 0x3C000
callq 0x4fcb
jmp 0x15a4c
leaq 0x738(%rsp), %rdi
callq 0x6316
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1703c
movq 0x4e199(%rip), %rax     # 0x63aa0
movq %rax, 0x28(%rbx)
pushq $0xe
popq %rdi
callq 0x7429
movq %rbx, %rdi
callq 0x170b0
movq %rbx, %rdi
callq 0x1714a
jmp 0x159ec
movl 0x4deee(%rip), %eax     # 0x6381c
cmpl $0x7, %eax
sete 0x48(%rbx)
jne 0x1594a
leaq 0xe68(%rsp), %rdi
callq 0x6316
movl 0x4ded2(%rip), %eax     # 0x6381c
testl %eax, %eax
je 0x159c6
leaq 0x4debb(%rip), %rdi     # 0x63810
callq 0x5148
jmp 0x159e6
callq 0xd048
leaq 0x390(%rsp), %rdi
pushq $0x11
popq %rsi
callq 0xaa9a
addq $-0x8, 0xa6a44(%rip)    # 0xbc3c0
movq 0x4e0ad(%rip), %rdi     # 0x63a30
shlq $0x17, %rdi
sarq $0x17, %rdi
callq 0x51c4
jmp 0x159ec
movq $0xb, 0x68(%rbx)
cmpl $0x7, 0x4de7b(%rip)     # 0x6381c
jne 0x159ad
movq %rbx, %rdi
callq 0x16bd2
jmp 0x159ec
pushq $0x36
jmp 0x159b3
pushq $0x37
popq %rdi
callq 0x52d1
movq %rax, %rdi
callq 0x51c4
jmp 0x15a4c
xorl %edi, %edi
callq 0xdd7e
testb %al, %al
jne 0x159d9
pushq $0x1
popq %rdi
callq 0x4f2c
leaq 0xcf8(%rsp), %rdi
callq 0x6316
cmpb $0x0, 0x48(%rbx)
je 0x15a4c
movq 0x68(%rbx), %r14
cmpq $0x2f, %r14
jg 0x15a44
pushq $0x3
popq %rsi
xorl %edi, %edi
callq 0x37ec
movq %rax, %rbx
pushq $0xa
popq %rdi
pushq $0xd
popq %rsi
callq 0x37ec
orq %rbx, %rax
movabsq $0xfbfff9ffffff, %rcx   # imm = 0xFBFFF9FFFFFF
andq %rax, %rcx
movabsq $0x40006000000, %rax    # imm = 0x40006000000
orq %rcx, %rax
movb $0x2f, %cl
subb %r14b, %cl
movzbl %cl, %ecx
btq %rcx, %rax
jae 0x15a44
movq $0x1, 0x4de94(%rip) # 0x638d8
pushq $0xc
popq %rdi
callq 0x7429
addq $0x1428, %rsp           # imm = 0x1428
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x4
popq %rdi
callq 0x3110
movl $0x22b8, (%rax)         # imm = 0x22B8
movq 0xd50d(%rip), %rsi      # 0x22f80
movq %rax, %rdi
xorl %edx, %edx
callq 0x33e0
nop