user: 下面的汇编指令对应的C源代码是什么:

```asm
<set_param>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  lea    D59(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L119
  mov    -0x10(%rbp),%rax
  lea    D106(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L113
L119:
  mov    -0x8(%rbp),%rax
  movl   $0x20,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movl   $0x20,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movl   $0x40,(%rax)
  jmp    L58
L113:
  mov    -0x10(%rbp),%rax
  lea    D63(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L62
  mov    -0x10(%rbp),%rax
  lea    D30(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L110
L62:
  mov    -0x8(%rbp),%rax
  movl   $0x40,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movl   $0x40,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movl   $0x80,(%rax)
  jmp    L58
L110:
  mov    -0x10(%rbp),%rax
  lea    D45(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L145
  mov    -0x10(%rbp),%rax
  lea    D8(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L149
L145:
  mov    -0x8(%rbp),%rax
  movl   $0x80,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movl   $0x80,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movl   $0x100,(%rax)
  jmp    L58
L149:
  mov    -0x10(%rbp),%rax
  lea    D92(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L6
  mov    -0x10(%rbp),%rax
  lea    D53(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L9
L6:
  mov    -0x8(%rbp),%rax
  movl   $0x100,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movl   $0x100,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movl   $0x200,(%rax)
  jmp    L58
L9:
  mov    -0x10(%rbp),%rax
  lea    D18(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L95
  mov    -0x10(%rbp),%rax
  lea    D34(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L30
L95:
  mov    -0x8(%rbp),%rax
  movl   $0x200,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movl   $0x200,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movl   $0x400,(%rax)
  jmp    L58
L30:
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x6,%edi
  call   <exit@plt>
L58:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D59
type_infered: string
name: retrieve_data
arguments: data_tag: D106
type_infered: string
name: retrieve_data
arguments: data_tag: D63
type_infered: string
name: retrieve_data
arguments: data_tag: D30
type_infered: string
name: retrieve_data
arguments: data_tag: D45
type_infered: string
name: retrieve_data
arguments: data_tag: D8
type_infered: string
name: retrieve_data
arguments: data_tag: D92
type_infered: string
name: retrieve_data
arguments: data_tag: D53
type_infered: string
name: retrieve_data
arguments: data_tag: D18
type_infered: string
name: retrieve_data
arguments: data_tag: D34
type_infered: string
name: retrieve_data
arguments: data_tag: D55
type_infered: string

tool: D59: XS

tool: D106: xs

tool: D63: S

tool: D30: s

tool: D45: M

tool: D8: m

tool: D92: L

tool: D53: l

tool: D18: XL

tool: D34: xl

tool: D55: Invalid input character !!


assistant: ```c
void set_param(int is[], char *size) {
  if (!strcmp(size, "XS") || !strcmp(size, "xs")) {
    is[0] = 32;
    is[1] = 32;
    is[2] = 64;
    return;
  }
  if (!strcmp(size, "S") || !strcmp(size, "s")) {
    is[0] = 64;
    is[1] = 64;
    is[2] = 128;
    return;
  }
  if (!strcmp(size, "M") || !strcmp(size, "m")) {
    is[0] = 128;
    is[1] = 128;
    is[2] = 256;
    return;
  }
  if (!strcmp(size, "L") || !strcmp(size, "l")) {
    is[0] = 256;
    is[1] = 256;
    is[2] = 512;
    return;
  }
  if (!strcmp(size, "XL") || !strcmp(size, "xl")) {
    is[0] = 512;
    is[1] = 512;
    is[2] = 1024;
    return;
  } else {
    printf("Invalid input character !!\n");
    exit(6);
  }
}
```