// File: mh0fm4[P]SCDC/src/components/node/nodeport_pool.cc
// Function: scdc_nodeport_pool::open(char const*, scdc_args*)
scdc_nodeport *scdc_nodeport_pool::open(const char *conf, scdc_args *args)
{
  SCDC_TRACE("open: conf: '" << conf << "'");

  stringlist confs(':', conf);
  string np_type = confs.front_pop();

  scdc_nodeport *nodeport = 0;

#if USE_NODE_DIRECT
  if (np_type == "direct") nodeport = new scdc_nodeport_direct();
  else
#endif
#if USE_NODE_TCP
  if (np_type == "tcp") nodeport = new scdc_nodeport_tcp();
  else
#endif
#if USE_NODE_UDS
  if (np_type == "uds") nodeport = new scdc_nodeport_uds();
  else
#endif
#if USE_NODE_MPI
  if (np_type == "mpi") nodeport = new scdc_nodeport_mpi();
  else
#endif
#if USE_NODE_STREAM
  if (np_type == "stream") nodeport = new scdc_nodeport_stream();
  else
#endif
#if USE_NODE_TIMER
  if (np_type == "timer") nodeport = new scdc_nodeport_timer();
  else
#endif
  SCDC_ERROR("unkown nodeport type '" << np_type << "'");

  if (!nodeport) return 0;

  if (!nodeport->open(confs.conflate().c_str(), args))
  {
    delete nodeport;
    return 0;
  }

  pair<iterator, bool> ret = insert(nodeport);

  if (!ret.second)
  {
    delete nodeport;
    return 0;
  }

  return nodeport;
}

