user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<Send_KeyBindings>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  call   <trap_Key_GetCatcher@plt>
  test   %rax,%rax
  je     L39
L56:
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L89
  add    $0x20,%rsp
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopl   (%rax)
L39:
  lea    0x8(%rsp),%rbp
  lea    D267(%rip),%rdi
  mov    %rbp,%rsi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L40
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D291(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L101
L40:
  mov    %rbp,%rsi
  lea    D97(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L165
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D290(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L126
L165:
  mov    %rbp,%rsi
  lea    D188(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L225
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D10(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L100
L225:
  mov    %rbp,%rsi
  lea    D164(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L6
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D148(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L173
L6:
  mov    %rbp,%rsi
  lea    D81(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L245
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D30(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L199
L245:
  mov    %rbp,%rsi
  lea    D120(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L228
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D117(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L69
L228:
  mov    %rbp,%rsi
  lea    D229(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L49
  lea    0x13(%rsp),%r12
  lea    D168(%rip),%r13
  mov    $0x5,%esi
  mov    %r13,%rdx
  mov    %r12,%rdi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D180(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  jne    L237
L49:
  mov    %rbp,%rsi
  lea    D101(%rip),%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    0x8(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L56
  lea    0x13(%rsp),%rbp
  lea    D168(%rip),%r12
  mov    $0x5,%esi
  mov    %r12,%rdx
  mov    %rbp,%rdi
  call   <Com_sprintf@plt>
  mov    %rbp,%rsi
  lea    D182(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  mov    0xc(%rsp),%ecx
  cmp    $0xffffffff,%ecx
  je     L56
  mov    %rbp,%rdi
  mov    %r12,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %rbp,%rsi
  lea    D39(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L56
  nopl   0x0(%rax)
L237:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D31(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L49
  nopl   0x0(%rax)
L69:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D88(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L228
  nopl   0x0(%rax)
L199:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D108(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L245
  nopl   0x0(%rax)
L173:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D116(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L6
  nopl   0x0(%rax)
L100:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D34(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L225
  nopl   0x0(%rax)
L126:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D15(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L165
  nopl   0x0(%rax)
L101:
  mov    %r12,%rdi
  mov    %r13,%rdx
  mov    $0x5,%esi
  call   <Com_sprintf@plt>
  mov    %r12,%rsi
  lea    D255(%rip),%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L40
L89:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D267
type_infered: string
name: extract_symbolic_data
arguments: data_label: D168
type_infered: string
name: extract_symbolic_data
arguments: data_label: D291
type_infered: string
name: extract_symbolic_data
arguments: data_label: D97
type_infered: string
name: extract_symbolic_data
arguments: data_label: D290
type_infered: string
name: extract_symbolic_data
arguments: data_label: D188
type_infered: string
name: extract_symbolic_data
arguments: data_label: D10
type_infered: string
name: extract_symbolic_data
arguments: data_label: D164
type_infered: string
name: extract_symbolic_data
arguments: data_label: D148
type_infered: string
name: extract_symbolic_data
arguments: data_label: D81
type_infered: string
name: extract_symbolic_data
arguments: data_label: D30
type_infered: string
name: extract_symbolic_data
arguments: data_label: D120
type_infered: string
name: extract_symbolic_data
arguments: data_label: D117
type_infered: string
name: extract_symbolic_data
arguments: data_label: D229
type_infered: string
name: extract_symbolic_data
arguments: data_label: D180
type_infered: string
name: extract_symbolic_data
arguments: data_label: D101
type_infered: string
name: extract_symbolic_data
arguments: data_label: D182
type_infered: string
name: extract_symbolic_data
arguments: data_label: D39
type_infered: string
name: extract_symbolic_data
arguments: data_label: D31
type_infered: string
name: extract_symbolic_data
arguments: data_label: D88
type_infered: string
name: extract_symbolic_data
arguments: data_label: D108
type_infered: string
name: extract_symbolic_data
arguments: data_label: D116
type_infered: string
name: extract_symbolic_data
arguments: data_label: D34
type_infered: string
name: extract_symbolic_data
arguments: data_label: D15
type_infered: string
name: extract_symbolic_data
arguments: data_label: D255
type_infered: string

tool: D267: +attack

tool: D168: %i

tool: D291: cl_button_attack1

tool: D97: +button6

tool: D290: cl_button_altattack1

tool: D188: +forward

tool: D10: cl_button_forward1

tool: D164: +back

tool: D148: cl_button_back1

tool: D81: +moveleft

tool: D30: cl_button_moveleft1

tool: D120: +moveright

tool: D117: cl_button_moveright1

tool: D229: +left

tool: D180: cl_button_turnleft1

tool: D101: +right

tool: D182: cl_button_turnright1

tool: D39: cl_button_turnright2

tool: D31: cl_button_turnleft2

tool: D88: cl_button_moveright2

tool: D108: cl_button_moveleft2

tool: D116: cl_button_back2

tool: D34: cl_button_forward2

tool: D15: cl_button_altattack2

tool: D255: cl_button_attack2

assistant: ```c
void Send_KeyBindings(void) {
  int keys[2];
  char key[5];
  if (trap_Key_GetCatcher())
    return;
  Controls_GetKeyBindings("+attack", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_attack1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_attack2", key);
    }
  }
  Controls_GetKeyBindings("+button6", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_altattack1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_altattack2", key);
    }
  }
  Controls_GetKeyBindings("+forward", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_forward1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_forward2", key);
    }
  }
  Controls_GetKeyBindings("+back", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_back1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_back2", key);
    }
  }
  Controls_GetKeyBindings("+moveleft", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_moveleft1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_moveleft2", key);
    }
  }
  Controls_GetKeyBindings("+moveright", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_moveright1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_moveright2", key);
    }
  }
  Controls_GetKeyBindings("+left", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_turnleft1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_turnleft2", key);
    }
  }
  Controls_GetKeyBindings("+right", keys);
  if (keys[0] != -1) {
    Com_sprintf(key, sizeof(key), "%i", keys[0]);
    trap_Cvar_Set("cl_button_turnright1", key);
    if (keys[1] != -1) {
      Com_sprintf(key, sizeof(key), "%i", keys[1]);
      trap_Cvar_Set("cl_button_turnright2", key);
    }
  }
}
```