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

```asm
<Send_KeyBindings>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%eax
  call   <trap_Key_GetCatcher@plt>
  test   %rax,%rax
  jne    L179
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D169(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L16
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D362(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L16
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D337(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L16:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D399(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L6
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D207(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L6
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L6:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D101(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L47
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D310(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L47
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D308(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L47:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D331(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L153
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L153
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L153:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D159(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L17
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D277(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L17
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D299(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L17:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D382(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L69
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D164(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L69
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D218(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L69:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D146(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L149
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D285(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L149
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D249(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
L149:
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D333(%rip),%rax
  mov    %rax,%rdi
  call   <Controls_GetKeyBindings@plt>
  mov    -0x18(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L83
  mov    -0x18(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D241(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0xffffffff,%eax
  je     L83
  mov    -0x14(%rbp),%edx
  lea    -0xd(%rbp),%rax
  mov    %edx,%ecx
  lea    D103(%rip),%rdx
  mov    $0x5,%esi
  mov    %rax,%rdi
  call   <Com_sprintf@plt>
  lea    -0xd(%rbp),%rax
  mov    %rax,%rsi
  lea    D161(%rip),%rax
  mov    %rax,%rdi
  call   <trap_Cvar_Set@plt>
  jmp    L83
L179:
  nop
L83:
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L167
  call   <__stack_chk_fail@plt>
L167:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D169
type_guessed: string
name: disassemble_data
arguments: data_label: D103
type_guessed: string
name: disassemble_data
arguments: data_label: D362
type_guessed: string
name: disassemble_data
arguments: data_label: D337
type_guessed: string
name: disassemble_data
arguments: data_label: D399
type_guessed: string
name: disassemble_data
arguments: data_label: D207
type_guessed: string
name: disassemble_data
arguments: data_label: D16
type_guessed: string
name: disassemble_data
arguments: data_label: D101
type_guessed: string
name: disassemble_data
arguments: data_label: D310
type_guessed: string
name: disassemble_data
arguments: data_label: D308
type_guessed: string
name: disassemble_data
arguments: data_label: D331
type_guessed: string
name: disassemble_data
arguments: data_label: D157
type_guessed: string
name: disassemble_data
arguments: data_label: D70
type_guessed: string
name: disassemble_data
arguments: data_label: D159
type_guessed: string
name: disassemble_data
arguments: data_label: D277
type_guessed: string
name: disassemble_data
arguments: data_label: D299
type_guessed: string
name: disassemble_data
arguments: data_label: D382
type_guessed: string
name: disassemble_data
arguments: data_label: D164
type_guessed: string
name: disassemble_data
arguments: data_label: D218
type_guessed: string
name: disassemble_data
arguments: data_label: D146
type_guessed: string
name: disassemble_data
arguments: data_label: D285
type_guessed: string
name: disassemble_data
arguments: data_label: D249
type_guessed: string
name: disassemble_data
arguments: data_label: D333
type_guessed: string
name: disassemble_data
arguments: data_label: D241
type_guessed: string
name: disassemble_data
arguments: data_label: D161
type_guessed: string

tool: D169: +attack

tool: D103: %i

tool: D362: cl_button_attack1

tool: D337: cl_button_attack2

tool: D399: +button6

tool: D207: cl_button_altattack1

tool: D16: cl_button_altattack2

tool: D101: +forward

tool: D310: cl_button_forward1

tool: D308: cl_button_forward2

tool: D331: +back

tool: D157: cl_button_back1

tool: D70: cl_button_back2

tool: D159: +moveleft

tool: D277: cl_button_moveleft1

tool: D299: cl_button_moveleft2

tool: D382: +moveright

tool: D164: cl_button_moveright1

tool: D218: cl_button_moveright2

tool: D146: +left

tool: D285: cl_button_turnleft1

tool: D249: cl_button_turnleft2

tool: D333: +right

tool: D241: cl_button_turnright1

tool: D161: cl_button_turnright2

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