// File: mh0fm4[P]SCDC/src/components/dataprov/dataprov.cc
// Function: scdc_dataprov::dataset_path_open(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
scdc_dataset *scdc_dataprov::dataset_path_open(const std::string &path, scdc_result &result)
{
  SCDC_TRACE(__func__ << ": path: '" << path << "'");

  scdc_dataset *dataset = 0;

  string p = path;
  stringlist pl('/', p);

  if (pl.front_pop() == SCDC_DATAPROV_CONFIG_STR)
  {
    p = pl.conflate();
    dataset = config_open(p, result);

  } else
  {
    dataset = dataset_open(p, result);
  }

  if (!dataset)
  {
    SCDC_FAIL(__func__ << ": opening dataset failed: " << result);
    goto do_return;
  }

  if (!p.empty())
  {
    string cd_cmd = "cd " + p;
    
    if (!dataset->do_cmd(cd_cmd, 0, 0, result))
    {
      SCDC_FAIL(__func__ << ": changing path failed: " << result);
      string r;
      dataset_path_close(dataset, r);
      dataset = 0;
    }
  }

do_return:
  SCDC_TRACE(__func__ << ": return: " << dataset << ", result: '" << result << "'");

  return dataset;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x120(%rbp)
jmp 0x5e0d4
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x40(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0xc270
movq -0x128(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0xc270
jmp 0x5e105
leaq -0x68(%rbp), %rdi
movl $0x2f, %esi
leaq -0x88(%rbp), %rdx
callq 0x5ff80
jmp 0x5e11c
leaq -0x88(%rbp), %rdi
callq 0xc3e0
leaq -0xb8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x25b00
jmp 0x5e13a
leaq 0x49be2(%rip), %rsi     # 0xa7d23
leaq -0xb8(%rbp), %rdi
callq 0x25b80
movb %al, -0x129(%rbp)
jmp 0x5e155
leaq -0xb8(%rbp), %rdi
callq 0xc3e0
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0x5e170
jmp 0x5e250
leaq -0xd8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x2e970
jmp 0x5e182
leaq -0x40(%rbp), %rdi
movq %rdi, -0x140(%rbp)
leaq -0xd8(%rbp), %rsi
movq %rsi, -0x148(%rbp)
callq 0xc850
movq -0x148(%rbp), %rdi
callq 0xc3e0
movq -0x120(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x5e5f0
movq %rax, -0x138(%rbp)
jmp 0x5e1cc
movq -0x138(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x5e27c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5e5d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xc3e0
jmp 0x5e5d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5e5c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0xc3e0
jmp 0x5e5c8
movq -0x120(%rbp), %rdi
movq -0x18(%rbp), %rdx
movq (%rdi), %rax
movq 0x38(%rax), %rax
leaq -0x40(%rbp), %rsi
callq *%rax
movq %rax, -0x150(%rbp)
jmp 0x5e271
movq -0x150(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x5e395
jmp 0x5e289
leaq 0x76418(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x158(%rbp)
jmp 0x5e2a1
movq -0x158(%rbp), %rax
cmpq $0x0, %rax
je 0x5e38c
leaq 0x763ef(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
jmp 0x5e2c3
leaq 0x763de(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x160(%rbp)
jmp 0x5e2db
movq -0x160(%rbp), %rdi
leaq 0x47ec7(%rip), %rsi     # 0xa61b0
callq 0xc670
movq %rax, -0x168(%rbp)
jmp 0x5e2f7
movq -0x168(%rbp), %rdi
leaq 0x49997(%rip), %rsi     # 0xa7c9c
callq 0xc670
movq %rax, -0x170(%rbp)
jmp 0x5e313
movq -0x170(%rbp), %rdi
leaq 0x49a09(%rip), %rsi     # 0xa7d2a
callq 0xc670
movq %rax, -0x178(%rbp)
jmp 0x5e32f
movq -0x178(%rbp), %rdi
leaq 0x481d9(%rip), %rsi     # 0xa6516
callq 0xc670
movq %rax, -0x180(%rbp)
jmp 0x5e34b
movq -0x180(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xc5b0
movq %rax, -0x188(%rbp)
jmp 0x5e364
movq -0x188(%rbp), %rdi
movq 0x75c4e(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x5e379
leaq 0x76328(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x5e38a
jmp 0x5e38c
jmp 0x5e38e
jmp 0x5e390
jmp 0x5e595
leaq -0x40(%rbp), %rdi
callq 0xcb60
testb $0x1, %al
jne 0x5e593
leaq 0x4998f(%rip), %rsi     # 0xa7d3c
leaq -0xf8(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x25900
jmp 0x5e3bf
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %r8
movq (%rdi), %rax
movq 0x10(%rax), %rax
xorl %ecx, %ecx
leaq -0xf8(%rbp), %rsi
movq %rcx, %rdx
callq *%rax
movb %al, -0x189(%rbp)
jmp 0x5e3e4
movb -0x189(%rbp), %al
testb $0x1, %al
jne 0x5e577
jmp 0x5e3f4
jmp 0x5e3f6
leaq 0x762ab(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x198(%rbp)
jmp 0x5e40e
movq -0x198(%rbp), %rax
cmpq $0x0, %rax
je 0x5e50d
leaq 0x76282(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
jmp 0x5e430
leaq 0x76271(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x1a0(%rbp)
jmp 0x5e448
movq -0x1a0(%rbp), %rdi
leaq 0x47d5a(%rip), %rsi     # 0xa61b0
callq 0xc670
movq %rax, -0x1a8(%rbp)
jmp 0x5e464
movq -0x1a8(%rbp), %rdi
leaq 0x4982a(%rip), %rsi     # 0xa7c9c
callq 0xc670
movq %rax, -0x1b0(%rbp)
jmp 0x5e480
movq -0x1b0(%rbp), %rdi
leaq 0x4989c(%rip), %rsi     # 0xa7d2a
callq 0xc670
movq %rax, -0x1b8(%rbp)
jmp 0x5e49c
movq -0x1b8(%rbp), %rdi
leaq 0x49896(%rip), %rsi     # 0xa7d40
callq 0xc670
movq %rax, -0x1c0(%rbp)
jmp 0x5e4b8
movq -0x1c0(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xc5b0
movq %rax, -0x1c8(%rbp)
jmp 0x5e4d1
movq -0x1c8(%rbp), %rdi
movq 0x75ae1(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x5e4e6
leaq 0x761bb(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x5e4f7
jmp 0x5e50d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
jmp 0x5e585
jmp 0x5e50f
jmp 0x5e511
leaq -0x118(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0xc960
movq -0x120(%rbp), %rdi
movq -0x1d0(%rbp), %rdx
movq -0x20(%rbp), %rsi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
jmp 0x5e541
movq $0x0, -0x20(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xc3e0
jmp 0x5e577
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x118(%rbp), %rdi
callq 0xc3e0
jmp 0x5e585
leaq -0xf8(%rbp), %rdi
callq 0xc3e0
jmp 0x5e593
leaq -0xf8(%rbp), %rdi
callq 0xc3e0
jmp 0x5e5c8
jmp 0x5e595
jmp 0x5e597
jmp 0x5e599
jmp 0x5e59b
movq -0x20(%rbp), %rax
movq %rax, -0x1d8(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x25c90
leaq -0x40(%rbp), %rdi
callq 0xc3e0
movq -0x1d8(%rbp), %rax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x25c90
leaq -0x40(%rbp), %rdi
callq 0xc3e0
movq -0x90(%rbp), %rdi
callq 0xcba0
nopw %cs:(%rax,%rax)