// File: /workspace/github_cpp_makefile_star2_O2/mh0fm4[P]SCDC/src/lib/scdc/scdc.cc
// Function: scdc_args_get_va(void*, long long, void*)
static scdc_arg_ref_t scdc_args_get_va(void *data, scdcint_t type, void *v)
{
  scdc_args_data_va_t *args_data_va = static_cast<scdc_args_data_va_t *>(data);

  SCDC_TRACE(__func__ << ": data: '" << args_data_va << "' (arg: '" << args_data_va->arg << "', ap: '" << args_data_va->ap << "'), type: '" << type << "', v: " << v);

  switch (type)
  {
    case SCDC_ARGS_TYPE_INT:
      *((int *) v) = va_arg(*args_data_va->ap, int);
      args_data_va->arg += 1;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_SCDCINT:
      *((scdcint_t *) v) = va_arg(*args_data_va->ap, scdcint_t);
      args_data_va->arg += 1;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_DOUBLE:
      *((double *) v) = va_arg(*args_data_va->ap, double);
      args_data_va->arg += 1;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_CSTR:
    case SCDC_ARGS_TYPE_PTR:
      *((void **) v) = va_arg(*args_data_va->ap, void *);
      args_data_va->arg += 1;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_IN_STREAM:
    case SCDC_ARGS_TYPE_OUT_STREAM:
      *((FILE **) v) = va_arg(*args_data_va->ap, FILE *);
      args_data_va->arg += 1;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_DATAPROV_HOOK:
      ((scdc_args_dataprov_hook_t *) v)->hook = *va_arg(*args_data_va->ap, scdc_dataprov_hook_t *);
      ((scdc_args_dataprov_hook_t *) v)->hook_open_intern = scdc_dataprov_hook_open_intern;
      ((scdc_args_dataprov_hook_t *) v)->intern_data = reinterpret_cast<void *>(((scdc_args_dataprov_hook_t *) v)->hook.open);
      args_data_va->arg += 1;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_DATAPROV_JOBRUN_HANDLER:
      ((scdc_dataprov_jobrun_handler_args_t *) v)->handler = va_arg(*args_data_va->ap, scdc_dataprov_jobrun_handler_f *);
      ((scdc_dataprov_jobrun_handler_args_t *) v)->data = va_arg(*args_data_va->ap, void *);
      args_data_va->arg += 2;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_LOG_HANDLER:
      ((scdc_log_handler_args_t *) v)->handler = va_arg(*args_data_va->ap, scdc_log_handler_f *);
      ((scdc_log_handler_args_t *) v)->data = va_arg(*args_data_va->ap, void *);
      args_data_va->arg += 2;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_NODEPORT_CMD_HANDLER:
      ((scdc_nodeport_cmd_handler_args_t *) v)->handler = va_arg(*args_data_va->ap, scdc_nodeport_cmd_handler_f *);
      ((scdc_nodeport_cmd_handler_args_t *) v)->data = va_arg(*args_data_va->ap, void *);
      args_data_va->arg += 2;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_NODEPORT_TIMER_HANDLER:
       ((scdc_nodeport_timer_handler_args_t *) v)->handler = va_arg(*args_data_va->ap, scdc_nodeport_timer_handler_f *);
       ((scdc_nodeport_timer_handler_args_t *) v)->data = va_arg(*args_data_va->ap, void *);
      args_data_va->arg += 2;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_NODEPORT_LOOP_HANDLER:
      ((scdc_nodeport_loop_handler_args_t *) v)->handler = va_arg(*args_data_va->ap, scdc_nodeport_loop_handler_f *);
      ((scdc_nodeport_loop_handler_args_t *) v)->data = va_arg(*args_data_va->ap, void *);
      args_data_va->arg += 2;
      return SCDC_ARG_REF_NONE;
    case SCDC_ARGS_TYPE_NODEPORT_LOOP_HANDLER_DUMMY:
      ((scdc_nodeport_loop_handler_args_t *) v)->handler = 0;
      ((scdc_nodeport_loop_handler_args_t *) v)->data = 0;
      return SCDC_ARG_REF_NONE;
  }

  SCDC_TRACE(__func__ << ": error: unknown type '" << type << "'");

  return SCDC_ARG_REF_NULL;
}

