// File: /workspace/github_c_makefile_star2_O3/azhai[P]mlite/mlite.c
// Function: main
int main(int argc, char **argv) {
	int	run_script;
	char	*argv0;

	if (argc > 1 && !strcmp(argv[1], "-i")) {
		if (argc < 2) {
			usage(1);
			bye(1);
		}
		argv += 2;
	}
	init();
	signal(SIGQUIT, keyboard_quit);
	signal(SIGTERM, terminated);
	load_library(argv[0]);
	argv0 = *argv++;
	init_extensions();
	while (*argv != NULL) {
		if (**argv != '-')
			break;
		(*argv)++;
		while (**argv) {
			switch (**argv)  {
			case '-':
				Command_line = ++argv;
				break;
			case 'd':
				if (argv[1] == NULL)
					usage(1);
				dump_image(argv[1]);
				bye(Error_flag? 1: 0);
				break;
			case 'f':
			case 'l':
				if (argv[1] == NULL)
					usage(1);
				run_script = **argv == 'f';
				if (run_script) {
					Quiet_mode = 1;
					Command_line = &argv[2];
				}
				if (load(argv[1]))
					error("program file not found",
						make_string(argv[1],
							(int)strlen(argv[1])));
				if (Error_flag)
					bye(1);
				if (run_script)
					bye(0);
				argv++;
				*argv = &(*argv)[strlen(*argv)];
				break;
			case 'g':
				Verbose_GC++;
				(*argv)++;
				break;
			case 'm':
				if (argv[1] == NULL)
					usage(1);
				Memory_limit_kn = get_size_k(argv[1]);
				argv++;
				*argv += strlen(*argv);
				break;
			case 'q':
				Quiet_mode = 1;
				(*argv)++;
				break;
			case 't':
				if (argv[1] == NULL)
					usage(1);
				Proc_max = atoi(argv[1]);
				if (Proc_max > MAX_CALL_TRACE)
					Proc_max = MAX_CALL_TRACE;
				argv++;
				*argv += strlen(*argv);
				break;
			case 'v':
				version_info(argv0);
				bye(0);
				break;
			case 'h':
			case '?':
				long_usage();
				bye(0);
				break;
			default:
				usage(1);
				break;
			}
			if (Command_line)
				break;
		}
		if (Command_line)
			break;
		argv++;
	}
	if (!Command_line && argv[0] != NULL)
		usage(1);
	if (!Quiet_mode)
		pr("mLite\n");
	repl();
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
cmpl $0x2, %edi
jl 0x1574b
movq 0x8(%rbx), %rcx
cmpb $0x2d, (%rcx)
jne 0x15746
cmpb $0x69, 0x1(%rcx)
jne 0x15746
xorl %eax, %eax
cmpb $0x0, 0x2(%rcx)
sete %al
shll $0x4, %eax
jmp 0x15748
xorl %eax, %eax
addq %rax, %rbx
callq 0x14d72
leaq -0x1623(%rip), %rsi     # 0x14134
movl $0x3, %edi
callq 0x3120
leaq -0x1624(%rip), %rsi     # 0x14144
movl $0xf, %edi
callq 0x3120
movq (%rbx), %rdi
callq 0x147bb
movq (%rbx), %rax
movq %rax, -0x30(%rbp)
callq 0x151f6
leaq 0x9bf(%rip), %r13       # 0x1614c
movq 0x8(%rbx), %rax
testq %rax, %rax
je 0x1595d
cmpb $0x2d, (%rax)
jne 0x15988
addq $0x8, %rbx
incq %rax
movq %rax, (%rbx)
movq (%rbx), %rax
movb (%rax), %r15b
movzbl %r15b, %ecx
cmpl $0x63, %ecx
jle 0x15928
addl $-0x64, %ecx
cmpl $0x12, %ecx
ja 0x15936
movslq (%r13,%rcx,4), %rcx
addq %r13, %rcx
jmpq *%rcx
cmpq $0x0, 0x8(%rbx)
jne 0x157ed
movl $0x1, %edi
callq 0x152ee
movq (%rbx), %rax
movb (%rax), %r15b
cmpb $0x66, %r15b
jne 0x15808
movl $0x1, 0x8dbb(%rip)      # 0x1e5b8
leaq 0x10(%rbx), %rax
movq %rax, 0x93d0(%rip)      # 0x1ebd8
addq $0x8, %rbx
movq (%rbx), %rdi
callq 0x11853
testl %eax, %eax
je 0x15872
movq (%rbx), %r12
movq %r12, %rdi
callq 0x30a0
movq %rax, %r13
incl %r13d
movq $-0x21, %rdi
movl %r13d, %esi
callq 0x416e
movq %rax, %r14
movq 0x8d7e(%rip), %rax      # 0x1e5c0
movq (%rax,%r14,8), %rdi
shlq $0x3, %rdi
addq 0x8d97(%rip), %rdi      # 0x1e5e8
movslq %r13d, %rdx
leaq 0x8f1(%rip), %r13       # 0x1614c
movq %r12, %rsi
callq 0x3050
leaq 0x2051(%rip), %rdi      # 0x178bb
movq %r14, %rsi
callq 0x33eb
cmpl $0x0, 0x8d3b(%rip)      # 0x1e5b4
jne 0x159a5
cmpb $0x66, %r15b
jne 0x158b0
jmp 0x159b8
movq 0x8(%rbx), %rdi
addq $0x8, %rbx
testq %rdi, %rdi
jne 0x158a4
movl $0x1, %edi
callq 0x152ee
movq (%rbx), %rdi
callq 0x156bd
movq %rax, 0x8dc0(%rip)      # 0x1e670
movq (%rbx), %r14
movq %r14, %rdi
callq 0x30a0
addq %r14, %rax
jmp 0x15915
movl $0x1, 0x8cee(%rip)      # 0x1e5b8
jmp 0x158d2
incl 0x881e(%rip)            # 0x1e0f0
incq %rax
jmp 0x15915
movq 0x8(%rbx), %r12
addq $0x8, %rbx
testq %r12, %r12
jne 0x158f1
movl $0x1, %edi
callq 0x152ee
movq (%rbx), %r12
movq %r12, %rdi
callq 0x31e0
cmpl $0x64, %eax
movl $0x64, %ecx
cmovgel %ecx, %eax
movl %eax, 0x8982(%rip)      # 0x1e28c
movq %r12, %rdi
callq 0x30a0
addq %r12, %rax
movq %rax, (%rbx)
cmpq $0x0, 0x92b8(%rip)      # 0x1ebd8
je 0x157ad
jmp 0x1595d
testl %ecx, %ecx
je 0x15942
cmpl $0x2d, %ecx
je 0x15952
cmpl $0x3f, %ecx
je 0x1599e
movl $0x1, %edi
callq 0x152ee
jmp 0x15918
cmpq $0x0, 0x928e(%rip)      # 0x1ebd8
je 0x1578d
jmp 0x1595d
addq $0x8, %rbx
movq %rbx, 0x927b(%rip)      # 0x1ebd8
cmpl $0x0, 0x8c54(%rip)      # 0x1e5b8
jne 0x15972
leaq 0x1f65(%rip), %rdi      # 0x178d2
callq 0x3964
callq 0x14158
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpq $0x0, 0x9248(%rip)      # 0x1ebd8
jne 0x1595d
movl $0x1, %edi
callq 0x152ee
jmp 0x1595d
callq 0x15345
jmp 0x159b8
movl $0x1, %edi
callq 0x3200
movq -0x30(%rbp), %rdi
callq 0x15467
xorl %edi, %edi
callq 0x3200
movq 0x8(%rbx), %rdi
testq %rdi, %rdi
jne 0x159d6
movl $0x1, %edi
callq 0x152ee
movq 0x8(%rbx), %rdi
callq 0x11f2a
xorl %edi, %edi
cmpl $0x0, 0x8bd0(%rip)      # 0x1e5b4
setne %dil
callq 0x3200