// 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, -0xd0(%rbp)
jmp 0x53654
movq -0x18(%rbp), %rdx
leaq -0x48(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
movl $0x3a, %esi
movq $-0x1, %rcx
callq 0x25a70
movq -0xd8(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x25b00
jmp 0x53686
movq $0x0, -0x80(%rbp)
leaq 0x52bdd(%rip), %rsi     # 0xa6272
leaq -0x68(%rbp), %rdi
callq 0x25b80
movb %al, -0xd9(%rbp)
jmp 0x536a6
movb -0xd9(%rbp), %al
testb $0x1, %al
jne 0x536b2
jmp 0x53727
movl $0xb0, %edi
callq 0xc690
movq %rax, -0xe8(%rbp)
jmp 0x536c5
movq -0xe8(%rbp), %rdi
callq 0x92f20
jmp 0x536d3
movq -0xe8(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x53a16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x53bbc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x53bb3
movq -0xe8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0xb0, %esi
callq 0xc6a0
jmp 0x53bb3
leaq 0x542d1(%rip), %rsi     # 0xa79ff
leaq -0x68(%rbp), %rdi
callq 0x25b80
movb %al, -0xe9(%rbp)
jmp 0x5373f
movb -0xe9(%rbp), %al
testb $0x1, %al
jne 0x5374b
jmp 0x5379e
movl $0xc0, %edi
callq 0xc690
movq %rax, -0xf8(%rbp)
jmp 0x5375e
movq -0xf8(%rbp), %rdi
callq 0x93e50
jmp 0x5376c
movq -0xf8(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x53a14
movq -0xf8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0xc0, %esi
callq 0xc6a0
jmp 0x53bb3
leaq 0x54263(%rip), %rsi     # 0xa7a08
leaq -0x68(%rbp), %rdi
callq 0x25b80
movb %al, -0xf9(%rbp)
jmp 0x537b6
movb -0xf9(%rbp), %al
testb $0x1, %al
jne 0x537c2
jmp 0x53815
movl $0xb8, %edi
callq 0xc690
movq %rax, -0x108(%rbp)
jmp 0x537d5
movq -0x108(%rbp), %rdi
callq 0x94de0
jmp 0x537e3
movq -0x108(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x53a12
movq -0x108(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0xb8, %esi
callq 0xc6a0
jmp 0x53bb3
leaq 0x53847(%rip), %rsi     # 0xa7063
leaq -0x68(%rbp), %rdi
callq 0x25b80
movb %al, -0x109(%rbp)
jmp 0x5382d
movb -0x109(%rbp), %al
testb $0x1, %al
jne 0x53839
jmp 0x5388c
movl $0x98, %edi
callq 0xc690
movq %rax, -0x118(%rbp)
jmp 0x5384c
movq -0x118(%rbp), %rdi
callq 0x93670
jmp 0x5385a
movq -0x118(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x53a10
movq -0x118(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0x98, %esi
callq 0xc6a0
jmp 0x53bb3
leaq 0x541bb(%rip), %rsi     # 0xa7a4e
leaq -0x68(%rbp), %rdi
callq 0x25b80
movb %al, -0x119(%rbp)
jmp 0x538a4
movb -0x119(%rbp), %al
testb $0x1, %al
jne 0x538b0
jmp 0x53903
movl $0x128, %edi            # imm = 0x128
callq 0xc690
movq %rax, -0x128(%rbp)
jmp 0x538c3
movq -0x128(%rbp), %rdi
callq 0x54b70
jmp 0x538d1
movq -0x128(%rbp), %rax
movq %rax, -0x80(%rbp)
jmp 0x53a0e
movq -0x128(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0x128, %esi            # imm = 0x128
callq 0xc6a0
jmp 0x53bb3
jmp 0x53905
leaq 0x80d9c(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x130(%rbp)
jmp 0x5391d
movq -0x130(%rbp), %rax
cmpq $0x0, %rax
je 0x53a08
leaq 0x80d73(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
jmp 0x5393f
leaq 0x80d62(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, -0x138(%rbp)
jmp 0x53957
movq -0x138(%rbp), %rdi
leaq 0x52b43(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, -0x140(%rbp)
jmp 0x53973
movq -0x140(%rbp), %rdi
leaq 0x540d3(%rip), %rsi     # 0xa7a54
callq 0xc670
movq %rax, -0x148(%rbp)
jmp 0x5398f
movq -0x148(%rbp), %rdi
leaq 0x540df(%rip), %rsi     # 0xa7a7c
callq 0xc670
movq %rax, -0x150(%rbp)
jmp 0x539ab
movq -0x150(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xc5b0
movq %rax, -0x158(%rbp)
jmp 0x539c4
movq -0x158(%rbp), %rdi
leaq 0x54a01(%rip), %rsi     # 0xa83d3
callq 0xc670
movq %rax, -0x160(%rbp)
jmp 0x539e0
movq -0x160(%rbp), %rdi
movq 0x805d2(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
jmp 0x539f5
leaq 0x80cac(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x53a06
jmp 0x53a08
jmp 0x53a0a
jmp 0x53a0c
jmp 0x53a0e
jmp 0x53a10
jmp 0x53a12
jmp 0x53a14
jmp 0x53a16
cmpq $0x0, -0x80(%rbp)
jne 0x53a34
movq $0x0, -0x8(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x53b94
movq -0x80(%rbp), %rax
movq %rax, -0x168(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x2e970
jmp 0x53a51
leaq -0xa8(%rbp), %rdi
callq 0xc260
movq -0x168(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movb %al, -0x169(%rbp)
jmp 0x53a7c
movb -0x169(%rbp), %al
xorb $-0x1, %al
movb %al, -0x16a(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xc3e0
movb -0x16a(%rbp), %al
testb $0x1, %al
jne 0x53aa2
jmp 0x53af4
movq -0x80(%rbp), %rax
movq %rax, -0x178(%rbp)
cmpq $0x0, %rax
je 0x53ac0
movq -0x178(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, -0x8(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x53b94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xc3e0
jmp 0x53bb3
movq -0xd0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x53cc0
movb %dl, -0x181(%rbp)
movq %rax, -0x180(%rbp)
jmp 0x53b13
movb -0x181(%rbp), %al
movq -0x180(%rbp), %rcx
movq %rcx, -0xc8(%rbp)
movb %al, -0xc0(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movb -0xc0(%rbp), %al
movb %al, -0xb0(%rbp)
testb $0x1, -0xb0(%rbp)
jne 0x53b82
movq -0x80(%rbp), %rax
movq %rax, -0x190(%rbp)
cmpq $0x0, %rax
je 0x53b6e
movq -0x190(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, -0x8(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x53b94
movq -0x80(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x84(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xc3e0
leaq -0x48(%rbp), %rdi
callq 0x25c90
movq -0x8(%rbp), %rax
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0xc3e0
leaq -0x48(%rbp), %rdi
callq 0x25c90
movq -0x70(%rbp), %rdi
callq 0xcba0
nop