// File: /workspace/github_c_makefile_star2_O2/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 $0x168, %rsp            # imm = 0x168
movq %rdx, %r14
movq %rdi, 0x28(%rsp)
andl $0x0, 0x164(%rsp)
leaq 0x400e(%rip), %rsi      # 0x8a94
leaq 0x76(%rsp), %rdx
pushq $0xa
popq %r12
movq %r14, %rdi
movq %r12, %rcx
callq 0x7415
testb %al, %al
je 0x5b6f
leaq 0x76(%rsp), %rdi
callq 0x2300
movl %eax, %ebx
leaq 0x47a2(%rip), %rsi      # 0x9257
movq %r14, %rdi
callq 0x5c3a
cmpl $0x4, %eax
ja 0x5b6f
movl %eax, %eax
leaq 0x4631(%rip), %rcx      # 0x9100
movq (%rcx,%rax,8), %r13
leaq 0x464e(%rip), %rcx      # 0x9128
movl (%rcx,%rax,4), %eax
movq %rax, 0x20(%rsp)
leaq 0x478a(%rip), %rsi      # 0x9273
movq %r14, %rdi
callq 0x5c3a
leal -0x1(%rax), %ecx
cmpl $0x17, %ecx
ja 0x5b6f
leaq 0x459c(%rip), %rdx      # 0x90a0
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl %eax, %edi
pushq $0x6
popq %rbx
leaq 0x80(%rsp), %r15
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4753(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rbp
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x491c(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x4728(%rip), %rsi      # 0x928f
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x4
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x4716(%rip), %rsi      # 0x929a
movq %r14, %rdi
callq 0x5da8
pushq $0x8
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x459b(%rip), %rsi      # 0x913c
movq %r14, %rdi
callq 0x5da8
pushq $0xa
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x46e9(%rip), %rsi      # 0x92a7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x1
popq %r12
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x45c3(%rip), %rsi      # 0x91a2
movq %r14, %rdi
callq 0x5da8
pushq $0x1c
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x459d(%rip), %rsi      # 0x9199
movq %r14, %rdi
callq 0x5da8
pushq $0x1b
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x4527(%rip), %rsi      # 0x9140
movq %r14, %rdi
callq 0x5da8
pushq $0xc
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x47cd(%rip), %rsi      # 0x9403
movq %r14, %rdi
callq 0x5da8
pushq $0x9
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x4666(%rip), %rsi      # 0x92b9
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4655(%rip), %rsi      # 0x92c4
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
pushq $0x3
popq %rsi
xorl %edi, %edi
movq %r15, %rdx
callq 0x5c86
leaq 0x4647(%rip), %rsi      # 0x92df
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %r12d, %esi
jmp 0x59c5
pushq $0x15
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdx
callq 0x5c86
leaq 0x45b6(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x4781(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rbx
movq %rax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4707(%rip), %rsi      # 0x940b
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x5
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x30(%rsp), %r12
movq %r14, %rdi
xorl %esi, %esi
movq %r12, %rdx
callq 0x49c0
pushq $0x78
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5f25
leaq 0x4566(%rip), %rsi      # 0x92a7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4442(%rip), %rsi      # 0x91a2
movq %r14, %rdi
callq 0x5da8
pushq $0x1c
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x441c(%rip), %rsi      # 0x9199
movq %r14, %rdi
callq 0x5da8
pushq $0x1b
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
movq %r14, %rdi
xorl %esi, %esi
callq 0x6019
movq %rax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4547(%rip), %rsi      # 0x92f8
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x4
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x44eb(%rip), %rsi      # 0x92b9
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x6
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x462a(%rip), %rsi      # 0x9415
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
pushq $0x8
popq %rsi
xorl %edi, %edi
movq %r15, %rdx
callq 0x5c86
leaq 0x44cb(%rip), %rsi      # 0x92df
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x45fc(%rip), %rsi      # 0x942c
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x45f2(%rip), %rsi      # 0x943e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
xorl %edi, %edi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
movq %r14, %rdi
movl %ebp, %esi
movq %r12, %rdx
callq 0x49c0
movl (%r12), %esi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5f25
jmp 0x59ea
pushq $0x9
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdx
callq 0x5c86
leaq 0x43d3(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x459e(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x446a(%rip), %rsi      # 0x934f
movq %r14, %rdi
callq 0x5da8
pushq $0xc
popq %rbx
movq %rax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4238(%rip), %rsi      # 0x913c
movq %r14, %rdi
callq 0x5da8
addq $0x5, %rax
cqto
idivq %r12
pushq $0xa
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x437d(%rip), %rsi      # 0x92a7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4259(%rip), %rsi      # 0x91a2
movq %r14, %rdi
callq 0x5da8
pushq $0x1c
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x4233(%rip), %rsi      # 0x9199
movq %r14, %rdi
callq 0x5da8
pushq $0x1b
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x41bd(%rip), %rsi      # 0x9140
movq %r14, %rdi
callq 0x5da8
movq %rax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x431a(%rip), %rsi      # 0x92b9
movq %r14, %rdi
callq 0x5d17
movq %rax, %rdi
pushq $0x6
popq %rsi
movq %r15, %rdx
callq 0x5c86
pushq $0x8
popq %rsi
xorl %edi, %edi
movq %r15, %rdx
callq 0x5c86
leaq 0x4382(%rip), %rsi      # 0x934b
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
pushq $0x3
popq %rsi
xorl %edi, %edi
jmp 0x5971
pushq $0x18
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdx
callq 0x5c86
leaq 0x4279(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x4444(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
cmpl $0x1fb12, %ebx          # imm = 0x1FB12
je 0x5b81
cmpl $0x1fb11, %ebx          # imm = 0x1FB11
jne 0x5b6f
pushq $0x2
popq %rsi
leaq 0x80(%rsp), %rbx
xorl %edi, %edi
movq %rbx, %rdx
callq 0x5c86
leaq 0x41de(%rip), %rsi      # 0x924a
movq %r14, %rdi
callq 0x5ffc
leaq 0x20a4345(%rip), %rdi   # 0x20a93c0
pushq $0x78
popq %rsi
movq %rbx, %rdx
callq 0x5f25
pushq $0x8
jmp 0x5c2f
pushq $0xc
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %rbx
movq %rbx, %rdx
callq 0x5c86
leaq 0x41d4(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rbp
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x42b0(%rip), %rsi      # 0x9379
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %r15
movq %rax, %rdi
movl %r15d, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x4299(%rip), %rsi      # 0x9383
movq %r14, %rdi
callq 0x5d17
movq %rax, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x428d(%rip), %rsi      # 0x9393
movq %r14, %rdi
callq 0x5d17
movq %rax, %rdi
movl %r15d, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x427f(%rip), %rsi      # 0x93a2
movq %r14, %rdi
callq 0x5d17
pushq $0x1
popq %rbp
movq %rax, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
xorl %edi, %edi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
movq %r14, %rdi
movl $0x9c, %esi
jmp 0x51b7
pushq $0xe
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %rbx
movq %rbx, %rdx
callq 0x5c86
leaq 0x4110(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rbp
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x41ec(%rip), %rsi      # 0x9379
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x5c86
xorl %edi, %edi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
movq %r14, %rdi
movl $0xa1, %esi
movq %rbx, %rdx
callq 0x611e
jmp 0x59ea
pushq $0x4
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %rbx
movq %rbx, %rdx
callq 0x5c86
leaq 0x409d(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rsi
movq %rbx, %rdx
callq 0x5c86
leaq 0x4268(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x5c86
andl $0x0, 0x14(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0xc(%rsp)
leaq 0x43b2(%rip), %rsi      # 0x95dc
leaq 0x30(%rsp), %rdx
pushq $0xb
popq %rcx
movq %r14, %rdi
callq 0x7415
xorl %ebx, %ebx
testb %al, %al
je 0x52a1
leaq 0x43a3(%rip), %rsi      # 0x95ea
leaq 0x30(%rsp), %rdi
leaq 0x14(%rsp), %r15
leaq 0x10(%rsp), %r12
movq %r13, %rbp
leaq 0xc(%rsp), %r13
movq %r15, %rdx
movq %r12, %rcx
movq %r13, %r8
xorl %eax, %eax
callq 0x2240
movl (%r15), %eax
movl %eax, %ecx
shll $0x9, %ecx
movl (%r12), %edx
movl %edx, %esi
shll $0x5, %esi
movl (%r13), %edi
movq %rbp, %r13
cmpl $0x20, %edi
cmovael %ebx, %edi
cmpl $0x2710, %eax           # imm = 0x2710
cmovael %ebx, %ecx
cmpl $0xd, %edx
cmovael %ebx, %esi
addl %ecx, %esi
addl %edi, %esi
movq %rsi, %rbx
pushq $0x17
popq %rsi
leaq 0x80(%rsp), %rdx
movq %rbx, %rdi
callq 0x5c86
leaq 0x433c(%rip), %rsi      # 0x95f7
leaq 0x30(%rsp), %rdx
pushq $0x9
popq %rcx
movq %r14, %rdi
callq 0x7415
movl $0x18f3c, %edi          # imm = 0x18F3C
testb %al, %al
je 0x532c
movzbl 0x30(%rsp), %eax
imull $0xa, %eax, %eax
movzbl 0x31(%rsp), %ecx
movl $0xfffffdf0, %edx       # imm = 0xFFFFFDF0
addl %edx, %ecx
addl %eax, %ecx
movzbl 0x33(%rsp), %eax
imull $0xa, %eax, %eax
movzbl 0x34(%rsp), %edi
addl %edx, %edi
addl %eax, %edi
movzbl 0x36(%rsp), %eax
imull $0xa, %eax, %eax
movzbl 0x37(%rsp), %esi
addl %edx, %esi
addl %eax, %esi
cmpl $0x18, %ecx
pushq $0x18
popq %rax
cmovbl %ecx, %eax
pushq $0x3c
popq %rcx
cmpl %ecx, %edi
cmovael %ecx, %edi
cmpl %ecx, %esi
cmovael %ecx, %esi
shll $0xc, %eax
shll $0x6, %edi
orl %eax, %edi
orl %esi, %edi
pushq $0x11
popq %rsi
leaq 0x80(%rsp), %rbx
movq %rbx, %rdx
callq 0x5c86
leaq 0x3f61(%rip), %rsi      # 0x92a7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3e3d(%rip), %rsi      # 0x91a2
movq %r14, %rdi
callq 0x5da8
pushq $0x1c
popq %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3e17(%rip), %rsi      # 0x9199
movq %r14, %rdi
callq 0x5da8
pushq $0x1b
popq %rsi
movq %rax, %rdi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3f59(%rip), %rsi      # 0x92f8
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x4
popq %rsi
movq %rbx, %rdx
callq 0x5c86
pushq $0xa
popq %rsi
xorl %edi, %edi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3f16(%rip), %rsi      # 0x92df
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3eff(%rip), %rsi      # 0x92e4
movq %r14, %rdi
callq 0x5d17
pushq $0x13
popq %rsi
movq %rax, %rdi
jmp 0x5c32
pushq $0x5
popq %rdi
pushq $0x6
popq %rsi
leaq 0x80(%rsp), %r15
movq %r15, %rdx
callq 0x5c86
leaq 0x3e69(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rbx
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x4032(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rbp
movq %rax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3eaf(%rip), %rsi      # 0x9302
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3ea9(%rip), %rsi      # 0x9318
movq %r14, %rdi
callq 0x5d17
movq %rax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3e98(%rip), %rsi      # 0x9323
movq %r14, %rdi
callq 0x5ffc
leaq 0x20a3f26(%rip), %rbx   # 0x20a93c0
pushq $0x2a
popq %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x5f25
leaq 0x3d9b(%rip), %rsi      # 0x924a
movq %r14, %rdi
callq 0x5ffc
pushq $0x78
popq %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x5f25
leaq 0x3e60(%rip), %rsi      # 0x932c
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x8
popq %r12
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
movq %r13, %rbx
pushq $0x1
popq %r13
movq %r14, %rdi
movl %r13d, %esi
callq 0x6019
movq %rax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3dec(%rip), %rsi      # 0x92f8
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x4
popq %rsi
movq %r15, %rdx
callq 0x5c86
movq %r14, %rdi
callq 0x48e4
pushq $0x14
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3dfa(%rip), %rsi      # 0x9339
movq %r14, %rdi
callq 0x5da8
movq %rax, %rdi
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3de3(%rip), %rsi      # 0x933f
movq %r14, %rdi
callq 0x5ffc
leaq 0x20a3e55(%rip), %rdi   # 0x20a93c0
pushq $0x78
popq %rsi
movq %r15, %rdx
callq 0x5f25
leaq 0x3dce(%rip), %rsi      # 0x934b
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %r13d, %esi
movq %r15, %rdx
callq 0x5c86
xorl %edi, %edi
movl %r13d, %esi
movq %rbx, %r13
jmp 0x59e2
pushq $0x13
popq %rdi
pushq $0x6
popq %r12
leaq 0x80(%rsp), %r15
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3cbd(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x3e88(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
pushq $0x8
popq %rbx
xorl %edi, %edi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3b32(%rip), %rsi      # 0x913c
movq %r14, %rdi
callq 0x5da8
pushq $0xa
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3c80(%rip), %rsi      # 0x92a7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3b5c(%rip), %rsi      # 0x91a2
movq %r14, %rdi
callq 0x5da8
pushq $0x1c
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3b36(%rip), %rsi      # 0x9199
movq %r14, %rdi
callq 0x5da8
pushq $0x1b
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3ac0(%rip), %rsi      # 0x9140
movq %r14, %rdi
callq 0x5da8
pushq $0xc
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3d61(%rip), %rsi      # 0x93fe
movq %r14, %rdi
callq 0x5da8
pushq $0x9
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3bff(%rip), %rsi      # 0x92b9
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
pushq $0x4
popq %r12
xorl %edi, %edi
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3b62(%rip), %rsi      # 0x924a
movq %r14, %rdi
callq 0x5ffc
leaq 0x20a3cc9(%rip), %rdi   # 0x20a93c0
pushq $0x78
popq %rsi
movq %r15, %rdx
callq 0x5f25
leaq 0x3c23(%rip), %rsi      # 0x932c
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
movq %r14, %rdi
movl %ebp, %esi
callq 0x6019
movq %rax, %rdi
pushq $0x1e
popq %rsi
movq %r15, %rdx
callq 0x5c86
leaq 0x3bbb(%rip), %rsi      # 0x92f8
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3b85(%rip), %rsi      # 0x92df
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3bd5(%rip), %rsi      # 0x934b
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3bc6(%rip), %rsi      # 0x9358
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
xorl %edi, %edi
movl %r12d, %esi
jmp 0x59e2
pushq $0x12
popq %rdi
pushq $0x6
popq %rbx
leaq 0x80(%rsp), %r15
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3aae(%rip), %rsi      # 0x927e
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x2
popq %r12
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3c75(%rip), %rsi      # 0x9466
movq %r14, %rdi
callq 0x5d17
pushq $0x1e
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
pushq $0x8
popq %rsi
xorl %edi, %edi
movq %r15, %rdx
callq 0x5c86
leaq 0x3921(%rip), %rsi      # 0x913c
movq %r14, %rdi
callq 0x5da8
pushq $0xa
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3a6f(%rip), %rsi      # 0x92a7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x394b(%rip), %rsi      # 0x91a2
movq %r14, %rdi
callq 0x5da8
pushq $0x1c
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3925(%rip), %rsi      # 0x9199
movq %r14, %rdi
callq 0x5da8
pushq $0x1b
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x38af(%rip), %rsi      # 0x9140
movq %r14, %rdi
callq 0x5da8
pushq $0xc
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x3b55(%rip), %rsi      # 0x9403
movq %r14, %rdi
callq 0x5da8
pushq $0x9
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x39ee(%rip), %rsi      # 0x92b9
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebx, %esi
movq %r15, %rdx
callq 0x5c86
xorl %edi, %edi
movl %r12d, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3ad2(%rip), %rsi      # 0x93c6
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3ac0(%rip), %rsi      # 0x93d0
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3ab7(%rip), %rsi      # 0x93e3
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3a9f(%rip), %rsi      # 0x93e7
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3a88(%rip), %rsi      # 0x93ec
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x39d8(%rip), %rsi      # 0x9358
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3943(%rip), %rsi      # 0x92df
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x39a9(%rip), %rsi      # 0x9361
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x5c86
leaq 0x3910(%rip), %rsi      # 0x92e4
movq %r14, %rdi
callq 0x5d17
pushq $0x13
popq %rsi
movq %rax, %rdi
movq %r15, %rdx
callq 0x5c86
leaq 0x6f5f(%rip), %rax      # 0xc950
movq (%rax,%r13,8), %rax
movq %rax, 0x18(%rsp)
movl 0x164(%rsp), %eax
movl $0x168, %ecx            # imm = 0x168
cltd
idivl %ecx
movl %eax, %ebp
cmpl $0x1, %edx
sbbl $-0x1, %ebp
cmpl $0x2, %ebp
jl 0x5a30
pushq $0xa
popq %rcx
movzbl 0x7930(%rip), %eax      # 0xd350
addl $-0x2f, %eax
xorl %edx, %edx
divl %ecx
orb $0x30, %dl
movb %dl, 0x7920(%rip)       # 0xd350
pushq $0x1
popq %r15
pushq $0x8
popq %r12
xorl %r14d, %r14d
leaq 0x80(%rsp), %r13
xorl %ebx, %ebx
cmpl %ebp, %r15d
jg 0x5b6f
movl 0x164(%rsp), %edi
xorl %esi, %esi
movzbl %r14b, %r10d
cmpq $0x3c, %rsi
je 0x5aee
cmpl %ebx, %edi
jl 0x5aee
movl %ebx, %eax
cltd
idivl %r12d
movl %edi, %ecx
subl %ebx, %ecx
jle 0x5ae9
movb $0x6, %r8b
subb %cl, %r8b
cmpl $0x6, %ecx
movzbl %r8b, %ecx
cmovll %ecx, %r10d
movl %r10d, %r14d
movslq %eax, %r9
movzbl 0x80(%rsp,%r9), %r8d
movl %edx, %ecx
shll %cl, %r8d
shrb $0x2, %r8b
movzbl %r10b, %eax
movl %eax, %ecx
subl %edx, %ecx
cmpl $-0x3, %ecx
jg 0x5abf
movzbl 0x1(%r9,%r13), %r9d
movb $0xa, %cl
subb %dl, %cl
shrl %cl, %r9d
orb %r9b, %r8b
movl $0xff, %edx
movl %eax, %ecx
shll %cl, %edx
andb %r8b, %dl
subl %eax, %ebx
addl $0x6, %ebx
cmpb $0x28, %dl
setae %al
shlb $0x3, %al
addb %dl, %al
addb $0x30, %al
movb %al, 0x30(%rsp,%rsi)
incq %rsi
jmp 0x5a57
movb $0x0, 0x30(%rsp,%rsi)
movb $0x0, 0x30(%rsp,%rsi)
cmpl $0x2, %ebp
jl 0x5b2f
movzbl 0x7850(%rip), %r11d     # 0xd350
movq 0x28(%rsp), %rdi
movl $0x108, %esi            # imm = 0x108
leaq 0x3af4(%rip), %rdx      # 0x9605
movq 0x18(%rsp), %rcx
movl %ebp, %r8d
movl %r15d, %r9d
xorl %eax, %eax
pushq %r10
leaq 0x38(%rsp), %r10
pushq %r10
pushq 0x30(%rsp)
pushq %r11
jmp 0x5b5e
subq $0x8, %rsp
movq 0x30(%rsp), %rdi
movl $0x108, %esi            # imm = 0x108
leaq 0x3ad6(%rip), %rdx      # 0x961a
movq 0x20(%rsp), %rcx
movl %ebp, %r8d
movl %r15d, %r9d
xorl %eax, %eax
pushq %r10
leaq 0x40(%rsp), %r10
pushq %r10
pushq 0x38(%rsp)
callq 0x61b4
addq $0x20, %rsp
incl %r15d
jmp 0x5a45
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %rdi
pushq $0x2
popq %rsi
leaq 0x80(%rsp), %rbx
movq %rbx, %rdx
callq 0x5c86
leaq 0x378e(%rip), %rsi      # 0x932c
movq %r14, %rdi
callq 0x5c3a
movslq %eax, %rdi
pushq $0x8
popq %rsi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3896(%rip), %rsi      # 0x9451
movq %r14, %rdi
callq 0x5ffc
leaq 0x20a37f6(%rip), %r15   # 0x20a93c0
pushq $0x2a
popq %rbp
movq %r15, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5f25
leaq 0x3742(%rip), %rsi      # 0x9323
movq %r14, %rdi
callq 0x5ffc
movq %r15, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5f25
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0x6019
pushq $0x1e
popq %rbp
movq %rax, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
leaq 0x3843(%rip), %rsi      # 0x945b
movq %r14, %rdi
callq 0x5d17
movq %rax, %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5c86
pushq $0x6
popq %rsi
xorl %edi, %edi
movq %rbx, %rdx
jmp 0x59e5