// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/luafilesystem-1.5.0/src/lfs.c
// Function: file_info_
static int _file_info_ (lua_State *L, int (*st)(const char*, STAT_STRUCT*)) {
	int i;
	STAT_STRUCT info;
	const char *file = luaL_checkstring (L, 1);

	if (st(file, &info)) {
		lua_pushnil (L);
		lua_pushfstring (L, "cannot obtain information from file `%s'", file);
		return 2;
	}
	if (lua_isstring (L, 2)) {
		int v;
		const char *member = lua_tostring (L, 2);
		if (strcmp (member, "mode") == 0) v = 0;
#ifndef _WIN32
		else if (strcmp (member, "blocks")  == 0) v = 11;
		else if (strcmp (member, "blksize") == 0) v = 12;
#endif
		else /* look for member */
			for (v = 1; members[v].name; v++)
				if (*members[v].name == *member)
					break;
		/* push member value and return */
		members[v].push (L, &info);
		return 1;
	} else if (!lua_istable (L, 2))
		/* creates a table if none is given */
		lua_newtable (L);
	/* stores all members in table on top of the stack */
	for (i = 0; members[i].name; i++) {
		lua_pushstring (L, members[i].name);
		members[i].push (L, &info);
		lua_rawset (L, -3);
	}
	return 1;
}

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xb8(%rsp)
movq %rsi, 0xb0(%rsp)
movq 0xb8(%rsp), %rdi
movl $0x1, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x33a6b0
movq %rax, 0x10(%rsp)
movq 0xb0(%rsp), %rax
movq 0x10(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq *%rax
cmpl $0x0, %eax
je 0x35d5c3
movq 0xb8(%rsp), %rdi
callq 0x335470
movq 0xb8(%rsp), %rdi
movq 0x10(%rsp), %rdx
leaq 0x23f272(%rip), %rsi    # 0x59c81e
movb $0x0, %al
callq 0x335df0
movl $0x2, 0xc4(%rsp)
jmp 0x35d7bd
movq 0xb8(%rsp), %rdi
movl $0x2, %esi
callq 0x3347b0
cmpl $0x0, %eax
je 0x35d6ea
movq 0xb8(%rsp), %rdi
movl $0x2, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, (%rsp)
movq (%rsp), %rdi
leaq 0x1de19a(%rip), %rsi    # 0x53b79d
callq 0x19980
cmpl $0x0, %eax
jne 0x35d61a
movl $0x0, 0xc(%rsp)
jmp 0x35d6b4
movq (%rsp), %rdi
leaq 0x1b9a30(%rip), %rsi    # 0x517055
callq 0x19980
cmpl $0x0, %eax
jne 0x35d639
movl $0xb, 0xc(%rsp)
jmp 0x35d6b2
movq (%rsp), %rdi
leaq 0x23f10f(%rip), %rsi    # 0x59c753
callq 0x19980
cmpl $0x0, %eax
jne 0x35d658
movl $0xc, 0xc(%rsp)
jmp 0x35d6b0
movl $0x1, 0xc(%rsp)
movslq 0xc(%rsp), %rcx
leaq 0x2e1834(%rip), %rax    # 0x63eea0
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x35d6ae
movslq 0xc(%rsp), %rcx
leaq 0x2e181b(%rip), %rax    # 0x63eea0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movsbl (%rax), %eax
movq (%rsp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x35d69f
jmp 0x35d6ae
jmp 0x35d6a1
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x35d660
jmp 0x35d6b0
jmp 0x35d6b2
jmp 0x35d6b4
movslq 0xc(%rsp), %rcx
leaq 0x2e17e0(%rip), %rax    # 0x63eea0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq 0xb8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq *%rax
movl $0x1, 0xc4(%rsp)
jmp 0x35d7bd
movq 0xb8(%rsp), %rdi
movl $0x2, %esi
callq 0x3345d0
cmpl $0x5, %eax
je 0x35d712
movq 0xb8(%rsp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x336790
jmp 0x35d714
movl $0x0, 0xac(%rsp)
movslq 0xac(%rsp), %rcx
leaq 0x2e1772(%rip), %rax    # 0x63eea0
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x35d7b2
movq 0xb8(%rsp), %rdi
movslq 0xac(%rsp), %rcx
leaq 0x2e174e(%rip), %rax    # 0x63eea0
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
callq 0x335740
movslq 0xac(%rsp), %rcx
leaq 0x2e1730(%rip), %rax    # 0x63eea0
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq 0xb8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq *%rax
movq 0xb8(%rsp), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x336e40
movl 0xac(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xac(%rsp)
jmp 0x35d71f
movl $0x1, 0xc4(%rsp)
movl 0xc4(%rsp), %eax
addq $0xc8, %rsp
retq
nopl (%rax)