// File: mh0fm4[P]SCDC/test/demos/multi/multi_hook.c
// Function: multidemo_dataset_cmd
scdcint_t multidemo_dataset_cmd(void *dataprov, void *dataset, const char *cmd, const char *params, scdc_dataset_input_t *input, scdc_dataset_output_t *output, scdc_result_t *result)
{
  MULTI_TRACE("dataset_cmd:");
  MULTI_TRACE("  dataprov: '%p'", dataprov);
  MULTI_TRACE("  dataset: '%p'", dataset);
  MULTI_TRACE("  cmd: '%s'", cmd);
  MULTI_TRACE("  params: '%s'", params);

  MULTI_TRACE("before:");
  MULTI_TRACE_N("  "); scdc_dataset_input_print(input); MULTI_TRACE_NL("");
  MULTI_TRACE("  input buf: '%.*s'", (int) SCDC_DATASET_INOUT_BUF_SIZE(input), (char *) SCDC_DATASET_INOUT_BUF_PTR(input));
  MULTI_TRACE_N("  "); scdc_dataset_output_print(output); MULTI_TRACE_NL("");

  SCDC_DATASET_INOUT_MBUF_INIT(output, output_buf_m, sizeof(output_buf_m));
  SCDC_DATASET_INOUT_MBUF_SET_C(output, 4);
  SCDC_DATASET_INOUT_MBUF_M_SET(output, 0, output_buf_0, sizeof(output_buf_0), strlen(output_buf_0));
  SCDC_DATASET_INOUT_MBUF_M_SET(output, 1, output_buf_1, sizeof(output_buf_1), strlen(output_buf_1));
  SCDC_DATASET_INOUT_MBUF_M_SET(output, 2, output_buf_2, sizeof(output_buf_2), strlen(output_buf_2));
  SCDC_DATASET_INOUT_MBUF_M_SET(output, 3, output_buf_3, sizeof(output_buf_3), strlen(output_buf_3));

  MULTI_TRACE("after:");
  MULTI_TRACE_N("  "); scdc_dataset_output_print(output); MULTI_TRACE_NL("");

  return SCDC_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
leaq 0x7b6c6(%rip), %rdi     # 0x89141
movb $0x0, %al
callq 0xcd10
leaq 0x7b685(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xda92
movq -0x8(%rbp), %rsi
leaq 0x7b6ca(%rip), %rdi     # 0x89167
movb $0x0, %al
callq 0xcd10
leaq 0x7b663(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdab4
movq -0x10(%rbp), %rsi
leaq 0x7b6d2(%rip), %rdi     # 0x89191
movb $0x0, %al
callq 0xcd10
leaq 0x7b641(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdad6
movq -0x18(%rbp), %rsi
leaq 0x7b6d9(%rip), %rdi     # 0x891ba
movb $0x0, %al
callq 0xcd10
leaq 0x7b61f(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdaf8
movq -0x20(%rbp), %rsi
leaq 0x7b6dc(%rip), %rdi     # 0x891df
movb $0x0, %al
callq 0xcd10
leaq 0x7b5fd(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdb1a
leaq 0x7b6e6(%rip), %rdi     # 0x89207
movb $0x0, %al
callq 0xcd10
leaq 0x7b5df(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdb38
leaq 0x7b6e9(%rip), %rdi     # 0x89228
movb $0x0, %al
callq 0xcd10
movq -0x28(%rbp), %rdi
callq 0x2f350
leaq 0x7b5b8(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdb5f
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movl %eax, %esi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x7b6cc(%rip), %rdi     # 0x89244
movb $0x0, %al
callq 0xcd10
leaq 0x7b588(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdb8f
leaq 0x7b692(%rip), %rdi     # 0x89228
movb $0x0, %al
callq 0xcd10
movq -0x30(%rbp), %rdi
callq 0x2f380
leaq 0x7b561(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
movq -0x30(%rbp), %rax
leaq 0xa5b11(%rip), %rcx     # 0xb36d0
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rax
movq $-0x4, 0x18(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x30(%rbp), %rax
movq $-0x4, 0x20(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
leaq 0xa5aa2(%rip), %rcx     # 0xb3698
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq $0x5, 0x8(%rax)
leaq 0xa5a88(%rip), %rdi     # 0xb3698
callq 0xc280
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
leaq 0xa5a6a(%rip), %rcx     # 0xb369d
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq $0x4, 0x20(%rax)
leaq 0xa5a4f(%rip), %rdi     # 0xb369d
callq 0xc280
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x28(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
leaq 0xa5a30(%rip), %rcx     # 0xb36a1
movq %rcx, 0x30(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq $0x3, 0x38(%rax)
leaq 0xa5a15(%rip), %rdi     # 0xb36a1
callq 0xc280
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x40(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
leaq 0xa59f5(%rip), %rcx     # 0xb36a4
movq %rcx, 0x48(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq $0x2, 0x50(%rax)
leaq 0xa59da(%rip), %rdi     # 0xb36a4
callq 0xc280
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x58(%rax)
leaq 0x7b58c(%rip), %rdi     # 0x89271
movb $0x0, %al
callq 0xcd10
leaq 0x7b41b(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
jmp 0xdcfc
leaq 0x7b525(%rip), %rdi     # 0x89228
movb $0x0, %al
callq 0xcd10
movq -0x30(%rbp), %rdi
callq 0x2f380
leaq 0x7b3f4(%rip), %rdi     # 0x8910e
movb $0x0, %al
callq 0xcd10
movl $0x1, %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)