// File: /workspace/github_c_makefile_star2_O1/canboat[P]canboat/n2kd/gps_ais.c
// Function: nmea0183AIVDM
extern void nmea0183AIVDM(StringBuffer *msg183, int source, const char *msg)
{
  long int msgid, pgn;
  char     jstr[10];
  char     channel      = 'A';
  int      src          = 'I' - 'A'; // Should give source AI in sentence, i.e. Mobile AIS station
  char    *aisSource[2] = {"VDM", "VDO"};
  enum
  {
    VDM,
    VDO
  };
  int       aisTalkerId = VDM;
  aisVector aisPayload;
  aisPayload.pos = 0;

  if (!getJSONValue(msg, "pgn", jstr, sizeof(jstr)))
    return;
  pgn = atoi(jstr);

  // Source information
  switch (aisEnum(msg, "AIS Transceiver information"))
  {
    case 0: // Default
      channel     = 'A';
      aisTalkerId = VDM;
      break;
    case 1:
      channel     = 'B';
      aisTalkerId = VDM;
      break;
    case 2:
      channel     = 'A';
      aisTalkerId = VDO;
      break;
    case 3:
      channel     = 'B';
      aisTalkerId = VDO;
      break;
    case 4:              // Own information, how to code?
      aisTalkerId = VDO; // It is at least from own vessel
      break;
    default: // Last case supposedly not used
      return;
  }

  // AIS payload bit vector
  msgid = aisEnum(msg, "Message ID");
  switch (msgid)
  {
    case 1:
    case 2:
    case 3: // PGN 129038 "Class A position report"
      // Common navigation block
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(aisEnum(msg, "Nav Status"), 4, &aisPayload);
      addAisInt(aisFloat(msg, "Rate of Turn"), 8, &aisPayload);
      addAisInt(aisFloat(msg, "SOG"), 10, &aisPayload);
      addAisInt(aisEnum(msg, "Position Accuracy"), 1, &aisPayload);
      addAisInt(aisFloat(msg, "Longitude"), 28, &aisPayload);
      addAisInt(aisFloat(msg, "Latitude"), 27, &aisPayload);
      addAisInt(aisFloat(msg, "COG"), 12, &aisPayload);
      addAisInt(aisFloat(msg, "Heading"), 9, &aisPayload);
      addAisInt(aisEnum(msg, "Time Stamp"), 6, &aisPayload);
      addAisInt(aisEnum(msg, "Special Maneuver Indicator"), 2, &aisPayload);
      addAisInt(0, 3, &aisPayload); /* Spare */
      addAisInt(aisEnum(msg, "RAIM"), 1, &aisPayload);
      addAisInt(aisInteger(msg, "Communication State"), 19, &aisPayload);
      break;
    case 4: // PGN 129793 "AIS UTC and Date Report"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(aisDate(msg), 23, &aisPayload);
      addAisInt(aisTime(msg), 17, &aisPayload);
      addAisInt(aisEnum(msg, "Position Accuracy"), 1, &aisPayload);
      addAisInt(aisFloat(msg, "Longitude"), 28, &aisPayload);
      addAisInt(aisFloat(msg, "Latitude"), 27, &aisPayload);
      addAisInt(aisEnum(msg, "GNSS type"), 4, &aisPayload);
      addAisInt(0, 10, &aisPayload); // Spare
      addAisInt(aisEnum(msg, "RAIM"), 1, &aisPayload);
      addAisInt(aisInteger(msg, "Communication State"), 19, &aisPayload);
      break;
    case 5: // PGN 129794 "AIS Class A Static and Voyage Related Data"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(aisEnum(msg, "AIS version indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "IMO number"), 30, &aisPayload);
      addAisString(aisString(msg, "Callsign"), 42, &aisPayload);
      addAisString(aisString(msg, "Name"), 120, &aisPayload);
      addAisInt(aisEnum(msg, "Type of ship"), 8, &aisPayload);
      addAisInt(aisShipDimensions(msg, true), 30, &aisPayload);
      addAisInt(aisEnum(msg, "GNSS type"), 4, &aisPayload);
      addAisInt(aisETA(msg), 20, &aisPayload);
      addAisInt(aisFloat(msg, "Draft"), 8, &aisPayload);
      addAisString(aisString(msg, "Destination"), 120, &aisPayload);
      addAisInt(aisEnum(msg, "DTE"), 1, &aisPayload);
      addAisInt(0, 1, &aisPayload); // Spare
      break;
    case 9: // PGN 129798 "AIS SAR Aircraft Position Report"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(aisFloat(msg, "Altitude"), 12, &aisPayload);
      addAisInt((aisFloat(msg, "SOG") + 5) / 10, 10, &aisPayload);
      addAisInt(aisEnum(msg, "Position Accuracy"), 1, &aisPayload);
      addAisInt(aisFloat(msg, "Longitude"), 28, &aisPayload);
      addAisInt(aisFloat(msg, "Latitude"), 27, &aisPayload);
      addAisInt(aisFloat(msg, "COG"), 12, &aisPayload);
      addAisInt(aisInteger(msg, "Time Stamp"), 6, &aisPayload);
      addAisInt(0, 8, &aisPayload); /* Regional Reserved */
      addAisInt(aisEnum(msg, "DTE"), 1, &aisPayload);
      addAisInt(0, 3, &aisPayload);                        // Spare
      addAisInt(aisEnum(msg, "AIS mode"), 1, &aisPayload); // Missing in PGN?
      addAisInt(aisEnum(msg, "RAIM"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "AIS communication state"), 1, &aisPayload); // Not in PGN?, defaults to 0
      addAisInt(aisInteger(msg, "Communication State"), 19, &aisPayload);
      break;
    case 12: // PGN 129801 "AIS Addressed Safety Related Message"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "Source ID"), 30, &aisPayload);
      addAisInt(aisInteger(msg, "Sequence Number"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "Destination ID"), 30, &aisPayload);
      addAisInt(aisInteger(msg, "Retransmit flag"), 1, &aisPayload);
      addAisInt(0, 1, &aisPayload); // Spare
      addAisLongString(msg, "Safety Related Text", 156, true, &aisPayload);
      break;
    case 14: // PGN 129802 "AIS Safety Related Broadcast Message"
      /* Note: The AIS sentence transmitts up to 161 characters of text in the message
         The incomplete PGN in pgns.json has a text field of 288 bits, corresponding
         to a maximum of 36 characters.
      */
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "Source ID"), 30, &aisPayload);
      addAisInt(0, 2, &aisPayload); // Spare
      addAisLongString(msg, "Safety Related Text", 161, true, &aisPayload);
      break;
    case 18: // PGN 129039 "AIS Class B Position Report"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(0, 8, &aisPayload); /* Regional Reserved */
      addAisInt(aisFloat(msg, "SOG"), 10, &aisPayload);
      addAisInt(aisEnum(msg, "Position Accuracy"), 1, &aisPayload);
      addAisInt(aisFloat(msg, "Longitude"), 28, &aisPayload);
      addAisInt(aisFloat(msg, "Latitude"), 27, &aisPayload);
      addAisInt(aisFloat(msg, "COG"), 12, &aisPayload);
      addAisInt(aisFloat(msg, "Heading"), 9, &aisPayload);
      addAisInt(aisEnum(msg, "Time Stamp"), 6, &aisPayload);
      addAisInt(0, 2, &aisPayload); /* Regional Reserved */
      addAisInt(aisEnum(msg, "Unit type"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "Integrated Display"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "DSC"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "Band"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "Can handle Msg 22"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "AIS mode"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "RAIM"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "AIS communication state"), 1, &aisPayload);
      /* If "AIS communication state" is CS (1), then the following
         "Communication State" shall have its default value. Provided the
         PGN is properly encoded this should work even with no test on
         "AIS communication state" */
      addAisInt(aisInteger(msg, "Communication State"), 19, &aisPayload);
      break;
    case 19: // PGN 129040 "AIS Class B Extended Position Report"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(0, 8, &aisPayload); /* Regional Reserved */
      addAisInt(aisFloat(msg, "SOG"), 10, &aisPayload);
      addAisInt(aisEnum(msg, "Position Accuracy"), 1, &aisPayload);
      addAisInt(aisFloat(msg, "Longitude"), 28, &aisPayload);
      addAisInt(aisFloat(msg, "Latitude"), 27, &aisPayload);
      addAisInt(aisFloat(msg, "COG"), 12, &aisPayload);
      addAisInt(aisFloat(msg, "True Heading"), 9, &aisPayload);
      addAisInt(aisEnum(msg, "Time Stamp"), 6, &aisPayload);
      addAisInt(0, 4, &aisPayload); /* Regional Reserved */
      addAisString(aisString(msg, "Name"), 120, &aisPayload);
      addAisInt(aisEnum(msg, "Type of ship"), 8, &aisPayload);
      addAisInt(aisShipDimensions(msg, true), 30, &aisPayload);
      addAisInt(aisEnum(msg, "GNSS type"), 4, &aisPayload);
      addAisInt(aisEnum(msg, "RAIM"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "DTE"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "AIS mode"), 1, &aisPayload);
      addAisInt(0, 4, &aisPayload); // Spare
      break;
    case 21: // PGN 129041 "AIS Aids to Navigation (AtoN) Report"
    {
      int   len;
      char *ename;

      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      addAisInt(aisEnum(msg, "AtoN Type"), 5, &aisPayload);
      addAisString(aisAtoNName(msg, false, &len), 120, &aisPayload);
      addAisInt(aisEnum(msg, "Position Accuracy"), 1, &aisPayload);
      addAisInt(aisFloat(msg, "Longitude"), 28, &aisPayload);
      addAisInt(aisFloat(msg, "Latitude"), 27, &aisPayload);
      addAisInt(aisShipDimensions(msg, false), 30, &aisPayload);
      addAisInt(aisEnum(msg, "GNSS type"), 4, &aisPayload);
      addAisInt(aisEnum(msg, "Time Stamp"), 6, &aisPayload);
      addAisInt(aisEnum(msg, "Off Position Indicator"), 1, &aisPayload);
      addAisInt(0, 8, &aisPayload); /* Regional Reserved */
      addAisInt(aisEnum(msg, "RAIM"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "Virtual AtoN Flag"), 1, &aisPayload);
      addAisInt(aisEnum(msg, "Assigned Mode Flag"), 1, &aisPayload);
      addAisInt(0, 1, &aisPayload); // Spare
      ename = aisAtoNName(msg, true, &len);
      addAisString(ename, len, &aisPayload);
    }
    break;
    case 24: // PGN 129809 "AIS Class B "CS" Static Data Report, Part A"
             // PGN 129810 "AIS Class B "CS" Static Data Report, Part B"
      addAisInt(msgid, 6, &aisPayload);
      addAisInt(aisEnum(msg, "Repeat Indicator"), 2, &aisPayload);
      addAisInt(aisInteger(msg, "User ID"), 30, &aisPayload);
      // Part A or B?
      switch (pgn)
      {
        case 129809:                    // Part A
          addAisInt(0, 2, &aisPayload); // Part number
          addAisString(aisString(msg, "Name"), 120, &aisPayload);
          addAisInt(0, 8, &aisPayload); // Spare
          break;
        case 129810:                    // Part B
          addAisInt(1, 2, &aisPayload); // Part number
          addAisInt(aisEnum(msg, "Type of ship"), 8, &aisPayload);
          addAisString(aisString(msg, "Vendor ID"), 42, &aisPayload);
          addAisString(aisString(msg, "Callsign"), 42, &aisPayload);
          addAisInt(aisShipDimensions(msg, true), 30, &aisPayload);
          addAisInt(aisInteger(msg, "Mothership User ID"), 30, &aisPayload);
          addAisInt(0, 6, &aisPayload); // Spare
          break;
        default:
          return;
      }
      break;
    default:
      return;
  }

  // Partition, encode and send nmea0183 ais sentences
  aisToNmea0183(msg183, 256 + src, aisSource[aisTalkerId], channel, &aisPayload);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x158, %rsp            # imm = 0x158
