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

```asm
<frd_to_hfocus>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%rbx
  mov    %rsi,%rdi
  call   <strlen@plt>
  cmp    $0xc,%eax
  jne    L20
  mov    %rbx,%rdx
  lea    0xc(%rbx),%rcx
L34:
  movzbl (%rdx),%eax
  sub    $0x30,%eax
  cmp    $0x1,%al
  ja     L43
  add    $0x1,%rdx
  cmp    %rcx,%rdx
  jne    L34
  cmpb   $0x31,(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D106(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x1(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D45(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x2(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D113(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x3(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D83(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x4(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D44(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x5(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D94(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x6(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D105(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x7(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D52(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x8(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D93(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0x9(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D22(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0xa(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D108(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  cmpb   $0x31,0xb(%rbx)
  sete   %dl
  movzbl %dl,%edx
  lea    D32(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  mov    $0x1,%edx
  lea    D18(%rip),%rsi
  mov    %rbp,%rdi
  call   <mk2r_set_hfocus_value@plt>
  mov    $0x0,%eax
L35:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L20:
  mov    $0xffffffff,%eax
  jmp    L35
L43:
  mov    $0xffffffff,%eax
  jmp    L35
```

tool_calls: name: retrieve_data
arguments: data_label: D106
type_infered: string
name: retrieve_data
arguments: data_label: D45
type_infered: string
name: retrieve_data
arguments: data_label: D113
type_infered: string
name: retrieve_data
arguments: data_label: D83
type_infered: string
name: retrieve_data
arguments: data_label: D44
type_infered: string
name: retrieve_data
arguments: data_label: D94
type_infered: string
name: retrieve_data
arguments: data_label: D105
type_infered: string
name: retrieve_data
arguments: data_label: D52
type_infered: string
name: retrieve_data
arguments: data_label: D93
type_infered: string
name: retrieve_data
arguments: data_label: D22
type_infered: string
name: retrieve_data
arguments: data_label: D108
type_infered: string
name: retrieve_data
arguments: data_label: D32
type_infered: string
name: retrieve_data
arguments: data_label: D18
type_infered: string

tool: D106: ears.left.r1Main

tool: D45: ears.left.r1Sub

tool: D113: ears.left.scLeft

tool: D83: ears.left.scRight

tool: D44: ears.left.r2Main

tool: D94: ears.left.r2Sub

tool: D105: ears.right.r1Main

tool: D52: ears.right.r1Sub

tool: D93: ears.right.scLeft

tool: D22: ears.right.scRight

tool: D108: ears.right.r2Main

tool: D32: ears.right.r2Sub

tool: D18: directControl

assistant: ```c
int frd_to_hfocus(uint8_t hfocus[8], const char *frd_arg) {
  int i;
  if (strlen(frd_arg) != 12)
    return -1;
  for (i = 0; i < 12; i++)
    if (frd_arg[i] != '0' && frd_arg[i] != '1')
      return -1;
  i = 0;
  mk2r_set_hfocus_value(hfocus, "ears.left.r1Main", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.left.r1Sub", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.left.scLeft", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.left.scRight", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.left.r2Main", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.left.r2Sub", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.right.r1Main", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.right.r1Sub", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.right.scLeft", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.right.scRight", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.right.r2Main", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "ears.right.r2Sub", frd_arg[i++] == '1');
  mk2r_set_hfocus_value(hfocus, "directControl", 1);
  return 0;
}
```