user: Please show me the C implementation that matches the assembly code listed below:

```asm
<handle_command>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x10(%rbp),%rcx
  lea    -0x14(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  lea    D55(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x2,%eax
  jne    L19
  mov    -0x10(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <handle_create@plt>
  jmp    L124
L19:
  lea    -0x18(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  lea    D52(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  jne    L144
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <handle_destroy@plt>
  jmp    L124
L144:
  mov    -0x28(%rbp),%rax
  mov    $0x4,%edx
  lea    D25(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L0
  mov    $0x0,%eax
  call   <handle_list@plt>
  jmp    L124
L0:
  lea    -0x18(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  lea    D72(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x2,%eax
  jne    L29
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <handle_print@plt>
  jmp    L124
L29:
  lea    -0x10(%rbp),%rsi
  lea    -0x14(%rbp),%rcx
  lea    -0x18(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  mov    %rsi,%r8
  lea    D53(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x3,%eax
  jne    L1
  mov    -0x10(%rbp),%edx
  mov    -0x14(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <handle_get@plt>
  jmp    L124
L1:
  lea    -0xc(%rbp),%rdi
  lea    -0x10(%rbp),%rsi
  lea    -0x14(%rbp),%rcx
  lea    -0x18(%rbp),%rdx
  mov    -0x28(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D87(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x4,%eax
  jne    L163
  mov    -0xc(%rbp),%esi
  mov    -0x10(%rbp),%edx
  mov    -0x14(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  movd   %esi,%xmm0
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <handle_set@plt>
  jmp    L124
L163:
  mov    -0x28(%rbp),%rax
  mov    $0x4,%edx
  lea    D6(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L56
  mov    $0x0,%eax
  call   <usage@plt>
  jmp    L124
L56:
  mov    -0x28(%rbp),%rax
  mov    $0x4,%edx
  lea    D74(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L61
  mov    $0x0,%eax
  call   <bye@plt>
  jmp    L124
L61:
  mov    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L124:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L39
  call   <__stack_chk_fail@plt>
L39:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D55
data_type: string
name: retrieve_data
arguments: data_tag: D52
data_type: string
name: retrieve_data
arguments: data_tag: D25
data_type: string
name: retrieve_data
arguments: data_tag: D72
data_type: string
name: retrieve_data
arguments: data_tag: D53
data_type: string
name: retrieve_data
arguments: data_tag: D87
data_type: string
name: retrieve_data
arguments: data_tag: D6
data_type: string
name: retrieve_data
arguments: data_tag: D74
data_type: string
name: retrieve_data
arguments: data_tag: D78
data_type: string

tool: D55: create %d %d

tool: D52: destroy %d

tool: D25: list

tool: D72: print %d

tool: D53: get %d %d %d

tool: D87: set %d %d %d %f

tool: D6: help

tool: D74: quit

tool: D78: ERROR: '%s' is not a valid command.


assistant: ```c
void handle_command(const char *cmdbuf) {
  int id;
  int r, c;
  float v;
  if (2 == sscanf(cmdbuf, "create %d %d", &r, &c)) {
    handle_create(r, c);
  } else if (1 == sscanf(cmdbuf, "destroy %d", &id)) {
    handle_destroy(id);
  } else if (!strncmp(cmdbuf, "list", 4)) {
    handle_list();
  } else if (2 == sscanf(cmdbuf, "print %d", &id)) {
    handle_print(id);
  } else if (3 == sscanf(cmdbuf, "get %d %d %d", &id, &r, &c)) {
    handle_get(id, r, c);
  } else if (4 == sscanf(cmdbuf, "set %d %d %d %f", &id, &r, &c, &v)) {
    handle_set(id, r, c, v);
  } else if (!strncmp(cmdbuf, "help", 4)) {
    usage();
  } else if (!strncmp(cmdbuf, "quit", 4)) {
    bye();
  } else {
    printf("ERROR: "
           "'%s' is not a valid command."
           "\n",
           cmdbuf);
  }
}
```