// File: /workspace/github_cpp_makefile_star2_O1/cajun-jsonapi[P]cajun-jsonapi/example.cpp
// Function: main
int main()
{
   using namespace json;

   /* we'll generate: 
      {
         "Delicious Beers" : [
            {
               "Name" : "Schlafly American Pale Ale",
               "Origin" : "St. Louis, MO, USA",
               "ABV" : 5.9,
               "BottleConditioned" : true
            },
            {
               "Name" : "John Smith's Extra Smooth",
               "Origin" : "Tadcaster, Yorkshire, UK",
               "ABV" : 3.8,
               "Bottle Conditioned" : false
            }
         ]
      }
   */

   ////////////////////////////////////////////////////////////////////
   // construction

   // we can build a document piece by piece...
   Object objAPA;
   objAPA["Name"] = String("Schlafly American Pale Ale");
   objAPA["Origin"] = String("St. Louis, MO, USA");
   objAPA["ABV"] = Number(3.8);
   objAPA["BottleConditioned"] = Boolean(true);

   Array arrayBeer;
   arrayBeer.Insert(objAPA);

   Object objDocument;
   objDocument["Delicious Beers"] = arrayBeer;

   Number numDeleteThis = objDocument["AnotherMember"];

   // ...or, we can use UnknownElement's chaining child element access to quickly
   //  construct the remainder

   objDocument["Delicious Beers"][1]["Name"] = String("John Smith's Extra Smooth");
   objDocument["Delicious Beers"][1]["Origin"] = String("Tadcaster, Yorkshire, UK");
   objDocument["Delicious Beers"][1]["ABV"] = Number(3.8);
   objDocument["Delicious Beers"][1]["BottleConditioned"] = Boolean(false);

   
   ////////////////////////////////////////////////////////////////////
   // interpretation
      
   // perform all read operations on a const ref, otherwise we may end up
   //  manipulating the document instead of catching errors
   const Object& objRoot = objDocument;

   // the return type of Object::operator[string] & Array::operator[size_t] is UnknownElement, which 
   //  provides implicit casting to any of the other element types...
   const Array& arrayBeers = objRoot["Delicious Beers"];
   const Object& objBeer0 = arrayBeers[0];
   const String& strName0 = objBeer0["Name"];

   // ...it also supports operator[string] & operator[size_t] itself, which takes the implicit casting
   //  one step further. operator[string] implicitly casts to Object, and operator[size_t] to Array.
   //  the return value is another UnknownElement, so these operations can be strung together
   const Number numAbv1 = objRoot["Delicious Beers"][1]["ABV"];

   std::cout << "First beer name: " << strName0.Value() << std::endl;
   std::cout << "First beer ABV: " << numAbv1.Value() << std::endl;

   // we can also iterate through the child elements of an array or object, which is necessary
   //  when we don't know the structure of the document
   Array::const_iterator itBeers(arrayBeers.Begin()),
                         itBeersEnd(arrayBeers.End());
   for (; itBeers != itBeersEnd; ++itBeers)
   {
      // remember, *itArray is an UnknownElement, which can be implicitly cast to another element type
      const Object& objBeer = *itBeers;
      Object::const_iterator itBeerFacts(objBeer.Begin()),
                             itBeerFactsEnd(objBeer.End());
      for (; itBeerFacts != itBeerFactsEnd; ++itBeerFacts)
      {
         const Object::Member& member = *itBeerFacts;
         const std::string& name = member.name;
         const UnknownElement& element = member.element;

         // if we didn't know the structure of the itBeerFacts subtree, we could visit it
         // element.Accept(nonExistantVisitor);
      }
   }

   // everything's cool until we try to access a non-existent array element
   try
   {
      std::cout << "Expecting exception: Array out of bounds" << std::endl;
      const String& strName2 = arrayBeers[2];
   }
   catch (const Exception& e)
   {
      std::cout << "Caught json::Exception: " << e.what() << std::endl << std::endl;
   }

   // an exception will be thrown when expected data not found, since "Rice" is never a member of good beer
   try 
   {
      std::cout << "Expecting exception: Object member not found" << std::endl;
      const Boolean& boolRice = objRoot["Delicious Beers"][1]["Rice"];
   }
   catch (const Exception& e)
   {
      std::cout << "Caught json::Exception: " << e.what() << std::endl << std::endl;
   }

   // we'll also get an error if the document structure isn't quite what we expect
   try 
   {
      // objRoot["Delicious Beers"] is an Array, not another Object, so the second chained operator[string] will fail
      std::cout << "Expecting exception: Bad cast" << std::endl;
      const UnknownElement& elem = objRoot["Delicious Beers"]["Some Object Member"];
   }
   catch (json::Exception& e)
   {
      std::cout << "Caught json::Exception: " << e.what() << std::endl << std::endl;
   }


   ////////////////////////////////////////////////////////////////////
   // document deep copying
    
   // we can make an exact duplicate too
   Object objRoot2 = objRoot; 

   // the two documents should start out equal
   bool bEqualInitially = (objRoot == objRoot2);
   std::cout << "Document copies should start out equivalent. operator == returned: "
             << (bEqualInitially ? "true" : "false") << std::endl;

   // prove objRoot2 is a deep copy of objRoot:
   //  remove Beers[1]
   Array& array = objRoot2["Delicious Beers"];
   array.Erase(array.Begin()); // trim it down to one. this leaves elemRoot the same

   // the two documents should start out equal
   bool bEqualNow = (objRoot == objRoot2);
   std::cout << "Document copies should now be different. operator == returned: "
             << (bEqualNow ? "true" : "false") << std::endl << std::endl;


   ////////////////////////////////////////////////////////////////////
   // read/write sanity check

   // write it out to a string stream (file stream would work the same)....
   std::cout << "Writing file out...";

   std::stringstream stream;
   Writer::Write(objRoot, stream);

   // ...then read it back in. we know it's an Object
   std::cout << "then reading it back in." << std::endl;
   Object elemRootFile;
   Reader::Read(elemRootFile, stream);

   // still look right?
   bool bEquals = (objRoot == elemRootFile);
   std::cout << "Original document and streamed document should be equivalent. operator == returned: "
      << (bEquals ? "true" : "false") << std::endl << std::endl;


   ////////////////////////////////////////////////////////////////////
   // document read error handling

   // mis-predicting type type will fail with a parse error. we'll try reading an array into an object
   try
   {
      std::istringstream sBadDocument("[1, 2]"); // missing comma!
      std::cout << "Reading Object-based document into an Array; expecting Parse exception" << std::endl;
      Object objDocument;
      Reader::Read(objDocument, sBadDocument);
   }
   catch (Reader::ParseException& e)
   {
      // lines/offsets are zero-indexed, so bump them up by one for human presentation
      std::cout << "Caught json::ParseException: " << e.what() << ", Line/offset: " << e.m_locTokenBegin.m_nLine + 1
                << '/' << e.m_locTokenBegin.m_nLineOffset + 1 << std::endl << std::endl;
   }

   // reading in a slightly malformed document may result in a parse error
   try
   {
      std::istringstream sBadDocument("[1, 2 3]"); // missing comma!
      std::cout << "Reading malformed document; expecting Parse exception" << std::endl;
      Array arrayDocument;
      Reader::Read(arrayDocument, sBadDocument);
   }
   catch (Reader::ParseException& e)
   {
      std::cout << "Caught json::ParseException: " << e.what() << ", Line/offset: " << e.m_locTokenBegin.m_nLine + 1
                << '/' << e.m_locTokenBegin.m_nLineOffset + 1 << std::endl << std::endl;
   }

   // reading in gibberish will generate a scan error
   try
   {
      std::istringstream sBadDocument("[true, false, true, #.&@k*k4L!`1");
      std::cout << "Reading complete garbage; expecting Scan exception" << std::endl;
      Array arrayDocument;
      Reader::Read(arrayDocument, sBadDocument);
   }
   catch (Reader::ScanException& e)
   {
      std::cout << "Caught json::ScanException: " << e.what() << ", Line/offset: " << e.m_locError.m_nLine + 1
                << '/' << e.m_locError.m_nLineOffset + 1 << std::endl << std::endl;
   }

   try {
      std::istringstream sIncompleteDocument("[ true, ");
      std::cout << "Reading incomplete document; expecting Parse exception" << std::endl;

      json::Array arrayDocument;
      json::Reader::Read(arrayDocument, sIncompleteDocument);
   }
   catch (Reader::ParseException& e)
   {
      std::cout << "Caught json::ParseException: " << e.what() << ", Line/offset: " << e.m_locTokenBegin.m_nLine + 1
                << '/' << e.m_locTokenBegin.m_nLineOffset + 1 << std::endl << std::endl;
   }


   return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x428, %rsp            # imm = 0x428
leaq -0xc8(%rbp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
leaq -0x3c0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x9ac0(%rip), %rsi      # 0xe0c8
leaq 0x9ad3(%rip), %rdx      # 0xe0e2
leaq -0x3d0(%rbp), %rdi
callq 0xdc0e
leaq -0x240(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x250(%rbp), %rdi
callq 0x735e
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
leaq 0xefa1(%rip), %r13      # 0x135f8
movq %r13, (%rax)
leaq 0x8(%rax), %rdi
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x250(%rbp), %rsi
movq -0x248(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
leaq -0x420(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9a55(%rip), %rsi      # 0xe0e3
leaq 0x9a52(%rip), %rdx      # 0xe0e7
leaq -0x430(%rbp), %rdi
callq 0xdc0e
leaq -0xc8(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x46d5
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x430(%rbp), %rdi
cmpq %rbx, %rdi
je 0x46f0
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x471b
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x473d
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x9993(%rip), %rsi      # 0xe0e8
leaq 0x999e(%rip), %rdx      # 0xe0fa
callq 0xdc0e
leaq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
movq %rax, (%rdi)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
movq %r13, (%rax)
leaq 0x8(%rax), %rdi
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x250(%rbp), %rsi
movq -0x248(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
leaq -0x430(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x9930(%rip), %rsi      # 0xe0fb
leaq 0x992f(%rip), %rdx      # 0xe101
callq 0xdc0e
leaq -0xc8(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x480b
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x430(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4826
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rbx
cmpq %rbx, %rdi
je 0x4851
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x4873
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
movabsq $0x400e666666666666, %rax # imm = 0x400E666666666666
leaq 0xef37(%rip), %rcx      # 0x137c8
movq %rcx, (%r15)
movq %rax, 0x8(%r15)
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x9859(%rip), %rsi      # 0xe102
leaq 0x9855(%rip), %rdx      # 0xe105
callq 0xdc0e
leaq -0xc8(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x48e9
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4904
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
leaq 0xef67(%rip), %rax      # 0x13888
movq %rax, (%r15)
movb $0x1, 0x8(%r15)
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x97cc(%rip), %rsi      # 0xe106
leaq 0x97d6(%rip), %rdx      # 0xe117
callq 0xdc0e
leaq -0xc8(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x497a
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4995
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
xorps %xmm0, %xmm0
leaq -0x430(%rbp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x7b28
movl $0x20, %edi
callq 0x4220
movq %rax, %r15
leaq 0xef72(%rip), %rax      # 0x13948
movq %rax, (%r15)
movq %r15, %rdi
addq $0x8, %rdi
leaq -0xc8(%rbp), %rsi
callq 0xa56a
leaq -0x90(%rbp), %rcx
movq %r15, (%rcx)
leaq -0x430(%rbp), %rsi
movaps 0x30(%rsi), %xmm0
movaps 0x40(%rsi), %xmm1
leaq -0x250(%rbp), %rdx
movups %xmm0, (%rdx)
movups %xmm1, 0x10(%rdx)
leaq -0x3d0(%rbp), %rdi
callq 0x7cb0
movq -0x90(%rbp), %rdi
testq %rdi, %rdi
je 0x4a31
movq (%rdi), %rax
callq *0x8(%rax)
leaq -0x40(%rbp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
movl $0x58, %edi
callq 0x4220
movq %rax, %r15
leaq 0xefb0(%rip), %rax      # 0x13a08
movq %rax, (%r15)
movq %r15, %rdi
addq $0x8, %rdi
leaq -0x430(%rbp), %rsi
callq 0x9234
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x9699(%rip), %rsi      # 0xe118
leaq 0x96a1(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4abc
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4ad7
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x9637(%rip), %rsi      # 0xe128
leaq 0x963d(%rip), %rdx      # 0xe135
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6d88
movq %rax, %rdi
callq 0x9780
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4b30
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x95ee(%rip), %rsi      # 0xe136
leaq 0x9600(%rip), %rdx      # 0xe14f
callq 0xdc0e
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
movq %r13, (%rax)
leaq 0x8(%rax), %rdi
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x250(%rbp), %rsi
movq -0x248(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
leaq -0x80(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x9563(%rip), %rsi      # 0xe118
leaq 0x956b(%rip), %rdx      # 0xe127
leaq -0x90(%rbp), %rdi
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6d88
movq %rax, %rdi
callq 0x9880
movq %rax, %r14
movq 0x48(%rax), %rax
movq %rax, %rcx
subq 0x28(%r14), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x6, %rcx
movq 0x30(%r14), %rax
subq 0x38(%r14), %rax
movq 0x20(%r14), %rdx
sarq $0x3, %rax
subq 0x10(%r14), %rdx
sarq $0x3, %rdx
addq %rax, %rdx
addq %rcx, %rdx
cmpq $0x1, %rdx
ja 0x4c2f
movl $0x2, %esi
movq %r14, %rdi
callq 0x999e
movq 0x10(%r14), %r12
movq %r12, %rcx
subq 0x18(%r14), %rcx
movabsq $-0x400000000000000, %r13 # imm = 0xFC00000000000000
sarq $0x3, %rcx
leaq 0x1(%rcx), %rax
cmpq $0x3f, %rax
ja 0x4c58
addq $0x8, %r12
jmp 0x4c85
movq %rax, %rdx
shrq $0x6, %rdx
movq %rdx, %rsi
orq %r13, %rsi
testq %rcx, %rcx
cmovnsq %rdx, %rsi
movq 0x28(%r14), %rcx
movq %rsi, %rdx
shlq $0x6, %rdx
subq %rdx, %rax
shlq $0x3, %rax
addq (%rcx,%rsi,8), %rax
movq %rax, %r12
leaq -0xa0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x944c(%rip), %rsi      # 0xe0e3
leaq 0x9449(%rip), %rdx      # 0xe0e7
leaq -0xb0(%rbp), %rdi
callq 0xdc0e
movq %r12, %rdi
callq 0x9e92
leaq -0xb0(%rbp), %rsi
movq %rax, %rdi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4ce2
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0xb0(%rbp), %rdi
cmpq %rbx, %rdi
leaq -0x80(%rbp), %r14
je 0x4d01
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x4d19
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x4d44
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x4d66
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x93d2(%rip), %rsi      # 0xe150
leaq 0x93e3(%rip), %rdx      # 0xe168
callq 0xdc0e
leaq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
movq %rax, (%rdi)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
leaq 0xe833(%rip), %rax      # 0x135f8
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
movq %r15, %rax
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x250(%rbp), %rsi
movq -0x248(%rbp), %rdx
addq %rsi, %rdx
callq 0x735e
leaq -0x90(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x931a(%rip), %rsi      # 0xe118
leaq 0x9322(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6d88
movq %rax, %rdi
callq 0x9880
movq %rax, %r14
movq 0x48(%rax), %rax
movq %rax, %rcx
subq 0x28(%r14), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x6, %rcx
movq 0x30(%r14), %rax
subq 0x38(%r14), %rax
movq 0x20(%r14), %rdx
sarq $0x3, %rax
subq 0x10(%r14), %rdx
sarq $0x3, %rdx
addq %rax, %rdx
addq %rcx, %rdx
cmpq $0x1, %rdx
ja 0x4e71
movl $0x2, %esi
movq %r14, %rdi
callq 0x999e
movq 0x10(%r14), %r12
movq %r12, %rcx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %rax
cmpq $0x3f, %rax
ja 0x4e90
addq $0x8, %r12
jmp 0x4ebd
movq %rax, %rdx
shrq $0x6, %rdx
movq %rdx, %rsi
orq %r13, %rsi
testq %rcx, %rcx
cmovnsq %rdx, %rsi
movq 0x28(%r14), %rcx
movq %rsi, %rdx
shlq $0x6, %rdx
subq %rdx, %rax
shlq $0x3, %rax
addq (%rcx,%rsi,8), %rax
movq %rax, %r12
leaq -0xb0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x922d(%rip), %rsi      # 0xe0fb
leaq 0x922c(%rip), %rdx      # 0xe101
callq 0xdc0e
movq %r12, %rdi
callq 0x9e92
leaq -0xb0(%rbp), %rsi
movq %rax, %rdi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4f12
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0xb0(%rbp), %rdi
cmpq %rbx, %rdi
leaq -0x80(%rbp), %rbx
je 0x4f31
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x90(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4f49
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rbx
cmpq %rbx, %rdi
je 0x4f74
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x4f96
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
leaq 0xe81e(%rip), %rax      # 0x137c8
movq %rax, (%r15)
movabsq $0x400e666666666666, %rax # imm = 0x400E666666666666
movq %rax, 0x8(%r15)
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x914c(%rip), %rsi      # 0xe118
leaq 0x9154(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6d88
movq %rax, %rdi
callq 0x9880
movq %rax, %r14
movq 0x48(%rax), %rax
movq %rax, %rcx
subq 0x28(%r14), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x6, %rcx
movq 0x30(%r14), %rax
subq 0x38(%r14), %rax
movq 0x20(%r14), %rdx
sarq $0x3, %rax
subq 0x10(%r14), %rdx
sarq $0x3, %rdx
addq %rax, %rdx
addq %rcx, %rdx
cmpq $0x1, %rdx
ja 0x503f
movl $0x2, %esi
movq %r14, %rdi
callq 0x999e
movq 0x10(%r14), %r12
movq %r12, %rcx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %rax
cmpq $0x3f, %rax
ja 0x505e
addq $0x8, %r12
jmp 0x508b
movq %rax, %rdx
shrq $0x6, %rdx
movq %rdx, %rsi
orq %r13, %rsi
testq %rcx, %rcx
cmovnsq %rdx, %rsi
movq 0x28(%r14), %rcx
movq %rsi, %rdx
shlq $0x6, %rdx
subq %rdx, %rax
shlq $0x3, %rax
addq (%rcx,%rsi,8), %rax
movq %rax, %r12
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x905f(%rip), %rsi      # 0xe102
leaq 0x905b(%rip), %rdx      # 0xe105
callq 0xdc0e
movq %r12, %rdi
callq 0x9e92
leaq -0x3d0(%rbp), %rsi
movq %rax, %rdi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x50e7
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x5109
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5124
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
leaq 0xe747(%rip), %rax      # 0x13888
movq %rax, (%r15)
movb $0x0, 0x8(%r15)
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8fbe(%rip), %rsi      # 0xe118
leaq 0x8fc6(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6d88
movq %rax, %rdi
callq 0x9880
movq %rax, %r14
movq 0x48(%rax), %rax
movq %rax, %rcx
subq 0x28(%r14), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
shlq $0x6, %rcx
movq 0x30(%r14), %rax
subq 0x38(%r14), %rax
movq 0x20(%r14), %rdx
sarq $0x3, %rax
subq 0x10(%r14), %rdx
sarq $0x3, %rdx
addq %rax, %rdx
addq %rcx, %rdx
cmpq $0x1, %rdx
ja 0x51cd
movl $0x2, %esi
movq %r14, %rdi
callq 0x999e
movq 0x10(%r14), %r12
movq %r12, %rcx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %rax
cmpq $0x3f, %rax
ja 0x51ec
addq $0x8, %r12
jmp 0x5216
movq %rax, %rdx
shrq $0x6, %rdx
orq %rdx, %r13
testq %rcx, %rcx
cmovnsq %rdx, %r13
movq 0x28(%r14), %rcx
movq %r13, %rdx
shlq $0x6, %rdx
subq %rdx, %rax
shlq $0x3, %rax
addq (%rcx,%r13,8), %rax
movq %rax, %r12
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8ed8(%rip), %rsi      # 0xe106
leaq 0x8ee2(%rip), %rdx      # 0xe117
callq 0xdc0e
movq %r12, %rdi
callq 0x9e92
leaq -0x3d0(%rbp), %rsi
movq %rax, %rdi
callq 0x6d88
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x5272
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x5294
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x52af
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8e4f(%rip), %rsi      # 0xe118
leaq 0x8e57(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6ed4
movq %rax, %rdi
callq 0xa11e
movq %rax, %r14
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x530b
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq %r14, %rdi
xorl %esi, %esi
callq 0x7028
movq %rax, %rdi
callq 0xa1fa
movq %rax, %r15
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8db2(%rip), %rsi      # 0xe0e3
leaq 0x8daf(%rip), %rdx      # 0xe0e7
callq 0xdc0e
leaq -0x250(%rbp), %rsi
movq %r15, %rdi
callq 0x6ed4
movq %rax, %rdi
callq 0xa2d6
movq %rax, %r15
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5372
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8d95(%rip), %rsi      # 0xe118
leaq 0x8d9d(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6ed4
movq %rax, %rdi
callq 0xa11e
movl $0x1, %esi
movq %rax, %rdi
callq 0x7028
movq %rax, %r12
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8d33(%rip), %rsi      # 0xe102
leaq 0x8d2f(%rip), %rdx      # 0xe105
callq 0xdc0e
movq %r12, %rdi
callq 0xa1fa
leaq -0x3d0(%rbp), %rsi
movq %rax, %rdi
callq 0x6ed4
movq %rax, %rdi
callq 0xa3b2
movsd (%rax), %xmm0
movsd %xmm0, -0x3d8(%rbp)
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x5428
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5443
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xeb8e(%rip), %rdi      # 0x13fd8
leaq 0x8d18(%rip), %rsi      # 0xe169
movl $0x11, %edx
callq 0x4260
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq 0xeb6f(%rip), %rdi      # 0x13fd8
callq 0x4260
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq %r15, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq 0xeb39(%rip), %rdi      # 0x13fd8
leaq 0x8cd5(%rip), %rsi      # 0xe17b
movl $0x10, %edx
callq 0x4260
movq 0xeb21(%rip), %rdi      # 0x13fd8
movsd -0x3d8(%rbp), %xmm0
callq 0x42e0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq %r15, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq 0x10(%r14), %r15
movq 0x30(%r14), %rbx
cmpq %rbx, %r15
je 0x5529
movq 0x20(%r14), %r13
movq 0x28(%r14), %r12
movq %r15, %rdi
callq 0xa1fa
addq $0x8, %r15
cmpq %r13, %r15
jne 0x5524
movq 0x8(%r12), %r15
addq $0x8, %r12
leaq 0x200(%r15), %r13
cmpq %rbx, %r15
jne 0x5503
movq 0xeaa8(%rip), %r15      # 0x13fd8
leaq 0x8c55(%rip), %rsi      # 0xe18c
movl $0x28, %edx
movq %r15, %rdi
callq 0x4260
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xea76(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
movl $0x2, %esi
movq %r14, %rdi
leaq -0x240(%rbp), %rbx
callq 0x7028
movq %rax, %rdi
callq 0xa2d6
movq 0xea46(%rip), %r14      # 0x13fd8
leaq 0x8c35(%rip), %rsi      # 0xe1ce
movl $0x2c, %edx
movq %r14, %rdi
callq 0x4260
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xea14(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8b36(%rip), %rsi      # 0xe118
leaq 0x8b3e(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6ed4
movq %rax, %rdi
callq 0xa11e
movl $0x1, %esi
movq %rax, %rdi
callq 0x7028
movq %rax, %r14
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8bcd(%rip), %rsi      # 0xe1fb
leaq 0x8bca(%rip), %rdx      # 0xe1ff
callq 0xdc0e
movq %r14, %rdi
callq 0xa1fa
leaq -0x3d0(%rbp), %rsi
movq %rax, %rdi
callq 0x6ed4
movq %rax, %rdi
callq 0xa48e
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x567b
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5696
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe93b(%rip), %r14      # 0x13fd8
leaq 0x8b5c(%rip), %rsi      # 0xe200
movl $0x1d, %edx
movq %r14, %rdi
callq 0x4260
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe909(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8a2b(%rip), %rsi      # 0xe118
leaq 0x8a33(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0x40(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x6ed4
movq %rax, %r14
leaq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8afa(%rip), %rsi      # 0xe21e
leaq 0x8b05(%rip), %rdx      # 0xe230
callq 0xdc0e
movq %r14, %rdi
callq 0xa1fa
leaq -0x3d0(%rbp), %rsi
movq %rax, %rdi
callq 0x6ed4
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x5769
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5784
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0xb0(%rbp), %r15
leaq -0x40(%rbp), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0xa56a
movq -0x30(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jne 0x582f
leaq -0x40(%rbp), %r13
movq %r13, %rbx
movq %r15, %r12
movq (%r12), %r12
movq (%rbx), %rbx
cmpq %r15, %r12
setne %al
cmpq %r13, %rbx
je 0x5800
testb %al, %al
je 0x5800
movq 0x18(%rbx), %rdx
cmpq 0x18(%r12), %rdx
jne 0x5800
testq %rdx, %rdx
je 0x57ed
movq 0x10(%r12), %rsi
movq 0x10(%rbx), %rdi
callq 0x4240
testl %eax, %eax
jne 0x5800
movq 0x30(%rbx), %rdi
movq 0x30(%r12), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
testb %al, %al
jne 0x57b5
leaq -0x40(%rbp), %rax
xorq %rax, %rbx
leaq -0xb0(%rbp), %rax
xorq %rax, %r12
orq %rbx, %r12
leaq 0x8a5a(%rip), %rax      # 0xe275
leaq 0x8dbd(%rip), %r15      # 0xe5df
cmoveq %rax, %r15
leaq -0x240(%rbp), %rbx
jmp 0x5836
leaq 0x8da9(%rip), %r15      # 0xe5df
movq 0xe79b(%rip), %rdi      # 0x13fd8
leaq 0x89ed(%rip), %rsi      # 0xe231
movl $0x43, %edx
callq 0x4260
movq %r15, %rdi
callq 0x40e0
movq 0xe77b(%rip), %r12      # 0x13fd8
movq %r12, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x4260
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe74e(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x250(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8870(%rip), %rsi      # 0xe118
leaq 0x8878(%rip), %rdx      # 0xe127
callq 0xdc0e
leaq -0xb0(%rbp), %r15
leaq -0x250(%rbp), %rsi
movq %r15, %rdi
callq 0x6d88
movq %rax, %rdi
callq 0x9880
movq %rax, %r12
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x58f0
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0x10(%r12), %rax
movq 0x28(%r12), %rcx
leaq -0x250(%rbp), %rdx
movq %rax, (%rdx)
movq (%rcx), %rax
movq %rax, 0x8(%rdx)
addq $0x200, %rax            # imm = 0x200
movq %rax, 0x10(%rdx)
movq %rcx, 0x18(%rdx)
leaq -0x3d0(%rbp), %rdi
movq %r12, %rsi
callq 0xa66c
movq -0x30(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jne 0x59b9
movq %r14, %rbx
movq %r15, %r12
movq (%r12), %r12
movq (%rbx), %rbx
cmpq %r15, %r12
setne %al
cmpq %r14, %rbx
je 0x598a
testb %al, %al
je 0x598a
movq 0x18(%rbx), %rdx
cmpq 0x18(%r12), %rdx
jne 0x598a
testq %rdx, %rdx
je 0x5977
movq 0x10(%r12), %rsi
movq 0x10(%rbx), %rdi
callq 0x4240
testl %eax, %eax
jne 0x598a
movq 0x30(%rbx), %rdi
movq 0x30(%r12), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
testb %al, %al
jne 0x593f
leaq -0x40(%rbp), %rax
xorq %rax, %rbx
leaq -0xb0(%rbp), %rax
xorq %rax, %r12
orq %rbx, %r12
leaq 0x88d0(%rip), %rax      # 0xe275
leaq 0x8c33(%rip), %r14      # 0xe5df
cmoveq %rax, %r14
leaq -0x240(%rbp), %rbx
jmp 0x59c0
leaq 0x8c1f(%rip), %r14      # 0xe5df
movq 0xe611(%rip), %rdi      # 0x13fd8
leaq 0x88ac(%rip), %rsi      # 0xe27a
movl $0x3f, %edx
callq 0x4260
movq %r14, %rdi
callq 0x40e0
movq 0xe5f1(%rip), %r15      # 0x13fd8
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x4260
movq (%r15), %rax
addq -0x18(%rax), %r15
movq %r15, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe5c5(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq %r14, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq 0xe587(%rip), %rdi      # 0x13fd8
leaq 0x8862(%rip), %rsi      # 0xe2ba
movl $0x13, %edx
callq 0x4260
leaq -0x250(%rbp), %rdi
callq 0x4180
leaq 0xdafb(%rip), %rax      # 0x13570
leaq -0x3d0(%rbp), %rdi
movq %rax, (%rdi)
movq %rbx, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
leaq -0x40(%rbp), %r14
movq %r14, %rsi
callq 0xa98a
movq %rbx, %rdi
callq 0x4160
movq 0xe52f(%rip), %rbx      # 0x13fd8
leaq 0x881e(%rip), %rsi      # 0xe2ce
movl $0x18, %edx
movq %rbx, %rdi
callq 0x4260
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe4fd(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x448(%rbp), %rbx
movq %rbx, 0x8(%rbx)
movq %rbx, (%rbx)
movq $0x0, 0x10(%rbx)
leaq -0x250(%rbp), %rsi
movq %rbx, %rdi
callq 0xaf1c
movq -0x30(%rbp), %rax
cmpq -0x438(%rbp), %rax
jne 0x5b93
movq %r14, %r15
movq %rbx, %r12
movq (%r12), %r12
movq (%r15), %r15
cmpq %rbx, %r12
setne %al
cmpq %r14, %r15
je 0x5b6b
testb %al, %al
je 0x5b6b
movq 0x18(%r15), %rdx
cmpq 0x18(%r12), %rdx
jne 0x5b6b
testq %rdx, %rdx
je 0x5b58
movq 0x10(%r12), %rsi
movq 0x10(%r15), %rdi
callq 0x4240
testl %eax, %eax
jne 0x5b6b
movq 0x30(%r15), %rdi
movq 0x30(%r12), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
testb %al, %al
jne 0x5b20
leaq -0x40(%rbp), %rax
xorq %rax, %r15
leaq -0x448(%rbp), %rax
xorq %rax, %r12
orq %r15, %r12
leaq 0x86ef(%rip), %rax      # 0xe275
leaq 0x8a52(%rip), %rbx      # 0xe5df
cmoveq %rax, %rbx
jmp 0x5b9a
leaq 0x8a45(%rip), %rbx      # 0xe5df
leaq -0x80(%rbp), %r15
movq 0xe433(%rip), %rdi      # 0x13fd8
leaq 0x873b(%rip), %rsi      # 0xe2e7
movl $0x54, %edx
callq 0x4260
movq %rbx, %rdi
callq 0x40e0
movq 0xe413(%rip), %r14      # 0x13fd8
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x4260
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe3e7(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x8703(%rip), %rsi      # 0xe33c
leaq 0x8702(%rip), %rdx      # 0xe342
callq 0xdc0e
leaq -0x3d0(%rbp), %rdi
leaq -0x90(%rbp), %rbx
movq %rbx, %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5c78
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe359(%rip), %r14      # 0x13fd8
leaq 0x86bd(%rip), %rsi      # 0xe343
movl $0x46, %edx
movq %r14, %rdi
callq 0x4260
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe327(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq %rbx, -0x88(%rbp)
movq %rbx, -0x90(%rbp)
movq $0x0, -0x80(%rbp)
leaq -0x3d0(%rbp), %rsi
movq %rbx, %rdi
callq 0xaf1c
leaq -0x90(%rbp), %rdi
callq 0xa5ec
movq 0xe2d2(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x8699(%rip), %rsi      # 0xe3b8
leaq 0x869a(%rip), %rdx      # 0xe3c0
callq 0xdc0e
leaq -0x3d0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5d5b
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe276(%rip), %rbx      # 0x13fd8
leaq 0x8658(%rip), %rsi      # 0xe3c1
movl $0x35, %edx
movq %rbx, %rdi
callq 0x4260
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe244(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x7b28
leaq -0x90(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0xda40
leaq -0x90(%rbp), %rdi
callq 0xdbc0
movq 0xe1dd(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x85e3(%rip), %rsi      # 0xe3f7
leaq 0x85fc(%rip), %rdx      # 0xe417
callq 0xdc0e
leaq -0x3d0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5e50
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe181(%rip), %rbx      # 0x13fd8
leaq 0x85ba(%rip), %rsi      # 0xe418
movl $0x32, %edx
movq %rbx, %rdi
callq 0x4260
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe14f(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x7b28
leaq -0x90(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0xda40
leaq -0x90(%rbp), %rdi
callq 0xdbc0
movq 0xe0e8(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x855f(%rip), %rsi      # 0xe468
leaq 0x8560(%rip), %rdx      # 0xe470
callq 0xdc0e
leaq -0x3d0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5f45
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe08c(%rip), %rbx      # 0x13fd8
leaq 0x851e(%rip), %rsi      # 0xe471
movl $0x36, %edx
movq %rbx, %rdi
callq 0x4260
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4200
movsbl %al, %esi
movq 0xe05a(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x7b28
leaq -0x90(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0xda40
leaq -0x90(%rbp), %rdi
callq 0xdbc0
movq 0xdff3(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
leaq -0x448(%rbp), %rdi
callq 0xa5ec
movq 0xdfb0(%rip), %rsi      # 0x13fb0
leaq -0x250(%rbp), %rdi
callq 0x41b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
leaq -0xb0(%rbp), %rdi
callq 0xa5ec
leaq -0x40(%rbp), %rdi
callq 0xa5ec
leaq -0x430(%rbp), %rdi
callq 0xdbc0
leaq -0xc8(%rbp), %rdi
callq 0xa5ec
xorl %eax, %eax
addq $0x428, %rsp            # imm = 0x428
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xdbc0
jmp 0x65e9
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xdbc0
jmp 0x66c6
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xdbc0
jmp 0x67a7
jmp 0x65e3
jmp 0x66c0
jmp 0x67a1
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xa5ec
jmp 0x6888
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x6608
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6608
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x66e5
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x66e5
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x67c6
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x67c6
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x68a7
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x68a7
movq %rdx, %rbx
movq %rax, %r14
jmp 0x6608
movq %rdx, %rbx
movq %rax, %r14
jmp 0x66e5
movq %rdx, %rbx
movq %rax, %r14
jmp 0x67c6
movq %rdx, %rbx
movq %rax, %r14
jmp 0x68a7
jmp 0x6ae8
jmp 0x6b18
jmp 0x6b18
jmp 0x6b18
jmp 0x647c
jmp 0x61a7
movq %rdx, %r15
movq %rax, %r14
jmp 0x6331
jmp 0x6963
jmp 0x69e1
jmp 0x6b2b
jmp 0x64d4
jmp 0x6b2b
jmp 0x6b2b
jmp 0x6b2b
jmp 0x6440
jmp 0x623b
jmp 0x6b2b
jmp 0x6440
jmp 0x623b
jmp 0x6b2b
jmp 0x644a
jmp 0x6204
jmp 0x620c
jmp 0x6221
jmp 0x6229
jmp 0x6b2b
jmp 0x644a
movq %rax, %r14
jmp 0x658d
movq %rax, %r14
movl $0x28, %esi
movq %r15, %rdi
callq 0x4230
jmp 0x6596
movq %rax, %r14
jmp 0x6596
movq %rax, %r14
jmp 0x65b8
jmp 0x6b2b
jmp 0x6b2b
movq %rax, %r14
jmp 0x6543
movq %rax, %r14
movl $0x58, %esi
movq %r15, %rdi
jmp 0x65d9
jmp 0x6b2b
movq %rax, %r14
movq -0x90(%rbp), %rdi
testq %rdi, %rdi
je 0x6b37
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x6b37
movq %rax, %r14
movl $0x20, %esi
movq %r15, %rdi
callq 0x4230
jmp 0x6b37
movq %rax, %r14
jmp 0x6b37
jmp 0x62da
jmp 0x6299
jmp 0x62da
movq %rax, %r14
jmp 0x63ba
jmp 0x62da
jmp 0x62ad
jmp 0x62b5
jmp 0x62ca
jmp 0x62d2
jmp 0x62da
movq %rax, %r14
jmp 0x63e8
movq %rax, %r14
movl $0x28, %esi
movq %r15, %rdi
callq 0x4230
jmp 0x63f1
movq %rax, %r14
jmp 0x63f1
movq %rax, %r14
jmp 0x6413
movq %rax, %r14
jmp 0x6b43
movq %rax, %r14
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x6b1b
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6b1b
movq %rdx, %r15
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6331
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x6969
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6969
jmp 0x6a5f
jmp 0x636a
jmp 0x6b2b
jmp 0x636a
movq %rax, %r14
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
jne 0x64ee
jmp 0x6b2e
movq %rax, %r14
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
jne 0x6534
jmp 0x6543
jmp 0x639c
movq %rax, %r14
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x63ba
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x6b43
jmp 0x63ca
movq %rax, %r14
movq -0x430(%rbp), %rdi
cmpq %rbx, %rdi
je 0x63e8
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x6413
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6b43
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6b43
jmp 0x6440
movq %rax, %r14
jmp 0x6521
jmp 0x644a
movq %rax, %r14
jmp 0x6571
movq %rdx, %r15
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6482
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6482
movq %rdx, %r15
movq %rax, %r14
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x69e7
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x69e7
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x64d7
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x64d7
movq %rax, %r14
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x6b2e
movq -0x240(%rbp), %rsi
jmp 0x65d6
jmp 0x64fc
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6521
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x6543
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x6b2e
jmp 0x6553
movq %rax, %r14
movq -0xb0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x6571
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x658d
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0x65b8
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x6b2e
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6b2e
movq %rdx, %rbx
movq %rax, %r14
movq 0xd9d8(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
cmpl $0x2, %ebx
jne 0x6aeb
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd9b5(%rip), %rdi      # 0x13fd8
leaq 0x7d60(%rip), %rsi      # 0xe38a
movl $0x1d, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd994(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7d52(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x3d0(%rbp), %rsi
movb $0x2f, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4260
movl 0x14(%rbx), %esi
incl %esi
movq %rax, %rdi
callq 0x4150
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
jmp 0x5fed
jmp 0x6ae8
movq %rax, %r14
callq 0x4300
jmp 0x6aeb
movq %rdx, %rbx
movq %rax, %r14
movq 0xd8fb(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
cmpl $0x3, %ebx
jne 0x6aeb
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd8d8(%rip), %rdi      # 0x13fd8
leaq 0x7d44(%rip), %rsi      # 0xe44b
movl $0x1c, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd8b7(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7c75(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x3d0(%rbp), %rsi
movb $0x2f, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4260
movl 0x14(%rbx), %esi
incl %esi
movq %rax, %rdi
callq 0x4150
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x80(%rbp), %r15
jmp 0x5ef8
jmp 0x6ae8
movq %rax, %r14
callq 0x4300
jmp 0x6aeb
movq %rdx, %rbx
movq %rax, %r14
movq 0xd81a(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
cmpl $0x2, %ebx
jne 0x6aeb
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd7f7(%rip), %rdi      # 0x13fd8
leaq 0x7ba2(%rip), %rsi      # 0xe38a
movl $0x1d, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd7d6(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7b94(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x3d0(%rbp), %rsi
movb $0x2f, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4260
movl 0x14(%rbx), %esi
incl %esi
movq %rax, %rdi
callq 0x4150
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x80(%rbp), %r15
jmp 0x5e03
jmp 0x6ae8
movq %rax, %r14
callq 0x4300
jmp 0x6aeb
movq %rdx, %rbx
movq %rax, %r14
movq 0xd739(%rip), %rsi      # 0x13fc8
leaq -0x3d0(%rbp), %rdi
callq 0x42b0
leaq -0x358(%rbp), %rdi
callq 0x40a0
cmpl $0x2, %ebx
jne 0x6aeb
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd716(%rip), %rdi      # 0x13fd8
leaq 0x7ac1(%rip), %rsi      # 0xe38a
movl $0x1d, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd6f5(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7ab3(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x3d0(%rbp), %rsi
movb $0x2f, (%rsi)
movl $0x1, %edx
movq %rax, %rdi
callq 0x4260
movl 0x14(%rbx), %esi
incl %esi
movq %rax, %rdi
callq 0x4150
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x80(%rbp), %r15
jmp 0x5d0e
jmp 0x6ae8
movq %rax, %r14
callq 0x4300
jmp 0x6aeb
movq %rdx, %r15
movq %rax, %r14
cmpl $0x1, %r15d
jne 0x6b2e
movq %r14, %rdi
callq 0x40d0
movq %rax, %r14
movq 0xd653(%rip), %rdi      # 0x13fd8
leaq 0x7829(%rip), %rsi      # 0xe1b5
movl $0x18, %edx
callq 0x4260
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq 0xd632(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x240(%rbp), %rbx
jmp 0x5784
jmp 0x6b2b
movq %rax, %r14
callq 0x4300
jmp 0x6b2e
movq %rdx, %r15
movq %rax, %r14
cmpl $0x1, %r15d
jne 0x6b2e
movq %r14, %rdi
callq 0x40d0
movq %rax, %r14
movq 0xd5d5(%rip), %rdi      # 0x13fd8
leaq 0x77ab(%rip), %rsi      # 0xe1b5
movl $0x18, %edx
callq 0x4260
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq 0xd5b4(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x240(%rbp), %rbx
jmp 0x5696
jmp 0x6b2b
movq %rax, %r14
callq 0x4300
jmp 0x6b2e
movq %rax, %r14
cmpl $0x1, %edx
jne 0x6b2e
movq %r14, %rdi
callq 0x40d0
movq %rax, %r14
movq 0xd55b(%rip), %rdi      # 0x13fd8
leaq 0x7731(%rip), %rsi      # 0xe1b5
movl $0x18, %edx
callq 0x4260
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq 0xd53a(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x240(%rbp), %rbx
jmp 0x558b
jmp 0x6b2b
movq %rax, %r14
callq 0x4300
jmp 0x6b2e
movq %rax, %rdi
callq 0x7163
jmp 0x6ae8
jmp 0x6b18
jmp 0x6b18
jmp 0x6b18
movq %rax, %r14
jmp 0x6af7
movq %rax, %r14
leaq -0x448(%rbp), %rdi
callq 0xa5ec
movq 0xd4b2(%rip), %rsi      # 0x13fb0
leaq -0x250(%rbp), %rdi
callq 0x41b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
jmp 0x6b1b
movq %rax, %r14
leaq -0xb0(%rbp), %rdi
callq 0xa5ec
jmp 0x6b2e
jmp 0x6b2b
movq %rax, %r14
leaq -0x40(%rbp), %rdi
callq 0xa5ec
leaq -0x430(%rbp), %rdi
callq 0xdbc0
leaq -0xc8(%rbp), %rdi
callq 0xa5ec
movq %r14, %rdi
callq 0x4340
nop