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

```asm
<wsSend>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %edi,-0x44(%rbp)
  mov    %esi,-0x48(%rbp)
  mov    %rdx,-0x50(%rbp)
  mov    %rcx,-0x58(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0x48(%rbp),%eax
  and    $0xf,%eax
  or     $0xffffff80,%eax
  mov    %al,-0x31(%rbp)
  lea    -0x31(%rbp),%rsi
  mov    -0x44(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x1,%edx
  mov    %eax,%edi
  call   <send@plt>
  cmp    $0x1,%eax
  je     L79
  mov    $0x0,%eax
  jmp    L74
L79:
  cmpq   $0x7d,-0x58(%rbp)
  ja     L100
  mov    -0x58(%rbp),%rax
  mov    %al,-0x31(%rbp)
  lea    -0x31(%rbp),%rsi
  mov    -0x44(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x1,%edx
  mov    %eax,%edi
  call   <send@plt>
  cmp    $0x1,%eax
  je     L53
  mov    $0x0,%eax
  jmp    L74
L100:
  cmpq   $0xfffe,-0x58(%rbp)
  ja     L51
  movl   $0x7e,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x8,%rax
  movzbl %al,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x58(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,-0x28(%rbp)
  lea    -0x30(%rbp),%rsi
  mov    -0x44(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x3,%edx
  mov    %eax,%edi
  call   <send@plt>
  cmp    $0x3,%eax
  je     L53
  mov    $0x0,%eax
  jmp    L74
L51:
  movl   $0x7f,-0x30(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x38,%rax
  mov    %eax,-0x2c(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x30,%rax
  movzbl %al,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x28,%rax
  movzbl %al,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x20,%rax
  movzbl %al,%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x18,%rax
  movzbl %al,%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x10,%rax
  movzbl %al,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x58(%rbp),%rax
  shr    $0x8,%rax
  movzbl %al,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x58(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,-0x10(%rbp)
  lea    -0x30(%rbp),%rsi
  mov    -0x44(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x9,%edx
  mov    %eax,%edi
  call   <send@plt>
  cmp    $0x9,%eax
  je     L53
  mov    $0x0,%eax
  jmp    L74
L53:
  mov    -0x58(%rbp),%rdx
  mov    -0x50(%rbp),%rsi
  mov    -0x44(%rbp),%eax
  mov    $0x0,%ecx
  mov    %eax,%edi
  call   <send@plt>
  mov    -0x58(%rbp),%rdx
  cmp    %edx,%eax
  je     L11
  mov    $0x0,%eax
  jmp    L74
L11:
  mov    $0x1,%eax
L74:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L32
  call   <__stack_chk_fail@plt>
L32:
  leave
  ret
```

assistant: ```c
int wsSend(int sockfd, int type, const void *buf, size_t len) {
  char b = 0x80 | (0x0f & type);
  if (send(sockfd, &b, 1, 0) != 1) {
    return 0;
  }
  if (len < 126) {
    b = (char)len;
    if (send(sockfd, &b, 1, 0) != 1) {
      return 0;
    }
  } else if (len < 65535) {
    uint8_t l[3] = {126, (len >> 8) & 0xff, len & 0xff};
    if (send(sockfd, l, 3, 0) != 3) {
      return 0;
    }
  } else {
    uint8_t l[9] = {127, (len >> 56) & 0xff, (len >> 48) & 0xff, (len >> 40) & 0xff, (len >> 32) & 0xff, (len >> 24) & 0xff, (len >> 16) & 0xff, (len >> 8) & 0xff, (len >> 0) & 0xff};
    if (send(sockfd, l, 9, 0) != 9) {
      return 0;
    }
  }
  if (send(sockfd, buf, len, 0) != (ssize_t)len) {
    return 0;
  }
  return 1;
}
```