// File: /workspace/github_cpp_makefile_star2_O1/twekkel[P]mzpq/libzpaq.cpp
// Function: libzpaq::compressBlock(libzpaq::StringBuffer*, libzpaq::Writer*, char const*, char const*, char const*, bool)
void compressBlock(StringBuffer* in, Writer* out, const char* method_,
                   const char* filename, const char* comment, bool dosha1) {
  assert(in);
  assert(out);
  assert(method_);
  assert(method_[0]);
  std::string method=method_;
  const unsigned n=in->size();  // input size
  const int arg0=MAX(lg(n+4095)-20, 0);  // block size
  assert((1u<<(arg0+20))>=n+4096);

  // Get type from method "LB,R,t" where L is level 0..5, B is block
  // size 0..11, R is redundancy 0..255, t = 0..3 = binary, text, exe, both.
  unsigned type=0;
  if (isdigit(method[0])) {
    int commas=0, arg[4]={0};
    for (int i=1; i<int(method.size()) && commas<4; ++i) {
      if (method[i]==',' || method[i]=='.') ++commas;
      else if (isdigit(method[i])) arg[commas]=arg[commas]*10+method[i]-'0';
    }
    if (commas==0) type=512;
    else type=arg[1]*4+arg[2];
  }

  // Get hash of input
  libzpaq::SHA1 sha1;
  const char* sha1ptr=0;
#ifdef DEBUG
  if (true) {
#else
  if (dosha1) {
#endif
    sha1.write(in->c_str(), n);
    sha1ptr=sha1.result();
  }

  // Expand default methods
  if (isdigit(method[0])) {
    const int level=method[0]-'0';
    assert(level>=0 && level<=9);

    // build models
    const int doe8=(type&2)*2;
    method="x"+itos(arg0);
    std::string htsz=","+itos(19+arg0+(arg0<=6));  // lz77 hash table size
    std::string sasz=","+itos(21+arg0);            // lz77 suffix array size

    // store uncompressed
    if (level==0)
      method="0"+itos(arg0)+",0";

    // LZ77, no model. Store if hard to compress
    else if (level==1) {
      if (type<40) method+=",0";
      else {
        method+=","+itos(1+doe8)+",";
        if      (type<80)  method+="4,0,1,15";
        else if (type<128) method+="4,0,2,16";
        else if (type<256) method+="4,0,2"+htsz;
        else if (type<960) method+="5,0,3"+htsz;
        else               method+="6,0,3"+htsz;
      }
    }

    // LZ77 with longer search
    else if (level==2) {
      if (type<32) method+=",0";
      else {
        method+=","+itos(1+doe8)+",";
        if (type<64) method+="4,0,3"+htsz;
        else method+="4,0,7"+sasz+",1";
      }
    }

    // LZ77 with CM depending on redundancy
    else if (level==3) {
      if (type<20)  // store if not compressible
        method+=",0";
      else if (type<48)  // fast LZ77 if barely compressible
        method+=","+itos(1+doe8)+",4,0,3"+htsz;
      else if (type>=640 || (type&1))  // BWT if text or highly compressible
        method+=","+itos(3+doe8)+"ci1";
      else  // LZ77 with O0-1 compression of up to 12 literals
        method+=","+itos(2+doe8)+",12,0,7"+sasz+",1c0,0,511i2";
    }

    // LZ77+CM, fast CM, or BWT depending on type
    else if (level==4) {
      if (type<12)
        method+=",0";
      else if (type<24)
        method+=","+itos(1+doe8)+",4,0,3"+htsz;
      else if (type<48)
        method+=","+itos(2+doe8)+",5,0,7"+sasz+"1c0,0,511";
      else if (type<900) {
        method+=","+itos(doe8)+"ci1,1,1,1,2a";
        if (type&1) method+="w";
        method+="m";
      }
      else
        method+=","+itos(3+doe8)+"ci1";
    }

    // Slow CM with lots of models
    else {  // 5..9

      // Model text files
      method+=","+itos(doe8);
      if (type&1) method+="w2c0,1010,255i1";
      else method+="w1i1";
      method+="c256ci1,1,1,1,1,1,2a";

      // Analyze the data
      const int NR=1<<12;
      int pt[256]={0};  // position of last occurrence
      int r[NR]={0};    // count repetition gaps of length r
      const unsigned char* p=in->data();
      if (level>0) {
        for (unsigned i=0; i<n; ++i) {
          const int k=i-pt[p[i]];
          if (k>0 && k<NR) ++r[k];
          pt[p[i]]=i;
        }
      }

      // Add periodic models
      int n1=n-r[1]-r[2]-r[3];
      for (int i=0; i<2; ++i) {
        int period=0;
        double score=0;
        int t=0;
        for (int j=5; j<NR && t<n1; ++j) {
          const double s=r[j]/(256.0+n1-t);
          if (s>score) score=s, period=j;
          t+=r[j];
        }
        if (period>4 && score>0.1) {
          method+="c0,0,"+itos(999+period)+",255i1";
          if (period<=255)
            method+="c0,"+itos(period)+"i1";
          n1-=r[period];
          r[period]=0;
        }
        else
          break;
      }
      method+="c0,2,0,255i1c0,3,0,0,255i1c0,4,0,0,0,255i1mm16ts19t0";
    }
  }

  // Compress
  std::string config;
  int args[9]={0};
  config=makeConfig(method.c_str(), args);
  assert(n<=(0x100000u<<args[0])-4096);
  libzpaq::Compressor co;
  co.setOutput(out);
#ifdef DEBUG
  co.setVerify(true);
#endif
  StringBuffer pcomp_cmd;
  co.writeTag();
  co.startBlock(config.c_str(), args, &pcomp_cmd);
  std::string cs=itos(n);
  if (comment) cs=cs+" "+comment;
  co.startSegment(filename, cs.c_str());
  if (args[1]>=1 && args[1]<=7 && args[1]!=4) {  // LZ77 or BWT
    LZBuffer lz(*in, args);
    co.setInput(&lz);
    co.compress();
  }
  else {  // compress with e8e9 or no preprocessing
    if (args[1]>=4 && args[1]<=7)
      e8e9(in->data(), in->size());
    co.setInput(in);
    co.compress();
  }
#ifdef DEBUG  // verify pre-post processing are inverses
  int64_t outsize;
  const char* sha1result=co.endSegmentChecksum(&outsize, dosha1);
  assert(sha1result);
  assert(sha1ptr);
  if (memcmp(sha1result, sha1ptr, 20)!=0)
    error("Pre/post-processor test failed");
#else
  co.endSegment(sha1ptr);
#endif
  co.endBlock();
}

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f498, %rsp          # imm = 0x1F498
movl %r9d, %ebp
movq %r8, 0x128(%rsp)
movq %rcx, 0x118(%rsp)
movq %rsi, 0x120(%rsp)
movq %rdi, %r14
leaq 0x68(%rsp), %rbx
leaq 0x4230(%rsp), %rax
movq %rbx, %rdi
movq %rdx, %rsi
movq %rax, %rdx
callq 0x4d44
movq %r14, 0x88(%rsp)
movq 0x20(%r14), %r12
movl %r12d, %edx
leal 0xfff(%r12), %eax
movl %eax, %ecx
shrl $0x10, %ecx
xorl %edi, %edi
cmpl $0x10000, %eax          # imm = 0x10000
setae %dil
cmovbl %eax, %ecx
shll $0x4, %edi
leal 0x8(%rdi), %eax
movl %ecx, %esi
shrl $0x8, %esi
cmpl $0x100, %ecx            # imm = 0x100
cmovbl %ecx, %esi
cmovbl %edi, %eax
leal 0x4(%rax), %ecx
movl %esi, %edi
shrl $0x4, %edi
cmpl $0x10, %esi
cmovbl %esi, %edi
cmovbl %eax, %ecx
leaq 0x3fde3(%rip), %rax     # 0x4e53b
movsbl (%rdi,%rax), %eax
leal (%rcx,%rax), %esi
xorl %r15d, %r15d
cmpl $0x15, %esi
leal -0x14(%rcx,%rax), %r14d
cmovll %r15d, %r14d
movq (%rbx), %rax
movsbl (%rax), %ecx
addl $-0x30, %ecx
cmpl $0x9, %ecx
ja 0xe81e
xorps %xmm0, %xmm0
movaps %xmm0, 0x4230(%rsp)
movq 0x70(%rsp), %rcx
movb $0x1, %sil
cmpl $0x2, %ecx
jl 0xe800
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
xorl %r10d, %r10d
movl $0x2, %esi
movzbl -0x1(%rax,%rsi), %edi
movl %edi, %r8d
orl $0x2, %r8d
cmpl $0x2e, %r8d
jne 0xe7cb
incl %r10d
cmpq %rcx, %rsi
jae 0xe7f9
incq %rsi
cmpl $0x4, %r10d
jl 0xe7a6
jmp 0xe7f9
movsbl %dil, %edi
leal -0x30(%rdi), %r8d
cmpl $0x9, %r8d
ja 0xe7bb
movslq %r10d, %r8
movl 0x4230(%rsp,%r8,4), %r9d
leal (%r9,%r9,4), %r9d
leal (%rdi,%r9,2), %edi
addl $-0x30, %edi
movl %edi, 0x4230(%rsp,%r8,4)
jmp 0xe7bb
testl %r10d, %r10d
sete %sil
movl 0x4234(%rsp), %eax
shll $0x2, %eax
addl 0x4238(%rsp), %eax
testb %sil, %sil
movl $0x200, %r15d           # imm = 0x200
cmovel %eax, %r15d
movq $0x0, 0x130(%rsp)
movapd 0x3ca4e(%rip), %xmm0    # 0x4b280
movupd %xmm0, 0x138(%rsp)
movl $0xc3d2e1f0, 0x148(%rsp) # imm = 0xC3D2E1F0
xorpd %xmm0, %xmm0
movupd %xmm0, 0x14c(%rsp)
movupd %xmm0, 0x15c(%rsp)
movupd %xmm0, 0x16c(%rsp)
movupd %xmm0, 0x17c(%rsp)
testb %bpl, %bpl
movq %rdx, 0x108(%rsp)
je 0xe8a9
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x130(%rsp), %rbx
movq %rbx, %rdi
callq 0x5106
movq %rbx, %rdi
callq 0x5010
movq %rax, 0x100(%rsp)
jmp 0xe8b5
movq $0x0, 0x100(%rsp)
movq 0x68(%rsp), %rax
movsbl (%rax), %r13d
leal -0x30(%r13), %eax
cmpl $0x9, %eax
ja 0xff20
movslq %r14d, %rbx
leaq 0x1a0(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
movq %rbx, 0x110(%rsp)
leaq 0x40829(%rip), %rcx     # 0x4f11b
leaq 0x1a0(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xe939
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xe941
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq 0x4230(%rsp), %rbp
movq %rdx, 0x8(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x68(%rsp), %rdi
movq %rbp, %rsi
callq 0x4220
movq (%rbp), %rdi
cmpq %rbx, %rdi
je 0xe986
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe9a7
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
xorl %eax, %eax
cmpl $0x7, %r14d
setl %al
leal 0x13(%r14,%rax), %eax
movslq %eax, %rsi
leaq 0x4230(%rsp), %rdi
movl $0x1, %edx
callq 0x3f707
leaq 0x4337b(%rip), %rcx     # 0x51d4c
leaq 0x4230(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0xa0(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xea18
movq %rdx, 0x90(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xa0(%rsp)
jmp 0xea20
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x98(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xea58
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
addl $0x15, %r14d
movslq %r14d, %rsi
leaq 0x4230(%rsp), %rdi
movl $0x1, %edx
callq 0x3f707
leaq 0x432d4(%rip), %rcx     # 0x51d4c
leaq 0x4230(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0xe0(%rsp), %rsi
movq %rsi, -0x10(%rsi)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xeabf
movq %rdx, 0xd0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xe0(%rsp)
jmp 0xeac7
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
leal (%r15,%r15), %ebx
movzbl %r13b, %r14d
movq 0x8(%rax), %rdx
movq %rdx, 0xd8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rdi
leaq 0x4240(%rsp), %rax
cmpq %rax, %rdi
je 0xeb0f
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
andl $0x4, %ebx
addl $-0x30, %r14d
cmpl $0x4, %r14d
ja 0xed51
leaq 0x3cced(%rip), %rax     # 0x4b814
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x8(%rsp), %rdi
movq 0x110(%rsp), %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x1b0(%rsp), %r14
leaq 0x4315b(%rip), %rcx     # 0x51cb1
leaq 0x8(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
movq %r14, 0x1a0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xee29
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0xee32
cmpl $0xc, %r15d
leaq 0x1b0(%rsp), %r12
jb 0xed38
cmpl $0x17, %r15d
ja 0xf3b6
orl $0x1, %ebx
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x4316f(%rip), %rcx     # 0x51d4c
leaq 0x28(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf8db
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xf8e4
cmpl $0x20, %r15d
leaq 0x1b0(%rsp), %r14
jb 0xed38
orl $0x1, %ebx
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x430f7(%rip), %rcx     # 0x51d4c
leaq 0x8(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
movq %r14, 0x1a0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf4bd
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0xf4c6
cmpl $0x14, %r15d
leaq 0x1b0(%rsp), %r12
jb 0xed38
cmpl $0x2f, %r15d
ja 0xf432
orl $0x1, %ebx
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x43070(%rip), %rcx     # 0x51d4c
leaq 0x28(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf938
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xf941
cmpl $0x28, %r15d
leaq 0x1b0(%rsp), %r14
jae 0xedbe
leaq 0x42f71(%rip), %rbx     # 0x51cb0
leaq 0x68(%rsp), %rdi
movq %rbx, %rsi
callq 0x4350
jmp 0xfed6
movl %ebx, %esi
leaq 0x1a0(%rsp), %rdi
movl $0x1, %edx
callq 0x3f707
leaq 0x42fe0(%rip), %rcx     # 0x51d4c
leaq 0x1a0(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xee90
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xee98
orl $0x1, %ebx
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x42f72(%rip), %rcx     # 0x51d4c
leaq 0x8(%rsp), %rdi
movl $0x1, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x41c0
leaq 0x4240(%rsp), %rbx
movq %r14, 0x1a0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf51d
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0xf526
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x42e58(%rip), %rsi     # 0x51cb0
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf32e
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xf336
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xeeea
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0xef0f
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
testb $0x1, %r15b
leaq 0x42e14(%rip), %rax     # 0x51d2e
leaq 0x42dfd(%rip), %rsi     # 0x51d1e
cmoveq %rax, %rsi
leaq 0x68(%rsp), %rdi
callq 0x4350
leaq 0x42dfd(%rip), %rsi     # 0x51d33
leaq 0x68(%rsp), %rdi
callq 0x4350
leaq 0x1a0(%rsp), %rdi
xorl %ebp, %ebp
movl $0x400, %edx            # imm = 0x400
xorl %esi, %esi
callq 0x40e0
leaq 0x4230(%rsp), %rdi
movl $0x4000, %edx           # imm = 0x4000
xorl %esi, %esi
callq 0x40e0
cmpb $0x31, %r13b
setl %al
testl %r12d, %r12d
sete %cl
orb %al, %cl
movq 0x108(%rsp), %r8
jne 0xefc7
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
xorl %ecx, %ecx
movzbl (%rax,%rcx), %edx
movl 0x1a0(%rsp,%rdx,4), %esi
movl %esi, %edi
notl %edi
addl %ecx, %edi
cmpl $0xffe, %edi            # imm = 0xFFE
ja 0xefb8
negl %esi
addq %rcx, %rsi
movl %esi, %esi
incl 0x4230(%rsp,%rsi,4)
movl %ecx, 0x1a0(%rsp,%rdx,4)
incq %rcx
cmpq %rcx, %r8
jne 0xef91
movl 0x4234(%rsp), %eax
addl 0x4238(%rsp), %eax
addl 0x423c(%rsp), %eax
subl %eax, %r12d
leaq 0x18(%rsp), %rbx
leaq 0x48(%rsp), %r13
testl %r12d, %r12d
jle 0xf063
xorps %xmm0, %xmm0
cvtsi2sd %r12d, %xmm0
addsd 0x3c322(%rip), %xmm0    # 0x4b320
xorpd %xmm1, %xmm1
xorl %eax, %eax
movl $0x5, %ecx
xorl %r15d, %r15d
movapd %xmm1, %xmm2
movl 0x4230(%rsp,%rcx,4), %edx
xorps %xmm1, %xmm1
cvtsi2sd %edx, %xmm1
movl %r15d, %esi
xorps %xmm3, %xmm3
cvtsi2sd %eax, %xmm3
movapd %xmm0, %xmm4
subsd %xmm3, %xmm4
divsd %xmm4, %xmm1
ucomisd %xmm2, %xmm1
movl %ecx, %r15d
cmovbel %esi, %r15d
maxsd %xmm2, %xmm1
cmpq $0xffe, %rcx            # imm = 0xFFE
ja 0xf056
addl %edx, %eax
incq %rcx
cmpl %r12d, %eax
jl 0xf00c
ucomisd 0x3c2ca(%rip), %xmm1    # 0x4b328
seta %al
jmp 0xf068
xorl %r15d, %r15d
xorl %eax, %eax
cmpl $0x5, %r15d
setge %r14b
andb %al, %r14b
je 0xf305
leal 0x3e7(%r15), %esi
movq %r13, %rdi
movl $0x1, %edx
callq 0x3f707
movl $0x5, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x42ca7(%rip), %rcx     # 0x51d48
callq 0x41c0
leaq 0x38(%rsp), %rsi
movq %rsi, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf0ce
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0xf0d6
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x28(%rsp), %rdi
leaq 0x42c2d(%rip), %rsi     # 0x51d27
callq 0x4350
movq %rbx, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf122
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xf12a
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xf16d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xf189
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xf1a5
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4180
movl %r15d, %ebx
cmpl $0xff, %r15d
leaq 0x38(%rsp), %r15
jg 0xf2e8
leaq 0x48(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
movl $0x3, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x42b6b(%rip), %rcx     # 0x51d4e
callq 0x41c0
movq %r15, 0x28(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf20b
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0xf214
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x28(%rsp), %rdi
leaq 0x42af8(%rip), %rsi     # 0x51d30
callq 0x4350
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf265
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xf26d
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xf2b5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0xf2cc
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xf2e8
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4180
subl 0x4230(%rsp,%rbx,4), %r12d
movl $0x0, 0x4230(%rsp,%rbx,4)
leaq 0x18(%rsp), %rbx
leaq 0x48(%rsp), %r13
testl %ebp, %ebp
leal 0x1(%rbp), %eax
sete %cl
movl %eax, %ebp
testb %cl, %r14b
jne 0xefe9
leaq 0x42a33(%rip), %rsi     # 0x51d52
leaq 0x68(%rsp), %rdi
callq 0x4350
jmp 0xfed6
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq %rbx, %r15
movq 0x8(%rax), %rdx
leaq 0x4230(%rsp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x68(%rsp), %rdi
movq %rbx, %rsi
callq 0x4220
movq (%rbx), %rdi
cmpq %r15, %rdi
je 0xf37d
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf39a
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfed6
movq 0x18(%rsp), %rsi
jmp 0xfece
cmpl $0x2f, %r15d
ja 0xf790
orl $0x2, %ebx
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x42970(%rip), %rsi     # 0x51d4c
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x4a6fc
leaq 0x4240(%rsp), %rbx
leaq 0x42906(%rip), %rsi     # 0x51d00
leaq 0x28(%rsp), %rdi
callq 0x4350
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfc8f
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xfc98
cmpl $0x280, %r15d           # imm = 0x280
setb %al
testb $0x1, %r15b
sete %cl
testb %cl, %al
je 0xf816
orl $0x2, %ebx
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x428e5(%rip), %rsi     # 0x51d4c
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x4a6fc
leaq 0x4240(%rsp), %rbx
leaq 0x42866(%rip), %rsi     # 0x51ceb
leaq 0x28(%rsp), %rdi
callq 0x4350
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfd10
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xfd19
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x42860(%rip), %rsi     # 0x51d4c
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf584
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xf58c
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x42800(%rip), %rsi     # 0x51d4c
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf6d3
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xf6db
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xf5de
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5fb
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf616
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
cmpl $0x3f, %r15d
ja 0xf670
leaq 0x426be(%rip), %rsi     # 0x51ce1
leaq 0x4230(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x4a76c
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xfed6
movq 0x4240(%rsp), %rsi
jmp 0xfece
leaq 0x42660(%rip), %rsi     # 0x51cd7
leaq 0x1a0(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x4a76c
leaq 0x4264a(%rip), %rsi     # 0x51cdd
leaq 0x1a0(%rsp), %rdi
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfb52
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xfb5a
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xf72d
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf74a
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf765
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
cmpl $0x50, %r15d
jae 0xf777
leaq 0x42541(%rip), %rbx     # 0x51cb3
jmp 0xed3f
cmpl $0x80, %r15d
jae 0xf893
leaq 0x42531(%rip), %rbx     # 0x51cbc
jmp 0xed3f
cmpl $0x383, %r15d           # imm = 0x383
ja 0xfbca
movl %ebx, %esi
leaq 0x8(%rsp), %rdi
movl $0x1, %edx
callq 0x3f707
leaq 0x42597(%rip), %rsi     # 0x51d4c
leaq 0x1a0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4a6fc
leaq 0x4240(%rsp), %rbx
leaq 0x4253b(%rip), %rsi     # 0x51d11
leaq 0x1a0(%rsp), %rdi
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x10314
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0x1031c
orl $0x3, %ebx
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x4251a(%rip), %rsi     # 0x51d4c
leaq 0x1a0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4a6fc
leaq 0x4240(%rsp), %rbx
leaq 0x42494(%rip), %rsi     # 0x51ce7
leaq 0x1a0(%rsp), %rdi
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfd91
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xfd99
cmpl $0xff, %r15d
ja 0xfc47
leaq 0x4241e(%rip), %rsi     # 0x51cc5
leaq 0x4230(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x4a76c
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
jmp 0xf652
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x423d9(%rip), %rsi     # 0x51ce0
callq 0x4350
movq %r12, 0x1a0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf995
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0xf99f
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x4237c(%rip), %rsi     # 0x51ce0
callq 0x4350
movq %r12, 0x1a0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf9ff
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0xfa09
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
callq 0x4080
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfa69
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xfa71
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
callq 0x4080
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfaa8
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xfab0
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
jmp 0xfae5
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xfb02
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0xfb1f
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xfb36
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfed6
movq 0x38(%rsp), %rsi
jmp 0xfece
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xfbac
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0xfed6
movq 0x1b0(%rsp), %rsi
jmp 0xfece
orl $0x3, %ebx
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x3f707
leaq 0x42166(%rip), %rsi     # 0x51d4c
leaq 0x1a0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4a6fc
leaq 0x4240(%rsp), %rbx
leaq 0x420e0(%rip), %rsi     # 0x51ce7
leaq 0x1a0(%rsp), %rdi
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x103cd
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0x103d5
cmpl $0x3bf, %r15d           # imm = 0x3BF
ja 0x102d9
leaq 0x42070(%rip), %rsi     # 0x51ccb
leaq 0x4230(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x4a76c
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
jmp 0xf652
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1a0(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x4a660
leaq 0x42037(%rip), %rsi     # 0x51d07
leaq 0x1a0(%rsp), %rdi
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfdd3
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xfddb
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1a0(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x4a660
leaq 0x41fa2(%rip), %rsi     # 0x51cf3
leaq 0x1a0(%rsp), %rdi
callq 0x4350
movq %rbx, 0x4230(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfe12
movq %rdx, 0x4230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4240(%rsp)
jmp 0xfe1a
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
jmp 0x1040a
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
jmp 0xfe4f
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0xfe6c
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0xfe89
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xfea0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfebb
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfed6
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xfefb
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xff20
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
xorpd %xmm0, %xmm0
leaq 0xd0(%rsp), %rdx
movapd %xmm0, 0x10(%rdx)
movapd %xmm0, (%rdx)
movl $0x0, 0x20(%rdx)
movq 0x68(%rsp), %rsi
leaq 0x4230(%rsp), %rdi
callq 0x40c33
leaq 0x8(%rsp), %rdi
leaq 0x4230(%rsp), %rbx
movq %rbx, %rsi
callq 0x4220
movq (%rbx), %rdi
leaq 0x4240(%rsp), %rax
cmpq %rax, %rdi
movq 0x108(%rsp), %r13
je 0xffa0
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x4230(%rsp), %rdi
callq 0x4a7f4
movq 0x128(%rsp), %rbx
leaq 0x4230(%rsp), %rdi
movq 0x120(%rsp), %rax
movq %rax, 0x180(%rdi)
leaq 0x46d2d(%rip), %r15     # 0x56d00
movq %r15, 0x90(%rsp)
leaq 0x46d5e(%rip), %r12     # 0x56d40
movq %r12, 0x98(%rsp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0xa0(%rsp)
movupd %xmm0, 0xb0(%rsp)
movq $-0x1, 0xc0(%rsp)
movq $0x80, 0xc8(%rsp)
callq 0xdd2a
leaq 0x98(%rsp), %rcx
movq 0x8(%rsp), %rsi
leaq 0x4230(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0xdf20
leaq 0x28(%rsp), %rdi
movq %r13, %rsi
movl $0x1, %edx
callq 0x3f707
testq %rbx, %rbx
je 0x1012c
leaq 0x58(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %rdi
callq 0x4e38
leaq 0x41b3d(%rip), %rsi     # 0x51bbe
leaq 0x48(%rsp), %rdi
callq 0x4350
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x4350
leaq 0x1b0(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x100c8
movq %rdx, 0x1a0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b0(%rsp)
jmp 0x100d1
movupd (%rcx), %xmm0
movupd %xmm0, (%rbp)
movq 0x8(%rax), %rdx
leaq 0x1a0(%rsp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x28(%rsp), %rdi
movq %rbx, %rsi
callq 0x4220
movq (%rbx), %rdi
cmpq %rbp, %rdi
je 0x10115
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x1012c
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x28(%rsp), %rdx
leaq 0x4230(%rsp), %rdi
movq 0x118(%rsp), %rsi
callq 0xdfde
movl 0xd4(%rsp), %eax
leal -0x1(%rax), %ecx
cmpl $0x7, %ecx
setae %cl
cmpl $0x4, %eax
sete %dl
orb %cl, %dl
jne 0x101b5
leaq 0x1a0(%rsp), %rbx
leaq 0xd0(%rsp), %rdx
movq %rbx, %rdi
movq 0x88(%rsp), %rsi
xorl %ecx, %ecx
callq 0x40516
leaq 0x4230(%rsp), %rdi
movq %rbx, 0x1b1d0(%rdi)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xe19c
leaq 0x46a36(%rip), %rax     # 0x56bd8
leaq 0x1a8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x4a3a0
jmp 0x101f2
andl $-0x4, %eax
cmpl $0x4, %eax
jne 0x101d1
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rdi
movl 0x20(%rax), %esi
callq 0x3f8ab
leaq 0x4230(%rsp), %rdi
movq 0x88(%rsp), %rax
movq %rax, 0x1b1d0(%rdi)
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xe19c
leaq 0x4230(%rsp), %rdi
movq 0x100(%rsp), %rsi
callq 0xe2ce
movq 0x43b0(%rsp), %rdi
movq (%rdi), %rax
movl $0xff, %esi
callq *(%rax)
movl $0x0, 0x1f48c(%rsp)
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1023f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
movq %r15, 0x90(%rsp)
movq %r12, 0x98(%rsp)
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x10261
callq 0x4200
leaq 0x1f3e8(%rsp), %rdi
callq 0x4a034
leaq 0x43c0(%rsp), %rdi
callq 0xb1b8
leaq 0x42f0(%rsp), %rdi
callq 0x9d40
leaq 0x4230(%rsp), %rdi
callq 0x9d40
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x102ac
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x102c7
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4180
addq $0x1f498, %rsp          # imm = 0x1F498
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x419f1(%rip), %rsi     # 0x51cd1
leaq 0x4230(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x4a76c
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
jmp 0xf652
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1036e
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
je 0x1038b
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x103a6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x3ec2a(%rip), %rbx     # 0x4efd7
testb $0x1, %r15b
je 0xed3f
leaq 0x3f185(%rip), %rsi     # 0x4f543
leaq 0x68(%rsp), %rdi
callq 0x4350
jmp 0xed3f
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x4238(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x4230(%rsp), %rsi
movq 0x4238(%rsp), %rdx
leaq 0x68(%rsp), %rdi
callq 0x4080
movq 0x4230(%rsp), %rdi
cmpq %rbx, %rdi
je 0x10427
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x1a0(%rsp), %rdi
cmpq %r12, %rdi
jne 0xf38a
jmp 0xf39a
jmp 0x10551
jmp 0x10551
jmp 0x1080c
jmp 0x1080c
jmp 0x10551
jmp 0x1080c
jmp 0x1061d
jmp 0x1061d
jmp 0x10644
jmp 0x10644
jmp 0x106e7
jmp 0x106e7
jmp 0x1080c
jmp 0x1080c
jmp 0x10485
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x104af
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x104af
jmp 0x104ac
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x104e0
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x104e0
jmp 0x1061d
jmp 0x104dd
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x10503
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x10503
jmp 0x10644
jmp 0x10500
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1052a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x1052a
jmp 0x106e7
jmp 0x10527
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x1085e
jmp 0x1080c
jmp 0x1080c
jmp 0x1080c
jmp 0x10677
jmp 0x106be
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x10870
movq 0x4240(%rsp), %rsi
jmp 0x10868
jmp 0x10577
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x105ab
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x105ab
jmp 0x1080c
jmp 0x1080c
jmp 0x105a8
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x105d7
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x105d7
jmp 0x105d4
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x105f5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x105f5
jmp 0x105f2
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10870
movq 0x38(%rsp), %rsi
jmp 0x10868
jmp 0x1080c
jmp 0x1080c
jmp 0x1061d
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x10647
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x10647
jmp 0x10644
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
jne 0x106ac
jmp 0x106ea
jmp 0x106e7
jmp 0x106e7
jmp 0x1080c
jmp 0x1080c
jmp 0x1080c
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x106c1
movq 0x4240(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x106c1
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x106ea
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x106ea
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x10870
movq 0x1b0(%rsp), %rsi
jmp 0x10868
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10870
movq 0x18(%rsp), %rsi
jmp 0x10868
jmp 0x1080c
jmp 0x1080c
jmp 0x1080c
movq %rax, %rbx
leaq 0x464b9(%rip), %rax     # 0x56bd8
leaq 0x1a8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x4a3a0
jmp 0x108bc
jmp 0x108b9
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x10895
movq 0x4240(%rsp), %rsi
jmp 0x1088d
movq %rax, %rbx
jmp 0x10895
movq %rbx, %rcx
movq %rax, %rbx
movq 0x4230(%rsp), %rdi
cmpq %rcx, %rdi
je 0x1091d
movq 0x4240(%rsp), %rsi
jmp 0x10915
jmp 0x107b1
movq %rax, %rbx
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1091d
movq 0x1b0(%rsp), %rsi
jmp 0x10915
movq %rax, %rbx
jmp 0x1091d
jmp 0x107bb
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x108bc
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4180
jmp 0x108bc
jmp 0x108b9
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
jne 0x1082b
jmp 0x10838
jmp 0x10811
jmp 0x10816
jmp 0x1080c
jmp 0x108b4
jmp 0x10804
movq %rax, %rbx
jmp 0x10906
movq %rax, %rbx
jmp 0x10870
movq %rax, %rbx
jmp 0x10838
movq %rax, %rbx
jmp 0x10854
movq %rbx, %rcx
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %rcx, %rdi
je 0x10838
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x10854
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x10870
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0x10895
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x4180
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x1091d
movq 0xa0(%rsp), %rsi
jmp 0x10915
movq %rax, %rbx
jmp 0x108d7
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x108d7
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x4180
movq %r15, 0x90(%rsp)
movq %r12, 0x98(%rsp)
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x108f9
callq 0x4200
leaq 0x4230(%rsp), %rdi
callq 0x4a8aa
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x1091d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4180
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x10938
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x4180
movq %rbx, %rdi
callq 0x4310