// File: 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
subq $0x1520, %rsp           # imm = 0x1520
movl $0x0, -0x4(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x8190
leaq -0x69(%rbp), %rdi
movq %rdi, -0x10a8(%rbp)
callq 0x5460
movq -0x10a8(%rbp), %rdx
leaq 0x13ca3(%rip), %rsi     # 0x192ec
leaq -0x68(%rbp), %rdi
callq 0x81b0
jmp 0x5654
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x8260
jmp 0x5663
leaq -0x28(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x8290
jmp 0x5672
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x10b0(%rbp)
callq 0x5460
movq -0x10b0(%rbp), %rdx
leaq 0x13c74(%rip), %rsi     # 0x19307
leaq -0xa0(%rbp), %rdi
callq 0x81b0
jmp 0x56a1
leaq -0x20(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x8300
movq %rax, -0x10b8(%rbp)
jmp 0x56ba
movq -0x10b8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x8430
jmp 0x56cc
leaq -0xa0(%rbp), %rdi
callq 0x5150
leaq -0xa1(%rbp), %rdi
callq 0x52e0
leaq -0x28(%rbp), %rdi
callq 0x84a0
leaq -0x48(%rbp), %rdi
callq 0x84d0
leaq -0x68(%rbp), %rdi
callq 0x5150
leaq -0x69(%rbp), %rdi
callq 0x52e0
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x10c0(%rbp)
callq 0x5460
movq -0x10c0(%rbp), %rdx
leaq 0x13be3(%rip), %rsi     # 0x1930c
leaq -0xf0(%rbp), %rdi
callq 0x81b0
jmp 0x5737
leaq -0xd0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x8260
jmp 0x574c
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x8290
jmp 0x5761
leaq -0x119(%rbp), %rdi
movq %rdi, -0x10c8(%rbp)
callq 0x5460
movq -0x10c8(%rbp), %rdx
leaq 0x13b9d(%rip), %rsi     # 0x1931f
leaq -0x118(%rbp), %rdi
callq 0x81b0
jmp 0x5790
leaq -0x20(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x8300
movq %rax, -0x10d0(%rbp)
jmp 0x57a9
movq -0x10d0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x8430
jmp 0x57be
leaq -0x118(%rbp), %rdi
callq 0x5150
leaq -0x119(%rbp), %rdi
callq 0x52e0
leaq -0xb0(%rbp), %rdi
callq 0x84a0
leaq -0xd0(%rbp), %rdi
callq 0x84d0
leaq -0xf0(%rbp), %rdi
callq 0x5150
leaq -0xf1(%rbp), %rdi
callq 0x52e0
movabsq $0x400e666666666666, %rax # imm = 0x400E666666666666
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x84f0
jmp 0x582c
leaq -0x128(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x8510
jmp 0x5841
leaq -0x159(%rbp), %rdi
movq %rdi, -0x10d8(%rbp)
callq 0x5460
movq -0x10d8(%rbp), %rdx
leaq 0x13ac4(%rip), %rsi     # 0x19326
leaq -0x158(%rbp), %rdi
callq 0x81b0
jmp 0x5870
leaq -0x20(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x8300
movq %rax, -0x10e0(%rbp)
jmp 0x5889
movq -0x10e0(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x8430
jmp 0x589e
leaq -0x158(%rbp), %rdi
callq 0x5150
leaq -0x159(%rbp), %rdi
callq 0x52e0
leaq -0x128(%rbp), %rdi
callq 0x84a0
movb $0x1, -0x16a(%rbp)
leaq -0x169(%rbp), %rdi
leaq -0x16a(%rbp), %rsi
callq 0x8580
jmp 0x58de
leaq -0x168(%rbp), %rdi
leaq -0x169(%rbp), %rsi
callq 0x85a0
jmp 0x58f3
leaq -0x191(%rbp), %rdi
movq %rdi, -0x10e8(%rbp)
callq 0x5460
movq -0x10e8(%rbp), %rdx
leaq 0x13a16(%rip), %rsi     # 0x1932a
leaq -0x190(%rbp), %rdi
callq 0x81b0
jmp 0x5922
leaq -0x20(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x8300
movq %rax, -0x10f0(%rbp)
jmp 0x593b
movq -0x10f0(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x8430
jmp 0x5950
leaq -0x190(%rbp), %rdi
callq 0x5150
leaq -0x191(%rbp), %rdi
callq 0x52e0
leaq -0x168(%rbp), %rdi
callq 0x84a0
leaq -0x1e8(%rbp), %rdi
callq 0x8610
jmp 0x5982
leaq -0x1f0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x8690
jmp 0x5994
leaq -0x210(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
callq 0x8630
jmp 0x59b0
leaq -0x1f0(%rbp), %rdi
callq 0x84a0
leaq -0x228(%rbp), %rdi
callq 0x8190
leaq -0x230(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x8700
jmp 0x59dd
leaq -0x251(%rbp), %rdi
movq %rdi, -0x10f8(%rbp)
callq 0x5460
movq -0x10f8(%rbp), %rdx
leaq 0x1393e(%rip), %rsi     # 0x1933c
leaq -0x250(%rbp), %rdi
callq 0x81b0
jmp 0x5a0c
leaq -0x228(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x8300
movq %rax, -0x1100(%rbp)
jmp 0x5a28
movq -0x1100(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x8430
jmp 0x5a3d
leaq -0x250(%rbp), %rdi
callq 0x5150
leaq -0x251(%rbp), %rdi
callq 0x52e0
leaq -0x230(%rbp), %rdi
callq 0x84a0
leaq -0x281(%rbp), %rdi
movq %rdi, -0x1108(%rbp)
callq 0x5460
movq -0x1108(%rbp), %rdx
leaq 0x138ca(%rip), %rsi     # 0x1934c
leaq -0x280(%rbp), %rdi
callq 0x81b0
jmp 0x5a90
leaq -0x228(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x8300
movq %rax, -0x1110(%rbp)
jmp 0x5aac
movq -0x1110(%rbp), %rdi
callq 0x8770
movq %rax, -0x1118(%rbp)
jmp 0x5ac1
movq -0x1118(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x260(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x5150
leaq -0x281(%rbp), %rdi
callq 0x52e0
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x1120(%rbp)
callq 0x5460
movq -0x1120(%rbp), %rdx
leaq 0x1384f(%rip), %rsi     # 0x1935a
leaq -0x2d0(%rbp), %rdi
callq 0x81b0
jmp 0x5b19
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x8260
jmp 0x5b2e
leaq -0x290(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x8290
jmp 0x5b43
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x1128(%rbp)
callq 0x5460
movq -0x1128(%rbp), %rdx
leaq 0x137d8(%rip), %rsi     # 0x1933c
leaq -0x2f8(%rbp), %rdi
callq 0x81b0
jmp 0x5b72
leaq -0x228(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x8300
movq %rax, -0x1130(%rbp)
jmp 0x5b8e
movq -0x1130(%rbp), %rdi
movl $0x1, %esi
callq 0x8790
movq %rax, -0x1138(%rbp)
jmp 0x5ba8
leaq -0x321(%rbp), %rdi
movq %rdi, -0x1140(%rbp)
callq 0x5460
movq -0x1140(%rbp), %rdx
leaq 0x1373e(%rip), %rsi     # 0x19307
leaq -0x320(%rbp), %rdi
callq 0x81b0
jmp 0x5bd7
movq -0x1138(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x87c0
movq %rax, -0x1148(%rbp)
jmp 0x5bf3
movq -0x1148(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x8430
jmp 0x5c08
leaq -0x320(%rbp), %rdi
callq 0x5150
leaq -0x321(%rbp), %rdi
callq 0x52e0
leaq -0x2f8(%rbp), %rdi
callq 0x5150
leaq -0x2f9(%rbp), %rdi
callq 0x52e0
leaq -0x290(%rbp), %rdi
callq 0x84a0
leaq -0x2b0(%rbp), %rdi
callq 0x84d0
leaq -0x2d0(%rbp), %rdi
callq 0x5150
leaq -0x2d1(%rbp), %rdi
callq 0x52e0
leaq -0x371(%rbp), %rdi
movq %rdi, -0x1150(%rbp)
callq 0x5460
movq -0x1150(%rbp), %rdx
leaq 0x136eb(%rip), %rsi     # 0x19374
leaq -0x370(%rbp), %rdi
callq 0x81b0
jmp 0x5c97
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x8260
jmp 0x5cac
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x8290
jmp 0x5cc1
leaq -0x399(%rbp), %rdi
movq %rdi, -0x1158(%rbp)
callq 0x5460
movq -0x1158(%rbp), %rdx
leaq 0x1365a(%rip), %rsi     # 0x1933c
leaq -0x398(%rbp), %rdi
callq 0x81b0
jmp 0x5cf0
leaq -0x228(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x8300
movq %rax, -0x1160(%rbp)
jmp 0x5d0c
movq -0x1160(%rbp), %rdi
movl $0x1, %esi
callq 0x8790
movq %rax, -0x1168(%rbp)
jmp 0x5d26
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x1170(%rbp)
callq 0x5460
movq -0x1170(%rbp), %rdx
leaq 0x135d8(%rip), %rsi     # 0x1931f
leaq -0x3c0(%rbp), %rdi
callq 0x81b0
jmp 0x5d55
movq -0x1168(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x87c0
movq %rax, -0x1178(%rbp)
jmp 0x5d71
movq -0x1178(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x8430
jmp 0x5d86
leaq -0x3c0(%rbp), %rdi
callq 0x5150
leaq -0x3c1(%rbp), %rdi
callq 0x52e0
leaq -0x398(%rbp), %rdi
callq 0x5150
leaq -0x399(%rbp), %rdi
callq 0x52e0
leaq -0x330(%rbp), %rdi
callq 0x84a0
leaq -0x350(%rbp), %rdi
callq 0x84d0
leaq -0x370(%rbp), %rdi
callq 0x5150
leaq -0x371(%rbp), %rdi
callq 0x52e0
movabsq $0x400e666666666666, %rax # imm = 0x400E666666666666
movq %rax, -0x3e0(%rbp)
leaq -0x3d8(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x84f0
jmp 0x5e0c
leaq -0x3d0(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x8510
jmp 0x5e21
leaq -0x401(%rbp), %rdi
movq %rdi, -0x1180(%rbp)
callq 0x5460
movq -0x1180(%rbp), %rdx
leaq 0x134fa(%rip), %rsi     # 0x1933c
leaq -0x400(%rbp), %rdi
callq 0x81b0
jmp 0x5e50
leaq -0x228(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x8300
movq %rax, -0x1188(%rbp)
jmp 0x5e6c
movq -0x1188(%rbp), %rdi
movl $0x1, %esi
callq 0x8790
movq %rax, -0x1190(%rbp)
jmp 0x5e86
leaq -0x429(%rbp), %rdi
movq %rdi, -0x1198(%rbp)
callq 0x5460
movq -0x1198(%rbp), %rdx
leaq 0x1347f(%rip), %rsi     # 0x19326
leaq -0x428(%rbp), %rdi
callq 0x81b0
jmp 0x5eb5
movq -0x1190(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x87c0
movq %rax, -0x11a0(%rbp)
jmp 0x5ed1
movq -0x11a0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x8430
jmp 0x5ee6
leaq -0x428(%rbp), %rdi
callq 0x5150
leaq -0x429(%rbp), %rdi
callq 0x52e0
leaq -0x400(%rbp), %rdi
callq 0x5150
leaq -0x401(%rbp), %rdi
callq 0x52e0
leaq -0x3d0(%rbp), %rdi
callq 0x84a0
movb $0x0, -0x43a(%rbp)
leaq -0x439(%rbp), %rdi
leaq -0x43a(%rbp), %rsi
callq 0x8580
jmp 0x5f3e
leaq -0x438(%rbp), %rdi
leaq -0x439(%rbp), %rsi
callq 0x85a0
jmp 0x5f53
leaq -0x461(%rbp), %rdi
movq %rdi, -0x11a8(%rbp)
callq 0x5460
movq -0x11a8(%rbp), %rdx
leaq 0x133c8(%rip), %rsi     # 0x1933c
leaq -0x460(%rbp), %rdi
callq 0x81b0
jmp 0x5f82
leaq -0x228(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x8300
movq %rax, -0x11b0(%rbp)
jmp 0x5f9e
movq -0x11b0(%rbp), %rdi
movl $0x1, %esi
callq 0x8790
movq %rax, -0x11b8(%rbp)
jmp 0x5fb8
leaq -0x489(%rbp), %rdi
movq %rdi, -0x11c0(%rbp)
callq 0x5460
movq -0x11c0(%rbp), %rdx
leaq 0x13351(%rip), %rsi     # 0x1932a
leaq -0x488(%rbp), %rdi
callq 0x81b0
jmp 0x5fe7
movq -0x11b8(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x87c0
movq %rax, -0x11c8(%rbp)
jmp 0x6003
movq -0x11c8(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0x8430
jmp 0x6018
leaq -0x488(%rbp), %rdi
callq 0x5150
leaq -0x489(%rbp), %rdi
callq 0x52e0
leaq -0x460(%rbp), %rdi
callq 0x5150
leaq -0x461(%rbp), %rdi
callq 0x52e0
leaq -0x438(%rbp), %rdi
callq 0x84a0
leaq -0x228(%rbp), %rax
movq %rax, -0x498(%rbp)
movq -0x498(%rbp), %rax
movq %rax, -0x11d8(%rbp)
leaq -0x4c1(%rbp), %rdi
movq %rdi, -0x11d0(%rbp)
callq 0x5460
movq -0x11d0(%rbp), %rdx
leaq 0x132ab(%rip), %rsi     # 0x1933c
leaq -0x4c0(%rbp), %rdi
callq 0x81b0
jmp 0x609f
movq -0x11d8(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x87f0
movq %rax, -0x11e0(%rbp)
jmp 0x60bb
movq -0x11e0(%rbp), %rdi
callq 0x8940
movq %rax, -0x11e8(%rbp)
jmp 0x60d0
leaq -0x4c0(%rbp), %rdi
callq 0x5150
leaq -0x4c1(%rbp), %rdi
callq 0x52e0
movq -0x11e8(%rbp), %rax
movq %rax, -0x4a0(%rbp)
movq -0x4a0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x8960
movq %rax, -0x11f0(%rbp)
jmp 0x610f
movq -0x11f0(%rbp), %rdi
callq 0x8a60
movq %rax, -0x11f8(%rbp)
jmp 0x6124
movq -0x11f8(%rbp), %rax
movq %rax, -0x4d0(%rbp)
movq -0x4d0(%rbp), %rax
movq %rax, -0x1208(%rbp)
leaq -0x4f9(%rbp), %rdi
movq %rdi, -0x1200(%rbp)
callq 0x5460
movq -0x1200(%rbp), %rdx
leaq 0x131a6(%rip), %rsi     # 0x19307
leaq -0x4f8(%rbp), %rdi
callq 0x81b0
jmp 0x616f
movq -0x1208(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x87f0
movq %rax, -0x1210(%rbp)
jmp 0x618b
movq -0x1210(%rbp), %rdi
callq 0x8a80
movq %rax, -0x1218(%rbp)
jmp 0x61a0
leaq -0x4f8(%rbp), %rdi
callq 0x5150
leaq -0x4f9(%rbp), %rdi
callq 0x52e0
movq -0x1218(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movq -0x498(%rbp), %rax
movq %rax, -0x1228(%rbp)
leaq -0x529(%rbp), %rdi
movq %rdi, -0x1220(%rbp)
callq 0x5460
movq -0x1220(%rbp), %rdx
leaq 0x13147(%rip), %rsi     # 0x1933c
leaq -0x528(%rbp), %rdi
callq 0x81b0
jmp 0x6203
movq -0x1228(%rbp), %rdi
leaq -0x528(%rbp), %rsi
callq 0x87f0
movq %rax, -0x1230(%rbp)
jmp 0x621f
movq -0x1230(%rbp), %rdi
movl $0x1, %esi
callq 0x8aa0
movq %rax, -0x1238(%rbp)
jmp 0x6239
leaq -0x551(%rbp), %rdi
movq %rdi, -0x1240(%rbp)
callq 0x5460
movq -0x1240(%rbp), %rdx
leaq 0x130cc(%rip), %rsi     # 0x19326
leaq -0x550(%rbp), %rdi
callq 0x81b0
jmp 0x6268
movq -0x1238(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x8ad0
movq %rax, -0x1248(%rbp)
jmp 0x6284
movq -0x1248(%rbp), %rdi
callq 0x8b00
movq %rax, -0x1250(%rbp)
jmp 0x6299
movq -0x1250(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x508(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x5150
leaq -0x551(%rbp), %rdi
callq 0x52e0
leaq -0x528(%rbp), %rdi
callq 0x5150
leaq -0x529(%rbp), %rdi
callq 0x52e0
movq 0x1dcf7(%rip), %rdi     # 0x23fd8
leaq 0x130a5(%rip), %rsi     # 0x1938d
callq 0x5270
movq %rax, -0x1258(%rbp)
jmp 0x62f6
movq -0x4d8(%rbp), %rdi
callq 0x8b20
movq %rax, -0x1260(%rbp)
jmp 0x630b
movq -0x1260(%rbp), %rsi
movq -0x1258(%rbp), %rdi
callq 0x5250
movq %rax, -0x1268(%rbp)
jmp 0x6327
movq -0x1268(%rbp), %rdi
movq 0x1dc93(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x633c
movq 0x1dc95(%rip), %rdi     # 0x23fd8
leaq 0x13055(%rip), %rsi     # 0x1939f
callq 0x5270
movq %rax, -0x1270(%rbp)
jmp 0x6358
leaq -0x508(%rbp), %rdi
callq 0x8b30
movq %rax, -0x1278(%rbp)
jmp 0x636d
movq -0x1270(%rbp), %rdi
movq -0x1278(%rbp), %rax
movsd (%rax), %xmm0
callq 0x54a0
movq %rax, -0x1280(%rbp)
jmp 0x638d
movq -0x1280(%rbp), %rdi
movq 0x1dc2d(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x63a2
movq -0x4a0(%rbp), %rsi
leaq -0x578(%rbp), %rdi
callq 0x8b40
jmp 0x63b7
movq -0x4a0(%rbp), %rsi
leaq -0x598(%rbp), %rdi
callq 0x8b70
jmp 0x63cc
jmp 0x63ce
leaq -0x578(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x8ba0
testb $0x1, %al
jne 0x63ea
jmp 0x6a8e
leaq -0x578(%rbp), %rdi
callq 0x8bd0
movq %rax, %rdi
callq 0x8a60
movq %rax, -0x1288(%rbp)
jmp 0x6407
movq -0x1288(%rbp), %rax
movq %rax, -0x5a0(%rbp)
movq -0x5a0(%rbp), %rdi
callq 0x8bf0
movq %rax, -0x1290(%rbp)
jmp 0x642a
movq -0x1290(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq -0x5a0(%rbp), %rdi
callq 0x8c20
movq %rax, -0x1298(%rbp)
jmp 0x644d
movq -0x1298(%rbp), %rax
movq %rax, -0x5b0(%rbp)
leaq -0x5a8(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x8c50
testb $0x1, %al
jne 0x6477
jmp 0x6a7b
leaq -0x5a8(%rbp), %rdi
callq 0x8c80
movq %rax, -0x5b8(%rbp)
movq -0x5b8(%rbp), %rax
movq %rax, -0x5c0(%rbp)
movq -0x5b8(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x5c8(%rbp)
leaq -0x5a8(%rbp), %rdi
callq 0x8ca0
jmp 0x645b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x652f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6526
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x651d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6508
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x5150
leaq -0xa1(%rbp), %rdi
callq 0x52e0
leaq -0x28(%rbp), %rdi
callq 0x84a0
leaq -0x48(%rbp), %rdi
callq 0x84d0
leaq -0x68(%rbp), %rdi
callq 0x5150
leaq -0x69(%rbp), %rdi
callq 0x52e0
jmp 0x7e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x65bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x65b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x65a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x658d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x5150
leaq -0x119(%rbp), %rdi
callq 0x52e0
leaq -0xb0(%rbp), %rdi
callq 0x84a0
leaq -0xd0(%rbp), %rdi
callq 0x84d0
leaq -0xf0(%rbp), %rdi
callq 0x5150
leaq -0xf1(%rbp), %rdi
callq 0x52e0
jmp 0x7e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6605
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x5150
leaq -0x159(%rbp), %rdi
callq 0x52e0
leaq -0x128(%rbp), %rdi
callq 0x84a0
jmp 0x7e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6648
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x5150
leaq -0x191(%rbp), %rdi
callq 0x52e0
leaq -0x168(%rbp), %rdi
callq 0x84a0
jmp 0x7e4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7e3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x84a0
jmp 0x7e3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x66ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x5150
leaq -0x251(%rbp), %rdi
callq 0x52e0
leaq -0x230(%rbp), %rdi
callq 0x84a0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x670d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x5150
leaq -0x281(%rbp), %rdi
callq 0x52e0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x67d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x67cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x67c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x67a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x679c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6790
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x5150
leaq -0x321(%rbp), %rdi
callq 0x52e0
leaq -0x2f8(%rbp), %rdi
callq 0x5150
leaq -0x2f9(%rbp), %rdi
callq 0x52e0
leaq -0x290(%rbp), %rdi
callq 0x84a0
leaq -0x2b0(%rbp), %rdi
callq 0x84d0
leaq -0x2d0(%rbp), %rdi
callq 0x5150
leaq -0x2d1(%rbp), %rdi
callq 0x52e0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x68a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6897
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x688b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6873
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6867
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x685b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x5150
leaq -0x3c1(%rbp), %rdi
callq 0x52e0
leaq -0x398(%rbp), %rdi
callq 0x5150
leaq -0x399(%rbp), %rdi
callq 0x52e0
leaq -0x330(%rbp), %rdi
callq 0x84a0
leaq -0x350(%rbp), %rdi
callq 0x84d0
leaq -0x370(%rbp), %rdi
callq 0x5150
leaq -0x371(%rbp), %rdi
callq 0x52e0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x690e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6902
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x68f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x5150
leaq -0x429(%rbp), %rdi
callq 0x52e0
leaq -0x400(%rbp), %rdi
callq 0x5150
leaq -0x401(%rbp), %rdi
callq 0x52e0
leaq -0x3d0(%rbp), %rdi
callq 0x84a0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6979
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x696d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x5150
leaq -0x489(%rbp), %rdi
callq 0x52e0
leaq -0x460(%rbp), %rdi
callq 0x5150
leaq -0x461(%rbp), %rdi
callq 0x52e0
leaq -0x438(%rbp), %rdi
callq 0x84a0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x69c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x5150
leaq -0x4c1(%rbp), %rdi
callq 0x52e0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x69ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0x5150
leaq -0x4f9(%rbp), %rdi
callq 0x52e0
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6a6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6a5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6a52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x5150
leaq -0x551(%rbp), %rdi
callq 0x52e0
leaq -0x528(%rbp), %rdi
callq 0x5150
leaq -0x529(%rbp), %rdi
callq 0x52e0
jmp 0x7e32
jmp 0x6a7d
leaq -0x578(%rbp), %rdi
callq 0x8cc0
jmp 0x63ce
movq 0x1d543(%rip), %rdi     # 0x23fd8
leaq 0x12914(%rip), %rsi     # 0x193b0
callq 0x5270
movq %rax, -0x12a0(%rbp)
jmp 0x6aaa
movq -0x12a0(%rbp), %rdi
movq 0x1d510(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x6abf
movq -0x4a0(%rbp), %rdi
movl $0x2, %esi
callq 0x8960
movq %rax, -0x12a8(%rbp)
jmp 0x6ad9
movq -0x12a8(%rbp), %rdi
callq 0x8a80
movq %rax, -0x12b0(%rbp)
jmp 0x6aee
movq -0x12b0(%rbp), %rax
movq %rax, -0x5d0(%rbp)
jmp 0x6bab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x7e32
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0x5d8(%rbp)
movq 0x1d4a4(%rip), %rdi     # 0x23fd8
leaq 0x1289e(%rip), %rsi     # 0x193d9
callq 0x5270
movq %rax, -0x12b8(%rbp)
jmp 0x6b49
movq -0x5d8(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x12b8(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x12c0(%rbp)
jmp 0x6b71
movq -0x12c0(%rbp), %rdi
movq 0x1d449(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x12c8(%rbp)
jmp 0x6b8d
movq -0x12c8(%rbp), %rdi
movq 0x1d42d(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x6ba2
callq 0x5410
jmp 0x6ba9
jmp 0x6bab
movq 0x1d426(%rip), %rdi     # 0x23fd8
leaq 0x12839(%rip), %rsi     # 0x193f2
callq 0x5270
movq %rax, -0x12d0(%rbp)
jmp 0x6bc7
movq -0x12d0(%rbp), %rdi
movq 0x1d3f3(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x6bdc
movq -0x498(%rbp), %rax
movq %rax, -0x12e0(%rbp)
leaq -0x601(%rbp), %rdi
movq %rdi, -0x12d8(%rbp)
callq 0x5460
movq -0x12d8(%rbp), %rdx
leaq 0x12731(%rip), %rsi     # 0x1933c
leaq -0x600(%rbp), %rdi
callq 0x81b0
jmp 0x6c19
movq -0x12e0(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0x87f0
movq %rax, -0x12e8(%rbp)
jmp 0x6c35
movq -0x12e8(%rbp), %rdi
movl $0x1, %esi
callq 0x8aa0
movq %rax, -0x12f0(%rbp)
jmp 0x6c4f
leaq -0x629(%rbp), %rdi
movq %rdi, -0x12f8(%rbp)
callq 0x5460
movq -0x12f8(%rbp), %rdx
leaq 0x127af(%rip), %rsi     # 0x1941f
leaq -0x628(%rbp), %rdi
callq 0x81b0
jmp 0x6c7e
movq -0x12f0(%rbp), %rdi
leaq -0x628(%rbp), %rsi
callq 0x8ad0
movq %rax, -0x1300(%rbp)
jmp 0x6c9a
movq -0x1300(%rbp), %rdi
callq 0x8d20
movq %rax, -0x1308(%rbp)
jmp 0x6caf
leaq -0x628(%rbp), %rdi
callq 0x5150
leaq -0x629(%rbp), %rdi
callq 0x52e0
leaq -0x600(%rbp), %rdi
callq 0x5150
leaq -0x601(%rbp), %rdi
callq 0x52e0
movq -0x1308(%rbp), %rax
movq %rax, -0x5e0(%rbp)
jmp 0x6e1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x6d05
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6d7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6d72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6d66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x628(%rbp), %rdi
callq 0x5150
leaq -0x629(%rbp), %rdi
callq 0x52e0
leaq -0x600(%rbp), %rdi
callq 0x5150
leaq -0x601(%rbp), %rdi
callq 0x52e0
movl -0x7c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x7e32
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0x638(%rbp)
movq 0x1d233(%rip), %rdi     # 0x23fd8
leaq 0x1262d(%rip), %rsi     # 0x193d9
callq 0x5270
movq %rax, -0x1310(%rbp)
jmp 0x6dba
movq -0x638(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x1310(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x1318(%rbp)
jmp 0x6de2
movq -0x1318(%rbp), %rdi
movq 0x1d1d8(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x1320(%rbp)
jmp 0x6dfe
movq -0x1320(%rbp), %rdi
movq 0x1d1bc(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x6e13
callq 0x5410
jmp 0x6e1a
jmp 0x6e1c
movq 0x1d1b5(%rip), %rdi     # 0x23fd8
leaq 0x125fa(%rip), %rsi     # 0x19424
callq 0x5270
movq %rax, -0x1328(%rbp)
jmp 0x6e38
movq -0x1328(%rbp), %rdi
movq 0x1d182(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x6e4d
movq -0x498(%rbp), %rax
movq %rax, -0x1338(%rbp)
leaq -0x661(%rbp), %rdi
movq %rdi, -0x1330(%rbp)
callq 0x5460
movq -0x1330(%rbp), %rdx
leaq 0x124c0(%rip), %rsi     # 0x1933c
leaq -0x660(%rbp), %rdi
callq 0x81b0
jmp 0x6e8a
movq -0x1338(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x87f0
movq %rax, -0x1340(%rbp)
jmp 0x6ea6
leaq -0x689(%rbp), %rdi
movq %rdi, -0x1348(%rbp)
callq 0x5460
movq -0x1348(%rbp), %rdx
leaq 0x1257b(%rip), %rsi     # 0x19442
leaq -0x688(%rbp), %rdi
callq 0x81b0
jmp 0x6ed5
movq -0x1340(%rbp), %rdi
leaq -0x688(%rbp), %rsi
callq 0x8ad0
movq %rax, -0x1350(%rbp)
jmp 0x6ef1
leaq -0x688(%rbp), %rdi
callq 0x5150
leaq -0x689(%rbp), %rdi
callq 0x52e0
leaq -0x660(%rbp), %rdi
callq 0x5150
leaq -0x661(%rbp), %rdi
callq 0x52e0
movq -0x1350(%rbp), %rax
movq %rax, -0x640(%rbp)
jmp 0x705e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x6f47
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6fc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6fb4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6fa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x6f9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x688(%rbp), %rdi
callq 0x5150
leaq -0x689(%rbp), %rdi
callq 0x52e0
leaq -0x660(%rbp), %rdi
callq 0x5150
leaq -0x661(%rbp), %rdi
callq 0x52e0
movl -0x7c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x7e32
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0x698(%rbp)
movq 0x1cff1(%rip), %rdi     # 0x23fd8
leaq 0x123eb(%rip), %rsi     # 0x193d9
callq 0x5270
movq %rax, -0x1358(%rbp)
jmp 0x6ffc
movq -0x698(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x1358(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x1360(%rbp)
jmp 0x7024
movq -0x1360(%rbp), %rdi
movq 0x1cf96(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x1368(%rbp)
jmp 0x7040
movq -0x1368(%rbp), %rdi
movq 0x1cf7a(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7055
callq 0x5410
jmp 0x705c
jmp 0x705e
movq -0x498(%rbp), %rsi
leaq -0x6b0(%rbp), %rdi
callq 0x8d40
jmp 0x7073
movq -0x498(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x8d70
movb %al, -0x1369(%rbp)
jmp 0x708e
movb -0x1369(%rbp), %al
andb $0x1, %al
movb %al, -0x6b1(%rbp)
movq 0x1cf35(%rip), %rdi     # 0x23fd8
leaq 0x123ab(%rip), %rsi     # 0x19455
callq 0x5270
movq %rax, -0x1378(%rbp)
jmp 0x70b8
movq -0x1378(%rbp), %rdi
movb -0x6b1(%rbp), %cl
leaq 0x123cd(%rip), %rax     # 0x19499
leaq 0x12706(%rip), %rsi     # 0x197d9
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x5270
movq %rax, -0x1380(%rbp)
jmp 0x70e8
movq -0x1380(%rbp), %rdi
movq 0x1ced2(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x70fd
leaq -0x6e1(%rbp), %rdi
movq %rdi, -0x1388(%rbp)
callq 0x5460
movq -0x1388(%rbp), %rdx
leaq 0x1221e(%rip), %rsi     # 0x1933c
leaq -0x6e0(%rbp), %rdi
callq 0x81b0
jmp 0x712c
leaq -0x6b0(%rbp), %rdi
leaq -0x6e0(%rbp), %rsi
callq 0x8300
movq %rax, -0x1390(%rbp)
jmp 0x7148
movq -0x1390(%rbp), %rdi
callq 0x8da0
movq %rax, -0x1398(%rbp)
jmp 0x715d
leaq -0x6e0(%rbp), %rdi
callq 0x5150
leaq -0x6e1(%rbp), %rdi
callq 0x52e0
movq -0x1398(%rbp), %rax
movq %rax, -0x6c0(%rbp)
movq -0x6c0(%rbp), %rsi
movq %rsi, -0x13a0(%rbp)
leaq -0x708(%rbp), %rdi
callq 0x8e20
jmp 0x719f
movq -0x13a0(%rbp), %rsi
leaq -0x728(%rbp), %rdi
leaq -0x708(%rbp), %rdx
callq 0x8dc0
jmp 0x71bb
movq -0x498(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x8d70
movb %al, -0x13a1(%rbp)
jmp 0x71d6
movb -0x13a1(%rbp), %al
andb $0x1, %al
movb %al, -0x729(%rbp)
movq 0x1cded(%rip), %rdi     # 0x23fd8
leaq 0x122ac(%rip), %rsi     # 0x1949e
callq 0x5270
movq %rax, -0x13b0(%rbp)
jmp 0x7200
movq -0x13b0(%rbp), %rdi
movb -0x729(%rbp), %cl
leaq 0x12285(%rip), %rax     # 0x19499
leaq 0x125be(%rip), %rsi     # 0x197d9
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x5270
movq %rax, -0x13b8(%rbp)
jmp 0x7230
movq -0x13b8(%rbp), %rdi
movq 0x1cd8a(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x13c0(%rbp)
jmp 0x724c
movq -0x13c0(%rbp), %rdi
movq 0x1cd6e(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7261
movq 0x1cd70(%rip), %rdi     # 0x23fd8
leaq 0x1226f(%rip), %rsi     # 0x194de
callq 0x5270
jmp 0x7276
leaq -0x8b8(%rbp), %rdi
callq 0x51b0
jmp 0x7284
movq -0x498(%rbp), %rdi
leaq -0x8a8(%rbp), %rsi
xorl %edx, %edx
callq 0x8e50
jmp 0x729b
movq 0x1cd36(%rip), %rdi     # 0x23fd8
leaq 0x12249(%rip), %rsi     # 0x194f2
callq 0x5270
movq %rax, -0x13c8(%rbp)
jmp 0x72b7
movq -0x13c8(%rbp), %rdi
movq 0x1cd03(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x72cc
leaq -0x8d0(%rbp), %rdi
movq %rdi, -0x13d0(%rbp)
callq 0x8190
movq -0x13d0(%rbp), %rdi
leaq -0x8b8(%rbp), %rsi
callq 0x8e90
jmp 0x72f4
movq -0x498(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x8d70
movb %al, -0x13d1(%rbp)
jmp 0x730f
movb -0x13d1(%rbp), %al
andb $0x1, %al
movb %al, -0x8d1(%rbp)
movq 0x1ccb4(%rip), %rdi     # 0x23fd8
leaq 0x121e0(%rip), %rsi     # 0x1950b
callq 0x5270
movq %rax, -0x13e0(%rbp)
jmp 0x7339
movq -0x13e0(%rbp), %rdi
movb -0x8d1(%rbp), %cl
leaq 0x1214c(%rip), %rax     # 0x19499
leaq 0x12485(%rip), %rsi     # 0x197d9
testb $0x1, %cl
cmovneq %rax, %rsi
callq 0x5270
movq %rax, -0x13e8(%rbp)
jmp 0x7369
movq -0x13e8(%rbp), %rdi
movq 0x1cc51(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x13f0(%rbp)
jmp 0x7385
movq -0x13f0(%rbp), %rdi
movq 0x1cc35(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x739a
leaq -0xa79(%rbp), %rdi
movq %rdi, -0x13f8(%rbp)
callq 0x5460
movq -0x13f8(%rbp), %rdx
leaq 0x121a5(%rip), %rsi     # 0x19560
leaq -0xa78(%rbp), %rdi
callq 0x81b0
jmp 0x73c9
leaq -0xa58(%rbp), %rdi
leaq -0xa78(%rbp), %rsi
movl $0x8, %edx
callq 0x5420
jmp 0x73e3
leaq -0xa78(%rbp), %rdi
callq 0x5150
leaq -0xa79(%rbp), %rdi
callq 0x52e0
movq 0x1cbd6(%rip), %rdi     # 0x23fd8
leaq 0x1215e(%rip), %rsi     # 0x19567
callq 0x5270
movq %rax, -0x1400(%rbp)
jmp 0x7417
movq -0x1400(%rbp), %rdi
movq 0x1cba3(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x742c
leaq -0xa98(%rbp), %rdi
movq %rdi, -0x1408(%rbp)
callq 0x8190
movq -0x1408(%rbp), %rdi
leaq -0xa58(%rbp), %rsi
callq 0x8e90
jmp 0x7454
leaq -0xa98(%rbp), %rdi
callq 0x8ec0
leaq -0xa58(%rbp), %rdi
callq 0x5110
jmp 0x766f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x7484
jmp 0x7e32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7e26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x74c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x6e0(%rbp), %rdi
callq 0x5150
leaq -0x6e1(%rbp), %rdi
callq 0x52e0
jmp 0x7e26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7e1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7e0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7519
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa78(%rbp), %rdi
callq 0x5150
leaq -0xa79(%rbp), %rdi
callq 0x52e0
jmp 0x7559
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x754d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa98(%rbp), %rdi
callq 0x8ec0
leaq -0xa58(%rbp), %rdi
callq 0x5110
movl -0x7c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x7e0e
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0xaa0(%rbp)
movq 0x1ca58(%rip), %rdi     # 0x23fd8
leaq 0x12027(%rip), %rsi     # 0x195ae
callq 0x5270
movq %rax, -0x1410(%rbp)
jmp 0x7595
movq -0xaa0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x1410(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x1418(%rbp)
jmp 0x75bd
movq -0x1418(%rbp), %rdi
leaq 0x12001(%rip), %rsi     # 0x195cc
callq 0x5270
movq %rax, -0x1420(%rbp)
jmp 0x75d9
movq -0x1420(%rbp), %rdi
movq -0xaa0(%rbp), %rax
movl 0x10(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x1428(%rbp)
jmp 0x75fa
movq -0x1428(%rbp), %rdi
movl $0x2f, %esi
callq 0x5340
movq %rax, -0x1430(%rbp)
jmp 0x7614
movq -0x1430(%rbp), %rdi
movq -0xaa0(%rbp), %rax
movl 0x14(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x1438(%rbp)
jmp 0x7635
movq -0x1438(%rbp), %rdi
movq 0x1c985(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x1440(%rbp)
jmp 0x7651
movq -0x1440(%rbp), %rdi
movq 0x1c969(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7666
callq 0x5410
jmp 0x766d
jmp 0x766f
leaq -0xc41(%rbp), %rdi
movq %rdi, -0x1448(%rbp)
callq 0x5460
movq -0x1448(%rbp), %rdx
leaq 0x11f4c(%rip), %rsi     # 0x195dc
leaq -0xc40(%rbp), %rdi
callq 0x81b0
jmp 0x769e
leaq -0xc20(%rbp), %rdi
leaq -0xc40(%rbp), %rsi
movl $0x8, %edx
callq 0x5420
jmp 0x76b8
leaq -0xc40(%rbp), %rdi
callq 0x5150
leaq -0xc41(%rbp), %rdi
callq 0x52e0
movq 0x1c901(%rip), %rdi     # 0x23fd8
leaq 0x11f07(%rip), %rsi     # 0x195e5
callq 0x5270
movq %rax, -0x1450(%rbp)
jmp 0x76ec
movq -0x1450(%rbp), %rdi
movq 0x1c8ce(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7701
leaq -0xc98(%rbp), %rdi
callq 0x8610
jmp 0x770f
leaq -0xc98(%rbp), %rdi
leaq -0xc20(%rbp), %rsi
callq 0x8ee0
jmp 0x7724
leaq -0xc98(%rbp), %rdi
callq 0x8f10
leaq -0xc20(%rbp), %rdi
callq 0x5110
jmp 0x78d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x7754
jmp 0x7e0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x777f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xc40(%rbp), %rdi
callq 0x5150
leaq -0xc41(%rbp), %rdi
callq 0x52e0
jmp 0x77bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x77b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xc98(%rbp), %rdi
callq 0x8f10
leaq -0xc20(%rbp), %rdi
callq 0x5110
movl -0x7c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x7e0e
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0xca0(%rbp)
movq 0x1c7f2(%rip), %rdi     # 0x23fd8
leaq 0x11dc1(%rip), %rsi     # 0x195ae
callq 0x5270
movq %rax, -0x1458(%rbp)
jmp 0x77fb
movq -0xca0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x1458(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x1460(%rbp)
jmp 0x7823
movq -0x1460(%rbp), %rdi
leaq 0x11d9b(%rip), %rsi     # 0x195cc
callq 0x5270
movq %rax, -0x1468(%rbp)
jmp 0x783f
movq -0x1468(%rbp), %rdi
movq -0xca0(%rbp), %rax
movl 0x10(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x1470(%rbp)
jmp 0x7860
movq -0x1470(%rbp), %rdi
movl $0x2f, %esi
callq 0x5340
movq %rax, -0x1478(%rbp)
jmp 0x787a
movq -0x1478(%rbp), %rdi
movq -0xca0(%rbp), %rax
movl 0x14(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x1480(%rbp)
jmp 0x789b
movq -0x1480(%rbp), %rdi
movq 0x1c71f(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x1488(%rbp)
jmp 0x78b7
movq -0x1488(%rbp), %rdi
movq 0x1c703(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x78cc
callq 0x5410
jmp 0x78d3
jmp 0x78d5
leaq -0xe41(%rbp), %rdi
movq %rdi, -0x1490(%rbp)
callq 0x5460
movq -0x1490(%rbp), %rdx
leaq 0x11d25(%rip), %rsi     # 0x1961b
leaq -0xe40(%rbp), %rdi
callq 0x81b0
jmp 0x7904
leaq -0xe20(%rbp), %rdi
leaq -0xe40(%rbp), %rsi
movl $0x8, %edx
callq 0x5420
jmp 0x791e
leaq -0xe40(%rbp), %rdi
callq 0x5150
leaq -0xe41(%rbp), %rdi
callq 0x52e0
movq 0x1c69b(%rip), %rdi     # 0x23fd8
leaq 0x11cf8(%rip), %rsi     # 0x1963c
callq 0x5270
movq %rax, -0x1498(%rbp)
jmp 0x7952
movq -0x1498(%rbp), %rdi
movq 0x1c668(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7967
leaq -0xe98(%rbp), %rdi
callq 0x8610
jmp 0x7975
leaq -0xe98(%rbp), %rdi
leaq -0xe20(%rbp), %rsi
callq 0x8ee0
jmp 0x798a
leaq -0xe98(%rbp), %rdi
callq 0x8f10
leaq -0xe20(%rbp), %rdi
callq 0x5110
jmp 0x7b3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x79ba
jmp 0x7e0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x79e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xe40(%rbp), %rdi
callq 0x5150
leaq -0xe41(%rbp), %rdi
callq 0x52e0
jmp 0x7a25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7a19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xe98(%rbp), %rdi
callq 0x8f10
leaq -0xe20(%rbp), %rdi
callq 0x5110
movl -0x7c(%rbp), %eax
movl $0x3, %ecx
cmpl %ecx, %eax
jne 0x7e0e
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0xea0(%rbp)
movq 0x1c58c(%rip), %rdi     # 0x23fd8
leaq 0x11c1c(%rip), %rsi     # 0x1966f
callq 0x5270
movq %rax, -0x14a0(%rbp)
jmp 0x7a61
movq -0xea0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x14a0(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x14a8(%rbp)
jmp 0x7a89
movq -0x14a8(%rbp), %rdi
leaq 0x11b35(%rip), %rsi     # 0x195cc
callq 0x5270
movq %rax, -0x14b0(%rbp)
jmp 0x7aa5
movq -0x14b0(%rbp), %rdi
movq -0xea0(%rbp), %rax
movl 0x10(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x14b8(%rbp)
jmp 0x7ac6
movq -0x14b8(%rbp), %rdi
movl $0x2f, %esi
callq 0x5340
movq %rax, -0x14c0(%rbp)
jmp 0x7ae0
movq -0x14c0(%rbp), %rdi
movq -0xea0(%rbp), %rax
movl 0x14(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x14c8(%rbp)
jmp 0x7b01
movq -0x14c8(%rbp), %rdi
movq 0x1c4b9(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x14d0(%rbp)
jmp 0x7b1d
movq -0x14d0(%rbp), %rdi
movq 0x1c49d(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7b32
callq 0x5410
jmp 0x7b39
jmp 0x7b3b
leaq -0x1041(%rbp), %rdi
movq %rdi, -0x14d8(%rbp)
callq 0x5460
movq -0x14d8(%rbp), %rdx
leaq 0x11b30(%rip), %rsi     # 0x1968c
leaq -0x1040(%rbp), %rdi
callq 0x81b0
jmp 0x7b6a
leaq -0x1020(%rbp), %rdi
leaq -0x1040(%rbp), %rsi
movl $0x8, %edx
callq 0x5420
jmp 0x7b84
leaq -0x1040(%rbp), %rdi
callq 0x5150
leaq -0x1041(%rbp), %rdi
callq 0x52e0
movq 0x1c435(%rip), %rdi     # 0x23fd8
leaq 0x11aeb(%rip), %rsi     # 0x19695
callq 0x5270
movq %rax, -0x14e0(%rbp)
jmp 0x7bb8
movq -0x14e0(%rbp), %rdi
movq 0x1c402(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7bcd
leaq -0x1098(%rbp), %rdi
callq 0x8610
jmp 0x7bdb
leaq -0x1098(%rbp), %rdi
leaq -0x1020(%rbp), %rsi
callq 0x8ee0
jmp 0x7bf0
leaq -0x1098(%rbp), %rdi
callq 0x8f10
leaq -0x1020(%rbp), %rdi
callq 0x5110
jmp 0x7da1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x7c20
jmp 0x7e0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7c4b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1040(%rbp), %rdi
callq 0x5150
leaq -0x1041(%rbp), %rdi
callq 0x52e0
jmp 0x7c8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x7c7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1098(%rbp), %rdi
callq 0x8f10
leaq -0x1020(%rbp), %rdi
callq 0x5110
movl -0x7c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x7e0e
movq -0x78(%rbp), %rdi
callq 0x50d0
movq %rax, -0x10a0(%rbp)
movq 0x1c326(%rip), %rdi     # 0x23fd8
leaq 0x118f5(%rip), %rsi     # 0x195ae
callq 0x5270
movq %rax, -0x14e8(%rbp)
jmp 0x7cc7
movq -0x10a0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x14e8(%rbp), %rdi
movq %rax, %rsi
callq 0x5270
movq %rax, -0x14f0(%rbp)
jmp 0x7cef
movq -0x14f0(%rbp), %rdi
leaq 0x118cf(%rip), %rsi     # 0x195cc
callq 0x5270
movq %rax, -0x14f8(%rbp)
jmp 0x7d0b
movq -0x14f8(%rbp), %rdi
movq -0x10a0(%rbp), %rax
movl 0x10(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x1500(%rbp)
jmp 0x7d2c
movq -0x1500(%rbp), %rdi
movl $0x2f, %esi
callq 0x5340
movq %rax, -0x1508(%rbp)
jmp 0x7d46
movq -0x1508(%rbp), %rdi
movq -0x10a0(%rbp), %rax
movl 0x14(%rax), %esi
incl %esi
callq 0x53a0
movq %rax, -0x1510(%rbp)
jmp 0x7d67
movq -0x1510(%rbp), %rdi
movq 0x1c253(%rip), %rsi     # 0x23fc8
callq 0x52b0
movq %rax, -0x1518(%rbp)
jmp 0x7d83
movq -0x1518(%rbp), %rdi
movq 0x1c237(%rip), %rsi     # 0x23fc8
callq 0x52b0
jmp 0x7d98
callq 0x5410
jmp 0x7d9f
jmp 0x7da1
movl $0x0, -0x4(%rbp)
leaq -0x8d0(%rbp), %rdi
callq 0x8ec0
leaq -0x8b8(%rbp), %rdi
callq 0x51e0
leaq -0x6b0(%rbp), %rdi
callq 0x8ec0
leaq -0x228(%rbp), %rdi
callq 0x8ec0
leaq -0x1e8(%rbp), %rdi
callq 0x8f10
leaq -0x20(%rbp), %rdi
callq 0x8ec0
movl -0x4(%rbp), %eax
addq $0x1520, %rsp           # imm = 0x1520
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x5410
jmp 0x7e0c
jmp 0x7e0e
leaq -0x8d0(%rbp), %rdi
callq 0x8ec0
leaq -0x8b8(%rbp), %rdi
callq 0x51e0
leaq -0x6b0(%rbp), %rdi
callq 0x8ec0
leaq -0x228(%rbp), %rdi
callq 0x8ec0
leaq -0x1e8(%rbp), %rdi
callq 0x8f10
leaq -0x20(%rbp), %rdi
callq 0x8ec0
movq -0x78(%rbp), %rdi
callq 0x5450
movq %rax, %rdi
callq 0x8d10
nopw %cs:(%rax,%rax)
nop