// File: mh0fm4[P]SCDC/src/components/dataset/dataset_inout.cc
// Function: scdc_dataset_input_fslist_create(_scdc_dataset_inout_t*, char const*, _scdc_args_t*)
static scdc_dataset_inout_t *scdc_dataset_input_fslist_create(scdc_dataset_input_t *input, const char *conf, scdc_args_t *args)
{
  scdc_args xargs(args);

  const char *pathname;
  xargs.get<const char *>(SCDC_ARGS_TYPE_CSTR, &pathname);

  bool follow_links = FOLLOW_LINKS;

  string format = "fslist";

  if (!follow_links && z_fs_is_link(pathname))
  {
    input = scdc_dataset_input_fslist_link_create(input, conf, args, pathname);
    format += ":link";

  } else if (z_fs_is_directory(pathname))
  {
    input = scdc_dataset_input_fslist_dir_create(input, conf, args, pathname);
    format += ":dir";

  } else if (z_fs_is_file(pathname))
  {
    input = scdc_dataset_input_fslist_file_create(input, conf, args, pathname);
    format += ":file";

  } else input = 0;

  if (!input)
  {
    SCDC_TRACE("scdc_dataset_input_fslist_create: pathname '" << pathname << "' is not a directory or file!");
    return 0;
  }

  input->intern->destroy = scdc_dataset_input_fslist_destroy;

  strcpy(input->format, format.c_str());

#if INPUT_CREATE_NEXT
  if (input->next) input->next(input, 0);
#endif

  return input;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x58(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x25660
movq -0xa0(%rbp), %rdi
movl $0x4, %esi
leaq -0x60(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d6c0
jmp 0x44fb4
movb $0x1, -0x6d(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0xcbc0
movq -0xa8(%rbp), %rdx
leaq 0x63401(%rip), %rsi     # 0xa83da
leaq -0x90(%rbp), %rdi
callq 0x27820
jmp 0x44fe7
leaq -0x91(%rbp), %rdi
callq 0xc730
testb $0x1, -0x6d(%rbp)
jne 0x450ae
movq -0x60(%rbp), %rdi
callq 0x5d520
movq %rax, -0xb0(%rbp)
jmp 0x4500f
movq -0xb0(%rbp), %rax
cmpq $0x0, %rax
je 0x450ae
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x60(%rbp), %rcx
callq 0x49660
movq %rax, -0xb8(%rbp)
jmp 0x4503e
movq -0xb8(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq 0x62492(%rip), %rsi     # 0xa74e2
leaq -0x90(%rbp), %rdi
callq 0xc630
jmp 0x4505e
jmp 0x45178
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x45223
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x91(%rbp), %rdi
callq 0xc730
jmp 0x45223
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xc3e0
jmp 0x45223
movq -0x60(%rbp), %rdi
callq 0x5d460
movq %rax, -0xc0(%rbp)
jmp 0x450c0
movq -0xc0(%rbp), %rax
cmpq $0x0, %rax
je 0x4510d
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x60(%rbp), %rcx
callq 0x49900
movq %rax, -0xc8(%rbp)
jmp 0x450eb
movq -0xc8(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq 0x623eb(%rip), %rsi     # 0xa74e8
leaq -0x90(%rbp), %rdi
callq 0xc630
jmp 0x4510b
jmp 0x45176
movq -0x60(%rbp), %rdi
callq 0x5d4c0
movq %rax, -0xd0(%rbp)
jmp 0x4511f
movq -0xd0(%rbp), %rax
cmpq $0x0, %rax
je 0x4516c
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x60(%rbp), %rcx
callq 0x49bc0
movq %rax, -0xd8(%rbp)
jmp 0x4514a
movq -0xd8(%rbp), %rax
movq %rax, -0x10(%rbp)
leaq 0x635df(%rip), %rsi     # 0xa873b
leaq -0x90(%rbp), %rdi
callq 0xc630
jmp 0x4516a
jmp 0x45174
movq $0x0, -0x10(%rbp)
jmp 0x45176
jmp 0x45178
cmpq $0x0, -0x10(%rbp)
jne 0x45199
jmp 0x45181
jmp 0x45183
jmp 0x45185
movq $0x0, -0x8(%rbp)
movl $0x1, -0x98(%rbp)
jmp 0x45201
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
leaq 0x4c48(%rip), %rcx      # 0x49df0
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0xe0(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xc260
movq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0xc610
movq -0x10(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x451ef
movq -0x10(%rbp), %rdi
movq 0x38(%rdi), %rax
xorl %ecx, %ecx
movl %ecx, %esi
callq *%rax
jmp 0x451ed
jmp 0x451ef
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x98(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xc3e0
leaq -0x58(%rbp), %rdi
callq 0x256b0
movq -0x8(%rbp), %rax
addq $0xe0, %rsp
popq %rbp
retq
leaq -0x58(%rbp), %rdi
callq 0x256b0
movq -0x68(%rbp), %rdi
callq 0xcba0
nopw %cs:(%rax,%rax)