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

```asm
<cc2400_agctst1>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %edi,%ebx
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  lea    D59(%rip),%r8
  lea    D114(%rip),%rcx
  lea    D112(%rip),%rdx
  mov    $0xf,%esi
  mov    $0xf,%edi
  call   <bits@plt>
  test   $0x40,%bh
  lea    D150(%rip),%r8
  lea    D41(%rip),%rax
  cmove  %rax,%r8
  lea    D107(%rip),%rcx
  lea    D67(%rip),%rdx
  mov    $0xe,%esi
  mov    $0xe,%edi
  call   <bits@plt>
  mov    %ebx,%edx
  shr    $0xb,%dx
  and    $0x7,%dx
  jne    L7
  mov    %rsp,%rdi
  lea    D42(%rip),%rsi
  call   <strcpy@plt>
L8:
  mov    %rsp,%rbp
  mov    %rbp,%r8
  lea    D107(%rip),%r12
  mov    %r12,%rcx
  lea    D113(%rip),%rdx
  mov    $0xb,%esi
  mov    $0xd,%edi
  call   <bits@plt>
  lea    D59(%rip),%r8
  mov    %r12,%rcx
  lea    D143(%rip),%rdx
  mov    $0xa,%esi
  mov    $0xa,%edi
  call   <bits@plt>
  mov    %ebx,%edx
  shr    $0x6,%dx
  and    $0x7,%edx
  lea    D7(%rip),%r13
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%r8
  mov    %r12,%rcx
  lea    D163(%rip),%rdx
  mov    $0x6,%esi
  mov    $0x9,%edi
  call   <bits@plt>
  mov    %ebx,%edx
  shr    $0x2,%dx
  and    $0x7,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%r8
  mov    %r12,%rcx
  lea    D136(%rip),%rdx
  mov    $0x2,%esi
  mov    $0x5,%edi
  call   <bits@plt>
  and    $0x3,%ebx
  mov    %ebx,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  mov    %rbp,%r8
  mov    %r12,%rcx
  lea    D80(%rip),%rdx
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <bits@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L16
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L7:
  movzwl %dx,%edx
  mov    %rsp,%rdi
  lea    D160(%rip),%rsi
  call   <sprintf@plt>
  jmp    L8
L16:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D59
data_type: string
name: retrieve_data
arguments: data_tag: D114
data_type: string
name: retrieve_data
arguments: data_tag: D112
data_type: string
name: retrieve_data
arguments: data_tag: D150
data_type: string
name: retrieve_data
arguments: data_tag: D41
data_type: string
name: retrieve_data
arguments: data_tag: D107
data_type: string
name: retrieve_data
arguments: data_tag: D67
data_type: string
name: retrieve_data
arguments: data_tag: D42
data_type: string
name: retrieve_data
arguments: data_tag: D113
data_type: string
name: retrieve_data
arguments: data_tag: D143
data_type: string
name: retrieve_data
arguments: data_tag: D7
data_type: string
name: retrieve_data
arguments: data_tag: D163
data_type: string
name: retrieve_data
arguments: data_tag: D136
data_type: string
name: retrieve_data
arguments: data_tag: D80
data_type: string
name: retrieve_data
arguments: data_tag: D160
data_type: string

tool: 

tool: D114: W0

tool: D112: -

tool: D150: -3/-5

tool: D41: -1/-3

tool: D107: RW

tool: D67: AGC_VAR_GAIN_SAT

tool: D42: Disabled

tool: D113: AGC_SETTLE_BLANK_UP

tool: D143: PEAKDET_CUR_BOOST

tool: D7: %d

tool: D163: AGC_MULT_SLOW

tool: D136: AGC_SETTLE_FIXED

tool: D80: AGC_SETTLE_VAR

tool: D160: %d * 8 MHz clock cycles

assistant: ```c
void cc2400_agctst1(unsigned short v) {
  char description[64];
  bits(15, 15, "-", "W0", "");
  bits(14, 14, "AGC_VAR_GAIN_SAT", "RW", (v & 0x4000) ? "-3/-5" : "-1/-3");
  if (((v >> 11) & 7) == 0)
    strcpy(description, "Disabled");
  else
    sprintf(description, "%d * 8 MHz clock cycles", (v >> 11) & 7);
  bits(13, 11, "AGC_SETTLE_BLANK_UP", "RW", description);
  bits(10, 10, "PEAKDET_CUR_BOOST", "RW", "");
  sprintf(description, "%d", (v >> 6) & 7);
  bits(9, 6, "AGC_MULT_SLOW", "RW", description);
  sprintf(description, "%d", (v >> 2) & 7);
  bits(5, 2, "AGC_SETTLE_FIXED", "RW", description);
  sprintf(description, "%d", v & 3);
  bits(1, 0, "AGC_SETTLE_VAR", "RW", description);
}
```