// File: /workspace/github_cpp_makefile_star2_O3/Neurochrom[P]hours_calc/hours_calc.cpp
// Function: main
int main(int argc, char* argv[])
{
   try {
      string filename = "hours.txt";
      if (argc > 1)
      {
         if (argv[1][0] == '-' || argv[1][0] == '/')
         {
            cout << "Usage:\n"
                    " hours_calc [input_filename [main_txt_stats_output_filename [csv_stats_output_filename [cutoff_year]]]]\n"
                    " By default:\n"
                    "  input_filename = hours.txt\n"
                    "  main_txt_stats_output_filename = hour_stats.txt\n"
                    "  csv_stats_output_filename = hour_stats.csv\n"
                    "  cutoff_year = 2010" << endl;
            return 0;
         }
         filename = argv[1];
      }
      ifstream ifs(filename.c_str());
      if (!ifs.is_open())
         ERROR("Unable to open file \"" << filename << "\"");

      skipUTF8BOM(&ifs);

      string ofilename = "hour_stats.txt";   // Also a default.
      if (argc > 2)
         ofilename = argv[2];
      ofstream ofs(ofilename.c_str());
      if (!ofs.is_open())
         ERROR("Unable to open file \"" << ofilename << "\"");

      string ofilename2 = "hour_stats.csv";   // Also a default.
      if (argc > 3)
         ofilename2 = argv[3];
      ofstream ofs2;
      if(ofilename2 != ofilename)
      {
         ofs2.open(ofilename2.c_str());
         if (!ofs2.is_open())
            ERROR("Unable to open file \"" << ofilename2 << "\"");
      }

      unsigned cutoffYear = 2010;
      if (argc > 4)
         cutoffYear = stoi(string(argv[4]));

      std::ostream& oss = ofs;
      std::ostream& oss2 = ofilename2 != ofilename ? ofs2 : ofs;

      oss << "Hours calculator" << endl;
      oss << "   Calculating only from year " << cutoffYear << endl;

      MinutesMap minutesMap;

      typedef map<pair<string, string>, unsigned> DMap;  // <person, day> - minutes
      DMap dayMinutes;

      unsigned numLines = 0;
      bool expectsNewDate = true;
      bool expectsHourLines = false;
      YearMon curYearMon;
      unsigned curDay = 0;
      string curDayStr;
      while (!ifs.eof() && ifs.peek() != std::ifstream::traits_type::eof())
      {
         string line = loadStrLine(ifs);
         ++numLines;

         if (isEmptyOrWhitespace(line))
         {
            // Empty lines separate dates.
            expectsNewDate = true;
            expectsHourLines = false;
            continue;
         }

         assert(!(expectsNewDate & expectsHourLines));

         if (expectsNewDate)
         {
            vector<string> ss = splitIntoTokens(line, ".:- \t");

            if (ss.size() >= 3)
            {
               unsigned year,mon,day;
               try
               {
                  year = stoi(ss[0]);
                  mon = stoi(ss[1]);
                  day = stoi(ss[2]);
               }
               catch (exception)
               {
                  continue;
               }

               expectsNewDate = false;
               expectsHourLines = true;

               curYearMon = YearMon(year, mon);
               curDay = day;
               curDayStr = line;
               while (isspace(curDayStr.back()))
                  curDayStr.pop_back();

               if (year < 2010)
                  break;
            }

            continue;
         }

         if (expectsHourLines)
         {
            vector<string> ss = splitIntoTokens(line, " \t", "[/");

            // something without a name and 2 hour:minute entries can only be a comment
            if (ss.size() < 3)
               continue;

            string person = ss[0];

            // Something starting with punctuation or a number etc. is not a name - assume a comment line
            if ( person[0] > ' ' && person[0] < 'A')
               continue;

            // Remove the recommended but optional : behind the name
            if (person[person.size() - 1] == ':')
               person = person.substr(0, person.size() - 1);
            person = upperCase(person);

            vector<HourMin> hms;
            size_t i = 1;
            while (i < ss.size())
            {
               if(!isdigit(ss[i][0]))
               {
                  if (ss[i][0] == '[' ||
                      ss[i][0] == '#' ||
                      (ss[i][0]=='/' && ss[i].size()>=2 && ss[i][1]=='/')  // //
                     )
                  {
                     // A comment or category from here on.
                     break;
                  }
                  else
                  {
                     ++i;
                     continue;
                  }
               }
               HourMin hm;
               if (!parseHourMin(&hm, ss[i]))
                  break;
               hms.push_back(hm);
               ++i;
            }

            // Skip the lines with 0 valid time entries.
            if (!hms.size())
               continue;

            unsigned totalMinutesForLine = 0;

            for (size_t j = 0; j + 1 < hms.size(); j += 2)
            {
               HourMin hm1 = hms[j];
               HourMin hm2 = hms[j + 1];
               unsigned minutes = hm2 - hm1;
               totalMinutesForLine += minutes;
            }
            if ((hms.size() % 2) != 0)
            {
               oss << "WARNING: Uneven number of time entries for " << curYearMon << "-" << curDay << " in line " << numLines << ": \"" << line << "\"" << endl;
               continue;
            }

            string typeOfWork;
            if (i != ss.size())
            {
               if ((ss[i][0] == '[') && (ss[i][ ss[i].size() - 1 ] == ']'))
                  typeOfWork = upperCase( ss[i].substr(1, ss[i].size() - 2) );
            }
            vector<string> typesOfWork = splitIntoTokens(typeOfWork, "\\/,");
            if (typesOfWork.empty())
               typesOfWork.push_back("UNASSIGNED");
            typeOfWork.clear();

#ifdef DO_NOT_SPLIT_TYPES_OF_WORK
            sort(typesOfWork.begin(), typesOfWork.end());
            for (size_t k = 0; k < typesOfWork.size(); ++k)
            {
               if (!typeOfWork.empty())
                  typeOfWork.push_back('/');
               typeOfWork += typesOfWork[k];
            }
            minutesMap.update(person, curYearMon, typeOfWork, totalMinutesForLine);
#else
            double iTypesOfWorkSize;
            iTypesOfWorkSize = 1.0 / typesOfWork.size();
            for (auto& tow : typesOfWork)
                minutesMap.update(person, curYearMon, tow, unsigned(totalMinutesForLine * iTypesOfWorkSize));
#endif
            if (dayMinutes.find(make_pair(person, curDayStr)) == dayMinutes.end())
               dayMinutes[make_pair(person, curDayStr)] = totalMinutesForLine;
            else
               dayMinutes[make_pair(person, curDayStr)] += totalMinutesForLine;
         }
      }

      oss << "number of lines: " << numLines << endl;

      // All people.
      for (auto pi = minutesMap.s.cbegin(); pi != minutesMap.s.cend(); ++pi)
      {
         oss << endl;
         oss << pi->first << ":" << endl;

         // All months per person.
         for (auto pmi = pi->second.s.cbegin(); pmi != pi->second.s.cend(); ++pmi)
         {
            // All work types per month (per person).
            oss << "   " << pmi->first << ":" << endl;
            for (auto mi = pmi->second.s.begin(); mi != pmi->second.s.end(); ++mi)
               oss << "      " << expandStr(mi->first + ':', 12) << " " << hoursMinsStr(mi->second, 12) << "   ( " << mi->second << " m )" << endl;
            unsigned total = pmi->second.calcTotal();
            oss << "      " << expandStr("*:", 12) << " " << hoursMinsStr(total, 12) << "   ( " << total << " m )" << endl;
         }

         {
            // All work types for all months.
            oss << "   all time sum:" << endl;
            for (auto mi = pi->second.workTypesForAll.s.cbegin(); mi != pi->second.workTypesForAll.s.cend(); ++mi)
               oss << "      " << expandStr(mi->first + ':', 12) << " " << hoursMinsStr(mi->second, 12) << "   ( " << mi->second << " m )" << endl;
            unsigned total = pi->second.workTypesForAll.calcTotal();
            oss << "      " << expandStr("*:", 12) << " " << hoursMinsStr(total, 12) << "   ( " << total << " m )" << endl;
         }
      }

      /// For all people combined.
      {
         oss << endl;
         oss << "The whole crew combined" << ":" << endl;

         // All months per person.
         for (auto pmi = minutesMap.statsForWorkTypesForAll.s.begin(); pmi != minutesMap.statsForWorkTypesForAll.s.end(); ++pmi)
         {
            // All work types per month (per person).
            oss << "   " << pmi->first << ":" << endl;
            for (auto mi = pmi->second.s.begin(); mi != pmi->second.s.end(); ++mi)
               oss << "      " << expandStr(mi->first + ':', 12) << " " << hoursMinsStr(mi->second, 12) << "   ( " << mi->second << " m )" << endl;
            unsigned total = pmi->second.calcTotal();
            oss << "      " << expandStr("*:", 12) << " " << hoursMinsStr(total, 12) << "   ( " << total << " m )" << endl;
         }

         {
            // All work types for all months.
            oss << "   all time sum:" << endl;
            for (auto mi = minutesMap.statsForWorkTypesForAll.workTypesForAll.s.begin();
                 mi != minutesMap.statsForWorkTypesForAll.workTypesForAll.s.end(); ++mi)
               oss << "      " << expandStr(mi->first + ':', 12) << " " << hoursMinsStr(mi->second, 12) << "   ( " << mi->second << " m )" << endl;
            unsigned total = minutesMap.statsForWorkTypesForAll.workTypesForAll.calcTotal();
            oss << "      " << expandStr("*:", 12) << " " << hoursMinsStr(total, 12) << "   ( " << total << " m )" << endl;
         }
      }

      oss << endl;

      oss2 << "Person\tDay\tHours\n";
      for (auto it = dayMinutes.begin(); it!=dayMinutes.end(); ++it)
      {
         oss2 <<it->first.first<<"\t" << it->first.second << "\t" << fixed << setprecision(9)<< it->second / 60.0 << endl;
      }

      return 0;
   }
   catch (std::exception& e)
   {
      ERROR(e.what());
   }
   catch (...)
   {
      ERROR("Unknown exception");
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x888, %rsp            # imm = 0x888
movq %rsi, %rbx
movl %edi, %r14d
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x42e5(%rip), %rsi      # 0x80e0
leaq 0x42e7(%rip), %rdx      # 0x80e9
leaq -0xe0(%rbp), %rdi
callq 0x7484
cmpl $0x2, %r14d
jl 0x3e9c
movq 0x8(%rbx), %r15
movzbl (%r15), %eax
orl $0x2, %eax
cmpl $0x2f, %eax
jne 0x3e75
movq 0x71a1(%rip), %rbx      # 0xafd0
leaq 0x42b4(%rip), %rsi      # 0x80ea
movl $0x10c, %edx            # imm = 0x10C
movq %rbx, %rdi
callq 0x3290
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq 0x716f(%rip), %rdi      # 0xafd0
callq 0x3030
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x3190
jmp 0x5e90
leaq -0xe0(%rbp), %r12
movq 0x8(%r12), %r13
movq %r15, %rdi
callq 0x3110
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x3370
movq -0xe0(%rbp), %rsi
leaq -0x6a8(%rbp), %rdi
movl $0x8, %edx
callq 0x33e0
leaq -0x630(%rbp), %rdi
callq 0x3090
testb %al, %al
je 0x4002
leaq -0x6a8(%rbp), %rdi
callq 0x3d85
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x432f(%rip), %rsi      # 0x8215
leaq 0x4336(%rip), %rdx      # 0x8223
leaq -0x120(%rbp), %rdi
callq 0x7484
cmpl $0x3, %r14d
jl 0x3f2a
movq 0x10(%rbx), %r15
leaq -0x120(%rbp), %r12
movq 0x8(%r12), %r13
movq %r15, %rdi
callq 0x3110
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x3370
movq -0x120(%rbp), %rsi
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
movl $0x10, %edx
callq 0x3270
leaq -0x430(%rbp), %rdi
callq 0x3090
testb %al, %al
je 0x4094
leaq -0x150(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x42b5(%rip), %rsi      # 0x8224
leaq 0x42bc(%rip), %rdx      # 0x8232
leaq -0x160(%rbp), %rdi
callq 0x7484
cmpl $0x4, %r14d
jl 0x3fb3
movq 0x18(%rbx), %r15
leaq -0x160(%rbp), %r12
movq 0x8(%r12), %r13
movq %r15, %rdi
callq 0x3110
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x3370
leaq -0x8a8(%rbp), %r15
movq %r15, %rdi
callq 0x33b0
movq -0x158(%rbp), %rdx
cmpq -0x118(%rbp), %rdx
jne 0x4134
testq %rdx, %rdx
je 0x4163
movq -0x120(%rbp), %rsi
movq -0x160(%rbp), %r12
movq %r12, %rdi
callq 0x3240
testl %eax, %eax
jne 0x413b
jmp 0x4163
movq 0x6fe7(%rip), %rdi      # 0xaff0
leaq 0x41e7(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x6fcf(%rip), %rdi      # 0xaff0
leaq 0x41d7(%rip), %rsi      # 0x81ff
movl $0x15, %edx
callq 0x3290
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
movq 0x6fa9(%rip), %rdi      # 0xaff0
callq 0x3290
movq %rax, %rbx
leaq 0x428c(%rip), %rsi      # 0x82e2
movl $0x1, %edx
movq %rax, %rdi
callq 0x3290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x3190
jmp 0x5e84
movq 0x6f55(%rip), %rdi      # 0xaff0
leaq 0x4155(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x6f3d(%rip), %rdi      # 0xaff0
leaq 0x4145(%rip), %rsi      # 0x81ff
movl $0x15, %edx
callq 0x3290
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq 0x6f17(%rip), %rdi      # 0xaff0
callq 0x3290
movq %rax, %rbx
leaq 0x41fa(%rip), %rsi      # 0x82e2
movl $0x1, %edx
movq %rax, %rdi
callq 0x3290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq 0x6e95(%rip), %rax      # 0xafb8
movq (%rax), %r14
movq 0x18(%rax), %r15
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x5e44
movq -0x160(%rbp), %r12
leaq -0x8a8(%rbp), %rdi
movq %r12, %rsi
movl $0x10, %edx
callq 0x3060
leaq -0x838(%rbp), %rdi
callq 0x3090
testb %al, %al
je 0x5d69
movl $0x7da, %r12d           # imm = 0x7DA
cmpl $0x5, %r14d
jl 0x420d
movq 0x20(%rbx), %rsi
leaq -0x2a0(%rbp), %rdi
leaq -0x210(%rbp), %rdx
callq 0x30f0
movq -0x2a0(%rbp), %r12
callq 0x3050
movq %rax, %rbx
movl (%rax), %eax
movl %eax, -0x78(%rbp)
movl $0x0, (%rbx)
leaq -0xb8(%rbp), %r13
movq %r12, %rdi
movq %r13, %rsi
movl $0xa, %edx
callq 0x3320
cmpq %r12, (%r13)
je 0x5edb
movq %rax, %r14
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x5ee7
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x5ee7
testl %eax, %eax
jne 0x41f5
movl -0x78(%rbp), %eax
movl %eax, (%rbx)
leaq -0x290(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x420a
callq 0x3200
movl %r14d, %r12d
movq -0x158(%rbp), %rdx
cmpq -0x118(%rbp), %rdx
jne 0x4239
testq %rdx, %rdx
je 0x4240
movq -0x120(%rbp), %rsi
movq -0x160(%rbp), %rdi
callq 0x3240
testl %eax, %eax
je 0x4240
movq %r15, -0xe8(%rbp)
leaq 0x3fec(%rip), %rsi      # 0x8233
leaq -0x4a0(%rbp), %rbx
movl $0x10, %edx
movq %rbx, %rdi
callq 0x3290
movq -0x4a0(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x4a0(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq 0x3fb3(%rip), %rsi      # 0x8244
leaq -0x4a0(%rbp), %rdi
movl $0x1e, %edx
callq 0x3290
leaq -0x4a0(%rbp), %rdi
movq %r12, %rsi
callq 0x3180
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq -0x298(%rbp), %rax
xorl %r13d, %r13d
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x268(%rbp), %rax
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x238(%rbp), %rax
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x208(%rbp), %rax
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x130(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb $0x0, (%rax)
movb $0x1, %al
movl %eax, -0x70(%rbp)
movq 0x6c64(%rip), %rax      # 0xafc8
addq $0x10, %rax
movq %rax, -0x1d8(%rbp)
leaq -0x6a8(%rbp), %r12
leaq -0x68(%rbp), %r15
movl $0x0, -0xc0(%rbp)
xorl %ebx, %ebx
movq -0x6a8(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x688(%rbp,%rax)
jne 0x4d36
movq %r12, %rdi
callq 0x30e0
cmpl $-0x1, %eax
je 0x4d36
movq %r15, %rdi
movq %r12, %rsi
callq 0x3645
incl %ebx
movl %ebx, -0x78(%rbp)
movq -0x60(%rbp), %r14
testq %r14, %r14
je 0x4621
movq -0x68(%rbp), %rbx
movsbl (%rbx), %edi
callq 0x3070
testl %eax, %eax
je 0x440b
movl $0x1, %ecx
movq %rcx, %r15
cmpq %rcx, %r14
je 0x43fc
movsbl (%rbx,%r15), %edi
callq 0x3070
leaq 0x1(%r15), %rcx
testl %eax, %eax
jne 0x43e2
xorl %ebx, %ebx
cmpq %r14, %r15
leaq -0x68(%rbp), %r15
jae 0x4ada
movl -0xc0(%rbp), %eax
movl -0x70(%rbp), %ecx
andb %cl, %al
testb $0x1, %al
jne 0x5ebc
testb $0x1, %cl
je 0x4635
leaq -0xb8(%rbp), %rdi
movq %r15, %rsi
leaq 0x3e67(%rip), %rdx      # 0x829f
leaq 0x3e65(%rip), %rcx      # 0x82a4
callq 0x39cf
movq -0xb8(%rbp), %rax
movq -0xb0(%rbp), %rcx
subq %rax, %rcx
cmpq $0x41, %rcx
jb 0x4aee
movq (%rax), %r12
callq 0x3050
movq %rax, %rbx
movl (%rax), %r14d
movl $0x0, (%rax)
movq %r12, %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x3320
cmpq %r12, -0x48(%rbp)
movq %r13, -0x1e0(%rbp)
je 0x4c64
leaq -0x80000000(%rax), %rdx
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rdx
jb 0x4c75
movl (%rbx), %r15d
cmpl $0x22, %r15d
je 0x4c75
movq %rax, -0x1a8(%rbp)
testl %r15d, %r15d
jne 0x44ce
movl %r14d, (%rbx)
movl %r14d, %r15d
movq -0xb8(%rbp), %rax
movq 0x20(%rax), %r13
movl $0x0, (%rbx)
movq %r13, %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x3320
cmpq %r13, -0x48(%rbp)
je 0x4c86
movq %rax, %r12
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4c97
movl (%rbx), %r14d
cmpl $0x22, %r14d
je 0x4c97
testl %r14d, %r14d
leaq -0x48(%rbp), %rsi
jne 0x4532
movl %r15d, (%rbx)
movl %r15d, %r14d
movq -0xb8(%rbp), %rax
movq 0x40(%rax), %r15
movl $0x0, (%rbx)
movq %r15, %rdi
movl $0xa, %edx
callq 0x3320
cmpq %r15, -0x48(%rbp)
je 0x4ca8
movq %rax, %r13
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
leaq -0x68(%rbp), %r15
movq -0x1a8(%rbp), %rcx
jb 0x4cb9
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x4cb9
testl %eax, %eax
jne 0x4593
movl %r14d, (%rbx)
shlq $0x20, %r12
movl %ecx, %eax
orq %r12, %rax
movq %rax, -0x1d0(%rbp)
leaq -0x140(%rbp), %rdi
movq %r15, %rsi
callq 0x3150
movq -0x140(%rbp), %rax
movq -0x138(%rbp), %rcx
movsbl -0x1(%rax,%rcx), %edi
callq 0x3070
testl %eax, %eax
leaq -0x6a8(%rbp), %r12
leaq -0x140(%rbp), %rbx
je 0x4600
movq %rbx, %rdi
callq 0x32c0
movq -0x140(%rbp), %rax
movq -0x138(%rbp), %rcx
movsbl -0x1(%rax,%rcx), %edi
callq 0x3070
testl %eax, %eax
jne 0x45dc
cmpl $0x7da, -0x1a8(%rbp)    # imm = 0x7DA
setb %bl
movb $0x1, %al
movl %eax, -0xc0(%rbp)
movl $0x0, -0x70(%rbp)
jmp 0x4af0
movl $0x0, -0xc0(%rbp)
movb $0x1, %al
movl %eax, -0x70(%rbp)
jmp 0x4c40
testb $0x1, -0xc0(%rbp)
je 0x4c40
leaq -0x100(%rbp), %rdi
movq %r15, %rsi
leaq 0x3c4f(%rip), %rdx      # 0x82a2
leaq 0x3c4b(%rip), %rcx      # 0x82a5
callq 0x39cf
movq -0x100(%rbp), %rax
movq -0xf8(%rbp), %rcx
subq %rax, %rcx
cmpq $0x40, %rcx
jbe 0x4c34
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %rdi
callq 0x73e6
movq -0x48(%rbp), %rdi
movb (%rdi), %al
addb $-0x21, %al
cmpb $0x20, %al
jb 0x4c26
movq -0x40(%rbp), %rcx
cmpb $0x3a, -0x1(%rdi,%rcx)
jne 0x46ee
decq %rcx
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x48(%rbp), %r14
movq %r14, %rsi
xorl %edx, %edx
callq 0x3250
movq %r14, %rdi
movq %rbx, %rsi
callq 0x32d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x46ee
callq 0x3200
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x48(%rbp), %r14
movq %r14, %rsi
callq 0x3769
movq %r14, %rdi
movq %rbx, %rsi
callq 0x32d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x4727
callq 0x3200
xorpd %xmm0, %xmm0
movapd %xmm0, -0x180(%rbp)
movq $0x0, -0x170(%rbp)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rax
movq %rax, %rcx
subq %rsi, %rcx
movl $0x1, %ebx
cmpq $0x21, %rcx
jb 0x4810
movl $0x20, %r14d
movq (%rsi,%r14), %rcx
movsbl (%rcx), %edx
leal -0x30(%rdx), %edi
cmpl $0xa, %edi
jae 0x47b1
addq %r14, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x3be7
testb %al, %al
je 0x4810
movq -0x178(%rbp), %rsi
cmpq -0x170(%rbp), %rsi
je 0x47d5
movq -0xb8(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, -0x178(%rbp)
jmp 0x47e8
movzbl %dl, %edx
cmpl $0x2f, %edx
je 0x47c5
cmpl $0x23, %edx
je 0x4810
cmpl $0x5b, %edx
jne 0x47f6
jmp 0x4810
cmpq $0x2, 0x8(%rsi,%r14)
jb 0x47f6
cmpb $0x2f, 0x1(%rcx)
jne 0x47f6
jmp 0x4810
leaq -0x180(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0x7730
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rax
incq %rbx
movq %rax, %rcx
subq %rsi, %rcx
sarq $0x5, %rcx
addq $0x20, %r14
cmpq %rcx, %rbx
jb 0x4767
movq -0x180(%rbp), %rcx
movq -0x178(%rbp), %rax
movq %rax, %rdx
subq %rcx, %rdx
subq %rcx, %rax
je 0x4c11
sarq $0x3, %rdx
xorl %r15d, %r15d
cmpq $0x2, %rdx
jb 0x4882
xorl %r15d, %r15d
movl $0x1, %esi
movq -0x8(%rcx,%rsi,8), %r8
movq (%rcx,%rsi,8), %r9
movq %r8, %rdi
shrq $0x20, %rdi
movq %r9, %r10
shrq $0x20, %r10
cmpl %r9d, %r8d
ja 0x4865
jb 0x4869
cmpl %r10d, %edi
jbe 0x4869
addl $0x18, %r9d
subl %r8d, %r9d
imull $0x3c, %r9d, %r8d
subl %edi, %r15d
addl %r10d, %r15d
addl %r8d, %r15d
addq $0x2, %rsi
cmpq %rdx, %rsi
jb 0x4842
testb $0x8, %al
jne 0x4b01
leaq -0x1b8(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq $0x0, -0x1c0(%rbp)
movb $0x0, -0x1b8(%rbp)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %rbx
je 0x494c
shlq $0x5, %rbx
movq (%rsi,%rbx), %rax
cmpb $0x5b, (%rax)
jne 0x494c
addq %rbx, %rsi
movq 0x8(%rsi), %rcx
cmpb $0x5d, -0x1(%rax,%rcx)
jne 0x494c
addq $-0x2, %rcx
movl $0x1, %edx
leaq -0x1a0(%rbp), %r14
movq %r14, %rdi
callq 0x3250
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3769
leaq -0x1c8(%rbp), %rdi
movq %rbx, %rsi
callq 0x32d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x4934
callq 0x3200
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x494c
callq 0x3200
leaq -0x1a0(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
leaq 0x3983(%rip), %rdx      # 0x82e4
leaq 0x393c(%rip), %rcx      # 0x82a4
callq 0x39cf
movq -0x1a0(%rbp), %rax
cmpq -0x198(%rbp), %rax
jne 0x49cf
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq 0x394c(%rip), %rsi      # 0x82e8
leaq 0x394f(%rip), %rdx      # 0x82f2
callq 0x7484
leaq -0x1a0(%rbp), %rdi
movq %rbx, %rsi
callq 0x786c
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x49cf
callq 0x3200
movq $0x0, -0x1c0(%rbp)
movq -0x1c8(%rbp), %rax
movb $0x0, (%rax)
movq -0x1a0(%rbp), %rbx
movq -0x198(%rbp), %r12
cmpq %r12, %rbx
je 0x4a65
movq %r12, %rax
subq %rbx, %rax
sarq $0x5, %rax
movq %rax, %xmm0
punpckldq 0x3612(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x361a(%rip), %xmm0     # 0x8030
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x35e6(%rip), %xmm0     # 0x8010
movl %r15d, %eax
cvtsi2sd %rax, %xmm2
divsd %xmm1, %xmm0
mulsd %xmm0, %xmm2
cvttsd2si %xmm2, %r14
leaq -0x2a0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
leaq -0x1d0(%rbp), %rdx
movq %rbx, %rcx
movl %r14d, %r8d
callq 0x640e
addq $0x20, %rbx
cmpq %r12, %rbx
jne 0x4a3f
leaq -0xb8(%rbp), %r14
movq %r14, %rdi
leaq -0x48(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x7280
leaq -0x210(%rbp), %rdi
movq %r14, %rsi
callq 0x7a72
leaq -0x6a8(%rbp), %r12
movq %rax, %rbx
movq %r14, %rdi
callq 0x6456
leaq -0x208(%rbp), %rax
cmpq %rax, %rbx
je 0x4bbc
movq %r14, %rdi
leaq -0x48(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x7280
leaq -0x210(%rbp), %rdi
movq %r14, %rsi
callq 0x648c
addl %r15d, (%rax)
jmp 0x4be1
movl $0x0, -0xc0(%rbp)
movb $0x1, %al
movl %eax, -0x70(%rbp)
jmp 0x4c42
xorl %ebx, %ebx
leaq -0xb8(%rbp), %rdi
callq 0x63b6
jmp 0x4c42
movl $0x2b, %edx
leaq -0x4a0(%rbp), %rdi
leaq 0x3794(%rip), %rsi      # 0x82a8
callq 0x3290
leaq -0x68(%rbp), %r15
leaq -0x4a0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x35b9
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x3792(%rip), %rsi      # 0x82d4
callq 0x3290
movl %r13d, %esi
movq %rbx, %rdi
callq 0x3180
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x3772(%rip), %rsi      # 0x82d6
callq 0x3290
movl -0x78(%rbp), %esi
movq %rbx, %rdi
callq 0x3180
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0x375a(%rip), %rsi      # 0x82e0
callq 0x3290
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq %rbx, %rdi
callq 0x3290
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x3735(%rip), %rsi      # 0x82e2
callq 0x3290
movq %rbx, %rdi
callq 0x3120
jmp 0x4c11
movq %r14, %rdi
leaq -0x48(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x7280
leaq -0x210(%rbp), %rdi
movq %r14, %rsi
callq 0x648c
movl %r15d, (%rax)
movq %r14, %rdi
callq 0x6456
leaq -0x1a0(%rbp), %rdi
callq 0x63b6
movq -0x1c8(%rbp), %rdi
leaq -0x1b8(%rbp), %rax
cmpq %rax, %rdi
leaq -0x68(%rbp), %r15
je 0x4c11
callq 0x3200
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0x4c22
callq 0x3200
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4c34
callq 0x3200
leaq -0x100(%rbp), %rdi
callq 0x63b6
xorl %ebx, %ebx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4c54
callq 0x3200
testb %bl, %bl
movl -0x78(%rbp), %ebx
je 0x4386
jmp 0x4d36
leaq 0x36fc(%rip), %rdi      # 0x8367
callq 0x3160
jmp 0x5ef3
leaq 0x36eb(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5ef3
leaq 0x36da(%rip), %rdi      # 0x8367
callq 0x3160
jmp 0x5ef3
leaq 0x36c9(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5ef3
leaq 0x36b8(%rip), %rdi      # 0x8367
callq 0x3160
jmp 0x5ef3
leaq 0x36a7(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5ef3
jmp 0x4cdc
movq %rdx, %r12
movq %rax, %r13
cmpl $0x0, (%rbx)
jne 0x4cea
movl %r15d, (%rbx)
jmp 0x4cea
movq %rdx, %r12
movq %rax, %r13
cmpl $0x0, (%rbx)
jne 0x4cea
movl %r14d, (%rbx)
cmpl $0x2, %r12d
jne 0x5feb
movq %r13, %rdi
callq 0x32e0
movq -0x1d8(%rbp), %rax
movq %rax, -0x48(%rbp)
movq %r13, %rdi
callq 0x3100
leaq -0x48(%rbp), %rdi
callq 0x3410
callq 0x33a0
xorl %ebx, %ebx
movq -0x1e0(%rbp), %r13
leaq -0x6a8(%rbp), %r12
leaq -0x68(%rbp), %r15
jmp 0x4af0
leaq 0x35b6(%rip), %rsi      # 0x82f3
leaq -0x4a0(%rbp), %rdi
movl $0x11, %edx
callq 0x3290
movl %ebx, %esi
leaq -0x4a0(%rbp), %r14
movq %r14, %rdi
callq 0x3180
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x288(%rbp), %rcx
leaq -0x298(%rbp), %rax
movq %rcx, -0x70(%rbp)
cmpq %rax, %rcx
je 0x54ad
leaq -0x68(%rbp), %r13
movq -0x4a0(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x70(%rbp), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x351f(%rip), %rsi      # 0x8318
callq 0x3290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x70(%rbp), %rax
movq 0x58(%rax), %rbx
addq $0x48, %rax
movq %rax, -0xc0(%rbp)
cmpq %rax, %rbx
je 0x5185
movl $0x3, %edx
movq %r14, %rdi
leaq 0x34b8(%rip), %rsi      # 0x8308
callq 0x3290
leaq 0x20(%rbx), %rsi
movq %r14, %rdi
callq 0x35b9
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x34a5(%rip), %rsi      # 0x8318
callq 0x3290
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq 0x40(%rbx), %r12
movq %rbx, -0x78(%rbp)
addq $0x30, %rbx
cmpq %rbx, %r12
je 0x501c
movl $0x6, %edx
movq %r14, %rdi
leaq 0x3442(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x73e6
movq -0x60(%rbp), %rsi
movl $0x1, %ecx
movq %r13, %rdi
xorl %edx, %edx
movl $0x3a, %r8d
callq 0x3400
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x33d0(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%r12), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x3398(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%r12), %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x337a(%rip), %rsi      # 0x8312
callq 0x3290
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4fd6
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x4fee
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5000
callq 0x3200
movq %r12, %rdi
callq 0x32a0
movq %rax, %r12
cmpq %rbx, %rax
jne 0x4eb4
movq -0x78(%rbp), %rax
movq 0x40(%rax), %r12
xorl %r15d, %r15d
cmpq %rbx, %r12
je 0x5039
addl 0x40(%r12), %r15d
movq %r12, %rdi
callq 0x32a0
movq %rax, %r12
cmpq %rbx, %rax
jne 0x5024
movl $0x6, %edx
movq %r14, %rdi
leaq 0x32bd(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r13, %rdi
leaq 0x32b8(%rip), %rsi      # 0x8317
leaq 0x32b3(%rip), %rdx      # 0x8319
callq 0x7484
movq -0x78(%rbp), %rbx
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x325f(%rip), %rsi      # 0x830a
callq 0x3290
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
movl %r15d, %esi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r12, %rdi
callq 0x3290
movq %rax, %r12
movl $0x5, %edx
movq %rax, %rdi
leaq 0x3229(%rip), %rsi      # 0x830c
callq 0x3290
movl %r15d, %esi
movq %r12, %rdi
callq 0x3180
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x320d(%rip), %rsi      # 0x8312
callq 0x3290
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x5143
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x515b
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x516d
callq 0x3200
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rbx
cmpq -0xc0(%rbp), %rax
jne 0x4e41
movl $0x10, %edx
movq %r14, %rdi
leaq 0x3186(%rip), %rsi      # 0x831a
callq 0x3290
movq -0x4a0(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x70(%rbp), %rax
movq 0x88(%rax), %rbx
leaq 0x78(%rax), %r12
cmpq %r12, %rbx
je 0x5341
movl $0x6, %edx
movq %r14, %rdi
leaq 0x311a(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x73e6
movq -0x60(%rbp), %rsi
movl $0x1, %ecx
movq %r13, %rdi
xorl %edx, %edx
movl $0x3a, %r8d
callq 0x3400
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x30aa(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%rbx), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x3074(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%rbx), %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x3058(%rip), %rsi      # 0x8312
callq 0x3290
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x52f8
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5310
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5322
callq 0x3200
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rbx
cmpq %r12, %rax
jne 0x51dc
movq -0x70(%rbp), %rax
movq 0x88(%rax), %rbx
xorl %r15d, %r15d
cmpq %r12, %rbx
je 0x535d
addl 0x40(%rbx), %r15d
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rbx
cmpq %r12, %rax
jne 0x5349
movl $0x6, %edx
movq %r14, %rdi
leaq 0x2f99(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r13, %rdi
leaq 0x2f94(%rip), %rsi      # 0x8317
leaq 0x2f8f(%rip), %rdx      # 0x8319
callq 0x7484
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2f3f(%rip), %rsi      # 0x830a
callq 0x3290
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
movl %r15d, %esi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %rbx, %rdi
callq 0x3290
movq %rax, %rbx
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2f09(%rip), %rsi      # 0x830c
callq 0x3290
movl %r15d, %esi
movq %rbx, %rdi
callq 0x3180
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2eed(%rip), %rsi      # 0x8312
callq 0x3290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x5463
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x547b
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x548d
callq 0x3200
movq -0x70(%rbp), %rdi
callq 0x32a0
movq %rax, %rcx
leaq -0x298(%rbp), %rax
movq %rcx, -0x70(%rbp)
cmpq %rax, %rcx
jne 0x4da8
movq -0x4a0(%rbp), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x4a0(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq 0x2e48(%rip), %rsi      # 0x832b
leaq -0x4a0(%rbp), %rdi
movl $0x17, %edx
callq 0x3290
leaq 0x2e1d(%rip), %rsi      # 0x8318
leaq -0x4a0(%rbp), %rbx
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3290
movq -0x4a0(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x4a0(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x258(%rbp), %rbx
leaq -0x268(%rbp), %rax
cmpq %rax, %rbx
je 0x58a5
leaq -0x4a0(%rbp), %r15
leaq -0x68(%rbp), %r14
movl $0x3, %edx
movq %r15, %rdi
leaq 0x2d99(%rip), %rsi      # 0x8308
callq 0x3290
leaq 0x20(%rbx), %rsi
movq %r15, %rdi
callq 0x35b9
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2d86(%rip), %rsi      # 0x8318
callq 0x3290
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq 0x40(%rbx), %r13
movq %rbx, -0x78(%rbp)
addq $0x30, %rbx
cmpq %rbx, %r13
je 0x5739
movl $0x6, %edx
movq %r15, %rdi
leaq 0x2d22(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq 0x20(%r13), %rsi
movq 0x28(%r13), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x73e6
movq -0x60(%rbp), %rsi
movl $0x1, %ecx
movq %r14, %rdi
xorl %edx, %edx
movl $0x3a, %r8d
callq 0x3400
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r14, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2cb2(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%r13), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r12, %rdi
callq 0x3290
movq %rax, %r12
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2c7b(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%r13), %esi
movq %r12, %rdi
callq 0x3180
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2c5e(%rip), %rsi      # 0x8312
callq 0x3290
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x56f3
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x570b
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x571d
callq 0x3200
movq %r13, %rdi
callq 0x31a0
movq %rax, %r13
cmpq %rbx, %rax
jne 0x55d4
movq -0x78(%rbp), %rax
movq 0x40(%rax), %r13
xorl %r12d, %r12d
cmpq %rbx, %r13
je 0x5755
addl 0x40(%r13), %r12d
movq %r13, %rdi
callq 0x32a0
movq %rax, %r13
cmpq %rbx, %rax
jne 0x5741
movl $0x6, %edx
movq %r15, %rdi
leaq 0x2ba1(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r14, %rdi
leaq 0x2b9c(%rip), %rsi      # 0x8317
leaq 0x2b97(%rip), %rdx      # 0x8319
callq 0x7484
movq -0x78(%rbp), %rbx
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r14, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b43(%rip), %rsi      # 0x830a
callq 0x3290
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
movl %r12d, %esi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r13, %rdi
callq 0x3290
movq %rax, %r13
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2b0d(%rip), %rsi      # 0x830c
callq 0x3290
movl %r12d, %esi
movq %r13, %rdi
callq 0x3180
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2af1(%rip), %rsi      # 0x8312
callq 0x3290
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r12, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x5860
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5878
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x588a
callq 0x3200
movq %rbx, %rdi
callq 0x31a0
movq %rax, %rbx
leaq -0x268(%rbp), %rax
cmpq %rax, %rbx
jne 0x5560
leaq 0x2a6e(%rip), %rsi      # 0x831a
leaq -0x4a0(%rbp), %rbx
movl $0x10, %edx
movq %rbx, %rdi
callq 0x3290
movq -0x4a0(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x4a0(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x228(%rbp), %rbx
leaq -0x238(%rbp), %rax
cmpq %rax, %rbx
je 0x5a7c
leaq -0x4a0(%rbp), %r15
leaq -0x68(%rbp), %r12
leaq 0x29fa(%rip), %r13      # 0x8312
movl $0x6, %edx
movq %r15, %rdi
leaq 0x29de(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x73e6
movq -0x60(%rbp), %rsi
movl $0x1, %ecx
movq %r12, %rdi
xorl %edx, %edx
movl $0x3a, %r8d
callq 0x3400
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r12, %rsi
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x296e(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%rbx), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r14
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2938(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%rbx), %esi
movq %r14, %rdi
callq 0x3180
movq %rax, %r14
movl $0x4, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x3290
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x5a30
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5a48
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5a5a
callq 0x3200
movq %rbx, %rdi
callq 0x31a0
movq %rax, %rbx
leaq -0x238(%rbp), %rax
cmpq %rax, %rbx
jne 0x5918
movq -0x228(%rbp), %rbx
xorl %r14d, %r14d
cmpq %rax, %rbx
je 0x5a9f
leaq -0x238(%rbp), %r15
addl 0x40(%rbx), %r14d
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rbx
cmpq %r15, %rax
jne 0x5a8b
leaq 0x285f(%rip), %rsi      # 0x8305
leaq -0x4a0(%rbp), %rdi
movl $0x6, %edx
callq 0x3290
leaq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
movq %rax, (%rdi)
leaq 0x284e(%rip), %rsi      # 0x8317
leaq 0x2849(%rip), %rdx      # 0x8319
callq 0x7484
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movl $0xc, %edx
callq 0x37c7
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x4a0(%rbp), %rbx
movq %rbx, %rdi
callq 0x3290
movq %rax, %r15
leaq 0x27f9(%rip), %rsi      # 0x830a
movl $0x1, %edx
movq %rax, %rdi
callq 0x3290
leaq -0x48(%rbp), %rdi
movl $0xc, %edx
movl %r14d, %esi
callq 0x38a5
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
leaq 0x27c3(%rip), %rsi      # 0x830c
movl $0x5, %edx
movq %rax, %rdi
callq 0x3290
movl %r14d, %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r14
leaq 0x27a7(%rip), %rsi      # 0x8312
movl $0x4, %edx
movq %rax, %rdi
callq 0x3290
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x5bb1
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5bc9
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5bdb
callq 0x3200
movq -0x4a0(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x4a0(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq 0x2732(%rip), %rsi      # 0x8343
movl $0x11, %edx
movq -0xe8(%rbp), %rdi
callq 0x3290
movq -0x1f8(%rbp), %rbx
leaq -0x208(%rbp), %rax
cmpq %rax, %rbx
je 0x5d14
leaq 0x2663(%rip), %r14      # 0x82a3
movl $0xfffffefb, %r12d      # imm = 0xFFFFFEFB
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq -0xe8(%rbp), %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x3290
movq 0x40(%rbx), %rsi
movq 0x48(%rbx), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x3290
movq (%r15), %rax
movq -0x18(%rax), %rcx
movl 0x18(%r15,%rcx), %edx
andl %r12d, %edx
orl $0x4, %edx
movl %edx, 0x18(%r15,%rcx)
movq -0x18(%rax), %rax
movq $0x9, 0x8(%r15,%rax)
movl 0x60(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
divsd 0x2341(%rip), %xmm0     # 0x8008
movq %r15, %rdi
callq 0x3390
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq %rbx, %rdi
callq 0x31a0
movq %rax, %rbx
leaq -0x208(%rbp), %rax
cmpq %rax, %rbx
jne 0x5c46
leaq -0x270(%rbp), %rbx
leaq -0x240(%rbp), %r14
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x5d3a
callq 0x3200
leaq -0x210(%rbp), %rdi
callq 0x72e8
movq %r14, %rdi
callq 0x69e8
movq %rbx, %rdi
callq 0x6a7c
leaq -0x2a0(%rbp), %rdi
callq 0x7382
xorl %ebx, %ebx
jmp 0x5df6
movq 0x5280(%rip), %rdi      # 0xaff0
leaq 0x2480(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x5268(%rip), %rdi      # 0xaff0
leaq 0x2470(%rip), %rsi      # 0x81ff
movl $0x15, %edx
callq 0x3290
movq -0x160(%rbp), %rsi
movq -0x158(%rbp), %rdx
movq 0x5242(%rip), %rdi      # 0xaff0
callq 0x3290
movq %rax, %rbx
leaq 0x2525(%rip), %rsi      # 0x82e2
movl $0x1, %edx
movq %rax, %rdi
callq 0x3290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x3190
movq 0x51bb(%rip), %rax      # 0xafb8
movq (%rax), %r14
movq 0x18(%rax), %r15
leaq -0x8a0(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0x8a8(%rbp,%rax)
callq 0x31e0
leaq -0x7b0(%rbp), %rdi
callq 0x30c0
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x5e44
callq 0x3200
leaq -0x498(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0x4a0(%rbp,%rax)
callq 0x31e0
leaq -0x3a8(%rbp), %rdi
callq 0x30c0
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x5e84
callq 0x3200
leaq -0x6a8(%rbp), %rdi
callq 0x30a0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x5ea8
callq 0x3200
movl %ebx, %eax
addq $0x888, %rsp            # imm = 0x888
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x23a0(%rip), %rdi      # 0x8263
leaq 0x21aa(%rip), %rsi      # 0x8074
leaq 0x23b7(%rip), %rcx      # 0x8288
movl $0x13c, %edx            # imm = 0x13C
callq 0x3170
leaq 0x2485(%rip), %rdi      # 0x8367
callq 0x3160
leaq 0x2479(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5fe5
movq %rdx, %r12
movq %rax, %r13
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x6025
callq 0x3200
jmp 0x6025
jmp 0x5f77
jmp 0x5f5b
jmp 0x6013
movq %rdx, %r12
movq %rax, %r13
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x6019
callq 0x3200
jmp 0x6019
jmp 0x6013
jmp 0x5f5b
jmp 0x6013
movq %rdx, %r12
movq %rax, %r13
leaq -0xb8(%rbp), %rdi
callq 0x6456
jmp 0x6019
jmp 0x6013
movq %rdx, %r12
movq %rax, %r13
jmp 0x6025
jmp 0x5f84
movq %rdx, %r12
movq %rax, %r13
jmp 0x604e
jmp 0x6098
movq %rdx, %r12
movq %rax, %r13
jmp 0x6060
jmp 0x6001
jmp 0x5ff9
jmp 0x615c
jmp 0x614a
jmp 0x6154
jmp 0x6154
movq %rdx, %r12
movq %rax, %r13
cmpl $0x0, (%rbx)
jne 0x5fc7
movl -0x78(%rbp), %eax
movl %eax, (%rbx)
leaq -0x290(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x61f1
callq 0x3200
jmp 0x61f1
movq %rdx, %r12
movq %rax, %r13
leaq -0xb8(%rbp), %rdi
jmp 0x6067
jmp 0x614a
movq %rdx, %r12
movq %rax, %r13
jmp 0x603d
movq %rdx, %r12
movq %rax, %r13
jmp 0x6227
jmp 0x60b8
jmp 0x607b
movq %rdx, %r12
movq %rax, %r13
leaq -0x1a0(%rbp), %rdi
callq 0x63b6
movq -0x1c8(%rbp), %rdi
leaq -0x1b8(%rbp), %rax
cmpq %rax, %rdi
je 0x603d
callq 0x3200
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0x604e
callq 0x3200
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6060
callq 0x3200
leaq -0x100(%rbp), %rdi
callq 0x63b6
jmp 0x6194
jmp 0x615c
jmp 0x614a
movq %rdx, %r12
movq %rax, %r13
leaq -0xd0(%rbp), %rbx
jmp 0x627c
jmp 0x60f8
jmp 0x6098
jmp 0x60ca
jmp 0x6164
movq %rdx, %r12
movq %rax, %r13
jmp 0x61f1
movq %rdx, %r12
movq %rax, %r13
jmp 0x62b1
jmp 0x6154
jmp 0x6154
movq %rdx, %r12
movq %rax, %r13
leaq -0xd0(%rbp), %rbx
jmp 0x6246
movq %rdx, %r12
movq %rax, %r13
leaq -0xd0(%rbp), %rbx
jmp 0x62a0
jmp 0x6154
jmp 0x6154
jmp 0x614a
jmp 0x615c
jmp 0x6154
jmp 0x6154
jmp 0x614a
jmp 0x615c
jmp 0x6154
jmp 0x6154
jmp 0x614a
jmp 0x614a
jmp 0x615c
jmp 0x6154
movq %rdx, %r12
movq %rax, %r13
leaq -0xd0(%rbp), %rbx
jmp 0x6294
jmp 0x615c
jmp 0x615c
jmp 0x615c
jmp 0x6154
jmp 0x6164
jmp 0x6164
jmp 0x6164
jmp 0x6154
jmp 0x6154
jmp 0x6154
jmp 0x6154
jmp 0x614a
jmp 0x615c
jmp 0x6154
jmp 0x6154
jmp 0x614a
jmp 0x614a
jmp 0x615c
jmp 0x6154
jmp 0x614a
jmp 0x614a
jmp 0x615c
jmp 0x6154
jmp 0x615c
jmp 0x615c
jmp 0x615c
jmp 0x6154
jmp 0x6164
jmp 0x6164
jmp 0x6164
jmp 0x6154
jmp 0x614a
movq %rdx, %r12
movq %rax, %r13
jmp 0x6194
jmp 0x615c
movq %rdx, %r12
movq %rax, %r13
jmp 0x61a6
movq %rdx, %r12
movq %rax, %r13
jmp 0x617c
movq %rdx, %r12
movq %rax, %r13
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x617c
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x6194
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x61a6
callq 0x3200
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x61be
callq 0x3200
leaq -0x210(%rbp), %rdi
callq 0x72e8
leaq -0x270(%rbp), %rbx
leaq -0x240(%rbp), %rdi
callq 0x69e8
movq %rbx, %rdi
callq 0x6a7c
leaq -0x2a0(%rbp), %rdi
callq 0x7382
movq 0x4dc0(%rip), %rax      # 0xafb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x8a0(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x8a8(%rbp,%rcx)
callq 0x31e0
leaq -0x7b0(%rbp), %rdi
callq 0x30c0
leaq -0xd0(%rbp), %rbx
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0x6246
callq 0x3200
movq 0x4d6b(%rip), %rax      # 0xafb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x498(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x4a0(%rbp,%rcx)
callq 0x31e0
leaq -0x3a8(%rbp), %rdi
callq 0x30c0
leaq -0x110(%rbp), %rax
movq -0x120(%rbp), %rdi
cmpq %rax, %rdi
je 0x6294
callq 0x3200
leaq -0x6a8(%rbp), %rdi
callq 0x30a0
movq -0xe0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x62b1
callq 0x3200
movq %r13, %rdi
callq 0x3100
cmpl $0x2, %r12d
jne 0x62fc
movq %rax, %rbx
movq 0x4d27(%rip), %rdi      # 0xaff0
leaq 0x1f27(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x4d06(%rip), %rdi      # 0xaff0
movq %rax, %rsi
callq 0x3220
movq %rax, %rdi
callq 0x3120
jmp 0x6338
movq 0x4ced(%rip), %rdi      # 0xaff0
leaq 0x1eed(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x4cd5(%rip), %rdi      # 0xaff0
leaq 0x2033(%rip), %rsi      # 0x8355
movl $0x11, %edx
callq 0x3290
movq 0x4cbd(%rip), %rdi      # 0xaff0
callq 0x3120
callq 0x33a0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x5ea8
movq %rax, %rbx
callq 0x33a0
jmp 0x6359
movq %rax, %rbx
callq 0x33a0
movq %rbx, %rdi
callq 0x33c0
movq %rax, %rdi
callq 0x6529
nop