// File: /workspace/github_c_makefile_star2_O0/canboat[P]canboat/analyzer/analyzer-explain.c
// Function: explainXML
static void explainXML(bool normal, bool actisense, bool ikonvert)
{
  int i;

  printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
  if (doV1)
  {
    printf("<!-- WARNING WARNING WARNING\n"
           "     THIS FILE IS OBSOLETE AND WILL BE REMOVED IN THE NEXT MAJOR RELEASE!!!\n"
           "     Please use docs/canboat.xml which is a much more complete format.\n"
           "-->\n");
  }
  printf("<!--\n" COPYRIGHT "\n-->\n");
  if (!doV1)
  {
    printf("<?xml-stylesheet type=\"text/xsl\" href=\"canboat.xsl\"?>\n");
  }
  if (!doV1)
  {
    printf(
        "<PGNDefinitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n"
        "  <SchemaVersion>" SCHEMA_VERSION "</SchemaVersion>\n");
  }
  else
  {
    printf("<PGNDefinitions xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
           "Version=\"0.1\">\n");
  }
  if (doV1)
  {
    printf("  <Comment>WARNING: DO NOT USE THIS FILE. IT IS INCLUDED FOR HISTORICAL DOWNSTREAM PROJECTS. See "
           "https://github.com/canboat/canboat for the full source code and the recommended new file to use.</Comment>\n");
  }
  else
  {
    printf("  <Comment>See https://github.com/canboat/canboat for the full source code</Comment>\n");
  }
  printf("  <CreatorCode>Canboat NMEA2000 Analyzer</CreatorCode>\n"
         "  <License>Apache License Version 2.0</License>\n"
         "  <Version>" VERSION "</Version>\n");
  if (!doV1)
  {
    printf("  <Copyright>" COPYRIGHT "\n</Copyright>\n");
  }

  if (normal && !doV1)
  {
    explainPhysicalQuantityXML();
    explainFieldTypesXML();
    explainMissingXML();

    printf("  <LookupEnumerations>\n");
    for (i = 0; i < ARRAY_SIZE(lookupEnums); i++)
    {
      uint64_t maxValue = (UINT64_C(1) << lookupEnums[i].size) - 1;

      printf("    <LookupEnumeration Name='%s' MaxValue='%" PRIu64 "'>\n", lookupEnums[i].name, maxValue);
      (lookupEnums[i].function.pairEnumerator)(explainPairXMLv2);
      printf("    </LookupEnumeration>\n");
    }
    printf("  </LookupEnumerations>\n");

    printf("  <LookupIndirectEnumerations>\n");
    for (i = 0; i < ARRAY_SIZE(tripletEnums); i++)
    {
      uint64_t maxValue = (UINT64_C(1) << tripletEnums[i].size) - 1;

      printf("    <LookupIndirectEnumeration Name='%s' MaxValue='%" PRIu64 "'>\n", tripletEnums[i].name, maxValue);
      (tripletEnums[i].function.tripletEnumerator)(explainTripletXML2);
      printf("    </LookupIndirectEnumeration>\n");
    }
    printf("  </LookupIndirectEnumerations>\n");

    printf("  <LookupBitEnumerations>\n");
    for (i = 0; i < ARRAY_SIZE(bitfieldEnums); i++)
    {
      uint64_t maxValue = bitfieldEnums[i].size - 1;
      printf("    <LookupBitEnumeration Name='%s' MaxValue='%" PRIu64 "'>\n", bitfieldEnums[i].name, maxValue);
      (bitfieldEnums[i].function.bitEnumerator)(explainBitXMLv2);
      printf("    </LookupBitEnumeration>\n");
    }
    printf("  </LookupBitEnumerations>\n");

    printf("  <LookupFieldTypeEnumerations>\n");
    for (i = 0; i < ARRAY_SIZE(fieldtypeEnums); i++)
    {
      uint64_t maxValue = (UINT64_C(1) << fieldtypeEnums[i].size) - 1;

      printf("    <LookupFieldTypeEnumeration Name='%s' MaxValue='%" PRIu64 "'>\n", fieldtypeEnums[i].name, maxValue);
      (fieldtypeEnums[i].function.fieldtypeEnumerator)(explainFieldtypeXMLv2);
      printf("    </LookupFieldTypeEnumeration>\n");
    }
    printf("  </LookupFieldTypeEnumerations>\n");
  }

  printf("  <PGNs>\n");
  for (i = 0; i < ARRAY_SIZE(pgnList); i++)
  {
    int pgn = pgnList[i].pgn;
    if ((normal && pgn < ACTISENSE_BEM) || (actisense && pgn >= ACTISENSE_BEM && pgn < IKONVERT_BEM)
        || (ikonvert && pgn >= IKONVERT_BEM))
    {
      explainPGNXML(pgnList[i]);
    }
  }

  printf("  </PGNs>\n"
         "</PGNDefinitions>\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1630, %rsp           # imm = 0x1630
movb %dl, %al
movb %sil, %cl
movb %dil, %dl
andb $0x1, %dl
movb %dl, -0x1(%rbp)
andb $0x1, %cl
movb %cl, -0x2(%rbp)
andb $0x1, %al
movb %al, -0x3(%rbp)
leaq 0x199bc(%rip), %rdi     # 0x27ee7
movb $0x0, %al
callq 0xd0f0
testb $0x1, 0x83143(%rip)     # 0x9167c
je 0xe549
leaq 0x199cd(%rip), %rdi     # 0x27f0f
movb $0x0, %al
callq 0xd0f0
leaq 0x19a74(%rip), %rdi     # 0x27fc4
movb $0x0, %al
callq 0xd0f0
testb $0x1, 0x8311e(%rip)     # 0x9167c
jne 0xe56e
leaq 0x19d23(%rip), %rdi     # 0x2828a
movb $0x0, %al
callq 0xd0f0
testb $0x1, 0x83107(%rip)     # 0x9167c
jne 0xe587
leaq 0x19d43(%rip), %rdi     # 0x282c1
movb $0x0, %al
callq 0xd0f0
jmp 0xe595
leaq 0x19dcf(%rip), %rdi     # 0x2835d
movb $0x0, %al
callq 0xd0f0
testb $0x1, 0x830e0(%rip)     # 0x9167c
je 0xe5ae
leaq 0x19e3b(%rip), %rdi     # 0x283e0
movb $0x0, %al
callq 0xd0f0
jmp 0xe5bc
leaq 0x19ef8(%rip), %rdi     # 0x284ad
movb $0x0, %al
callq 0xd0f0
leaq 0x19f40(%rip), %rdi     # 0x28503
movb $0x0, %al
callq 0xd0f0
testb $0x1, 0x830ab(%rip)     # 0x9167c
jne 0xe5e1
leaq 0x19fac(%rip), %rdi     # 0x28586
movb $0x0, %al
callq 0xd0f0
testb $0x1, -0x1(%rbp)
je 0xe8d5
testb $0x1, 0x8308a(%rip)     # 0x9167c
jne 0xe8d5
callq 0xf3a0
callq 0xf4e0
callq 0xf7d0
leaq 0x1a24f(%rip), %rdi     # 0x2885d
movb $0x0, %al
callq 0xd0f0
movl $0x0, -0x8(%rbp)
movslq -0x8(%rbp), %rax
cmpq $0xd3, %rax
jae 0xe6b1
movslq -0x8(%rbp), %rcx
leaq 0x7ab29(%rip), %rax     # 0x89160
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rcx
movl $0x1, %eax
shlq %cl, %rax
subq $0x1, %rax
movq %rax, -0x10(%rbp)
movslq -0x8(%rbp), %rcx
leaq 0x7ab03(%rip), %rax     # 0x89160
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movq -0x10(%rbp), %rdx
leaq 0x1a203(%rip), %rdi     # 0x28875
movb $0x0, %al
callq 0xd0f0
movslq -0x8(%rbp), %rcx
leaq 0x7aadc(%rip), %rax     # 0x89160
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
leaq 0x122e(%rip), %rdi      # 0xf8c0
callq *0x10(%rax)
leaq 0x1a20b(%rip), %rdi     # 0x288a7
movb $0x0, %al
callq 0xd0f0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xe61c
leaq 0x1a209(%rip), %rdi     # 0x288c1
movb $0x0, %al
callq 0xd0f0
leaq 0x1a214(%rip), %rdi     # 0x288da
movb $0x0, %al
callq 0xd0f0
movl $0x0, -0x8(%rbp)
movslq -0x8(%rbp), %rax
cmpq $0x1, %rax
jae 0xe767
movslq -0x8(%rbp), %rcx
leaq 0x7cdf3(%rip), %rax     # 0x8b4e0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rcx
movl $0x1, %eax
shlq %cl, %rax
subq $0x1, %rax
movq %rax, -0x18(%rbp)
movslq -0x8(%rbp), %rcx
leaq 0x7cdcd(%rip), %rax     # 0x8b4e0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movq -0x18(%rbp), %rdx
leaq 0x1a1d2(%rip), %rdi     # 0x288fa
movb $0x0, %al
callq 0xd0f0
movslq -0x8(%rbp), %rcx
leaq 0x7cda6(%rip), %rax     # 0x8b4e0
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
leaq 0x11c8(%rip), %rdi      # 0xf910
callq *0x10(%rax)
leaq 0x1a1e2(%rip), %rdi     # 0x28934
movb $0x0, %al
callq 0xd0f0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xe6d4
leaq 0x1a1e8(%rip), %rdi     # 0x28956
movb $0x0, %al
callq 0xd0f0
leaq 0x1a1fb(%rip), %rdi     # 0x28977
movb $0x0, %al
callq 0xd0f0
movl $0x0, -0x8(%rbp)
movslq -0x8(%rbp), %rax
cmpq $0x10, %rax
jae 0xe811
movslq -0x8(%rbp), %rcx
leaq 0x7cac1(%rip), %rax     # 0x8b260
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rax
subq $0x1, %rax
movq %rax, -0x20(%rbp)
movslq -0x8(%rbp), %rcx
leaq 0x7caa3(%rip), %rax     # 0x8b260
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movq -0x20(%rbp), %rdx
leaq 0x1a1c0(%rip), %rdi     # 0x28992
movb $0x0, %al
callq 0xd0f0
movslq -0x8(%rbp), %rcx
leaq 0x7ca7c(%rip), %rax     # 0x8b260
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
leaq 0x116e(%rip), %rdi      # 0xf960
callq *0x10(%rax)
leaq 0x1a1cb(%rip), %rdi     # 0x289c7
movb $0x0, %al
callq 0xd0f0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xe78a
leaq 0x1a1cc(%rip), %rdi     # 0x289e4
movb $0x0, %al
callq 0xd0f0
leaq 0x1a1da(%rip), %rdi     # 0x28a00
movb $0x0, %al
callq 0xd0f0
movl $0x0, -0x8(%rbp)
movslq -0x8(%rbp), %rax
cmpq $0x2, %rax
jae 0xe8c7
movslq -0x8(%rbp), %rcx
leaq 0x7ccc3(%rip), %rax     # 0x8b510
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rcx
movl $0x1, %eax
shlq %cl, %rax
subq $0x1, %rax
movq %rax, -0x28(%rbp)
movslq -0x8(%rbp), %rcx
leaq 0x7cc9d(%rip), %rax     # 0x8b510
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movq -0x28(%rbp), %rdx
leaq 0x1a199(%rip), %rdi     # 0x28a21
movb $0x0, %al
callq 0xd0f0
movslq -0x8(%rbp), %rcx
leaq 0x7cc76(%rip), %rax     # 0x8b510
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
leaq 0x1108(%rip), %rdi      # 0xf9b0
callq *0x10(%rax)
leaq 0x1a1aa(%rip), %rdi     # 0x28a5c
movb $0x0, %al
callq 0xd0f0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xe834
leaq 0x1a1b1(%rip), %rdi     # 0x28a7f
movb $0x0, %al
callq 0xd0f0
leaq 0x1a1c5(%rip), %rdi     # 0x28aa1
movb $0x0, %al
callq 0xd0f0
movl $0x0, -0x8(%rbp)
movslq -0x8(%rbp), %rax
cmpq $0x38, %rax
jae 0xe97e
movslq -0x8(%rbp), %rcx
leaq 0x2d9fd(%rip), %rax     # 0x3c300
imulq $0x15f8, %rcx, %rcx     # imm = 0x15F8
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x2c(%rbp)
testb $0x1, -0x1(%rbp)
je 0xe922
cmpl $0x40000, -0x2c(%rbp)   # imm = 0x40000
jl 0xe949
testb $0x1, -0x2(%rbp)
je 0xe93a
cmpl $0x40000, -0x2c(%rbp)   # imm = 0x40000
jl 0xe93a
cmpl $0x40100, -0x2c(%rbp)   # imm = 0x40100
jl 0xe949
testb $0x1, -0x3(%rbp)
je 0xe96e
cmpl $0x40100, -0x2c(%rbp)   # imm = 0x40100
jl 0xe96e
movslq -0x8(%rbp), %rax
leaq 0x2d9ac(%rip), %rsi     # 0x3c300
imulq $0x15f8, %rax, %rax     # imm = 0x15F8
addq %rax, %rsi
movq %rsp, %rdi
movl $0x2bf, %ecx            # imm = 0x2BF
rep  movsq (%rsi), %es:(%rdi)
callq 0xfb40
jmp 0xe970
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xe8ea
leaq 0x1a126(%rip), %rdi     # 0x28aab
movb $0x0, %al
callq 0xd0f0
addq $0x1630, %rsp           # imm = 0x1630
popq %rbp
retq
nopw %cs:(%rax,%rax)