// File: mh0fm4[P]SCDC/src/components/compcoup/compcoup_transport.cc
// Function: scdc_compcoup_transport::dataset_close(scdc_dataset*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
bool scdc_compcoup_transport::dataset_close(scdc_dataset *dataset, scdc_result &result)
{
  SCDC_TRACE("dataset_close: dataset: '" << dataset << "'");

  if (!transport_connection->acquire())
  {
    result = "acquiring connection failed";
    SCDC_FAIL(__func__ << ": " << result);
    return false;
  }

  bool ret = true;

  scdc_dataset_transport *dataset_transport = static_cast<scdc_dataset_transport *>(dataset);

  /* send request: DATASET_CLOSE <state> */

  ret = ret && scdc_dataset_transport::write_delim(transport_connection, "DATASET_CLOSE", -1, default_delim);
  ret = ret && dataset_transport->write_state();

  ret = ret && transport->send_outgoing(transport_connection);

  if (!ret)
  {
    result = "sending close request failed";
    SCDC_FAIL(__func__ << ": " << result);
    transport_connection->release();
    return false;
  }

  /* read answer: DATASET_CLOSE (OK|FAILED) RESULT <string> */

  string s;

  ret = ret && scdc_dataset_transport::read_delim(transport_connection, &s, default_delim);
  SCDC_ASSERT(s == "DATASET_CLOSE");

  ret = ret && scdc_dataset_transport::read_delim(transport_connection, &s, default_delim);
  if (s == "OK")
  {
    /* nothing to do here */

  } else
  {
    SCDC_ASSERT(s == "FAILED");
  }

  ret = ret && scdc_dataset_transport::read_delim(transport_connection, &s, default_delim);
  SCDC_ASSERT(s == "RESULT");
  ret = ret && scdc_dataset_transport::read_string(transport_connection, &result);

  if (!ret)
  {
    result = "reading close answer failed";
    SCDC_FAIL(__func__ << ": " << result);
    delete dataset_transport;
    transport_connection->release();
    return false;
  }

  delete dataset_transport;
  dataset_transport = 0;

  transport_connection->release();

  return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x68(%rbp)
jmp 0x9e521
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x97b90
testb $0x1, %al
jne 0x9e5ee
movq -0x20(%rbp), %rdi
leaq 0xb8ea(%rip), %rsi      # 0xa9e2b
callq 0xc920
leaq 0x3615b(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
cmpq $0x0, %rax
je 0x9e5e3
leaq 0x36142(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
leaq 0x36133(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, %rdi
leaq 0x7c29(%rip), %rsi      # 0xa61b0
callq 0xc670
movq %rax, %rdi
leaq 0xb8b1(%rip), %rsi      # 0xa9e47
callq 0xc670
movq %rax, %rdi
leaq 0x7c3f(%rip), %rsi      # 0xa61e4
callq 0xc670
movq %rax, %rdi
leaq 0xb537(%rip), %rsi      # 0xa9aeb
callq 0xc670
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0xc5b0
movq %rax, %rdi
movq 0x359f1(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
leaq 0x360cd(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x9e5e5
movb $0x0, -0x1(%rbp)
jmp 0x9ee3b
movb $0x1, -0x21(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0x69(%rbp)
je 0x9e628
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0xb92a(%rip), %rsi      # 0xa9f3e
movq $-0x1, %rdx
movl $0x20, %ecx
callq 0xa2c90
movb %al, -0x69(%rbp)
movb -0x69(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0x6a(%rbp)
je 0x9e647
movq -0x30(%rbp), %rdi
callq 0xa3550
movb %al, -0x6a(%rbp)
movb -0x6a(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0x6b(%rbp)
je 0x9e672
movq -0x68(%rbp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rax), %rsi
movq (%rdi), %rax
callq *0xd0(%rax)
movb %al, -0x6b(%rbp)
movb -0x6b(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
testb $0x1, -0x21(%rbp)
jne 0x9e749
movq -0x20(%rbp), %rdi
leaq 0xb8bd(%rip), %rsi      # 0xa9f4c
callq 0xc920
leaq 0x3600d(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
cmpq $0x0, %rax
je 0x9e731
leaq 0x35ff4(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
leaq 0x35fe5(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, %rdi
leaq 0x7adb(%rip), %rsi      # 0xa61b0
callq 0xc670
movq %rax, %rdi
leaq 0xb763(%rip), %rsi      # 0xa9e47
callq 0xc670
movq %rax, %rdi
leaq 0x7af1(%rip), %rsi      # 0xa61e4
callq 0xc670
movq %rax, %rdi
leaq 0xb3e9(%rip), %rsi      # 0xa9aeb
callq 0xc670
movq %rax, %rdi
movq -0x20(%rbp), %rsi
callq 0xc5b0
movq %rax, %rdi
movq 0x358a3(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
leaq 0x35f7f(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x9e733
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x97bd0
movb $0x0, -0x1(%rbp)
jmp 0x9ee3b
leaq -0x50(%rbp), %rdi
callq 0xc960
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0x6c(%rbp)
je 0x9e784
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x50(%rbp), %rsi
movl $0x20, %edx
callq 0xa2e00
movb %al, -0x6d(%rbp)
jmp 0x9e77c
movb -0x6d(%rbp), %al
movb %al, -0x6c(%rbp)
jmp 0x9e784
movb -0x6c(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
leaq 0xb7ab(%rip), %rsi      # 0xa9f3e
leaq -0x50(%rbp), %rdi
callq 0x25b80
movb %al, -0x6e(%rbp)
jmp 0x9e7a1
movb -0x6e(%rbp), %al
testb $0x1, %al
jne 0x9e8e4
jmp 0x9e7ae
jmp 0x9e7b0
leaq 0x35ef1(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x78(%rbp)
jmp 0x9e7c5
movq -0x78(%rbp), %rax
cmpq $0x0, %rax
je 0x9e8de
leaq 0x35ece(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x9e7e4
leaq 0x35ebd(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x80(%rbp)
jmp 0x9e7f9
movq -0x80(%rbp), %rdi
leaq 0x7d65(%rip), %rsi      # 0xa6569
callq 0xc670
movq %rax, -0x88(%rbp)
jmp 0x9e812
movq -0x88(%rbp), %rdi
leaq 0xb665(%rip), %rsi      # 0xa9e85
callq 0xc670
movq %rax, -0x90(%rbp)
jmp 0x9e82e
movq -0x90(%rbp), %rdi
leaq 0x7b28(%rip), %rsi      # 0xa6364
callq 0xc670
movq %rax, -0x98(%rbp)
jmp 0x9e84a
movq -0x98(%rbp), %rdi
movl $0x277, %esi            # imm = 0x277
callq 0xcb80
movq %rax, -0xa0(%rbp)
jmp 0x9e864
movq -0xa0(%rbp), %rdi
leaq 0xb6f7(%rip), %rsi      # 0xa9f69
callq 0xc670
movq %rax, -0xa8(%rbp)
jmp 0x9e880
movq -0xa8(%rbp), %rdi
leaq 0x967e(%rip), %rsi      # 0xa7f0c
callq 0xc670
movq %rax, -0xb0(%rbp)
jmp 0x9e89c
movq -0xb0(%rbp), %rdi
movq 0x35716(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x9e8b1
leaq 0x35df0(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x9e8c2
jmp 0x9e8de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xc3e0
jmp 0x9ee49
jmp 0x9e8e0
jmp 0x9e8e2
jmp 0x9e8e4
jmp 0x9e8e6
jmp 0x9e8e8
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0xb1(%rbp)
je 0x9e926
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x50(%rbp), %rsi
movl $0x20, %edx
callq 0xa2e00
movb %al, -0xb2(%rbp)
jmp 0x9e918
movb -0xb2(%rbp), %al
movb %al, -0xb1(%rbp)
jmp 0x9e926
movb -0xb1(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
leaq 0x6c04(%rip), %rsi      # 0xa553c
leaq -0x50(%rbp), %rdi
callq 0x25b80
movb %al, -0xb3(%rbp)
jmp 0x9e949
movb -0xb3(%rbp), %al
testb $0x1, %al
jne 0x9e955
jmp 0x9e95a
jmp 0x9eab2
jmp 0x9e95c
leaq 0xb558(%rip), %rsi      # 0xa9ebb
leaq -0x50(%rbp), %rdi
callq 0x25b80
movb %al, -0xb4(%rbp)
jmp 0x9e974
movb -0xb4(%rbp), %al
testb $0x1, %al
jne 0x9eaac
jmp 0x9e984
jmp 0x9e986
leaq 0x35d1b(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0xc0(%rbp)
jmp 0x9e99e
movq -0xc0(%rbp), %rax
cmpq $0x0, %rax
je 0x9eaa6
leaq 0x35cf2(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x9e9c0
leaq 0x35ce1(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0xc8(%rbp)
jmp 0x9e9d8
movq -0xc8(%rbp), %rdi
leaq 0x7b83(%rip), %rsi      # 0xa6569
callq 0xc670
movq %rax, -0xd0(%rbp)
jmp 0x9e9f4
movq -0xd0(%rbp), %rdi
leaq 0xb483(%rip), %rsi      # 0xa9e85
callq 0xc670
movq %rax, -0xd8(%rbp)
jmp 0x9ea10
movq -0xd8(%rbp), %rdi
leaq 0x7946(%rip), %rsi      # 0xa6364
callq 0xc670
movq %rax, -0xe0(%rbp)
jmp 0x9ea2c
movq -0xe0(%rbp), %rdi
movl $0x280, %esi            # imm = 0x280
callq 0xcb80
movq %rax, -0xe8(%rbp)
jmp 0x9ea46
movq -0xe8(%rbp), %rdi
leaq 0xb46e(%rip), %rsi      # 0xa9ec2
callq 0xc670
movq %rax, -0xf0(%rbp)
jmp 0x9ea62
movq -0xf0(%rbp), %rdi
leaq 0x949c(%rip), %rsi      # 0xa7f0c
callq 0xc670
movq %rax, -0xf8(%rbp)
jmp 0x9ea7e
movq -0xf8(%rbp), %rdi
movq 0x35534(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x9ea93
leaq 0x35c0e(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x9eaa4
jmp 0x9eaa6
jmp 0x9eaa8
jmp 0x9eaaa
jmp 0x9eaac
jmp 0x9eaae
jmp 0x9eab0
jmp 0x9eab2
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0xf9(%rbp)
je 0x9eaf0
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x50(%rbp), %rsi
movl $0x20, %edx
callq 0xa2e00
movb %al, -0xfa(%rbp)
jmp 0x9eae2
movb -0xfa(%rbp), %al
movb %al, -0xf9(%rbp)
jmp 0x9eaf0
movb -0xf9(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
leaq 0xb3eb(%rip), %rsi      # 0xa9eed
leaq -0x50(%rbp), %rdi
callq 0x25b80
movb %al, -0xfb(%rbp)
jmp 0x9eb13
movb -0xfb(%rbp), %al
testb $0x1, %al
jne 0x9ec4b
jmp 0x9eb23
jmp 0x9eb25
leaq 0x35b7c(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x108(%rbp)
jmp 0x9eb3d
movq -0x108(%rbp), %rax
cmpq $0x0, %rax
je 0x9ec45
leaq 0x35b53(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x9eb5f
leaq 0x35b42(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x110(%rbp)
jmp 0x9eb77
movq -0x110(%rbp), %rdi
leaq 0x79e4(%rip), %rsi      # 0xa6569
callq 0xc670
movq %rax, -0x118(%rbp)
jmp 0x9eb93
movq -0x118(%rbp), %rdi
leaq 0xb2e4(%rip), %rsi      # 0xa9e85
callq 0xc670
movq %rax, -0x120(%rbp)
jmp 0x9ebaf
movq -0x120(%rbp), %rdi
leaq 0x77a7(%rip), %rsi      # 0xa6364
callq 0xc670
movq %rax, -0x128(%rbp)
jmp 0x9ebcb
movq -0x128(%rbp), %rdi
movl $0x284, %esi            # imm = 0x284
callq 0xcb80
movq %rax, -0x130(%rbp)
jmp 0x9ebe5
movq -0x130(%rbp), %rdi
leaq 0xb301(%rip), %rsi      # 0xa9ef4
callq 0xc670
movq %rax, -0x138(%rbp)
jmp 0x9ec01
movq -0x138(%rbp), %rdi
leaq 0x92fd(%rip), %rsi      # 0xa7f0c
callq 0xc670
movq %rax, -0x140(%rbp)
jmp 0x9ec1d
movq -0x140(%rbp), %rdi
movq 0x35395(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x9ec32
leaq 0x35a6f(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x9ec43
jmp 0x9ec45
jmp 0x9ec47
jmp 0x9ec49
jmp 0x9ec4b
jmp 0x9ec4d
jmp 0x9ec4f
xorl %eax, %eax
testb $0x1, -0x21(%rbp)
movb %al, -0x141(%rbp)
je 0x9ec84
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0xa31d0
movb %al, -0x142(%rbp)
jmp 0x9ec76
movb -0x142(%rbp), %al
movb %al, -0x141(%rbp)
jmp 0x9ec84
movb -0x141(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
testb $0x1, -0x21(%rbp)
jne 0x9edee
movq -0x20(%rbp), %rdi
leaq 0xb2dd(%rip), %rsi      # 0xa9f81
callq 0xc920
jmp 0x9ecab
jmp 0x9ecad
leaq 0x359f4(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x150(%rbp)
jmp 0x9ecc5
movq -0x150(%rbp), %rax
cmpq $0x0, %rax
je 0x9edb0
leaq 0x359cb(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
jmp 0x9ece7
leaq 0x359ba(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, -0x158(%rbp)
jmp 0x9ecff
movq -0x158(%rbp), %rdi
leaq 0x74a3(%rip), %rsi      # 0xa61b0
callq 0xc670
movq %rax, -0x160(%rbp)
jmp 0x9ed1b
movq -0x160(%rbp), %rdi
leaq 0xb11e(%rip), %rsi      # 0xa9e47
callq 0xc670
movq %rax, -0x168(%rbp)
jmp 0x9ed37
movq -0x168(%rbp), %rdi
leaq 0x749f(%rip), %rsi      # 0xa61e4
callq 0xc670
movq %rax, -0x170(%rbp)
jmp 0x9ed53
movq -0x170(%rbp), %rdi
leaq 0xad8a(%rip), %rsi      # 0xa9aeb
callq 0xc670
movq %rax, -0x178(%rbp)
jmp 0x9ed6f
movq -0x178(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xc5b0
movq %rax, -0x180(%rbp)
jmp 0x9ed88
movq -0x180(%rbp), %rdi
movq 0x3522a(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x9ed9d
leaq 0x35904(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x9edae
jmp 0x9edb0
jmp 0x9edb2
jmp 0x9edb4
movq -0x30(%rbp), %rax
movq %rax, -0x188(%rbp)
cmpq $0x0, %rax
je 0x9edd2
movq -0x188(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x97bd0
jmp 0x9ede1
movb $0x0, -0x1(%rbp)
movl $0x1, -0x60(%rbp)
jmp 0x9ee32
movq -0x30(%rbp), %rax
movq %rax, -0x190(%rbp)
cmpq $0x0, %rax
je 0x9ee0c
movq -0x190(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq -0x68(%rbp), %rax
movq $0x0, -0x30(%rbp)
movq 0x18(%rax), %rdi
callq 0x97bd0
jmp 0x9ee23
movb -0x21(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0x60(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xc3e0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0xcba0
nopw %cs:(%rax,%rax)