// File: sisong[P]ApkDiffPatch/lzma/C/LzmaEnc.c
// Function: LzmaEnc_CodeOneBlock
Z7_NO_INLINE
static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, UInt32 maxPackSize, UInt32 maxUnpackSize)
{
  UInt32 nowPos32, startPos32;
  if (p->needInit)
  {
    #ifndef Z7_ST
    if (p->mtMode)
    {
      RINOK(MatchFinderMt_InitMt(&p->matchFinderMt))
    }
    #endif
    p->matchFinder.Init(p->matchFinderObj);
    p->needInit = 0;
  }

  if (p->finished)
    return p->result;
  RINOK(CheckErrors(p))

  nowPos32 = (UInt32)p->nowPos64;
  startPos32 = nowPos32;

  if (p->nowPos64 == 0)
  {
    unsigned numPairs;
    Byte curByte;
    if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0)
      return Flush(p, nowPos32);
    ReadMatchDistances(p, &numPairs);
    RangeEnc_EncodeBit_0(&p->rc, &p->isMatch[kState_Start][0]);
    // p->state = kLiteralNextStates[p->state];
    curByte = *(p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset);
    LitEnc_Encode(&p->rc, p->litProbs, curByte);
    p->additionalOffset--;
    nowPos32++;
  }

  if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) != 0)
  
  for (;;)
  {
    UInt32 dist;
    unsigned len, posState;
    UInt32 range, ttt, newBound;
    CLzmaProb *probs;
  
    if (p->fastMode)
      len = GetOptimumFast(p);
    else
    {
      unsigned oci = p->optCur;
      if (p->optEnd == oci)
        len = GetOptimum(p, nowPos32);
      else
      {
        const COptimal *opt = &p->opt[oci];
        len = opt->len;
        p->backRes = opt->dist;
        p->optCur = oci + 1;
      }
    }

    posState = (unsigned)nowPos32 & p->pbMask;
    range = p->rc.range;
    probs = &p->isMatch[p->state][posState];
    
    RC_BIT_PRE(&p->rc, probs)
    
    dist = p->backRes;

    #ifdef SHOW_STAT2
    printf("\n pos = %6X, len = %3u  pos = %6u", nowPos32, len, dist);
    #endif

    if (dist == MARK_LIT)
    {
      Byte curByte;
      const Byte *data;
      unsigned state;

      RC_BIT_0(&p->rc, probs)
      p->rc.range = range;
      data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset;
      probs = LIT_PROBS(nowPos32, *(data - 1));
      curByte = *data;
      state = p->state;
      p->state = kLiteralNextStates[state];
      if (IsLitState(state))
        LitEnc_Encode(&p->rc, probs, curByte);
      else
        LitEnc_EncodeMatched(&p->rc, probs, curByte, *(data - p->reps[0]));
    }
    else
    {
      RC_BIT_1(&p->rc, probs)
      probs = &p->isRep[p->state];
      RC_BIT_PRE(&p->rc, probs)
      
      if (dist < LZMA_NUM_REPS)
      {
        RC_BIT_1(&p->rc, probs)
        probs = &p->isRepG0[p->state];
        RC_BIT_PRE(&p->rc, probs)
        if (dist == 0)
        {
          RC_BIT_0(&p->rc, probs)
          probs = &p->isRep0Long[p->state][posState];
          RC_BIT_PRE(&p->rc, probs)
          if (len != 1)
          {
            RC_BIT_1_BASE(&p->rc, probs)
          }
          else
          {
            RC_BIT_0_BASE(&p->rc, probs)
            p->state = kShortRepNextStates[p->state];
          }
        }
        else
        {
          RC_BIT_1(&p->rc, probs)
          probs = &p->isRepG1[p->state];
          RC_BIT_PRE(&p->rc, probs)
          if (dist == 1)
          {
            RC_BIT_0_BASE(&p->rc, probs)
            dist = p->reps[1];
          }
          else
          {
            RC_BIT_1(&p->rc, probs)
            probs = &p->isRepG2[p->state];
            RC_BIT_PRE(&p->rc, probs)
            if (dist == 2)
            {
              RC_BIT_0_BASE(&p->rc, probs)
              dist = p->reps[2];
            }
            else
            {
              RC_BIT_1_BASE(&p->rc, probs)
              dist = p->reps[3];
              p->reps[3] = p->reps[2];
            }
            p->reps[2] = p->reps[1];
          }
          p->reps[1] = p->reps[0];
          p->reps[0] = dist;
        }

        RC_NORM(&p->rc)

        p->rc.range = range;

        if (len != 1)
        {
          LenEnc_Encode(&p->repLenProbs, &p->rc, len - LZMA_MATCH_LEN_MIN, posState);
          --p->repLenEncCounter;
          p->state = kRepNextStates[p->state];
        }
      }
      else
      {
        unsigned posSlot;
        RC_BIT_0(&p->rc, probs)
        p->rc.range = range;
        p->state = kMatchNextStates[p->state];

        LenEnc_Encode(&p->lenProbs, &p->rc, len - LZMA_MATCH_LEN_MIN, posState);
        // --p->lenEnc.counter;

        dist -= LZMA_NUM_REPS;
        p->reps[3] = p->reps[2];
        p->reps[2] = p->reps[1];
        p->reps[1] = p->reps[0];
        p->reps[0] = dist + 1;
        
        p->matchPriceCount++;
        GetPosSlot(dist, posSlot)
        // RcTree_Encode_PosSlot(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], posSlot);
        {
          UInt32 sym = (UInt32)posSlot + (1 << kNumPosSlotBits);
          range = p->rc.range;
          probs = p->posSlotEncoder[GetLenToPosState(len)];
          do
          {
            CLzmaProb *prob = probs + (sym >> kNumPosSlotBits);
            UInt32 bit = (sym >> (kNumPosSlotBits - 1)) & 1;
            sym <<= 1;
            RC_BIT(&p->rc, prob, bit)
          }
          while (sym < (1 << kNumPosSlotBits * 2));
          p->rc.range = range;
        }
        
        if (dist >= kStartPosModelIndex)
        {
          unsigned footerBits = ((posSlot >> 1) - 1);

          if (dist < kNumFullDistances)
          {
            unsigned base = ((2 | (posSlot & 1)) << footerBits);
            RcTree_ReverseEncode(&p->rc, p->posEncoders + base, footerBits, (unsigned)(dist /* - base */));
          }
          else
          {
            UInt32 pos2 = (dist | 0xF) << (32 - footerBits);
            range = p->rc.range;
            // RangeEnc_EncodeDirectBits(&p->rc, posReduced >> kNumAlignBits, footerBits - kNumAlignBits);
            /*
            do
            {
              range >>= 1;
              p->rc.low += range & (0 - ((dist >> --footerBits) & 1));
              RC_NORM(&p->rc)
            }
            while (footerBits > kNumAlignBits);
            */
            do
            {
              range >>= 1;
              p->rc.low += range & (0 - (pos2 >> 31));
              pos2 += pos2;
              RC_NORM(&p->rc)
            }
            while (pos2 != 0xF0000000);


            // RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, posReduced & kAlignMask);

            {
              unsigned m = 1;
              unsigned bit;
              bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit)  m = (m << 1) + bit;
              bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit)  m = (m << 1) + bit;
              bit = dist & 1; dist >>= 1; RC_BIT(&p->rc, p->posAlignEncoder + m, bit)  m = (m << 1) + bit;
              bit = dist & 1;             RC_BIT(&p->rc, p->posAlignEncoder + m, bit)
              p->rc.range = range;
              // p->alignPriceCount++;
            }
          }
        }
      }
    }

    nowPos32 += (UInt32)len;
    p->additionalOffset -= len;
    
    if (p->additionalOffset == 0)
    {
      UInt32 processed;

      if (!p->fastMode)
      {
        /*
        if (p->alignPriceCount >= 16) // kAlignTableSize
          FillAlignPrices(p);
        if (p->matchPriceCount >= 128)
          FillDistancesPrices(p);
        if (p->lenEnc.counter <= 0)
          LenPriceEnc_UpdateTables(&p->lenEnc, 1 << p->pb, &p->lenProbs, p->ProbPrices);
        */
        if (p->matchPriceCount >= 64)
        {
          FillAlignPrices(p);
          // { int y; for (y = 0; y < 100; y++) {
          FillDistancesPrices(p);
          // }}
          LenPriceEnc_UpdateTables(&p->lenEnc, (unsigned)1 << p->pb, &p->lenProbs, p->ProbPrices);
        }
        if (p->repLenEncCounter <= 0)
        {
          p->repLenEncCounter = REP_LEN_COUNT;
          LenPriceEnc_UpdateTables(&p->repLenEnc, (unsigned)1 << p->pb, &p->repLenProbs, p->ProbPrices);
        }
      }
    
      if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0)
        break;
      processed = nowPos32 - startPos32;
      
      if (maxPackSize)
      {
        if (processed + kNumOpts + 300 >= maxUnpackSize
            || RangeEnc_GetProcessed_sizet(&p->rc) + kPackReserve >= maxPackSize)
          break;
      }
      else if (processed >= (1 << 17))
      {
        p->nowPos64 += nowPos32 - startPos32;
        return CheckErrors(p);
      }
    }
  }

  p->nowPos64 += nowPos32 - startPos32;
  return Flush(p, nowPos32);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0xdc(%rax)
