user: Demonstrate the C code that generates the assembly output below:

```asm
<get_crit_number>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  lea    D72(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L193
  movl   $0x3,-0x4(%rbp)
  jmp    L72
L193:
  mov    -0x18(%rbp),%rax
  lea    D14(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L70
  movl   $0x2,-0x4(%rbp)
  jmp    L72
L70:
  mov    -0x18(%rbp),%rax
  lea    D90(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L102
  movl   $0x1,-0x4(%rbp)
  jmp    L72
L102:
  mov    -0x18(%rbp),%rax
  lea    D34(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L88
  movl   $0x4,-0x4(%rbp)
  jmp    L72
L88:
  mov    -0x18(%rbp),%rax
  lea    D37(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L2
  movl   $0x5,-0x4(%rbp)
  jmp    L72
L2:
  mov    -0x18(%rbp),%rax
  lea    D99(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L184
  movl   $0x7,-0x4(%rbp)
  jmp    L72
L184:
  mov    -0x18(%rbp),%rax
  lea    D85(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L170
  movl   $0x6,-0x4(%rbp)
  jmp    L72
L170:
  mov    -0x18(%rbp),%rax
  lea    D33(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L139
  movl   $0x8,-0x4(%rbp)
  jmp    L72
L139:
  mov    -0x18(%rbp),%rax
  lea    D59(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L163
  movl   $0x9,-0x4(%rbp)
  jmp    L72
L163:
  mov    -0x18(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L19
  movl   $0xa,-0x4(%rbp)
  jmp    L72
L19:
  movl   $0x0,-0x4(%rbp)
L72:
  mov    -0x4(%rbp),%eax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D72
datatype: string
name: unpack_data
arguments: data_label: D14
datatype: string
name: unpack_data
arguments: data_label: D90
datatype: string
name: unpack_data
arguments: data_label: D34
datatype: string
name: unpack_data
arguments: data_label: D37
datatype: string
name: unpack_data
arguments: data_label: D99
datatype: string
name: unpack_data
arguments: data_label: D85
datatype: string
name: unpack_data
arguments: data_label: D33
datatype: string
name: unpack_data
arguments: data_label: D59
datatype: string
name: unpack_data
arguments: data_label: D39
datatype: string

tool: D72: pudu

tool: D14: pu

tool: D90: pdu

tool: D34: arcs

tool: D37: nos

tool: D99: uses

tool: D85: puses

tool: D33: du

tool: D59: cuses

tool: D39: rand

assistant: ```c
int get_crit_number(crit)
char *crit;
{
  int ret;
  if (!strcmp(crit, "pudu"))
    ret = 3;
  else if (!strcmp(crit, "pu"))
    ret = 2;
  else if (!strcmp(crit, "pdu"))
    ret = 1;
  else if (!strcmp(crit, "arcs"))
    ret = 4;
  else if (!strcmp(crit, "nos"))
    ret = 5;
  else if (!strcmp(crit, "uses"))
    ret = 7;
  else if (!strcmp(crit, "puses"))
    ret = 6;
  else if (!strcmp(crit, "du"))
    ret = 8;
  else if (!strcmp(crit, "cuses"))
    ret = 9;
  else if (!strcmp(crit, "rand"))
    ret = 10;
  else
    ret = 0;
  return ret;
}
```