movq %rdx, %r14
movq %rdi, 0x18(%rsp)
movl $0x0, 0x154(%rsp)
leaq 0x4cc1(%rip), %rsi      # 0x9a84
leaq 0x66(%rsp), %rdx
movl $0xa, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
je 0x6065
leaq 0x66(%rsp), %rdi
callq 0x22f0
movl %eax, %ebp
leaq 0x5461(%rip), %rsi      # 0xa251
movq %r14, %rdi
callq 0x616f
cmpl $0x4, %eax
ja 0x6065
movl %eax, %eax
leaq 0x52f6(%rip), %rcx      # 0xa100
movq (%rcx,%rax,8), %r13
leaq 0x5313(%rip), %rcx      # 0xa128
movl (%rcx,%rax,4), %eax
movq %rax, 0x10(%rsp)
leaq 0x5449(%rip), %rsi      # 0xa26d
movq %r14, %rdi
callq 0x616f
leal -0x1(%rax), %ecx
cmpl $0x17, %ecx
ja 0x6065
leaq 0x5261(%rip), %rdx      # 0xa0a0
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movslq %eax, %rdi
leaq 0x70(%rsp), %r15
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5414(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x55dd(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x53e7(%rip), %rsi      # 0xa289
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x4, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x53d3(%rip), %rsi      # 0xa294
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x525c(%rip), %rsi      # 0xa13c
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xa, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x53a2(%rip), %rsi      # 0xa2a1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5284(%rip), %rsi      # 0xa1a2
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1c, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x525c(%rip), %rsi      # 0xa199
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1b, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x51e4(%rip), %rsi      # 0xa140
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xc, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5482(%rip), %rsi      # 0xa3fd
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x9, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5319(%rip), %rsi      # 0xa2b3
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5305(%rip), %rsi      # 0xa2be
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x3, %esi
jmp 0x57c7
leaq 0x70(%rsp), %r15
movl $0x15, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x527d(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5446(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x53cc(%rip), %rsi      # 0xa405
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x5, %esi
movq %r15, %rdx
callq 0x61bd
xorl %eax, %eax
movq %rax, 0x20a5341(%rip)   # 0x20aa39b
movq %rax, 0x20a5333(%rip)   # 0x20aa394
leaq 0x20a5318(%rip), %rdx   # 0x20aa380
leaq 0x51d0(%rip), %rsi      # 0xa23f
movl $0x23, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
jne 0x5087
movb $0x0, 0x20a52f9(%rip)   # 0x20aa380
xorl %eax, %eax
movb %al, 0x20a5313(%rip)    # 0x20aa3a2
leaq 0x20a52ea(%rip), %rdi   # 0x20aa380
movb %al, 0x20a52f8(%rip)    # 0x20aa394
leaq 0x70(%rsp), %r15
movl $0x78, %esi
movq %r15, %rdx
callq 0x64d1
leaq 0x51ec(%rip), %rsi      # 0xa2a1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x50ce(%rip), %rsi      # 0xa1a2
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1c, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x50a6(%rip), %rsi      # 0xa199
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1b, %esi
movq %r15, %rdx
callq 0x61bd
movq %r14, %rdi
xorl %esi, %esi
callq 0x65c5
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x51c6(%rip), %rsi      # 0xa2f2
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x4, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5168(%rip), %rsi      # 0xa2b3
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x52a5(%rip), %rsi      # 0xa40f
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5141(%rip), %rsi      # 0xa2d9
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x526f(%rip), %rsi      # 0xa426
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5262(%rip), %rsi      # 0xa438
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x20(%rsp), %r12
movq %r14, %rdi
movl $0x1, %esi
movq %r12, %rdx
callq 0x4d00
movl (%r12), %esi
movq %rax, %rdi
movq %r15, %rdx
callq 0x64d1
jmp 0x5e95
leaq 0x70(%rsp), %r15
movl $0x9, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5034(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x51fd(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x50c7(%rip), %rsi      # 0xa349
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xc, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4e9b(%rip), %rsi      # 0xa13c
movq %r14, %rdi
callq 0x632c
addq $0x5, %rax
movabsq $0x6666666666666667, %rcx # imm = 0x6666666666666667
imulq %rcx
movq %rdx, %rdi
shrq $0x3f, %rdi
sarq $0x2, %rdx
addq %rdx, %rdi
movl $0xa, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4fc5(%rip), %rsi      # 0xa2a1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4ea7(%rip), %rsi      # 0xa1a2
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1c, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4e7f(%rip), %rsi      # 0xa199
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1b, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4e07(%rip), %rsi      # 0xa140
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xc, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4f5b(%rip), %rsi      # 0xa2b3
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4fbf(%rip), %rsi      # 0xa345
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x3, %esi
jmp 0x5e11
leaq 0x70(%rsp), %r15
movl $0x18, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4eb0(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x5079(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
cmpl $0x1fb12, %ebp          # imm = 0x1FB12
je 0x6077
cmpl $0x1fb11, %ebp          # imm = 0x1FB11
jne 0x6065
leaq 0x70(%rsp), %rdx
xorl %edi, %edi
movl $0x2, %esi
callq 0x61bd
leaq 0x4e15(%rip), %rsi      # 0xa244
leaq 0x20a4f7a(%rip), %rdx   # 0x20aa3b0
movl $0x15, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
jne 0x544e
movb $0x0, 0x20a4f62(%rip)   # 0x20aa3b0
leaq 0x20a4f5b(%rip), %rdi   # 0x20aa3b0
leaq 0x70(%rsp), %r14
movl $0x78, %esi
movq %r14, %rdx
callq 0x64d1
xorl %edi, %edi
movl $0x8, %esi
movq %r14, %rdx
jmp 0x5e90
leaq 0x70(%rsp), %r15
movl $0xc, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4de4(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4ec0(%rip), %rsi      # 0xa373
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4eab(%rip), %rsi      # 0xa37d
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4e9c(%rip), %rsi      # 0xa38d
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4e8c(%rip), %rsi      # 0xa39c
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
movq %r14, %rdi
movl $0x9c, %esi
jmp 0x55ad
leaq 0x70(%rsp), %r15
movl $0xe, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4d19(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4df5(%rip), %rsi      # 0xa373
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
movq %r14, %rdi
movl $0xa1, %esi
movq %r15, %rdx
callq 0x66f7
jmp 0x5e95
leaq 0x70(%rsp), %r15
movl $0x4, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4ca0(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4e69(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
xorl %eax, %eax
movl %eax, 0xc(%rsp)
movl %eax, 0x8(%rsp)
movl %eax, 0x4(%rsp)
leaq 0x4fb2(%rip), %rsi      # 0xa5d6
leaq 0x20(%rsp), %rdx
movl $0xb, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
je 0x568e
leaq 0x4fa3(%rip), %rsi      # 0xa5e4
leaq 0x20(%rsp), %rdi
leaq 0xc(%rsp), %r15
leaq 0x8(%rsp), %rcx
leaq 0x4(%rsp), %r8
movq %r15, %rdx
xorl %eax, %eax
callq 0x2240
cmpl $0x2710, (%r15)         # imm = 0x2710
jb 0x5670
movl $0x0, 0xc(%rsp)
cmpl $0xd, 0x8(%rsp)
jb 0x567f
movl $0x0, 0x8(%rsp)
cmpl $0x20, 0x4(%rsp)
jb 0x568e
movl $0x0, 0x4(%rsp)
movl 0xc(%rsp), %eax
shll $0x9, %eax
movl 0x8(%rsp), %edi
shll $0x5, %edi
addl %eax, %edi
addl 0x4(%rsp), %edi
leaq 0x70(%rsp), %rdx
movl $0x17, %esi
callq 0x61bd
leaq 0x4f39(%rip), %rsi      # 0xa5f1
leaq 0x20(%rsp), %rdx
movl $0x9, %ecx
movq %r14, %rdi
callq 0x7c81
movl $0x18f3c, %edi          # imm = 0x18F3C
testb %al, %al
je 0x5732
movzbl 0x20(%rsp), %eax
leal (%rax,%rax,4), %eax
movzbl 0x21(%rsp), %ecx
leal (%rcx,%rax,2), %eax
movl $0xfffffdf0, %ecx       # imm = 0xFFFFFDF0
addl %ecx, %eax
movzbl 0x23(%rsp), %edx
leal (%rdx,%rdx,4), %edx
movzbl 0x24(%rsp), %esi
leal (%rsi,%rdx,2), %edi
addl %ecx, %edi
movzbl 0x26(%rsp), %edx
leal (%rdx,%rdx,4), %edx
movzbl 0x27(%rsp), %esi
leal (%rsi,%rdx,2), %edx
addl %ecx, %edx
cmpl $0x18, %eax
movl $0x18, %ecx
cmovbl %eax, %ecx
movl $0x3c, %eax
cmpl %eax, %edi
cmovael %eax, %edi
cmpl %eax, %edx
cmovael %eax, %edx
shll $0xc, %ecx
shll $0x6, %edi
orl %ecx, %edi
orl %edx, %edi
leaq 0x70(%rsp), %r15
movl $0x11, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4b56(%rip), %rsi      # 0xa2a1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4a38(%rip), %rsi      # 0xa1a2
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1c, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4a10(%rip), %rsi      # 0xa199
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1b, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4b4a(%rip), %rsi      # 0xa2f2
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x4, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0xa, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4b03(%rip), %rsi      # 0xa2d9
jmp 0x5e5e
leaq 0x70(%rsp), %r15
movl $0x5, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4a7f(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4c48(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4ac5(%rip), %rsi      # 0xa2fc
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4abc(%rip), %rsi      # 0xa312
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4aa8(%rip), %rsi      # 0xa31d
leaq 0x20a4b34(%rip), %rdx   # 0x20aa3b0
movl $0x15, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
jne 0x5894
movb $0x0, 0x20a4b1c(%rip)   # 0x20aa3b0
leaq 0x20a4b15(%rip), %r15   # 0x20aa3b0
leaq 0x70(%rsp), %rdx
movq %r15, %rdi
movl $0x2a, %esi
callq 0x64d1
leaq 0x4990(%rip), %rsi      # 0xa244
movl $0x15, %ecx
movq %r14, %rdi
movq %r15, %rdx
callq 0x7c81
testb %al, %al
jne 0x58cf
movb $0x0, 0x20a4ae1(%rip)   # 0x20aa3b0
leaq 0x20a4ada(%rip), %r15   # 0x20aa3b0
leaq 0x70(%rsp), %r12
movq %r15, %rdi
movl $0x78, %esi
movq %r12, %rdx
callq 0x64d1
leaq 0x4a34(%rip), %rsi      # 0xa326
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x8, %esi
movq %r12, %rdx
callq 0x61bd
movq %r14, %rdi
movl $0x1, %esi
callq 0x65c5
movq %rax, %rdi
movl $0x1e, %esi
movq %r12, %rdx
callq 0x61bd
leaq 0x49c4(%rip), %rsi      # 0xa2f2
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x4, %esi
movq %r12, %rdx
callq 0x61bd
movq %r14, %rdi
callq 0x4c16
movq %rax, %rdi
movl $0x14, %esi
movq %r12, %rdx
callq 0x61bd
leaq 0x49ce(%rip), %rsi      # 0xa333
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x8, %esi
movq %r12, %rdx
callq 0x61bd
leaq 0x49b5(%rip), %rsi      # 0xa339
movl $0x15, %ecx
movq %r14, %rdi
movq %r15, %rdx
callq 0x7c81
testb %al, %al
jne 0x599f
movb $0x0, 0x20a4a11(%rip)   # 0x20aa3b0
leaq 0x20a4a0a(%rip), %rdi   # 0x20aa3b0
leaq 0x70(%rsp), %r15
movl $0x78, %esi
movq %r15, %rdx
callq 0x64d1
leaq 0x4986(%rip), %rsi      # 0xa345
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x1, %esi
jmp 0x5e8d
leaq 0x70(%rsp), %r15
movl $0x13, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4877(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4a40(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x46ee(%rip), %rsi      # 0xa13c
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xa, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4834(%rip), %rsi      # 0xa2a1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4716(%rip), %rsi      # 0xa1a2
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1c, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x46ee(%rip), %rsi      # 0xa199
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1b, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4676(%rip), %rsi      # 0xa140
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xc, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x490f(%rip), %rsi      # 0xa3f8
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x9, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x47ab(%rip), %rsi      # 0xa2b3
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x4, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x470e(%rip), %rsi      # 0xa244
leaq 0x20a4873(%rip), %rdx   # 0x20aa3b0
movl $0x15, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
jne 0x5b55
movb $0x0, 0x20a485b(%rip)   # 0x20aa3b0
leaq 0x20a4854(%rip), %rdi   # 0x20aa3b0
leaq 0x70(%rsp), %r15
movl $0x78, %esi
movq %r15, %rdx
callq 0x64d1
leaq 0x47b1(%rip), %rsi      # 0xa326
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
movq %r14, %rdi
movl $0x1, %esi
callq 0x65c5
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4741(%rip), %rsi      # 0xa2f2
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x4, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4709(%rip), %rsi      # 0xa2d9
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4756(%rip), %rsi      # 0xa345
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4744(%rip), %rsi      # 0xa352
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x4, %esi
jmp 0x5e8d
leaq 0x70(%rsp), %r15
movl $0x12, %edi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4628(%rip), %rsi      # 0xa278
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x47f1(%rip), %rsi      # 0xa460
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x449f(%rip), %rsi      # 0xa13c
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xa, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x45e5(%rip), %rsi      # 0xa2a1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x44c7(%rip), %rsi      # 0xa1a2
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1c, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x449f(%rip), %rsi      # 0xa199
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x1b, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4427(%rip), %rsi      # 0xa140
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0xc, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x46c5(%rip), %rsi      # 0xa3fd
movq %r14, %rdi
callq 0x632c
movq %rax, %rdi
movl $0x9, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x455c(%rip), %rsi      # 0xa2b3
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x6, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x463b(%rip), %rsi      # 0xa3c0
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4626(%rip), %rsi      # 0xa3ca
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x461a(%rip), %rsi      # 0xa3dd
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x45ff(%rip), %rsi      # 0xa3e1
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x45e5(%rip), %rsi      # 0xa3e6
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4532(%rip), %rsi      # 0xa352
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x449a(%rip), %rsi      # 0xa2d9
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x44fd(%rip), %rsi      # 0xa35b
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4461(%rip), %rsi      # 0xa2de
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x13, %esi
movq %r15, %rdx
callq 0x61bd
movslq 0x154(%rsp), %rax
imulq $-0x49f49f49, %rax, %r14 # imm = 0xB60B60B7
shrq $0x20, %r14
addl %eax, %r14d
movl %r14d, %ecx
shrl $0x1f, %ecx
sarl $0x8, %r14d
addl %ecx, %r14d
imull $0xa4fa4fa5, %eax, %eax # imm = 0xA4FA4FA5
addl $0x2d82d80, %eax        # imm = 0x2D82D80
rorl $0x3, %eax
cmpl $0xb60b61, %eax         # imm = 0xB60B61
sbbl $-0x1, %r14d
cmpl $0x2, %r14d
jl 0x5f02
movzbl 0x8464(%rip), %eax      # 0xe340
movl %eax, %ecx
addl $-0x2f, %ecx
movl $0xcccccccd, %edx       # imm = 0xCCCCCCCD
imulq %rcx, %rdx
shrq $0x23, %rdx
addl %edx, %edx
leal (%rdx,%rdx,4), %ecx
negl %ecx
addl %ecx, %eax
addl $-0x2f, %eax
orb $0x30, %al
movb %al, 0x843e(%rip)       # 0xe340
testl %r14d, %r14d
jle 0x6065
leaq 0x7a3e(%rip), %rax      # 0xd950
movq (%rax,%r13,8), %r15
xorl %ebx, %ebx
movl $0x1, %r12d
leaq 0x70(%rsp), %rbp
xorl %r13d, %r13d
movl 0x154(%rsp), %edi
xorl %esi, %esi
cmpl %r13d, %edi
jl 0x5fd8
leal 0x7(%r13), %eax
testl %r13d, %r13d
cmovnsl %r13d, %eax
movl %edi, %edx
subl %r13d, %edx
jle 0x5fb7
movl %eax, %r8d
sarl $0x3, %r8d
andl $-0x8, %eax
movl %r13d, %ecx
subl %eax, %ecx
movb $0x6, %al
subb %dl, %al
cmpl $0x6, %edx
movzbl %al, %eax
movzbl %bl, %ebx
cmovll %eax, %ebx
movslq %r8d, %rdx
movzbl 0x70(%rsp,%rdx), %r8d
shll %cl, %r8d
shrb $0x2, %r8b
movzbl %bl, %eax
movl %eax, %r9d
subl %ecx, %r9d
cmpl $-0x3, %r9d
jg 0x5f9a
movzbl 0x1(%rdx,%rbp), %r9d
movb $0xa, %dl
subb %cl, %dl
movl %edx, %ecx
shrl %cl, %r9d
orb %r9b, %r8b
movl $0xff, %edx
movl %eax, %ecx
shll %cl, %edx
andb %r8b, %dl
subl %eax, %r13d
addl $0x6, %r13d
cmpb $0x27, %dl
ja 0x5fbb
addb $0x30, %dl
jmp 0x5fbe
xorl %edx, %edx
jmp 0x5fbe
addb $0x38, %dl
movb %dl, 0x20(%rsp,%rsi)
testb %dl, %dl
je 0x5fd8
incq %rsi
cmpq $0x3c, %rsi
jne 0x5f2f
movl $0x3c, %esi
movl %esi, %eax
movb $0x0, 0x20(%rsp,%rax)
movzbl %bl, %r10d
cmpl $0x2, %r14d
jl 0x601e
movzbl 0x834f(%rip), %r11d     # 0xe340
movq 0x18(%rsp), %rdi
movl $0x108, %esi            # imm = 0x108
leaq 0x45fd(%rip), %rdx      # 0xa5ff
movq %r15, %rcx
movl %r14d, %r8d
movl %r12d, %r9d
xorl %eax, %eax
pushq %r10
leaq 0x28(%rsp), %r10
pushq %r10
pushq 0x20(%rsp)
pushq %r11
jmp 0x604b
subq $0x8, %rsp
movq 0x20(%rsp), %rdi
movl $0x108, %esi            # imm = 0x108
leaq 0x45e1(%rip), %rdx      # 0xa614
movq %r15, %rcx
movl %r14d, %r8d
movl %r12d, %r9d
xorl %eax, %eax
pushq %r10
leaq 0x30(%rsp), %r10
pushq %r10
pushq 0x28(%rsp)
callq 0x6798
addq $0x20, %rsp
leal 0x1(%r12), %eax
cmpl %r14d, %r12d
movl %eax, %r12d
jne 0x5f26
addq $0x158, %rsp            # imm = 0x158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x70(%rsp), %r15
movl $0x1, %edi
movl $0x2, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4291(%rip), %rsi      # 0xa326
movq %r14, %rdi
callq 0x616f
movslq %eax, %rdi
movl $0x8, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x4397(%rip), %rsi      # 0xa44b
leaq 0x20a42f5(%rip), %rdx   # 0x20aa3b0
movl $0x15, %ecx
movq %r14, %rdi
callq 0x7c81
testb %al, %al
jne 0x60d3
movb $0x0, 0x20a42dd(%rip)   # 0x20aa3b0
leaq 0x20a42d6(%rip), %r15   # 0x20aa3b0
leaq 0x70(%rsp), %rdx
movq %r15, %rdi
movl $0x2a, %esi
callq 0x64d1
leaq 0x422a(%rip), %rsi      # 0xa31d
movl $0x15, %ecx
movq %r14, %rdi
movq %r15, %rdx
callq 0x7c81
testb %al, %al
jne 0x610e
movb $0x0, 0x20a42a2(%rip)   # 0x20aa3b0
leaq 0x20a429b(%rip), %rdi   # 0x20aa3b0
leaq 0x70(%rsp), %r15
movl $0x2a, %esi
movq %r15, %rdx
callq 0x64d1
movq %r14, %rdi
movl $0x1, %esi
callq 0x65c5
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
leaq 0x430a(%rip), %rsi      # 0xa455
movq %r14, %rdi
callq 0x625f
movq %rax, %rdi
movl $0x1e, %esi
movq %r15, %rdx
callq 0x61bd
xorl %edi, %edi
movl $0x6, %esi
jmp 0x5e8d