user: 请从给定的汇编指令推导出C源代码:

```asm
<obex_response_to_string>:
  endbr64
  sub    $0x10,%edi
  cmp    $0x51,%edi
  ja     L7
  lea    D47(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   (%rax)
L7:
  lea    D62(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D31(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D67(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D44(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D7(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D119(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D41(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D171(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D164(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D124(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D145(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D1(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D16(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D30(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D56(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D117(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D168(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D0(%rip),%rax
  ret
```

tool_calls: name: disassemble_data
arguments: label: D62
datatype: string
name: disassemble_data
arguments: label: D31
datatype: string
name: disassemble_data
arguments: label: D67
datatype: string
name: disassemble_data
arguments: label: D44
datatype: string
name: disassemble_data
arguments: label: D7
datatype: string
name: disassemble_data
arguments: label: D119
datatype: string
name: disassemble_data
arguments: label: D41
datatype: string
name: disassemble_data
arguments: label: D171
datatype: string
name: disassemble_data
arguments: label: D164
datatype: string
name: disassemble_data
arguments: label: D124
datatype: string
name: disassemble_data
arguments: label: D145
datatype: string
name: disassemble_data
arguments: label: D1
datatype: string
name: disassemble_data
arguments: label: D16
datatype: string
name: disassemble_data
arguments: label: D30
datatype: string
name: disassemble_data
arguments: label: D56
datatype: string
name: disassemble_data
arguments: label: D117
datatype: string
name: disassemble_data
arguments: label: D168
datatype: string
name: disassemble_data
arguments: label: D0
datatype: string

tool: D62: Unknown response

tool: D31: OK, Success

tool: D67: Created

tool: D44: Accepted

tool: D7: No Content

tool: D119: Bad Request

tool: D41: Unautorized

tool: D171: Payment required

tool: D164: Forbidden

tool: D124: Not found

tool: D145: Method not allowed

tool: D1: Conflict

tool: D16: Internal server error

tool: D30: Not implemented!

tool: D56: Database full

tool: D117: Database locked

tool: D168: Continue

tool: D0: Switching protocols

assistant: ```c
char *obex_response_to_string(int rsp) {
  switch (rsp) {
  case 0x10:
    return "Continue";
  case 0x11:
    return "Switching protocols";
  case 0x20:
    return "OK, Success";
  case 0x21:
    return "Created";
  case 0x22:
    return "Accepted";
  case 0x24:
    return "No Content";
  case 0x40:
    return "Bad Request";
  case 0x41:
    return "Unautorized";
  case 0x42:
    return "Payment required";
  case 0x43:
    return "Forbidden";
  case 0x44:
    return "Not found";
  case 0x45:
    return "Method not allowed";
  case 0x49:
    return "Conflict";
  case 0x50:
    return "Internal server error";
  case 0x51:
    return "Not implemented!";
  case 0x60:
    return "Database full";
  case 0x61:
    return "Database locked";
  default:
    return "Unknown response";
  }
}
```