// File: /workspace/github_cpp_makefile_star2_O3/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 0x2b991
movq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
movl $0x4, %esi
callq *%rax
testq %r12, %r12
je 0x2bb77
movq 0x8(%rsp), %rdi
leaq 0x3de81(%rip), %rsi     # 0x69827
callq 0xb640
testq %rax, %rax
je 0x2b9f5
movq %rax, %rbx
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x2ed8b
movq %rax, %r14
testq %rax, %rax
je 0x2ba7f
movq 0x48(%r14), %rax
movq $0x8, 0x8(%rax)
leaq 0x3d27(%rip), %rcx      # 0x2f70a
movq %rcx, 0x20(%rax)
movq %r14, %rdi
xorl %esi, %esi
callq *0x38(%r14)
jmp 0x2bb7a
leaq 0x60b74(%rip), %r15     # 0x8c570
movq (%r15), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x2bb77
addq $0x20, %rdi
callq 0xb7d0
movq (%r15), %rax
movq 0x8(%rax), %rbx
leaq 0x3e787(%rip), %rsi     # 0x6a1a8
movl $0xb, %edx
movq %rbx, %rdi
callq 0xb5f0
leaq 0x3f690(%rip), %rsi     # 0x6b0c5
movl $0xf, %edx
movq %rbx, %rdi
callq 0xb5f0
leaq 0x3f981(%rip), %rsi     # 0x6b3ca
movl $0x2e, %edx
movq %rbx, %rdi
callq 0xb5f0
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x2bb19
movq %r14, %rdi
callq 0xb200
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0xb5f0
jmp 0x2bb30
leaq 0x60aea(%rip), %r15     # 0x8c570
movq (%r15), %rdi
cmpq $0x0, 0x8(%rdi)
je 0x2bb0f
addq $0x20, %rdi
callq 0xb7d0
movq (%r15), %rax
movq 0x8(%rax), %r14
leaq 0x3e701(%rip), %rsi     # 0x6a1a8
movl $0xb, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3f60a(%rip), %rsi     # 0x6b0c5
movl $0xf, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3f934(%rip), %rsi     # 0x6b403
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 0x2bb77
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0xb990
leaq 0x3f8c2(%rip), %rsi     # 0x6b3f9
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 0x1b76c
movq %r14, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x2bb95
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b76c
movq %rbx, %rdi
callq 0xb9c0