// File: /workspace/github_cpp_makefile_star2_O1/mh0fm4[P]SCDC/src/components/dataset/dataset_inout.cc
// Function: scdc_dataset_input_create_intern
scdc_dataset_input_t *scdc_dataset_input_create_intern(scdc_dataset_input_t *input, const char *conf, scdc_args_t *args)
{
  SCDC_TRACE("scdc_dataset_input_create_intern: input: " << static_cast<void *>(input) << ", conf: '" << conf << "'");

  scdc_dataset_input_t input_given, *input_ret = input;

  /* backup given input struct */
  if (input) input_given = *input;

  stringlist confs(':', conf);
  string ip_type = confs.front_pop();

  bool autodestroy = false;

  if (confs.front() == "autodestroy")
  {
    autodestroy = true;
    confs.front_pop();
  }

  conf += confs.offset();

  scdc_dataset_input_unset(input_ret);

  if (ip_type == "null")
    input_ret = 0;
  else if (ip_type == "none")
    { if (input_ret) *input_ret = *SCDC_DATASET_INPUT_NONE; }
  else if (ip_type == "endl" || ip_type == "endless")
    { if (input_ret) *input_ret = *SCDC_DATASET_INPUT_ENDL; }
  else if (ip_type == "alloc")
    input_ret = scdc_dataset_input_alloc_create(input_ret, conf, args);
  else if (ip_type == "buffer")
    input_ret = scdc_dataset_input_buffer_create(input_ret, conf, args);
  else if (ip_type == "fd")
    input_ret = scdc_dataset_input_fd_create(input_ret, conf, args);
  else if (ip_type == "fddup")
    input_ret = scdc_dataset_input_fddup_create(input_ret, conf, args);
  else if (ip_type == "stream")
    input_ret = scdc_dataset_input_stream_create(input_ret, conf, args);
  else if (ip_type == "streamdup")
    input_ret = scdc_dataset_input_streamdup_create(input_ret, conf, args);
  else if (ip_type == "file")
    input_ret = scdc_dataset_input_file_create(input_ret, conf, args);
  else if (ip_type == "fs")
    input_ret = scdc_dataset_input_fs_create(input_ret, conf, args);
  else if (ip_type == "fslist")
    input_ret = scdc_dataset_input_fslist_create(input_ret, conf, args);
  else if (ip_type == "produce" || ip_type == "zero")
    input_ret = scdc_dataset_input_produce_create(input_ret, conf, args);
  else
  {
    SCDC_ERROR("unknown input type '" << ip_type << "'");
    input_ret = 0;
  }

  if (!input_ret)
  {
    /* restore given input struct */
    if (input) *input = input_given;
    return 0;
  }

  INOUT_INTERN_BACKUP(input_ret);

  if (autodestroy) scdc_dataset_input_autodestroy(input_ret);

  SCDC_TRACE_DATASET_INPUT(input_ret, "scdc_dataset_input_create_intern: ");

  return input_ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xe0, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
testq %rdi, %rdi
je 0x2b287
leaq 0x88(%rsp), %rdi
movl $0xb, %ecx
movq %rbx, %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movl $0x3a, %esi
movq %r15, %rdx
movq $-0x1, %rcx
callq 0x1b8f2
movq %rsp, %rdi
movq %r12, %rsi
callq 0x1b92c
leaq 0x48(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1bc30
leaq 0x3fda0(%rip), %rsi     # 0x6b064
leaq 0x48(%rsp), %r12
movq %r12, %rdi
callq 0xb110
movl %eax, %ebp
movq (%r12), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x2b2ee
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb510
testl %ebp, %ebp
jne 0x2b31c
leaq 0x68(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1b92c
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b31c
movq 0x78(%rsp), %rsi
incq %rsi
callq 0xb510
leaq 0x40(%rsp), %rax
movq -0x20(%rax), %rcx
addq $0x30, %rcx
cmpq $0x0, -0x10(%rax)
cmoveq %rax, %rcx
addq (%rcx), %r15
testq %rbx, %rbx
je 0x2b354
movb $0x0, (%rbx)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rbx)
movups %xmm0, 0x20(%rbx)
movb $0x6e, 0x30(%rbx)
movups %xmm0, 0x38(%rbx)
movups %xmm0, 0x48(%rbx)
leaq 0x4010d(%rip), %rsi     # 0x6b468
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b576
leaq 0x3f0b8(%rip), %rsi     # 0x6a42a
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b55a
leaq 0x3fce7(%rip), %rsi     # 0x6b070
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b54c
leaq 0x3fcd5(%rip), %rsi     # 0x6b075
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b54c
leaq 0x3fcc6(%rip), %rsi     # 0x6b07d
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b61e
leaq 0x42735(%rip), %rsi     # 0x6db03
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b64c
leaq 0x3fc9e(%rip), %rsi     # 0x6b083
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b659
leaq 0x3fc8a(%rip), %rsi     # 0x6b086
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b669
leaq 0x3fc79(%rip), %rsi     # 0x6b08c
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b679
leaq 0x3fc69(%rip), %rsi     # 0x6b093
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b689
leaq 0x4021d(%rip), %rsi     # 0x6b65e
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b699
leaq 0x40fcc(%rip), %rsi     # 0x6c424
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b6a9
leaq 0x40ef3(%rip), %rsi     # 0x6c362
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b6c9
leaq 0x3fc17(%rip), %rsi     # 0x6b09d
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b6b9
leaq 0x40aeb(%rip), %rsi     # 0x6bf88
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b6b9
leaq 0x610bc(%rip), %r15     # 0x8c570
movq (%r15), %rdi
cmpq $0x0, 0x18(%rdi)
je 0x2b576
addq $0x20, %rdi
callq 0xb7d0
movq (%r15), %rax
movq 0x18(%rax), %r14
leaq 0x3efaf(%rip), %rsi     # 0x6a488
movl $0xc, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3fbb8(%rip), %rsi     # 0x6b0a5
movl $0xf, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3fbb4(%rip), %rsi     # 0x6b0b5
movl $0x14, %edx
movq %r14, %rdi
callq 0xb5f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0xb5f0
movq %rax, %r14
leaq 0x40e32(%rip), %rsi     # 0x6c35b
movl $0x1, %edx
movq %rax, %rdi
callq 0xb5f0
movq %r14, %rdi
callq 0xb250
movq (%r15), %rdi
addq $0x20, %rdi
callq 0xb3b0
jmp 0x2b576
testq %rbx, %rbx
je 0x2b576
leaq 0x5ed78(%rip), %rsi     # 0x8a2d0
jmp 0x2b566
testq %rbx, %rbx
je 0x2b576
leaq 0x3fa8a(%rip), %rsi     # 0x6aff0
movl $0xb, %ecx
movq %rbx, %rdi
rep  movsq (%rsi), %es:(%rdi)
movq %rbx, %r14
jmp 0x2b579
xorl %r14d, %r14d
testq %r14, %r14
je 0x2b5cb
movq 0x48(%r14), %rax
testq %rax, %rax
je 0x2b597
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rax)
movq 0x40(%r14), %rcx
movq %rcx, 0x18(%rax)
testl %ebp, %ebp
jne 0x2b5e6
movl $0x10, %edi
callq 0xb500
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq 0x38(%r14), %rcx
movq %rcx, (%rax)
movq 0x40(%r14), %rcx
movq %rcx, 0x8(%rax)
leaq 0x4938(%rip), %rcx      # 0x2fef9
movq %rcx, 0x38(%r14)
movq %rax, 0x40(%r14)
jmp 0x2b5e6
testq %rbx, %rbx
je 0x2b5e3
leaq 0x88(%rsp), %rsi
movl $0xb, %ecx
movq %rbx, %rdi
rep  movsq (%rsi), %es:(%rdi)
xorl %r14d, %r14d
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b601
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb510
leaq 0x20(%rsp), %rdi
callq 0x1bb7e
movq %r14, %rax
addq $0xe0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2e496
movq %rax, %r14
testq %rax, %rax
je 0x2b579
movq 0x48(%r14), %rax
leaq 0x2fab(%rip), %rcx      # 0x2e5ee
movq %rcx, 0x20(%rax)
jmp 0x2b579
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b716
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b7ee
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b8ab
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b971
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2ba49
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2bb73
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2bddd
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2c68d
jmp 0x2b6d7
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2c1ea
movq %rax, %r14
jmp 0x2b579
jmp 0x2b6e1
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b704
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb510
jmp 0x2b704
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1bb7e
movq %rbx, %rdi
callq 0xb9c0