user: What would the C source look like for the assembly code provided here?

```asm
<ss_connect_to_unix_host_impl>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %esi,-0x2c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x10(%rbp),%rax
  mov    $0x8,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x3,%eax
  jbe    L26
  mov    D144(%rip),%rax
  movl   $0x0,(%rax)
  mov    $0xffffffff,%eax
  jmp    L12
L26:
  mov    D63(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x10(%rbp),%eax
  mov    -0x28(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <strcpy@plt>
  mov    $0x0,%eax
  call   <Sdeactivate_thread@plt>
  movl   $0x0,-0x20(%rbp)
  movl   $0x0,-0x1c(%rbp)
  mov    D36(%rip),%rax
  mov    (%rax),%ecx
  mov    D63(%rip),%rax
  mov    (%rax),%eax
  mov    $0x0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <socket@plt>
  mov    %eax,-0x18(%rbp)
  cmpl   $0xffffffff,-0x18(%rbp)
  jne    L21
  mov    D144(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0x20(%rbp)
  movl   $0xfffffffe,-0x1c(%rbp)
  jmp    L13
L21:
  mov    D166(%rip),%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fcntl@plt>
  mov    %eax,%edx
  mov    D3(%rip),%rax
  mov    (%rax),%eax
  or     %eax,%edx
  mov    D33(%rip),%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <fcntl@plt>
  cmpl   $0x0,-0x2c(%rbp)
  jne    L13
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <ss_set_fd_non_blocking@plt>
  test   %eax,%eax
  jne    L13
  mov    D144(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <close@plt>
  movl   $0xfffffffe,-0x1c(%rbp)
L13:
  cmpl   $0x0,-0x1c(%rbp)
  jne    L7
L144:
  lea    -0x10(%rbp),%rcx
  mov    -0x18(%rbp),%eax
  mov    $0x8,%edx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <connect@plt>
  mov    %eax,-0x14(%rbp)
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L118
  mov    D144(%rip),%rax
  mov    (%rax),%edx
  mov    D98(%rip),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  je     L144
L118:
  mov    D144(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0x20(%rbp)
  cmpl   $0xffffffff,-0x14(%rbp)
  jne    L7
  mov    D144(%rip),%rax
  mov    (%rax),%edx
  mov    D134(%rip),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  je     L7
  mov    D144(%rip),%rax
  mov    (%rax),%edx
  mov    D40(%rip),%rax
  mov    (%rax),%eax
  cmp    %eax,%edx
  je     L7
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <close@plt>
  movl   $0xfffffffd,-0x1c(%rbp)
L7:
  mov    $0x0,%eax
  call   <Sactivate_thread@plt>
  mov    D144(%rip),%rax
  mov    -0x20(%rbp),%edx
  mov    %edx,(%rax)
  cmpl   $0x0,-0x1c(%rbp)
  je     L113
  mov    -0x1c(%rbp),%eax
  jmp    L12
L113:
  mov    -0x18(%rbp),%eax
L12:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L44
  call   <__stack_chk_fail@plt>
L44:
  leave
  ret
```

assistant: ```c
int ss_connect_to_unix_host_impl(const char *pathname, int blocking) {
  struct sockaddr_un addr;
  memset(&addr, 0, sizeof(addr));
  if (strlen(pathname) >= sizeof(addr.sun_path)) {
    errno = 0;
    return -1;
  }
  addr.sun_family = AF_UNIX;
  strcpy(addr.sun_path, pathname);
  Sdeactivate_thread();
  int saved_errno = 0;
  int err = 0;
  int sock = socket(AF_UNIX, SOCK_STREAM, 0);
  if (sock == -1) {
    saved_errno = errno;
    err = -2;
  } else {
    fcntl(sock, F_SETFD, fcntl(sock, F_GETFD) | FD_CLOEXEC);
    if (!blocking && !(ss_set_fd_non_blocking(sock))) {
      saved_errno = errno;
      close(sock);
      err = -2;
    }
  }
  if (!err) {
    int res;
    do {
      res = connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_un));
    } while (res == -1 && errno == EINTR);
    saved_errno = errno;
    if (res == -1 && errno != EINPROGRESS && errno != EAGAIN) {
      close(sock);
      err = -3;
    }
  }
  Sactivate_thread();
  errno = saved_errno;
  if (err)
    return err;
  return sock;
}
```