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

  bool ret = true;

  args = open_args_init(args);

  if (args->get<double>(SCDC_ARGS_TYPE_DOUBLE, &timeout) == SCDC_ARG_REF_NULL)
  {
    SCDC_ERROR("open: getting timeout");
    ret = false;
    goto do_quit;
  }

  if (args->get<scdc_nodeport_timer_handler_args_t>(SCDC_ARGS_TYPE_NODEPORT_TIMER_HANDLER, &timer_handler_args, true) == SCDC_ARG_REF_NULL)
  {
    SCDC_ERROR("open: getting timer handler");
    ret = false;
    goto do_quit;
  }

  if (!scdc_nodeport::open(conf, args))
  {
    SCDC_FAIL("open: opening base");
    ret = false;
  }

  open_args_clear();

do_quit:
  if (!ret) open_args_release();

  return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x54d7e
movq -0x28(%rbp), %rdi
movb $0x1, -0x19(%rbp)
movq -0x18(%rbp), %rsi
callq 0x55330
movq -0x28(%rbp), %rdx
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
addq $0x98, %rdx
movl $0x3, %esi
xorl %ecx, %ecx
callq 0x553c0
cmpq $0x0, %rax
jne 0x54e43
jmp 0x54dba
leaq 0x7f8e7(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
cmpq $0x0, %rax
je 0x54e38
leaq 0x7f8d2(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
leaq 0x7f8c3(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, %rdi
leaq 0x516b1(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, %rdi
leaq 0x52c97(%rip), %rsi     # 0xa7a9d
callq 0xc670
movq %rax, %rdi
leaq 0x52cbe(%rip), %rsi     # 0xa7ad3
callq 0xc670
movq %rax, %rdi
movq 0x7f19c(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
leaq 0x7f878(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x54e3a
movb $0x0, -0x19(%rbp)
jmp 0x54f9e
movq -0x28(%rbp), %rdx
movq -0x18(%rbp), %rdi
addq $0xa0, %rdx
movl $0x13, %esi
movl $0x1, %ecx
callq 0x55450
cmpq $0x0, %rax
jne 0x54ef6
jmp 0x54e6d
leaq 0x7f834(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
cmpq $0x0, %rax
je 0x54eeb
leaq 0x7f81f(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e900
leaq 0x7f810(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e8e0
movq %rax, %rdi
leaq 0x515fe(%rip), %rsi     # 0xa64a8
callq 0xc670
movq %rax, %rdi
leaq 0x52be4(%rip), %rsi     # 0xa7a9d
callq 0xc670
movq %rax, %rdi
leaq 0x52c21(%rip), %rsi     # 0xa7ae9
callq 0xc670
movq %rax, %rdi
movq 0x7f0e9(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
leaq 0x7f7c5(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x2e920
jmp 0x54eed
movb $0x0, -0x19(%rbp)
jmp 0x54f9e
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x96810
testb $0x1, %al
jne 0x54f95
jmp 0x54f11
leaq 0x7f790(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
cmpq $0x0, %rax
je 0x54f8f
leaq 0x7f77b(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25800
leaq 0x7f76c(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x257e0
movq %rax, %rdi
leaq 0x51262(%rip), %rsi     # 0xa61b0
callq 0xc670
movq %rax, %rdi
leaq 0x52b40(%rip), %rsi     # 0xa7a9d
callq 0xc670
movq %rax, %rdi
leaq 0x52b99(%rip), %rsi     # 0xa7b05
callq 0xc670
movq %rax, %rdi
movq 0x7f045(%rip), %rsi     # 0xd3fc0
callq 0xc6d0
leaq 0x7f721(%rip), %rax     # 0xd46a8
movq (%rax), %rdi
callq 0x25820
jmp 0x54f91
movb $0x0, -0x19(%rbp)
movq -0x28(%rbp), %rdi
callq 0x554e0
testb $0x1, -0x19(%rbp)
jne 0x54fad
movq -0x28(%rbp), %rdi
callq 0x55500
movb -0x19(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)