// Assembly:
xorl %eax, %eax
decq %rsi
cmpq $0x14, %rsi
ja 0x195f7
leaq 0x37bab(%rip), %rcx     # 0x51108
movslq (%rcx,%rsi,4), %rsi
addq %rcx, %rsi
jmpq *%rsi
movq 0x8(%rdi), %rax
movl (%rax), %esi
cmpq $0x28, %rsi
ja 0x1959a
movq %rsi, %rcx
addq 0x10(%rax), %rcx
addl $0x8, %esi
movl %esi, (%rax)
jmp 0x195a6
movq 0x8(%rdi), %rax
movl (%rax), %esi
cmpq $0x28, %rsi
ja 0x195df
movq %rsi, %rcx
addq 0x10(%rax), %rcx
addl $0x8, %esi
movl %esi, (%rax)
jmp 0x195eb
movq 0x8(%rax), %rcx
leaq 0x8(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq (%rcx), %rax
movq %rax, (%rdx)
movq 0x8(%rdi), %rax
movl (%rax), %esi
cmpq $0x28, %rsi
ja 0x195c6
movq %rsi, %rcx
addq 0x10(%rax), %rcx
addl $0x8, %esi
movl %esi, (%rax)
jmp 0x195d2
movq 0x8(%rax), %rcx
leaq 0x8(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq (%rcx), %rax
movq %rax, 0x8(%rdx)
addq $0x2, (%rdi)
jmp 0x195f4
movq 0x8(%rax), %rcx
leaq 0x8(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq (%rcx), %rax
movq %rax, (%rdx)
incq (%rdi)
pushq $0x1
popq %rax
retq
xorps %xmm0, %xmm0
movups %xmm0, (%rdx)
jmp 0x195f4
movq 0x8(%rdi), %rax
movl (%rax), %esi
cmpq $0x28, %rsi
ja 0x19653
movq %rsi, %rcx
addq 0x10(%rax), %rcx
addl $0x8, %esi
movl %esi, (%rax)
jmp 0x1965f
movq 0x8(%rdi), %rax
movl (%rax), %esi
cmpq $0x28, %rsi
ja 0x19665
movq %rsi, %rcx
addq 0x10(%rax), %rcx
addl $0x8, %esi
movl %esi, (%rax)
jmp 0x19671
movq 0x8(%rdi), %rax
movl 0x4(%rax), %esi
cmpq $0xa0, %rsi
ja 0x196a9
movq %rsi, %rcx
addq 0x10(%rax), %rcx
addl $0x10, %esi
movl %esi, 0x4(%rax)
jmp 0x196b5
movq 0x8(%rax), %rcx
leaq 0x8(%rcx), %rsi
movq %rsi, 0x8(%rax)
movl (%rcx), %eax
movl %eax, (%rdx)
jmp 0x195f1
movq 0x8(%rax), %rcx
leaq 0x8(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq (%rcx), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
movups %xmm0, (%rdx)
movups %xmm3, 0x30(%rdx)
movups %xmm2, 0x20(%rdx)
movups %xmm1, 0x10(%rdx)
leaq 0x2c(%rip), %rax        # 0x196c5
movq %rax, 0x40(%rdx)
movq (%rdx), %rax
movq %rax, 0x48(%rdx)
jmp 0x195f1
movq 0x8(%rax), %rcx
leaq 0x8(%rcx), %rsi
movq %rsi, 0x8(%rax)
movsd (%rcx), %xmm0
movsd %xmm0, (%rdx)
jmp 0x195f1