// File: /workspace/github_cpp_makefile_star2_O3/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 0x2b05d
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 0x1b83e
movq %rsp, %rdi
movq %r12, %rsi
callq 0x1b878
leaq 0x48(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1bb82
leaq 0x3ffea(%rip), %rsi     # 0x6b084
leaq 0x48(%rsp), %r12
movq %r12, %rdi
callq 0xb110
movl %eax, %ebp
movq (%r12), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x2b0c4
movq 0x58(%rsp), %rsi
incq %rsi
callq 0xb510
testl %ebp, %ebp
jne 0x2b0f2
leaq 0x68(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x1b878
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b0f2
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 0x2b12a
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 0x40357(%rip), %rsi     # 0x6b488
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b45e
leaq 0x3f302(%rip), %rsi     # 0x6a44a
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b337
leaq 0x3ff31(%rip), %rsi     # 0x6b090
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b325
leaq 0x3ff1f(%rip), %rsi     # 0x6b095
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b325
leaq 0x3ff10(%rip), %rsi     # 0x6b09d
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b39c
leaq 0x429cf(%rip), %rsi     # 0x6db73
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b3c7
leaq 0x3fee8(%rip), %rsi     # 0x6b0a3
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b3d4
leaq 0x3fed4(%rip), %rsi     # 0x6b0a6
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b3e4
leaq 0x3fec3(%rip), %rsi     # 0x6b0ac
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b3f4
leaq 0x3feb3(%rip), %rsi     # 0x6b0b3
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b404
leaq 0x40467(%rip), %rsi     # 0x6b67e
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b414
leaq 0x4126e(%rip), %rsi     # 0x6c49c
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b424
leaq 0x41195(%rip), %rsi     # 0x6c3da
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b444
leaq 0x3fe61(%rip), %rsi     # 0x6b0bd
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b434
leaq 0x40d8d(%rip), %rsi     # 0x6c000
movq %rsp, %rdi
callq 0xb110
testl %eax, %eax
je 0x2b434
leaq 0x612e6(%rip), %r15     # 0x8c570
movq (%r15), %rdi
cmpq $0x0, 0x18(%rdi)
je 0x2b45e
addq $0x20, %rdi
callq 0xb7d0
movq (%r15), %rax
movq 0x18(%rax), %r14
leaq 0x3f1f9(%rip), %rsi     # 0x6a4a8
movl $0xc, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3fe02(%rip), %rsi     # 0x6b0c5
movl $0xf, %edx
movq %r14, %rdi
callq 0xb5f0
leaq 0x3fdfe(%rip), %rsi     # 0x6b0d5
movl $0x14, %edx
movq %r14, %rdi
callq 0xb5f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0xb5f0
movq %rax, %r14
leaq 0x410d4(%rip), %rsi     # 0x6c3d3
movl $0x1, %edx
movq %rax, %rdi
callq 0xb5f0
movq %r14, %rdi
callq 0xb250
movq (%r15), %rdi
addq $0x20, %rdi
callq 0xb3b0
jmp 0x2b45e
testq %rbx, %rbx
je 0x2b476
leaq 0x5f02b(%rip), %rsi     # 0x8a360
jmp 0x2b347
testq %rbx, %rbx
je 0x2b476
leaq 0x3fcc9(%rip), %rsi     # 0x6b010
movl $0xb, %ecx
movq %rbx, %rdi
rep  movsq (%rsi), %es:(%rdi)
movq %rbx, %r14
movq 0x48(%r14), %rax
testq %rax, %rax
je 0x2b36e
movq 0x10(%r14), %rcx
movq %rcx, 0x10(%rax)
movq 0x40(%r14), %rcx
movq %rcx, 0x18(%rax)
testl %ebp, %ebp
jne 0x2b479
movl $0x10, %edi
callq 0xb500
movups 0x38(%r14), %xmm0
movups %xmm0, (%rax)
leaq 0x48ab(%rip), %rcx      # 0x2fc3a
movq %rcx, 0x38(%r14)
movq %rax, 0x40(%r14)
jmp 0x2b479
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2e1ef
movq %rax, %r14
testq %rax, %rax
je 0x2b45e
movq 0x48(%r14), %rax
leaq 0x2f86(%rip), %rcx      # 0x2e347
movq %rcx, 0x20(%rax)
jmp 0x2b355
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2b4e8
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b5be
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b67b
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b741
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b816
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2b940
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2bbaa
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2c447
jmp 0x2b452
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2bfa9
movq %rax, %r14
testq %rax, %rax
jne 0x2b355
testq %rbx, %rbx
je 0x2b476
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 0x2b494
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb510
leaq 0x20(%rsp), %rdi
callq 0x1bad0
movq %r14, %rax
addq $0xe0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2b4b3
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2b4d6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0xb510
jmp 0x2b4d6
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1bad0
movq %rbx, %rdi
callq 0xb9c0