je 0x683a4
movq -0x10(%rbp), %rax
cmpl $0x0, 0xfc(%rax)
je 0x68385
movq -0x10(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x75900
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x68383
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x69538
jmp 0x68385
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
movq -0x10(%rbp), %rax
movl $0x0, 0xdc(%rax)
movq -0x10(%rbp), %rax
cmpl $0x0, 0xd4(%rax)
je 0x683c3
movq -0x10(%rbp), %rax
movl 0xf8(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x69538
movq -0x10(%rbp), %rdi
callq 0x6ab30
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x28(%rbp)
je 0x683e0
movl -0x28(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x69538
movq -0x10(%rbp), %rax
movq 0xe0(%rax), %rax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0xe0(%rax)
jne 0x684a9
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
cmpl $0x0, %eax
jne 0x68430
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x6abf0
movl %eax, -0x4(%rbp)
jmp 0x69538
movq -0x10(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x6ac60
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
movq -0x10(%rbp), %rsi
addq $0x2280, %rsi           # imm = 0x2280
callq 0x6adf0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
movq -0x10(%rbp), %rcx
movl 0x4c(%rcx), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
movb (%rax,%rcx), %al
movb %al, -0x2d(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rsi
movzbl -0x2d(%rbp), %edx
callq 0x6ae70
movq -0x10(%rbp), %rax
movl 0x4c(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x4c(%rax)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
cmpl $0x0, %eax
je 0x6950d
jmp 0x684c5
movq -0x10(%rbp), %rax
cmpl $0x0, 0xcc(%rax)
je 0x684e0
movq -0x10(%rbp), %rdi
callq 0x6af90
movl %eax, -0x38(%rbp)
jmp 0x68549
movq -0x10(%rbp), %rax
movl 0x30(%rax), %eax
movl %eax, -0x54(%rbp)
movq -0x10(%rbp), %rax
movl 0x34(%rax), %eax
cmpl -0x54(%rbp), %eax
jne 0x68507
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x6b480
movl %eax, -0x38(%rbp)
jmp 0x68547
movq -0x10(%rbp), %rax
addq $0xf888, %rax           # imm = 0xF888
movl -0x54(%rbp), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x38(%rbp)
movq -0x60(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xb8(%rax)
movl -0x54(%rbp), %ecx
addl $0x1, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x30(%rax)
jmp 0x68549
movl -0x1c(%rbp), %eax
movq -0x10(%rbp), %rcx
andl 0x64(%rcx), %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rax
movl 0x70(%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rax
addq $0x2280, %rax           # imm = 0x2280
movq -0x10(%rbp), %rcx
movl 0x44(%rcx), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movl -0x3c(%rbp), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movl 0xb8(%rax), %eax
movl %eax, -0x34(%rbp)
cmpl $-0x1, -0x34(%rbp)
jne 0x686d6
movl -0x48(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movl $0x800, %ecx            # imm = 0x800
subl -0x44(%rbp), %ecx
shrl $0x5, %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x685f2
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0x40(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
movq -0x10(%rbp), %rcx
movl 0x4c(%rcx), %ecx
movl %ecx, %edx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movq 0x68(%rax), %rax
movl -0x1c(%rbp), %edx
shll $0x8, %edx
movq -0x70(%rbp), %rcx
movzbl -0x1(%rcx), %ecx
addl %ecx, %edx
movq -0x10(%rbp), %rcx
andl 0x60(%rcx), %edx
movq -0x10(%rbp), %rcx
movl 0xbc(%rcx), %ecx
shll %cl, %edx
movl %edx, %ecx
imull $0x3, %ecx, %ecx
movl %ecx, %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x70(%rbp), %rax
movb (%rax), %al
movb %al, -0x61(%rbp)
movq -0x10(%rbp), %rax
movl 0x44(%rax), %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
movl %eax, %ecx
leaq 0x4a9b3(%rip), %rax     # 0xb3030
movzbl (%rax,%rcx), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x44(%rax)
cmpl $0x7, -0x74(%rbp)
jae 0x686a5
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
movq -0x50(%rbp), %rsi
movzbl -0x61(%rbp), %edx
callq 0x6ae70
jmp 0x686d1
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
movq -0x50(%rbp), %rsi
movzbl -0x61(%rbp), %edx
movq -0x70(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x50(%rcx), %ecx
movl %ecx, %r8d
xorl %ecx, %ecx
subq %r8, %rcx
movzbl (%rax,%rcx), %ecx
callq 0x6dc40
jmp 0x69365
movl -0x48(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x44(%rbp), %eax
movl -0x44(%rbp), %ecx
shrl $0x5, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x68726
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movq -0x10(%rbp), %rax
addq $0x2220, %rax           # imm = 0x2220
movq -0x10(%rbp), %rcx
movl 0x44(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
cmpl $0x4, -0x34(%rbp)
jae 0x68b3f
movl -0x48(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x44(%rbp), %eax
movl -0x44(%rbp), %ecx
shrl $0x5, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x687b2
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movq -0x10(%rbp), %rax
addq $0x2238, %rax           # imm = 0x2238
movq -0x10(%rbp), %rcx
movl 0x44(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x34(%rbp)
jne 0x688e2
movl -0x48(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movl $0x800, %ecx            # imm = 0x800
subl -0x44(%rbp), %ecx
shrl $0x5, %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x6882d
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movq -0x10(%rbp), %rax
addq $0x2400, %rax           # imm = 0x2400
movq -0x10(%rbp), %rcx
movl 0x44(%rcx), %ecx
shlq $0x5, %rcx
addq %rcx, %rax
movl -0x3c(%rbp), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
cmpl $0x1, -0x38(%rbp)
je 0x688a2
movl -0x48(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x44(%rbp), %eax
movl -0x44(%rbp), %ecx
shrl $0x5, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
jmp 0x688dd
movl -0x48(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movl $0x800, %ecx            # imm = 0x800
subl -0x44(%rbp), %ecx
shrl $0x5, %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
movq -0x10(%rbp), %rax
movl 0x44(%rax), %eax
movl %eax, %ecx
leaq 0x4a76a(%rip), %rax     # 0xb303c
movzbl (%rax,%rcx), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x44(%rax)
jmp 0x68abc
movl -0x48(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x44(%rbp), %eax
movl -0x44(%rbp), %ecx
shrl $0x5, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x68932
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movq -0x10(%rbp), %rax
addq $0x2250, %rax           # imm = 0x2250
movq -0x10(%rbp), %rcx
movl 0x44(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
cmpl $0x1, -0x34(%rbp)
jne 0x68999
movl -0x48(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movl $0x800, %ecx            # imm = 0x800
subl -0x44(%rbp), %ecx
shrl $0x5, %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
movq -0x10(%rbp), %rax
movl 0x54(%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0x68aa4
movl -0x48(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x44(%rbp), %eax
movl -0x44(%rbp), %ecx
shrl $0x5, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x689e9
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movq -0x10(%rbp), %rax
addq $0x2268, %rax           # imm = 0x2268
movq -0x10(%rbp), %rcx
movl 0x44(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
cmpl $0x2, -0x34(%rbp)
jne 0x68a4d
movl -0x48(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movl $0x800, %ecx            # imm = 0x800
subl -0x44(%rbp), %ecx
shrl $0x5, %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
movq -0x10(%rbp), %rax
movl 0x58(%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0x68a96
movl -0x48(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x44(%rbp), %eax
movl -0x44(%rbp), %ecx
shrl $0x5, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
movq -0x10(%rbp), %rax
movl 0x5c(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl 0x58(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x5c(%rax)
movq -0x10(%rbp), %rax
movl 0x54(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x58(%rax)
movq -0x10(%rbp), %rax
movl 0x50(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x54(%rax)
movl -0x34(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x50(%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x68adb
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0x40(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
cmpl $0x1, -0x38(%rbp)
je 0x68b3a
movq -0x10(%rbp), %rdi
addq $0x2c80, %rdi           # imm = 0x2C80
movq -0x10(%rbp), %rsi
addq $0x70, %rsi
movl -0x38(%rbp), %edx
subl $0x2, %edx
movl -0x3c(%rbp), %ecx
callq 0x6dd90
movq -0x10(%rbp), %rax
movl 0xec(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xec(%rax)
movq -0x10(%rbp), %rax
movl 0x44(%rax), %eax
movl %eax, %ecx
leaq 0x4a519(%rip), %rax     # 0xb3048
movzbl (%rax,%rcx), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x44(%rax)
jmp 0x69363
movl -0x48(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x44(%rbp), %eax
movl $0x800, %ecx            # imm = 0x800
subl -0x44(%rbp), %ecx
shrl $0x5, %ecx
addl %ecx, %eax
movw %ax, %cx
movq -0x50(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x68b7e
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0x40(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
movq -0x10(%rbp), %rax
movl 0x44(%rax), %eax
movl %eax, %ecx
leaq 0x4a4bc(%rip), %rax     # 0xb3054
movzbl (%rax,%rcx), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x44(%rax)
movq -0x10(%rbp), %rdi
addq $0x2880, %rdi           # imm = 0x2880
movq -0x10(%rbp), %rsi
addq $0x70, %rsi
movl -0x38(%rbp), %edx
subl $0x2, %edx
movl -0x3c(%rbp), %ecx
callq 0x6dd90
movl -0x34(%rbp), %eax
subl $0x4, %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl 0x58(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x5c(%rax)
movq -0x10(%rbp), %rax
movl 0x54(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x58(%rax)
movq -0x10(%rbp), %rax
movl 0x50(%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x54(%rax)
movl -0x34(%rbp), %ecx
addl $0x1, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x50(%rax)
movq -0x10(%rbp), %rax
movl 0xe8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xe8(%rax)
cmpl $0x80, -0x34(%rbp)
jae 0x68c39
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %ecx
andl $0x7f, %ecx
movl %ecx, %ecx
movzbl 0x3080(%rax,%rcx), %eax
movl %eax, -0x78(%rbp)
jmp 0x68c75
movl -0x34(%rbp), %edx
movl $0x13, %eax
movl $0x6, %ecx
cmpl $0x100000, %edx         # imm = 0x100000
cmovbq %rcx, %rax
movl %eax, -0x7c(%rbp)
movq -0x10(%rbp), %rax
movl -0x34(%rbp), %edx
movl -0x7c(%rbp), %ecx
shrl %cl, %edx
movl %edx, %ecx
movl %ecx, %ecx
movzbl 0x3080(%rax,%rcx), %eax
movl -0x7c(%rbp), %ecx
shll %ecx
addl %ecx, %eax
movl %eax, -0x78(%rbp)
movl -0x78(%rbp), %eax
addl $0x40, %eax
movl %eax, -0x80(%rbp)
movq -0x10(%rbp), %rax
movl 0x70(%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rax
addq $0x2580, %rax           # imm = 0x2580
movq %rax, -0xc0(%rbp)
cmpl $0x5, -0x38(%rbp)
jae 0x68cad
movl -0x38(%rbp), %eax
subl $0x2, %eax
movl %eax, -0xc4(%rbp)
jmp 0x68cba
movl $0x3, %eax
movl %eax, -0xc4(%rbp)
jmp 0x68cba
movq -0xc0(%rbp), %rax
movl -0xc4(%rbp), %ecx
movl %ecx, %ecx
shlq $0x7, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movl -0x80(%rbp), %ecx
shrl $0x6, %ecx
movl %ecx, %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movl -0x80(%rbp), %eax
shrl $0x5, %eax
andl $0x1, %eax
movl %eax, -0x8c(%rbp)
movl -0x80(%rbp), %eax
shll %eax
movl %eax, -0x80(%rbp)
movq -0x88(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
xorl %eax, %eax
subl -0x8c(%rbp), %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
andl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
andl -0x90(%rbp), %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0x90(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x8c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x90(%rbp)
movl -0x48(%rbp), %eax
andl -0x90(%rbp), %eax
addl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x90(%rbp), %eax
andl $0x7e1, %eax            # imm = 0x7E1
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
addl $0x1f, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
subl -0x44(%rbp), %eax
sarl $0x5, %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movw %ax, %cx
movq -0x88(%rbp), %rax
movw %cx, (%rax)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x68de8
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
jmp 0x68dea
cmpl $0x1000, -0x80(%rbp)    # imm = 0x1000
jb 0x68cd4
movl -0x40(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
cmpl $0x4, -0x34(%rbp)
jb 0x69361
movl -0x78(%rbp), %eax
shrl %eax
subl $0x1, %eax
movl %eax, -0x94(%rbp)
cmpl $0x80, -0x34(%rbp)
jae 0x68e6b
movl -0x78(%rbp), %eax
andl $0x1, %eax
orl $0x2, %eax
movl -0x94(%rbp), %ecx
shll %cl, %eax
movl %eax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
movq -0x10(%rbp), %rsi
addq $0x2780, %rsi           # imm = 0x2780
movl -0x98(%rbp), %eax
shlq %rax
addq %rax, %rsi
movl -0x94(%rbp), %edx
movl -0x34(%rbp), %ecx
callq 0x6e180
jmp 0x6935f
movl -0x34(%rbp), %eax
orl $0xf, %eax
movl $0x20, %ecx
subl -0x94(%rbp), %ecx
shll %cl, %eax
movl %eax, -0x9c(%rbp)
movq -0x10(%rbp), %rax
movl 0x70(%rax), %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
shrl %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
movl -0x9c(%rbp), %edx
shrl $0x1f, %edx
xorl %ecx, %ecx
subl %edx, %ecx
andl %ecx, %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0x9c(%rbp), %eax
addl -0x9c(%rbp), %eax
movl %eax, -0x9c(%rbp)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x68ee9
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
jmp 0x68eeb
cmpl $0xf0000000, -0x9c(%rbp) # imm = 0xF0000000
jne 0x68e8e
movl $0x1, -0xa0(%rbp)
movl -0x34(%rbp), %eax
andl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl -0x34(%rbp), %eax
shrl %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movzwl 0x2200(%rax,%rcx,2), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
xorl %eax, %eax
subl -0xa4(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
andl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
andl -0xa8(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0xa8(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0xa4(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xa8(%rbp)
movl -0x48(%rbp), %eax
andl -0xa8(%rbp), %eax
addl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0xa8(%rbp), %eax
andl $0x7e1, %eax            # imm = 0x7E1
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
addl $0x1f, %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
subl -0x44(%rbp), %eax
sarl $0x5, %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movw %dx, 0x2200(%rax,%rcx,2)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x69009
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0xa0(%rbp), %eax
shll %eax
addl -0xa4(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0x34(%rbp), %eax
andl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl -0x34(%rbp), %eax
shrl %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movzwl 0x2200(%rax,%rcx,2), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
xorl %eax, %eax
subl -0xa4(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
andl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
andl -0xac(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0xac(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0xa4(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xac(%rbp)
movl -0x48(%rbp), %eax
andl -0xac(%rbp), %eax
addl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0xac(%rbp), %eax
andl $0x7e1, %eax            # imm = 0x7E1
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
addl $0x1f, %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
subl -0x44(%rbp), %eax
sarl $0x5, %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movw %dx, 0x2200(%rax,%rcx,2)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x69125
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0xa0(%rbp), %eax
shll %eax
addl -0xa4(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0x34(%rbp), %eax
andl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl -0x34(%rbp), %eax
shrl %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movzwl 0x2200(%rax,%rcx,2), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
xorl %eax, %eax
subl -0xa4(%rbp), %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
andl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
andl -0xb0(%rbp), %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0xb0(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0xa4(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xb0(%rbp)
movl -0x48(%rbp), %eax
andl -0xb0(%rbp), %eax
addl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0xb0(%rbp), %eax
andl $0x7e1, %eax            # imm = 0x7E1
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
addl $0x1f, %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
subl -0x44(%rbp), %eax
sarl $0x5, %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movw %dx, 0x2200(%rax,%rcx,2)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x69241
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0xa0(%rbp), %eax
shll %eax
addl -0xa4(%rbp), %eax
movl %eax, -0xa0(%rbp)
movl -0x34(%rbp), %eax
andl $0x1, %eax
movl %eax, -0xa4(%rbp)
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movzwl 0x2200(%rax,%rcx,2), %eax
movl %eax, -0x44(%rbp)
movl -0x40(%rbp), %eax
shrl $0xb, %eax
imull -0x44(%rbp), %eax
movl %eax, -0x48(%rbp)
xorl %eax, %eax
subl -0xa4(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
andl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x48(%rbp), %eax
andl -0xb4(%rbp), %eax
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %ecx
movl -0x40(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x40(%rbp)
movl -0xb4(%rbp), %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0x78(%rax), %rcx
movq %rcx, 0x78(%rax)
movl -0xa4(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xb4(%rbp)
movl -0x48(%rbp), %eax
andl -0xb4(%rbp), %eax
addl -0x40(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0xb4(%rbp), %eax
andl $0x7e1, %eax            # imm = 0x7E1
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
addl $0x1f, %eax
movl %eax, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
subl -0x44(%rbp), %eax
sarl $0x5, %eax
addl -0x44(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movl -0xa0(%rbp), %ecx
movw %dx, 0x2200(%rax,%rcx,2)
cmpl $0x1000000, -0x40(%rbp) # imm = 0x1000000
jae 0x69355
movl -0x40(%rbp), %eax
shll $0x8, %eax
movl %eax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x70, %rdi
callq 0x6db00
movl -0x40(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x70(%rax)
jmp 0x69361
jmp 0x69363
jmp 0x69365
movl -0x38(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x38(%rbp), %edx
movq -0x10(%rbp), %rax
movl 0x4c(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4c(%rax)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4c(%rax)
jne 0x69506
movq -0x10(%rbp), %rax
cmpl $0x0, 0xcc(%rax)
jne 0x69446
movq -0x10(%rbp), %rax
cmpl $0x40, 0xe8(%rax)
jb 0x693f2
movq -0x10(%rbp), %rdi
callq 0x6a630
movq -0x10(%rbp), %rdi
callq 0x69fa0
movq -0x10(%rbp), %rdi
addq $0x7080, %rdi           # imm = 0x7080
movq -0x10(%rbp), %rax
movl 0xc4(%rax), %ecx
movl $0x1, %esi
shll %cl, %esi
movq -0x10(%rbp), %rdx
addq $0x2880, %rdx           # imm = 0x2880
movq -0x10(%rbp), %rcx
addq $0xb30, %rcx            # imm = 0xB30
callq 0x6a7c0
movq -0x10(%rbp), %rax
cmpl $0x0, 0xec(%rax)
jg 0x69444
movq -0x10(%rbp), %rax
movl $0x40, 0xec(%rax)
movq -0x10(%rbp), %rdi
addq $0xb484, %rdi           # imm = 0xB484
movq -0x10(%rbp), %rax
movl 0xc4(%rax), %ecx
movl $0x1, %esi
shll %cl, %esi
movq -0x10(%rbp), %rdx
addq $0x2c80, %rdx           # imm = 0x2C80
movq -0x10(%rbp), %rcx
addq $0xb30, %rcx            # imm = 0xB30
callq 0x6a7c0
jmp 0x69446
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rdi
callq *%rax
cmpl $0x0, %eax
jne 0x69461
jmp 0x6950b
movl -0x1c(%rbp), %eax
subl -0x20(%rbp), %eax
movl %eax, -0xb8(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0x694cc
movl -0xb8(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
addl $0x12c, %eax            # imm = 0x12C
cmpl -0x18(%rbp), %eax
jae 0x694c8
movq -0x10(%rbp), %rax
movq 0xa8(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x88(%rcx), %rcx
movq -0x10(%rbp), %rdx
movq 0x98(%rdx), %rdx
subq %rdx, %rcx
addq %rcx, %rax
movq -0x10(%rbp), %rcx
addq 0x80(%rcx), %rax
addq $0x4000, %rax           # imm = 0x4000
movl -0x14(%rbp), %ecx
cmpq %rcx, %rax
jb 0x694ca
jmp 0x6950b
jmp 0x69504
cmpl $0x20000, -0xb8(%rbp)   # imm = 0x20000
jb 0x69502
movl -0x1c(%rbp), %eax
subl -0x20(%rbp), %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0xe0(%rax), %rcx
movq %rcx, 0xe0(%rax)
movq -0x10(%rbp), %rdi
callq 0x6ab30
movl %eax, -0x4(%rbp)
jmp 0x69538
jmp 0x69504
jmp 0x69506
jmp 0x684c5
jmp 0x6950d
movl -0x1c(%rbp), %eax
subl -0x20(%rbp), %eax
movl %eax, %eax
movl %eax, %ecx
movq -0x10(%rbp), %rax
addq 0xe0(%rax), %rcx
movq %rcx, 0xe0(%rax)
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x6abf0
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0xd0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)