// File: /workspace/github_c_makefile_star2_O0/canboat[P]canboat/analyzer/analyzer-explain.c
// Function: explainPGNXML
static void explainPGNXML(Pgn pgn)
{
  int      i;
  unsigned bitOffset     = 0;
  bool     showBitOffset = true;
  int      len;
  bool     isVariable;

  if (pgn.fallback && doV1)
  {
    return;
  }

  printf("    <PGNInfo>\n"
         "      <PGN>%u</PGN>\n",
         pgn.pgn);
  printXML(6, "Id", pgn.camelDescription);
  printXML(6, "Description", pgn.description);
  if (!doV1)
  {
    if (pgn.priority != 0)
    {
      printf("    <Priority>%u</Priority>\n", pgn.priority);
    }
    printXML(6, "Explanation", pgn.explanation);
    printXML(6, "URL", pgn.url);
  }
  printXML(6, "Type", PACKET_TYPE_STR[pgn.type]);
  printXML(6, "Complete", (pgn.complete == PACKET_COMPLETE ? "true" : "false"));
  if (pgn.fallback)
  {
    printXML(6, "Fallback", "true");
  }

  if (pgn.complete != PACKET_COMPLETE)
  {
    printf("      <Missing>\n");

    if (bit(pgn.complete, PACKET_FIELDS_UNKNOWN))
    {
      printXML(8, "MissingAttribute", "Fields");
    }
    if (bit(pgn.complete, PACKET_FIELD_LENGTHS_UNKNOWN))
    {
      printXML(8, "MissingAttribute", "FieldLengths");
    }
    if (bit(pgn.complete, PACKET_RESOLUTION_UNKNOWN))
    {
      printXML(8, "MissingAttribute", "Resolution");
    }
    if (bit(pgn.complete, PACKET_LOOKUPS_UNKNOWN))
    {
      printXML(8, "MissingAttribute", "Lookups");
    }
    if (bit(pgn.complete, PACKET_NOT_SEEN))
    {
      printXML(8, "MissingAttribute", "SampleData");
    }
    if (bit(pgn.complete, PACKET_INTERVAL_UNKNOWN))
    {
      printXML(8, "MissingAttribute", "Interval");
    }
    if (bit(pgn.complete, PACKET_MISSING_COMPANY_FIELDS))
    {
      printXML(8, "MissingAttribute", "MissingCompanyFields");
    }

    printf("      </Missing>\n");
  }

  len = getMinimalPgnLength(&pgn, &isVariable);
  if (!doV1)
  {
    printXMLUnsigned(6, "FieldCount", pgn.fieldCount);
    if (isVariable)
    {
      printXMLUnsigned(6, "MinLength", len);
    }
    else
    {
      printXMLUnsigned(6, "Length", len);
    }
  }
  else
  {
    printXMLUnsigned(6, "Length", len);
  }

  if (pgn.repeatingCount1 > 0)
  {
    printXMLUnsigned(6, "RepeatingFieldSet1Size", pgn.repeatingCount1);
    printXMLUnsigned(6, "RepeatingFieldSet1StartField", pgn.repeatingStart1);
    if (pgn.repeatingField1 < 255)
    {
      printXMLUnsigned(6, "RepeatingFieldSet1CountField", pgn.repeatingField1);
    }
  }

  if (pgn.repeatingCount2 > 0)
  {
    printXMLUnsigned(6, "RepeatingFieldSet2Size", pgn.repeatingCount2);
    printXMLUnsigned(6, "RepeatingFieldSet2StartField", pgn.repeatingStart2);
    if (pgn.repeatingField2 < 255)
    {
      printXMLUnsigned(6, "RepeatingFieldSet2CountField", pgn.repeatingField2);
    }
  }

  if (!doV1)
  {
    if (pgn.interval != 0 && pgn.interval < UINT16_MAX)
    {
      printXMLUnsigned(6, "TransmissionInterval", pgn.interval);
    }
    if (pgn.interval == UINT16_MAX)
    {
      printXML(6, "TransmissionIrregular", "true");
    }
  }

  if (pgn.fieldList[0].name)
  {
    printf("      <Fields>\n");

    for (i = 0; i < ARRAY_SIZE(pgn.fieldList) && pgn.fieldList[i].name; i++)
    {
      Field      f  = pgn.fieldList[i];
      FieldType *ft = f.ft;

      printf("        <Field>\n"
             "          <Order>%d</Order>\n",
             f.order);
      printXML(10, "Id", f.camelName);
      printXML(10, "Name", f.name);

      if (f.description && f.description[0] && f.description[0] != ',')
      {
        printXML(10, "Description", f.description);
      }
      else if (f.unit && f.unit[0] == '=')
      {
        g_lookupValue = (size_t) strtol(f.unit + 1, 0, 10);
        printf("          <Description>");
        (f.lookup.function.pairEnumerator)(filterPair);
        printf("</Description>\n");
      }
      if (f.size == LEN_VARIABLE)
      {
        printf("          <BitLengthVariable>true</BitLengthVariable>\n");
        if (strcmp(f.fieldType, "BINARY") == 0)
        {
          printXMLUnsigned(10, "BitLengthField", f.order - 1);
        }
      }
      else
      {
        printXMLUnsigned(10, "BitLength", f.size);
      }
      if (showBitOffset)
      {
        printXMLUnsigned(10, "BitOffset", bitOffset);
        printXMLUnsigned(10, "BitStart", bitOffset % 8);
      }
      bitOffset = bitOffset + f.size;

      if (f.proprietary)
      {
        printXML(10, "Condition", "PGNIsProprietary");
      }
      if (f.unit && f.unit[0] == '=')
      {
        printXML(10, "Match", &f.unit[1]);
      }
      else
      {
        if (doV1)
        {
          printXML(10, "Units", f.unit);
        }
        else
        {
          printXML(10, "Unit", f.unit);
        }
      }

      if (doV1)
      {
        const char *s = getV1Type(f.ft, f.name);

        if (s != NULL)
        {
          printXML(10, "Type", s);
        }
      }

      if (f.resolution != 0.0)
      {
        printf("          <Resolution>%g</Resolution>\n", f.resolution);
      }

      if (doV1)
      {
        printXML(10, "Signed", f.hasSign ? "true" : "false");
      }
      else if (ft->hasSign != Null)
      {
        printf("          <Signed>%s</Signed>\n", ft->hasSign == True ? "true" : "false");
      }

      if (f.offset != 0)
      {
        if (f.resolution == 1.0 || f.resolution == 0.0)
        {
          printf("          <Offset>%d</Offset>\n", f.offset);
        }
        else
        {
          printf("          <Offset>%" PRId64 "</Offset>\n", (int64_t) (f.offset * f.resolution));
        }
      }

      if (!isnan(f.rangeMin))
      {
        printf("          <RangeMin>%.15g</RangeMin>\n", f.rangeMin);
      }
      else if (!doV1 && f.lookup.function.pairEnumerator != NULL && !(f.unit && f.unit[0] == '='))
      {
        printf("          <RangeMin>%.15g</RangeMin>\n", 0.0);
      }

      if (!isnan(f.rangeMax))
      {
        if (f.resolution == 1.0 && f.size == 64 && ft->hasSign == False && f.offset == 0)
        {
          // This is the only RangeMax that doesn't print well as a double.
          printf("          <RangeMax>%" PRIu64 "</RangeMax>\n", UINT64_MAX);
        }
        else
        {
          printf("          <RangeMax>%.15g</RangeMax>\n", f.rangeMax);
        }
      }
      else if (!doV1 && f.lookup.function.pairEnumerator != NULL && !(f.unit && f.unit[0] == '='))
      {
        logDebug("PGN %u '%s' unit='%s' size=%u\n -> rangeMax %.15g\n",
                 pgn.pgn,
                 f.name,
                 STRNULL(f.unit),
                 f.size,
                 (double) ((UINT64_C(1) << f.size) - 1));
        printf("          <RangeMax>%.15g</RangeMax>\n", (double) ((UINT64_C(1) << f.size) - 1));
      }

      if (!doV1)
      {
        printXML(10, "FieldType", getV2Type(f.ft));
        if (ft->physical != NULL)
        {
          printXML(10, "PhysicalQuantity", ft->physical->name);
        }
      }

      if (f.lookup.function.pairEnumerator != NULL && (!doV1 || f.unit == NULL || f.unit[0] != '='))
      {
        explainLookupFunction(&f.lookup);
      }

      if (!doV1 && f.partOfPrimaryKey)
      {
        printXML(10, "PartOfPrimaryKey", "true");
      }

      if ((ft != NULL && ft->variableSize) || f.proprietary || f.size == LEN_VARIABLE)
      {
        showBitOffset = false; // From here on there is no good bitoffset to be printed
      }
      printf("        </Field>\n");
    }
    printf("      </Fields>\n");
  }
  printf("    </PGNInfo>\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
leaq 0x10(%rbp), %rax
movq %rax, -0xd8(%rbp)
movl $0x0, -0x8(%rbp)
movb $0x1, -0x9(%rbp)
testb $0x1, 0x15d0(%rax)
je 0xfb78
testb $0x1, 0x81b0b(%rip)     # 0x9167c
je 0xfb78
jmp 0x1076a
movq -0xd8(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x196b0(%rip), %rdi     # 0x29239
movb $0x0, %al
callq 0xd0f0
movq -0xd8(%rbp), %rax
movq 0x15c8(%rax), %rdx
movl $0x6, %edi
leaq 0x196b2(%rip), %rsi     # 0x2925c
callq 0x10780
movq -0xd8(%rbp), %rax
movq (%rax), %rdx
movl $0x6, %edi
leaq 0x1969a(%rip), %rsi     # 0x2925f
callq 0x10780
testb $0x1, 0x81aab(%rip)     # 0x9167c
jne 0xfc40
movq -0xd8(%rbp), %rax
movzbl 0x15ea(%rax), %eax
cmpl $0x0, %eax
je 0xfc02
movq -0xd8(%rbp), %rax
movzbl 0x15ea(%rax), %esi
leaq 0x19670(%rip), %rdi     # 0x2926b
movb $0x0, %al
callq 0xd0f0
movq -0xd8(%rbp), %rax
movq 0x15d8(%rax), %rdx
movl $0x6, %edi
leaq 0x1966c(%rip), %rsi     # 0x29288
callq 0x10780
movq -0xd8(%rbp), %rax
movq 0x15e0(%rax), %rdx
movl $0x6, %edi
leaq 0x19659(%rip), %rsi     # 0x29294
callq 0x10780
movq -0xd8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, %ecx
leaq 0x2c58d(%rip), %rax     # 0x3c1e0
movq (%rax,%rcx,8), %rdx
movl $0x6, %edi
leaq 0x19970(%rip), %rsi     # 0x295d3
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %ecx
leaq 0x17fac(%rip), %rdx     # 0x27c26
leaq 0x17fa0(%rip), %rax     # 0x27c21
cmpl $0x0, %ecx
cmoveq %rax, %rdx
movl $0x6, %edi
leaq 0x1d2b4(%rip), %rsi     # 0x2cf48
callq 0x10780
movq -0xd8(%rbp), %rax
testb $0x1, 0x15d0(%rax)
je 0xfcc1
movl $0x6, %edi
leaq 0x195e3(%rip), %rsi     # 0x29298
leaq 0x17f65(%rip), %rdx     # 0x27c21
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
cmpl $0x0, %eax
je 0xfe1e
leaq 0x195c5(%rip), %rdi     # 0x292a1
movb $0x0, %al
callq 0xd0f0
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xfd0e
movl $0x8, %edi
leaq 0x195b0(%rip), %rsi     # 0x292b2
leaq 0x1f576(%rip), %rdx     # 0x2f27f
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xfd39
movl $0x8, %edi
leaq 0x19585(%rip), %rsi     # 0x292b2
leaq 0x19061(%rip), %rdx     # 0x28d95
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xfd64
movl $0x8, %edi
leaq 0x1955a(%rip), %rsi     # 0x292b2
leaq 0x19078(%rip), %rdx     # 0x28dd7
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xfd8f
movl $0x8, %edi
leaq 0x1952f(%rip), %rsi     # 0x292b2
leaq 0x19091(%rip), %rdx     # 0x28e1b
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xfdba
movl $0x8, %edi
leaq 0x19504(%rip), %rsi     # 0x292b2
leaq 0x190b3(%rip), %rdx     # 0x28e68
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0xfde5
movl $0x8, %edi
leaq 0x194d9(%rip), %rsi     # 0x292b2
leaq 0x195b8(%rip), %rdx     # 0x29398
callq 0x10780
movq -0xd8(%rbp), %rax
movzwl 0xc(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0xfe10
movl $0x8, %edi
leaq 0x194ae(%rip), %rsi     # 0x292b2
leaq 0x190c5(%rip), %rdx     # 0x28ed0
callq 0x10780
leaq 0x194ac(%rip), %rdi     # 0x292c3
movb $0x0, %al
callq 0xd0f0
movq -0xd8(%rbp), %rdi
leaq -0x11(%rbp), %rsi
callq 0xf120
movl %eax, -0x10(%rbp)
testb $0x1, 0x81844(%rip)     # 0x9167c
jne 0xfe8a
movq -0xd8(%rbp), %rax
movl 0x15c0(%rax), %edx
movl $0x6, %edi
leaq 0x19482(%rip), %rsi     # 0x292d5
callq 0x10b20
testb $0x1, -0x11(%rbp)
je 0xfe74
movl -0x10(%rbp), %edx
movl $0x6, %edi
leaq 0x19473(%rip), %rsi     # 0x292e0
callq 0x10b20
jmp 0xfe88
movl -0x10(%rbp), %edx
movl $0x6, %edi
leaq 0x20100(%rip), %rsi     # 0x2ff83
callq 0x10b20
jmp 0xfe9e
movl -0x10(%rbp), %edx
movl $0x6, %edi
leaq 0x200ea(%rip), %rsi     # 0x2ff83
callq 0x10b20
movq -0xd8(%rbp), %rax
movzbl 0x15eb(%rax), %eax
cmpl $0x0, %eax
jle 0xff25
movq -0xd8(%rbp), %rax
movzbl 0x15eb(%rax), %edx
movl $0x6, %edi
leaq 0x1941f(%rip), %rsi     # 0x292ea
callq 0x10b20
movq -0xd8(%rbp), %rax
movzbl 0x15ed(%rax), %edx
movl $0x6, %edi
leaq 0x19417(%rip), %rsi     # 0x29301
callq 0x10b20
movq -0xd8(%rbp), %rax
movzbl 0x15ef(%rax), %eax
cmpl $0xff, %eax
jge 0xff23
movq -0xd8(%rbp), %rax
movzbl 0x15ef(%rax), %edx
movl $0x6, %edi
leaq 0x19400(%rip), %rsi     # 0x2931e
callq 0x10b20
jmp 0xff25
movq -0xd8(%rbp), %rax
movzbl 0x15ec(%rax), %eax
cmpl $0x0, %eax
jle 0xffac
movq -0xd8(%rbp), %rax
movzbl 0x15ec(%rax), %edx
movl $0x6, %edi
leaq 0x193e9(%rip), %rsi     # 0x2933b
callq 0x10b20
movq -0xd8(%rbp), %rax
movzbl 0x15ee(%rax), %edx
movl $0x6, %edi
leaq 0x193e1(%rip), %rsi     # 0x29352
callq 0x10b20
movq -0xd8(%rbp), %rax
movzbl 0x15f0(%rax), %eax
cmpl $0xff, %eax
jge 0xffaa
movq -0xd8(%rbp), %rax
movzbl 0x15f0(%rax), %edx
movl $0x6, %edi
leaq 0x193ca(%rip), %rsi     # 0x2936f
callq 0x10b20
jmp 0xffac
testb $0x1, 0x816c9(%rip)     # 0x9167c
jne 0x1002b
movq -0xd8(%rbp), %rax
movzwl 0x15e8(%rax), %eax
cmpl $0x0, %eax
je 0xfffc
movq -0xd8(%rbp), %rax
movzwl 0x15e8(%rax), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jge 0xfffc
movq -0xd8(%rbp), %rax
movzwl 0x15e8(%rax), %edx
movl $0x6, %edi
leaq 0x19395(%rip), %rsi     # 0x2938c
callq 0x10b20
movq -0xd8(%rbp), %rax
movzwl 0x15e8(%rax), %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x10029
movl $0x6, %edi
leaq 0x19384(%rip), %rsi     # 0x293a1
leaq 0x17bfd(%rip), %rdx     # 0x27c21
callq 0x10780
jmp 0x1002b
movq -0xd8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x1075c
leaq 0x19373(%rip), %rdi     # 0x293b7
movb $0x0, %al
callq 0xd0f0
movl $0x0, -0x4(%rbp)
movslq -0x4(%rbp), %rcx
xorl %eax, %eax
cmpq $0x21, %rcx
movb %al, -0xd9(%rbp)
jae 0x1008a
movq -0xd8(%rbp), %rax
addq $0x18, %rax
movslq -0x4(%rbp), %rcx
imulq $0xa8, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
setne %al
movb %al, -0xd9(%rbp)
movb -0xd9(%rbp), %al
testb $0x1, %al
jne 0x10099
jmp 0x1074e
movq -0xd8(%rbp), %rsi
addq $0x18, %rsi
movslq -0x4(%rbp), %rax
imulq $0xa8, %rax, %rax
addq %rax, %rsi
leaq -0xc0(%rbp), %rdi
movl $0xa8, %edx
callq 0xd1d0
movq -0x38(%rbp), %rax
movq %rax, -0xc8(%rbp)
movzbl -0x75(%rbp), %esi
leaq 0x192ee(%rip), %rdi     # 0x293c7
movb $0x0, %al
callq 0xd0f0
movq -0x68(%rbp), %rdx
movl $0xa, %edi
leaq 0x1916c(%rip), %rsi     # 0x2925c
callq 0x10780
movq -0xc0(%rbp), %rdx
movl $0xa, %edi
leaq 0x1ecc0(%rip), %rsi     # 0x2edc8
callq 0x10780
cmpq $0x0, -0xa0(%rbp)
je 0x1014f
movq -0xa0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x1014f
movq -0xa0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2c, %eax
je 0x1014f
movq -0xa0(%rbp), %rdx
movl $0xa, %edi
leaq 0x19117(%rip), %rsi     # 0x2925f
callq 0x10780
jmp 0x101b0
cmpq $0x0, -0xa8(%rbp)
je 0x101ae
movq -0xa8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x101ae
movq -0xa8(%rbp), %rdi
addq $0x1, %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xa, %edx
callq 0xd1c0
movq %rax, 0x81528(%rip)     # 0x916b0
leaq 0x19265(%rip), %rdi     # 0x293f4
movb $0x0, %al
callq 0xd0f0
leaq 0xc03(%rip), %rdi       # 0x10da0
callq *-0x50(%rbp)
leaq 0x18970(%rip), %rdi     # 0x28b17
movb $0x0, %al
callq 0xd0f0
jmp 0x101b0
cmpl $0x0, -0xb0(%rbp)
jne 0x101f9
leaq 0x1924c(%rip), %rdi     # 0x2940c
movb $0x0, %al
callq 0xd0f0
movq -0xb8(%rbp), %rdi
leaq 0x142fb(%rip), %rsi     # 0x244d0
callq 0xd190
cmpl $0x0, %eax
jne 0x101f7
movzbl -0x75(%rbp), %edx
subl $0x1, %edx
movl $0xa, %edi
leaq 0x19251(%rip), %rsi     # 0x29443
callq 0x10b20
jmp 0x10210
movl -0xb0(%rbp), %edx
movl $0xa, %edi
leaq 0x19247(%rip), %rsi     # 0x29452
callq 0x10b20
testb $0x1, -0x9(%rbp)
je 0x10241
movl -0x8(%rbp), %edx
movl $0xa, %edi
leaq 0x19237(%rip), %rsi     # 0x2945c
callq 0x10b20
movl -0x8(%rbp), %edx
andl $0x7, %edx
movl $0xa, %edi
leaq 0x1922a(%rip), %rsi     # 0x29466
callq 0x10b20
movl -0x8(%rbp), %eax
addl -0xb0(%rbp), %eax
movl %eax, -0x8(%rbp)
testb $0x1, -0x78(%rbp)
je 0x1026b
movl $0xa, %edi
leaq 0x19210(%rip), %rsi     # 0x2946f
leaq 0x19213(%rip), %rdx     # 0x29479
callq 0x10780
cmpq $0x0, -0xa8(%rbp)
je 0x102a2
movq -0xa8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
jne 0x102a2
movq -0xa8(%rbp), %rdx
addq $0x1, %rdx
movl $0xa, %edi
leaq 0x191ef(%rip), %rsi     # 0x2948a
callq 0x10780
jmp 0x102df
testb $0x1, 0x813d3(%rip)     # 0x9167c
je 0x102c5
movq -0xa8(%rbp), %rdx
movl $0xa, %edi
leaq 0x191d2(%rip), %rsi     # 0x29490
callq 0x10780
jmp 0x102dd
movq -0xa8(%rbp), %rdx
movl $0xa, %edi
leaq 0x191be(%rip), %rsi     # 0x29496
callq 0x10780
jmp 0x102df
testb $0x1, 0x81396(%rip)     # 0x9167c
je 0x10323
movq -0x38(%rbp), %rdi
movq -0xc0(%rbp), %rsi
callq 0x10cf0
movq %rax, -0xd0(%rbp)
cmpq $0x0, -0xd0(%rbp)
je 0x10321
movq -0xd0(%rbp), %rdx
movl $0xa, %edi
leaq 0x192b7(%rip), %rsi     # 0x295d3
callq 0x10780
jmp 0x10323
movsd -0x90(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10338
jp 0x10338
jmp 0x1034e
movsd -0x90(%rbp), %xmm0
leaq 0x19154(%rip), %rdi     # 0x2949b
movb $0x1, %al
callq 0xd0f0
testb $0x1, 0x81327(%rip)     # 0x9167c
je 0x10382
movb -0x77(%rbp), %cl
leaq 0x178c5(%rip), %rdx     # 0x27c26
leaq 0x178b9(%rip), %rax     # 0x27c21
testb $0x1, %cl
cmovneq %rax, %rdx
movl $0xa, %edi
leaq 0x19147(%rip), %rsi     # 0x294c2
callq 0x10780
jmp 0x103be
movq -0xc8(%rbp), %rax
cmpl $0x0, 0x60(%rax)
je 0x103bc
movq -0xc8(%rbp), %rax
movl 0x60(%rax), %ecx
leaq 0x17886(%rip), %rsi     # 0x27c26
leaq 0x1787a(%rip), %rax     # 0x27c21
cmpl $0x2, %ecx
cmoveq %rax, %rsi
leaq 0x19114(%rip), %rdi     # 0x294c9
movb $0x0, %al
callq 0xd0f0
jmp 0x103be
cmpl $0x0, -0x98(%rbp)
je 0x1042f
movsd -0x90(%rbp), %xmm0
movsd 0x13fc1(%rip), %xmm1    # 0x24398
ucomisd %xmm1, %xmm0
jne 0x103e1
jp 0x103e1
jmp 0x103f4
movsd -0x90(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x1040a
jp 0x1040a
movl -0x98(%rbp), %esi
leaq 0x190e7(%rip), %rdi     # 0x294e8
movb $0x0, %al
callq 0xd0f0
jmp 0x1042d
cvtsi2sdl -0x98(%rbp), %xmm0
mulsd -0x90(%rbp), %xmm0
cvttsd2si %xmm0, %rsi
leaq 0x190e1(%rip), %rdi     # 0x29507
movb $0x0, %al
callq 0xd0f0
jmp 0x1042f
movsd -0x28(%rbp), %xmm0
ucomisd %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x10454
movsd -0x28(%rbp), %xmm0
leaq 0x190dc(%rip), %rdi     # 0x29527
movb $0x1, %al
callq 0xd0f0
jmp 0x10490
testb $0x1, 0x81221(%rip)     # 0x9167c
jne 0x1048e
cmpq $0x0, -0x50(%rbp)
je 0x1048e
cmpq $0x0, -0xa8(%rbp)
je 0x1047d
movq -0xa8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x1048e
leaq 0x190a3(%rip), %rdi     # 0x29527
xorps %xmm0, %xmm0
movb $0x1, %al
callq 0xd0f0
jmp 0x10490
movsd -0x20(%rbp), %xmm0
ucomisd %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x10506
movsd -0x90(%rbp), %xmm0
movsd 0x13ee8(%rip), %xmm1    # 0x24398
ucomisd %xmm1, %xmm0
jne 0x104ee
jp 0x104ee
cmpl $0x40, -0xb0(%rbp)
jne 0x104ee
movq -0xc8(%rbp), %rax
cmpl $0x1, 0x60(%rax)
jne 0x104ee
cmpl $0x0, -0x98(%rbp)
jne 0x104ee
leaq 0x1906f(%rip), %rdi     # 0x2954d
movq $-0x1, %rsi
movb $0x0, %al
callq 0xd0f0
jmp 0x10501
movsd -0x20(%rbp), %xmm0
leaq 0x19077(%rip), %rdi     # 0x29571
movb $0x1, %al
callq 0xd0f0
jmp 0x1064d
testb $0x1, 0x8116f(%rip)     # 0x9167c
jne 0x1064b
cmpq $0x0, -0x50(%rbp)
je 0x1064b
cmpq $0x0, -0xa8(%rbp)
je 0x1053b
movq -0xa8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x1064b
movq -0xd8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xec(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0xe8(%rbp)
cmpq $0x0, -0xa8(%rbp)
je 0x10573
movq -0xa8(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x10583
leaq 0x1904f(%rip), %rax     # 0x295c9
movq %rax, -0xf8(%rbp)
jmp 0x10583
movq -0xe8(%rbp), %rdx
movl -0xec(%rbp), %esi
movq -0xf8(%rbp), %rax
movq %rax, -0x128(%rbp)
movl -0xb0(%rbp), %r8d
movb %r8b, %cl
movl $0x1, %eax
movq %rax, -0x100(%rbp)
shlq %cl, %rax
movq -0x128(%rbp), %rcx
decq %rax
movq %rax, %xmm0
movaps 0x13e83(%rip), %xmm1    # 0x24450
movaps %xmm1, -0x120(%rbp)
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x13e80(%rip), %xmm1    # 0x24460
movaps %xmm1, -0x110(%rbp)
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
leaq 0x18f9a(%rip), %rdi     # 0x29597
movb $0x1, %al
callq 0x1f670
movaps -0x120(%rbp), %xmm2
movaps -0x110(%rbp), %xmm1
movq -0x100(%rbp), %rax
movb -0xb0(%rbp), %cl
shlq %cl, %rax
decq %rax
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
leaq 0x18f2d(%rip), %rdi     # 0x29571
movb $0x1, %al
callq 0xd0f0
jmp 0x1064d
testb $0x1, 0x81028(%rip)     # 0x9167c
jne 0x106a8
movq -0x38(%rbp), %rdi
callq 0x108c0
movq %rax, %rdx
movl $0xa, %edi
leaq 0x18f60(%rip), %rsi     # 0x295ce
callq 0x10780
movq -0xc8(%rbp), %rax
cmpq $0x0, 0x80(%rax)
je 0x106a6
movq -0xc8(%rbp), %rax
movq 0x80(%rax), %rax
movq (%rax), %rdx
movl $0xa, %edi
leaq 0x18f37(%rip), %rsi     # 0x295d8
callq 0x10780
jmp 0x106a8
cmpq $0x0, -0x50(%rbp)
je 0x106e1
testb $0x1, 0x80fc6(%rip)     # 0x9167c
je 0x106d1
cmpq $0x0, -0xa8(%rbp)
je 0x106d1
movq -0xa8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3d, %eax
je 0x106e1
leaq -0xc0(%rbp), %rdi
addq $0x60, %rdi
callq 0x10910
testb $0x1, 0x80f94(%rip)     # 0x9167c
jne 0x10708
testb $0x1, -0x76(%rbp)
je 0x10708
movl $0xa, %edi
leaq 0x18eed(%rip), %rsi     # 0x295e9
leaq 0x1751e(%rip), %rdx     # 0x27c21
callq 0x10780
cmpq $0x0, -0xc8(%rbp)
je 0x1071f
movq -0xc8(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
jne 0x1072e
testb $0x1, -0x78(%rbp)
jne 0x1072e
cmpl $0x0, -0xb0(%rbp)
jne 0x10732
movb $0x0, -0x9(%rbp)
leaq 0x18ec1(%rip), %rdi     # 0x295fa
movb $0x0, %al
callq 0xd0f0
movl -0x4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x10052
leaq 0x18eb7(%rip), %rdi     # 0x2960c
movb $0x0, %al
callq 0xd0f0
leaq 0x18eba(%rip), %rdi     # 0x2961d
movb $0x0, %al
callq 0xd0f0
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopw %cs:(%rax,%rax)