user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<get_option_1>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  lea    D39(%rip),%r13
  push   %r12
  lea    D10(%rip),%r12
  push   %rbp
  lea    D27(%rip),%rbp
  push   %rbx
  lea    D29(%rip),%rbx
  sub    $0x18,%rsp
  xchg   %ax,%ax
L24:
  xor    %eax,%eax
  call   <get_key@plt>
  cmp    $0x39,%eax
  ja     L24
  mov    %eax,%eax
  movslq (%rbx,%rax,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  xor    %eax,%eax
  call   <popclear@plt>
  xor    %eax,%eax
  call   <amd64_option@plt>
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10e0 <popclear@plt>
  nopl   0x0(%rax,%rax,1)
  xor    %eax,%eax
  call   <popclear@plt>
  mov    %r13,%rdx
  mov    $0x13,%esi
  mov    $0xb,%edi
  call   <cprint@plt>
  xor    %edx,%edx
  mov    $0x1a,%esi
  mov    $0xb,%edi
  call   <getval@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %eax,%ecx
  call   <change_timing@plt>
  jmp    L24
  nopl   0x0(%rax)
  xor    %eax,%eax
  call   <popclear@plt>
  mov    %r12,%rdx
  mov    $0x13,%esi
  mov    $0xb,%edi
  call   <cprint@plt>
  xor    %edx,%edx
  mov    $0x1a,%esi
  mov    $0xb,%edi
  call   <getval@plt>
  xor    %ecx,%ecx
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %eax,%edx
  call   <change_timing@plt>
  jmp    L24
  nopl   0x0(%rax)
  xor    %eax,%eax
  call   <popclear@plt>
  mov    %rbp,%rdx
  mov    $0x13,%esi
  mov    $0xb,%edi
  call   <cprint@plt>
  xor    %edx,%edx
  mov    $0x1a,%esi
  mov    $0xb,%edi
  call   <getval@plt>
  xor    %ecx,%ecx
  xor    %edx,%edx
  xor    %edi,%edi
  mov    %eax,%esi
  call   <change_timing@plt>
  jmp    L24
  nopl   0x0(%rax)
  xor    %eax,%eax
  call   <popclear@plt>
  mov    %rbp,%rdx
  mov    $0x13,%esi
  mov    $0xb,%edi
  call   <cprint@plt>
  xor    %edx,%edx
  mov    $0x1a,%esi
  mov    $0xb,%edi
  call   <getval@plt>
  mov    %eax,%r14d
  xor    %eax,%eax
  call   <popclear@plt>
  mov    %r12,%rdx
  mov    $0x13,%esi
  mov    $0xb,%edi
  call   <cprint@plt>
  xor    %edx,%edx
  mov    $0x1a,%esi
  mov    $0xb,%edi
  call   <getval@plt>
  mov    %eax,%r15d
  xor    %eax,%eax
  call   <popclear@plt>
  mov    %r13,%rdx
  mov    $0x13,%esi
  mov    $0xb,%edi
  call   <cprint@plt>
  xor    %edx,%edx
  mov    $0x1a,%esi
  mov    $0xb,%edi
  call   <getval@plt>
  mov    %eax,0xc(%rsp)
  xor    %eax,%eax
  call   <popclear@plt>
  mov    0xc(%rsp),%ecx
  mov    %r15d,%edx
  mov    %r14d,%esi
  xor    %edi,%edi
  call   <change_timing@plt>
  jmp    L24
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D39
type_guessed: string
name: retrieve_data
arguments: data_label: D10
type_guessed: string
name: retrieve_data
arguments: data_label: D27
type_guessed: string

tool: D39: tRAS: 

tool: D10: tRP: 

tool: D27: tRCD: 

assistant: ```c
void get_option_1() {
  int rp = 0, rcd = 0, ras = 0, sflag = 0;
  while (!sflag) {
    switch (get_key()) {
    case 2:
      popclear();
      cprint(8 + 3, 11 + 8, "tRCD: ");
      rcd = getval(8 + 3, 11 + 15, 0);
      popclear();
      cprint(8 + 3, 11 + 8, "tRP: ");
      rp = getval(8 + 3, 11 + 15, 0);
      popclear();
      cprint(8 + 3, 11 + 8, "tRAS: ");
      ras = getval(8 + 3, 11 + 15, 0);
      popclear();
      change_timing(0, rcd, rp, ras);
      break;
    case 3:
      popclear();
      cprint(8 + 3, 11 + 8, "tRCD: ");
      rcd = getval(8 + 3, 11 + 15, 0);
      change_timing(0, rcd, 0, 0);
      break;
    case 4:
      popclear();
      cprint(8 + 3, 11 + 8, "tRP: ");
      rp = getval(8 + 3, 11 + 15, 0);
      change_timing(0, 0, rp, 0);
      break;
    case 5:
      popclear();
      cprint(8 + 3, 11 + 8, "tRAS: ");
      ras = getval(8 + 3, 11 + 15, 0);
      change_timing(0, 0, 0, ras);
      break;
    case 6:
      popclear();
      amd64_option();
      sflag++;
      popclear();
      break;
    case 7:
      break;
    case 11:
    case 57:
      sflag++;
      break;
    }
  }
}
```