// File: 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
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
jmp 0x43829
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x4384a
movq -0x10(%rbp), %rsi
leaq -0x78(%rbp), %rdi
movl $0x58, %edx
callq 0xc530
movq -0x18(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x128(%rbp)
movl $0x3a, %esi
movq $-0x1, %rcx
callq 0x25a70
movq -0x128(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x25b00
jmp 0x43882
movb $0x0, -0xd5(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x267a0
jmp 0x4389e
leaq 0x63796(%rip), %rsi     # 0xa703b
leaq -0xf8(%rbp), %rdi
callq 0x25b80
movb %al, -0x129(%rbp)
jmp 0x438b9
leaq -0xf8(%rbp), %rdi
callq 0xc3e0
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0x438d1
jmp 0x4394c
movb $0x1, -0xd5(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x25b00
jmp 0x438ed
leaq -0x118(%rbp), %rdi
callq 0xc3e0
jmp 0x4394c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
jmp 0x43fb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
jmp 0x43fa4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd0(%rbp)
movl %eax, -0xd4(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0xc3e0
jmp 0x43fa4
leaq -0xa8(%rbp), %rdi
callq 0x4d120
movq %rax, -0x138(%rbp)
jmp 0x43961
movq -0x138(%rbp), %rcx
movq -0x18(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x80(%rbp), %rdi
callq 0x433d0
leaq 0x63abc(%rip), %rsi     # 0xa743f
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x139(%rbp)
jmp 0x43997
movb -0x139(%rbp), %al
testb $0x1, %al
jne 0x439a3
jmp 0x439b0
movq $0x0, -0x80(%rbp)
jmp 0x43ee4
leaq 0x62a93(%rip), %rsi     # 0xa644a
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x13a(%rbp)
jmp 0x439cb
movb -0x13a(%rbp), %al
testb $0x1, %al
jne 0x439d7
jmp 0x439f8
cmpq $0x0, -0x80(%rbp)
je 0x439f3
movq -0x80(%rbp), %rdi
leaq 0x635ef(%rip), %rsi     # 0xa6fd8
movl $0x58, %edx
callq 0xc530
jmp 0x43ee2
leaq 0x63648(%rip), %rsi     # 0xa7047
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x13b(%rbp)
jmp 0x43a13
movb -0x13b(%rbp), %al
testb $0x1, %al
jne 0x43a46
jmp 0x43a1f
leaq 0x63626(%rip), %rsi     # 0xa704c
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x13c(%rbp)
jmp 0x43a3a
movb -0x13c(%rbp), %al
testb $0x1, %al
jne 0x43a46
jmp 0x43a67
cmpq $0x0, -0x80(%rbp)
je 0x43a62
movq -0x80(%rbp), %rdi
leaq 0x8e830(%rip), %rsi     # 0xd2288
movl $0x58, %edx
callq 0xc530
jmp 0x43ee0
leaq 0x635e6(%rip), %rsi     # 0xa7054
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x13d(%rbp)
jmp 0x43a82
movb -0x13d(%rbp), %al
testb $0x1, %al
jne 0x43a8e
jmp 0x43ab8
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x43fd0
movq %rax, -0x148(%rbp)
jmp 0x43aa8
movq -0x148(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ede
leaq 0x6608c(%rip), %rsi     # 0xa9b4b
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x149(%rbp)
jmp 0x43ad3
movb -0x149(%rbp), %al
testb $0x1, %al
jne 0x43adf
jmp 0x43b09
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x44020
movq %rax, -0x158(%rbp)
jmp 0x43af9
movq -0x158(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43edc
leaq 0x6354a(%rip), %rsi     # 0xa705a
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x159(%rbp)
jmp 0x43b24
movb -0x159(%rbp), %al
testb $0x1, %al
jne 0x43b30
jmp 0x43b5a
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x44150
movq %rax, -0x168(%rbp)
jmp 0x43b4a
movq -0x168(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43eda
leaq 0x634fc(%rip), %rsi     # 0xa705d
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x169(%rbp)
jmp 0x43b75
movb -0x169(%rbp), %al
testb $0x1, %al
jne 0x43b81
jmp 0x43bab
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x44260
movq %rax, -0x178(%rbp)
jmp 0x43b9b
movq -0x178(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ed8
leaq 0x634b1(%rip), %rsi     # 0xa7063
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x179(%rbp)
jmp 0x43bc6
movb -0x179(%rbp), %al
testb $0x1, %al
jne 0x43bd2
jmp 0x43bfc
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x44380
movq %rax, -0x188(%rbp)
jmp 0x43bec
movq -0x188(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ed6
leaq 0x63467(%rip), %rsi     # 0xa706a
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x189(%rbp)
jmp 0x43c17
movb -0x189(%rbp), %al
testb $0x1, %al
jne 0x43c23
jmp 0x43c4d
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x444b0
movq %rax, -0x198(%rbp)
jmp 0x43c3d
movq -0x198(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ed4
leaq 0x639e7(%rip), %rsi     # 0xa763b
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x199(%rbp)
jmp 0x43c68
movb -0x199(%rbp), %al
testb $0x1, %al
jne 0x43c74
jmp 0x43c9e
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x44670
movq %rax, -0x1a8(%rbp)
jmp 0x43c8e
movq -0x1a8(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ed2
leaq 0x647f7(%rip), %rsi     # 0xa849c
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x1a9(%rbp)
jmp 0x43cb9
movb -0x1a9(%rbp), %al
testb $0x1, %al
jne 0x43cc5
jmp 0x43cef
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x449c0
movq %rax, -0x1b8(%rbp)
jmp 0x43cdf
movq -0x1b8(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ed0
leaq 0x646e4(%rip), %rsi     # 0xa83da
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x1b9(%rbp)
jmp 0x43d0a
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0x43d16
jmp 0x43d40
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x44f70
movq %rax, -0x1c8(%rbp)
jmp 0x43d30
movq -0x1c8(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ece
leaq 0x6332d(%rip), %rsi     # 0xa7074
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x1c9(%rbp)
jmp 0x43d5b
movb -0x1c9(%rbp), %al
testb $0x1, %al
jne 0x43d8e
jmp 0x43d67
leaq 0x6429a(%rip), %rsi     # 0xa8008
leaq -0xc8(%rbp), %rdi
callq 0x25b80
movb %al, -0x1ca(%rbp)
jmp 0x43d82
movb -0x1ca(%rbp), %al
testb $0x1, %al
jne 0x43d8e
jmp 0x43db8
movq -0x80(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x45240
movq %rax, -0x1d8(%rbp)
jmp 0x43da8
movq -0x1d8(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x43ecc
jmp 0x43dba
leaq 0x908e7(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x1e0(%rbp)
jmp 0x43dd2
movq -0x1e0(%rbp), %rax
cmpq $0x0, %rax
je 0x43ec0
leaq 0x908be(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x43df4
leaq 0x908ad(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x1e8(%rbp)
jmp 0x43e0c
movq -0x1e8(%rbp), %rdi
leaq 0x6268e(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x1f0(%rbp)
jmp 0x43e28
movq -0x1f0(%rbp), %rdi
leaq 0x63246(%rip), %rsi     # 0xa707c
callq 0xc670
movq %rax, -0x1f8(%rbp)
jmp 0x43e44
movq -0x1f8(%rbp), %rdi
leaq 0x6323a(%rip), %rsi     # 0xa708c
callq 0xc670
movq %rax, -0x200(%rbp)
jmp 0x43e60
movq -0x200(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0xc5b0
movq %rax, -0x208(%rbp)
jmp 0x43e7c
movq -0x208(%rbp), %rdi
leaq 0x64549(%rip), %rsi     # 0xa83d3
callq 0xc670
movq %rax, -0x210(%rbp)
jmp 0x43e98
movq -0x210(%rbp), %rdi
movq 0x9011a(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x43ead
leaq 0x907f4(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x43ebe
jmp 0x43ec0
jmp 0x43ec2
jmp 0x43ec4
movq $0x0, -0x80(%rbp)
jmp 0x43ece
jmp 0x43ed0
jmp 0x43ed2
jmp 0x43ed4
jmp 0x43ed6
jmp 0x43ed8
jmp 0x43eda
jmp 0x43edc
jmp 0x43ede
jmp 0x43ee0
jmp 0x43ee2
jmp 0x43ee4
cmpq $0x0, -0x80(%rbp)
jne 0x43f18
cmpq $0x0, -0x10(%rbp)
je 0x43f04
movq -0x10(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movl $0x58, %edx
callq 0xc530
movq $0x0, -0x8(%rbp)
movl $0x1, -0x11c(%rbp)
jmp 0x43f7f
jmp 0x43f1a
movq -0x80(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x43f4d
movq -0x80(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x80(%rbp), %rax
movq 0x48(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x80(%rbp), %rax
movq 0x40(%rax), %rcx
movq -0x80(%rbp), %rax
movq 0x48(%rax), %rax
movq %rcx, 0x18(%rax)
jmp 0x43f4f
jmp 0x43f51
testb $0x1, -0xd5(%rbp)
je 0x43f67
movq -0x80(%rbp), %rdi
callq 0x45490
jmp 0x43f65
jmp 0x43f67
jmp 0x43f69
jmp 0x43f6b
jmp 0x43f6d
movq -0x80(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x11c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xc3e0
leaq -0xa8(%rbp), %rdi
callq 0x25c90
movq -0x8(%rbp), %rax
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
leaq -0xc8(%rbp), %rdi
callq 0xc3e0
leaq -0xa8(%rbp), %rdi
callq 0x25c90
movq -0xd0(%rbp), %rdi
callq 0xcba0
nopl (%rax,%rax)