// File: /workspace/github_c_makefile_star2_O2/Encryptr[P]O-plus-plus/opp/opp.c
// Function: main
int main(int argc, const char** argv) 
{
	struct Opp_Options opts = {0};

	if (!opp_init())
		exit(1);

	if (!allocator_init())
		INTERNAL_ERROR("Allocator init fail");

	if (argc < 2) {
		opp_help();
		return 0;
	}

	opp_args(argc, argv, &opts);
	
	if (opts.live)
		opp_live_compiler(&opts, argv[argc-1]);
	else
		opp_init_module(argv[argc-1], &opts);

	// objdump -b binary -D -m i386:x86-64 -M intel out.bin 

	allocator_free();

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rsi, %rbx
movl %edi, %r14d
movb $0x0, 0x10(%rsp)
andq $0x0, 0x8(%rsp)
xorl %eax, %eax
callq 0x7a3c
testb %al, %al
jne 0x183e
leaq 0x885a(%rip), %rdi      # 0xa08c
leaq 0x8867(%rip), %rsi      # 0xa0a0
callq 0x9287
cmpl $0x1, %r14d
jg 0x1906
leaq 0x89fc(%rip), %rdi      # 0xa24b
callq 0x1060
leaq 0x8904(%rip), %rdi      # 0xa15f
leaq 0x8913(%rip), %rsi      # 0xa175
xorl %eax, %eax
callq 0x10e0
leaq 0x89fd(%rip), %rdi      # 0xa26d
callq 0x1060
leaq 0x8a16(%rip), %rdi      # 0xa292
callq 0x1060
leaq 0x8a39(%rip), %rdi      # 0xa2c1
callq 0x1060
leaq 0x8a5e(%rip), %rdi      # 0xa2f2
callq 0x1060
leaq 0x8a86(%rip), %rdi      # 0xa326
callq 0x1060
leaq 0x8a9e(%rip), %rdi      # 0xa34a
callq 0x1060
leaq 0x8abd(%rip), %rdi      # 0xa375
callq 0x1060
leaq 0x8ade(%rip), %rdi      # 0xa3a2
callq 0x1060
leaq 0x8afb(%rip), %rdi      # 0xa3cb
callq 0x1060
leaq 0x8b10(%rip), %rdi      # 0xa3ec
callq 0x1060
leaq 0x8b31(%rip), %rdi      # 0xa419
callq 0x1060
leaq 0x8b50(%rip), %rdi      # 0xa444
callq 0x1060
pushq $0xa
popq %rdi
callq 0x1040
jmp 0x1bb7
movb $0x1, 0xc(%rsp)
leaq 0x8869(%rip), %rax      # 0xa17b
movq %rax, 0xe8b7(%rip)      # 0x101d0
movq %r14, 0x20(%rsp)
decl %r14d
pushq $0x1
popq %r13
movl $0x0, 0x18(%rsp)
leaq 0x8989(%rip), %r15      # 0xa2bd
cmpl %r14d, %r13d
jge 0x1ac5
movslq %r13d, %r12
movq (%rbx,%r12,8), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x1140
testl %eax, %eax
je 0x1a5b
movq %rbp, %rdi
leaq 0x8824(%rip), %rsi      # 0xa185
callq 0x1140
testl %eax, %eax
je 0x1a62
movq %rbp, %rdi
leaq 0x8813(%rip), %rsi      # 0xa18b
callq 0x1140
testl %eax, %eax
je 0x1a69
movq %rbp, %rdi
leaq 0x8801(%rip), %rsi      # 0xa190
callq 0x1140
testl %eax, %eax
je 0x1a70
movb (%rbp), %r15b
cmpb $0x2d, %r15b
jne 0x19b6
cmpb $0x64, 0x1(%rbp)
jne 0x19b6
cmpb $0x0, 0x2(%rbp)
je 0x1a92
movq %rbp, %rdi
leaq 0x87d5(%rip), %rsi      # 0xa195
callq 0x1140
testl %eax, %eax
je 0x1a7d
movq %rbp, %rdi
leaq 0x87c2(%rip), %rsi      # 0xa199
callq 0x1140
testl %eax, %eax
je 0x1a84
cmpb $0x2d, %r15b
jne 0x19fa
cmpb $0x77, 0x1(%rbp)
jne 0x19fa
cmpb $0x0, 0x2(%rbp)
je 0x1ab1
movq %rbp, %rdi
leaq 0x879c(%rip), %rsi      # 0xa1a0
callq 0x1140
testl %eax, %eax
leaq 0x88ab(%rip), %r15      # 0xa2bd
je 0x1a8b
movq %rbp, %rdi
leaq 0x8789(%rip), %rsi      # 0xa1a7
callq 0x1140
testl %eax, %eax
je 0x1a99
movq %rbp, %rdi
leaq 0x877c(%rip), %rsi      # 0xa1ad
callq 0x1140
testl %eax, %eax
je 0x1aa0
leaq 0x8772(%rip), %rdi      # 0xa1b3
leaq 0x8786(%rip), %rsi      # 0xa1ce
movq %rbp, %rdx
leaq 0x883b(%rip), %rcx      # 0xa28d
xorl %eax, %eax
callq 0x10e0
jmp 0x1abd
movb $0x1, 0x9(%rsp)
jmp 0x1abd
movb $0x0, 0x9(%rsp)
jmp 0x1abd
movb $0x1, 0xf(%rsp)
jmp 0x1abd
movb $0x1, 0x10(%rsp)
movb $0x1, %al
movl %eax, 0x18(%rsp)
jmp 0x1abd
movb $0x1, 0xa(%rsp)
jmp 0x1ab6
movb $0x1, 0xb(%rsp)
jmp 0x1ab6
movb $0x1, 0xd(%rsp)
jmp 0x1abd
movb $0x1, 0x8(%rsp)
jmp 0x1ab6
movb $0x1, 0xe(%rsp)
jmp 0x1abd
incl %r13d
movq 0x8(%rbx,%r12,8), %rax
movq %rax, 0xe721(%rip)      # 0x101d0
jmp 0x1abd
movb $0x0, 0xc(%rsp)
leaq 0x8800(%rip), %r15      # 0xa2bd
incl %r13d
jmp 0x1934
movl 0x20(%rsp), %eax
movq -0x8(%rbx,%rax,8), %rbx
testb $0x1, 0x18(%rsp)
je 0x1ba3
leaq 0x86f4(%rip), %rdi      # 0xa1d4
leaq 0x85e3(%rip), %rsi      # 0xa0ca
leaq 0x879f(%rip), %rdx      # 0xa28d
xorl %eax, %eax
callq 0x10e0
pushq $0x50
popq %rdi
callq 0x1180
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x132c
movq %r14, 0x18(%rsp)
movq %r14, %rdi
callq 0x7b90
movq %rax, %r14
movq %rax, %rdi
callq 0x7eee
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x1bcc
movq %rax, %rdi
callq 0x1c34
leaq 0x28(%rsp), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1160
movq 0x58(%r12), %rbp
xorl %r14d, %r14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1160
movq 0x80(%rsp), %r13
cmpq %r13, %rbp
jge 0x1b50
leal 0x1(%r14), %r15d
leaq 0x8680(%rip), %rdi      # 0xa1f3
leaq 0x86a6(%rip), %rsi      # 0xa220
movq %rbx, %rdx
movl %r14d, %ecx
leaq 0x8706(%rip), %r8       # 0xa28d
xorl %eax, %eax
callq 0x10e0
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x132c
movq %r13, %rbp
movl %r15d, %r14d
jmp 0x1b50
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1441
xorl %eax, %eax
callq 0x7b04
xorl %eax, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop