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

```asm
<handle_command>:
  endbr64
  push   %rbx
  sub    $0x20,%rsp
  mov    %rdi,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%rcx
  lea    0xc(%rsp),%rdx
  lea    D31(%rip),%rsi
  call   <sscanf@plt>
  cmp    $0x2,%eax
  je     L118
  lea    0x8(%rsp),%rdx
  lea    D12(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x1,%eax
  je     L38
  mov    $0x4,%edx
  lea    D63(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L41
  call   <handle_list@plt>
  jmp    L125
L118:
  mov    0x10(%rsp),%esi
  mov    0xc(%rsp),%edi
  call   <handle_create@plt>
L125:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L120
  add    $0x20,%rsp
  pop    %rbx
  ret
L38:
  mov    0x8(%rsp),%edi
  call   <handle_destroy@plt>
  jmp    L125
L41:
  lea    0x8(%rsp),%rdx
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x2,%eax
  je     L57
  lea    0xc(%rsp),%rcx
  lea    0x8(%rsp),%rdx
  lea    0x10(%rsp),%r8
  lea    D39(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x3,%eax
  je     L44
  lea    0xc(%rsp),%rcx
  lea    0x8(%rsp),%rdx
  lea    0x14(%rsp),%r9
  lea    0x10(%rsp),%r8
  lea    D48(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sscanf@plt>
  cmp    $0x4,%eax
  je     L72
  mov    $0x4,%edx
  lea    D77(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L134
  call   <usage@plt>
  jmp    L125
L57:
  mov    0x8(%rsp),%edi
  call   <handle_print@plt>
  jmp    L125
L44:
  mov    0x10(%rsp),%edx
  mov    0xc(%rsp),%esi
  mov    0x8(%rsp),%edi
  call   <handle_get@plt>
  jmp    L125
L72:
  movss  0x14(%rsp),%xmm0
  mov    0x10(%rsp),%edx
  mov    0xc(%rsp),%esi
  mov    0x8(%rsp),%edi
  call   <handle_set@plt>
  jmp    L125
L134:
  mov    $0x4,%edx
  lea    D47(%rip),%rsi
  mov    %rbx,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L4
  call   <bye@plt>
  jmp    L125
L4:
  mov    %rbx,%rsi
  lea    D50(%rip),%rdi
  call   <printf@plt>
  jmp    L125
L120:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D31
data_type: string
name: unpack_data
arguments: label: D12
data_type: string
name: unpack_data
arguments: label: D63
data_type: string
name: unpack_data
arguments: label: D84
data_type: string
name: unpack_data
arguments: label: D39
data_type: string
name: unpack_data
arguments: label: D48
data_type: string
name: unpack_data
arguments: label: D77
data_type: string
name: unpack_data
arguments: label: D47
data_type: string
name: unpack_data
arguments: label: D50
data_type: string

tool: D31: create %d %d

tool: D12: destroy %d

tool: D63: list

tool: D84: print %d

tool: D39: get %d %d %d

tool: D48: set %d %d %d %f

tool: D77: help

tool: D47: quit

tool: D50: 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);
  }
}
```