user: What would the C source look like for the assembly code provided here?

```asm
<frd_to_hfocus>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  mov    %rsi,%rdi
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x8,%rsp
  call   <strlen@plt>
  cmp    $0xc,%eax
  jne    L1
  mov    %rbx,%rdx
  lea    0xc(%rbx),%rcx
  nopl   0x0(%rax,%rax,1)
L15:
  movzbl (%rdx),%eax
  sub    $0x30,%eax
  cmp    $0x1,%al
  ja     L1
  add    $0x1,%rdx
  cmp    %rcx,%rdx
  jne    L15
  xor    %edx,%edx
  cmpb   $0x31,(%rbx)
  lea    D111(%rip),%rsi
  mov    %rbp,%rdi
  sete   %dl
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x1(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D86(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x2(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D3(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x3(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D33(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x4(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D50(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x5(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D24(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x6(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D30(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x7(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D25(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x8(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D63(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0x9(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D100(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0xa(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D113(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  xor    %edx,%edx
  cmpb   $0x31,0xb(%rbx)
  mov    %rbp,%rdi
  sete   %dl
  lea    D14(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  mov    %rbp,%rdi
  mov    $0x1,%edx
  lea    D112(%rip),%rsi
  call   <mk2r_set_hfocus_value@plt>
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L1:
  add    $0x8,%rsp
  mov    $0xffffffff,%eax
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D111
type: string
name: disassemble_data
arguments: data_label: D86
type: string
name: disassemble_data
arguments: data_label: D3
type: string
name: disassemble_data
arguments: data_label: D33
type: string
name: disassemble_data
arguments: data_label: D50
type: string
name: disassemble_data
arguments: data_label: D24
type: string
name: disassemble_data
arguments: data_label: D30
type: string
name: disassemble_data
arguments: data_label: D25
type: string
name: disassemble_data
arguments: data_label: D63
type: string
name: disassemble_data
arguments: data_label: D100
type: string
name: disassemble_data
arguments: data_label: D113
type: string
name: disassemble_data
arguments: data_label: D14
type: string
name: disassemble_data
arguments: data_label: D112
type: string

tool: D111: ears.left.r1Main

tool: D86: ears.left.r1Sub

tool: D3: ears.left.scLeft

tool: D33: ears.left.scRight

tool: D50: ears.left.r2Main

tool: D24: ears.left.r2Sub

tool: D30: ears.right.r1Main

tool: D25: ears.right.r1Sub

tool: D63: ears.right.scLeft

tool: D100: ears.right.scRight

tool: D113: ears.right.r2Main

tool: D14: ears.right.r2Sub

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