user: Demonstrate the C code that generates the assembly output below:

```asm
<cc2400_agctst1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,%eax
  mov    %ax,-0x54(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D103(%rip),%r8
  lea    D46(%rip),%rax
  mov    %rax,%rcx
  lea    D76(%rip),%rax
  mov    %rax,%rdx
  mov    $0xf,%esi
  mov    $0xf,%edi
  call   <bits@plt>
  movzwl -0x54(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L34
  lea    D65(%rip),%rax
  jmp    L49
L34:
  lea    D179(%rip),%rax
L49:
  mov    %rax,%r8
  lea    D189(%rip),%rax
  mov    %rax,%rcx
  lea    D160(%rip),%rax
  mov    %rax,%rdx
  mov    $0xe,%esi
  mov    $0xe,%edi
  call   <bits@plt>
  movzwl -0x54(%rbp),%eax
  shr    $0xb,%ax
  movzwl %ax,%eax
  and    $0x7,%eax
  test   %eax,%eax
  jne    L8
  lea    -0x50(%rbp),%rax
  lea    D185(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L10
L8:
  movzwl -0x54(%rbp),%eax
  shr    $0xb,%ax
  movzwl %ax,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  lea    -0x50(%rbp),%rax
  lea    D57(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
L10:
  lea    -0x50(%rbp),%rax
  mov    %rax,%r8
  lea    D189(%rip),%rax
  mov    %rax,%rcx
  lea    D77(%rip),%rax
  mov    %rax,%rdx
  mov    $0xb,%esi
  mov    $0xd,%edi
  call   <bits@plt>
  lea    D103(%rip),%r8
  lea    D189(%rip),%rax
  mov    %rax,%rcx
  lea    D121(%rip),%rax
  mov    %rax,%rdx
  mov    $0xa,%esi
  mov    $0xa,%edi
  call   <bits@plt>
  movzwl -0x54(%rbp),%eax
  shr    $0x6,%ax
  movzwl %ax,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  lea    -0x50(%rbp),%rax
  lea    D12(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%r8
  lea    D189(%rip),%rax
  mov    %rax,%rcx
  lea    D150(%rip),%rax
  mov    %rax,%rdx
  mov    $0x6,%esi
  mov    $0x9,%edi
  call   <bits@plt>
  movzwl -0x54(%rbp),%eax
  shr    $0x2,%ax
  movzwl %ax,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  lea    -0x50(%rbp),%rax
  lea    D12(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%r8
  lea    D189(%rip),%rax
  mov    %rax,%rcx
  lea    D198(%rip),%rax
  mov    %rax,%rdx
  mov    $0x2,%esi
  mov    $0x5,%edi
  call   <bits@plt>
  movzwl -0x54(%rbp),%eax
  and    $0x3,%eax
  mov    %eax,%edx
  lea    -0x50(%rbp),%rax
  lea    D12(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0x50(%rbp),%rax
  mov    %rax,%r8
  lea    D189(%rip),%rax
  mov    %rax,%rcx
  lea    D43(%rip),%rax
  mov    %rax,%rdx
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <bits@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L22
  call   <__stack_chk_fail@plt>
L22:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D103
type: string
name: disassemble_data
arguments: label: D46
type: string
name: disassemble_data
arguments: label: D76
type: string
name: disassemble_data
arguments: label: D65
type: string
name: disassemble_data
arguments: label: D179
type: string
name: disassemble_data
arguments: label: D189
type: string
name: disassemble_data
arguments: label: D160
type: string
name: disassemble_data
arguments: label: D185
type: string
name: disassemble_data
arguments: label: D57
type: string
name: disassemble_data
arguments: label: D77
type: string
name: disassemble_data
arguments: label: D121
type: string
name: disassemble_data
arguments: label: D12
type: string
name: disassemble_data
arguments: label: D150
type: string
name: disassemble_data
arguments: label: D198
type: string
name: disassemble_data
arguments: label: D43
type: string

tool: 

tool: D46: W0

tool: D76: -

tool: D65: -3/-5

tool: D179: -1/-3

tool: D189: RW

tool: D160: AGC_VAR_GAIN_SAT

tool: D185: Disabled

tool: D57: %d * 8 MHz clock cycles

tool: D77: AGC_SETTLE_BLANK_UP

tool: D121: PEAKDET_CUR_BOOST

tool: D12: %d

tool: D150: AGC_MULT_SLOW

tool: D198: AGC_SETTLE_FIXED

tool: D43: AGC_SETTLE_VAR

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);
}
```