// File: /workspace/github_c_makefile_star2_O3/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)
movq $0x0, 0x8(%rsp)
xorl %eax, %eax
callq 0x7e28
testb %al, %al
jne 0x1859
leaq 0x983f(%rip), %rdi      # 0xb08c
leaq 0x984c(%rip), %rsi      # 0xb0a0
callq 0x97b3
cmpl $0x1, %r14d
jg 0x1923
leaq 0x99e1(%rip), %rdi      # 0xb24b
callq 0x1060
leaq 0x98e9(%rip), %rdi      # 0xb15f
leaq 0x98f8(%rip), %rsi      # 0xb175
xorl %eax, %eax
callq 0x10e0
leaq 0x99e2(%rip), %rdi      # 0xb26d
callq 0x1060
leaq 0x99fb(%rip), %rdi      # 0xb292
callq 0x1060
leaq 0x9a1e(%rip), %rdi      # 0xb2c1
callq 0x1060
leaq 0x9a43(%rip), %rdi      # 0xb2f2
callq 0x1060
leaq 0x9a6b(%rip), %rdi      # 0xb326
callq 0x1060
leaq 0x9a83(%rip), %rdi      # 0xb34a
callq 0x1060
leaq 0x9aa2(%rip), %rdi      # 0xb375
callq 0x1060
leaq 0x9ac3(%rip), %rdi      # 0xb3a2
callq 0x1060
leaq 0x9ae0(%rip), %rdi      # 0xb3cb
callq 0x1060
leaq 0x9af5(%rip), %rdi      # 0xb3ec
callq 0x1060
leaq 0x9b16(%rip), %rdi      # 0xb419
callq 0x1060
leaq 0x9b35(%rip), %rdi      # 0xb444
callq 0x1060
movl $0xa, %edi
callq 0x1040
jmp 0x1be8
movb $0x1, 0xc(%rsp)
leaq 0x984c(%rip), %rax      # 0xb17b
movq %rax, 0xe89a(%rip)      # 0x101d0
cmpl $0x2, %r14d
je 0x1bcf
movq %r14, 0x20(%rsp)
leal -0x1(%r14), %r13d
movl $0x1, %r12d
movl $0x0, 0x18(%rsp)
leaq 0x995f(%rip), %r15      # 0xb2bd
movslq %r12d, %r14
movq (%rbx,%r14,8), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x1140
testl %eax, %eax
je 0x1a7c
movq %rbp, %rdi
leaq 0x9803(%rip), %rsi      # 0xb185
callq 0x1140
testl %eax, %eax
je 0x1a83
movq %rbp, %rdi
leaq 0x97f2(%rip), %rsi      # 0xb18b
callq 0x1140
testl %eax, %eax
je 0x1a8a
movq %rbp, %rdi
leaq 0x97e0(%rip), %rsi      # 0xb190
callq 0x1140
testl %eax, %eax
je 0x1a91
movb (%rbp), %r15b
cmpb $0x2d, %r15b
jne 0x19d7
cmpb $0x64, 0x1(%rbp)
jne 0x19d7
cmpb $0x0, 0x2(%rbp)
je 0x1ab3
movq %rbp, %rdi
leaq 0x97b4(%rip), %rsi      # 0xb195
callq 0x1140
testl %eax, %eax
je 0x1a9e
movq %rbp, %rdi
leaq 0x97a1(%rip), %rsi      # 0xb199
callq 0x1140
testl %eax, %eax
je 0x1aa5
cmpb $0x2d, %r15b
jne 0x1a1b
cmpb $0x77, 0x1(%rbp)
jne 0x1a1b
cmpb $0x0, 0x2(%rbp)
je 0x1ad3
movq %rbp, %rdi
leaq 0x977b(%rip), %rsi      # 0xb1a0
callq 0x1140
testl %eax, %eax
leaq 0x988a(%rip), %r15      # 0xb2bd
je 0x1aac
movq %rbp, %rdi
leaq 0x9768(%rip), %rsi      # 0xb1a7
callq 0x1140
testl %eax, %eax
je 0x1aba
movq %rbp, %rdi
leaq 0x975b(%rip), %rsi      # 0xb1ad
callq 0x1140
testl %eax, %eax
je 0x1ac1
leaq 0x9751(%rip), %rdi      # 0xb1b3
leaq 0x9765(%rip), %rsi      # 0xb1ce
movq %rbp, %rdx
leaq 0x981a(%rip), %rcx      # 0xb28d
xorl %eax, %eax
callq 0x10e0
jmp 0x1adf
movb $0x1, 0x9(%rsp)
jmp 0x1adf
movb $0x0, 0x9(%rsp)
jmp 0x1adf
movb $0x1, 0xf(%rsp)
jmp 0x1adf
movb $0x1, 0x10(%rsp)
movb $0x1, %al
movl %eax, 0x18(%rsp)
jmp 0x1adf
movb $0x1, 0xa(%rsp)
jmp 0x1ad8
movb $0x1, 0xb(%rsp)
jmp 0x1ad8
movb $0x1, 0xd(%rsp)
jmp 0x1adf
movb $0x1, 0x8(%rsp)
jmp 0x1ad8
movb $0x1, 0xe(%rsp)
jmp 0x1adf
leal 0x1(%r14), %r12d
movq 0x8(%rbx,%r14,8), %rax
movq %rax, 0xe6ff(%rip)      # 0x101d0
jmp 0x1adf
movb $0x0, 0xc(%rsp)
leaq 0x97de(%rip), %r15      # 0xb2bd
incl %r12d
cmpl %r13d, %r12d
jl 0x195e
testb $0x1, 0x18(%rsp)
movq 0x20(%rsp), %r14
je 0x1bcf
movl %r14d, %eax
movq -0x8(%rbx,%rax,8), %rbx
leaq 0x96ca(%rip), %rdi      # 0xb1d4
leaq 0x95b9(%rip), %rsi      # 0xb0ca
leaq 0x9775(%rip), %rdx      # 0xb28d
xorl %eax, %eax
callq 0x10e0
movl $0x50, %edi
callq 0x1180
movq %rax, %r14
movq %rbx, %rdi
movq %rax, %rsi
callq 0x132c
movq %r14, 0x18(%rsp)
movq %r14, %rdi
callq 0x7f8c
movq %rax, %r14
movq %rax, %rdi
callq 0x832b
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x1bfc
movq %rax, %rdi
callq 0x1c69
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 0x1b7c
leal 0x1(%r14), %r15d
leaq 0x9654(%rip), %rdi      # 0xb1f3
leaq 0x967a(%rip), %rsi      # 0xb220
movq %rbx, %rdx
movl %r14d, %ecx
leaq 0x96da(%rip), %r8       # 0xb28d
xorl %eax, %eax
callq 0x10e0
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x132c
movq %r13, %rbp
movl %r15d, %r14d
jmp 0x1b7c
movl %r14d, %eax
movq -0x8(%rbx,%rax,8), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1455
xorl %eax, %eax
callq 0x7ef5
xorl %eax, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq