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

```asm
<sputtype>:
  endbr64
  push   %rbx
  cmp    $0x40,%esi
  je     L86
  mov    %esi,%ebx
  jg     L31
  lea    -0x1(%rsi),%eax
  cmp    $0x1f,%eax
  ja     L33
  cmp    $0x20,%esi
  ja     L33
  lea    D50(%rip),%rdx
  mov    %esi,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L31:
  cmp    $0x116,%esi
  je     L45
  jle    L73
  cmp    $0x12d,%esi
  jne    L33
  lea    D37(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax)
L73:
  cmp    $0x80,%esi
  je     L65
  cmp    $0x113,%esi
  jne    L33
  lea    D38(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nop
L33:
  lea    D74(%rip),%rsi
  call   <strcpy@plt>
  xor    %eax,%eax
  pop    %rbx
  ret
  lea    D53(%rip),%rsi
  call   <strcpy@plt>
  mov    %ebx,%eax
  pop    %rbx
  ret
  lea    D59(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D92(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D97(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D65(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
L45:
  lea    D18(%rip),%rsi
  call   <strcpy@plt>
  xor    %eax,%eax
  pop    %rbx
  ret
L65:
  lea    D60(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
  nopl   0x0(%rax,%rax,1)
L86:
  lea    D66(%rip),%rsi
  call   <strcpy@plt>
  mov    $0x1,%eax
  pop    %rbx
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D37
datatype: string
name: disassemble_data
arguments: data_tag: D38
datatype: string
name: disassemble_data
arguments: data_tag: D74
datatype: string
name: disassemble_data
arguments: data_tag: D53
datatype: string
name: disassemble_data
arguments: data_tag: D59
datatype: string
name: disassemble_data
arguments: data_tag: D92
datatype: string
name: disassemble_data
arguments: data_tag: D97
datatype: string
name: disassemble_data
arguments: data_tag: D65
datatype: string
name: disassemble_data
arguments: data_tag: D18
datatype: string
name: disassemble_data
arguments: data_tag: D60
datatype: string
name: disassemble_data
arguments: data_tag: D66
datatype: string

tool: D37: proctype

tool: D38: mtype 

tool: D74: value 

tool: D53: bit   

tool: D59: unsigned 

tool: D92: byte  

tool: D97: short 

tool: D65: int   

tool: D18: label 

tool: D60: struct

tool: D66: chan  

assistant: ```c
int sputtype(char *foo, int m) {
  switch (m) {
  case 5:
    strcpy(foo, "unsigned ");
    break;
  case 1:
    strcpy(foo, "bit   ");
    break;
  case 8:
    strcpy(foo, "byte  ");
    break;
  case 64:
    strcpy(foo, "chan  ");
    break;
  case 16:
    strcpy(foo, "short ");
    break;
  case 32:
    strcpy(foo, "int   ");
    break;
  case 275:
    strcpy(foo, "mtype ");
    break;
  case 128:
    strcpy(foo, "struct");
    break;
  case 301:
    strcpy(foo, "proctype");
    break;
  case 278:
    strcpy(foo, "label ");
    return 0;
  default:
    strcpy(foo, "value ");
    return 0;
  }
  return 1;
}
```