// File: mh0fm4[P]SCDC/src/components/dataset/dataset.cc
// Function: scdc_dataset::do_cmd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, _scdc_dataset_inout_t*, _scdc_dataset_inout_t*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
bool scdc_dataset::do_cmd(const std::string &cmd, scdc_dataset_input_t *input, scdc_dataset_output_t *output, scdc_result &result)
{
  SCDC_TRACE("do_cmd: cmd: '" << cmd << "'");

  string scmd, suri, sparams, params;

  split_cmdline(cmd.c_str(), cmd.size(), &scmd, &suri, &sparams);

  join_cmdline(0, suri.c_str(), sparams.c_str(), params);

  SCDC_TRACE("do_cmd: pwd: '" << pwd << "'");
  SCDC_TRACE("do_cmd: cmd: '" << scmd << "'");
  SCDC_TRACE("do_cmd: params: '" << params << "'");

  bool ret;

  if (config)
  {
    if (scmd == "cd")
    {
      if (params == "") ret = true;
      else ret = dataprov->config_do_cmd("info", params.c_str(), 0, 0, result);

      if (ret) ret = scdc_dataset::do_cmd_cd(params.c_str(), input, output, result);

    } else if (scmd == "pwd")
    {
      ret = scdc_dataset::do_cmd_pwd(params.c_str(), input, output, result);

    } else
    {
      if (pwd.size() > 0) params = pwd + " " + params;

      ret = dataprov->config_do_cmd(scmd.c_str(), params.c_str(), input, output, result);
    }

  } else ret = dataprov->dataset_cmds_do_cmd(this, scmd.c_str(), params.c_str(), input, output, result);

  SCDC_TRACE("do_cmd: return: '" << ret << "'");

  return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x240(%rbp)
jmp 0x41fbc
leaq -0x48(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0xc960
leaq -0x68(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0xc960
leaq -0x88(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0xc960
leaq -0xa8(%rbp), %rdi
callq 0xc960
movq -0x10(%rbp), %rdi
callq 0xc260
movq %rax, -0x260(%rbp)
movq -0x10(%rbp), %rdi
callq 0xc460
movq -0x260(%rbp), %rdi
movq -0x258(%rbp), %rdx
movq -0x250(%rbp), %rcx
movq -0x248(%rbp), %r8
movq %rax, %rsi
callq 0x2a040
jmp 0x4203a
leaq -0x68(%rbp), %rdi
callq 0xc260
movq %rax, -0x268(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xc260
movq -0x268(%rbp), %rsi
movq %rax, %rdx
xorl %eax, %eax
movl %eax, %edi
leaq -0xa8(%rbp), %rcx
callq 0x2a660
jmp 0x42072
jmp 0x42074
jmp 0x42076
jmp 0x42078
jmp 0x4207a
jmp 0x4207c
jmp 0x4207e
jmp 0x42080
jmp 0x42082
jmp 0x42084
movq -0x240(%rbp), %rax
testb $0x1, 0x10(%rax)
je 0x4266f
leaq 0x64c0f(%rip), %rsi     # 0xa6cab
leaq -0x48(%rbp), %rdi
callq 0x25b80
movb %al, -0x269(%rbp)
jmp 0x420ad
movb -0x269(%rbp), %al
testb $0x1, %al
jne 0x420bc
jmp 0x42350
leaq 0x644e1(%rip), %rsi     # 0xa65a4
leaq -0xa8(%rbp), %rdi
callq 0x25b80
movb %al, -0x26a(%rbp)
jmp 0x420d7
movb -0x26a(%rbp), %al
testb $0x1, %al
jne 0x420e3
jmp 0x42106
movb $0x1, -0xb5(%rbp)
jmp 0x4226a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x4283a
movq -0x240(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x280(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0xcbc0
movq -0x278(%rbp), %rdx
leaq 0x6473a(%rip), %rsi     # 0xa6873
leaq -0xd8(%rbp), %rdi
callq 0x27820
jmp 0x42147
leaq -0xa8(%rbp), %rdi
callq 0xc260
movq %rax, -0x290(%rbp)
leaq -0x101(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0xcbc0
movq -0x290(%rbp), %rsi
movq -0x288(%rbp), %rdx
leaq -0x100(%rbp), %rdi
callq 0x27820
jmp 0x42189
movq -0x280(%rbp), %rdi
movq -0x28(%rbp), %r9
movq (%rdi), %rax
movq 0x58(%rax), %rax
xorl %ecx, %ecx
movl %ecx, %r8d
leaq -0xd8(%rbp), %rsi
leaq -0x100(%rbp), %rdx
movq %r8, %rcx
callq *%rax
movb %al, -0x291(%rbp)
jmp 0x421bb
movb -0x291(%rbp), %al
andb $0x1, %al
movb %al, -0xb5(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xc3e0
leaq -0x101(%rbp), %rdi
callq 0xc730
leaq -0xd8(%rbp), %rdi
callq 0xc3e0
leaq -0xd9(%rbp), %rdi
callq 0xc730
jmp 0x4226a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x42259
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x42241
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xc3e0
leaq -0x101(%rbp), %rdi
callq 0xc730
leaq -0xd8(%rbp), %rdi
callq 0xc3e0
leaq -0xd9(%rbp), %rdi
callq 0xc730
jmp 0x4283a
testb $0x1, -0xb5(%rbp)
je 0x4234b
leaq -0xa8(%rbp), %rdi
callq 0xc260
movq %rax, -0x2a8(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0xcbc0
movq -0x2a8(%rbp), %rsi
movq -0x2a0(%rbp), %rdx
leaq -0x128(%rbp), %rdi
callq 0x27820
jmp 0x422b9
movq -0x240(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
leaq -0x128(%rbp), %rsi
callq 0x42870
movb %al, -0x2a9(%rbp)
jmp 0x422e0
movb -0x2a9(%rbp), %al
andb $0x1, %al
movb %al, -0xb5(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xc3e0
leaq -0x129(%rbp), %rdi
callq 0xc730
jmp 0x4234b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x4233a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x128(%rbp), %rdi
callq 0xc3e0
leaq -0x129(%rbp), %rdi
callq 0xc730
jmp 0x4283a
jmp 0x4266a
leaq 0x6470b(%rip), %rsi     # 0xa6a62
leaq -0x48(%rbp), %rdi
callq 0x25b80
movb %al, -0x2aa(%rbp)
jmp 0x42368
movb -0x2aa(%rbp), %al
testb $0x1, %al
jne 0x42377
jmp 0x4244e
leaq -0xa8(%rbp), %rdi
callq 0xc260
movq %rax, -0x2c0(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
callq 0xcbc0
movq -0x2c0(%rbp), %rsi
movq -0x2b8(%rbp), %rdx
leaq -0x150(%rbp), %rdi
callq 0x27820
jmp 0x423b9
movq -0x240(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
leaq -0x150(%rbp), %rsi
callq 0x428b0
movb %al, -0x2c1(%rbp)
jmp 0x423e0
movb -0x2c1(%rbp), %al
andb $0x1, %al
movb %al, -0xb5(%rbp)
leaq -0x150(%rbp), %rdi
callq 0xc3e0
leaq -0x151(%rbp), %rdi
callq 0xc730
jmp 0x42668
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x4243d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x150(%rbp), %rdi
callq 0xc3e0
leaq -0x151(%rbp), %rdi
callq 0xc730
jmp 0x4283a
movq -0x240(%rbp), %rdi
addq $0x18, %rdi
callq 0xc460
cmpq $0x0, %rax
jbe 0x424f4
movq -0x240(%rbp), %rsi
addq $0x18, %rsi
leaq 0x66b7e(%rip), %rdx     # 0xa8ff8
leaq -0x198(%rbp), %rdi
callq 0x31740
jmp 0x42488
leaq -0x178(%rbp), %rdi
leaq -0x198(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x34a30
jmp 0x424a4
leaq -0xa8(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0xc850
leaq -0x178(%rbp), %rdi
callq 0xc3e0
leaq -0x198(%rbp), %rdi
callq 0xc3e0
jmp 0x424f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0xc3e0
jmp 0x4283a
movq -0x240(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x2e0(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xc260
movq %rax, -0x2d8(%rbp)
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0xcbc0
movq -0x2d8(%rbp), %rsi
movq -0x2d0(%rbp), %rdx
leaq -0x1b8(%rbp), %rdi
callq 0x27820
jmp 0x42545
leaq -0xa8(%rbp), %rdi
callq 0xc260
movq %rax, -0x2f0(%rbp)
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0xcbc0
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
leaq -0x1e0(%rbp), %rdi
callq 0x27820
jmp 0x42587
movq -0x2e0(%rbp), %rdi
movq -0x18(%rbp), %rcx
movq -0x20(%rbp), %r8
movq -0x28(%rbp), %r9
movq (%rdi), %rax
movq 0x58(%rax), %rax
leaq -0x1b8(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
callq *%rax
movb %al, -0x2f1(%rbp)
jmp 0x425b9
movb -0x2f1(%rbp), %al
andb $0x1, %al
movb %al, -0xb5(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0xc3e0
leaq -0x1e1(%rbp), %rdi
callq 0xc730
leaq -0x1b8(%rbp), %rdi
callq 0xc3e0
leaq -0x1b9(%rbp), %rdi
callq 0xc730
jmp 0x42668
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x42657
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x4263f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0xc3e0
leaq -0x1e1(%rbp), %rdi
callq 0xc730
leaq -0x1b8(%rbp), %rdi
callq 0xc3e0
leaq -0x1b9(%rbp), %rdi
callq 0xc730
jmp 0x4283a
jmp 0x4266a
jmp 0x427ed
movq -0x240(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x310(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xc260
movq %rax, -0x308(%rbp)
leaq -0x209(%rbp), %rdi
movq %rdi, -0x300(%rbp)
callq 0xcbc0
movq -0x308(%rbp), %rsi
movq -0x300(%rbp), %rdx
leaq -0x208(%rbp), %rdi
callq 0x27820
jmp 0x426c0
leaq -0xa8(%rbp), %rdi
callq 0xc260
movq %rax, -0x320(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0xcbc0
movq -0x320(%rbp), %rsi
movq -0x318(%rbp), %rdx
leaq -0x230(%rbp), %rdi
callq 0x27820
jmp 0x42702
movq -0x240(%rbp), %rsi
movq -0x310(%rbp), %rdi
movq -0x18(%rbp), %r8
movq -0x20(%rbp), %r9
movq -0x28(%rbp), %rdx
movq (%rdi), %rax
movq 0x68(%rax), %rax
movq %rsp, %rcx
movq %rdx, (%rcx)
leaq -0x208(%rbp), %rdx
leaq -0x230(%rbp), %rcx
callq *%rax
movb %al, -0x321(%rbp)
jmp 0x42741
movb -0x321(%rbp), %al
andb $0x1, %al
movb %al, -0xb5(%rbp)
leaq -0x230(%rbp), %rdi
callq 0xc3e0
leaq -0x231(%rbp), %rdi
callq 0xc730
leaq -0x208(%rbp), %rdi
callq 0xc3e0
leaq -0x209(%rbp), %rdi
callq 0xc730
jmp 0x427ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x427df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x427c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x230(%rbp), %rdi
callq 0xc3e0
leaq -0x231(%rbp), %rdi
callq 0xc730
leaq -0x208(%rbp), %rdi
callq 0xc3e0
leaq -0x209(%rbp), %rdi
callq 0xc730
jmp 0x4283a
jmp 0x427ef
jmp 0x427f1
jmp 0x427f3
movb -0xb5(%rbp), %al
movb %al, -0x322(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xc3e0
leaq -0x88(%rbp), %rdi
callq 0xc3e0
leaq -0x68(%rbp), %rdi
callq 0xc3e0
leaq -0x48(%rbp), %rdi
callq 0xc3e0
movb -0x322(%rbp), %al
andb $0x1, %al
addq $0x330, %rsp            # imm = 0x330
popq %rbp
retq
leaq -0xa8(%rbp), %rdi
callq 0xc3e0
leaq -0x88(%rbp), %rdi
callq 0xc3e0
leaq -0x68(%rbp), %rdi
callq 0xc3e0
leaq -0x48(%rbp), %rdi
callq 0xc3e0
movq -0xb0(%rbp), %rdi
callq 0xcba0