// File: CoinXu[P]reviser-compiler/src/main.cpp
// Function: main
int main(int args, char** argv, char** envp) {
  signal(SIGSEGV, handler);

  CommandLineInterface cli;
  cli.SetVersionInfo(REVISER_COMPILER_VERSION);

  reviser::javascript::JavaScriptGenerator js_generator;
  cli.RegisterGenerator("--js-out", &js_generator,
    "Generate JavaScript source file", "js");

  reviser::typescript::TypeScriptGenerator ts_generator;
  cli.RegisterGenerator("--ts-out", &ts_generator,
    "Generate TypeScript source file", "ts");

  return cli.Run(args, argv);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x340, %rsp            # imm = 0x340
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
leaq -0x84(%rip), %rsi       # 0xa5d50
movl $0xb, %edi
callq 0x99560
leaq -0xd8(%rbp), %rdi
callq 0x9f500
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x99850
movq -0x308(%rbp), %rdx
leaq 0x59537(%rip), %rsi     # 0xff342
leaq -0xf8(%rbp), %rdi
callq 0x99640
jmp 0xa5e19
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x9f660
jmp 0xa5e2e
leaq -0xf8(%rbp), %rdi
callq 0x992c0
leaq -0xf9(%rbp), %rdi
callq 0x994f0
leaq -0x190(%rbp), %rdi
callq 0xed190
jmp 0xa5e54
leaq -0x1b1(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x99850
movq -0x310(%rbp), %rdx
leaq 0x594d3(%rip), %rsi     # 0xff348
leaq -0x1b0(%rbp), %rdi
callq 0x99640
jmp 0xa5e83
leaq -0x1d9(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x99850
movq -0x318(%rbp), %rdx
leaq 0x594ad(%rip), %rsi     # 0xff351
leaq -0x1d8(%rbp), %rdi
callq 0x99640
jmp 0xa5eb2
leaq -0x201(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x99850
movq -0x320(%rbp), %rdx
leaq 0x5949e(%rip), %rsi     # 0xff371
leaq -0x200(%rbp), %rdi
callq 0x99640
jmp 0xa5ee1
leaq -0xd8(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
leaq -0x190(%rbp), %rdx
leaq -0x1d8(%rbp), %rcx
leaq -0x200(%rbp), %r8
callq 0x9f690
jmp 0xa5f0b
leaq -0x200(%rbp), %rdi
callq 0x992c0
leaq -0x201(%rbp), %rdi
callq 0x994f0
leaq -0x1d8(%rbp), %rdi
callq 0x992c0
leaq -0x1d9(%rbp), %rdi
callq 0x994f0
leaq -0x1b0(%rbp), %rdi
callq 0x992c0
leaq -0x1b1(%rbp), %rdi
callq 0x994f0
leaq -0x288(%rbp), %rdi
callq 0xf9f00
jmp 0xa5f61
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x328(%rbp)
callq 0x99850
movq -0x328(%rbp), %rdx
leaq 0x593f2(%rip), %rsi     # 0xff374
leaq -0x2a8(%rbp), %rdi
callq 0x99640
jmp 0xa5f90
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x99850
movq -0x330(%rbp), %rdx
leaq 0x593cc(%rip), %rsi     # 0xff37d
leaq -0x2d0(%rbp), %rdi
callq 0x99640
jmp 0xa5fbf
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x99850
movq -0x338(%rbp), %rdx
leaq 0x593bd(%rip), %rsi     # 0xff39d
leaq -0x2f8(%rbp), %rdi
callq 0x99640
jmp 0xa5fee
leaq -0xd8(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
leaq -0x288(%rbp), %rdx
leaq -0x2d0(%rbp), %rcx
leaq -0x2f8(%rbp), %r8
callq 0x9f690
jmp 0xa6018
leaq -0x2f8(%rbp), %rdi
callq 0x992c0
leaq -0x2f9(%rbp), %rdi
callq 0x994f0
leaq -0x2d0(%rbp), %rdi
callq 0x992c0
leaq -0x2d1(%rbp), %rdi
callq 0x994f0
leaq -0x2a8(%rbp), %rdi
callq 0x992c0
leaq -0x2a9(%rbp), %rdi
callq 0x994f0
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0xd8(%rbp), %rdi
callq 0x9f750
movl %eax, -0x33c(%rbp)
jmp 0xa607b
movl -0x33c(%rbp), %eax
movl %eax, -0x4(%rbp)
leaq -0x288(%rbp), %rdi
callq 0xf9fc0
leaq -0x190(%rbp), %rdi
callq 0xed250
leaq -0xd8(%rbp), %rdi
callq 0x9f5f0
movl -0x4(%rbp), %eax
addq $0x340, %rsp            # imm = 0x340
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa60e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x992c0
leaq -0xf9(%rbp), %rdi
callq 0x994f0
jmp 0xa6282
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa6282
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa6198
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa6180
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa6168
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x992c0
leaq -0x201(%rbp), %rdi
callq 0x994f0
leaq -0x1d8(%rbp), %rdi
callq 0x992c0
leaq -0x1d9(%rbp), %rdi
callq 0x994f0
leaq -0x1b0(%rbp), %rdi
callq 0x992c0
leaq -0x1b1(%rbp), %rdi
callq 0x994f0
jmp 0xa6276
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa6276
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa624a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa6232
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0xa621a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x992c0
leaq -0x2f9(%rbp), %rdi
callq 0x994f0
leaq -0x2d0(%rbp), %rdi
callq 0x992c0
leaq -0x2d1(%rbp), %rdi
callq 0x994f0
leaq -0x2a8(%rbp), %rdi
callq 0x992c0
leaq -0x2a9(%rbp), %rdi
callq 0x994f0
jmp 0xa626a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x288(%rbp), %rdi
callq 0xf9fc0
leaq -0x190(%rbp), %rdi
callq 0xed250
leaq -0xd8(%rbp), %rdi
callq 0x9f5f0
movq -0x108(%rbp), %rdi
callq 0x99840
nopw (%rax,%rax)