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

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

  SCDC_TRACE("scdc_dataset_input_file_create: filename: '" << filename << "'");

  if (!input) return 0;

  FILE *file = fopen(filename, "r");

  if (!file)
  {
    SCDC_FAIL("scdc_dataset_input_file_create: opening file '" << filename << "' failed!");
    return 0;
  }

  input = scdc_dataset_input_FX_create<FILE *>(input, conf, args, file);

  if (!input)
  {
    SCDC_FAIL("scdc_dataset_input_file_create: creating input from FILE failed!");
    fclose(file);
    return 0;
  }

  input->intern->type = SCDC_DATASET_INOUT_TYPE_FILE;
  input->intern->destroy = scdc_dataset_input_file_destroy;

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

  return input;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x58(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x25660
movq -0x80(%rbp), %rdi
movl $0x4, %esi
leaq -0x60(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4d6c0
jmp 0x446ae
jmp 0x446b0
jmp 0x446b2
jmp 0x446b4
cmpq $0x0, -0x10(%rbp)
jne 0x446e9
movq $0x0, -0x8(%rbp)
movl $0x1, -0x70(%rbp)
jmp 0x4499b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x256b0
jmp 0x449b1
movq -0x60(%rbp), %rdi
leaq 0x6111b(%rip), %rsi     # 0xa580f
callq 0xc810
movq %rax, -0x88(%rbp)
jmp 0x44702
movq -0x88(%rbp), %rax
movq %rax, -0x78(%rbp)
cmpq $0x0, -0x78(%rbp)
jne 0x44835
jmp 0x4471a
leaq 0x8ff87(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x90(%rbp)
jmp 0x44732
movq -0x90(%rbp), %rax
cmpq $0x0, %rax
je 0x4481d
leaq 0x8ff5e(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
jmp 0x44754
leaq 0x8ff4d(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x98(%rbp)
jmp 0x4476c
movq -0x98(%rbp), %rdi
leaq 0x61a36(%rip), %rsi     # 0xa61b0
callq 0xc670
movq %rax, -0xa0(%rbp)
jmp 0x44788
movq -0xa0(%rbp), %rdi
leaq 0x628e6(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0xa8(%rbp)
jmp 0x447a4
movq -0xa8(%rbp), %rdi
leaq 0x62bcf(%rip), %rsi     # 0xa7381
callq 0xc670
movq %rax, -0xb0(%rbp)
jmp 0x447c0
movq -0xb0(%rbp), %rdi
movq -0x60(%rbp), %rsi
callq 0xc670
movq %rax, -0xb8(%rbp)
jmp 0x447d9
movq -0xb8(%rbp), %rdi
leaq 0x62bc9(%rip), %rsi     # 0xa73b0
callq 0xc670
movq %rax, -0xc0(%rbp)
jmp 0x447f5
movq -0xc0(%rbp), %rdi
movq 0x8f7bd(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x4480a
leaq 0x8fe97(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x4481b
jmp 0x4481d
jmp 0x4481f
jmp 0x44821
movq $0x0, -0x8(%rbp)
movl $0x1, -0x70(%rbp)
jmp 0x4499b
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x78(%rbp), %rcx
callq 0x484e0
movq %rax, -0xc8(%rbp)
jmp 0x44853
movq -0xc8(%rbp), %rax
movq %rax, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x44959
jmp 0x4486b
leaq 0x8fe36(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0xd0(%rbp)
jmp 0x44883
movq -0xd0(%rbp), %rax
cmpq $0x0, %rax
je 0x44939
leaq 0x8fe0d(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
jmp 0x448a5
leaq 0x8fdfc(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0xd8(%rbp)
jmp 0x448bd
movq -0xd8(%rbp), %rdi
leaq 0x618e5(%rip), %rsi     # 0xa61b0
callq 0xc670
movq %rax, -0xe0(%rbp)
jmp 0x448d9
movq -0xe0(%rbp), %rdi
leaq 0x62795(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0xe8(%rbp)
jmp 0x448f5
movq -0xe8(%rbp), %rdi
leaq 0x62ab7(%rip), %rsi     # 0xa73ba
callq 0xc670
movq %rax, -0xf0(%rbp)
jmp 0x44911
movq -0xf0(%rbp), %rdi
movq 0x8f6a1(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x44926
leaq 0x8fd7b(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x44937
jmp 0x44939
jmp 0x4493b
jmp 0x4493d
movq -0x78(%rbp), %rdi
callq 0xc680
jmp 0x44948
movq $0x0, -0x8(%rbp)
movl $0x1, -0x70(%rbp)
jmp 0x4499b
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq $0x8, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
leaq 0x49f8(%rip), %rcx      # 0x49370
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rdi
movq 0x38(%rdi), %rax
xorl %ecx, %ecx
movl %ecx, %esi
callq *%rax
jmp 0x4498c
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x70(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x256b0
movq -0x8(%rbp), %rax
addq $0xf0, %rsp
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0xcba0
nopw (%rax,%rax)