LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: prop_alloc
struct property *prop_alloc(enum prop_type type, struct symbol *sym)
{
	struct property *prop;
	struct property **propp;

	prop = malloc(sizeof(*prop));
	memset(prop, 0, sizeof(*prop));
	prop->type = type;
	prop->sym = sym;
	prop->file = current_file;
	prop->lineno = zconf_lineno();

	/* append property to the prop list of symbol */
	if (sym) {
		for (propp = &sym->prop; *propp; propp = &(*propp)->next)
			;
		*propp = prop;
	}

	return prop;
}

// Assembly:
subq $0x28, %rsp
movl %edi, 0x24(%rsp)
movq %rsi, 0x18(%rsp)
movl $0x50, %edi
callq 0x2220
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
xorl %esi, %esi
movl $0x50, %edx
callq 0x2120
movl 0x24(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0xb3ea(%rip), %rcx      # 0x19d88
movq 0x10(%rsp), %rax
movq %rcx, 0x40(%rax)
callq 0x61d0
movl %eax, %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x48(%rax)
cmpq $0x0, 0x18(%rsp)
je 0xe9f5
movq 0x18(%rsp), %rax
addq $0x48, %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq $0x0, (%rax)
je 0xe9e8
jmp 0xe9d9
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0xe9cc
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_get_type
enum symbol_type sym_get_type(struct symbol *sym)
{
	enum symbol_type type = sym->type;

	if (type == S_TRISTATE) {
		if (sym_is_choice_value(sym) && sym->visible == yes)
			type = S_BOOLEAN;
		else {
			sym_calc_value(modules_sym);
			if (modules_sym->curr.tri == no)
				type = S_BOOLEAN;
		}
	}
	return type;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movl 0x18(%rax), %eax
movl %eax, 0xc(%rsp)
cmpl $0x2, 0xc(%rsp)
jne 0xea66
movq 0x10(%rsp), %rdi
callq 0xa410
testb $0x1, %al
jne 0xea2c
jmp 0xea41
movq 0x10(%rsp), %rax
cmpl $0x2, 0x40(%rax)
jne 0xea41
movl $0x1, 0xc(%rsp)
jmp 0xea64
movq 0xaa68(%rip), %rdi      # 0x194b0
callq 0xa4f0
movq 0xaa5c(%rip), %rax      # 0x194b0
cmpl $0x0, 0x28(%rax)
jne 0xea62
movl $0x1, 0xc(%rsp)
jmp 0xea64
jmp 0xea66
movl 0xc(%rsp), %eax
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_type_name
const char *sym_type_name(enum symbol_type type)
{
	switch (type) {
	case S_BOOLEAN:
		return "boolean";
	case S_TRISTATE:
		return "tristate";
	case S_INT:
		return "integer";
	case S_HEX:
		return "hex";
	case S_STRING:
		return "string";
	case S_UNKNOWN:
		return "unknown";
	case S_OTHER:
		break;
	}
	return "???";
}

// Assembly:
movl %edi, -0xc(%rsp)
movl -0xc(%rsp), %eax
movq %rax, -0x18(%rsp)
subq $0x6, %rax
ja 0xeaee
movq -0x18(%rsp), %rax
leaq 0x1cc5(%rip), %rcx      # 0x10754
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x7326(%rip), %rax      # 0x15dc5
movq %rax, -0x8(%rsp)
jmp 0xeafa
leaq 0x7320(%rip), %rax      # 0x15dcd
movq %rax, -0x8(%rsp)
jmp 0xeafa
leaq 0x731b(%rip), %rax      # 0x15dd6
movq %rax, -0x8(%rsp)
jmp 0xeafa
leaq 0x7315(%rip), %rax      # 0x15dde
movq %rax, -0x8(%rsp)
jmp 0xeafa
leaq 0x730b(%rip), %rax      # 0x15de2
movq %rax, -0x8(%rsp)
jmp 0xeafa
leaq 0x7304(%rip), %rax      # 0x15de9
movq %rax, -0x8(%rsp)
jmp 0xeafa
jmp 0xeaee
leaq 0x72fc(%rip), %rax      # 0x15df1
movq %rax, -0x8(%rsp)
movq -0x8(%rsp), %rax
retq
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_get_default_prop
struct property *sym_get_default_prop(struct symbol *sym)
{
	struct property *prop;

	for_all_defaults(sym, prop) {
		prop->visible.tri = expr_calc_value(prop->visible.expr);
		if (prop->visible.tri != no)
			return prop;
	}
	return NULL;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0xeb63
movq (%rsp), %rax
cmpl $0x4, 0x10(%rax)
jne 0xeb54
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xe270
movl %eax, %ecx
movq (%rsp), %rax
movl %ecx, 0x28(%rax)
movq (%rsp), %rax
cmpl $0x0, 0x28(%rax)
je 0xeb52
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0xeb6c
jmp 0xeb54
jmp 0xeb56
movq (%rsp), %rax
movq (%rax), %rax
movq %rax, (%rsp)
jmp 0xeb16
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_get_range_prop
struct property *sym_get_range_prop(struct symbol *sym)
{
	struct property *prop;

	for_all_properties(sym, prop, P_RANGE) {
		prop->visible.tri = expr_calc_value(prop->visible.expr);
		if (prop->visible.tri != no)
			return prop;
	}
	return NULL;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0xebe3
movq (%rsp), %rax
cmpl $0x7, 0x10(%rax)
jne 0xebd4
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xe270
movl %eax, %ecx
movq (%rsp), %rax
movl %ecx, 0x28(%rax)
movq (%rsp), %rax
cmpl $0x0, 0x28(%rax)
je 0xebd2
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0xebec
jmp 0xebd4
jmp 0xebd6
movq (%rsp), %rax
movq (%rax), %rax
movq %rax, (%rsp)
jmp 0xeb96
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_calc_visibility
static void sym_calc_visibility(struct symbol *sym)
{
	struct property *prop;
	tristate tri;

	/* any prompt visible? */
	tri = no;
	for_all_prompts(sym, prop) {
		prop->visible.tri = expr_calc_value(prop->visible.expr);
		tri = E_OR(tri, prop->visible.tri);
	}
	if (sym->visible != tri) {
		sym->visible = tri;
		sym_set_changed(sym);
	}
	if (sym_is_choice_value(sym))
		return;
	tri = no;
	if (sym->rev_dep.expr)
		tri = expr_calc_value(sym->rev_dep.expr);
	if (sym->rev_dep.tri != tri) {
		sym->rev_dep.tri = tri;
		sym_set_changed(sym);
	}
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movl $0x0, 0x4(%rsp)
movq 0x10(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0xec85
movq 0x8(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0xec74
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xe270
movl %eax, %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x28(%rax)
movl 0x4(%rsp), %eax
movq 0x8(%rsp), %rcx
cmpl 0x28(%rcx), %eax
jbe 0xec62
movl 0x4(%rsp), %eax
movl %eax, (%rsp)
jmp 0xec6d
movq 0x8(%rsp), %rax
movl 0x28(%rax), %eax
movl %eax, (%rsp)
movl (%rsp), %eax
movl %eax, 0x4(%rsp)
jmp 0xec76
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0xec1f
movq 0x10(%rsp), %rax
movl 0x40(%rax), %eax
cmpl 0x4(%rsp), %eax
je 0xeca9
movl 0x4(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x40(%rax)
movq 0x10(%rsp), %rdi
callq 0xee70
movq 0x10(%rsp), %rdi
callq 0xa410
testb $0x1, %al
jne 0xecb9
jmp 0xecbb
jmp 0xed05
movl $0x0, 0x4(%rsp)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0xece1
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0xe270
movl %eax, 0x4(%rsp)
movq 0x10(%rsp), %rax
movl 0x68(%rax), %eax
cmpl 0x4(%rsp), %eax
je 0xed05
movl 0x4(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x68(%rax)
movq 0x10(%rsp), %rdi
callq 0xee70
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_calc_choice
static struct symbol *sym_calc_choice(struct symbol *sym)
{
	struct symbol *def_sym;
	struct property *prop;
	struct expr *e;

	/* is the user choice visible? */
	def_sym = sym->user.val;
	if (def_sym) {
		sym_calc_visibility(def_sym);
		if (def_sym->visible != no)
			return def_sym;
	}

	/* any of the defaults visible? */
	for_all_defaults(sym, prop) {
		prop->visible.tri = expr_calc_value(prop->visible.expr);
		if (prop->visible.tri == no)
			continue;
		def_sym = prop_get_symbol(prop);
		sym_calc_visibility(def_sym);
		if (def_sym->visible != no)
			return def_sym;
	}

	/* just get the first visible value */
	prop = sym_get_choice_prop(sym);
	for (e = prop->expr; e; e = e->left.expr) {
		def_sym = e->right.sym;
		sym_calc_visibility(def_sym);
		if (def_sym->visible != no)
			return def_sym;
	}

	/* no choice? reset tristate value */
	sym->curr.tri = no;
	return NULL;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0xed55
movq 0x10(%rsp), %rdi
callq 0xec00
movq 0x10(%rsp), %rax
cmpl $0x0, 0x40(%rax)
je 0xed53
movq 0x10(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xee57
jmp 0xed55
movq 0x18(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0xede1
movq 0x8(%rsp), %rax
cmpl $0x4, 0x10(%rax)
jne 0xedd0
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xe270
movl %eax, %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x28(%rax)
movq 0x8(%rsp), %rax
cmpl $0x0, 0x28(%rax)
jne 0xed9b
jmp 0xedd2
movq 0x8(%rsp), %rdi
callq 0xa440
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xec00
movq 0x10(%rsp), %rax
cmpl $0x0, 0x40(%rax)
je 0xedce
movq 0x10(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xee57
jmp 0xedd0
jmp 0xedd2
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0xed63
movq 0x18(%rsp), %rdi
callq 0xa490
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0xee42
movq (%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xec00
movq 0x10(%rsp), %rax
cmpl $0x0, 0x40(%rax)
je 0xee32
movq 0x10(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xee57
jmp 0xee34
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, (%rsp)
jmp 0xedfd
movq 0x18(%rsp), %rax
movl $0x0, 0x28(%rax)
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_set_changed
void sym_set_changed(struct symbol *sym)
{
	struct property *prop;

	sym->flags |= SYMBOL_CHANGED;
	for (prop = sym->prop; prop; prop = prop->next) {
		if (prop->menu)
			prop->menu->flags |= MENU_CHANGED;
	}
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq -0x8(%rsp), %rax
movl 0x44(%rax), %ecx
orl $0x400, %ecx            # imm = 0x400
movl %ecx, 0x44(%rax)
movq -0x8(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x10(%rsp)
cmpq $0x0, -0x10(%rsp)
je 0xeecb
movq -0x10(%rsp), %rax
cmpq $0x0, 0x38(%rax)
je 0xeeba
movq -0x10(%rsp), %rax
movq 0x38(%rax), %rax
movl 0x30(%rax), %ecx
orl $0x1, %ecx
movl %ecx, 0x30(%rax)
jmp 0xeebc
movq -0x10(%rsp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rsp)
jmp 0xee94
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_set_all_changed
void sym_set_all_changed(void)
{
	struct symbol *sym;
	int i;

	for_all_symbols(i, sym)
		sym_set_changed(sym);
}

// Assembly:
subq $0x18, %rsp
movl $0x0, 0xc(%rsp)
cmpl $0x101, 0xc(%rsp)       # imm = 0x101
jge 0xef38
movslq 0xc(%rsp), %rcx
leaq 0xa61e(%rip), %rax      # 0x19510
movq (%rax,%rcx,8), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0xef29
movq 0x10(%rsp), %rax
cmpl $0x6, 0x18(%rax)
je 0xef18
movq 0x10(%rsp), %rdi
callq 0xee70
jmp 0xef1a
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0xeefb
jmp 0xef2b
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0xeedc
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_tristate_within_range
bool sym_tristate_within_range(struct symbol *sym, tristate val)
{
	int type = sym_get_type(sym);

	if (sym->visible == no)
		return false;

	if (type != S_BOOLEAN && type != S_TRISTATE)
		return false;

	if (type == S_BOOLEAN && val == mod)
		return false;
	if (sym->visible <= sym->rev_dep.tri)
		return false;
	if (sym_is_choice_value(sym) && sym->visible == yes)
		return val == yes;
	return val >= sym->rev_dep.tri && val <= sym->visible;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movl %esi, 0x14(%rsp)
movq 0x18(%rsp), %rdi
callq 0xea00
movl %eax, 0x10(%rsp)
movq 0x18(%rsp), %rax
cmpl $0x0, 0x40(%rax)
jne 0xef70
movb $0x0, 0x27(%rsp)
jmp 0xf012
cmpl $0x1, 0x10(%rsp)
je 0xef88
cmpl $0x2, 0x10(%rsp)
je 0xef88
movb $0x0, 0x27(%rsp)
jmp 0xf012
cmpl $0x1, 0x10(%rsp)
jne 0xef9d
cmpl $0x1, 0x14(%rsp)
jne 0xef9d
movb $0x0, 0x27(%rsp)
jmp 0xf012
movq 0x18(%rsp), %rax
movl 0x40(%rax), %eax
movq 0x18(%rsp), %rcx
cmpl 0x68(%rcx), %eax
ja 0xefb6
movb $0x0, 0x27(%rsp)
jmp 0xf012
movq 0x18(%rsp), %rdi
callq 0xa410
testb $0x1, %al
jne 0xefc6
jmp 0xefe1
movq 0x18(%rsp), %rax
cmpl $0x2, 0x40(%rax)
jne 0xefe1
cmpl $0x2, 0x14(%rsp)
sete %al
andb $0x1, %al
movb %al, 0x27(%rsp)
jmp 0xf012
movl 0x14(%rsp), %ecx
movq 0x18(%rsp), %rdx
xorl %eax, %eax
cmpl 0x68(%rdx), %ecx
movb %al, 0xf(%rsp)
jb 0xf008
movl 0x14(%rsp), %eax
movq 0x18(%rsp), %rcx
cmpl 0x40(%rcx), %eax
setbe %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
andb $0x1, %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_set_tristate_value
bool sym_set_tristate_value(struct symbol *sym, tristate val)
{
	tristate oldval = sym_get_tristate_value(sym);

	if (oldval != val && !sym_tristate_within_range(sym, val))
		return false;

	if (sym->flags & SYMBOL_NEW) {
		sym->flags &= ~SYMBOL_NEW;
		sym_set_changed(sym);
	}
	if (sym_is_choice_value(sym) && val == yes) {
		struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));

		cs->user.val = sym;
		cs->flags &= ~SYMBOL_NEW;
	}

	sym->user.tri = val;
	if (oldval != val) {
		sym_clear_all_valid();
		if (sym == modules_sym)
			sym_set_all_changed();
	}

	return true;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movl %esi, 0x14(%rsp)
movq 0x18(%rsp), %rdi
callq 0xb7b0
movl %eax, 0x10(%rsp)
movl 0x10(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0xf061
movq 0x18(%rsp), %rdi
movl 0x14(%rsp), %esi
callq 0xef40
testb $0x1, %al
jne 0xf061
movb $0x0, 0x27(%rsp)
jmp 0xf110
movq 0x18(%rsp), %rax
movl 0x44(%rax), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xf08e
movq 0x18(%rsp), %rax
movl 0x44(%rax), %ecx
andl $0xfffff7ff, %ecx       # imm = 0xFFFFF7FF
movl %ecx, 0x44(%rax)
movq 0x18(%rsp), %rdi
callq 0xee70
movq 0x18(%rsp), %rdi
callq 0xa410
testb $0x1, %al
jne 0xf09e
jmp 0xf0db
cmpl $0x2, 0x14(%rsp)
jne 0xf0db
movq 0x18(%rsp), %rdi
callq 0xa490
movq %rax, %rdi
callq 0xa440
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x8(%rsp), %rax
movl 0x44(%rax), %ecx
andl $0xfffff7ff, %ecx       # imm = 0xFFFFF7FF
movl %ecx, 0x44(%rax)
movl 0x14(%rsp), %ecx
movq 0x18(%rsp), %rax
movl %ecx, 0x38(%rax)
movl 0x10(%rsp), %eax
cmpl 0x14(%rsp), %eax
je 0xf10b
callq 0xb5d0
movq 0x18(%rsp), %rax
cmpq 0xa3ae(%rip), %rax      # 0x194b0
jne 0xf109
callq 0xeed0
jmp 0xf10b
movb $0x1, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_toggle_tristate_value
tristate sym_toggle_tristate_value(struct symbol *sym)
{
	tristate oldval, newval;

	oldval = newval = sym_get_tristate_value(sym);
	do {
		switch (newval) {
		case no:
			newval = mod;
			break;
		case mod:
			newval = yes;
			break;
		case yes:
			newval = no;
			break;
		}
		if (sym_set_tristate_value(sym, newval))
			break;
	} while (oldval != newval);
	return newval;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xb7b0
movl %eax, 0x8(%rsp)
movl %eax, 0xc(%rsp)
movl 0x8(%rsp), %eax
movl %eax, 0x4(%rsp)
testl %eax, %eax
je 0xf15f
jmp 0xf149
movl 0x4(%rsp), %eax
subl $0x1, %eax
je 0xf169
jmp 0xf154
movl 0x4(%rsp), %eax
subl $0x2, %eax
je 0xf173
jmp 0xf17b
movl $0x1, 0x8(%rsp)
jmp 0xf17b
movl $0x2, 0x8(%rsp)
jmp 0xf17b
movl $0x0, 0x8(%rsp)
movq 0x10(%rsp), %rdi
movl 0x8(%rsp), %esi
callq 0xf020
testb $0x1, %al
jne 0xf18f
jmp 0xf191
jmp 0xf19d
jmp 0xf193
movl 0xc(%rsp), %eax
cmpl 0x8(%rsp), %eax
jne 0xf13b
movl 0x8(%rsp), %eax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: sym_check_expr_deps
static struct symbol *sym_check_expr_deps(struct expr *e)
{
	struct symbol *sym;

	if (!e)
		return NULL;
	switch (e->type) {
	case E_OR:
	case E_AND:
		sym = sym_check_expr_deps(e->left.expr);
		if (sym)
			return sym;
		return sym_check_expr_deps(e->right.expr);
	case E_NOT:
		return sym_check_expr_deps(e->left.expr);
	case E_EQUAL:
	case E_UNEQUAL:
		sym = sym_check_deps(e->left.sym);
		if (sym)
			return sym;
		return sym_check_deps(e->right.sym);
	case E_SYMBOL:
		return sym_check_deps(e->left.sym);
	default:
		break;
	}
	printf("Oops! How to check %d?\n", e->type);
	return NULL;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0xf41f
movq $0x0, 0x20(%rsp)
jmp 0xf515
movq 0x18(%rsp), %rax
movl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, 0x8(%rsp)
subl $0x6, %eax
ja 0xf4f5
movq 0x8(%rsp), %rax
leaq 0x132c(%rip), %rcx      # 0x10770
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xf400
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0xf477
movq 0x10(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xf515
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xf400
movq %rax, 0x20(%rsp)
jmp 0xf515
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xf400
movq %rax, 0x20(%rsp)
jmp 0xf515
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x77f0
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0xf4cb
movq 0x10(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xf515
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x77f0
movq %rax, 0x20(%rsp)
jmp 0xf515
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x77f0
movq %rax, 0x20(%rsp)
jmp 0xf515
jmp 0xf4f7
movq 0x18(%rsp), %rax
movl (%rax), %esi
leaq 0x6fba(%rip), %rdi      # 0x164bf
movb $0x0, %al
callq 0x20f0
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./symbol.c
// Function: prop_get_type_name
const char *prop_get_type_name(enum prop_type type)
{
	switch (type) {
	case P_PROMPT:
		return "prompt";
	case P_COMMENT:
		return "comment";
	case P_MENU:
		return "menu";
	case P_DEFAULT:
		return "default";
	case P_CHOICE:
		return "choice";
	case P_SELECT:
		return "select";
	case P_RANGE:
		return "range";
	case P_UNKNOWN:
		break;
	}
	return "unknown";
}

// Assembly:
movl %edi, -0xc(%rsp)
movl -0xc(%rsp), %eax
movq %rax, -0x18(%rsp)
subq $0x7, %rax
ja 0xf5ac
movq -0x18(%rsp), %rax
leaq 0x124d(%rip), %rcx      # 0x1078c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x5fd5(%rip), %rax      # 0x15524
movq %rax, -0x8(%rsp)
jmp 0xf5b8
leaq 0x68c0(%rip), %rax      # 0x15e1d
movq %rax, -0x8(%rsp)
jmp 0xf5b8
leaq 0x624c(%rip), %rax      # 0x157b7
movq %rax, -0x8(%rsp)
jmp 0xf5b8
leaq 0x68ac(%rip), %rax      # 0x15e25
movq %rax, -0x8(%rsp)
jmp 0xf5b8
leaq 0x6238(%rip), %rax      # 0x157bf
movq %rax, -0x8(%rsp)
jmp 0xf5b8
leaq 0x6898(%rip), %rax      # 0x15e2d
movq %rax, -0x8(%rsp)
jmp 0xf5b8
leaq 0x6891(%rip), %rax      # 0x15e34
movq %rax, -0x8(%rsp)
jmp 0xf5b8
jmp 0xf5ac
leaq 0x6836(%rip), %rax      # 0x15de9
movq %rax, -0x8(%rsp)
movq -0x8(%rsp), %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./menu.c
// Function: menu_check_dep
struct expr *menu_check_dep(struct expr *e)
{
	if (!e)
		return e;

	switch (e->type) {
	case E_NOT:
		e->left.expr = menu_check_dep(e->left.expr);
		break;
	case E_OR:
	case E_AND:
		e->left.expr = menu_check_dep(e->left.expr);
		e->right.expr = menu_check_dep(e->right.expr);
		break;
	case E_SYMBOL:
		/* change 'm' into 'm' && MODULES */
		if (e->left.sym == &symbol_mod)
			return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
		break;
	default:
		break;
	}
	return e;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0xf5e0
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xf6a9
movq 0x18(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x14(%rsp)
decl %eax
subl $0x2, %eax
jb 0xf629
jmp 0xf5f4
movl 0x14(%rsp), %eax
subl $0x3, %eax
je 0xf60d
jmp 0xf5ff
movl 0x14(%rsp), %eax
subl $0x7, %eax
je 0xf65f
jmp 0xf69d
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xf5c0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
jmp 0xf69f
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xf5c0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xf5c0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
jmp 0xf69f
movq 0x18(%rsp), %rax
leaq 0x9c8d(%rip), %rcx      # 0x192f8
cmpq %rcx, 0x8(%rax)
jne 0xf69b
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x9e2e(%rip), %rdi      # 0x194b0
callq 0x6840
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0xb960
movq %rax, 0x20(%rsp)
jmp 0xf6a9
jmp 0xf69f
jmp 0xf69f
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./menu.c
// Function: menu_get_parent_menu
struct menu *menu_get_parent_menu(struct menu *menu)
{
	enum prop_type type;

	for (; menu != &rootmenu; menu = menu->parent) {
		type = menu->prompt ? menu->prompt->type : 0;
		if (type == P_MENU)
			break;
	}
	return menu;
}

// Assembly:
movq %rdi, -0x8(%rsp)
leaq 0x9dac(%rip), %rax      # 0x194b8
cmpq %rax, -0x8(%rsp)
je 0xf75c
movq -0x8(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0xf731
movq -0x8(%rsp), %rax
movq 0x20(%rax), %rax
movl 0x10(%rax), %eax
movl %eax, -0x10(%rsp)
jmp 0xf739
xorl %eax, %eax
movl %eax, -0x10(%rsp)
jmp 0xf739
movl -0x10(%rsp), %eax
movl %eax, -0xc(%rsp)
cmpl $0x3, -0xc(%rsp)
jne 0xf74a
jmp 0xf75c
jmp 0xf74c
movq -0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x8(%rsp)
jmp 0xf705
movq -0x8(%rsp), %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/util.c
// Function: str_equal
bool str_equal(char *str1, char *str2) {
    // If the pointers are to the same string, or they're both null, return true
    if(str1 == str2) { return true; }
    // If only one is null, return false
    else if(!(str1 && str2)) { return false; }
	// If they have different lengths, we can say immediately that they differ
    else if(strlen(str1) != strlen(str2)) { return 0; }
	// If they are she same length, we must use strncmp to compare them. strncmp
	// returns 0 for identical strings, and other ints for different ones, so we
	// negate the result.
	else { return !strncmp(str1, str2, strlen(str1)); }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
jne 0x6623
movl $0x1, -0x4(%rbp)
jmp 0x669e
cmpq $0x0, -0x10(%rbp)
je 0x6631
cmpq $0x0, -0x18(%rbp)
jne 0x663a
movl $0x0, -0x4(%rbp)
jmp 0x669e
movq -0x10(%rbp), %rdi
callq 0x60c0
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x60c0
movq %rax, %rcx
movq -0x20(%rbp), %rax
cmpq %rcx, %rax
je 0x6665
movl $0x0, -0x4(%rbp)
jmp 0x669e
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x60c0
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq %rax, %rdx
callq 0x6050
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/util.c
// Function: put_indent
void put_indent(int num) {
    int indents_done;
    for(indents_done = 0; indents_done < num; indents_done++) {
        printf("    ");
    }
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl %edi, -0x4(%rbp)
movl $0x0, -0x8(%rbp)
movl -0x8(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x66e3
leaq 0x1f68d(%rip), %rdi     # 0x25d5e
movb $0x0, %al
callq 0x60f0
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x66c2
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/util.c
// Function: str_to_int
IntRef *str_to_int(char *str) {
    int result = 0;
    char *char_ptr = str;
    bool no_errors = true;
    while(*char_ptr != '\0' && no_errors) {
        if(isdigit(*char_ptr)) {
            result = (result * 10) + (*char_ptr - '0');
            char_ptr++;
        }
        else {
            no_errors = false;
        }
    }
    return no_errors ? IntRef_init(result) : NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
movl $0x1, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1d(%rbp)
je 0x672d
cmpl $0x0, -0x1c(%rbp)
setne %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %al
testb $0x1, %al
jne 0x6736
jmp 0x6780
callq 0x61e0
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x6777
imull $0xa, -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, -0xc(%rbp)
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0x677e
movl $0x0, -0x1c(%rbp)
jmp 0x6712
cmpl $0x0, -0x1c(%rbp)
je 0x6794
movl -0xc(%rbp), %edi
callq 0x67b0
movq %rax, -0x28(%rbp)
jmp 0x679c
xorl %eax, %eax
movq %rax, -0x28(%rbp)
jmp 0x679c
movq -0x28(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Prog_init
Prog *Prog_init(FuncVector *funcs, IntRefVector *func_name_map,
        charVector *global_name_map) {

    Prog *prog            = challoc(sizeof(Prog));
    prog->func_name_map   = func_name_map;
    prog->global_name_map = global_name_map;
    prog->funcs           = funcs;
    return prog;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x18, %edi
callq 0x62f0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Prog_print
void Prog_print(Prog *prog, int indent) {
    put_indent(indent);
    int idx;
    for(idx = 0; idx < Prog_num_funcs(prog); idx++) {
        Func_print(Prog_func(prog, idx), indent, prog->global_name_map);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %edi
callq 0x66b0
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x9650
movl %eax, %ecx
movl -0x14(%rbp), %eax
cmpl %ecx, %eax
jge 0x9646
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x9860
movq %rax, %rdi
movl -0xc(%rbp), %esi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x9750
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x95fe
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Func_print
void Func_print(Func *func, int indent, charVector *global_name_map) {

    put_indent(indent);
    printf("%s(", charVector_get(global_name_map, Func_name(func)));

    int idx;
    for(idx = 0; idx < Func_num_args(func); idx++) {
        printf("%s", charVector_get(global_name_map,
                IntRef_value(IntRefVector_get(func->local_name_map, idx))));
        if(idx + 1 < Func_num_args(func)) { printf(", "); }
    }
    printf(") {\n");
    Comm_print(Func_body(func), indent + 1, func->local_name_map,
            global_name_map);
    printf("\n");
    put_indent(indent);
    printf("}\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movl -0xc(%rbp), %edi
callq 0x66b0
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movl (%rax), %esi
callq 0x6c10
movq %rax, %rsi
leaq 0x1ab49(%rip), %rdi     # 0x242cd
movb $0x0, %al
callq 0x60f0
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x97fc
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x1c(%rbp), %esi
callq 0x81e0
movq -0x28(%rbp), %rdi
movl (%rax), %esi
callq 0x6c10
movq %rax, %rsi
leaq 0x1ab06(%rip), %rdi     # 0x242d1
movb $0x0, %al
callq 0x60f0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x97ef
leaq 0x1b3ae(%rip), %rdi     # 0x24b96
movb $0x0, %al
callq 0x60f0
jmp 0x97f1
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x9792
leaq 0x1aad1(%rip), %rdi     # 0x242d4
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x18(%rbp), %rcx
callq 0xadc0
leaq 0x1bd16(%rip), %rdi     # 0x25546
movb $0x0, %al
callq 0x60f0
movl -0xc(%rbp), %edi
callq 0x66b0
leaq 0x1aa93(%rip), %rdi     # 0x242d9
movb $0x0, %al
callq 0x60f0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Prog_free
void Prog_free(Prog *prog) {
    FuncVector_free_elems(prog->funcs);
    IntRefVector_free_elems(prog->func_name_map);
    charVector_free_elems(prog->global_name_map);
    free(prog);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x9b80
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x88c0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x72f0
movq -0x8(%rbp), %rdi
callq 0x6030
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Func_eq
bool Func_eq(Func *f, Func *g) {
    return ((f->name) == (g->name))
            && (Func_num_args(f) == Func_num_args(g))
            && IntRefVector_eq(f->local_name_map, g->local_name_map)
            && Comm_eq(Func_body(f), Func_body(g));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rdx
xorl %eax, %eax
cmpl (%rdx), %ecx
movb %al, -0x11(%rbp)
jne 0xa9c7
movq -0x8(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x10(%rbp), %rdx
xorl %eax, %eax
cmpl 0x4(%rdx), %ecx
movb %al, -0x11(%rbp)
jne 0xa9c7
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x8f30
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x11(%rbp)
je 0xa9c7
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xace0
cmpl $0x0, %eax
setne %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Func_init_pos
Func *Func_init_pos(int name, int num_args, IntRefVector *local_name_map,
        Comm *body, int src_line_no, int src_char_no) {

    Func *func           = challoc(sizeof(Func));
    func->name           = name;
    func->num_args       = num_args;
    func->local_name_map = local_name_map;
    func->body           = body;
    func->src_line_no    = src_line_no;
    func->src_char_no    = src_char_no;
    return func;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl %r9d, -0x20(%rbp)
movl $0x20, %edi
callq 0x62f0
movq %rax, -0x28(%rbp)
movl -0x4(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movl -0x8(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movl -0x1c(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x20(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x28(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Comm_eq
bool Comm_eq(Comm *c1, Comm *c2) {
    if((!c1) || (!c2))  { return c1 == c2; } // Null check
    else {
        return ((c1->type) == (c2->type)) &&
                ((c1->name) == (c2->name)) &&
                Expr_eq(c1->expr, c2->expr) &&
                Comm_eq(c1->comm1, c2->comm1) &&
                Comm_eq(c1->comm2, c2->comm2);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xacfe
cmpq $0x0, -0x18(%rbp)
jne 0xad16
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0xada9
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x18(%rbp), %rdx
xorl %eax, %eax
cmpl (%rdx), %ecx
movb %al, -0x19(%rbp)
jne 0xad9e
movq -0x10(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0x18(%rbp), %rdx
xorl %eax, %eax
cmpl 0x20(%rdx), %ecx
movb %al, -0x19(%rbp)
jne 0xad9e
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xb310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x19(%rbp)
je 0xad9e
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xace0
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x19(%rbp)
je 0xad9e
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0xace0
cmpl $0x0, %eax
setne %al
movb %al, -0x19(%rbp)
movb -0x19(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Comm_free
void Comm_free(Comm *comm) {
    if(!comm) { return; } // Null check
    Expr_free(comm->expr);
    Comm_free(comm->comm1);
    Comm_free(comm->comm2);
    free(comm);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0xb045
jmp 0xb075
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xb6f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xb030
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0xb030
movq -0x8(%rbp), %rdi
callq 0x6030
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Comm_init
Comm *Comm_init(CommType type, Expr *expr, Comm *comm1, Comm *comm2, int name,
        int src_line_no, int src_char_no) {

    Comm *new        = challoc(sizeof(Comm));
    new->type        = type;
    new->expr        = expr;
    new->comm1       = comm1;
    new->comm2       = comm2;
    new->name        = name;
    new->src_line_no = src_line_no;
    new->src_char_no = src_char_no;
    return new;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl 0x10(%rbp), %eax
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
movl $0x30, %edi
callq 0x62f0
movq %rax, -0x30(%rbp)
movl -0x4(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movl -0x24(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x20(%rax)
movl -0x28(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x24(%rax)
movl 0x10(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x30(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Expr_eq
bool Expr_eq(Expr *e1, Expr *e2) {
    if((!e1) || (!e2))  { return e1 == e2; } // Null check
    else {
        return ((e1->type) == (e2->type)) &&
                ((e1->num) == (e2->num)) &&
                Expr_eq(e1->expr1, e2->expr1) &&
                Expr_eq(e1->expr2, e2->expr2) &&
                (((e1->args) && (e2->args)) ?
                        ExprVector_eq(e1->args, e2->args) :
                        ((e1->args) == (e2->args)));
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xb32e
cmpq $0x0, -0x18(%rbp)
jne 0xb346
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
jmp 0xb41a
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x18(%rbp), %rdx
xorl %eax, %eax
cmpl (%rdx), %ecx
movb %al, -0x19(%rbp)
jne 0xb40f
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x18(%rbp), %rdx
xorl %eax, %eax
cmpl 0x4(%rdx), %ecx
movb %al, -0x19(%rbp)
jne 0xb40f
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xb310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x19(%rbp)
je 0xb40f
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xb310
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x19(%rbp)
je 0xb40f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xb3e8
movq -0x18(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xb3e8
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0xc8a0
movl %eax, -0x20(%rbp)
jmp 0xb403
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x18(%rcx), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x19(%rbp)
movb -0x19(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Expr_free
void Expr_free(Expr *expr) {
    if(!expr) { return; } // Null check
    Expr_free(expr->expr1);
    Expr_free(expr->expr2);
    ExprVector_free_elems(expr->args);
    free(expr);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0xb705
jmp 0xb735
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0xb6f0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xb6f0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0xc230
movq -0x8(%rbp), %rdi
callq 0x6030
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/syntax.c
// Function: Expr_init
DEFINE_VECTORABLE(Expr)

Expr *Expr_init(ExprType type, int num, Expr *expr1, Expr *expr2,
        ExprVector *args, int src_line_no, int src_char_no) {

    Expr *expr        = challoc(sizeof(Expr));
    expr->type        = type;
    expr->num         = num;
    expr->expr1       = expr1;
    expr->expr2       = expr2;
    expr->args        = args;
    expr->src_line_no = src_line_no;
    expr->src_char_no = src_char_no;
    return expr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl 0x10(%rbp), %eax
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movl %r9d, -0x24(%rbp)
movl $0x28, %edi
callq 0x62f0
movq %rax, -0x30(%rbp)
movl -0x4(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movl -0x8(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movl -0x24(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x20(%rax)
movl 0x10(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x30(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/lexer.c
// Function: yy_try_NUL_trans
static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
{
	int yy_is_jam;
    	char *yy_cp = (yy_c_buf_p);

	YY_CHAR yy_c = 1;
	if ( yy_accept[yy_current_state] )
		{
		(yy_last_accepting_state) = yy_current_state;
		(yy_last_accepting_cpos) = yy_cp;
		}
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = (int) yy_def[yy_current_state];
		if ( yy_current_state >= 38 )
			yy_c = yy_meta[yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
	yy_is_jam = (yy_current_state == 37);

		return yy_is_jam ? 0 : yy_current_state;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x4(%rbp)
movq 0x1a502(%rip), %rax     # 0x2b240
movq %rax, -0x10(%rbp)
movb $0x1, -0x11(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0x1383f(%rip), %rax     # 0x24590
cmpw $0x0, (%rax,%rcx,2)
je 0x10d6c
movl -0x4(%rbp), %eax
movl %eax, 0x1a4eb(%rip)     # 0x2b24c
movq -0x10(%rbp), %rax
movq %rax, 0x1a4e4(%rip)     # 0x2b250
jmp 0x10d6e
movslq -0x4(%rbp), %rcx
leaq 0x13907(%rip), %rax     # 0x24680
movswl (%rax,%rcx,2), %eax
movzbl -0x11(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rcx
leaq 0x13853(%rip), %rax     # 0x245e0
movswl (%rax,%rcx,2), %eax
cmpl -0x4(%rbp), %eax
je 0x10dc3
movslq -0x4(%rbp), %rcx
leaq 0x1392f(%rip), %rax     # 0x246d0
movswl (%rax,%rcx,2), %eax
movl %eax, -0x4(%rbp)
cmpl $0x26, -0x4(%rbp)
jl 0x10dc1
movzbl -0x11(%rbp), %eax
movl %eax, %ecx
leaq 0x13965(%rip), %rax     # 0x24720
movb (%rax,%rcx), %al
movb %al, -0x11(%rbp)
jmp 0x10d6e
movslq -0x4(%rbp), %rcx
leaq 0x138b2(%rip), %rax     # 0x24680
movswl (%rax,%rcx,2), %eax
movzbl -0x11(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rcx
leaq 0x1395e(%rip), %rax     # 0x24740
movswl (%rax,%rcx,2), %eax
movl %eax, -0x4(%rbp)
cmpl $0x25, -0x4(%rbp)
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x8(%rbp)
cmpl $0x0, -0x8(%rbp)
je 0x10e05
xorl %eax, %eax
movl %eax, -0x18(%rbp)
jmp 0x10e0b
movl -0x4(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/typecheck.c
// Function: Type_free
void Type_free(Type *type) {
    if(type->innerType) { Type_free(type->innerType); }
    if(type->innerTypes) { TypeVector_free(type->innerTypes); }
    free(type);
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x16244
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x16220
movq -0x8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x1625c
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x16170
movq -0x8(%rbp), %rdi
callq 0x6030
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/typecheck.c
// Function: Type_eq
bool Type_eq(Type *t1, Type *t2) {
    return ( // Do the forms match?
        t1->form == t2->form
    )
    && ( // Does the inner type match, checking for null?
        ((t1->innerType == NULL) || (t2->innerType == NULL))
                ? t1 == t2
                : Type_eq(t1->innerType, t2->innerType)
    )
    && ( // Do the inner types all match in type and sequence?
        ((t1->innerType == NULL) || (t2->innerType == NULL))
                ? t1 == t2
                : TypeVector_eq(t1->innerTypes, t2->innerTypes)
    );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rdx
xorl %eax, %eax
cmpl (%rdx), %ecx
movb %al, -0x11(%rbp)
jne 0x16b0e
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x16a8d
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x16a9e
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq -0x10(%rbp), %rcx
movb %al, -0x11(%rbp)
je 0x16abf
jmp 0x16b0e
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x16a50
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x11(%rbp)
je 0x16b0e
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x16ad5
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x16aea
movq -0x8(%rbp), %rax
cmpq -0x10(%rbp), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x18(%rbp)
jmp 0x16b02
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x16870
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x11(%rbp)
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/typecheck.c
// Function: Type_init
DEFINE_VECTORABLE(Type)

Type *Type_init(TypeForm form, Type *innerType, TypeVector *innerTypes) {
    Type *type = challoc(sizeof(type));
    type->form = form;
    type->innerType = innerType;
    type->innerTypes = innerTypes;
    return type;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x8, %edi
callq 0x62f0
movq %rax, -0x20(%rbp)
movl -0x4(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x10(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x20(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/typecheck.c
// Function: Type_copy
Type *Type_copy(Type *old) {
    Type *new       = challoc(sizeof(Type));
    new->form       = old->form;
    new->innerType  = (old->innerType)  ? Type_copy(old->innerType)  : NULL;
    if(old->innerTypes) {
        new->innerTypes = TypeVector_init();
        int idx;
        for(idx = 0; idx < TypeVector_size(old->innerTypes); idx++) {
            TypeVector_append(new->innerTypes,
                    Type_copy(TypeVector_get(old->innerTypes, idx)));
        }
    }
    else {
        new->innerTypes = NULL;
    }
    return new;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl $0x18, %edi
callq 0x62f0
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x16e64
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x16e20
movq %rax, -0x20(%rbp)
jmp 0x16e6c
xorl %eax, %eax
movq %rax, -0x20(%rbp)
jmp 0x16e6c
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x16ef3
callq 0x156c0
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x15710
movl %eax, %ecx
movl -0x24(%rbp), %eax
cmpl %ecx, %eax
jge 0x16ef1
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x14(%rbp), %esi
callq 0x15ad0
movq %rax, %rdi
callq 0x16e20
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x15810
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x16e9a
jmp 0x16eff
movq -0x10(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x10(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/typecheck.c
// Function: TypeError_free
void TypeError_free(TypeError *error) {
    Type_free(error->found);
    Type_free(error->expected);
    free(error);
    return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x16220
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x16220
movq -0x8(%rbp), %rdi
callq 0x6030
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/typecheck.c
// Function: TypeCheckSuccess_init
TypeCheckResult *TypeCheckSuccess_init(Type *type) {
    TypeCheckResult *res = challoc(sizeof(TypeCheckResult));
    res->success = true;
    res->type    = type;
    res->errors  = NULL;
    return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movl $0x18, %edi
callq 0x62f0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl $0x1, (%rax)
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x10(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)