LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: load_variable
static String * _load_variable(FILE * fp, int c)
{
	String * str;
	String buf[2] = "\0";

	buf[0] = c;
	if((str = string_new(buf)) == NULL)
		return NULL;
	while((c = fgetc(fp)) != EOF && c != '=' && _load_isprint(c))
	{
		buf[0] = c;
		if(string_append(&str, buf) != 0)
			break;
	}
	if(c != '=')
	{
		string_delete(str);
		return NULL;
	}
	return str;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
leaq -0x22(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x4320
movl -0x14(%rbp), %eax
movb %al, -0x22(%rbp)
leaq -0x22(%rbp), %rdi
callq 0x41f0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x6282
movq $0x0, -0x8(%rbp)
jmp 0x62fe
jmp 0x6284
movq -0x10(%rbp), %rdi
callq 0x4380
movl %eax, %ecx
movl %ecx, -0x14(%rbp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, -0x23(%rbp)
je 0x62b8
xorl %eax, %eax
cmpl $0x3d, -0x14(%rbp)
movb %al, -0x23(%rbp)
je 0x62b8
movl -0x14(%rbp), %edi
callq 0x6210
cmpl $0x0, %eax
setne %al
movb %al, -0x23(%rbp)
movb -0x23(%rbp), %al
testb $0x1, %al
jne 0x62c1
jmp 0x62dd
movl -0x14(%rbp), %eax
movb %al, -0x22(%rbp)
leaq -0x22(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x43d0
cmpl $0x0, %eax
je 0x62db
jmp 0x62dd
jmp 0x6284
cmpl $0x3d, -0x14(%rbp)
je 0x62f6
movq -0x20(%rbp), %rdi
callq 0x4260
movq $0x0, -0x8(%rbp)
jmp 0x62fe
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: load_value
static String * _load_value(FILE * fp)
{
	int c;
	String * str = NULL;
	String buf[2] = "\0";

	while((c = fgetc(fp)) != EOF && _load_isprint(c))
	{
		buf[0] = c;
		if(string_append(&str, buf) != 0)
			break;
	}
	if(c != EOF && c != '\n')
	{
		string_delete(str);
		return NULL;
	}
	if(str == NULL)
		return string_new("");
	return str;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq $0x0, -0x20(%rbp)
leaq -0x22(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x4320
movq -0x10(%rbp), %rdi
callq 0x4380
movl %eax, %ecx
movl %ecx, -0x14(%rbp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, -0x23(%rbp)
je 0x635d
movl -0x14(%rbp), %edi
callq 0x6210
cmpl $0x0, %eax
setne %al
movb %al, -0x23(%rbp)
movb -0x23(%rbp), %al
testb $0x1, %al
jne 0x6366
jmp 0x6382
movl -0x14(%rbp), %eax
movb %al, -0x22(%rbp)
leaq -0x22(%rbp), %rsi
leaq -0x20(%rbp), %rdi
callq 0x43d0
cmpl $0x0, %eax
je 0x6380
jmp 0x6382
jmp 0x6334
cmpl $-0x1, -0x14(%rbp)
je 0x63a1
cmpl $0xa, -0x14(%rbp)
je 0x63a1
movq -0x20(%rbp), %rdi
callq 0x4260
movq $0x0, -0x8(%rbp)
jmp 0x63c2
cmpq $0x0, -0x20(%rbp)
jne 0x63ba
leaq 0x9d0a(%rip), %rdi      # 0x100b9
callq 0x41f0
movq %rax, -0x8(%rbp)
jmp 0x63c2
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: config_load_preferences
int config_load_preferences(Config * config, String const * vendor,
		String const * package, String const * filename)
{
	int ret;

	if((ret = config_load_preferences_system(config, vendor, package,
					filename)) != 0
			&& ret != -ENOENT && ret != -EPERM)
		return ret;
	if((ret = config_load_preferences_user(config, vendor, package,
					filename)) != 0
			&& ret != -ENOENT)
		return ret;
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x46f0
movl %eax, -0x2c(%rbp)
cmpl $0x0, %eax
je 0x6419
cmpl $-0x2, -0x2c(%rbp)
je 0x6419
cmpl $-0x1, -0x2c(%rbp)
je 0x6419
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x644b
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0x45f0
movl %eax, -0x2c(%rbp)
cmpl $0x0, %eax
je 0x6444
cmpl $-0x2, -0x2c(%rbp)
je 0x6444
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x644b
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: config_load_preferences_system
int config_load_preferences_system(Config * config, String const * vendor,
		String const * package, String const * filename)
{
	int ret;
	String * f;

	if(filename == NULL)
		return error_set_code(-EINVAL, "%s", strerror(EINVAL));
	if(vendor != NULL && (string_compare_length(vendor, "../", 3) == 0
				|| string_find(vendor, "/..") != NULL))
		return error_set_code(-EPERM, "%s", strerror(EPERM));
	if(package != NULL && (string_compare_length(package, "../", 3) == 0
				|| string_find(package, "/..") != NULL))
		return error_set_code(-EPERM, "%s", strerror(EPERM));
	if((f = string_new_append(SYSCONFDIR, "/",
					(vendor != NULL) ? vendor : "", "/",
					(package != NULL) ? package : "", "/",
					filename, NULL)) == NULL)
		return error_get_code();
	ret = config_load(config, f);
	string_delete(f);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x64a7
movl $0x16, %edi
callq 0x4840
movq %rax, %rdx
movl $0xffffffea, %edi       # imm = 0xFFFFFFEA
leaq 0x9bc6(%rip), %rsi      # 0x1005e
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6612
cmpq $0x0, -0x18(%rbp)
je 0x6506
movq -0x18(%rbp), %rdi
leaq 0x9bcf(%rip), %rsi      # 0x10088
movl $0x3, %edx
callq 0x44f0
cmpl $0x0, %eax
je 0x64de
movq -0x18(%rbp), %rdi
leaq 0x9bb9(%rip), %rsi      # 0x1008c
callq 0x42d0
cmpq $0x0, %rax
je 0x6506
movl $0x1, %edi
callq 0x4840
movq %rax, %rdx
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
leaq 0x9b67(%rip), %rsi      # 0x1005e
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6612
cmpq $0x0, -0x20(%rbp)
je 0x6565
movq -0x20(%rbp), %rdi
leaq 0x9b70(%rip), %rsi      # 0x10088
movl $0x3, %edx
callq 0x44f0
cmpl $0x0, %eax
je 0x653d
movq -0x20(%rbp), %rdi
leaq 0x9b5a(%rip), %rsi      # 0x1008c
callq 0x42d0
cmpq $0x0, %rax
je 0x6565
movl $0x1, %edi
callq 0x4840
movq %rax, %rdx
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
leaq 0x9b08(%rip), %rsi      # 0x1005e
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6612
cmpq $0x0, -0x18(%rbp)
je 0x6576
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x6583
leaq 0x9b3c(%rip), %rax      # 0x100b9
movq %rax, -0x40(%rbp)
jmp 0x6583
movq -0x40(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x659c
movq -0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x65a9
leaq 0x9b16(%rip), %rax      # 0x100b9
movq %rax, -0x50(%rbp)
jmp 0x65a9
movq -0x48(%rbp), %rdx
movq -0x50(%rbp), %r8
movq -0x28(%rbp), %rax
leaq 0x9ad4(%rip), %rdi      # 0x10090
leaq 0x9ac7(%rip), %r9       # 0x1008a
xorl %ecx, %ecx
movq %r9, %rsi
movq %r9, %rcx
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, %al
callq 0x4220
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x65f3
callq 0x4410
movl %eax, -0x4(%rbp)
jmp 0x6612
movq -0x10(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x41a0
movl %eax, -0x2c(%rbp)
movq -0x38(%rbp), %rdi
callq 0x4260
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: config_save
int config_save(Config const * config, String const * filename)
{
	ConfigSave save;

	save.sep = "";
	if((save.fp = fopen(filename, "w")) == NULL)
		return error_set_code(-errno, "%s: %s", filename,
				strerror(errno));
	mutator_foreach(config, _save_foreach_default, &save);
	mutator_foreach(config, _save_foreach, &save);
	if(save.fp != NULL && save.sep[0] != '\0'
			&& fputs(save.sep, save.fp) == EOF)
	{
		fclose(save.fp);
		save.fp = NULL;
	}
	if(save.fp == NULL || fclose(save.fp) != 0)
		return error_set_code(-errno, "%s: %s", filename,
				strerror(errno));
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq 0x97d2(%rip), %rax      # 0x100b9
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
leaq 0x97b8(%rip), %rsi      # 0x100ae
callq 0x4740
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x6948
callq 0x40d0
movq %rax, %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, -0x34(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0x40d0
movl (%rax), %edi
callq 0x4840
movl -0x34(%rbp), %edi
movq -0x30(%rbp), %rdx
movq %rax, %rcx
leaq 0x9728(%rip), %rsi      # 0x10061
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6a02
movq -0x10(%rbp), %rdi
leaq 0xbd(%rip), %rsi        # 0x6a10
leaq -0x28(%rbp), %rdx
callq 0x43a0
movq -0x10(%rbp), %rdi
leaq 0x109(%rip), %rsi       # 0x6a70
leaq -0x28(%rbp), %rdx
callq 0x43a0
cmpq $0x0, -0x28(%rbp)
je 0x69a6
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x69a6
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x42f0
cmpl $-0x1, %eax
jne 0x69a6
movq -0x28(%rbp), %rdi
callq 0x4240
movq $0x0, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x69bb
movq -0x28(%rbp), %rdi
callq 0x4240
cmpl $0x0, %eax
je 0x69fb
callq 0x40d0
movq %rax, %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, -0x44(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
callq 0x40d0
movl (%rax), %edi
callq 0x4840
movl -0x44(%rbp), %edi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
leaq 0x9672(%rip), %rsi      # 0x10061
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6a02
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: save_foreach_default
static void _save_foreach_default(Mutator const * mutator,
		String const * section, void * value, void * data)
{
	ConfigSave * save = (ConfigSave *)data;
	Mutator * m = (Mutator *)value;
	(void) mutator;

	if(save->fp == NULL)
		return;
	if(section[0] != '\0')
		return;
	mutator_foreach(m, _save_foreach_section, save);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x6a44
jmp 0x6a66
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x6a52
jmp 0x6a66
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x45f(%rip), %rsi       # 0x6ec0
callq 0x43a0
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: save_foreach
static void _save_foreach(Mutator const * mutator, String const * section,
		void * value, void * data)
{
	ConfigSave * save = (ConfigSave *)data;
	Mutator * m = (Mutator *)value;
	(void) mutator;

	if(save->fp == NULL)
		return;
	if(section[0] == '\0')
		return;
	if(fprintf(save->fp, "%s%s[%s]", save->sep, save->sep, section) < 0)
	{
		fclose(save->fp);
		save->fp = NULL;
		return;
	}
	save->sep = "\n";
	mutator_foreach(m, _save_foreach_section, save);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x6aa4
jmp 0x6b1c
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x6ab2
jmp 0x6b1c
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x10(%rbp), %r8
leaq 0x95e6(%rip), %rsi      # 0x100ba
movb $0x0, %al
callq 0x4460
cmpl $0x0, %eax
jge 0x6af9
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x4240
movq -0x28(%rbp), %rax
movq $0x0, (%rax)
jmp 0x6b1c
movq -0x28(%rbp), %rax
leaq 0x95b4(%rip), %rcx      # 0x100b8
movq %rcx, 0x8(%rax)
movq -0x30(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x3a9(%rip), %rsi       # 0x6ec0
callq 0x43a0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: config_save_preferences_user
int config_save_preferences_user(Config const * config, String const * vendor,
		String const * package, String const * filename)
{
	int ret;
	String const * homedir;
	String * f;

	if(filename == NULL)
		return error_set_code(-EINVAL, "%s", strerror(EINVAL));
	if((homedir = getenv("HOME")) == NULL)
		return error_set_code(-errno, "%s", strerror(errno));
	if((f = string_new_append(homedir, "/.config/",
					(vendor != NULL) ? vendor : "",
					(vendor != NULL) ? "/" : "",
					(package != NULL) ? package : "",
					(package != NULL) ? "/" : "",
					filename, NULL)) == NULL)
		return error_get_code();
	if((ret = _save_preferences_user_mkdir(f)) == 0)
		ret = config_save(config, f);
	string_delete(f);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x6b7a
movl $0x16, %edi
callq 0x4840
movq %rax, %rdx
movl $0xffffffea, %edi       # imm = 0xFFFFFFEA
leaq 0x94f3(%rip), %rsi      # 0x1005e
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6cc1
leaq 0x951e(%rip), %rdi      # 0x1009f
callq 0x4050
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
jne 0x6bc7
callq 0x40d0
movq %rax, %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, -0x44(%rbp)
callq 0x40d0
movl (%rax), %edi
callq 0x4840
movl -0x44(%rbp), %edi
movq %rax, %rdx
leaq 0x94a6(%rip), %rsi      # 0x1005e
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x6cc1
movq -0x38(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x6be0
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0x6bed
leaq 0x94d2(%rip), %rax      # 0x100b9
movq %rax, -0x58(%rbp)
jmp 0x6bed
movq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rdx
leaq 0x94b9(%rip), %rax      # 0x100b9
leaq 0x9483(%rip), %rcx      # 0x1008a
cmpq $0x0, %rdx
cmovneq %rcx, %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x6c24
movq -0x20(%rbp), %rax
movq %rax, -0x70(%rbp)
jmp 0x6c31
leaq 0x948e(%rip), %rax      # 0x100b9
movq %rax, -0x70(%rbp)
jmp 0x6c31
movq -0x60(%rbp), %rcx
movq -0x68(%rbp), %rdx
movq -0x50(%rbp), %rdi
movq -0x70(%rbp), %r8
movq -0x20(%rbp), %rsi
leaq 0x946d(%rip), %r9       # 0x100b9
leaq 0x9437(%rip), %rax      # 0x1008a
cmpq $0x0, %rsi
cmovneq %rax, %r9
movq -0x28(%rbp), %rax
leaq 0x943e(%rip), %rsi      # 0x100a4
xorl %r10d, %r10d
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, %al
callq 0x4220
movq %rax, -0x40(%rbp)
cmpq $0x0, %rax
jne 0x6c91
callq 0x4410
movl %eax, -0x4(%rbp)
jmp 0x6cc1
movq -0x40(%rbp), %rdi
callq 0x6cd0
movl %eax, -0x2c(%rbp)
cmpl $0x0, %eax
jne 0x6cb2
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x45a0
movl %eax, -0x2c(%rbp)
movq -0x40(%rbp), %rdi
callq 0x4260
movl -0x2c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: save_preferences_user_mkdir
static int _save_preferences_user_mkdir(String * dir)
{
	int ret = 0;
	size_t i;
	size_t j;
	size_t len;

#ifdef DEBUG
	fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, dir);
#endif
	len = string_get_length(dir);
	for(i = 0, j = 0; j < len; j++)
	{
		if(dir[j] != '/')
			continue;
		if(i == j)
		{
			i++;
			continue;
		}
		dir[j] = '\0';
#ifdef DEBUG
		fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__, dir);
#endif
		if(dir[i] == '.')
			ret = error_set_code(-EPERM, "%s: %s", dir,
					strerror(EPERM));
		else if(mkdir(dir, 0777) != 0 && errno != EEXIST)
			ret = error_set_code(-errno, "%s: %s", dir,
					strerror(errno));
		dir[j] = '/';
		if(ret != 0)
			return ret;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4350
movq %rax, -0x30(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x6e17
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
je 0x6d24
jmp 0x6e06
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
jne 0x6d3f
movq -0x20(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
jmp 0x6e06
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2e, %eax
jne 0x6d8d
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movl $0x1, %edi
callq 0x4840
movq -0x38(%rbp), %rdx
movq %rax, %rcx
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
leaq 0x92e0(%rip), %rsi      # 0x10061
movb $0x0, %al
callq 0x4630
movl %eax, -0x14(%rbp)
jmp 0x6dea
movq -0x10(%rbp), %rdi
movl $0x1ff, %esi            # imm = 0x1FF
callq 0x4160
cmpl $0x0, %eax
je 0x6de8
callq 0x40d0
cmpl $0x11, (%rax)
je 0x6de8
callq 0x40d0
movq %rax, %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, -0x44(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
callq 0x40d0
movl (%rax), %edi
callq 0x4840
movl -0x44(%rbp), %edi
movq -0x40(%rbp), %rdx
movq %rax, %rcx
leaq 0x9283(%rip), %rsi      # 0x10061
movb $0x0, %al
callq 0x4630
movl %eax, -0x14(%rbp)
jmp 0x6dea
movq -0x10(%rbp), %rax
movq -0x28(%rbp), %rcx
movb $0x2f, (%rax,%rcx)
cmpl $0x0, -0x14(%rbp)
je 0x6e04
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x6e1e
jmp 0x6e06
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x6d00
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/config.c
// Function: save_foreach_section
static void _save_foreach_section(Mutator const * mutator, String const * key,
		void * value, void * data)
{
	ConfigSave * save = (ConfigSave *)data;
	String const * val = (String const *)value;
	(void) mutator;

	if(save->fp == NULL)
		return;
	if(val == NULL)
		return;
	if(fprintf(save->fp, "%s%s=%s", save->sep, key, val) < 0)
	{
		fclose(save->fp);
		save->fp = NULL;
		return;
	}
	save->sep = "\n";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x6ef4
jmp 0x6f4f
cmpq $0x0, -0x30(%rbp)
jne 0x6efd
jmp 0x6f4f
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x10(%rbp), %rcx
movq -0x30(%rbp), %r8
leaq 0x9195(%rip), %rsi      # 0x100b0
movb $0x0, %al
callq 0x4460
cmpl $0x0, %eax
jge 0x6f40
movq -0x28(%rbp), %rax
movq (%rax), %rdi
callq 0x4240
movq -0x28(%rbp), %rax
movq $0x0, (%rax)
jmp 0x6f4f
movq -0x28(%rbp), %rax
leaq 0x916d(%rip), %rcx      # 0x100b8
movq %rcx, 0x8(%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/error.c
// Function: error_do
static String const * _error_do(ErrorCode * code, String const * format,
		va_list ap)
{
	static String buf[256] = "";

	if(format != NULL) /* setting the error */
	{
		vsnprintf(buf, sizeof(buf), format, ap);
		if(code != NULL)
			_error_do_code(code);
	}
	else if(code != NULL)
		*code = _error_do_code(NULL);
	return buf;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x7186
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
leaq 0xdeb6(%rip), %rdi      # 0x15020
movl $0x100, %esi            # imm = 0x100
callq 0x41b0
cmpq $0x0, -0x8(%rbp)
je 0x7184
movq -0x8(%rbp), %rdi
callq 0x7040
jmp 0x71a0
cmpq $0x0, -0x8(%rbp)
je 0x719e
xorl %eax, %eax
movl %eax, %edi
callq 0x7040
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
jmp 0x71a0
leaq 0xde79(%rip), %rax      # 0x15020
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/error.c
// Function: error_set_codev
ErrorCode error_set_codev(ErrorCode code, String const * format, va_list ap)
{
	if(format == NULL)
		format = "";
	_error_do(&code, format, ap);
	return code;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x7275
leaq 0x8e48(%rip), %rax      # 0x100b9
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
leaq -0x4(%rbp), %rdi
callq 0x7140
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/error.c
// Function: print_do
static ErrorCode _print_do(String const * program, ...)
{
	ErrorCode ret = 0;
	va_list args;
	String const * error;

	va_start(args, program);
	if(program != NULL && string_get_length(program) > 0)
	{
		fputs(program, stderr);
		fputs(": ", stderr);
	}
	if((error = _error_do(&ret, NULL, args)) == NULL
			|| string_get_length(error) == 0)
		error = "Unknown error";
	fputs(error, stderr);
	fputc('\n', stderr);
	va_end(args);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
testb %al, %al
je 0x73cb
movaps %xmm0, -0xc0(%rbp)
movaps %xmm1, -0xb0(%rbp)
movaps %xmm2, -0xa0(%rbp)
movaps %xmm3, -0x90(%rbp)
movaps %xmm4, -0x80(%rbp)
movaps %xmm5, -0x70(%rbp)
movaps %xmm6, -0x60(%rbp)
movaps %xmm7, -0x50(%rbp)
movq %r9, -0xc8(%rbp)
movq %r8, -0xd0(%rbp)
movq %rcx, -0xd8(%rbp)
movq %rdx, -0xe0(%rbp)
movq %rsi, -0xe8(%rbp)
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
leaq -0x30(%rbp), %rax
leaq -0xf0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x8, (%rax)
cmpq $0x0, -0x8(%rbp)
je 0x745c
movq -0x8(%rbp), %rdi
callq 0x4350
cmpq $0x0, %rax
jbe 0x745c
movq -0x8(%rbp), %rdi
movq 0xdbb2(%rip), %rax      # 0x14ff0
movq (%rax), %rsi
callq 0x42f0
movq 0xdba3(%rip), %rax      # 0x14ff0
movq (%rax), %rsi
leaq 0x8c6c(%rip), %rdi      # 0x100c3
callq 0x42f0
leaq -0x30(%rbp), %rdx
leaq -0xc(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7140
movq %rax, -0x38(%rbp)
cmpq $0x0, %rax
je 0x7486
movq -0x38(%rbp), %rdi
callq 0x4350
cmpq $0x0, %rax
jne 0x7491
leaq 0x8c39(%rip), %rax      # 0x100c6
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
movq 0xdb54(%rip), %rax      # 0x14ff0
movq %rax, -0xf8(%rbp)
movq (%rax), %rsi
callq 0x42f0
movq -0xf8(%rbp), %rax
movq (%rax), %rsi
movl $0xa, %edi
callq 0x43f0
movl -0xc(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_new
Event * event_new(void)
{
	Event * event;

	if((event = (Event *)object_new(sizeof(*event))) == NULL)
		return NULL;
	event->timeouts = eventtimeoutarray_new();
	event->loop = 0;
	event->fdmax = -1;
	FD_ZERO(&event->rfds);
	FD_ZERO(&event->wfds);
	event->reads = eventioarray_new();
	event->writes = eventioarray_new();
	event->timeout.tv_sec = (time_t)LONG_MAX;
	event->timeout.tv_usec = (suseconds_t)LONG_MAX;
	if(event->timeouts == NULL || event->reads == NULL
			|| event->writes == NULL)
	{
		event_delete(event);
		return NULL;
	}
	return event;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl $0x130, %edi            # imm = 0x130
callq 0x4640
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
jne 0x74f9
movq $0x0, -0x8(%rbp)
jmp 0x762a
callq 0x7640
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x118(%rax)
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movq -0x10(%rbp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x20(%rbp)
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpq $0x10, %rax
jae 0x7557
movq -0x20(%rbp), %rax
movl -0x14(%rbp), %ecx
movq $0x0, (%rax,%rcx,8)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x7534
jmp 0x7559
jmp 0x755b
movq -0x10(%rbp), %rax
addq $0x88, %rax
movq %rax, -0x30(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpq $0x10, %rax
jae 0x7593
movq -0x30(%rbp), %rax
movl -0x24(%rbp), %ecx
movq $0x0, (%rax,%rcx,8)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x7570
jmp 0x7595
callq 0x7650
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x108(%rax)
callq 0x7650
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x110(%rax)
movq -0x10(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x120(%rax)
movq -0x10(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x128(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x118(%rax)
je 0x760f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x108(%rax)
je 0x760f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x110(%rax)
jne 0x7622
movq -0x10(%rbp), %rdi
callq 0x4790
movq $0x0, -0x8(%rbp)
jmp 0x762a
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_delete
void event_delete(Event * event)
{
	unsigned int i;
	EventTimeout * et;
	EventIO * eio;

	for(i = 0; i < array_count(event->timeouts); i++)
	{
		array_get_copy(event->timeouts, i, &et);
		object_delete(et);
	}
	array_delete(event->timeouts);
	for(i = 0; i < array_count(event->reads); i++)
	{
		array_get_copy(event->reads, i, &eio);
		object_delete(eio);
	}
	array_delete(event->reads);
	for(i = 0; i < array_count(event->writes); i++)
	{
		array_get_copy(event->writes, i, &eio);
		object_delete(eio);
	}
	array_delete(event->writes);
	object_delete(event);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x118(%rax), %rdi
callq 0x4250
movq %rax, %rcx
movq -0x28(%rbp), %rax
cmpq %rcx, %rax
jae 0x76c3
movq -0x8(%rbp), %rax
movq 0x118(%rax), %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
leaq -0x18(%rbp), %rdx
callq 0x48a0
movq -0x18(%rbp), %rdi
callq 0x44a0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x7673
movq -0x8(%rbp), %rax
movq 0x118(%rax), %rdi
callq 0x44c0
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq 0x108(%rax), %rdi
callq 0x4250
movq %rax, %rcx
movq -0x30(%rbp), %rax
cmpq %rcx, %rax
jae 0x772a
movq -0x8(%rbp), %rax
movq 0x108(%rax), %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
leaq -0x20(%rbp), %rdx
callq 0x48a0
movq -0x20(%rbp), %rdi
callq 0x44a0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x76da
movq -0x8(%rbp), %rax
movq 0x108(%rax), %rdi
callq 0x44c0
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x110(%rax), %rdi
callq 0x4250
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jae 0x7791
movq -0x8(%rbp), %rax
movq 0x110(%rax), %rdi
movl -0xc(%rbp), %eax
movl %eax, %esi
leaq -0x20(%rbp), %rdx
callq 0x48a0
movq -0x20(%rbp), %rdi
callq 0x44a0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x7741
movq -0x8(%rbp), %rax
movq 0x110(%rax), %rdi
callq 0x44c0
movq -0x8(%rbp), %rdi
callq 0x44a0
addq $0x40, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_loop
int event_loop(Event * event)
{
	int ret;

	event->loop++;
	while(event->loop && (ret = _event_loop_once(event)) == 0);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, (%rcx)
movb %al, -0xd(%rbp)
je 0x77ea
movq -0x8(%rbp), %rdi
callq 0x7800
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
sete %al
movb %al, -0xd(%rbp)
movb -0xd(%rbp), %al
testb $0x1, %al
jne 0x77f3
jmp 0x77f5
jmp 0x77c7
movl -0xc(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_loop_once
static int _event_loop_once(Event * event)
{
	struct timeval tv = event->timeout;
	struct timeval * timeout = (tv.tv_sec == (time_t)LONG_MAX
			&& tv.tv_usec == (suseconds_t)LONG_MAX) ? NULL : &tv;
	fd_set rfds = event->rfds;
	fd_set wfds = event->wfds;

	if(timeout != NULL || event->fdmax != -1)
	{
		if(select(event->fdmax + 1, &rfds, &wfds, NULL, timeout) < 0)
			return error_set_code(-errno, "%s", strerror(errno));
		if(_loop_timeout(event) != 0)
			return -1;
		_loop_io(event, event->reads, &rfds);
		_loop_io(event, event->writes, &wfds);
		if(event->timeout.tv_sec == (time_t)LONG_MAX
				&& event->timeout.tv_usec
				== (suseconds_t)LONG_MAX)
			timeout = NULL;
		else
			timeout = &event->timeout;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x140, %rsp            # imm = 0x140
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x120(%rax), %rcx
movq %rcx, -0x20(%rbp)
movq 0x128(%rax), %rax
movq %rax, -0x18(%rbp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, -0x20(%rbp)
jne 0x7854
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, -0x18(%rbp)
jne 0x7854
xorl %eax, %eax
movq %rax, -0x130(%rbp)
jmp 0x7861
leaq -0x20(%rbp), %rax
movq %rax, -0x130(%rbp)
jmp 0x7861
movq -0x130(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
leaq -0xa8(%rbp), %rdi
movl $0x80, %edx
callq 0x44b0
movq -0x10(%rbp), %rsi
addq $0x88, %rsi
leaq -0x128(%rbp), %rdi
movl $0x80, %edx
callq 0x44b0
cmpq $0x0, -0x28(%rbp)
jne 0x78b6
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x4(%rax)
je 0x79b5
movq -0x10(%rbp), %rax
movl 0x4(%rax), %edi
addl $0x1, %edi
movq -0x28(%rbp), %r8
leaq -0xa8(%rbp), %rsi
leaq -0x128(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x4510
cmpl $0x0, %eax
jge 0x791d
callq 0x40d0
movq %rax, %rcx
xorl %eax, %eax
subl (%rcx), %eax
movl %eax, -0x134(%rbp)
callq 0x40d0
movl (%rax), %edi
callq 0x4840
movl -0x134(%rbp), %edi
movq %rax, %rdx
leaq 0x8750(%rip), %rsi      # 0x1005e
movb $0x0, %al
callq 0x4630
movl %eax, -0x4(%rbp)
jmp 0x79bc
movq -0x10(%rbp), %rdi
callq 0x8340
cmpl $0x0, %eax
je 0x7937
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x79bc
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x108(%rax), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x85e0
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x110(%rax), %rsi
leaq -0x128(%rbp), %rdx
callq 0x85e0
movq -0x10(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rcx, 0x120(%rax)
jne 0x79a5
movq -0x10(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rcx, 0x128(%rax)
jne 0x79a5
movq $0x0, -0x28(%rbp)
jmp 0x79b3
movq -0x10(%rbp), %rax
addq $0x120, %rax            # imm = 0x120
movq %rax, -0x28(%rbp)
jmp 0x79b5
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x140, %rsp            # imm = 0x140
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_loop_while
int event_loop_while(Event * event, const int * flag)
{
	int ret;

	if(flag == NULL)
		return event_loop(event);
	event->loop++;
	while(event->loop && *flag && (ret = _event_loop_once(event)) == 0);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x7a15
movq -0x10(%rbp), %rdi
callq 0x4700
movl %eax, -0x4(%rbp)
jmp 0x7a62
movq -0x10(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, (%rcx)
movb %al, -0x1d(%rbp)
je 0x7a51
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, (%rcx)
movb %al, -0x1d(%rbp)
je 0x7a51
movq -0x10(%rbp), %rdi
callq 0x7800
movl %eax, -0x1c(%rbp)
cmpl $0x0, %eax
sete %al
movb %al, -0x1d(%rbp)
movb -0x1d(%rbp), %al
testb $0x1, %al
jne 0x7a5a
jmp 0x7a5c
jmp 0x7a20
movl -0x1c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_register_io_read
int event_register_io_read(Event * event, int fd, EventIOFunc func,
		void * userdata)
{
	EventIO * eventio;

	assert(fd >= 0);
	if((eventio = (EventIO *)object_new(sizeof(*eventio))) == NULL)
		return 1;
	eventio->fd = fd;
	eventio->func = func;
	eventio->data = userdata;
	event->fdmax = max(event->fdmax, fd);
	if(array_append(event->reads, &eventio) != 0)
	{
		object_delete(eventio);
		return -1;
	}
	FD_SET(fd, &event->rfds);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0x7c4f
jmp 0x7c6e
leaq 0x847e(%rip), %rdi      # 0x100d4
leaq 0x847f(%rip), %rsi      # 0x100dc
movl $0xcb, %edx
leaq 0x847b(%rip), %rcx      # 0x100e4
callq 0x42e0
movl $0x18, %edi
callq 0x4640
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x7c8e
movl $0x1, -0x4(%rbp)
jmp 0x7d4e
movl -0x14(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0x14(%rbp), %eax
jl 0x7cc7
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0x7ccd
movl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rax
movq 0x108(%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4290
cmpl $0x0, %eax
je 0x7d02
movq -0x30(%rbp), %rdi
callq 0x44a0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x7d4e
movl -0x14(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x14(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x48(%rbp), %rdx
movl %eax, %ecx
movq -0x40(%rbp), %rax
movslq %ecx, %rcx
orq 0x8(%rax,%rcx,8), %rdx
movq %rdx, 0x8(%rax,%rcx,8)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_register_io_write
int event_register_io_write(Event * event, int fd, EventIOFunc func,
		void * userdata)
{
	EventIO * eventio;

	assert(fd >= 0);
	if((eventio = (EventIO *)object_new(sizeof(*eventio))) == NULL)
		return 1;
	eventio->fd = fd;
	eventio->func = func;
	eventio->data = userdata;
	event->fdmax = max(event->fdmax, fd);
	if(array_append(event->writes, &eventio) != 0)
	{
		object_delete(eventio);
		return -1;
	}
	FD_SET(fd, &event->wfds);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0x7d7f
jmp 0x7d9e
leaq 0x834e(%rip), %rdi      # 0x100d4
leaq 0x834f(%rip), %rsi      # 0x100dc
movl $0xe2, %edx
leaq 0x8389(%rip), %rcx      # 0x10122
callq 0x42e0
movl $0x18, %edi
callq 0x4640
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x7dbe
movl $0x1, -0x4(%rbp)
jmp 0x7e84
movl -0x14(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x20(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0x14(%rbp), %eax
jl 0x7df7
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x34(%rbp)
jmp 0x7dfd
movl -0x14(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rax
movq 0x110(%rax), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4290
cmpl $0x0, %eax
je 0x7e32
movq -0x30(%rbp), %rdi
callq 0x44a0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x7e84
movl -0x14(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x14(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x48(%rbp), %rdx
movl %eax, %ecx
movq -0x40(%rbp), %rax
movslq %ecx, %rcx
orq 0x88(%rax,%rcx,8), %rdx
movq %rdx, 0x88(%rax,%rcx,8)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_unregister_io_read
int event_unregister_io_read(Event * event, int fd)
{
	event->fdmax = _unregister_io(event->reads, &event->rfds, fd);
	event->fdmax = max(event->fdmax, _unregister_io(event->writes, NULL,
				-1));
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x108(%rax), %rdi
movq -0x8(%rbp), %rsi
addq $0x8, %rsi
movl -0xc(%rbp), %edx
callq 0x7f30
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x110(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7f30
movl %eax, %ecx
movl -0x10(%rbp), %eax
cmpl %ecx, %eax
jl 0x7efb
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x14(%rbp)
jmp 0x7f17
movq -0x8(%rbp), %rax
movq 0x110(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7f30
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
xorl %eax, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: unregister_io
static int _unregister_io(eventioArray * eios, fd_set * fds, int fd)
{
	unsigned int i = 0;
	EventIO * eio;
	int fdmax = -1;

	while(i < array_count(eios))
	{
		array_get_copy(eios, i, &eio);
		if(eio->fd != fd)
		{
			fdmax = max(fdmax, eio->fd);
			i++;
			continue;
		}
		FD_CLR(fd, fds);
		array_remove_pos(eios, i);
		object_delete(eio);
	}
	return fdmax;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl $0x0, -0x18(%rbp)
movl $0xffffffff, -0x24(%rbp) # imm = 0xFFFFFFFF
movl -0x18(%rbp), %eax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4250
movq %rax, %rcx
movq -0x30(%rbp), %rax
cmpq %rcx, %rax
jae 0x801e
movq -0x8(%rbp), %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
leaq -0x20(%rbp), %rdx
callq 0x48a0
movq -0x20(%rbp), %rax
movl (%rax), %eax
cmpl -0x14(%rbp), %eax
je 0x7fbb
movl -0x24(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
jl 0x7fa1
movl -0x24(%rbp), %eax
movl %eax, -0x34(%rbp)
jmp 0x7faa
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x7f51
movl -0x14(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl %eax, %ecx
movl $0x1, %eax
shlq %cl, %rax
xorq $-0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x14(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x48(%rbp), %rdx
movl %eax, %ecx
movq -0x40(%rbp), %rax
movslq %ecx, %rcx
andq (%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x8(%rbp), %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x4590
movq -0x20(%rbp), %rdi
callq 0x44a0
jmp 0x7f51
movl -0x24(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: event_unregister_io_write
int event_unregister_io_write(Event * event, int fd)
{
	event->fdmax = _unregister_io(event->writes, &event->wfds, fd);
	event->fdmax = max(event->fdmax, _unregister_io(event->reads, NULL,
				-1));
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x110(%rax), %rdi
movq -0x8(%rbp), %rsi
addq $0x88, %rsi
movl -0xc(%rbp), %edx
callq 0x7f30
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x108(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7f30
movl %eax, %ecx
movl -0x10(%rbp), %eax
cmpl %ecx, %eax
jl 0x809e
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x14(%rbp)
jmp 0x80ba
movq -0x8(%rbp), %rax
movq 0x108(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x7f30
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
xorl %eax, %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/event.c
// Function: loop_io
static void _loop_io(Event * event, eventioArray * eios, fd_set * fds)
{
	unsigned int i = 0;
	EventIO * eio;
	int fd;

	while(i < array_count(eios))
	{
		array_get_copy(eios, i, &eio);
		if((fd = eio->fd) <= event->fdmax && FD_ISSET(fd, fds)
				&& eio->func(fd, eio->data) != 0)
		{
			if(eios == event->reads)
				event_unregister_io_read(event, fd);
			else if(eios == event->writes)
				event_unregister_io_write(event, fd);
#ifdef DEBUG
			else
				fprintf(stderr, "DEBUG: %s%s", __func__,
						"(): should not happen\n");
#endif
		}
		else
			i++;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4250
movq %rax, %rcx
movq -0x38(%rbp), %rax
cmpq %rcx, %rax
jae 0x86f4
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %eax
movl %eax, %esi
leaq -0x28(%rbp), %rdx
callq 0x48a0
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jg 0x86e6
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movl -0x2c(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movq -0x48(%rbp), %rax
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x40(%rbp)
movl -0x2c(%rbp), %eax
movl $0x40, %ecx
cltd
idivl %ecx
movq -0x40(%rbp), %rax
movl %edx, %ecx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
andq %rcx, %rax
cmpq $0x0, %rax
je 0x86e6
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movl -0x2c(%rbp), %edi
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rsi
callq *%rax
cmpl $0x0, %eax
je 0x86e6
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x108(%rcx), %rax
jne 0x86c5
movq -0x8(%rbp), %rdi
movl -0x2c(%rbp), %esi
callq 0x4450
jmp 0x86e4
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x110(%rcx), %rax
jne 0x86e2
movq -0x8(%rbp), %rdi
movl -0x2c(%rbp), %esi
callq 0x4660
jmp 0x86e4
jmp 0x86ef
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x85fb
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/file.c
// Function: file_new
File * file_new(String const * filename, FileMode mode)
{
	File * file;
	char const * fmode;

	if((file = (File *)object_new(sizeof(*file))) == NULL)
		return NULL;
	if((file->filename = string_new(filename)) == NULL
			|| (fmode = _file_get_fmode(file, mode)) == NULL)
	{
		object_delete(file);
		return NULL;
	}
	if((file->fp = fopen(filename, fmode)) == NULL)
	{
		file_delete(file);
		_file_error(file, errno);
		return NULL;
	}
	file->mode = mode;
	return file;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl $0x18, %edi
callq 0x4640
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x8730
movq $0x0, -0x8(%rbp)
jmp 0x87c7
movq -0x10(%rbp), %rdi
callq 0x41f0
movq -0x20(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
je 0x875c
movq -0x20(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x87e0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x876f
movq -0x20(%rbp), %rdi
callq 0x44a0
movq $0x0, -0x8(%rbp)
jmp 0x87c7
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x4740
movq -0x20(%rbp), %rcx
movq %rax, 0x8(%rcx)
cmpq $0x0, %rax
jne 0x87b5
movq -0x20(%rbp), %rdi
callq 0x46d0
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
callq 0x40d0
movq -0x30(%rbp), %rdi
movl (%rax), %esi
callq 0x8910
movq $0x0, -0x8(%rbp)
jmp 0x87c7
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/file.c
// Function: file_delete
FileError file_delete(File * file)
{
	FileError ret = 0;

	if(file->fp != NULL
			&& (ret = fclose(file->fp)) != 0)
		ret = _file_error(file, errno);
	string_delete(file->filename);
	object_delete(file);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x88ee
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4240
movl %eax, -0xc(%rbp)
cmpl $0x0, %eax
je 0x88ee
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
callq 0x40d0
movq -0x18(%rbp), %rdi
movl (%rax), %esi
callq 0x8910
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x4260
movq -0x8(%rbp), %rdi
callq 0x44a0
movl -0xc(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/file.c
// Function: file_read
FileError file_read(File * file, void * buf, size_t size, size_t * count)
{
	size_t s;

	if((s = fread(buf, size, *count, file->fp)) < *count
			&& ferror(file->fp))
	{
		*count = s;
		return _file_error(file, errno);
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rax
movq (%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rcx
callq 0x4190
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x8a1b
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x4180
cmpl $0x0, %eax
je 0x8a1b
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0x40d0
movq -0x38(%rbp), %rdi
movl (%rax), %esi
callq 0x8910
movl %eax, -0x4(%rbp)
jmp 0x8a22
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/file.c
// Function: file_read_buffer
FileError file_read_buffer(File * file, Buffer * buffer)
{
	int ret;
	size_t s;

	s = buffer_get_size(buffer);
	if((ret = file_read(file, (void *)buffer_get_data(buffer),
					sizeof(BufferData), &s)) != 0)
		buffer_set_size(buffer, s);
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4270
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4550
movq -0x28(%rbp), %rdi
movq %rax, %rsi
movl $0x1, %edx
leaq -0x20(%rbp), %rcx
callq 0x4730
movl %eax, -0x14(%rbp)
cmpl $0x0, %eax
je 0x8a88
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x4110
movl -0x14(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/DeforaOS[P]libSystem/src/file.c
// Function: file_seek
FileError file_seek(File * file, FileSeekMode mode, FileOffset offset)
{
	switch(mode)
	{
		case FILE_SEEK_MODE_CURRENT:
			return fseek(file->fp, SEEK_CUR, offset);
		case FILE_SEEK_MODE_END:
			return fseek(file->fp, SEEK_END, offset);
		case FILE_SEEK_MODE_SET:
			return fseek(file->fp, SEEK_SET, offset);
	}
	return _file_error(file, EINVAL);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x24(%rbp)
testl %eax, %eax
je 0x8ad3
jmp 0x8abf
movl -0x24(%rbp), %eax
subl $0x1, %eax
je 0x8af0
jmp 0x8ac9
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x8b0d
jmp 0x8b29
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rax
movl %eax, %edx
movl $0x1, %esi
callq 0x45d0
movl %eax, -0x4(%rbp)
jmp 0x8b3a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rax
movl %eax, %edx
movl $0x2, %esi
callq 0x45d0
movl %eax, -0x4(%rbp)
jmp 0x8b3a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x20(%rbp), %rax
movl %eax, %edx
xorl %eax, %eax
movl %eax, %esi
callq 0x45d0
movl %eax, -0x4(%rbp)
jmp 0x8b3a
movq -0x10(%rbp), %rdi
movl $0x16, %esi
callq 0x8910
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)