// File: /workspace/github_cpp_makefile_star2_O1/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 $0x878, %rsp            # imm = 0x878
movq %rsi, %rbx
movl %edi, %r14d
leaq -0xe0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x430f(%rip), %rsi      # 0x80e0
leaq 0x4311(%rip), %rdx      # 0x80e9
leaq -0xf0(%rbp), %rdi
callq 0x749e
cmpl $0x2, %r14d
jl 0x3e72
movq 0x8(%rbx), %r15
movzbl (%r15), %eax
orl $0x2, %eax
cmpl $0x2f, %eax
jne 0x3e4b
movq 0x71cb(%rip), %rbx      # 0xafd0
leaq 0x42de(%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 0x7199(%rip), %rdi      # 0xafd0
callq 0x3030
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x3190
jmp 0x5e51
leaq -0xf0(%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 -0xf0(%rbp), %rsi
leaq -0x6a0(%rbp), %rdi
movl $0x8, %edx
callq 0x33e0
leaq -0x628(%rbp), %rdi
callq 0x3090
testb %al, %al
je 0x4bd7
leaq -0x6a0(%rbp), %rdi
callq 0x3d5b
leaq -0x138(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x4359(%rip), %rsi      # 0x8215
leaq 0x4360(%rip), %rdx      # 0x8223
leaq -0x148(%rbp), %rdi
callq 0x749e
cmpl $0x3, %r14d
jl 0x3f00
movq 0x10(%rbx), %r15
leaq -0x148(%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 -0x148(%rbp), %rsi
leaq -0x498(%rbp), %r13
movq %r13, %rdi
movl $0x10, %edx
callq 0x3270
leaq -0x428(%rbp), %rdi
callq 0x3090
testb %al, %al
je 0x4c69
leaq -0x118(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x42e3(%rip), %rsi      # 0x8224
leaq 0x42ea(%rip), %rdx      # 0x8232
leaq -0x128(%rbp), %rdi
callq 0x749e
cmpl $0x4, %r14d
jl 0x3f8b
movq 0x18(%rbx), %r12
leaq -0x128(%rbp), %r13
movq 0x8(%r13), %r15
movq %r12, %rdi
callq 0x3110
movq %r13, %rdi
xorl %esi, %esi
movq %r15, %rdx
leaq -0x498(%rbp), %r13
movq %r12, %rcx
movq %rax, %r8
callq 0x3370
leaq -0x8a0(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x33b0
movq -0x120(%rbp), %rdx
cmpq -0x140(%rbp), %rdx
jne 0x3fca
testq %rdx, %rdx
je 0x3ff6
movq -0x148(%rbp), %rsi
movq -0x128(%rbp), %rdi
callq 0x3240
testl %eax, %eax
je 0x3ff6
movq -0x128(%rbp), %rsi
leaq -0x8a0(%rbp), %rdi
movl $0x10, %edx
callq 0x3060
leaq -0x830(%rbp), %rdi
callq 0x3090
testb %al, %al
je 0x5d1c
movl $0x7da, %r12d           # imm = 0x7DA
cmpl $0x5, %r14d
jl 0x40a0
movq 0x20(%rbx), %rsi
leaq -0x298(%rbp), %rdi
leaq -0x208(%rbp), %rdx
callq 0x30f0
movq -0x298(%rbp), %r15
callq 0x3050
movq %rax, %rbx
movl (%rax), %eax
movl %eax, -0x70(%rbp)
movl $0x0, (%rbx)
leaq -0xb8(%rbp), %r12
movq %r15, %rdi
movq %r12, %rsi
movl $0xa, %edx
callq 0x3320
cmpq %r15, (%r12)
je 0x5e9c
movq %rax, %r14
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x5ea8
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x5ea8
testl %eax, %eax
jne 0x4088
movl -0x70(%rbp), %eax
movl %eax, (%rbx)
leaq -0x288(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x409d
callq 0x3200
movl %r14d, %r12d
movq -0x120(%rbp), %rdx
cmpq -0x140(%rbp), %rdx
jne 0x40ea
movq %r13, -0xd0(%rbp)
testq %rdx, %rdx
je 0x40ea
movq -0x148(%rbp), %rsi
movq -0x128(%rbp), %rdi
callq 0x3240
testl %eax, %eax
leaq -0x498(%rbp), %rax
leaq -0x8a0(%rbp), %rcx
cmoveq %rax, %rcx
movq %rcx, -0xd0(%rbp)
leaq 0x4142(%rip), %rsi      # 0x8233
leaq -0x498(%rbp), %rbx
movl $0x10, %edx
movq %rbx, %rdi
callq 0x3290
movq -0x498(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x498(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq 0x4109(%rip), %rsi      # 0x8244
leaq -0x498(%rbp), %rdi
movl $0x1e, %edx
callq 0x3290
leaq -0x498(%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 -0x290(%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 -0x260(%rbp), %rax
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x230(%rbp), %rax
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x200(%rbp), %rax
movl %r13d, (%rax)
movq %r13, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %r13, 0x20(%rax)
leaq -0x158(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r13, -0x8(%rax)
movb $0x0, (%rax)
movb $0x1, %al
movl %eax, -0x78(%rbp)
movq 0x6dba(%rip), %rax      # 0xafc8
addq $0x10, %rax
movq %rax, -0x1d0(%rbp)
leaq -0x6a0(%rbp), %r12
leaq -0x68(%rbp), %r15
movl $0x0, -0xc0(%rbp)
xorl %ebx, %ebx
movq -0x6a0(%rbp), %rax
movq -0x18(%rax), %rax
testb $0x2, -0x680(%rbp,%rax)
jne 0x4cfb
movq %r12, %rdi
callq 0x30e0
cmpl $-0x1, %eax
je 0x4cfb
movq %r15, %rdi
movq %r12, %rsi
callq 0x3645
incl %ebx
movl %ebx, -0x70(%rbp)
movq -0x60(%rbp), %rbx
testq %rbx, %rbx
sete %al
je 0x42b0
movq -0x68(%rbp), %r14
movsbl (%r14), %edi
callq 0x3070
testl %eax, %eax
je 0x42c8
movl $0x1, %ecx
movq %rcx, %r15
cmpq %rcx, %rbx
je 0x42a6
movsbl (%r14,%r15), %edi
callq 0x3070
leaq 0x1(%r15), %rcx
testl %eax, %eax
jne 0x428c
cmpq %rbx, %r15
setae %al
leaq -0x68(%rbp), %r15
testb %al, %al
je 0x42c8
movb $0x1, %al
movl %eax, -0x78(%rbp)
movl $0x0, -0xc0(%rbp)
jmp 0x4adc
movl -0xc0(%rbp), %eax
movl -0x78(%rbp), %ecx
andb %cl, %al
testb $0x1, %al
jne 0x5e7d
testb $0x1, %cl
je 0x44d4
leaq -0xb8(%rbp), %rdi
movq %r15, %rsi
leaq 0x3faa(%rip), %rdx      # 0x829f
leaq 0x3fa8(%rip), %rcx      # 0x82a4
callq 0x39b6
movq -0xb8(%rbp), %rax
movq -0xb0(%rbp), %rcx
subq %rax, %rcx
cmpq $0x41, %rcx
jb 0x498a
movq (%rax), %r12
callq 0x3050
movq %rax, %rbx
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r12, %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x3320
cmpq %r12, -0x48(%rbp)
movq %r13, -0x1d8(%rbp)
je 0x4b00
movq %rax, %r14
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4b11
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x4b11
testl %eax, %eax
jne 0x4380
movl %r15d, (%rbx)
movq -0xb8(%rbp), %rax
movq 0x20(%rax), %r13
movl (%rbx), %r15d
movl $0x0, (%rbx)
movq %r13, %rdi
leaq -0x48(%rbp), %rsi
movl $0xa, %edx
callq 0x3320
cmpq %r13, -0x48(%rbp)
je 0x4b22
movq %rax, %r12
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4b33
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x4b33
testl %eax, %eax
leaq -0x48(%rbp), %rsi
jne 0x43e1
movl %r15d, (%rbx)
movq -0xb8(%rbp), %rax
movq 0x40(%rax), %r15
movl (%rbx), %eax
movl %eax, -0xc4(%rbp)
movl $0x0, (%rbx)
movq %r15, %rdi
movl $0xa, %edx
callq 0x3320
cmpq %r15, -0x48(%rbp)
je 0x4b44
movq %rax, %r13
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
leaq -0x68(%rbp), %r15
jb 0x4b55
movl (%rbx), %eax
cmpl $0x22, %eax
je 0x4b55
testl %eax, %eax
jne 0x4448
movl -0xc4(%rbp), %eax
movl %eax, (%rbx)
shlq $0x20, %r12
movl %r14d, %eax
orq %r12, %rax
movq %rax, -0x1c8(%rbp)
leaq -0x168(%rbp), %rdi
movq %r15, %rsi
callq 0x3150
movq -0x168(%rbp), %rax
movq -0x160(%rbp), %rcx
movsbl -0x1(%rax,%rcx), %edi
callq 0x3070
testl %eax, %eax
leaq -0x6a0(%rbp), %r12
leaq -0x168(%rbp), %rbx
je 0x44b6
movq %rbx, %rdi
callq 0x32c0
movq -0x168(%rbp), %rax
movq -0x160(%rbp), %rcx
movsbl -0x1(%rax,%rcx), %edi
callq 0x3070
testl %eax, %eax
jne 0x4492
cmpl $0x7da, %r14d           # imm = 0x7DA
setb %bl
movb $0x1, %al
movl %eax, -0xc0(%rbp)
movl $0x0, -0x78(%rbp)
jmp 0x498c
testb $0x1, -0xc0(%rbp)
je 0x4adc
leaq -0x108(%rbp), %rdi
movq %r15, %rsi
leaq 0x3db0(%rip), %rdx      # 0x82a2
leaq 0x3dac(%rip), %rcx      # 0x82a5
callq 0x39b6
movq -0x108(%rbp), %rax
movq -0x100(%rbp), %rcx
subq %rax, %rcx
cmpq $0x41, %rcx
jb 0x4ad0
leaq -0x38(%rbp), %rcx
movq %rcx, -0x48(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %rdi
callq 0x7404
movq -0x48(%rbp), %rax
movb (%rax), %cl
addb $-0x21, %cl
cmpb $0x20, %cl
jb 0x4abe
movq -0x40(%rbp), %rcx
cmpb $0x3a, -0x1(%rax,%rcx)
jne 0x458f
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 0x458f
callq 0x3200
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x48(%rbp), %r14
movq %r14, %rsi
callq 0x375b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x32d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x45c8
callq 0x3200
xorpd %xmm0, %xmm0
movapd %xmm0, -0x180(%rbp)
movq $0x0, -0x170(%rbp)
movq -0x108(%rbp), %rax
movq -0x100(%rbp), %rcx
subq %rax, %rcx
movl $0x1, %r14d
cmpq $0x21, %rcx
jb 0x46ae
movq %r14, %rcx
shlq $0x5, %rcx
leaq (%rax,%rcx), %rsi
movq (%rax,%rcx), %rax
movsbl (%rax), %ecx
leal -0x30(%rcx), %edx
cmpl $0xa, %edx
jae 0x4650
leaq -0xb8(%rbp), %rdi
callq 0x3bce
movl %eax, %ebx
testb %al, %al
je 0x468c
movq -0x178(%rbp), %rsi
cmpq -0x170(%rbp), %rsi
je 0x4676
movq -0xb8(%rbp), %rax
movq %rax, (%rsi)
addq $0x8, -0x178(%rbp)
jmp 0x4689
movzbl %cl, %ecx
cmpl $0x2f, %ecx
je 0x4664
cmpl $0x23, %ecx
je 0x46ae
cmpl $0x5b, %ecx
jne 0x4671
jmp 0x46ae
cmpq $0x2, 0x8(%rsi)
jb 0x4671
cmpb $0x2f, 0x1(%rax)
je 0x46ae
incq %r14
jmp 0x4690
leaq -0x180(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0x7778
incq %r14
testb %bl, %bl
je 0x46ae
movq -0x108(%rbp), %rax
movq -0x100(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %rcx, %r14
jb 0x4600
movq -0x180(%rbp), %rcx
movq -0x178(%rbp), %rax
movq %rax, %rdx
subq %rcx, %rdx
subq %rcx, %rax
je 0x4aad
sarq $0x3, %rdx
xorl %r15d, %r15d
cmpq $0x2, %rdx
jb 0x472e
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
movb $0x1, %r11b
cmpl %r9d, %r8d
ja 0x470c
setae %bl
cmpl %r10d, %edi
seta %r11b
andb %bl, %r11b
testb %r11b, %r11b
je 0x4715
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 0x46e0
testb $0x8, %al
jne 0x499d
leaq -0x1b0(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq $0x0, -0x1b8(%rbp)
movb $0x0, -0x1b0(%rbp)
movq -0x108(%rbp), %rsi
movq -0x100(%rbp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %r14
je 0x47fc
shlq $0x5, %r14
movq (%rsi,%r14), %rax
cmpb $0x5b, (%rax)
jne 0x47fc
addq %r14, %rsi
movq 0x8(%rsi), %rcx
cmpb $0x5d, -0x1(%rax,%rcx)
jne 0x47fc
movq 0x8(%rsi), %rcx
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 0x375b
leaq -0x1c0(%rbp), %rdi
movq %rbx, %rsi
callq 0x32d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x47e4
callq 0x3200
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x47fc
callq 0x3200
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq 0x3ad3(%rip), %rdx      # 0x82e4
leaq 0x3a8c(%rip), %rcx      # 0x82a4
callq 0x39b6
movq -0x1a0(%rbp), %rax
cmpq -0x198(%rbp), %rax
jne 0x487f
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq 0x3a9c(%rip), %rsi      # 0x82e8
leaq 0x3a9f(%rip), %rdx      # 0x82f2
callq 0x749e
leaq -0x1a0(%rbp), %rdi
movq %rbx, %rsi
callq 0x78b4
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x487f
callq 0x3200
movq $0x0, -0x1b8(%rbp)
movq -0x1c0(%rbp), %rax
movb $0x0, (%rax)
movq -0x1a0(%rbp), %rbx
movq -0x198(%rbp), %r12
cmpq %r12, %rbx
je 0x4915
movq %r12, %rax
subq %rbx, %rax
sarq $0x5, %rax
movq %rax, %xmm0
punpckldq 0x3762(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x376a(%rip), %xmm0     # 0x8030
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x3736(%rip), %xmm0     # 0x8010
movl %r15d, %eax
cvtsi2sd %rax, %xmm2
divsd %xmm1, %xmm0
mulsd %xmm0, %xmm2
cvttsd2si %xmm2, %r14
leaq -0x298(%rbp), %rdi
leaq -0x48(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
movq %rbx, %rcx
movl %r14d, %r8d
callq 0x63c4
addq $0x20, %rbx
cmpq %r12, %rbx
jne 0x48ef
leaq -0xb8(%rbp), %r14
movq %r14, %rdi
leaq -0x48(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x729e
leaq -0x208(%rbp), %rdi
movq %r14, %rsi
callq 0x7aba
leaq -0x6a0(%rbp), %r12
movq %rax, %rbx
movq %r14, %rdi
callq 0x640c
leaq -0x200(%rbp), %rax
cmpq %rax, %rbx
je 0x4a58
movq %r14, %rdi
leaq -0x48(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x729e
leaq -0x208(%rbp), %rdi
movq %r14, %rsi
callq 0x6442
addl %r15d, (%rax)
jmp 0x4a7d
xorl %ebx, %ebx
leaq -0xb8(%rbp), %rdi
callq 0x6376
jmp 0x4ade
movl $0x2b, %edx
leaq -0x498(%rbp), %rdi
leaq 0x38f8(%rip), %rsi      # 0x82a8
callq 0x3290
leaq -0x68(%rbp), %r15
leaq -0x498(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x35b9
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x38f6(%rip), %rsi      # 0x82d4
callq 0x3290
movl %r13d, %esi
movq %rbx, %rdi
callq 0x3180
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x38d6(%rip), %rsi      # 0x82d6
callq 0x3290
movl -0x70(%rbp), %esi
movq %rbx, %rdi
callq 0x3180
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0x38be(%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 0x3899(%rip), %rsi      # 0x82e2
callq 0x3290
movq %rbx, %rdi
callq 0x3120
jmp 0x4aad
movq %r14, %rdi
leaq -0x48(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x729e
leaq -0x208(%rbp), %rdi
movq %r14, %rsi
callq 0x6442
movl %r15d, (%rax)
movq %r14, %rdi
callq 0x640c
leaq -0x1a0(%rbp), %rdi
callq 0x6376
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
leaq -0x68(%rbp), %r15
je 0x4aad
callq 0x3200
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0x4abe
callq 0x3200
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x4ad0
callq 0x3200
leaq -0x108(%rbp), %rdi
callq 0x6376
xorl %ebx, %ebx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4af0
callq 0x3200
testb %bl, %bl
movl -0x70(%rbp), %ebx
je 0x4230
jmp 0x4cfb
leaq 0x3860(%rip), %rdi      # 0x8367
callq 0x3160
jmp 0x5eb4
leaq 0x384f(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5eb4
leaq 0x383e(%rip), %rdi      # 0x8367
callq 0x3160
jmp 0x5eb4
leaq 0x382d(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5eb4
leaq 0x381c(%rip), %rdi      # 0x8367
callq 0x3160
jmp 0x5eb4
leaq 0x380b(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5eb4
movq %rdx, %r14
movq %rax, %r12
cmpl $0x0, (%rbx)
jne 0x4b8b
movl -0xc4(%rbp), %eax
movl %eax, (%rbx)
jmp 0x4b8b
jmp 0x4b7d
movq %rdx, %r14
movq %rax, %r12
cmpl $0x0, (%rbx)
jne 0x4b8b
movl %r15d, (%rbx)
cmpl $0x2, %r14d
jne 0x5fbe
movq %r12, %rdi
callq 0x32e0
movq -0x1d0(%rbp), %rax
movq %rax, -0x48(%rbp)
movq %r12, %rdi
callq 0x3100
leaq -0x48(%rbp), %rdi
callq 0x3410
callq 0x33a0
xorl %ebx, %ebx
movq -0x1d8(%rbp), %r13
leaq -0x6a0(%rbp), %r12
leaq -0x68(%rbp), %r15
jmp 0x498c
movq 0x6412(%rip), %rdi      # 0xaff0
leaq 0x3612(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x63fa(%rip), %rdi      # 0xaff0
leaq 0x3602(%rip), %rsi      # 0x81ff
movl $0x15, %edx
callq 0x3290
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
movq 0x63d4(%rip), %rdi      # 0xaff0
callq 0x3290
movq %rax, %rbx
leaq 0x36b7(%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 0x5e45
movq 0x6380(%rip), %rdi      # 0xaff0
leaq 0x3580(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x6368(%rip), %rdi      # 0xaff0
leaq 0x3570(%rip), %rsi      # 0x81ff
movl $0x15, %edx
callq 0x3290
movq -0x148(%rbp), %rsi
movq -0x140(%rbp), %rdx
movq 0x6342(%rip), %rdi      # 0xaff0
callq 0x3290
movq %rax, %rbx
leaq 0x3625(%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 0x5df7
leaq 0x35f1(%rip), %rsi      # 0x82f3
leaq -0x498(%rbp), %rdi
movl $0x11, %edx
callq 0x3290
movl %ebx, %esi
leaq -0x498(%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 -0x280(%rbp), %rcx
leaq -0x290(%rbp), %rax
movq %rcx, -0x78(%rbp)
cmpq %rax, %rcx
je 0x5462
leaq -0x68(%rbp), %r13
movq -0x498(%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 -0x78(%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 0x355a(%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 -0x78(%rbp), %rax
movq 0x58(%rax), %rbx
addq $0x48, %rax
movq %rax, -0xc0(%rbp)
cmpq %rax, %rbx
je 0x5144
movl $0x3, %edx
movq %r14, %rdi
leaq 0x34f3(%rip), %rsi      # 0x8308
callq 0x3290
leaq 0x20(%rbx), %rsi
movq %r14, %rdi
callq 0x35b9
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x34e0(%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), %r12
movq %rbx, -0x70(%rbp)
addq $0x30, %rbx
cmpq %rbx, %r12
je 0x4fda
movl $0x6, %edx
movq %r14, %rdi
leaq 0x347c(%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 0x7404
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 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x340a(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%r12), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x33d2(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%r12), %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x33b4(%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 0x4f9c
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x4fb4
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x4fc6
callq 0x3200
movq %r12, %rdi
callq 0x32a0
movq %rax, %r12
cmpq %rbx, %rax
jne 0x4e7a
movq -0x70(%rbp), %rax
movq 0x40(%rax), %rax
xorl %r12d, %r12d
cmpq %rbx, %rax
je 0x4ff8
addl 0x40(%rax), %r12d
movq %rax, %rdi
callq 0x32a0
jmp 0x4fe5
movl $0x6, %edx
movq %r14, %rdi
leaq 0x32fe(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r13, %rdi
leaq 0x32f9(%rip), %rsi      # 0x8317
leaq 0x32f4(%rip), %rdx      # 0x8319
callq 0x749e
movq -0x70(%rbp), %rbx
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x32a0(%rip), %rsi      # 0x830a
callq 0x3290
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
movl %r12d, %esi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x326a(%rip), %rsi      # 0x830c
callq 0x3290
movl %r12d, %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x324e(%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 0x5102
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x511a
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x512c
callq 0x3200
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rbx
cmpq -0xc0(%rbp), %rax
jne 0x4e06
movl $0x10, %edx
movq %r14, %rdi
leaq 0x31c7(%rip), %rsi      # 0x831a
callq 0x3290
movq -0x498(%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 -0x78(%rbp), %rax
movq 0x88(%rax), %rbx
leaq 0x78(%rax), %r12
cmpq %r12, %rbx
je 0x52f5
movl $0x6, %edx
movq %r14, %rdi
leaq 0x315b(%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 0x7404
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 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x30eb(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%rbx), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x30b5(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%rbx), %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x3099(%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 0x52b7
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x52cf
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x52e1
callq 0x3200
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rbx
cmpq %r12, %rax
jne 0x519b
movq -0x78(%rbp), %rax
movq 0x88(%rax), %rax
xorl %ebx, %ebx
cmpq %r12, %rax
je 0x5314
addl 0x40(%rax), %ebx
movq %rax, %rdi
callq 0x32a0
jmp 0x5302
movl $0x6, %edx
movq %r14, %rdi
leaq 0x2fe2(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r13, %rdi
leaq 0x2fdd(%rip), %rsi      # 0x8317
leaq 0x2fd8(%rip), %rdx      # 0x8319
callq 0x749e
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2f88(%rip), %rsi      # 0x830a
callq 0x3290
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
movl %ebx, %esi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2f53(%rip), %rsi      # 0x830c
callq 0x3290
movl %ebx, %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %rbx
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2f38(%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 0x5418
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5430
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5442
callq 0x3200
movq -0x78(%rbp), %rdi
callq 0x32a0
movq %rax, %rcx
leaq -0x290(%rbp), %rax
movq %rcx, -0x78(%rbp)
cmpq %rax, %rcx
jne 0x4d6d
movq -0x498(%rbp), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x498(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq 0x2e93(%rip), %rsi      # 0x832b
leaq -0x498(%rbp), %rdi
movl $0x17, %edx
callq 0x3290
leaq 0x2e68(%rip), %rsi      # 0x8318
leaq -0x498(%rbp), %rbx
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3290
movq -0x498(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x498(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x250(%rbp), %rbx
leaq -0x260(%rbp), %rax
cmpq %rax, %rbx
je 0x5854
leaq -0x498(%rbp), %r15
leaq -0x68(%rbp), %r14
movl $0x3, %edx
movq %r15, %rdi
leaq 0x2de4(%rip), %rsi      # 0x8308
callq 0x3290
leaq 0x20(%rbx), %rsi
movq %r15, %rdi
callq 0x35b9
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2dd1(%rip), %rsi      # 0x8318
callq 0x3290
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq 0x40(%rbx), %r13
movq %rbx, -0x70(%rbp)
addq $0x30, %rbx
cmpq %rbx, %r13
je 0x56e6
movl $0x6, %edx
movq %r15, %rdi
leaq 0x2d6d(%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 0x7404
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 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2cfd(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%r13), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r12, %rdi
callq 0x3290
movq %rax, %r12
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2cc6(%rip), %rsi      # 0x830c
callq 0x3290
movl 0x40(%r13), %esi
movq %r12, %rdi
callq 0x3180
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2ca9(%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 0x56a8
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x56c0
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x56d2
callq 0x3200
movq %r13, %rdi
callq 0x31a0
movq %rax, %r13
cmpq %rbx, %rax
jne 0x5589
movq -0x70(%rbp), %rax
movq 0x40(%rax), %rax
xorl %r13d, %r13d
cmpq %rbx, %rax
je 0x5704
addl 0x40(%rax), %r13d
movq %rax, %rdi
callq 0x32a0
jmp 0x56f1
movl $0x6, %edx
movq %r15, %rdi
leaq 0x2bf2(%rip), %rsi      # 0x8305
callq 0x3290
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r14, %rdi
leaq 0x2bed(%rip), %rsi      # 0x8317
leaq 0x2be8(%rip), %rdx      # 0x8319
callq 0x749e
movq -0x70(%rbp), %rbx
movl $0xc, %edx
leaq -0xb8(%rbp), %rdi
movq %r14, %rsi
callq 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2b94(%rip), %rsi      # 0x830a
callq 0x3290
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
movl %r13d, %esi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r12, %rdi
callq 0x3290
movq %rax, %r12
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2b5e(%rip), %rsi      # 0x830c
callq 0x3290
movl %r13d, %esi
movq %r12, %rdi
callq 0x3180
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2b42(%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 0x580f
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5827
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5839
callq 0x3200
movq %rbx, %rdi
callq 0x31a0
movq %rax, %rbx
leaq -0x260(%rbp), %rax
cmpq %rax, %rbx
jne 0x5515
leaq 0x2abf(%rip), %rsi      # 0x831a
leaq -0x498(%rbp), %rbx
movl $0x10, %edx
movq %rbx, %rdi
callq 0x3290
movq -0x498(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x498(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq -0x220(%rbp), %rbx
leaq -0x230(%rbp), %rax
cmpq %rax, %rbx
je 0x5a24
leaq -0x498(%rbp), %r15
leaq -0x68(%rbp), %r12
leaq 0x2a4b(%rip), %r13      # 0x8312
movl $0x6, %edx
movq %r15, %rdi
leaq 0x2a2f(%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 0x7404
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 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29bf(%rip), %rsi      # 0x830a
callq 0x3290
movl 0x40(%rbx), %esi
movl $0xc, %edx
leaq -0x48(%rbp), %rdi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r14, %rdi
callq 0x3290
movq %rax, %r14
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2989(%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 0x59df
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x59f7
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5a09
callq 0x3200
movq %rbx, %rdi
callq 0x31a0
movq %rax, %rbx
leaq -0x230(%rbp), %rax
cmpq %rax, %rbx
jne 0x58c7
movq -0x220(%rbp), %rax
leaq -0x230(%rbp), %rcx
xorl %r14d, %r14d
cmpq %rcx, %rax
je 0x5a52
leaq -0x230(%rbp), %rbx
addl 0x40(%rax), %r14d
movq %rax, %rdi
callq 0x32a0
cmpq %rbx, %rax
jne 0x5a41
leaq 0x28ac(%rip), %rsi      # 0x8305
leaq -0x498(%rbp), %rdi
movl $0x6, %edx
callq 0x3290
leaq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
movq %rax, (%rdi)
leaq 0x289b(%rip), %rsi      # 0x8317
leaq 0x2896(%rip), %rdx      # 0x8319
callq 0x749e
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movl $0xc, %edx
callq 0x37ae
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x498(%rbp), %rbx
movq %rbx, %rdi
callq 0x3290
movq %rax, %r15
leaq 0x2846(%rip), %rsi      # 0x830a
movl $0x1, %edx
movq %rax, %rdi
callq 0x3290
leaq -0x48(%rbp), %rdi
movl $0xc, %edx
movl %r14d, %esi
callq 0x388c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
leaq 0x2810(%rip), %rsi      # 0x830c
movl $0x5, %edx
movq %rax, %rdi
callq 0x3290
movl %r14d, %esi
movq %r15, %rdi
callq 0x3180
movq %rax, %r14
leaq 0x27f4(%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 0x5b64
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5b7c
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x5b8e
callq 0x3200
movq -0x498(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3210
movsbl %al, %esi
leaq -0x498(%rbp), %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
leaq 0x277f(%rip), %rsi      # 0x8343
movl $0x11, %edx
movq -0xd0(%rbp), %rdi
callq 0x3290
movq -0x1f0(%rbp), %rbx
leaq -0x200(%rbp), %rax
cmpq %rax, %rbx
je 0x5cc7
leaq 0x26b0(%rip), %r14      # 0x82a3
movl $0xfffffefb, %r12d      # imm = 0xFFFFFEFB
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
movq -0xd0(%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 0x238e(%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 -0x200(%rbp), %rax
cmpq %rax, %rbx
jne 0x5bf9
leaq -0x268(%rbp), %rbx
leaq -0x238(%rbp), %r14
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x5ced
callq 0x3200
leaq -0x208(%rbp), %rdi
callq 0x7306
movq %r14, %rdi
callq 0x69c0
movq %rbx, %rdi
callq 0x6a54
leaq -0x298(%rbp), %rdi
callq 0x73a0
xorl %ebx, %ebx
jmp 0x5da9
movq 0x52cd(%rip), %rdi      # 0xaff0
leaq 0x24cd(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x52b5(%rip), %rdi      # 0xaff0
leaq 0x24bd(%rip), %rsi      # 0x81ff
movl $0x15, %edx
callq 0x3290
movq -0x128(%rbp), %rsi
movq -0x120(%rbp), %rdx
movq 0x528f(%rip), %rdi      # 0xaff0
callq 0x3290
movq %rax, %rbx
leaq 0x2572(%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 0x5208(%rip), %rax      # 0xafb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x898(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x8a0(%rbp,%rcx)
callq 0x31e0
leaq -0x7a8(%rbp), %rdi
callq 0x30c0
movq -0x128(%rbp), %rdi
leaq -0x118(%rbp), %rax
cmpq %rax, %rdi
je 0x5df7
callq 0x3200
movq 0x51ba(%rip), %rax      # 0xafb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x490(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x498(%rbp,%rcx)
callq 0x31e0
leaq -0x3a0(%rbp), %rdi
callq 0x30c0
movq -0x148(%rbp), %rdi
leaq -0x138(%rbp), %rax
cmpq %rax, %rdi
je 0x5e45
callq 0x3200
leaq -0x6a0(%rbp), %rdi
callq 0x30a0
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x5e69
callq 0x3200
movl %ebx, %eax
addq $0x878, %rsp            # imm = 0x878
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x23df(%rip), %rdi      # 0x8263
leaq 0x21e9(%rip), %rsi      # 0x8074
leaq 0x23f6(%rip), %rcx      # 0x8288
movl $0x13c, %edx            # imm = 0x13C
callq 0x3170
leaq 0x24c4(%rip), %rdi      # 0x8367
callq 0x3160
leaq 0x24b8(%rip), %rdi      # 0x8367
callq 0x3330
jmp 0x5fb8
movq %rdx, %r14
movq %rax, %r12
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x5feb
callq 0x3200
jmp 0x5feb
jmp 0x5f38
jmp 0x5f1c
jmp 0x5fd9
movq %rdx, %r14
movq %rax, %r12
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x5fdf
callq 0x3200
jmp 0x5fdf
jmp 0x5fd9
jmp 0x5f1c
jmp 0x5fd9
movq %rdx, %r14
movq %rax, %r12
leaq -0xb8(%rbp), %rdi
callq 0x640c
jmp 0x5fdf
jmp 0x5fd9
movq %rdx, %r14
movq %rax, %r12
jmp 0x5feb
jmp 0x5f45
movq %rdx, %r14
movq %rax, %r12
jmp 0x6014
jmp 0x6059
jmp 0x5fa6
movq %rdx, %r14
movq %rax, %r12
jmp 0x6026
jmp 0x611d
jmp 0x610b
jmp 0x6115
jmp 0x6115
movq %rdx, %r14
movq %rax, %r12
cmpl $0x0, (%rbx)
jne 0x5f86
movl -0x70(%rbp), %eax
movl %eax, (%rbx)
leaq -0x288(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x61b2
callq 0x3200
jmp 0x61b2
jmp 0x5fd1
movq %rdx, %r14
movq %rax, %r12
jmp 0x61e8
jmp 0x6079
jmp 0x6037
movq %rdx, %r14
movq %rax, %r12
leaq -0xb8(%rbp), %rdi
jmp 0x602d
jmp 0x610b
jmp 0x611d
movq %rdx, %r14
movq %rax, %r12
jmp 0x6003
movq %rdx, %r14
movq %rax, %r12
leaq -0x1a0(%rbp), %rdi
callq 0x6376
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x6003
callq 0x3200
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0x6014
callq 0x3200
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x6026
callq 0x3200
leaq -0x108(%rbp), %rdi
callq 0x6376
jmp 0x6155
movq %rdx, %r14
movq %rax, %r12
leaq -0xe0(%rbp), %rbx
jmp 0x623d
jmp 0x60b9
jmp 0x610b
jmp 0x6059
jmp 0x608b
jmp 0x6125
movq %rdx, %r14
movq %rax, %r12
jmp 0x61b2
movq %rdx, %r14
movq %rax, %r12
jmp 0x6272
jmp 0x6115
jmp 0x6115
movq %rdx, %r14
movq %rax, %r12
leaq -0xe0(%rbp), %rbx
jmp 0x6207
movq %rdx, %r14
movq %rax, %r12
leaq -0xe0(%rbp), %rbx
jmp 0x6261
jmp 0x6115
jmp 0x6115
jmp 0x610b
jmp 0x611d
jmp 0x6115
jmp 0x6115
jmp 0x610b
jmp 0x611d
jmp 0x6115
jmp 0x6115
jmp 0x610b
jmp 0x610b
jmp 0x611d
jmp 0x6115
movq %rdx, %r14
movq %rax, %r12
leaq -0xe0(%rbp), %rbx
jmp 0x6255
jmp 0x611d
jmp 0x611d
jmp 0x611d
jmp 0x6115
jmp 0x6125
jmp 0x6125
jmp 0x6125
jmp 0x6115
jmp 0x6115
jmp 0x6115
jmp 0x6115
jmp 0x610b
jmp 0x611d
jmp 0x6115
jmp 0x6115
jmp 0x610b
jmp 0x610b
jmp 0x611d
jmp 0x6115
jmp 0x610b
jmp 0x610b
jmp 0x611d
jmp 0x6115
jmp 0x611d
jmp 0x611d
jmp 0x611d
jmp 0x6115
jmp 0x6125
jmp 0x6125
jmp 0x6125
jmp 0x6115
jmp 0x610b
movq %rdx, %r14
movq %rax, %r12
jmp 0x6155
jmp 0x611d
movq %rdx, %r14
movq %rax, %r12
jmp 0x6167
movq %rdx, %r14
movq %rax, %r12
jmp 0x613d
movq %rdx, %r14
movq %rax, %r12
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x613d
callq 0x3200
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x6155
callq 0x3200
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x6167
callq 0x3200
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x617f
callq 0x3200
leaq -0x208(%rbp), %rdi
callq 0x7306
leaq -0x268(%rbp), %rbx
leaq -0x238(%rbp), %rdi
callq 0x69c0
movq %rbx, %rdi
callq 0x6a54
leaq -0x298(%rbp), %rdi
callq 0x73a0
movq 0x4dff(%rip), %rax      # 0xafb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x898(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x8a0(%rbp,%rcx)
callq 0x31e0
leaq -0x7a8(%rbp), %rdi
callq 0x30c0
leaq -0xe0(%rbp), %rbx
leaq -0x118(%rbp), %rax
movq -0x128(%rbp), %rdi
cmpq %rax, %rdi
je 0x6207
callq 0x3200
movq 0x4daa(%rip), %rax      # 0xafb8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x490(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x498(%rbp,%rcx)
callq 0x31e0
leaq -0x3a0(%rbp), %rdi
callq 0x30c0
leaq -0x138(%rbp), %rax
movq -0x148(%rbp), %rdi
cmpq %rax, %rdi
je 0x6255
callq 0x3200
leaq -0x6a0(%rbp), %rdi
callq 0x30a0
movq -0xf0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x6272
callq 0x3200
movq %r12, %rdi
callq 0x3100
cmpl $0x2, %r14d
jne 0x62bd
movq %rax, %rbx
movq 0x4d66(%rip), %rdi      # 0xaff0
leaq 0x1f66(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x4d45(%rip), %rdi      # 0xaff0
movq %rax, %rsi
callq 0x3220
movq %rax, %rdi
callq 0x3120
jmp 0x62f9
movq 0x4d2c(%rip), %rdi      # 0xaff0
leaq 0x1f2c(%rip), %rsi      # 0x81f7
movl $0x7, %edx
callq 0x3290
movq 0x4d14(%rip), %rdi      # 0xaff0
leaq 0x2072(%rip), %rsi      # 0x8355
movl $0x11, %edx
callq 0x3290
movq 0x4cfc(%rip), %rdi      # 0xaff0
callq 0x3120
callq 0x33a0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x5e69
movq %rax, %rbx
callq 0x33a0
jmp 0x631a
movq %rax, %rbx
callq 0x33a0
movq %rbx, %rdi
callq 0x33c0
movq %rax, %rdi
callq 0x64dd