user: 这段汇编代码用C语言表示是什么样的:

```asm
<bridge_thread>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x240,%rsp
  mov    %rdi,-0x238(%rbp)
  mov    %rsi,-0x240(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0xffffffff,-0x220(%rbp)
  movl   $0x0,-0x224(%rbp)
  mov    $0x0,%eax
  call   <bridge_createSocket@plt>
  mov    %eax,-0x220(%rbp)
  cmpl   $0x0,-0x220(%rbp)
  jns    L92
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0xffffffff,%eax
  jmp    L56
L92:
  mov    -0x238(%rbp),%rdx
  mov    -0x220(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <bridge_bindLocalSocketToName@plt>
  test   %rax,%rax
  jns    L109
  mov    -0x220(%rbp),%eax
  mov    %eax,%edi
  call   <close@plt>
  mov    $0xffffffff,%eax
  jmp    L56
L109:
  mov    -0x220(%rbp),%eax
  mov    $0x4,%esi
  mov    %eax,%edi
  call   <listen@plt>
  test   %rax,%rax
  jns    L40
  mov    -0x220(%rbp),%eax
  mov    %eax,%edi
  call   <close@plt>
  mov    $0xffffffff,%eax
  jmp    L56
L60:
  mov    -0x220(%rbp),%eax
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <accept@plt>
  mov    %eax,-0x21c(%rbp)
  cmpl   $0x0,-0x21c(%rbp)
  jns    L55
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x224(%rbp)
L55:
  lea    -0x210(%rbp),%rcx
  mov    -0x21c(%rbp),%eax
  mov    $0x1ff,%edx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <bridge_receiveFromSocket@plt>
  mov    %rax,-0x218(%rbp)
  mov    -0x21c(%rbp),%eax
  mov    %eax,%edi
  call   <close@plt>
  cmpq   $0x0,-0x218(%rbp)
  jle    L40
  lea    -0x210(%rbp),%rax
  lea    D16(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L65
  movl   $0x1,-0x224(%rbp)
L65:
  mov    -0x218(%rbp),%rax
  mov    %eax,%ecx
  lea    -0x210(%rbp),%rax
  mov    -0x240(%rbp),%rdx
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   *%rdx
L40:
  cmpl   $0x0,-0x224(%rbp)
  je     L60
  mov    -0x220(%rbp),%eax
  mov    %eax,%edi
  call   <close@plt>
  mov    $0x0,%eax
L56:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L66
  call   <__stack_chk_fail@plt>
L66:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D4
data_type: string
name: read_data
arguments: data_tag: D8
data_type: string
name: read_data
arguments: data_tag: D16
data_type: string

tool: D4: Local Socket Creation Error


tool: D8: Accept Local Socket Error


tool: D16: EXIT

assistant: ```c
int bridge_thread(const char *domain_name, void (*action)(void *, int)) {
  int localSocket = -1;
  char buffer[512];
  int __exit = 0;
  if ((localSocket = bridge_createSocket()) < 0) {
    printf("Local Socket Creation Error\n");
    return -1;
  }
  if (bridge_bindLocalSocketToName(localSocket, domain_name) < 0) {
    close(localSocket);
    return -1;
  }
  if (listen(localSocket, 4) < 0) {
    close(localSocket);
    return -1;
  }
  while (!__exit) {
    int clientSocket = accept(localSocket, NULL, NULL);
    if (clientSocket < 0) {
      printf("Accept Local Socket Error\n");
      __exit = 1;
    }
    ssize_t recvSize = bridge_receiveFromSocket(clientSocket, buffer, 512 - 1);
    close(clientSocket);
    if (recvSize > 0) {
      if (strcmp(buffer, "EXIT") == 0)
        __exit = 1;
      action(buffer, (int)recvSize);
    }
  }
  close(localSocket);
  return 0;
}
```