// File: /workspace/github_cpp_makefile_star2_O1/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 %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
leaq 0x30(%rsp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
movups (%rdx), %xmm0
movups 0x10(%rdx), %xmm1
movaps %xmm0, -0x20(%rax)
movaps %xmm1, -0x10(%rax)
movq -0x18(%rax), %rax
testq %rax, %rax
je 0x2bbc4
movq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
movl $0x4, %esi
callq *%rax
testq %r12, %r12
je 0x2bdaa
movq 0x8(%rsp), %rdi
leaq 0x3dc2e(%rip), %rsi     # 0x69807
callq 0xb640
testq %rax, %rax
je 0x2bc28
movq %rax, %rbx
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x2f03b
movq %rax, %r14
testq %rax, %rax
je 0x2bcb2
movq 0x48(%r14), %rax
movq $0x8, 0x8(%rax)
leaq 0x3da4(%rip), %rcx      # 0x2f9ba
movq %rcx, 0x20(%rax)
movq %r14, %rdi
xorl %esi, %esi
callq *0x38(%r14)
jmp 0x2bdad
leaq 0x60941(%rip), %r15     # 0x8c570
movq (%r15), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x2bdaa
addq $0x20, %rdi
callq 0xb7d0
movq (%r15), %rax
movq 0x8(%rax), %rbx
leaq 0x3e534(%rip), %rsi     # 0x6a188
movl $0xb, %edx
movq %rbx, %rdi
callq 0xb5f0
leaq 0x3f43d(%rip), %rsi     # 0x6b0a5
movl $0xf, %edx
movq %rbx, %rdi
callq 0xb5f0
leaq 0x3f72e(%rip), %rsi     # 0x6b3aa
movl $0x2e, %edx
movq %rbx, %rdi
callq 0xb5f0
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x2bd4c
movq %r14, %rdi
callq 0xb200
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0xb5f0
jmp 0x2bd63
leaq 0x608b7(%rip), %r15     # 0x8c570
movq (%r15), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x2bd42
addq $0x20, %rdi
callq 0xb7d0
movq (%r15), %rax
movq 0x8(%rax), %r14
leaq 0x3e4ae(%rip), %rsi     # 0x6a188
movl $0xb, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3f3b7(%rip), %rsi     # 0x6b0a5
movl $0xf, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3f6e1(%rip), %rsi     # 0x6b3e3
movl $0x40, %edx
movq %r14, %rdi
callq 0xb5f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0xb4d0
movsbl %al, %esi
movq %r14, %rdi
callq 0xb050
movq %rax, %rdi
callq 0xb340
movq (%r15), %rdi
addq $0x20, %rdi
callq 0xb3b0
movq %rbx, %rdi
callq 0xb4f0
jmp 0x2bdaa
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0xb990
leaq 0x3f66f(%rip), %rsi     # 0x6b3d9
movl $0x9, %edx
movq %rbx, %rdi
callq 0xb5f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0xb4d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0xb050
movq %rax, %rdi
callq 0xb340
movq (%r15), %rdi
addq $0x20, %rdi
callq 0xb3b0
xorl %r14d, %r14d
leaq 0x10(%rsp), %rdi
callq 0x1b820
movq %r14, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x2bdc8
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b820
movq %rbx, %rdi
callq 0xb9c0