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

```asm
<cc2400_agctst1>:
  endbr64
  push   %r13
  lea    D3(%rip),%r8
  lea    D28(%rip),%rcx
  mov    $0xf,%esi
  push   %r12
  lea    D129(%rip),%rdx
  lea    D4(%rip),%r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  mov    $0xf,%edi
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  call   <bits@plt>
  test   $0x40,%bh
  mov    %r12,%rcx
  mov    $0xe,%esi
  lea    D22(%rip),%rax
  lea    D57(%rip),%r8
  mov    $0xe,%edi
  cmove  %rax,%r8
  lea    D142(%rip),%rdx
  call   <bits@plt>
  mov    %ebx,%edx
  shr    $0xb,%dx
  and    $0x7,%dx
  jne    L14
  mov    %rsp,%rbp
  lea    D87(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcpy@plt>
L26:
  mov    %rbp,%r8
  mov    %r12,%rcx
  mov    $0xb,%esi
  mov    $0xd,%edi
  lea    D119(%rip),%rdx
  lea    D62(%rip),%r13
  call   <bits@plt>
  lea    D3(%rip),%r8
  mov    %r12,%rcx
  lea    D1(%rip),%rdx
  mov    $0xa,%esi
  mov    $0xa,%edi
  call   <bits@plt>
  mov    %ebx,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  shr    $0x6,%dx
  and    $0x7,%edx
  call   <sprintf@plt>
  mov    %rbp,%r8
  mov    %r12,%rcx
  mov    $0x6,%esi
  lea    D148(%rip),%rdx
  mov    $0x9,%edi
  call   <bits@plt>
  mov    %ebx,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  shr    $0x2,%dx
  and    $0x3,%ebx
  and    $0x7,%edx
  call   <sprintf@plt>
  mov    %rbp,%r8
  mov    %r12,%rcx
  mov    $0x2,%esi
  lea    D122(%rip),%rdx
  mov    $0x5,%edi
  call   <bits@plt>
  mov    %ebx,%edx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  xor    %esi,%esi
  mov    %rbp,%r8
  mov    %r12,%rcx
  lea    D8(%rip),%rdx
  mov    $0x1,%edi
  call   <bits@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopw   0x0(%rax,%rax,1)
L14:
  mov    %rsp,%rbp
  movzwl %dx,%edx
  lea    D36(%rip),%rsi
  mov    %rbp,%rdi
  call   <sprintf@plt>
  jmp    L26
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D3
data_type: string
name: unpack_data
arguments: data_tag: D28
data_type: string
name: unpack_data
arguments: data_tag: D129
data_type: string
name: unpack_data
arguments: data_tag: D4
data_type: string
name: unpack_data
arguments: data_tag: D22
data_type: string
name: unpack_data
arguments: data_tag: D57
data_type: string
name: unpack_data
arguments: data_tag: D142
data_type: string
name: unpack_data
arguments: data_tag: D87
data_type: string
name: unpack_data
arguments: data_tag: D119
data_type: string
name: unpack_data
arguments: data_tag: D62
data_type: string
name: unpack_data
arguments: data_tag: D1
data_type: string
name: unpack_data
arguments: data_tag: D148
data_type: string
name: unpack_data
arguments: data_tag: D122
data_type: string
name: unpack_data
arguments: data_tag: D8
data_type: string
name: unpack_data
arguments: data_tag: D36
data_type: string

tool: 

tool: D28: W0

tool: D129: -

tool: D4: RW

tool: D22: -1/-3

tool: D57: -3/-5

tool: D142: AGC_VAR_GAIN_SAT

tool: D87: Disabled

tool: D119: AGC_SETTLE_BLANK_UP

tool: D62: %d

tool: D1: PEAKDET_CUR_BOOST

tool: D148: AGC_MULT_SLOW

tool: D122: AGC_SETTLE_FIXED

tool: D8: AGC_SETTLE_VAR

tool: D36: %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);
}
```