// File: /workspace/github_c_makefile_star2_O3/canboat[P]canboat/analyzer/analyzer.c
// Function: main
int main(int argc, char **argv)
{
  int    r;
  char   msg[2000];
  FILE  *file = stdin;
  int    ac   = argc;
  char **av   = argv;

  setProgName(argv[0]);

  for (; ac > 1; ac--, av++)
  {
    if (strcasecmp(av[1], "-version") == 0)
    {
      printf("%s\n", VERSION);
      exit(0);
    }
    else if (strcasecmp(av[1], "-schema-version") == 0)
    {
      printf("%s\n", SCHEMA_VERSION);
      exit(0);
    }
    else if (strcasecmp(av[1], "-camel") == 0)
    {
      showCamel = true;
      camelCase(false);
    }
    else if (strcasecmp(av[1], "-upper-camel") == 0)
    {
      camelCase(true);
    }
    else if (strcasecmp(av[1], "-raw") == 0)
    {
      showRaw = true;
    }
    else if (strcasecmp(av[1], "-debug") == 0)
    {
      showJsonEmpty = true;
      showBytes     = true;
    }
    else if (strcasecmp(av[1], "-debugdata") == 0)
    {
      showJsonEmpty = true;
      showAllBytes  = true;
    }
    else if (strcasecmp(av[1], "-d") == 0)
    {
      setLogLevel(LOGLEVEL_DEBUG);
    }
    else if (strcasecmp(av[1], "-q") == 0)
    {
      setLogLevel(LOGLEVEL_ERROR);
    }
    else if (ac > 2 && strcasecmp(av[1], "-geo") == 0)
    {
      if (strcasecmp(av[2], "dd") == 0)
      {
        showGeo = GEO_DD;
      }
      else if (strcasecmp(av[2], "dm") == 0)
      {
        showGeo = GEO_DM;
      }
      else if (strcasecmp(av[2], "dms") == 0)
      {
        showGeo = GEO_DMS;
      }
      else
      {
        usage(argv, av + 1);
      }
      ac--;
      av++;
    }
    else if (strcasecmp(av[1], "-si") == 0)
    {
      showSI = true;
    }
    else if (strcasecmp(av[1], "-nosi") == 0)
    {
      showSI = false;
    }
    else if (strcasecmp(av[1], "-json") == 0)
    {
      showJson = true;
    }
    else if (strcasecmp(av[1], "-empty") == 0)
    {
      showJsonEmpty = true;
      showJson      = true;
    }
    else if (strcasecmp(av[1], "-nv") == 0)
    {
      showJsonValue = true;
      showJson      = true;
    }
    else if (strcasecmp(av[1], "-data") == 0)
    {
      showData = true;
    }
    else if (ac > 2 && strcasecmp(av[1], "-fixtime") == 0)
    {
      setFixedTimestamp(av[2]);
      if (strstr(av[2], "n2kd") == NULL)
      {
        showVersion = false;
      }
      ac--;
      av++;
    }
    else if (ac > 2 && strcasecmp(av[1], "-src") == 0)
    {
      onlySrc = strtol(av[2], 0, 10);
      ac--;
      av++;
    }
    else if (ac > 2 && strcasecmp(av[1], "-dst") == 0)
    {
      onlyDst = strtol(av[2], 0, 10);
      ac--;
      av++;
    }
#ifndef SKIP_SETSYSTEMCLOCK
    else if (ac > 2 && strcasecmp(av[1], "-clocksrc") == 0)
    {
      clockSrc = strtol(av[2], 0, 10);
      ac--;
      av++;
    }
#endif
    else if (ac > 2 && strcasecmp(av[1], "-file") == 0)
    {
      file = fopen(av[2], "r");
      if (!file)
      {
        logAbort("Cannot open file %s\n", av[2]);
      }
      ac--;
      av++;
    }
    else if (ac > 2 && strcasecmp(av[1], "-format") == 0)
    {
      for (size_t i = 1; i < ARRAY_SIZE(RAW_FORMAT_STR); i++)
      {
        if (strcasecmp(av[2], RAW_FORMAT_STR[i]) == 0)
        {
          format = (enum RawFormats) i;
          if (format != RAWFORMAT_PLAIN && format != RAWFORMAT_PLAIN_OR_FAST && format != RAWFORMAT_PLAIN_MIX_FAST
              && format != RAWFORMAT_YDWG02)
          {
            multiPackets = MULTIPACKETS_COALESCED;
          }
          break;
        }
      }
      if (format == RAWFORMAT_UNKNOWN)
      {
        logAbort("Unknown message format '%s'\n", av[2]);
      }
      ac--;
      av++;
    }

    else
    {
      onlyPgn = strtol(av[1], 0, 10);
      if (onlyPgn > 0)
      {
        logInfo("Only logging PGN %d\n", onlyPgn);
      }
      else
      {
        usage(argv, av + 1);
      }
    }
  }

  if (!showJson)
  {
    logInfo("N2K packet analyzer\n" COPYRIGHT);
  }
  else if (showVersion)
  {
    printf("{\"version\":\"%s\",\"units\":\"%s\",\"showLookupValues\":%s",
           VERSION,
           showSI ? "si" : "std",
           showJsonValue ? "true" : "false");
    if (showCamel)
    {
      printf(",\"showUniqueId\":true");
    }
    printf("}\n");
  }

  fillLookups();
  fillFieldType(true);
  checkPgnList();

  while (fgets(msg, sizeof(msg) - 1, file))
  {
    RawMessage m;

    if (*msg == 0 || *msg == '\r' || *msg == '\n' || *msg == '#')
    {
      if (*msg == '#')
      {
        if (strncmp(msg + 1, "SHOWBUFFERS", STRSIZE("SHOWBUFFERS")) == 0)
        {
          showBuffers();
        }
      }

      continue;
    }

    if (format == RAWFORMAT_UNKNOWN)
    {
      format = detectFormat(msg);
      if (format == RAWFORMAT_GARMIN_CSV1 || format == RAWFORMAT_GARMIN_CSV2)
      {
        // Skip first line containing header line
        continue;
      }
    }

    switch (format)
    {
      case RAWFORMAT_PLAIN_OR_FAST:
        if (getMessageByteCount(msg) <= 8)
        {
          r = parseRawFormatPlain(msg, &m, showJson);
          logDebug("plain_or_fast: plain r=%d\n", r);
        }
        else
        {
          r = parseRawFormatFast(msg, &m, showJson);
          if (r >= 0)
          {
            format       = RAWFORMAT_FAST;
            multiPackets = MULTIPACKETS_COALESCED;
            logDebug("plain_or_fast: fast r=%d\n", r);
          }
        }
        break;

      case RAWFORMAT_PLAIN_MIX_FAST:
        if (getMessageByteCount(msg) <= 8)
        {
          r = parseRawFormatPlain(msg, &m, showJson);
          logDebug("plain_or_fast: plain r=%d\n", r);
        }
        else
        {
          r = parseRawFormatFast(msg, &m, showJson);
          logDebug("plain_or_fast: fast r=%d\n", r);
        }
        break;

      case RAWFORMAT_PLAIN:
        r = parseRawFormatPlain(msg, &m, showJson);
        break;

      case RAWFORMAT_FAST:
        r = parseRawFormatFast(msg, &m, showJson);
        break;

      case RAWFORMAT_AIRMAR:
        r = parseRawFormatAirmar(msg, &m, showJson);
        break;

      case RAWFORMAT_CHETCO:
        r = parseRawFormatChetco(msg, &m, showJson);
        break;

      case RAWFORMAT_GARMIN_CSV1:
      case RAWFORMAT_GARMIN_CSV2:
        r = parseRawFormatGarminCSV(msg, &m, showJson, format == RAWFORMAT_GARMIN_CSV2);
        break;

      case RAWFORMAT_YDWG02:
        r = parseRawFormatYDWG02(msg, &m, showJson);
        break;

      case RAWFORMAT_ACTISENSE_N2K_ASCII:
        r = parseRawFormatActisenseN2KAscii(msg, &m, showJson);
        break;

      default:
        logError("Unknown message format\n");
        exit(1);
    }

    if (r == 0)
    {
      printCanFormat(&m);
      printCanRaw(&m);
    }
    else
    {
      logError("Unknown message error %d: '%s'\n", r, msg);
    }
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x948, %rsp            # imm = 0x948
movq %rsi, %rbx
movl %edi, %r15d
movq 0x27436(%rip), %rax     # 0x34fd0
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq (%rsi), %rdi
callq 0x19b4a
cmpl $0x2, %r15d
jl 0xe04a
leaq 0x106f8(%rip), %r13     # 0x1e2b3
leaq 0x1070d(%rip), %rbp     # 0x1e2cf
movq %rbx, 0x18(%rsp)
movq 0x8(%rbx), %r14
movq %r14, %rdi
leaq 0x106e5(%rip), %rsi     # 0x1e2ba
callq 0xd060
testl %eax, %eax
je 0xe9e1
movq %r14, %rdi
movq %r13, %rsi
callq 0xd060
testl %eax, %eax
je 0xe9ea
movq %r14, %rdi
movq %rbp, %rsi
callq 0xd060
testl %eax, %eax
je 0xdd76
movq %r14, %rdi
leaq 0x106b7(%rip), %rsi     # 0x1e2c9
callq 0xd060
testl %eax, %eax
je 0xdd81
movq %r14, %rdi
leaq 0x106ad(%rip), %rsi     # 0x1e2d6
callq 0xd060
testl %eax, %eax
je 0xddab
movq %r14, %rdi
leaq 0x1069b(%rip), %rsi     # 0x1e2db
callq 0xd060
testl %eax, %eax
je 0xddb4
movq %r14, %rdi
leaq 0x1068b(%rip), %rsi     # 0x1e2e2
callq 0xd060
testl %eax, %eax
je 0xddc4
movq %r14, %rdi
leaq 0x1067f(%rip), %rsi     # 0x1e2ed
callq 0xd060
testl %eax, %eax
je 0xddd4
movq %r14, %rdi
leaq 0x1066b(%rip), %rsi     # 0x1e2f0
callq 0xd060
testl %eax, %eax
je 0xdddb
leaq 0x8(%rbx), %r12
cmpl $0x2, %r15d
je 0xdcb3
movq %r14, %rdi
leaq 0x1064d(%rip), %rsi     # 0x1e2f3
callq 0xd060
testl %eax, %eax
je 0xddf9
movq %r14, %rdi
leaq 0x10645(%rip), %rsi     # 0x1e302
callq 0xd060
testl %eax, %eax
je 0xdde7
movq %r14, %rdi
leaq 0x10632(%rip), %rsi     # 0x1e306
callq 0xd060
testl %eax, %eax
je 0xddf0
movq %r14, %rdi
leaq 0x10621(%rip), %rsi     # 0x1e30c
callq 0xd060
testl %eax, %eax
je 0xde40
movq %r14, %rdi
leaq 0x10610(%rip), %rsi     # 0x1e312
callq 0xd060
testl %eax, %eax
je 0xde4c
movq %r14, %rdi
leaq 0x10600(%rip), %rsi     # 0x1e319
callq 0xd060
testl %eax, %eax
je 0xde5a
movq %r14, %rdi
leaq 0x105ed(%rip), %rsi     # 0x1e31d
callq 0xd060
testl %eax, %eax
je 0xde80
cmpl $0x2, %r15d
jne 0xde8c
movq %r14, %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0xd1f0
movl %eax, 0x7a578(%rip)     # 0x882d4
testl %eax, %eax
jle 0xea22
leaq 0x1061a(%rip), %rdi     # 0x1e385
movl %eax, %esi
xorl %eax, %eax
callq 0x197fc
jmp 0xdd8b
movb $0x1, 0x7a54f(%rip)     # 0x882cc
xorl %edi, %edi
jmp 0xdd86
movl $0x1, %edi
callq 0xd95b
movq %rbx, %r12
leal -0x1(%r15), %eax
addq $0x8, %r12
movq %r12, %rbx
cmpl $0x2, %r15d
movl %eax, %r15d
jg 0xdbc7
jmp 0xe04a
movb $0x1, 0x7a512(%rip)     # 0x882c4
jmp 0xdd8b
movb $0x1, %al
movb %al, 0x7a50d(%rip)      # 0x882c9
movb %al, 0x7a504(%rip)      # 0x882c6
jmp 0xdd8b
movb $0x1, %al
movb %al, 0x7a4fd(%rip)      # 0x882c9
movb %al, 0x7a4f5(%rip)      # 0x882c7
jmp 0xdd8b
movl $0x3, %edi
jmp 0xdde0
movl $0x1, %edi
callq 0x19b21
jmp 0xdd8b
movb $0x1, 0x7a4dd(%rip)     # 0x882cb
jmp 0xdd8b
movb $0x0, 0x7a4d4(%rip)     # 0x882cb
jmp 0xdd8b
movq 0x10(%rbx), %rbx
movq %rbx, %rdi
leaq 0x104f1(%rip), %rsi     # 0x1e2f8
callq 0xd060
testl %eax, %eax
je 0xde56
movq %rbx, %rdi
leaq 0x104e1(%rip), %rsi     # 0x1e2fb
callq 0xd060
testl %eax, %eax
je 0xde6d
movq %rbx, %rdi
leaq 0x104d1(%rip), %rsi     # 0x1e2fe
callq 0xd060
movl $0x2, %ecx
testl %eax, %eax
je 0xde72
jmp 0xea15
movb $0x1, 0x7a481(%rip)     # 0x882c8
jmp 0xdd8b
movb $0x1, %al
movb %al, 0x7a475(%rip)      # 0x882c9
jmp 0xde62
xorl %ecx, %ecx
jmp 0xde72
movb $0x1, %al
movb %al, 0x7a468(%rip)      # 0x882ca
movb %al, 0x7a460(%rip)      # 0x882c8
jmp 0xdd8b
movl $0x1, %ecx
movl %ecx, 0x7a458(%rip)     # 0x882d0
decl %r15d
jmp 0xdd8e
movb $0x1, 0x7a43e(%rip)     # 0x882c5
jmp 0xdd8b
movq %r14, %rdi
leaq 0x1048d(%rip), %rsi     # 0x1e323
callq 0xd060
testl %eax, %eax
je 0xdf5f
movq %r14, %rdi
leaq 0x10484(%rip), %rsi     # 0x1e331
callq 0xd060
testl %eax, %eax
je 0xdf8d
movq %r14, %rdi
leaq 0x10472(%rip), %rsi     # 0x1e336
callq 0xd060
testl %eax, %eax
je 0xdfa8
movq %r14, %rdi
leaq 0x10460(%rip), %rsi     # 0x1e33b
callq 0xd060
testl %eax, %eax
je 0xdfc3
movq %r14, %rdi
leaq 0x10453(%rip), %rsi     # 0x1e345
callq 0xd060
testl %eax, %eax
je 0xdfde
movq %r14, %rdi
leaq 0x10457(%rip), %rsi     # 0x1e360
callq 0xd060
testl %eax, %eax
jne 0xdd47
movq 0x10(%rbx), %r14
movl $0x1, %ebx
leaq 0x7423a(%rip), %rax     # 0x82160
movq (%rax,%rbx,8), %rsi
movq %r14, %rdi
callq 0xd060
testl %eax, %eax
je 0xe013
incq %rbx
cmpq $0xb, %rbx
jne 0xdf1f
cmpl $0x0, 0x7a376(%rip)     # 0x882c0
jne 0xde78
leaq 0x10411(%rip), %rdi     # 0x1e368
movq %r14, %rsi
jmp 0xe007
movq 0x10(%rbx), %rdi
callq 0x19b7e
movq 0x10(%rbx), %rdi
leaq 0x103b9(%rip), %rsi     # 0x1e32c
callq 0xd370
testq %rax, %rax
jne 0xde78
movb $0x0, 0x74234(%rip)     # 0x821bc
jmp 0xde78
movq 0x10(%rbx), %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0xd1f0
movl %eax, 0x74225(%rip)     # 0x821c8
jmp 0xde78
movq 0x10(%rbx), %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0xd1f0
movl %eax, 0x7420e(%rip)     # 0x821cc
jmp 0xde78
movq 0x10(%rbx), %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0xd1f0
movl %eax, 0x741f7(%rip)     # 0x821d0
jmp 0xde78
movq 0x10(%rbx), %rdi
leaq 0x1b973(%rip), %rsi     # 0x2995c
callq 0xd2b0
movq %rax, 0x10(%rsp)
testq %rax, %rax
jne 0xde78
movq 0x10(%rbx), %rsi
leaq 0x10344(%rip), %rdi     # 0x1e34b
xorl %eax, %eax
callq 0x19a33
jmp 0xde78
movl %ebx, 0x7a2a7(%rip)     # 0x882c0
movl %ebx, %eax
andl $0xd, %eax
cmpl $0x1, %eax
je 0xde78
cmpq $0x4, %rbx
je 0xde78
cmpq $0x9, %rbx
je 0xde78
movl $0x0, 0x74173(%rip)     # 0x821b8
jmp 0xde78
cmpb $0x0, 0x7a277(%rip)     # 0x882c8
je 0xe0cd
cmpb $0x1, 0x74162(%rip)     # 0x821bc
movq 0x10(%rsp), %rbp
jne 0xe0e0
leaq 0x1029b(%rip), %rax     # 0x1e303
leaq 0x1062e(%rip), %rdx     # 0x1e69d
cmpb $0x0, 0x7a255(%rip)     # 0x882cb
cmovneq %rax, %rdx
leaq 0x10636(%rip), %rax     # 0x1e6b7
leaq 0x10619(%rip), %rcx     # 0x1e6a1
cmpb $0x0, 0x7a23b(%rip)     # 0x882ca
cmovneq %rax, %rcx
leaq 0x105d0(%rip), %rdi     # 0x1e66a
leaq 0x1020c(%rip), %rsi     # 0x1e2ad
xorl %eax, %eax
callq 0xd110
cmpb $0x1, 0x7a21d(%rip)     # 0x882cc
jne 0xe0bf
leaq 0x105ef(%rip), %rdi     # 0x1e6a7
xorl %eax, %eax
callq 0xd110
leaq 0x1b470(%rip), %rdi     # 0x29536
callq 0xd0c0
jmp 0xe0e0
leaq 0x102c6(%rip), %rdi     # 0x1e39a
xorl %eax, %eax
callq 0x197fc
movq 0x10(%rsp), %rbp
callq 0x16b7a
movl $0x1, %edi
callq 0x18cfd
callq 0xd7b7
leaq 0x170(%rsp), %rdi
movl $0x7cf, %esi            # imm = 0x7CF
movq %rbp, %rdx
callq 0xd1a0
testq %rax, %rax
je 0xe9cd
leaq 0x170(%rsp), %r15
leaq 0x10d3f(%rip), %r13     # 0x1ee60
movb 0x170(%rsp), %cl
movzbl %cl, %eax
cmpl $0xc, %eax
jg 0xe146
testl %eax, %eax
je 0xe810
cmpl $0xa, %eax
je 0xe810
jmp 0xe1e1
cmpl $0xd, %eax
je 0xe810
cmpl $0x23, %eax
jne 0xe1e1
movq 0x171(%rsp), %rax
movabsq $0x46465542574f4853, %rcx # imm = 0x46465542574F4853
xorq %rcx, %rax
movq 0x174(%rsp), %rcx
movabsq $0x5352454646554257, %rdx # imm = 0x5352454646554257
xorq %rdx, %rcx
orq %rax, %rcx
jne 0xe810
leaq 0x7a266(%rip), %rbx     # 0x883f8
xorl %r14d, %r14d
cmpb $0x1, (%rbx)
jne 0xe1bf
movl -0x8(%rbx), %edx
movq -0xf8(%rbx), %rcx
movl -0x10(%rbx), %r8d
movl -0xc(%rbx), %r9d
leaq 0x10c73(%rip), %rdi     # 0x1ee26
movq %r14, %rsi
xorl %eax, %eax
callq 0x199a0
jmp 0xe1cc
movq %r13, %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0x1990d
incq %r14
addq $0x100, %rbx            # imm = 0x100
cmpq $0x40, %r14
jne 0xe195
jmp 0xe810
movl 0x7a0d9(%rip), %eax     # 0x882c0
testl %eax, %eax
jne 0xe413
cmpb $0x24, %cl
jne 0xe218
movl 0x170(%rsp), %eax
movl $0x44435024, %ecx       # imm = 0x44435024
xorl %ecx, %eax
movzwl 0x174(%rsp), %ecx
xorl $0x4e49, %ecx           # imm = 0x4E49
orl %eax, %ecx
je 0xe2c2
movl $0x6b, %edx
movq %r15, %rdi
leaq 0x10919(%rip), %rsi     # 0x1eb40
callq 0xd250
testl %eax, %eax
je 0xe28c
movl $0x9c, %edx
movq %r15, %rdi
leaq 0x109a3(%rip), %rsi     # 0x1ebe2
callq 0xd250
testl %eax, %eax
je 0xe29a
movq %r15, %rdi
movl $0x20, %esi
callq 0xd100
testq %rax, %rax
je 0xe2e4
cmpb $0x2d, 0x1(%rax)
je 0xe26a
cmpb $0x2d, 0x2(%rax)
jne 0xe2e4
leaq 0x10a44(%rip), %rdi     # 0x1ecb5
xorl %eax, %eax
callq 0x197fc
movl $0x0, 0x73f36(%rip)     # 0x821b8
movl $0x5, %eax
jmp 0xe40d
movl $0x7, %ebx
leaq 0x10913(%rip), %rdi     # 0x1ebab
jmp 0xe2a6
movl $0x8, %ebx
leaq 0x109d8(%rip), %rdi     # 0x1ec7e
xorl %eax, %eax
callq 0x197fc
movl $0x0, 0x73f01(%rip)     # 0x821b8
movl %ebx, 0x7a003(%rip)     # 0x882c0
jmp 0xe810
leaq 0x10843(%rip), %rdi     # 0x1eb0c
xorl %eax, %eax
callq 0x197fc
movl $0x0, 0x73ede(%rip)     # 0x821b8
movl $0x6, %eax
jmp 0xe40d
movq %r15, %rdi
callq 0xeb92
testl %eax, %eax
je 0xe31b
cmpl $0x9, %eax
jb 0xe388
leaq 0x109e9(%rip), %rdi     # 0x1ece9
xorl %eax, %eax
callq 0x197fc
movl $0x0, 0x73ea7(%rip)     # 0x821b8
movl $0x2, %eax
jmp 0xe40d
movq %r15, %rdi
leaq 0x10a45(%rip), %rsi     # 0x1ed6a
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
leaq 0x20(%rsp), %r8
leaq 0x2c(%rsp), %r9
xorl %eax, %eax
leaq 0x44(%rsp), %r10
pushq %r10
leaq 0x17(%rsp), %r10
pushq %r10
callq 0xd240
addq $0x10, %rsp
cmpl $0x6, %eax
jne 0xe39d
movzbl 0xf(%rsp), %eax
cmpl $0x54, %eax
je 0xe366
cmpl $0x52, %eax
jne 0xe39d
leaq 0x10a12(%rip), %rdi     # 0x1ed7f
xorl %eax, %eax
callq 0x197fc
movl $0x1, 0x73e3a(%rip)     # 0x821b8
movl $0x9, %eax
jmp 0xe40d
leaq 0x1098c(%rip), %rdi     # 0x1ed1b
xorl %eax, %eax
callq 0x197fc
movl $0x3, %eax
jmp 0xe40d
movq %r15, %rdi
leaq 0x10a0b(%rip), %rsi     # 0x1edb2
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
leaq 0x20(%rsp), %r8
leaq 0x2c(%rsp), %r9
xorl %eax, %eax
callq 0xd240
cmpl $0x4, %eax
je 0xe3ec
movq %r15, %rdi
leaq 0x109ef(%rip), %rsi     # 0x1edc0
leaq 0x28(%rsp), %rdx
leaq 0x24(%rsp), %rcx
leaq 0x20(%rsp), %r8
xorl %eax, %eax
callq 0xd240
cmpl $0x3, %eax
jne 0xe40b
leaq 0x109d8(%rip), %rdi     # 0x1edcb
xorl %eax, %eax
callq 0x197fc
movl $0x0, 0x73db4(%rip)     # 0x821b8
movl $0xa, %eax
jmp 0xe40d
xorl %eax, %eax
movl %eax, 0x79ead(%rip)     # 0x882c0
leal -0x1(%rax), %ecx
cmpl $0x9, %ecx
ja 0xe9fd
leaq 0xdf72(%rip), %rdx      # 0x1c398
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movzbl 0x79e92(%rip), %edx     # 0x882c8
xorl %ecx, %ecx
cmpl $0x8, %eax
sete %cl
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b172
jmp 0xe55c
movzbl 0x79e71(%rip), %edx     # 0x882c8
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1adf6
jmp 0xe55c
movzbl 0x79e58(%rip), %edx     # 0x882c8
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b7ad
jmp 0xe55c
movq %r15, %rdi
callq 0xeb92
movb 0x79e38(%rip), %cl      # 0x882c8
cmpl $0x8, %eax
jbe 0xe4e8
movzbl %cl, %edx
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1abef
movl %eax, %ebp
testl %eax, %eax
js 0xe562
movl $0x2, 0x79e07(%rip)     # 0x882c0
movl $0x0, 0x73cf5(%rip)     # 0x821b8
leaq 0x10219(%rip), %rdi     # 0x1e6e3
movl %ebp, %esi
jmp 0xe5ed
movq %r15, %rdi
callq 0xeb92
movb 0x79de9(%rip), %cl      # 0x882c8
cmpl $0x8, %eax
ja 0xe5d2
movzbl %cl, %edx
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1aa40
movl %eax, %ebp
leaq 0x101c7(%rip), %rdi     # 0x1e6c8
jmp 0xe5eb
movzbl 0x79dbb(%rip), %edx     # 0x882c8
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1aa40
jmp 0xe55c
movzbl 0x79da5(%rip), %edx     # 0x882c8
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1abef
jmp 0xe55c
movzbl 0x79d8f(%rip), %edx     # 0x882c8
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1afeb
jmp 0xe55c
movzbl 0x79d79(%rip), %edx     # 0x882c8
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1b488
movl %eax, %ebp
testl %ebp, %ebp
je 0xe57f
leaq 0x101ac(%rip), %rdi     # 0x1e715
movl %ebp, %esi
movq %r15, %rdx
xorl %eax, %eax
callq 0x199a0
movq 0x10(%rsp), %rbp
jmp 0xe810
movl 0x73c43(%rip), %eax     # 0x821c8
testl %eax, %eax
movq 0x10(%rsp), %rbp
js 0xe59e
movzbl 0x8d(%rsp), %ecx
cmpl %ecx, %eax
jne 0xe6ef
movl 0x73c28(%rip), %eax     # 0x821cc
testl %eax, %eax
js 0xe5b8
movzbl 0x8c(%rsp), %ecx
cmpl %ecx, %eax
jne 0xe6ef
movl 0x79d16(%rip), %edi     # 0x882d4
movl 0x88(%rsp), %eax
testl %edi, %edi
jle 0xe5f9
cmpl %eax, %edi
je 0xe5fb
jmp 0xe6ef
movzbl %cl, %edx
movq %r15, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1abef
movl %eax, %ebp
leaq 0x100f8(%rip), %rdi     # 0x1e6e3
movl %eax, %esi
xorl %eax, %eax
callq 0x1990d
jmp 0xe55e
movl %eax, %edi
callq 0xd4cc
movl 0x73bb2(%rip), %ecx     # 0x821b8
cmpl $0x1, %ecx
jne 0xe622
testq %rax, %rax
jne 0xe622
movl 0x88(%rsp), %edi
callq 0xd565
movl 0x73b96(%rip), %ecx     # 0x821b8
movzbl 0x8e(%rsp), %edx
testl %ecx, %ecx
je 0xe6ce
testq %rax, %rax
je 0xe6ce
cmpl $0x1, 0x10(%rax)
jne 0xe6ce
cmpb $0x8, %dl
ja 0xe6ce
movl 0x88(%rsp), %esi
movzbl 0x8d(%rsp), %edx
leaq 0x79c9c(%rip), %rbx     # 0x88300
xorl %ebp, %ebp
cmpb $0x1, 0xf8(%rbx)
jne 0xe683
cmpl %esi, 0xf0(%rbx)
jne 0xe683
cmpl %edx, 0xf4(%rbx)
je 0xe84f
incq %rbp
addq $0x100, %rbx            # imm = 0x100
cmpq $0x40, %rbp
jne 0xe666
leaq 0x79c66(%rip), %rbx     # 0x88300
xorl %ebp, %ebp
cmpb $0x1, 0xf8(%rbx)
jne 0xe82e
incq %rbp
addq $0x100, %rbx            # imm = 0x100
cmpq $0x40, %rbp
jne 0xe69c
leaq 0x107c4(%rip), %rdi     # 0x1ee84
xorl %eax, %eax
callq 0x199a0
movq 0x10(%rsp), %rbp
jmp 0xe6ef
movzbl 0x79bf0(%rip), %ecx     # 0x882c5
movzbl 0x79beb(%rip), %r8d     # 0x882c8
leaq 0x48(%rsp), %rdi
leaq 0x8f(%rsp), %rsi
callq 0xebfa
movl 0x73ad3(%rip), %eax     # 0x821c8
testl %eax, %eax
sets %cl
movzbl 0x8d(%rsp), %r9d
cmpl %r9d, %eax
sete %al
orb %cl, %al
cmpb $0x1, %al
jne 0xe810
movl 0x73ab3(%rip), %eax     # 0x821cc
testl %eax, %eax
sets %cl
movzbl 0x8c(%rsp), %r10d
cmpl %r10d, %eax
sete %al
orb %cl, %al
cmpb $0x1, %al
jne 0xe810
movl 0x79b97(%rip), %eax     # 0x882d4
testl %eax, %eax
setle %cl
movl 0x88(%rsp), %r8d
cmpl %r8d, %eax
sete %dl
orb %cl, %dl
cmpb $0x1, %dl
jne 0xe810
cmpb $0x0, 0x79b66(%rip)     # 0x882c8
je 0xe76d
movq 0x26885(%rip), %rcx     # 0x34ff0
jmp 0xe774
movq 0x2684c(%rip), %rcx     # 0x34fc0
movq (%rcx), %r12
cmpb $0x1, 0x79b46(%rip)     # 0x882c4
jne 0xe810
cmpl %r8d, %eax
sete %cl
testl %eax, %eax
sete %dl
orb %cl, %dl
cmpb $0x1, %dl
jne 0xe810
testl %eax, %eax
cmovnel %eax, %r8d
movzbl 0x84(%rsp), %ecx
movzbl 0x8e(%rsp), %r11d
movq %r12, %rdi
leaq 0x10657(%rip), %rsi     # 0x1ee0e
leaq 0x48(%rsp), %rdx
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0xd1e0
addq $0x10, %rsp
cmpb $0x0, 0x8e(%rsp)
leaq 0x10646(%rip), %r14     # 0x1ee20
je 0xe803
xorl %ebx, %ebx
movzbl 0x8f(%rsp,%rbx), %edx
movq %r12, %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0xd1e0
incq %rbx
movzbl 0x8e(%rsp), %eax
cmpq %rax, %rbx
jb 0xe7de
movl $0xa, %edi
movq %r12, %rsi
callq 0xd1b0
movq %r15, %rdi
movl $0x7cf, %esi            # imm = 0x7CF
movq %rbp, %rdx
callq 0xd1a0
testq %rax, %rax
jne 0xe121
jmp 0xe9cd
movb $0x1, 0xf8(%rbx)
movl %edx, 0xf4(%rbx)
movl %esi, 0xf0(%rbx)
movl $0x0, 0xe8(%rbx)
xorl %eax, %eax
jmp 0xe855
movl 0xe8(%rbx), %eax
movzbl 0x8f(%rsp), %ecx
xorl %r8d, %r8d
movl %ecx, 0x18(%rsp)
movl %ecx, %r14d
andl $0x1f, %r14d
sete %r9b
movl %r14d, %ecx
notl %ecx
leal (%rcx,%r14,8), %ecx
cmovel %r14d, %ecx
movq %rcx, 0x30(%rsp)
movl $0x1, %edi
movl %r14d, %ecx
shll %cl, %edi
movq %rdi, 0x38(%rsp)
btl %r14d, %eax
jae 0xe9bf
leaq 0x1060f(%rip), %rdi     # 0x1eeb0
xorl %eax, %eax
movb %r9b, 0xe(%rsp)
callq 0x199a0
movb 0xe(%rsp), %r9b
xorl %r8d, %r8d
movl $0x0, 0xe8(%rbx)
testl %r14d, %r14d
jne 0xe8f1
movzbl 0x90(%rsp), %ecx
movq %rcx, (%rbx)
leal (%rcx,%rcx,8), %eax
leal (%rcx,%rax,4), %eax
shrl $0x8, %eax
subb %al, %cl
shrb %cl
addb %al, %cl
shrb $0x2, %cl
movl $0x2, %eax
shlq %cl, %rax
decl %eax
movl %eax, 0xec(%rbx)
andl $-0x20, 0x18(%rsp)
movb %r9b, %r8b
xorq $0x7, %r8
testl %r14d, %r14d
movq 0x30(%rsp), %rax
leaq 0x8(%rbx,%rax), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x91(%rsp), %rax
cmoveq %rax, %rsi
movq %r8, %rdx
callq 0xd200
movq 0x38(%rsp), %r11
orl 0xe8(%rbx), %r11d
movl %r11d, 0xe8(%rbx)
movl 0x88(%rsp), %edx
movq (%rbx), %rcx
movl 0xec(%rbx), %r10d
subq $0x8, %rsp
leaq 0x10592(%rip), %rdi     # 0x1eee7
movq %rbp, %rsi
movl %r14d, %r8d
movl 0x20(%rsp), %r9d
xorl %eax, %eax
pushq %r10
pushq %r11
pushq 0x48(%rsp)
callq 0x1990d
addq $0x20, %rsp
movl 0xe8(%rbx), %eax
cmpl 0xec(%rbx), %eax
movq 0x10(%rsp), %rbp
jne 0xe6ef
leaq 0x8(%rbx), %rsi
movl (%rbx), %edx
movzbl 0x7992e(%rip), %ecx     # 0x882c5
movzbl 0x79929(%rip), %r8d     # 0x882c8
leaq 0x48(%rsp), %rdi
callq 0xebfa
movb $0x0, 0xf8(%rbx)
movl $0x0, 0xe8(%rbx)
jmp 0xe6ef
orl %r14d, %eax
jne 0xe8f1
jmp 0xe8c4
xorl %eax, %eax
addq $0x948, %rsp            # imm = 0x948
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xf8c5(%rip), %rdi      # 0x1e2ad
jmp 0xe9f1
leaq 0xf8d2(%rip), %rdi      # 0x1e2c3
callq 0xd0c0
xorl %edi, %edi
callq 0xd310
leaq 0xfcf9(%rip), %rdi      # 0x1e6fd
xorl %eax, %eax
callq 0x199a0
movl $0x1, %edi
callq 0xd310
movq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0xea30
movq (%r12), %rsi
movq 0x18(%rsp), %rdi
callq 0xea30