// File: /workspace/github_c_makefile_star2_O3/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 0x1cf92
cmpl $0x2, %ebp
jl 0xdcbe
movq %rbx, 0x10(%rsp)
leaq 0x8(%rbx), %r14
incl %ebp
movl $0x0, 0xc(%rsp)
leaq 0x15601(%rip), %r15     # 0x2317b
leaq 0x1560f(%rip), %r12     # 0x23190
leaq 0x15602(%rip), %r13     # 0x2318a
movl $0x0, 0x4(%rsp)
movl $0x0, 0x8(%rsp)
movl $0x0, (%rsp)
movq (%r14), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd060
testl %eax, %eax
je 0xdccb
movq %rbx, %rdi
movq %r12, %rsi
callq 0xd060
testl %eax, %eax
je 0xdc77
movq %rbx, %rdi
movq %r13, %rsi
callq 0xd060
testl %eax, %eax
je 0xdc7b
movq %rbx, %rdi
leaq 0x155b2(%rip), %rsi     # 0x23197
callq 0xd060
testl %eax, %eax
je 0xdc96
movq %rbx, %rdi
leaq 0x155a8(%rip), %rsi     # 0x231a4
callq 0xd060
testl %eax, %eax
je 0xdc9e
movq %rbx, %rdi
leaq 0x155a2(%rip), %rsi     # 0x231b5
callq 0xd060
testl %eax, %eax
je 0xdca6
movq %rbx, %rdi
leaq 0x1559b(%rip), %rsi     # 0x231c5
callq 0xd060
testl %eax, %eax
je 0xdcae
movq %rbx, %rdi
leaq 0x15591(%rip), %rsi     # 0x231ce
callq 0xd060
testl %eax, %eax
je 0xdcb5
movq %rbx, %rdi
leaq 0x15582(%rip), %rsi     # 0x231d2
callq 0xd060
testl %eax, %eax
jne 0xdd43
movl $0x3, %edi
callq 0x1cf69
leaq 0x15567(%rip), %rdi     # 0x231d5
xorl %eax, %eax
callq 0x1cd55
jmp 0xdc85
xorl %edi, %edi
jmp 0xdc80
movl $0x1, %edi
callq 0xd91b
addq $0x8, %r14
decl %ebp
cmpl $0x2, %ebp
jg 0xdb9f
jmp 0xdcd9
movb $0x1, %al
movl %eax, 0xc(%rsp)
jmp 0xdc85
movb $0x1, %al
movl %eax, 0x8(%rsp)
jmp 0xdc85
movb $0x1, %al
movl %eax, 0x4(%rsp)
jmp 0xdc85
movb $0x1, %al
movl %eax, (%rsp)
jmp 0xdc85
movb $0x1, 0x80a40(%rip)     # 0x8e6fc
jmp 0xdc85
xorl %r12d, %r12d
xorl %ebp, %ebp
xorl %r15d, %r15d
xorl %r14d, %r14d
jmp 0xdcf0
leaq 0x154b2(%rip), %rdi     # 0x23184
callq 0xd0c0
jmp 0xdd32
movq 0x10(%rsp), %rbx
movl 0xc(%rsp), %ebp
movl 0x4(%rsp), %r14d
movl 0x8(%rsp), %r15d
movl (%rsp), %r12d
callq 0x185a4
movl $0x1, %edi
callq 0x1c15d
testb $0x1, %r12b
je 0xdd0c
callq 0xddfb
jmp 0xdd32
movl %ebp, %eax
orb %r15b, %al
orb %r14b, %al
testb $0x1, %al
je 0xdd39
movzbl %bpl, %edi
andl $0x1, %edi
movzbl %r15b, %esi
andl $0x1, %esi
movzbl %r14b, %edx
andl $0x1, %edx
callq 0xdeac
xorl %edi, %edi
callq 0xd2d0
movq %rbx, %rdi
xorl %esi, %esi
callq 0xdd50
movq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0xdd50