// File: /workspace/github_c_makefile_star2_O1/canboat[P]canboat/analyzer/analyzer-explain.c
// Function: main
int main(int argc, char **argv)
{
  int    ac           = argc;
  char **av           = argv;
  bool   doExplain    = false;
  bool   doExplainXML = false;
  bool   doExplainNGT = false;
  bool   doExplainIK  = false;

  setProgName(argv[0]);

  for (; ac > 1; ac--, av++)
  {
    if (strcasecmp(av[1], "-version") == 0)
    {
      printf("%s\n", VERSION);
      exit(0);
    }
    else if (strcasecmp(av[1], "-camel") == 0)
    {
      camelCase(false);
    }
    else if (strcasecmp(av[1], "-upper-camel") == 0)
    {
      camelCase(true);
    }
    else if (strcasecmp(av[1], "-explain-xml") == 0)
    {
      doExplainXML = true;
    }
    else if (strcasecmp(av[1], "-explain-ngt-xml") == 0)
    {
      doExplainNGT = true;
    }
    else if (strcasecmp(av[1], "-explain-ik-xml") == 0)
    {
      doExplainIK = true;
    }
    else if (strcasecmp(av[1], "-explain") == 0)
    {
      doExplain = true;
    }
    else if (strcasecmp(av[1], "-v1") == 0)
    {
      doV1 = true;
    }
    else if (strcasecmp(av[1], "-d") == 0)
    {
      setLogLevel(LOGLEVEL_DEBUG);
      logDebug("Logging at debug level\n");
    }
    else
    {
      usage(argv, av + 1);
    }
  }

  fillLookups();
  fillFieldType(true);

  if (doExplain)
  {
    explain();
    exit(0);
  }
  if (doExplainXML || doExplainNGT || doExplainIK)
  {
    explainXML(doExplainXML, doExplainNGT, doExplainIK);
    exit(0);
  }
  usage(argv, NULL);
  exit(1);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
movl %edi, %ebp
movq (%rsi), %rdi
callq 0x2571e
cmpl $0x2, %ebp
jl 0xdd2e
movq %rbx, 0x10(%rsp)
leaq 0x8(%rbx), %r14
incl %ebp
movl $0x0, 0x4(%rsp)
leaq 0x1d591(%rip), %r15     # 0x2b17b
leaq 0x1d59f(%rip), %r12     # 0x2b190
leaq 0x1d592(%rip), %r13     # 0x2b18a
movl $0x0, 0x8(%rsp)
movl $0x0, 0xc(%rsp)
movl $0x0, (%rsp)
movq (%r14), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd060
testl %eax, %eax
je 0xdd3b
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd060
testl %eax, %eax
je 0xdce7
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd060
testl %eax, %eax
je 0xdceb
movq %rbx, %rdi
leaq 0x1d542(%rip), %rsi     # 0x2b197
callq 0xd060
testl %eax, %eax
je 0xdd06
movq %rbx, %rdi
leaq 0x1d538(%rip), %rsi     # 0x2b1a4
callq 0xd060
testl %eax, %eax
je 0xdd0e
movq %rbx, %rdi
leaq 0x1d532(%rip), %rsi     # 0x2b1b5
callq 0xd060
testl %eax, %eax
je 0xdd16
movq %rbx, %rdi
leaq 0x1d52b(%rip), %rsi     # 0x2b1c5
callq 0xd060
testl %eax, %eax
je 0xdd1e
movq %rbx, %rdi
leaq 0x1d521(%rip), %rsi     # 0x2b1ce
callq 0xd060
testl %eax, %eax
je 0xdd25
movq %rbx, %rdi
leaq 0x1d512(%rip), %rsi     # 0x2b1d2
callq 0xd060
testl %eax, %eax
jne 0xddb4
movl $0x3, %edi
callq 0x256f5
leaq 0x1d4f7(%rip), %rdi     # 0x2b1d5
xorl %eax, %eax
callq 0x254dd
jmp 0xdcf5
xorl %edi, %edi
jmp 0xdcf0
movl $0x1, %edi
callq 0xd98a
addq $0x8, %r14
decl %ebp
cmpl $0x2, %ebp
jg 0xdc0f
jmp 0xdd49
movb $0x1, %al
movl %eax, 0xc(%rsp)
jmp 0xdcf5
movb $0x1, %al
movl %eax, 0x8(%rsp)
jmp 0xdcf5
movb $0x1, %al
movl %eax, 0x4(%rsp)
jmp 0xdcf5
movb $0x1, %al
movl %eax, (%rsp)
jmp 0xdcf5
movb $0x1, 0x8d9d0(%rip)     # 0x9b6fc
jmp 0xdcf5
xorl %r12d, %r12d
xorl %r15d, %r15d
xorl %r14d, %r14d
xorl %ebp, %ebp
jmp 0xdd60
leaq 0x1d442(%rip), %rdi     # 0x2b184
callq 0xd0c0
jmp 0xdda3
movq 0x10(%rsp), %rbx
movl 0x4(%rsp), %ebp
movl 0x8(%rsp), %r14d
movl 0xc(%rsp), %r15d
movl (%rsp), %r12d
callq 0x185f4
movl $0x1, %edi
callq 0x24894
testb $0x1, %r12b
je 0xdd7c
callq 0xde6c
jmp 0xdda3
movl %r15d, %eax
orb %r14b, %al
orb %bpl, %al
testb $0x1, %al
je 0xddaa
movzbl %r15b, %edi
andl $0x1, %edi
movzbl %r14b, %esi
andl $0x1, %esi
movzbl %bpl, %edx
andl $0x1, %edx
callq 0xdf1d
xorl %edi, %edi
callq 0xd2d0
movq %rbx, %rdi
xorl %esi, %esi
callq 0xddc1
movq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0xddc1