user: What is the c source code of the assembly code below:

```asm
<allocate_all>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %rcx,-0x20(%rbp)
  mov    %r8,-0x28(%rbp)
  mov    %r9,-0x30(%rbp)
  mov    0x60(%rbp),%eax
  imul   0x50(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x60(%rbp),%eax
  imul   %eax,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x10(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x58(%rbp),%eax
  imul   0x48(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x58(%rbp),%eax
  imul   %eax,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x58(%rbp),%eax
  imul   0x50(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x28(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x58(%rbp),%eax
  imul   %eax,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x60(%rbp),%eax
  imul   0x50(%rbp),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x10(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x58(%rbp),%eax
  imul   0x48(%rbp),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x18(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x58(%rbp),%eax
  imul   0x50(%rbp),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x20(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x60(%rbp),%eax
  imul   0x50(%rbp),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x30(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x60(%rbp),%eax
  imul   0x50(%rbp),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x28(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x60(%rbp),%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x38(%rbp),%rax
  mov    %rdx,(%rax)
  mov    0x60(%rbp),%eax
  imul   %eax,%eax
  mov    $0x8,%esi
  mov    %eax,%edi
  call   <calloc@plt>
  mov    %rax,%rdx
  mov    0x40(%rbp),%rax
  mov    %rdx,(%rax)
  nop
  leave
  ret
```

assistant: ```c
void allocate_all(double **m_beta, double **inv_cov_beta, double **m_U, double **inv_cov_U, double **m_V, double **inv_cov_V, double **mean, double **mean_U, double **mean_V, double **sum2, double **sum, double **bb, double **CCt, int N, int M, int K, int D) {
  *m_beta = (double *)malloc(D * M * sizeof(double));
  *inv_cov_beta = (double *)malloc(D * D * sizeof(double));
  *m_U = (double *)malloc(K * N * sizeof(double));
  *inv_cov_U = (double *)malloc(K * K * sizeof(double));
  *m_V = (double *)malloc(K * M * sizeof(double));
  *inv_cov_V = (double *)malloc(K * K * sizeof(double));
  *mean = (double *)calloc(D * M, sizeof(double));
  *mean_U = (double *)calloc(K * N, sizeof(double));
  *mean_V = (double *)calloc(K * M, sizeof(double));
  *sum = (double *)calloc(D * M, sizeof(double));
  *sum2 = (double *)calloc(D * M, sizeof(double));
  *bb = (double *)calloc(D, sizeof(double));
  *CCt = (double *)calloc(D * D, sizeof(double));
}
```