// File: /workspace/github_c_makefile_star2_O2/OstCollector[P]config2c/config2c.c
// Function: main
int main(int argc, char **argv)
{
	const char *header_filename;
	const struct node_type_def_list *list;

	parse_opts(argc, argv);
	if (do_help) {
		fprintf(stderr, "%s", help_msg);
		return 0;
	} else if (do_version) {
		fprintf(stderr, "config2c, version: %s\n", VERSION);
		return 0;
	}

	yyin = fopen(spec_path, "r");
	if (!yyin) {
		ERR("failed to open spec file %s to read\n", spec_path);
	}

	fp_prelude = fopen(prelude_path, "r");
	if (!fp_prelude) {
		ERR("failed to open prelude file %s to read\n", spec_path);
	}
	fp_prim = fopen(prim_path, "r");
	if (!fp_prim) {
		ERR("failed to open primitive types file %s to read\n", prim_path);
	}

	yyparse();

	fprintf(stderr, "spec file parsed\n");

	fp_hdr = fopen(hdr_path, "w");
	if (!fp_hdr) {
		ERR("failed to open header file %s to write\n", hdr_path);
	}
	fp_src = fopen(src_path, "w");
	if (!fp_src) {
		ERR("failed to open source file %s to write\n", src_path);
	}

	verify_def_list(ast);

	out_hdr("#ifndef %s\n", include_guard);
	out_hdr("#define %s\n", include_guard);
	
	header_filename = strrchr(hdr_path, '/');
	if (!header_filename) {
		header_filename = hdr_path;
	}
	out_src("#include \"%s\"\n", header_filename);
	out_src("#include \"parser.h\"\n", header_filename);
	if (test_default) {
		osi(0, "#include <stdarg.h>\n");
	}

	copy_file(fp_hdr, fp_prelude);
	copy_file(fp_src, fp_prim);

	out_src(indent_dump_fmt);	
	decl_def_list(ast);
	parse_type_def_list(ast);
	free_type_def_list(ast);
	dump_type_def_list(ast);

	out_hdr("struct dump_context;\n");
	out_hdr("typedef void (*put_func)(struct dump_context *ctx, "
			"const char *fmt, ...);\n");
	if (test_default) {
		make_test_default();
	} else {
		for (list = ast; list; list = list->next) {
			if (list->type == NODE_TYPE_DEF_STRUCT &&
					list->struct_def.exported) {
				out_src(parser_func_fmt, list->struct_def.name,
						list->struct_def.name,
						list->struct_def.name);
				out_src(config_dump, list->struct_def.name,
						list->struct_def.name,
						list->struct_def.name);
				out_src(config_free, list->struct_def.name,
						list->struct_def.name,
						list->struct_def.name);
				out_hdr("extern void config_free_%s(struct %s *);\n",
						list->struct_def.name,
						list->struct_def.name);
				out_hdr("extern int config_parse_%s(struct %s *value, "
						"const char *path, const char **err_msg);\n",
						list->struct_def.name,
						list->struct_def.name);
				out_hdr("extern void config_dump_%s(put_func, "
						"struct dump_context *ctx, "
						"const struct %s *value);\n",
						list->struct_def.name,
						list->struct_def.name);
			}
		}
	}

	out_hdr("#endif\n");
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
callq 0x23ae
cmpl $0x0, 0xcaef(%rip)      # 0x11294
jne 0x48d1
cmpl $0x0, 0xcae6(%rip)      # 0x11298
jne 0x48ec
movq 0xcaa1(%rip), %rdi      # 0x11260
leaq 0x9f59(%rip), %rsi      # 0xe71f
callq 0x2170
leaq 0xcb06(%rip), %rcx      # 0x112d8
movq %rax, (%rcx)
testq %rax, %rax
je 0x5e64
movq 0xca8b(%rip), %rdi      # 0x11270
leaq 0x9f33(%rip), %rsi      # 0xe71f
callq 0x2170
movq %rax, 0xcab8(%rip)      # 0x112b0
testq %rax, %rax
je 0x5e7e
movq 0xca60(%rip), %rdi      # 0x11268
leaq 0x9f10(%rip), %rsi      # 0xe71f
callq 0x2170
movq %rax, 0xca9d(%rip)      # 0x112b8
testq %rax, %rax
je 0x5e98
callq 0x95f8
movq 0xc7c0(%rip), %r15      # 0x10ff0
movq (%r15), %rcx
leaq 0x78b1(%rip), %rdi      # 0xc0eb
pushq $0x11
popq %rsi
pushq $0x1
popq %rdx
callq 0x2190
movq 0xca2c(%rip), %rdi      # 0x11278
leaq 0x9979(%rip), %rsi      # 0xe1cc
callq 0x2170
movq %rax, 0xca61(%rip)      # 0x112c0
testq %rax, %rax
je 0x5ed0
movq 0xca11(%rip), %rdi      # 0x11280
leaq 0x9956(%rip), %rsi      # 0xe1cc
callq 0x2170
movq %rax, 0xca1e(%rip)      # 0x112a0
testq %rax, %rax
je 0x5ee3
leaq 0xca16(%rip), %r14      # 0x112a8
pushq $0x1
popq %rbx
movq (%r14), %r14
testq %r14, %r14
je 0x4910
movl 0x8(%r14), %eax
cmpl $0x2, %eax
je 0x48be
cmpl $0x1, %eax
jne 0x4895
movq 0x10(%r14), %rdx
movq 0x18(%r14), %rdi
movl %ebx, %esi
xorl %ecx, %ecx
callq 0x7eef
jmp 0x4895
movq 0x10(%r14), %rdx
movq 0x20(%r14), %rdi
movl %ebx, %esi
xorl %ecx, %ecx
callq 0x80d4
jmp 0x4895
movq 0xc718(%rip), %rax      # 0x10ff0
movq (%rax), %rsi
movq 0xc94e(%rip), %rdi      # 0x11230
callq 0x20c0
jmp 0x5d32
movq 0xc6fd(%rip), %rax      # 0x10ff0
movq (%rax), %rdi
leaq 0x774e(%rip), %rsi      # 0xc04b
leaq 0x775e(%rip), %rdx      # 0xc062
xorl %eax, %eax
callq 0x2100
jmp 0x5d32
movq 0xc9a9(%rip), %rdi      # 0x112c0
movq 0xc96a(%rip), %rdx      # 0x11288
leaq 0x7828(%rip), %rsi      # 0xc14d
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5ec8
movq 0xc985(%rip), %rdi      # 0x112c0
movq 0xc946(%rip), %rdx      # 0x11288
leaq 0x7810(%rip), %rsi      # 0xc159
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5ec8
movq 0xc919(%rip), %r14      # 0x11278
pushq $0x2f
popq %rsi
movq %r14, %rdi
callq 0x20b0
movq %rax, %rbx
testq %rax, %rax
cmoveq %r14, %rbx
movq 0xc925(%rip), %rdi      # 0x112a0
leaq 0x77e3(%rip), %rsi      # 0xc165
movq %rbx, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5ec8
movq 0xc905(%rip), %rdi      # 0x112a0
leaq 0x77d2(%rip), %rsi      # 0xc174
movq %rbx, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5ec8
cmpl $0x0, 0xc8d5(%rip)      # 0x11290
je 0x49e1
xorl %edi, %edi
callq 0x4593
movq 0xc8d5(%rip), %rdi      # 0x112a0
leaq 0x77b7(%rip), %rsi      # 0xc189
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5ec8
movq 0xc8d8(%rip), %rdi      # 0x112c0
movq 0xc8c1(%rip), %rsi      # 0x112b0
callq 0x26c3
movq 0xc8a5(%rip), %rdi      # 0x112a0
movq 0xc8b6(%rip), %rsi      # 0x112b8
callq 0x26c3
movq 0xc892(%rip), %rdi      # 0x112a0
leaq 0x678b(%rip), %rsi      # 0xb1a0
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
leaq 0xc87d(%rip), %rbx      # 0x112a8
movq 0xc876(%rip), %rdi      # 0x112a8
callq 0x2da7
pushq $0x2
popq %r12
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x567a
movl 0x8(%rbx), %eax
cmpl $0x2, %eax
je 0x4cda
cmpl $0x1, %eax
je 0x4cc8
testl %eax, %eax
jne 0x4a3b
movq 0x10(%rbx), %r15
movq 0x18(%rbx), %r13
xorl %edi, %edi
callq 0x4593
movq 0xc82a(%rip), %rdi      # 0x112a0
leaq 0x8c40(%rip), %rsi      # 0xd6bd
movq %r15, %rdx
movq %r15, %rcx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xc800(%rip), %rdi      # 0x112a0
leaq 0x8cf2(%rip), %rsi      # 0xd799
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
pushq $0x1
popq %r14
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xc7d7(%rip), %rdi      # 0x112a0
leaq 0x8c52(%rip), %rsi      # 0xd722
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc7b2(%rip), %rdi      # 0x112a0
leaq 0x7cac(%rip), %rsi      # 0xc7a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc78d(%rip), %rdi      # 0x112a0
leaq 0x8c2e(%rip), %rsi      # 0xd748
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc768(%rip), %rdi      # 0x112a0
leaq 0x7cae(%rip), %rsi      # 0xc7ed
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xc743(%rip), %rdi      # 0x112a0
leaq 0x72dd(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xc71e(%rip), %rdi      # 0x112a0
testq %r13, %r13
je 0x5416
movq 0x8(%r13), %rdx
leaq 0x8bdf(%rip), %rsi      # 0xd775
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc6ec(%rip), %rdi      # 0x112a0
movq 0x8(%r13), %rdx
leaq 0x8bdd(%rip), %rsi      # 0xd79c
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc6c3(%rip), %rdi      # 0x112a0
leaq 0x7285(%rip), %rsi      # 0xbe69
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xc69e(%rip), %rdi      # 0x112a0
leaq 0x7238(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
cmpq $0x0, 0x10(%r13)
je 0x4cbf
movl %r14d, %edi
callq 0x4593
movq 0xc66e(%rip), %rdi      # 0x112a0
movq 0x10(%r13), %rdx
leaq 0x8b38(%rip), %rsi      # 0xd775
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc645(%rip), %rdi      # 0x112a0
movq 0x8(%r13), %rdx
leaq 0x8b36(%rip), %rsi      # 0xd79c
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc61c(%rip), %rdi      # 0x112a0
leaq 0x71de(%rip), %rsi      # 0xbe69
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xc5f7(%rip), %rdi      # 0x112a0
leaq 0x7191(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq (%r13), %r13
jmp 0x4b73
movq 0x10(%rbx), %rdi
movq 0x18(%rbx), %rsi
callq 0x31b3
jmp 0x4a3b
movq 0x10(%rbx), %r15
movq 0x18(%rbx), %r13
movq %rbx, -0x68(%rbp)
movq 0x20(%rbx), %r14
movl $0x1, -0x50(%rbp)
andl $0x0, -0x30(%rbp)
xorl %edi, %edi
callq 0x4593
movq 0xc59d(%rip), %rdi      # 0x112a0
leaq 0x8ad0(%rip), %rsi      # 0xd7da
movq %r15, %rdx
movq %r15, %rcx
movq %r13, %r8
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xc570(%rip), %rdi      # 0x112a0
leaq 0x8a62(%rip), %rsi      # 0xd799
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
pushq $0x1
popq %rbx
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc549(%rip), %rdi      # 0x112a0
leaq 0x7987(%rip), %rsi      # 0xc6e5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc525(%rip), %rdi      # 0x112a0
leaq 0x796d(%rip), %rsi      # 0xc6ef
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc501(%rip), %rdi      # 0x112a0
leaq 0x8ab0(%rip), %rsi      # 0xd856
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc4dd(%rip), %rdi      # 0x112a0
leaq 0x795d(%rip), %rsi      # 0xc727
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc4b9(%rip), %rdi      # 0x112a0
leaq 0x8a84(%rip), %rsi      # 0xd872
xorl %eax, %eax
callq 0x2100
movq %r14, %r13
testl %eax, %eax
js 0x5e3d
testq %r13, %r13
je 0x4e6f
cmpl $0x3, 0x8(%r13)
jne 0x4e41
movq 0x10(%r13), %rdi
callq 0x65ea
movq %rax, %r15
pushq $0x1
popq %rdi
callq 0x4593
movq 0xc479(%rip), %rdi      # 0x112a0
movq 0x38(%r13), %rdx
leaq 0x8a51(%rip), %rsi      # 0xd883
movq %r15, %rcx
pushq $0x1
popq %rbx
xorl %eax, %eax
callq 0x2100
jmp 0x4e61
movl %ebx, %edi
callq 0x4593
movq 0xc451(%rip), %rdi      # 0x112a0
movq 0x38(%r13), %rdx
leaq 0x8a43(%rip), %rsi      # 0xd89d
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq (%r13), %r13
jmp 0x4e00
movl %ebx, %edi
callq 0x4593
movq 0xc423(%rip), %rdi      # 0x112a0
leaq 0x78fa(%rip), %rsi      # 0xc77e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc3fe(%rip), %rdi      # 0x112a0
leaq 0x78f8(%rip), %rsi      # 0xc7a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc3d9(%rip), %rdi      # 0x112a0
leaq 0x78e7(%rip), %rsi      # 0xc7b5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc3b4(%rip), %rdi      # 0x112a0
leaq 0x78fa(%rip), %rsi      # 0xc7ed
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc390(%rip), %rdi      # 0x112a0
leaq 0x6f2a(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc36c(%rip), %rdi      # 0x112a0
leaq 0x78c3(%rip), %rsi      # 0xc7fe
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc347(%rip), %rdi      # 0x112a0
leaq 0x78d6(%rip), %rsi      # 0xc836
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
leaq 0x6ed1(%rip), %rbx      # 0xbe41
js 0x5e3d
pushq $0x3
popq %rdi
callq 0x4593
movq 0xc31b(%rip), %rdi      # 0x112a0
leaq 0x7ce7(%rip), %rsi      # 0xcc73
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc2f6(%rip), %rdi      # 0x112a0
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2100
movq %r14, %r15
testl %eax, %eax
jns 0x50f2
jmp 0x5e3d
movl 0x8(%r15), %eax
cmpq $0x3, %rax
ja 0x50ef
leaq 0x60bf(%rip), %rcx      # 0xb098
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
andq $0x0, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
andl $0x0, -0x60(%rbp)
jmp 0x50ce
andq $0x0, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
movl $0x2, -0x60(%rbp)
jmp 0x50ce
leaq 0x10(%r15), %r13
xorl %ebx, %ebx
movq (%r13), %r13
testq %r13, %r13
je 0x50ef
movl 0x8(%r13), %eax
cmpq $0x3, %rax
ja 0x50b2
leaq 0x606f(%rip), %rcx      # 0xb0a8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
andl $0x0, -0x60(%rbp)
jmp 0x5091
movq %rbx, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
movl $0x2, -0x60(%rbp)
jmp 0x5091
movq %rbx, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
movl $0x3, -0x60(%rbp)
jmp 0x5091
movq %rbx, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
movl $0x1, -0x60(%rbp)
movq 0x10(%r13), %rax
movq %rax, -0x58(%rbp)
leaq 0x28(%r13), %rdi
movq 0x18(%r13), %rdx
movq 0x20(%r13), %rcx
leaq -0x60(%rbp), %rsi
leaq -0x50(%rbp), %r8
callq 0x65ff
incq %rbx
jmp 0x5017
andq $0x0, -0x48(%rbp)
movq 0x38(%r15), %rax
movq %rax, -0x40(%rbp)
movl $0x1, -0x60(%rbp)
movq 0x10(%r15), %rax
movq %rax, -0x58(%rbp)
leaq 0x28(%r15), %rdi
movq 0x18(%r15), %rdx
movq 0x20(%r15), %rcx
leaq -0x60(%rbp), %rsi
leaq -0x50(%rbp), %r8
callq 0x65ff
movq (%r15), %r15
testq %r15, %r15
jne 0x4fc4
movl %r12d, %edi
callq 0x4593
movq 0xc196(%rip), %rdi      # 0x112a0
leaq 0x775f(%rip), %rsi      # 0xc870
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc171(%rip), %rdi      # 0x112a0
leaq 0x7754(%rip), %rsi      # 0xc88a
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
pushq $0x1
popq %rbx
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc149(%rip), %rdi      # 0x112a0
leaq 0x774b(%rip), %rsi      # 0xc8a9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc124(%rip), %rdi      # 0x112a0
leaq 0x8732(%rip), %rsi      # 0xd8b5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc100(%rip), %rdi      # 0x112a0
leaq 0x6c9a(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc0dc(%rip), %rdi      # 0x112a0
leaq 0x86fa(%rip), %rsi      # 0xd8c5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc0b7(%rip), %rdi      # 0x112a0
leaq 0x7680(%rip), %rsi      # 0xc870
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc092(%rip), %rdi      # 0x112a0
leaq 0x86c0(%rip), %rsi      # 0xd8d5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xc06d(%rip), %rdi      # 0x112a0
leaq 0x86c4(%rip), %rsi      # 0xd8fe
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xc049(%rip), %rdi      # 0x112a0
leaq 0x6be3(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
movq %r14, %r13
testl %eax, %eax
js 0x5e3d
testq %r13, %r13
je 0x549f
cmpl $0x3, 0x8(%r13)
jne 0x540d
movl %ebx, %edi
callq 0x4593
movq 0xc00e(%rip), %rdi      # 0x112a0
movq 0x38(%r13), %rdx
leaq 0x8671(%rip), %rsi      # 0xd90e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xbfe5(%rip), %r15      # 0x112a0
movq 0x10(%r13), %rdi
callq 0x65ea
movq %r15, %rdi
leaq 0x7e7a(%rip), %rsi      # 0xd148
movq %rax, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
pushq $0x3
popq %rdi
callq 0x4593
movq 0xbfb1(%rip), %rdi      # 0x112a0
movq 0x38(%r13), %rdx
leaq 0x862e(%rip), %rsi      # 0xd928
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
pushq $0x4
popq %r15
js 0x5e3d
movl %r15d, %edi
callq 0x4593
movq 0xbf84(%rip), %rdi      # 0x112a0
leaq 0x747e(%rip), %rsi      # 0xc7a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
pushq $0x1
popq %rbx
js 0x5e3d
movl %r15d, %edi
callq 0x4593
movq 0xbf5c(%rip), %rdi      # 0x112a0
leaq 0x85f3(%rip), %rsi      # 0xd93e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r15d, %edi
callq 0x4593
movq 0xbf37(%rip), %rdi      # 0x112a0
leaq 0x747d(%rip), %rsi      # 0xc7ed
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r15d, %edi
callq 0x4593
movq 0xbf12(%rip), %rdi      # 0x112a0
leaq 0x7524(%rip), %rsi      # 0xc8b9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
pushq $0x3
popq %rdi
callq 0x4593
movq 0xbeed(%rip), %rdi      # 0x112a0
leaq 0x6a87(%rip), %r15      # 0xbe41
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r12d, %edi
callq 0x4593
movq 0xbec5(%rip), %rdi      # 0x112a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xbea5(%rip), %rdi      # 0x112a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq (%r13), %r13
jmp 0x5270
leaq 0x7384(%rip), %rsi      # 0xc7a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xbe65(%rip), %rdi      # 0x112a0
leaq 0x8368(%rip), %rsi      # 0xd7aa
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xbe40(%rip), %rdi      # 0x112a0
leaq 0x8366(%rip), %rsi      # 0xd7cd
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xbe1c(%rip), %rdi      # 0x112a0
leaq 0x69b6(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x5651
jmp 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xbdf3(%rip), %rdi      # 0x112a0
leaq 0x69b5(%rip), %rsi      # 0xbe69
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xbdcf(%rip), %rdi      # 0x112a0
leaq 0x766d(%rip), %rsi      # 0xcb45
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
testq %r14, %r14
je 0x5605
cmpl $0x3, 0x8(%r14)
jne 0x55fd
movl %ebx, %edi
callq 0x4593
movq 0xbd97(%rip), %rdi      # 0x112a0
movq 0x38(%r14), %rdx
leaq 0x83fa(%rip), %rsi      # 0xd90e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
leaq 0x10(%r14), %r13
xorl %r15d, %r15d
leaq 0x6910(%rip), %rbx      # 0xbe41
movq (%r13), %r13
movl %r12d, %edi
callq 0x4593
movq 0xbd5c(%rip), %rdi      # 0x112a0
testq %r13, %r13
je 0x55e8
movq 0x38(%r14), %rdx
leaq 0x76de(%rip), %rsi      # 0xcc36
movq %r15, %rcx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl 0x8(%r13), %eax
cmpq $0x3, %rax
ja 0x55bf
leaq 0x5b3d(%rip), %rcx      # 0xb0b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
andl $0x0, -0x60(%rbp)
jmp 0x55a3
movl $0x2, -0x60(%rbp)
jmp 0x55a3
movl $0x3, -0x60(%rbp)
jmp 0x55a3
movl $0x1, -0x60(%rbp)
movq 0x10(%r13), %rax
movq %rax, -0x58(%rbp)
leaq 0x28(%r13), %rdi
movq 0x20(%r13), %rdx
leaq -0x60(%rbp), %rsi
movl %r12d, %ecx
callq 0x77fb
movl %r12d, %edi
callq 0x4593
movq 0xbcd2(%rip), %rdi      # 0x112a0
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2100
incq %r15
testl %eax, %eax
jns 0x5531
jmp 0x5e3d
movq %rbx, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
pushq $0x1
popq %rbx
js 0x5e3d
movq (%r14), %r14
jmp 0x54e7
movl %ebx, %edi
callq 0x4593
movq 0xbc8d(%rip), %rdi      # 0x112a0
leaq 0x7563(%rip), %rsi      # 0xcb7d
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xbc69(%rip), %rdi      # 0x112a0
leaq 0x6803(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x68(%rbp), %rbx
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xbc41(%rip), %rdi      # 0x112a0
leaq 0x6b21(%rip), %rsi      # 0xc187
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x4a3b
jmp 0x5e3d
leaq 0xbc27(%rip), %r15      # 0x112a8
leaq -0x50(%rbp), %r12
pushq $0x2
popq %rbx
leaq 0x5a49(%rip), %r14      # 0xb0d8
movq (%r15), %r15
testq %r15, %r15
je 0x58a1
movl 0x8(%r15), %eax
cmpl $0x2, %eax
je 0x56b8
cmpl $0x1, %eax
jne 0x568f
movq 0x10(%r15), %rdi
movq 0x18(%r15), %rsi
callq 0x409a
jmp 0x568f
movq 0x10(%r15), %rax
movq %rax, -0x78(%rbp)
movq 0x18(%r15), %rax
movq %rax, -0x68(%rbp)
movq %r15, -0x70(%rbp)
movq 0x20(%r15), %r13
xorl %edi, %edi
callq 0x4593
movq 0xbbc2(%rip), %rdi      # 0x112a0
leaq 0x828b(%rip), %rsi      # 0xd970
movq -0x78(%rbp), %rcx
movq %rcx, %rdx
movq -0x68(%rbp), %r8
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xbb93(%rip), %rdi      # 0x112a0
leaq 0x8085(%rip), %rsi      # 0xd799
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
pushq $0x1
popq %rdi
callq 0x4593
movq 0xbb6e(%rip), %rdi      # 0x112a0
leaq 0x7a9a(%rip), %rsi      # 0xd1d3
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
testq %r13, %r13
je 0x5850
pushq $0x1
popq %rdi
callq 0x4593
movq 0xbb40(%rip), %rdi      # 0x112a0
movq 0x38(%r13), %rdx
leaq 0x81a3(%rip), %rsi      # 0xd90e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl 0x8(%r13), %eax
cmpq $0x3, %rax
ja 0x5822
leaq 0x5939(%rip), %rcx      # 0xb0c8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
andl $0x0, -0x50(%rbp)
jmp 0x5808
movl $0x2, -0x50(%rbp)
jmp 0x5808
leaq 0x10(%r13), %r15
movq (%r15), %r15
testq %r15, %r15
je 0x5822
movl 0x8(%r15), %eax
cmpq $0x3, %rax
ja 0x57ab
movslq (%r14,%rax,4), %rax
addq %r14, %rax
jmpq *%rax
andl $0x0, -0x50(%rbp)
jmp 0x57e5
movl $0x2, -0x50(%rbp)
jmp 0x57e5
movl $0x3, -0x50(%rbp)
jmp 0x57e5
movl $0x1, -0x50(%rbp)
movq 0x10(%r15), %rax
movq %rax, -0x48(%rbp)
leaq 0x28(%r15), %rdi
movq 0x20(%r15), %rdx
movq %r12, %rsi
movl %ebx, %ecx
callq 0x77fb
jmp 0x57ab
movl $0x1, -0x50(%rbp)
movq 0x10(%r13), %rax
movq %rax, -0x48(%rbp)
leaq 0x28(%r13), %rdi
movq 0x20(%r13), %rdx
movq %r12, %rsi
movl %ebx, %ecx
callq 0x77fb
pushq $0x1
popq %rdi
callq 0x4593
movq 0xba6f(%rip), %rdi      # 0x112a0
leaq 0x6609(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq (%r13), %r13
jmp 0x5748
xorl %edi, %edi
callq 0x4593
movq 0xba42(%rip), %rdi      # 0x112a0
leaq 0x65dc(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xba1e(%rip), %rdi      # 0x112a0
leaq 0x68fe(%rip), %rsi      # 0xc187
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x70(%rbp), %r15
jns 0x568f
jmp 0x5e3d
leaq 0xba00(%rip), %r15      # 0x112a8
pushq $0x1
popq %r14
pushq $0x2
popq %rbx
leaq 0x799e(%rip), %r12      # 0xd254
leaq 0x583b(%rip), %r13      # 0xb0f8
movq (%r15), %r15
testq %r15, %r15
je 0x5ccd
movl 0x8(%r15), %eax
cmpl $0x2, %eax
je 0x59d6
cmpl $0x1, %eax
je 0x59c4
testl %eax, %eax
jne 0x58bd
movq 0x10(%r15), %r14
movq %r15, -0x68(%rbp)
movq 0x18(%r15), %r15
xorl %edi, %edi
callq 0x4593
movq 0xb9a3(%rip), %rdi      # 0x112a0
leaq 0x80ae(%rip), %rsi      # 0xd9b2
movq %r14, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xb979(%rip), %rdi      # 0x112a0
leaq 0x7e6b(%rip), %rsi      # 0xd799
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
testq %r15, %r15
je 0x5bec
pushq $0x1
popq %rdi
callq 0x4593
movq 0xb94b(%rip), %rdi      # 0x112a0
movq 0x8(%r15), %rdx
leaq 0x80ac(%rip), %rsi      # 0xda0c
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %ebx, %edi
callq 0x4593
movq 0xb923(%rip), %rdi      # 0x112a0
movq 0x8(%r15), %rdx
leaq 0x8099(%rip), %rsi      # 0xda21
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
pushq $0x1
popq %rdi
callq 0x4593
movq 0xb8fa(%rip), %rdi      # 0x112a0
leaq 0x6494(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq (%r15), %r15
jmp 0x593d
movq 0x10(%r15), %rdi
movq 0x18(%r15), %rsi
callq 0x42cc
jmp 0x58bd
movq 0x10(%r15), %rax
movq %rax, -0x70(%rbp)
movq 0x18(%r15), %rax
movq %rax, -0x78(%rbp)
movq %r15, -0x68(%rbp)
movq 0x20(%r15), %r15
xorl %edi, %edi
callq 0x4593
movq 0xb8a4(%rip), %rdi      # 0x112a0
leaq 0x8030(%rip), %rsi      # 0xda33
movq -0x70(%rbp), %rcx
movq %rcx, %rdx
movq -0x78(%rbp), %r8
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xb875(%rip), %rdi      # 0x112a0
leaq 0x7d67(%rip), %rsi      # 0xd799
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xb850(%rip), %rdi      # 0x112a0
leaq 0x777c(%rip), %rsi      # 0xd1d3
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xb82b(%rip), %rdi      # 0x112a0
leaq 0x77c5(%rip), %rsi      # 0xd241
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xb806(%rip), %rdi      # 0x112a0
testq %r15, %r15
je 0x5c41
movq 0x38(%r15), %rdx
leaq 0x7e60(%rip), %rsi      # 0xd90e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl 0x8(%r15), %eax
cmpq $0x3, %rax
ja 0x5bbb
leaq 0x5616(%rip), %rcx      # 0xb0e8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
andl $0x0, -0x50(%rbp)
jmp 0x5b7b
movl $0x2, -0x50(%rbp)
jmp 0x5b7b
leaq 0x10(%r15), %r14
movq (%r14), %r14
testq %r14, %r14
je 0x5bbb
movl 0x8(%r14), %eax
cmpq $0x3, %rax
ja 0x5b53
movslq (%r13,%rax,4), %rax
addq %r13, %rax
jmpq *%rax
andl $0x0, -0x50(%rbp)
jmp 0x5b33
movl $0x2, -0x50(%rbp)
jmp 0x5b33
movl $0x3, -0x50(%rbp)
jmp 0x5b33
movl $0x1, -0x50(%rbp)
movq 0x10(%r14), %rax
movq %rax, -0x48(%rbp)
leaq 0x28(%r14), %rdi
movq 0x18(%r14), %rdx
movq 0x20(%r14), %rcx
leaq -0x50(%rbp), %rsi
movl %ebx, %r8d
callq 0x7b1d
movl %ebx, %edi
callq 0x4593
movq 0xb73f(%rip), %rdi      # 0x112a0
movq %r12, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x5af4
jmp 0x5e3d
movl $0x1, -0x50(%rbp)
movq 0x10(%r15), %rax
movq %rax, -0x48(%rbp)
leaq 0x28(%r15), %rdi
movq 0x18(%r15), %rdx
movq 0x20(%r15), %rcx
leaq -0x50(%rbp), %rsi
movl %ebx, %r8d
callq 0x7b1d
movl %ebx, %edi
callq 0x4593
movq 0xb6f7(%rip), %rdi      # 0x112a0
movq %r12, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
pushq $0x1
popq %r14
movl %r14d, %edi
callq 0x4593
movq 0xb6d2(%rip), %rdi      # 0x112a0
leaq 0x626c(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq (%r15), %r15
jmp 0x5a8b
xorl %edi, %edi
callq 0x4593
movq 0xb6a6(%rip), %rdi      # 0x112a0
leaq 0x6240(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xb682(%rip), %rdi      # 0x112a0
leaq 0x6562(%rip), %rsi      # 0xc187
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x68(%rbp), %r15
pushq $0x1
popq %r14
jns 0x58bd
jmp 0x5e3d
leaq 0x761f(%rip), %rsi      # 0xd267
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movl %r14d, %edi
callq 0x4593
movq 0xb63a(%rip), %rdi      # 0x112a0
leaq 0x7611(%rip), %rsi      # 0xd27e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x68(%rbp), %r15
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xb612(%rip), %rdi      # 0x112a0
leaq 0x61ac(%rip), %rsi      # 0xbe41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %edi, %edi
callq 0x4593
movq 0xb5ee(%rip), %rdi      # 0x112a0
leaq 0x64ce(%rip), %rsi      # 0xc187
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x58bd
jmp 0x5e3d
movq 0xb5ec(%rip), %rdi      # 0x112c0
leaq 0x64c3(%rip), %rsi      # 0xc19e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq 0xb5cf(%rip), %rdi      # 0x112c0
leaq 0x64bc(%rip), %rsi      # 0xc1b4
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
cmpl $0x0, 0xb582(%rip)      # 0x11290
je 0x5d43
callq 0x45ea
movq 0xb5a4(%rip), %rdi      # 0x112c0
leaq 0x65b6(%rip), %rsi      # 0xc2d9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
xorl %eax, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xb55e(%rip), %r14      # 0x112a8
leaq 0x592f(%rip), %r15      # 0xb680
leaq 0x64a7(%rip), %r12      # 0xc1ff
leaq 0x64ca(%rip), %r13      # 0xc229
leaq 0x651a(%rip), %rbx      # 0xc280
movq (%r14), %r14
testq %r14, %r14
je 0x5d15
cmpl $0x1, 0x8(%r14)
jne 0x5d66
cmpl $0x0, 0x20(%r14)
je 0x5d66
movq 0xb51d(%rip), %rdi      # 0x112a0
movq 0x10(%r14), %rcx
leaq 0x54d2(%rip), %rsi      # 0xb260
movq %rcx, %rdx
movq %rcx, %r8
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq 0xb4f6(%rip), %rdi      # 0x112a0
movq 0x10(%r14), %rcx
leaq 0x581b(%rip), %rsi      # 0xb5d0
movq %rcx, %rdx
movq %rcx, %r8
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq 0xb4d3(%rip), %rdi      # 0x112a0
movq 0x10(%r14), %rcx
movq %r15, %rsi
movq %rcx, %rdx
movq %rcx, %r8
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq 0xb4d4(%rip), %rdi      # 0x112c0
movq 0x10(%r14), %rcx
movq %r12, %rsi
movq %rcx, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq 0xb4b8(%rip), %rdi      # 0x112c0
movq 0x10(%r14), %rcx
movq %r13, %rsi
movq %rcx, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x5e3d
movq 0xb49c(%rip), %rdi      # 0x112c0
movq 0x10(%r14), %rcx
movq %rbx, %rsi
movq %rcx, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x5d66
movq 0xb1ac(%rip), %rax      # 0x10ff0
movq (%rax), %rdi
leaq 0x5aea(%rip), %rsi      # 0xb938
leaq 0x5afb(%rip), %rdx      # 0xb950
xorl %eax, %eax
callq 0x2100
pushq $0x1
popq %rdi
callq 0x2180
movq 0xb185(%rip), %rbx      # 0x10ff0
movq (%rbx), %rdi
movq 0xb3eb(%rip), %rdx      # 0x11260
leaq 0x61f2(%rip), %rsi      # 0xc06e
jmp 0x5eb0
movq 0xb16b(%rip), %rbx      # 0x10ff0
movq (%rbx), %rdi
movq 0xb3d1(%rip), %rdx      # 0x11260
leaq 0x61fd(%rip), %rsi      # 0xc093
jmp 0x5eb0
movq 0xb151(%rip), %rbx      # 0x10ff0
movq (%rbx), %rdi
movq 0xb3bf(%rip), %rdx      # 0x11268
leaq 0x620b(%rip), %rsi      # 0xc0bb
xorl %eax, %eax
callq 0x2100
movq (%rbx), %rsi
movq 0xb36f(%rip), %rdi      # 0x11230
callq 0x20c0
jmp 0x5e5c
movq (%r15), %rdi
jmp 0x5e47
movq (%r15), %rdi
movq 0xb39e(%rip), %rdx      # 0x11278
leaq 0x621c(%rip), %rsi      # 0xc0fd
jmp 0x5ef4
movq (%r15), %rdi
movq 0xb393(%rip), %rdx      # 0x11280
leaq 0x6231(%rip), %rsi      # 0xc125
xorl %eax, %eax
callq 0x2100
movq (%r15), %rsi
jmp 0x5eba