LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_module_source_code
static void ext_get_module_source_code(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_module_source_code");
	
	script_value_t* val = script_get_arg(args, 0);
	int module_index = (int)val->number;
	
	script_module_t* module = vec_get(&script->modules, module_index);
	script_push_cstr(script, module->source_code);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0x103c3(%rip)     # 0x16238
js 0x5eba
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
cvttsd2si 0x20(%rax), %eax
leaq 0x2b8(%rbx), %rdi
movslq %eax, %rsi
callq 0xdf24
movq 0x30(%rax), %rsi
movq %rbx, %rdi
callq 0x355c
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x9d90(%rip), %rsi      # 0xfc51
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_expr_kind
static void ext_get_expr_kind(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_expr_kind");
	
	script_value_t* exp_val = script_get_arg(args, 0);
	expr_t* exp = exp_val->nat.value;
	
	script_push_number(script, exp->type);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0x10176(%rip)     # 0x16238
js 0x611a
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
movl 0x28(%rax), %eax
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0x10(%rbp)
movq %rbx, %rdi
movl $0x3, %esi
callq 0x3318
movsd -0x10(%rbp), %xmm0
movsd %xmm0, 0x20(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x9bf0(%rip), %rsi      # 0xfd11
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_bool_type
static void ext_create_bool_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_bool_type");

	g_file = script->cur_file;
	g_line = script->cur_line;
	
	script_push_native(script, create_type_tag(script, TAG_BOOL), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0x100fc(%rip)     # 0x16238
js 0x619f
movq 0x128(%rbx), %rax
movq %rax, 0x10004(%rip)     # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfff0(%rip)      # 0x16148
movq %rbx, %rdi
movl $0x2, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9baf(%rip), %rsi      # 0xfd55
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_char_type
static void ext_create_char_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_char_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_push_native(script, create_type_tag(script, TAG_CHAR), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0x10077(%rip)     # 0x16238
js 0x6224
movq 0x128(%rbx), %rax
movq %rax, 0xff7f(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xff6b(%rip)      # 0x16148
movq %rbx, %rdi
movl $0x3, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9b71(%rip), %rsi      # 0xfd9c
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_number_type
static void ext_create_number_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_number_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_push_native(script, create_type_tag(script, TAG_NUMBER), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xfff2(%rip)      # 0x16238
js 0x62a9
movq 0x128(%rbx), %rax
movq %rax, 0xfefa(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfee6(%rip)      # 0x16148
movq %rbx, %rdi
movl $0x4, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9b33(%rip), %rsi      # 0xfde3
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_string_type
static void ext_create_string_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_string_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_push_native(script, create_type_tag(script, TAG_STRING), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xff6d(%rip)      # 0x16238
js 0x632e
movq 0x128(%rbx), %rax
movq %rax, 0xfe75(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfe61(%rip)      # 0x16148
movq %rbx, %rdi
movl $0x5, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9af7(%rip), %rsi      # 0xfe2c
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_function_type
static void ext_create_function_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_function_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_value_t* return_type_val = script_get_arg(args, 0);
	script_value_t* arg_types_val = script_get_arg(args, 1);
	
	type_tag_t* tag = create_type_tag(script, TAG_FUNC);
	tag->func.return_type = return_type_val->nat.value;
	for(int i = 0; i < arg_types_val->array.length; ++i)
	{
		script_value_t* arg_type_val = vec_get_value(&arg_types_val->array, i, script_value_t*);
		type_tag_t* arg_tag = arg_type_val->nat.value;
		
		vec_push_back(&tag->func.arg_types, &arg_tag);
	}
	
	script_push_native(script, tag, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r12
cmpl $0x0, 0xfede(%rip)      # 0x16238
js 0x6447
movq %rsi, %r14
movq 0x128(%r12), %rax
movq %rax, 0xfdde(%rip)      # 0x16150
movl 0x124(%r12), %eax
movl %eax, 0xfdc8(%rip)      # 0x16148
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %rbx
movq %r12, -0x38(%rbp)
movq %r12, %rdi
movl $0x6, %esi
callq 0x816f
movq 0x20(%r15), %rcx
movq %rax, -0x30(%rbp)
movq %rcx, 0x48(%rax)
cmpq $0x0, 0x30(%rbx)
je 0x63fe
movq -0x30(%rbp), %r15
addq $0x28, %r15
leaq 0x20(%rbx), %r12
xorl %r13d, %r13d
leaq -0x40(%rbp), %r14
movq %r12, %rdi
movq %r13, %rsi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0x40(%rbp)
movq %r15, %rdi
movq %r14, %rsi
callq 0xdf81
incq %r13
cmpq %r13, 0x30(%rbx)
ja 0x63d4
movq -0x38(%rbp), %rbx
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq -0x30(%rbp), %rcx
movq %rcx, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9a27(%rip), %rsi      # 0xfe75
movq %r12, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_array_type
static void ext_create_array_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_array_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_value_t* contained_val = script_get_arg(args, 0);
	type_tag_t* contained = contained_val->nat.value;
	
	type_tag_t* array = create_type_tag(script, TAG_ARRAY);
	array->contained = contained;
	
	script_push_native(script, array, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xfdcc(%rip)      # 0x16238
js 0x64ea
movq 0x128(%rbx), %rax
movq %rax, 0xfcd4(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfcc0(%rip)      # 0x16148
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %r15
movq %rbx, %rdi
movl $0x7, %esi
callq 0x816f
movq %rax, %r14
movq %r15, 0x28(%rax)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x99cf(%rip), %rsi      # 0xfec0
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_native_type
static void ext_create_native_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_native_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_push_native(script, create_type_tag(script, TAG_NATIVE), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xfd2c(%rip)      # 0x16238
js 0x656f
movq 0x128(%rbx), %rax
movq %rax, 0xfc34(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfc20(%rip)      # 0x16148
movq %rbx, %rdi
movl $0x8, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9992(%rip), %rsi      # 0xff08
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_dynamic_type
static void ext_create_dynamic_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_dynamic_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_push_native(script, create_type_tag(script, TAG_DYNAMIC), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xfca7(%rip)      # 0x16238
js 0x65f4
movq 0x128(%rbx), %rax
movq %rax, 0xfbaf(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfb9b(%rip)      # 0x16148
movq %rbx, %rdi
movl $0x1, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9956(%rip), %rsi      # 0xff51
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_void_type
static void ext_create_void_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("create_void_type");

	g_file = script->cur_file;
	g_line = script->cur_line;

	script_push_native(script, create_type_tag(script, TAG_VOID), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xfc22(%rip)      # 0x16238
js 0x6676
movq 0x128(%rbx), %rax
movq %rax, 0xfb2a(%rip)      # 0x16150
movl 0x124(%rbx), %eax
movl %eax, 0xfb16(%rip)      # 0x16148
movq %rbx, %rdi
xorl %esi, %esi
callq 0x816f
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x991e(%rip), %rsi      # 0xff9b
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_compare_types
static void ext_compare_types(script_t* script, vector_t* args)
{
	script_value_t* a_val = script_get_arg(args, 0);
	script_value_t* b_val = script_get_arg(args, 1);
	
	type_tag_t* a = a_val->nat.value;
	type_tag_t* b = b_val->nat.value;

	script_push_bool(script, compare_type_tags(a, b));
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%r15), %rdi
movq 0x20(%rax), %rsi
callq 0x8269
movl $0x1, %ecx
movl %ecx, 0xfab0(%rip)      # 0x1617c
leaq 0xfa9d(%rip), %rdx      # 0x16170
movb $0x1, 0xfab6(%rip)      # 0x16190
movl %ecx, 0xfadc(%rip)      # 0x161bc
leaq 0xfac9(%rip), %rsi      # 0x161b0
movb $0x0, 0xfae2(%rip)      # 0x161d0
testb %al, %al
cmovneq %rdx, %rsi
movq %rbx, %rdi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_array_type_contained_type
static void ext_get_array_type_contained_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_array_type_contained_type");

	script_value_t* type_val = script_get_arg(args, 0);
	type_tag_t* array_tag = type_val->nat.value;

	script_push_native(script, array_tag->contained, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xfb11(%rip)      # 0x16238
js 0x6775
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
movq 0x28(%rax), %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x99c4(%rip), %rsi      # 0x10140
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_reference_func
static void ext_reference_func(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("reference_func");
	
	script_value_t* name_val = script_get_arg(args, 0);
	const char* name = name_val->string.data;
	
	func_decl_t* decl = reference_function(script, name);
	if(decl)
		script_push_native(script, decl, NULL, NULL);
	else
		script_push_null(script);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xfaa1(%rip)      # 0x16238
js 0x6807
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x28(%rax), %rsi
movq %rbx, %rdi
callq 0x84c0
testq %rax, %rax
je 0x67da
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
jmp 0x67ee
movl $0x0, 0xfa18(%rip)      # 0x161fc
leaq 0xfa05(%rip), %rsi      # 0x161f0
movq %rbx, %rdi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9986(%rip), %rsi      # 0x10194
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_func_decl_name
static void ext_get_func_decl_name(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_func_decl_name");
	
	script_value_t* decl_val = script_get_arg(args, 0);
	func_decl_t* decl = decl_val->nat.value;
	
	script_push_cstr(script, decl->name);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xfa10(%rip)      # 0x16238
js 0x685d
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
movq 0x18(%rax), %rsi
movq %rbx, %rdi
callq 0x355c
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x9975(%rip), %rsi      # 0x101d9
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_declare_variable
static void ext_declare_variable(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("declare_variable");
	
	script_value_t* name_val = script_get_arg(args, 0);
	script_value_t* type_val = script_get_arg(args, 1);
	script_value_t* func_decl_val = script_get_arg(args, 2);
	script_value_t* scope_val = script_get_arg(args, 3);
	
	const char* name = name_val->string.data;
	type_tag_t* tag = type_val->nat.value;
	func_decl_t* decl = NULL;
	int scope = 0;
	
	if(func_decl_val->type != VAL_NULL)
	{
		decl = func_decl_val->nat.value;
		scope = (int)scope_val->number;
	}

	g_cur_func = decl;
	g_scope = scope;
	
	script_push_native(script, declare_variable(script, name, tag), NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf9b2(%rip)      # 0x16238
js 0x6946
movq %rsi, %r14
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r13
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %r15
movl $0x2, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %r12
movl $0x3, %esi
movq %r14, %rdi
callq 0xdf24
xorl %edi, %edi
movq 0x28(%r13), %rsi
movq 0x20(%r15), %rdx
cmpl $0x0, 0xc(%r12)
movl $0x0, %ecx
je 0x68ed
movq (%rax), %rax
movq 0x20(%r12), %rdi
cvttsd2si 0x20(%rax), %ecx
movq %rdi, 0xf954(%rip)      # 0x16248
movl %ecx, 0xf946(%rip)      # 0x16240
movq %rbx, %rdi
callq 0x85ac
movq %rax, %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x98d5(%rip), %rsi      # 0x10222
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_reference_variable
static void ext_reference_variable(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("reference_variable");
	
	script_value_t* name_val = script_get_arg(args, 0);
	script_value_t* func_decl_val = script_get_arg(args, 1);
	script_value_t* scope_val = script_get_arg(args, 2);
	
	const char* name = name_val->string.data;
	func_decl_t* decl = NULL;
	int scope = 0;
	
	if(func_decl_val->type != VAL_NULL)
	{
		decl = func_decl_val->nat.value;
		scope = (int)scope_val->number;
	}

	g_cur_func = decl;
	g_scope = scope;
	
	var_decl_t* vdecl = reference_variable(script, name);
	if(!vdecl)
		error_exit_script(script, "Attempted to reference non-existent variable '%s'\n", name);
	else
		script_push_native(script, vdecl, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf8c9(%rip)      # 0x16238
js 0x6a26
movq %rsi, %r14
xorl %r15d, %r15d
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r13
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %r12
movl $0x2, %esi
movq %r14, %rdi
callq 0xdf24
movq 0x28(%r13), %r14
cmpl $0x0, 0xc(%r12)
movl $0x0, %ecx
je 0x69c4
movq (%rax), %rax
movq 0x20(%r12), %rcx
cvttsd2si 0x20(%rax), %r15d
movq %rcx, 0xf87d(%rip)      # 0x16248
movl %r15d, 0xf86e(%rip)     # 0x16240
movq %rbx, %rdi
movq %r14, %rsi
callq 0x86d2
testq %rax, %rax
je 0x6a37
movq %rax, %r15
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r15, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x987a(%rip), %rsi      # 0x102a7
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
leaq 0x98b2(%rip), %rsi      # 0x102f0
movq %rbx, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_parse_code
static void ext_parse_code(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("parse_code");
	
	script_module_t* module = vec_get(&script->modules, g_cur_module_index);
	script_value_t* code_val = script_get_arg(args, 0);
	
	const char* code = code_val->string.data;

	g_file = "parse_code";
	g_code = code;
	g_line = 1;

	vector_t expr_list;
	vec_init(&expr_list, sizeof(expr_t*));

	parse_program(script, &expr_list);

	vector_t expr_nat_list;
	vec_init(&expr_nat_list, sizeof(script_value_t*));

	for (int i = 0; i < expr_list.length; ++i)
	{
		expr_t* exp = vec_get_value(&expr_list, i, expr_t*);

		script_value_t* val = new_value(script, VAL_NATIVE);
		
		val->nat.on_mark = NULL;
		val->nat.on_delete = NULL;
		
		val->nat.value = exp;

		vec_push_back(&expr_nat_list, &val);
	}

	vec_destroy(&expr_list);

	script_push_premade_array(script, expr_nat_list);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdi, %rbx
cmpl $0x0, 0xf7d2(%rip)      # 0x16238
js 0x6b95
movq %rsi, %r14
leaq 0x2b8(%rbx), %rdi
movslq 0xf7bb(%rip), %rsi      # 0x16238
callq 0xdf24
movq %r14, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x28(%rax), %rax
leaq 0x8eeb(%rip), %rcx      # 0xf985
movq %rcx, 0xf6af(%rip)      # 0x16150
movq %rax, 0xf788(%rip)      # 0x16230
movl $0x1, 0xf696(%rip)      # 0x16148
leaq -0x90(%rbp), %r14
movl $0x8, %esi
movq %r14, %rdi
callq 0xdcb4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3c52
leaq -0x70(%rbp), %rdi
movl $0x8, %esi
callq 0xdcb4
cmpq $0x0, 0x10(%r14)
je 0x6b33
xorl %r14d, %r14d
leaq -0x70(%rbp), %r12
leaq -0x50(%rbp), %r13
leaq -0x90(%rbp), %rdi
movq %r14, %rsi
callq 0xdf24
movq (%rax), %r15
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %rax, -0x50(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %r15, 0x20(%rax)
movq %r12, %rdi
movq %r13, %rsi
callq 0xdf81
incq %r14
cmpq %r14, -0x80(%rbp)
ja 0x6af1
leaq -0x90(%rbp), %rdi
callq 0xe1d2
movups -0x70(%rbp), %xmm0
movups -0x60(%rbp), %xmm1
movaps %xmm1, -0x40(%rbp)
movaps %xmm0, -0x50(%rbp)
movq %rbx, %rdi
movl $0x6, %esi
callq 0x3318
movaps -0x50(%rbp), %xmm0
movaps -0x40(%rbp), %xmm1
movups %xmm0, 0x20(%rax)
movups %xmm1, 0x30(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9787(%rip), %rsi      # 0x10323
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_num_expr
static void ext_make_num_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_num_expr");
	
	script_value_t* val = script_get_arg(args, 0);
	double number = val->number;
	
	expr_t* exp = create_expr(EXP_NUMBER);
	exp->number_index = register_number(script, number);
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
cmpl $0x0, 0xf67d(%rip)      # 0x16238
js 0x6c2d
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movl $0x9, %edi
callq 0x8991
movq %rax, %r14
movq %rbx, %rdi
movsd -0x18(%rbp), %xmm0
callq 0x89f3
movl %eax, 0x38(%r14)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9730(%rip), %rsi      # 0x10364
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_string_expr
static void ext_make_string_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_num_expr");
	
	script_value_t* val = script_get_arg(args, 0);
	const char* string = val->string.data;
	
	expr_t* exp = create_expr(EXP_STRING);
	exp->string_index = register_string(script, string);
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf5e6(%rip)      # 0x16238
js 0x6cbe
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x28(%rax), %r14
movl $0xa, %edi
callq 0x8991
movq %rax, %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8a8f
movl %eax, 0x38(%r15)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r15, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x969f(%rip), %rsi      # 0x10364
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_var_expr
static void ext_make_var_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_var_expr");
	
	script_value_t* decl_val = script_get_arg(args, 0);
	var_decl_t* decl = decl_val->nat.value;
	
	expr_t* exp = create_expr(EXP_VAR);
	
	exp->varx.decl = decl;
	exp->varx.name = estrdup(decl->name);
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf555(%rip)      # 0x16238
js 0x6d51
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %r15
movl $0x5, %edi
callq 0x8991
movq %rax, %r14
movq %r15, 0x40(%rax)
movq 0x10(%r15), %rdi
callq 0x2807
movq %rax, 0x38(%r14)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9650(%rip), %rsi      # 0x103a8
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_undeclared_var_expr
static void ext_make_undeclared_var_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_undeclared_var_expr");
	
	script_value_t* name_val = script_get_arg(args, 0);
	expr_t* exp = create_expr(EXP_VAR);
	
	exp->varx.decl = NULL;
	exp->varx.name = estrdup(name_val->string.data);
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf4c2(%rip)      # 0x16238
js 0x6de4
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x5, %edi
callq 0x8991
movq %rax, %r14
movq $0x0, 0x40(%rax)
movq 0x28(%r15), %rdi
callq 0x2807
movq %rax, 0x38(%r14)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9601(%rip), %rsi      # 0x103ec
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_write_expr
static void ext_make_write_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_write_expr");
	
	script_value_t* val = script_get_arg(args, 0);
	
	expr_t* exp = create_expr(EXP_WRITE);
	exp->write = val->nat.value;
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script); 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf42f(%rip)      # 0x16238
js 0x6e6a
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0xc, %edi
callq 0x8991
movq %rax, %r14
movq 0x20(%r15), %rax
movq %rax, 0x38(%r14)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x95ca(%rip), %rsi      # 0x1043b
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_bin_expr
static void ext_make_bin_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_bin_expr");
	
	script_value_t* lhs_val = script_get_arg(args, 0);
	script_value_t* rhs_val = script_get_arg(args, 1);
	script_value_t* op_val = script_get_arg(args, 2);

	expr_t* lhs = lhs_val->nat.value;
	expr_t* rhs = rhs_val->nat.value;
	const char* op = op_val->string.data;
	
	expr_t* exp = create_expr(EXP_BINARY);
	exp->binx.lhs = lhs;
	exp->binx.rhs = rhs;
	
	if(strcmp(op, "=") == 0) exp->binx.op = TOK_ASSIGN;
	else error_exit_script(script, "Invalid operator '%s' given to 'make_bin_expr'\n", op);
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf3a5(%rip)      # 0x16238
js 0x6f47
movq %rsi, %r14
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %r12
movl $0x2, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%r15), %r13
movq 0x20(%r12), %r12
movq 0x28(%rax), %r14
movl $0xe, %edi
callq 0x8991
movq %rax, %r15
movq %r13, 0x38(%rax)
movq %r12, 0x40(%rax)
leaq 0x9dc0(%rip), %rsi      # 0x10cb2
movq %r14, %rdi
callq 0x2150
testl %eax, %eax
jne 0x6f58
movl $0x24, 0x48(%r15)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r15, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9533(%rip), %rsi      # 0x10481
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
leaq 0x9566(%rip), %rsi      # 0x104c5
movq %rbx, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_call_expr
static void ext_make_call_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_call_expr");
	
	script_value_t* func_val = script_get_arg(args, 0);
	script_value_t* args_val = script_get_arg(args, 1);
	
	expr_t* exp = create_expr(EXP_CALL);
	vec_init(&exp->callx.args, sizeof(expr_t*));
	exp->callx.func = func_val->nat.value;
	
	for(int i = 0; i < args_val->array.length; ++i)
	{
		script_value_t* arg_exp_val = vec_get_value(&args_val->array, i, script_value_t*);
		vec_push_back(&exp->callx.args, &arg_exp_val->nat.value);
	}
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, -0x30(%rbp)
cmpl $0x0, 0xf2b3(%rip)      # 0x16238
js 0x7048
movq %rsi, %r14
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r12
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %rbx
movl $0xf, %edi
callq 0x8991
movq %rax, %r14
leaq 0x40(%rax), %r15
movl $0x8, %esi
movq %r15, %rdi
callq 0xdcb4
movq 0x20(%r12), %rax
movq %rax, 0x38(%r14)
cmpq $0x0, 0x30(%rbx)
je 0x7003
leaq 0x20(%rbx), %r12
xorl %r13d, %r13d
movq %r12, %rdi
movq %r13, %rsi
callq 0xdf24
movq (%rax), %rsi
addq $0x20, %rsi
movq %r15, %rdi
callq 0xdf81
incq %r13
cmpq %r13, 0x30(%rbx)
ja 0x6fe0
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x94a6(%rip), %rsi      # 0x104f5
movq -0x30(%rbp), %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_array_index_expr
static void ext_make_array_index_expr(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("make_array_index_expr");
	
	script_value_t* array_exp_val = script_get_arg(args, 0);
	script_value_t* index_exp_val = script_get_arg(args, 1);
	
	expr_t* exp = create_expr(EXP_ARRAY_INDEX);
	exp->array_index.array = array_exp_val->nat.value;
	exp->array_index.index = index_exp_val->nat.value;
	
	script_push_native(script, exp, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xf1c9(%rip)      # 0x16238
js 0x70ea
movq %rsi, %r14
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %r12
movl $0x6, %edi
callq 0x8991
movq %rax, %r14
movq 0x20(%r15), %rax
movq %rax, 0x38(%r14)
movq 0x20(%r12), %rax
movq %rax, 0x40(%r14)
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9449(%rip), %rsi      # 0x1053a
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_func_expr_decl
static void ext_get_func_expr_decl(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_func_expr_decl");
	
	script_value_t* exp_val = script_get_arg(args, 0);
	expr_t* exp = exp_val->nat.value;
	
	if(exp->type != EXP_FUNC) error_exit_script(script, "Passed non-func expression into 'get_func_expr_decl'\n");
	
	script_push_native(script, exp->funcx.decl, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xf12c(%rip)      # 0x16238
js 0x7160
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
cmpl $0x19, 0x28(%rax)
jne 0x7169
movq 0x38(%rax), %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x941f(%rip), %rsi      # 0x10586
jmp 0x7170
leaq 0x945f(%rip), %rsi      # 0x105cf
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_expr_type
static void ext_get_expr_type(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_expr_type");

	script_value_t* exp_val = script_get_arg(args, 0);
	expr_t* exp = exp_val->nat.value;

	// TODO: make script_create_native etc
	script_push_native(script, exp->tag, NULL, NULL);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xf0ad(%rip)      # 0x16238
js 0x71d9
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
movq 0x30(%rax), %r14
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x9425(%rip), %rsi      # 0x10605
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_get_var_expr_name
static void ext_get_var_expr_name(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("get_var_expr_name");

	script_value_t* exp_val = script_get_arg(args, 0);
	expr_t* exp = exp_val->nat.value;

	script_push_cstr(script, exp->varx.name);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xf03e(%rip)      # 0x16238
js 0x722f
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rax
movq 0x38(%rax), %rsi
movq %rbx, %rdi
callq 0x355c
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x9413(%rip), %rsi      # 0x10649
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_resolve_expr_symbols
static void ext_resolve_expr_symbols(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("resolve_expr_symbols");

	script_value_t* exp_val = script_get_arg(args, 0);
	resolve_symbols(script, exp_val->nat.value);

	script_push_bool(script, !g_has_error);
	g_has_error = 0;
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xefe7(%rip)      # 0x16238
js 0x72ca
xorl %r14d, %r14d
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rsi
movq %rbx, %rdi
callq 0x8b6c
movl $0x1, %eax
movl %eax, 0xef02(%rip)      # 0x1617c
leaq 0xeeef(%rip), %rcx      # 0x16170
movb $0x1, 0xef08(%rip)      # 0x16190
movl %eax, 0xef2e(%rip)      # 0x161bc
leaq 0xef1b(%rip), %rsi      # 0x161b0
movb %r14b, 0xef34(%rip)     # 0x161d0
cmpb %r14b, 0xef99(%rip)     # 0x1623c
cmoveq %rcx, %rsi
movq %rbx, %rdi
callq 0x319a
movb %r14b, 0xef86(%rip)     # 0x1623c
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x93c0(%rip), %rsi      # 0x10691
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_resolve_expr_types
static void ext_resolve_expr_types(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("resolve_expr_types");

	script_value_t* exp_val = script_get_arg(args, 0);
	resolve_type_tags(script, exp_val->nat.value);
	
	script_push_bool(script, !g_has_error);
	g_has_error = 0;
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
cmpl $0x0, 0xef4c(%rip)      # 0x16238
js 0x7365
xorl %r14d, %r14d
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rsi
movq %rbx, %rdi
callq 0x8f00
movl $0x1, %eax
movl %eax, 0xee67(%rip)      # 0x1617c
leaq 0xee54(%rip), %rcx      # 0x16170
movb $0x1, 0xee6d(%rip)      # 0x16190
movl %eax, 0xee93(%rip)      # 0x161bc
leaq 0xee80(%rip), %rsi      # 0x161b0
movb %r14b, 0xee99(%rip)     # 0x161d0
cmpb %r14b, 0xeefe(%rip)     # 0x1623c
cmoveq %rcx, %rsi
movq %rbx, %rdi
callq 0x319a
movb %r14b, 0xeeeb(%rip)     # 0x1623c
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x93e6(%rip), %rsi      # 0x10752
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_add_expr_to_module
static void ext_add_expr_to_module(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("add_expr_to_module");
	
	script_value_t* mod_val = script_get_arg(args, 0);
	script_value_t* exp_val = script_get_arg(args, 1);
	
	int module_index = (int)mod_val->number;
	expr_t* exp = exp_val->nat.value;
	
	script_module_t* module = vec_get(&script->modules, module_index);
	vec_push_back(&module->expr_list, &exp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0xeeae(%rip)      # 0x16238
js 0x73e6
movq %rsi, %r14
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %rax
cvttsd2si 0x20(%r15), %ecx
movq 0x20(%rax), %rax
leaq -0x20(%rbp), %r14
movq %rax, (%r14)
addq $0x2b8, %rbx            # imm = 0x2B8
movslq %ecx, %rsi
movq %rbx, %rdi
callq 0xdf24
leaq 0x50(%rax), %rdi
movq %r14, %rsi
callq 0xdf81
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x98cb(%rip), %rsi      # 0x10cb8
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_insert_expr_into_module
static void ext_insert_expr_into_module(script_t* script, vector_t* args)
{
	EXT_CHECK_IF_CT("insert_expr_into_module");
	
	script_value_t* mod_val = script_get_arg(args, 0);
	script_value_t* exp_val = script_get_arg(args, 1);
	script_value_t* loc_val = script_get_arg(args, 2);
	
	int module_index = (int)mod_val->number;
	expr_t* exp = exp_val->nat.value;
	int location = (int)loc_val->number;
	
	script_module_t* module = vec_get(&script->modules, module_index);
	vec_insert(&module->expr_list, &exp, location);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
cmpl $0x0, 0xee28(%rip)      # 0x16238
js 0x7488
movq %rsi, %r14
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r15
movl $0x1, %esi
movq %r14, %rdi
callq 0xdf24
movq (%rax), %r12
movl $0x2, %esi
movq %r14, %rdi
callq 0xdf24
cvttsd2si 0x20(%r15), %ecx
movq (%rax), %rax
movq 0x20(%r12), %rdx
leaq -0x28(%rbp), %r14
movq %rdx, (%r14)
cvttsd2si 0x20(%rax), %r15d
addq $0x2b8, %rbx            # imm = 0x2B8
movslq %ecx, %rsi
movq %rbx, %rdi
callq 0xdf24
leaq 0x50(%rax), %rdi
movslq %r15d, %rdx
movq %r14, %rsi
callq 0xe01e
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9872(%rip), %rsi      # 0x10d01
movq %rbx, %rdi
xorl %eax, %eax
callq 0x321a
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_make_array_of_length
static void ext_make_array_of_length(script_t* script, vector_t* args)
{
	script_value_t* val = script_get_arg(args, 0);
	int length = (int)val->number;
	
	vector_t array;
	vec_init(&array, sizeof(script_value_t*));
	script_value_t* null_value = NULL;
	vec_resize(&array, length, &null_value);
	
	script_push_premade_array(script, array);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x58, %rsp
movq %rdi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
cvttsd2si 0x20(%rax), %r15d
leaq -0x68(%rbp), %r14
movl $0x8, %esi
movq %r14, %rdi
callq 0xdcb4
leaq -0x48(%rbp), %rdx
movq $0x0, (%rdx)
movslq %r15d, %rsi
movq %r14, %rdi
callq 0xdec2
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movaps %xmm1, -0x30(%rbp)
movaps %xmm0, -0x40(%rbp)
movq %rbx, %rdi
movl $0x6, %esi
callq 0x3318
movaps -0x40(%rbp), %xmm0
movaps -0x30(%rbp), %xmm1
movups %xmm0, 0x20(%rax)
movups %xmm1, 0x30(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x58, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_array_push
static void ext_array_push(script_t* script, vector_t* args)
{
	script_value_t* array_val = script_get_arg(args, 0);
	script_value_t* value_val = script_get_arg(args, 1);

	vector_t* array = &array_val->array;
	
	vec_push_back(array, &value_val);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r14
movl $0x1, %esi
movq %rbx, %rdi
callq 0xdf24
movq (%rax), %rax
leaq -0x18(%rbp), %rsi
movq %rax, (%rsi)
addq $0x20, %r14
movq %r14, %rdi
callq 0xdf81
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_array_pop
static void ext_array_pop(script_t* script, vector_t* args)
{
	script_value_t* array_val = script_get_arg(args, 0);
	script_value_t* value;

	vector_t* array = &array_val->array;

	vec_pop_back(array, &value);

	push_value(script, value);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rdi
addq $0x20, %rdi
leaq -0x18(%rbp), %r14
movq %r14, %rsi
callq 0xdfda
movq (%r14), %rsi
movq %rbx, %rdi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_number_to_string
static void ext_number_to_string(script_t* script, vector_t* args)
{
	script_value_t* val = script_get_arg(args, 0);
	
	static char buf[256]; // TODO: don't use a magic number here
	sprintf(buf, "%g", val->number);
	
	script_push_cstr(script, buf);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movsd 0x20(%rax), %xmm0
leaq 0xebba(%rip), %r14      # 0x16250
leaq 0x96b2(%rip), %rsi      # 0x10d4f
movq %r14, %rdi
movb $0x1, %al
callq 0x2220
movq %rbx, %rdi
movq %r14, %rsi
callq 0x355c
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_create_u8_buffer
static void ext_create_u8_buffer(script_t* script, vector_t* args)
{
	vector_t* buf = emalloc(sizeof(vector_t));
	vec_init(buf, sizeof(uint8_t));
	script_push_native(script, buf, NULL, delete_u8_buffer);
	script_return_top(script); 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movl $0x20, %edi
callq 0x21b0
testq %rax, %rax
je 0x78b6
movq %rax, %r14
movl $0x1, %esi
movq %rax, %rdi
callq 0xdcb4
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3318
movq %r14, 0x20(%rax)
movq $0x0, 0x28(%rax)
leaq 0x22b9(%rip), %rcx      # 0x9b4c
movq %rcx, 0x30(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
leaq 0xa3da(%rip), %rdi      # 0x11c97
xorl %eax, %eax
callq 0x384e
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_u8_buffer_push
static void ext_u8_buffer_push(script_t* script, vector_t* args)
{
	script_native_t* nat = &script_get_arg(args, 0)->nat;
	script_value_t* val = script_get_arg(args, 1);
	
	uint8_t value = (uint8_t)val->number;
	
	vec_push_back(nat->value, &value);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %r14
movl $0x1, %esi
movq %rbx, %rdi
callq 0xdf24
movq (%rax), %rax
cvttsd2si 0x20(%rax), %eax
leaq -0x11(%rbp), %rsi
movb %al, (%rsi)
movq 0x20(%r14), %rdi
callq 0xdf81
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/goodpaul6[P]generic/script.c
// Function: ext_u8_buffer_pop
static void ext_u8_buffer_pop(script_t* script, vector_t* args)
{
	script_native_t* nat = &script_get_arg(args, 0)->nat;
	uint8_t value;
	vec_pop_back(nat->value, &value);
	
	script_push_number(script, value);
	script_return_top(script);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq %rsi, %rdi
xorl %esi, %esi
callq 0xdf24
movq (%rax), %rax
movq 0x20(%rax), %rdi
leaq -0x11(%rbp), %r14
movq %r14, %rsi
callq 0xdfda
movzbl (%r14), %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x20(%rbp)
movq %rbx, %rdi
movl $0x3, %esi
callq 0x3318
movsd -0x20(%rbp), %xmm0
movsd %xmm0, 0x20(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x319a
movq %rbx, %rdi
callq 0x3121
movq %rax, 0x160(%rbx)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq