// File: /workspace/github_cpp_makefile_star2_O3/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 -0x238(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x9ac0(%rip), %rsi      # 0xe0c8
leaq 0x9ad3(%rip), %rdx      # 0xe0e2
leaq -0x248(%rbp), %rdi
callq 0xdb80
leaq -0x3c0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq -0x248(%rbp), %rsi
movq -0x240(%rbp), %rdx
addq %rsi, %rdx
leaq -0x3d0(%rbp), %rdi
callq 0x734c
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
leaq 0xefa1(%rip), %rax      # 0x135f8
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
movq %r15, %rax
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
leaq -0x420(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x9a52(%rip), %rsi      # 0xe0e3
leaq 0x9a4f(%rip), %rdx      # 0xe0e7
leaq -0x430(%rbp), %rdi
callq 0xdb80
leaq -0xc8(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x46d8
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x430(%rbp), %rdi
cmpq %r13, %rdi
je 0x46f3
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4717
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x4739
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x9997(%rip), %rsi      # 0xe0e8
leaq 0x99a2(%rip), %rdx      # 0xe0fa
callq 0xdb80
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
movq -0x248(%rbp), %rsi
movq -0x240(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
leaq 0xee67(%rip), %rax      # 0x135f8
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
movq %r15, %rax
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
leaq -0x430(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9931(%rip), %rsi      # 0xe0fb
leaq 0x9930(%rip), %rdx      # 0xe101
callq 0xdb80
leaq -0xc8(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x480a
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x430(%rbp), %rdi
cmpq %r13, %rdi
je 0x4825
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4849
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x486b
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
movabsq $0x400e666666666666, %rax # imm = 0x400E666666666666
leaq 0xef3f(%rip), %rcx      # 0x137c8
movq %rcx, (%r15)
movq %rax, 0x8(%r15)
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x9861(%rip), %rsi      # 0xe102
leaq 0x985d(%rip), %rdx      # 0xe105
callq 0xdb80
leaq -0xc8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x48e1
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x48fc
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
leaq 0xef6f(%rip), %rax      # 0x13888
movq %rax, (%r15)
movb $0x1, 0x8(%r15)
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x97d4(%rip), %rsi      # 0xe106
leaq 0x97de(%rip), %rdx      # 0xe117
callq 0xdb80
leaq -0xc8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4972
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x498d
movq -0x3c0(%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 0x7b10
movl $0x20, %edi
callq 0x4220
movq %rax, %r15
leaq 0xef7a(%rip), %rax      # 0x13948
movq %rax, (%r15)
movq %r15, %rdi
addq $0x8, %rdi
leaq -0xc8(%rbp), %rsi
callq 0xa48a
leaq -0x90(%rbp), %rcx
movq %r15, (%rcx)
leaq -0x430(%rbp), %rsi
movaps 0x30(%rsi), %xmm0
movaps 0x40(%rsi), %xmm1
leaq -0x3d0(%rbp), %rdx
movups %xmm0, (%rdx)
movups %xmm1, 0x10(%rdx)
leaq -0x248(%rbp), %rdi
callq 0x7c98
movq -0x90(%rbp), %rdi
testq %rdi, %rdi
je 0x4a29
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 0xefb8(%rip), %rax      # 0x13a08
movq %rax, (%r15)
movq %r15, %rdi
addq $0x8, %rdi
leaq -0x430(%rbp), %rsi
callq 0x9212
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x96a1(%rip), %rsi      # 0xe118
leaq 0x96a9(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4ab4
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4acf
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x963f(%rip), %rsi      # 0xe128
leaq 0x9645(%rip), %rdx      # 0xe135
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6d62
movq %rax, %rdi
callq 0x96c8
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4b28
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x95f6(%rip), %rsi      # 0xe136
leaq 0x9608(%rip), %rdx      # 0xe14f
callq 0xdb80
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
movq -0x248(%rbp), %rsi
movq -0x240(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
leaq 0xea78(%rip), %rax      # 0x135f8
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
movq %r15, %rax
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
leaq -0x80(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x9561(%rip), %rsi      # 0xe118
leaq 0x9569(%rip), %rdx      # 0xe127
leaq -0x90(%rbp), %rdi
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6d62
movq %rax, %rdi
callq 0x97d0
movq %rax, %r14
movq 0x48(%rax), %rcx
movq 0x28(%rax), %rax
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
cmpq $0x1, %rcx
adcq $-0x1, %rdx
shlq $0x6, %rdx
movq 0x30(%r14), %rsi
subq 0x38(%r14), %rsi
sarq $0x3, %rsi
movq 0x10(%r14), %rcx
movq 0x20(%r14), %rdi
subq %rcx, %rdi
sarq $0x3, %rdi
addq %rsi, %rdi
addq %rdx, %rdi
movq %rcx, %rdx
cmpq $0x1, %rdi
ja 0x4c45
movl $0x2, %esi
movq %r14, %rdi
callq 0x98f4
movq 0x10(%r14), %rcx
movq 0x28(%r14), %rax
movq %rcx, %rdx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %r14
cmpq $-0x1, %rcx
jl 0x4c66
cmpq $0x3f, %r14
ja 0x4c6f
addq $0x8, %rdx
movq %rdx, %r14
jmp 0x4c88
movq %r14, %rcx
sarq $0x6, %rcx
jmp 0x4c76
movq %r14, %rcx
shrq $0x6, %rcx
movq %rcx, %rdx
shlq $0x6, %rdx
subq %rdx, %r14
shlq $0x3, %r14
addq (%rax,%rcx,8), %r14
leaq -0xa0(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x9449(%rip), %rsi      # 0xe0e3
leaq 0x9446(%rip), %rdx      # 0xe0e7
leaq -0xb0(%rbp), %rdi
callq 0xdb80
movq %r14, %rdi
callq 0x9de0
leaq -0xb0(%rbp), %rsi
movq %rax, %rdi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4ce5
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0x4d00
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x4d1c
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4d40
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x4d62
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x93d6(%rip), %rsi      # 0xe150
leaq 0x93e7(%rip), %rdx      # 0xe168
callq 0xdb80
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
movq -0x248(%rbp), %rsi
movq -0x240(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
movl $0x28, %edi
callq 0x4220
movq %rax, %r15
leaq 0xe83e(%rip), %rax      # 0x135f8
movq %rax, (%r15)
leaq 0x8(%r15), %rdi
movq %r15, %rax
addq $0x18, %rax
movq %rax, 0x8(%r15)
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
addq %rsi, %rdx
callq 0x734c
leaq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
movq %rax, (%rdi)
leaq 0x9321(%rip), %rsi      # 0xe118
leaq 0x9329(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6d62
movq %rax, %rdi
callq 0x97d0
movq %rax, %r14
movq 0x48(%rax), %rcx
movq 0x28(%rax), %rax
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
cmpq $0x1, %rcx
adcq $-0x1, %rdx
shlq $0x6, %rdx
movq 0x30(%r14), %rsi
subq 0x38(%r14), %rsi
sarq $0x3, %rsi
movq 0x10(%r14), %rcx
movq 0x20(%r14), %rdi
subq %rcx, %rdi
sarq $0x3, %rdi
addq %rsi, %rdi
addq %rdx, %rdi
movq %rcx, %rdx
cmpq $0x1, %rdi
ja 0x4e7e
movl $0x2, %esi
movq %r14, %rdi
callq 0x98f4
movq 0x10(%r14), %rcx
movq 0x28(%r14), %rax
movq %rcx, %rdx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %r14
cmpq $-0x1, %rcx
jl 0x4e9f
cmpq $0x3f, %r14
ja 0x4ea8
addq $0x8, %rdx
movq %rdx, %r14
jmp 0x4ec1
movq %r14, %rcx
sarq $0x6, %rcx
jmp 0x4eaf
movq %r14, %rcx
shrq $0x6, %rcx
movq %rcx, %rdx
shlq $0x6, %rdx
subq %rdx, %r14
shlq $0x3, %r14
addq (%rax,%rcx,8), %r14
leaq -0xb0(%rbp), %rdi
movq %r13, (%rdi)
leaq 0x9229(%rip), %rsi      # 0xe0fb
leaq 0x9228(%rip), %rdx      # 0xe101
callq 0xdb80
movq %r14, %rdi
callq 0x9de0
leaq -0xb0(%rbp), %rsi
movq %rax, %rdi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x4f16
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0x4f31
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
leaq 0xe942(%rip), %r13      # 0x13888
je 0x4f54
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4f78
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x4f9a
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
leaq 0xe81a(%rip), %rax      # 0x137c8
movq %rax, (%r15)
movabsq $0x400e666666666666, %rax # imm = 0x400E666666666666
movq %rax, 0x8(%r15)
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x9148(%rip), %rsi      # 0xe118
leaq 0x9150(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6d62
movq %rax, %rdi
callq 0x97d0
movq %rax, %r14
movq 0x48(%rax), %rcx
movq 0x28(%rax), %rax
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
cmpq $0x1, %rcx
adcq $-0x1, %rdx
shlq $0x6, %rdx
movq 0x30(%r14), %rsi
subq 0x38(%r14), %rsi
sarq $0x3, %rsi
movq 0x10(%r14), %rcx
movq 0x20(%r14), %rdi
subq %rcx, %rdi
sarq $0x3, %rdi
addq %rsi, %rdi
addq %rdx, %rdi
movq %rcx, %rdx
cmpq $0x1, %rdi
ja 0x5057
movl $0x2, %esi
movq %r14, %rdi
callq 0x98f4
movq 0x10(%r14), %rcx
movq 0x28(%r14), %rax
movq %rcx, %rdx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %r14
cmpq $-0x1, %rcx
jl 0x5078
cmpq $0x3f, %r14
ja 0x5081
addq $0x8, %rdx
movq %rdx, %r14
jmp 0x509a
movq %r14, %rcx
sarq $0x6, %rcx
jmp 0x5088
movq %r14, %rcx
shrq $0x6, %rcx
movq %rcx, %rdx
shlq $0x6, %rdx
subq %rdx, %r14
shlq $0x3, %r14
addq (%rax,%rcx,8), %r14
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x9050(%rip), %rsi      # 0xe102
leaq 0x904c(%rip), %rdx      # 0xe105
callq 0xdb80
movq %r14, %rdi
callq 0x9de0
leaq -0x248(%rbp), %rsi
movq %rax, %rdi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x50f6
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x5118
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5133
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movl $0x10, %edi
callq 0x4220
movq %rax, %r15
movq %r13, (%rax)
movb $0x0, 0x8(%rax)
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8fb7(%rip), %rsi      # 0xe118
leaq 0x8fbf(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6d62
movq %rax, %rdi
callq 0x97d0
movq %rax, %r14
movq 0x48(%rax), %rcx
movq 0x28(%rax), %rax
movq %rcx, %rdx
subq %rax, %rdx
shrq $0x3, %rdx
cmpq $0x1, %rcx
adcq $-0x1, %rdx
shlq $0x6, %rdx
movq 0x30(%r14), %rsi
subq 0x38(%r14), %rsi
sarq $0x3, %rsi
movq 0x10(%r14), %rcx
movq 0x20(%r14), %rdi
subq %rcx, %rdi
sarq $0x3, %rdi
addq %rsi, %rdi
addq %rdx, %rdi
movq %rcx, %rdx
cmpq $0x1, %rdi
ja 0x51e8
movl $0x2, %esi
movq %r14, %rdi
callq 0x98f4
movq 0x10(%r14), %rcx
movq 0x28(%r14), %rax
movq %rcx, %rdx
subq 0x18(%r14), %rcx
sarq $0x3, %rcx
leaq 0x1(%rcx), %r14
cmpq $-0x1, %rcx
jl 0x5209
cmpq $0x3f, %r14
ja 0x5212
addq $0x8, %rdx
movq %rdx, %r14
jmp 0x522b
movq %r14, %rcx
sarq $0x6, %rcx
jmp 0x5219
movq %r14, %rcx
shrq $0x6, %rcx
movq %rcx, %rdx
shlq $0x6, %rdx
subq %rdx, %r14
shlq $0x3, %r14
addq (%rax,%rcx,8), %r14
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8ec3(%rip), %rsi      # 0xe106
leaq 0x8ecd(%rip), %rdx      # 0xe117
callq 0xdb80
movq %r14, %rdi
callq 0x9de0
leaq -0x248(%rbp), %rsi
movq %rax, %rdi
callq 0x6d62
movq %rax, %r12
movq (%rax), %r14
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movq %rax, (%r12)
testq %r14, %r14
je 0x5287
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x52a9
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x52c4
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8e3a(%rip), %rsi      # 0xe118
leaq 0x8e42(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6ec2
movq %rax, %rdi
callq 0xa052
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5320
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq %r14, %rdi
xorl %esi, %esi
callq 0x7024
movq %rax, %rdi
callq 0xa12a
movq %rax, %r15
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8d9d(%rip), %rsi      # 0xe0e3
leaq 0x8d9a(%rip), %rdx      # 0xe0e7
callq 0xdb80
leaq -0x3d0(%rbp), %rsi
movq %r15, %rdi
callq 0x6ec2
movq %rax, %rdi
callq 0xa202
movq %rax, %r15
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5387
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8d80(%rip), %rsi      # 0xe118
leaq 0x8d88(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6ec2
movq %rax, %rdi
callq 0xa052
movl $0x1, %esi
movq %rax, %rdi
callq 0x7024
movq %rax, %r12
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8d1e(%rip), %rsi      # 0xe102
leaq 0x8d1a(%rip), %rdx      # 0xe105
callq 0xdb80
movq %r12, %rdi
callq 0xa12a
leaq -0x248(%rbp), %rsi
movq %rax, %rdi
callq 0x6ec2
movq %rax, %rdi
callq 0xa2da
movsd (%rax), %xmm0
movsd %xmm0, -0x3d8(%rbp)
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x543d
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5458
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xeb79(%rip), %rdi      # 0x13fd8
leaq 0x8d03(%rip), %rsi      # 0xe169
movl $0x11, %edx
callq 0x4260
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq 0xeb5a(%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 0xeb24(%rip), %rdi      # 0x13fd8
leaq 0x8cc0(%rip), %rsi      # 0xe17b
movl $0x10, %edx
callq 0x4260
movq 0xeb0c(%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 0x553e
movq 0x20(%r14), %r13
movq 0x28(%r14), %r12
movq %r15, %rdi
callq 0xa12a
addq $0x8, %r15
cmpq %r13, %r15
jne 0x5539
movq 0x8(%r12), %r15
addq $0x8, %r12
leaq 0x200(%r15), %r13
cmpq %rbx, %r15
jne 0x5518
movq 0xea93(%rip), %r15      # 0x13fd8
leaq 0x8c40(%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 0xea61(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
movl $0x2, %esi
movq %r14, %rdi
leaq -0x3c0(%rbp), %rbx
callq 0x7024
movq %rax, %rdi
callq 0xa202
movq 0xea31(%rip), %r14      # 0x13fd8
leaq 0x8c20(%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 0xe9ff(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8b21(%rip), %rsi      # 0xe118
leaq 0x8b29(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6ec2
movq %rax, %rdi
callq 0xa052
movl $0x1, %esi
movq %rax, %rdi
callq 0x7024
movq %rax, %r14
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8bb8(%rip), %rsi      # 0xe1fb
leaq 0x8bb5(%rip), %rdx      # 0xe1ff
callq 0xdb80
movq %r14, %rdi
callq 0xa12a
leaq -0x248(%rbp), %rsi
movq %rax, %rdi
callq 0x6ec2
movq %rax, %rdi
callq 0xa3b2
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x5690
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x56ab
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe926(%rip), %r14      # 0x13fd8
leaq 0x8b47(%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 0xe8f4(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x8a16(%rip), %rsi      # 0xe118
leaq 0x8a1e(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0x40(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x6ec2
movq %rax, %r14
leaq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
movq %rax, (%rdi)
leaq 0x8ae5(%rip), %rsi      # 0xe21e
leaq 0x8af0(%rip), %rdx      # 0xe230
callq 0xdb80
movq %r14, %rdi
callq 0xa12a
leaq -0x248(%rbp), %rsi
movq %rax, %rdi
callq 0x6ec2
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x577e
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5799
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
leaq -0xb0(%rbp), %r15
leaq -0x40(%rbp), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0xa48a
movq -0x30(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jne 0x5845
leaq -0x40(%rbp), %rbx
movq %rbx, %r12
movq %r15, %r13
movq (%r13), %r13
movq (%r12), %r12
cmpq %r15, %r13
setne %al
cmpq %rbx, %r12
je 0x5816
testb %al, %al
je 0x5816
movq 0x18(%r12), %rdx
cmpq 0x18(%r13), %rdx
jne 0x5816
testq %rdx, %rdx
je 0x5803
movq 0x10(%r13), %rsi
movq 0x10(%r12), %rdi
callq 0x4240
testl %eax, %eax
jne 0x5816
movq 0x30(%r12), %rdi
movq 0x30(%r13), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
testb %al, %al
jne 0x57ca
leaq -0x40(%rbp), %rax
xorq %rax, %r12
leaq -0xb0(%rbp), %rax
xorq %rax, %r13
orq %r12, %r13
leaq 0x8a44(%rip), %rax      # 0xe275
leaq 0x8da7(%rip), %r15      # 0xe5df
cmoveq %rax, %r15
leaq -0x3c0(%rbp), %rbx
jmp 0x584c
leaq 0x8d93(%rip), %r15      # 0xe5df
movq 0xe785(%rip), %rdi      # 0x13fd8
leaq 0x89d7(%rip), %rsi      # 0xe231
movl $0x43, %edx
callq 0x4260
movq %r15, %rdi
callq 0x40e0
movq 0xe765(%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 0xe738(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
leaq -0x3d0(%rbp), %rdi
movq %rbx, (%rdi)
leaq 0x885a(%rip), %rsi      # 0xe118
leaq 0x8862(%rip), %rdx      # 0xe127
callq 0xdb80
leaq -0xb0(%rbp), %r15
leaq -0x3d0(%rbp), %rsi
movq %r15, %rdi
callq 0x6d62
movq %rax, %rdi
callq 0x97d0
movq %rax, %r12
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5906
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0x10(%r12), %rax
movq 0x28(%r12), %rcx
leaq -0x3d0(%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 -0x248(%rbp), %rdi
movq %r12, %rsi
callq 0xa58c
movq -0x30(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jne 0x59c5
movq %r14, %r12
movq %r15, %r13
movq (%r13), %r13
movq (%r12), %r12
cmpq %r15, %r13
setne %al
cmpq %r14, %r12
je 0x599d
testb %al, %al
je 0x599d
movq 0x18(%r12), %rdx
cmpq 0x18(%r13), %rdx
jne 0x599d
testq %rdx, %rdx
je 0x598a
movq 0x10(%r13), %rsi
movq 0x10(%r12), %rdi
callq 0x4240
testl %eax, %eax
jne 0x599d
movq 0x30(%r12), %rdi
movq 0x30(%r13), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
testb %al, %al
jne 0x5951
leaq -0x40(%rbp), %rax
xorq %rax, %r12
leaq -0xb0(%rbp), %rax
xorq %rax, %r13
orq %r12, %r13
leaq 0x88bd(%rip), %rax      # 0xe275
leaq 0x8c20(%rip), %r14      # 0xe5df
cmoveq %rax, %r14
jmp 0x59cc
leaq 0x8c13(%rip), %r14      # 0xe5df
movq 0xe605(%rip), %rdi      # 0x13fd8
leaq 0x88a0(%rip), %rsi      # 0xe27a
movl $0x3f, %edx
callq 0x4260
movq %r14, %rdi
callq 0x40e0
movq 0xe5e5(%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 0xe5b9(%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 0xe57b(%rip), %rdi      # 0x13fd8
leaq 0x8856(%rip), %rsi      # 0xe2ba
movl $0x13, %edx
callq 0x4260
leaq -0x3d0(%rbp), %rdi
callq 0x4180
leaq 0xdaef(%rip), %rax      # 0x13570
leaq -0x248(%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 0xa8b2
leaq -0x80(%rbp), %r15
movq %rbx, %rdi
callq 0x4160
movq 0xe51f(%rip), %rbx      # 0x13fd8
leaq 0x880e(%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 0xe4ed(%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 -0x3d0(%rbp), %rsi
movq %rbx, %rdi
callq 0xae40
movq -0x30(%rbp), %rax
cmpq -0x438(%rbp), %rax
jne 0x5ba7
movq %r14, %r15
movq %rbx, %r12
movq (%r12), %r12
movq (%r15), %r15
cmpq %rbx, %r12
setne %al
cmpq %r14, %r15
je 0x5b7b
testb %al, %al
je 0x5b7b
movq 0x18(%r15), %rdx
cmpq 0x18(%r12), %rdx
jne 0x5b7b
testq %rdx, %rdx
je 0x5b68
movq 0x10(%r12), %rsi
movq 0x10(%r15), %rdi
callq 0x4240
testl %eax, %eax
jne 0x5b7b
movq 0x30(%r15), %rdi
movq 0x30(%r12), %rsi
movq (%rdi), %rax
callq *0x18(%rax)
testb %al, %al
jne 0x5b30
leaq -0x40(%rbp), %rax
xorq %rax, %r15
leaq -0x448(%rbp), %rax
xorq %rax, %r12
orq %r15, %r12
leaq 0x86df(%rip), %rax      # 0xe275
leaq 0x8a42(%rip), %rbx      # 0xe5df
cmoveq %rax, %rbx
leaq -0x80(%rbp), %r15
jmp 0x5bae
leaq 0x8a31(%rip), %rbx      # 0xe5df
movq 0xe423(%rip), %rdi      # 0x13fd8
leaq 0x872b(%rip), %rsi      # 0xe2e7
movl $0x54, %edx
callq 0x4260
movq %rbx, %rdi
callq 0x40e0
movq 0xe403(%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 0xe3d7(%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 0x86f3(%rip), %rsi      # 0xe33c
leaq 0x86f2(%rip), %rdx      # 0xe342
callq 0xdb80
leaq -0x248(%rbp), %rdi
leaq -0x90(%rbp), %rbx
movq %rbx, %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5c88
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe349(%rip), %r14      # 0x13fd8
leaq 0x86ad(%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 0xe317(%rip), %rdi      # 0x13fd8
callq 0x4030
movq %rax, %rdi
callq 0x4160
movq %rbx, -0x88(%rbp)
movq %rbx, -0x90(%rbp)
movq $0x0, -0x80(%rbp)
leaq -0x248(%rbp), %rsi
movq %rbx, %rdi
callq 0xae40
leaq -0x90(%rbp), %rdi
callq 0xa50c
movq 0xe2c2(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x8689(%rip), %rsi      # 0xe3b8
leaq 0x868a(%rip), %rdx      # 0xe3c0
callq 0xdb80
leaq -0x248(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5d6b
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe266(%rip), %rbx      # 0x13fd8
leaq 0x8648(%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 0xe234(%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 0x7b10
leaq -0x90(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xd9b2
leaq -0x90(%rbp), %rdi
callq 0xdb32
movq 0xe1cd(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x85d3(%rip), %rsi      # 0xe3f7
leaq 0x85ec(%rip), %rdx      # 0xe417
callq 0xdb80
leaq -0x248(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5e60
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe171(%rip), %rbx      # 0x13fd8
leaq 0x85aa(%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 0xe13f(%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 0x7b10
leaq -0x90(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xd9b2
leaq -0x90(%rbp), %rdi
callq 0xdb32
movq 0xe0d8(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
leaq -0x90(%rbp), %rdi
movq %r15, (%rdi)
leaq 0x854f(%rip), %rsi      # 0xe468
leaq 0x8550(%rip), %rdx      # 0xe470
callq 0xdb80
leaq -0x248(%rbp), %rdi
leaq -0x90(%rbp), %rsi
movl $0x8, %edx
callq 0x4310
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x5f55
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq 0xe07c(%rip), %rbx      # 0x13fd8
leaq 0x850e(%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 0xe04a(%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 0x7b10
leaq -0x90(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xd9b2
leaq -0x90(%rbp), %rdi
callq 0xdb32
movq 0xdfe3(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
leaq -0x448(%rbp), %rdi
callq 0xa50c
movq 0xdfa0(%rip), %rsi      # 0x13fb0
leaq -0x3d0(%rbp), %rdi
callq 0x41b0
leaq -0x350(%rbp), %rdi
callq 0x40a0
leaq -0xb0(%rbp), %rdi
callq 0xa50c
leaq -0x40(%rbp), %rdi
callq 0xa50c
leaq -0x430(%rbp), %rdi
callq 0xdb32
leaq -0xc8(%rbp), %rdi
callq 0xa50c
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 0xdb32
jmp 0x65bd
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xdb32
jmp 0x669a
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xdb32
jmp 0x677b
jmp 0x65b7
jmp 0x6694
jmp 0x6775
movq %rdx, %rbx
movq %rax, %r14
leaq -0x90(%rbp), %rdi
callq 0xa50c
jmp 0x685c
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x65dc
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x65dc
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x66b9
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x66b9
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x679a
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x679a
movq %rdx, %rbx
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x687b
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x687b
movq %rdx, %rbx
movq %rax, %r14
jmp 0x65dc
movq %rdx, %rbx
movq %rax, %r14
jmp 0x66b9
movq %rdx, %rbx
movq %rax, %r14
jmp 0x679a
movq %rdx, %rbx
movq %rax, %r14
jmp 0x687b
jmp 0x6abc
jmp 0x6aec
jmp 0x6aec
jmp 0x6aec
jmp 0x6465
jmp 0x61b7
movq %rdx, %r15
movq %rax, %r14
jmp 0x6341
jmp 0x6937
jmp 0x69b5
jmp 0x6aff
jmp 0x64bd
jmp 0x6aff
jmp 0x6aff
jmp 0x6aff
jmp 0x6429
jmp 0x624b
jmp 0x6aff
jmp 0x6429
jmp 0x624b
jmp 0x6aff
jmp 0x6433
jmp 0x6214
jmp 0x621c
jmp 0x6231
jmp 0x6239
jmp 0x6aff
jmp 0x6433
movq %rax, %r14
jmp 0x6568
movq %rax, %r14
movl $0x28, %esi
movq %r15, %rdi
callq 0x4230
jmp 0x6571
movq %rax, %r14
jmp 0x6571
movq %rax, %r14
jmp 0x658c
jmp 0x6aff
jmp 0x6aff
movq %rax, %r14
jmp 0x651e
movq %rax, %r14
movl $0x58, %esi
movq %r15, %rdi
jmp 0x65ad
jmp 0x6aff
movq %rax, %r14
movq -0x90(%rbp), %rdi
testq %rdi, %rdi
je 0x6b0b
movq (%rdi), %rax
callq *0x8(%rax)
jmp 0x6b0b
movq %rax, %r14
movl $0x20, %esi
movq %r15, %rdi
callq 0x4230
jmp 0x6b0b
movq %rax, %r14
jmp 0x6b0b
jmp 0x62ea
jmp 0x62a9
jmp 0x62ea
movq %rax, %r14
jmp 0x63aa
jmp 0x62ea
jmp 0x62bd
jmp 0x62c5
jmp 0x62da
jmp 0x62e2
jmp 0x62ea
movq %rax, %r14
jmp 0x63d8
movq %rax, %r14
movl $0x28, %esi
movq %r15, %rdi
callq 0x4230
jmp 0x63e1
movq %rax, %r14
jmp 0x63e1
movq %rax, %r14
jmp 0x63fc
movq %rax, %r14
jmp 0x6b17
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x6aef
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6aef
movq %rdx, %r15
movq %rax, %r14
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x6341
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x693d
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x693d
jmp 0x6a33
jmp 0x64bd
jmp 0x6aff
jmp 0x64bd
jmp 0x64bd
jmp 0x6429
jmp 0x638c
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x63aa
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x6b17
jmp 0x63ba
movq %rax, %r14
movq -0x430(%rbp), %rdi
cmpq %r13, %rdi
je 0x63d8
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x63fc
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x6b17
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6b17
jmp 0x6429
movq %rax, %r14
jmp 0x6503
jmp 0x6433
movq %rax, %r14
jmp 0x654c
movq %rdx, %r15
movq %rax, %r14
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x646b
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x646b
movq %rdx, %r15
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0x69bb
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x69bb
movq %rax, %r14
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x64c0
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x64c0
movq %rax, %r14
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x6b02
movq -0x3c0(%rbp), %rsi
jmp 0x65aa
jmp 0x64de
movq %rax, %r14
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x6503
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x651e
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x6b02
jmp 0x652e
movq %rax, %r14
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0x654c
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x6568
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x4230
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq -0x3d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x658c
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x4230
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x6b02
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x4230
jmp 0x6b02
movq %rdx, %rbx
movq %rax, %r14
movq 0xda04(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
cmpl $0x2, %ebx
jne 0x6abf
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd9e1(%rip), %rdi      # 0x13fd8
leaq 0x7d8c(%rip), %rsi      # 0xe38a
movl $0x1d, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd9c0(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7d7e(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x248(%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 0x5ffd
jmp 0x6abc
movq %rax, %r14
callq 0x4300
jmp 0x6abf
movq %rdx, %rbx
movq %rax, %r14
movq 0xd927(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
cmpl $0x3, %ebx
jne 0x6abf
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd904(%rip), %rdi      # 0x13fd8
leaq 0x7d70(%rip), %rsi      # 0xe44b
movl $0x1c, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd8e3(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7ca1(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x248(%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 0x5f08
jmp 0x6abc
movq %rax, %r14
callq 0x4300
jmp 0x6abf
movq %rdx, %rbx
movq %rax, %r14
movq 0xd846(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
cmpl $0x2, %ebx
jne 0x6abf
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd823(%rip), %rdi      # 0x13fd8
leaq 0x7bce(%rip), %rsi      # 0xe38a
movl $0x1d, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd802(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7bc0(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x248(%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 0x5e13
jmp 0x6abc
movq %rax, %r14
callq 0x4300
jmp 0x6abf
movq %rdx, %rbx
movq %rax, %r14
movq 0xd765(%rip), %rsi      # 0x13fc8
leaq -0x248(%rbp), %rdi
callq 0x42b0
leaq -0x1d0(%rbp), %rdi
callq 0x40a0
cmpl $0x2, %ebx
jne 0x6abf
movq %r14, %rdi
callq 0x40d0
movq %rax, %rbx
movq 0xd742(%rip), %rdi      # 0x13fd8
leaq 0x7aed(%rip), %rsi      # 0xe38a
movl $0x1d, %edx
callq 0x4260
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0xd721(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %r14
leaq 0x7adf(%rip), %rsi      # 0xe3a8
movl $0xf, %edx
movq %rax, %rdi
callq 0x4260
movl 0x10(%rbx), %esi
incl %esi
movq %r14, %rdi
callq 0x4150
leaq -0x248(%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 0x5d1e
jmp 0x6abc
movq %rax, %r14
callq 0x4300
jmp 0x6abf
movq %rdx, %r15
movq %rax, %r14
cmpl $0x1, %r15d
jne 0x6b02
movq %r14, %rdi
callq 0x40d0
movq %rax, %r14
movq 0xd67f(%rip), %rdi      # 0x13fd8
leaq 0x7855(%rip), %rsi      # 0xe1b5
movl $0x18, %edx
callq 0x4260
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq 0xd65e(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x3c0(%rbp), %rbx
jmp 0x5799
jmp 0x6aff
movq %rax, %r14
callq 0x4300
jmp 0x6b02
movq %rdx, %r15
movq %rax, %r14
cmpl $0x1, %r15d
jne 0x6b02
movq %r14, %rdi
callq 0x40d0
movq %rax, %r14
movq 0xd601(%rip), %rdi      # 0x13fd8
leaq 0x77d7(%rip), %rsi      # 0xe1b5
movl $0x18, %edx
callq 0x4260
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq 0xd5e0(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x3c0(%rbp), %rbx
jmp 0x56ab
jmp 0x6aff
movq %rax, %r14
callq 0x4300
jmp 0x6b02
movq %rax, %r14
cmpl $0x1, %edx
jne 0x6b02
movq %r14, %rdi
callq 0x40d0
movq %rax, %r14
movq 0xd587(%rip), %rdi      # 0x13fd8
leaq 0x775d(%rip), %rsi      # 0xe1b5
movl $0x18, %edx
callq 0x4260
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movq 0xd566(%rip), %rdi      # 0x13fd8
movq %rax, %rsi
callq 0x4210
movq %rax, %rdi
callq 0x40f0
movq %rax, %rdi
callq 0x40f0
callq 0x4300
leaq -0x3c0(%rbp), %rbx
jmp 0x55a0
jmp 0x6aff
movq %rax, %r14
callq 0x4300
jmp 0x6b02
movq %rax, %rdi
callq 0x7152
jmp 0x6abc
jmp 0x6aec
jmp 0x6aec
jmp 0x6aec
movq %rax, %r14
jmp 0x6acb
movq %rax, %r14
leaq -0x448(%rbp), %rdi
callq 0xa50c
movq 0xd4de(%rip), %rsi      # 0x13fb0
leaq -0x3d0(%rbp), %rdi
callq 0x41b0
leaq -0x350(%rbp), %rdi
callq 0x40a0
jmp 0x6aef
movq %rax, %r14
leaq -0xb0(%rbp), %rdi
callq 0xa50c
jmp 0x6b02
jmp 0x6aff
movq %rax, %r14
leaq -0x40(%rbp), %rdi
callq 0xa50c
leaq -0x430(%rbp), %rdi
callq 0xdb32
leaq -0xc8(%rbp), %rdi
callq 0xa50c
movq %r14, %rdi
callq 0x4340
nop