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

```asm
<obex_response_to_string>:
  endbr64
  sub    $0x10,%edi
  cmp    $0x51,%edi
  ja     L4
  lea    D49(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   (%rax)
L4:
  lea    D156(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D182(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D28(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D39(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D123(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D79(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D56(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D0(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D82(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D142(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D186(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D166(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D126(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D53(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D108(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D110(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D22(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D176(%rip),%rax
  ret
```

tool_calls: name: read_data
arguments: tag: D156
datatype: string
name: read_data
arguments: tag: D182
datatype: string
name: read_data
arguments: tag: D28
datatype: string
name: read_data
arguments: tag: D39
datatype: string
name: read_data
arguments: tag: D123
datatype: string
name: read_data
arguments: tag: D79
datatype: string
name: read_data
arguments: tag: D56
datatype: string
name: read_data
arguments: tag: D0
datatype: string
name: read_data
arguments: tag: D82
datatype: string
name: read_data
arguments: tag: D142
datatype: string
name: read_data
arguments: tag: D186
datatype: string
name: read_data
arguments: tag: D166
datatype: string
name: read_data
arguments: tag: D126
datatype: string
name: read_data
arguments: tag: D53
datatype: string
name: read_data
arguments: tag: D108
datatype: string
name: read_data
arguments: tag: D110
datatype: string
name: read_data
arguments: tag: D22
datatype: string
name: read_data
arguments: tag: D176
datatype: string

tool: D156: Unknown response

tool: D182: OK, Success

tool: D28: Created

tool: D39: Accepted

tool: D123: No Content

tool: D79: Bad Request

tool: D56: Unautorized

tool: D0: Payment required

tool: D82: Forbidden

tool: D142: Not found

tool: D186: Method not allowed

tool: D166: Conflict

tool: D126: Internal server error

tool: D53: Not implemented!

tool: D108: Database full

tool: D110: Database locked

tool: D22: Continue

tool: D176: 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";
  }
}
```