// File: /workspace/github_c_makefile_star2_O0/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
subq $0x20, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x2420
cmpl $0x0, 0x13eeb(%rip)     # 0x1b294
je 0x73d6
movq 0x13c3e(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13e74(%rip), %rdx     # 0x1b230
leaq 0x1146c(%rip), %rsi     # 0x1882f
movb $0x0, %al
callq 0x2100
movl $0x0, -0x4(%rbp)
jmp 0x7c35
cmpl $0x0, 0x13ebb(%rip)     # 0x1b298
je 0x740a
movq 0x13c0a(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xec77(%rip), %rsi      # 0x16067
leaq 0xec87(%rip), %rdx      # 0x1607e
movb $0x0, %al
callq 0x2100
movl $0x0, -0x4(%rbp)
jmp 0x7c35
jmp 0x740c
movq 0x13e4d(%rip), %rdi     # 0x1b260
leaq 0x1138f(%rip), %rsi     # 0x187a9
callq 0x2170
movq %rax, %rcx
leaq 0x13eaf(%rip), %rax     # 0x1b2d8
movq %rcx, (%rax)
leaq 0x13ea5(%rip), %rax     # 0x1b2d8
cmpq $0x0, (%rax)
jne 0x7483
jmp 0x743b
movq 0x13bae(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13e14(%rip), %rdx     # 0x1b260
leaq 0xec37(%rip), %rsi      # 0x1608a
movb $0x0, %al
callq 0x2100
movq 0x13b8f(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13dc5(%rip), %rdx     # 0x1b230
leaq 0x113bd(%rip), %rsi     # 0x1882f
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
movq 0x13de6(%rip), %rdi     # 0x1b270
leaq 0x11318(%rip), %rsi     # 0x187a9
callq 0x2170
movq %rax, 0x13e13(%rip)     # 0x1b2b0
cmpq $0x0, 0x13e0b(%rip)     # 0x1b2b0
jne 0x74f1
jmp 0x74a9
movq 0x13b40(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13da6(%rip), %rdx     # 0x1b260
leaq 0xebee(%rip), %rsi      # 0x160af
movb $0x0, %al
callq 0x2100
movq 0x13b21(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13d57(%rip), %rdx     # 0x1b230
leaq 0x1134f(%rip), %rsi     # 0x1882f
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
movq 0x13d70(%rip), %rdi     # 0x1b268
leaq 0x112aa(%rip), %rsi     # 0x187a9
callq 0x2170
movq %rax, 0x13dad(%rip)     # 0x1b2b8
cmpq $0x0, 0x13da5(%rip)     # 0x1b2b8
jne 0x755f
jmp 0x7517
movq 0x13ad2(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13d40(%rip), %rdx     # 0x1b268
leaq 0xeba8(%rip), %rsi      # 0x160d7
movb $0x0, %al
callq 0x2100
movq 0x13ab3(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13ce9(%rip), %rdx     # 0x1b230
leaq 0x112e1(%rip), %rsi     # 0x1882f
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
callq 0x11d80
movq 0x13a85(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xeb92(%rip), %rsi      # 0x16107
movb $0x0, %al
callq 0x2100
movq 0x13cf5(%rip), %rdi     # 0x1b278
leaq 0x10c52(%rip), %rsi     # 0x181dc
callq 0x2170
movq %rax, 0x13d2a(%rip)     # 0x1b2c0
cmpq $0x0, 0x13d22(%rip)     # 0x1b2c0
jne 0x75ea
jmp 0x75a2
movq 0x13a47(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13cc5(%rip), %rdx     # 0x1b278
leaq 0xeb5f(%rip), %rsi      # 0x16119
movb $0x0, %al
callq 0x2100
movq 0x13a28(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13c5e(%rip), %rdx     # 0x1b230
leaq 0x11256(%rip), %rsi     # 0x1882f
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
movq 0x13c8f(%rip), %rdi     # 0x1b280
leaq 0x10be4(%rip), %rsi     # 0x181dc
callq 0x2170
movq %rax, 0x13c9c(%rip)     # 0x1b2a0
cmpq $0x0, 0x13c94(%rip)     # 0x1b2a0
jne 0x7658
jmp 0x7610
movq 0x139d9(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13c5f(%rip), %rdx     # 0x1b280
leaq 0xeb19(%rip), %rsi      # 0x16141
movb $0x0, %al
callq 0x2100
movq 0x139ba(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
movq 0x13bf0(%rip), %rdx     # 0x1b230
leaq 0x111e8(%rip), %rsi     # 0x1882f
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
movq 0x13c49(%rip), %rdi     # 0x1b2a8
callq 0x7c40
movq 0x13c55(%rip), %rdi     # 0x1b2c0
movq 0x13c16(%rip), %rdx     # 0x1b288
leaq 0xeaf0(%rip), %rsi      # 0x16169
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x76b1
movq 0x13961(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe2bb(%rip), %rsi      # 0x15954
leaq 0xe2cc(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x76b3
jmp 0x76b5
movq 0x13c04(%rip), %rdi     # 0x1b2c0
movq 0x13bc5(%rip), %rdx     # 0x1b288
leaq 0xeaab(%rip), %rsi      # 0x16175
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7702
movq 0x13910(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe26a(%rip), %rsi      # 0x15954
leaq 0xe27b(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7704
movq 0x13b6d(%rip), %rdi     # 0x1b278
movl $0x2f, %esi
callq 0x20b0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x772b
movq 0x13b51(%rip), %rax     # 0x1b278
movq %rax, -0x18(%rbp)
jmp 0x772d
movq 0x13b6c(%rip), %rdi     # 0x1b2a0
movq -0x18(%rbp), %rdx
leaq 0xea42(%rip), %rsi      # 0x16181
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7777
movq 0x1389b(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe1f5(%rip), %rsi      # 0x15954
leaq 0xe206(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7779
jmp 0x777b
movq 0x13b1e(%rip), %rdi     # 0x1b2a0
movq -0x18(%rbp), %rdx
leaq 0xea03(%rip), %rsi      # 0x16190
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x77c5
movq 0x1384d(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe1a7(%rip), %rsi      # 0x15954
leaq 0xe1b8(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x77c7
cmpl $0x0, 0x13ac2(%rip)     # 0x1b290
je 0x7825
jmp 0x77d2
xorl %edi, %edi
callq 0x6fd0
movq 0x13ac0(%rip), %rdi     # 0x1b2a0
leaq 0xe9be(%rip), %rsi      # 0x161a5
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x781f
movq 0x137f3(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe14d(%rip), %rsi      # 0x15954
leaq 0xe15e(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7821
jmp 0x7823
jmp 0x7825
movq 0x13a94(%rip), %rdi     # 0x1b2c0
movq 0x13a7d(%rip), %rsi     # 0x1b2b0
callq 0x2980
movq 0x13a61(%rip), %rdi     # 0x1b2a0
movq 0x13a72(%rip), %rsi     # 0x1b2b8
callq 0x2980
movq 0x13a4e(%rip), %rdi     # 0x1b2a0
leaq 0xd977(%rip), %rsi      # 0x151d0
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7891
movq 0x13781(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe0db(%rip), %rsi      # 0x15954
leaq 0xe0ec(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7893
movq 0x13a0e(%rip), %rdi     # 0x1b2a8
callq 0x3870
movq 0x13a02(%rip), %rdi     # 0x1b2a8
callq 0x7cd0
movq 0x139f6(%rip), %rdi     # 0x1b2a8
callq 0x7d70
movq 0x139ea(%rip), %rdi     # 0x1b2a8
callq 0x7df0
movq 0x139f6(%rip), %rdi     # 0x1b2c0
leaq 0xe8e9(%rip), %rsi      # 0x161ba
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7909
movq 0x13709(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe063(%rip), %rsi      # 0x15954
leaq 0xe074(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x790b
jmp 0x790d
movq 0x139ac(%rip), %rdi     # 0x1b2c0
leaq 0xe8b5(%rip), %rsi      # 0x161d0
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7953
movq 0x136bf(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xe019(%rip), %rsi      # 0x15954
leaq 0xe02a(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7955
cmpl $0x0, 0x13934(%rip)     # 0x1b290
je 0x7968
callq 0x7040
jmp 0x7be4
movq 0x13939(%rip), %rax     # 0x1b2a8
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x7be2
movq -0x20(%rbp), %rax
cmpl $0x1, 0x8(%rax)
jne 0x7bd0
movq -0x20(%rbp), %rax
cmpl $0x0, 0x20(%rax)
je 0x7bd0
jmp 0x799c
movq 0x138fd(%rip), %rdi     # 0x1b2a0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %r8
leaq 0xd8ce(%rip), %rsi      # 0x15290
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x79fa
movq 0x13618(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xdf72(%rip), %rsi      # 0x15954
leaq 0xdf83(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x79fc
jmp 0x79fe
movq 0x1389b(%rip), %rdi     # 0x1b2a0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %r8
leaq 0xdbdc(%rip), %rsi      # 0x15600
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7a5c
movq 0x135b6(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xdf10(%rip), %rsi      # 0x15954
leaq 0xdf21(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7a5e
jmp 0x7a60
movq 0x13839(%rip), %rdi     # 0x1b2a0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %r8
leaq 0xdc2a(%rip), %rsi      # 0x156b0
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7abe
movq 0x13554(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xdeae(%rip), %rsi      # 0x15954
leaq 0xdebf(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7ac0
jmp 0x7ac2
movq 0x137f7(%rip), %rdi     # 0x1b2c0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
leaq 0xe73b(%rip), %rsi      # 0x1621b
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7b18
movq 0x134fa(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xde54(%rip), %rsi      # 0x15954
leaq 0xde65(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7b1a
jmp 0x7b1c
movq 0x1379d(%rip), %rdi     # 0x1b2c0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
leaq 0xe70b(%rip), %rsi      # 0x16245
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7b72
movq 0x134a0(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xddfa(%rip), %rsi      # 0x15954
leaq 0xde0b(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7b74
jmp 0x7b76
movq 0x13743(%rip), %rdi     # 0x1b2c0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
leaq 0xe708(%rip), %rsi      # 0x1629c
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7bcc
movq 0x13446(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xdda0(%rip), %rsi      # 0x15954
leaq 0xddb1(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7bce
jmp 0x7bd0
jmp 0x7bd2
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x7973
jmp 0x7be4
jmp 0x7be6
movq 0x136d3(%rip), %rdi     # 0x1b2c0
leaq 0xe701(%rip), %rsi      # 0x162f5
movb $0x0, %al
callq 0x2100
movl %eax, %ecx
xorl %eax, %eax
cmpl %ecx, %eax
jle 0x7c2c
movq 0x133e6(%rip), %rax     # 0x1aff0
movq (%rax), %rdi
leaq 0xdd40(%rip), %rsi      # 0x15954
leaq 0xdd51(%rip), %rdx      # 0x1596c
movb $0x0, %al
callq 0x2100
movl $0x1, %edi
callq 0x2180
jmp 0x7c2e
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop