user: 请将以下的汇编代码转换成C语言代码：

```asm
<Float4Dim>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  mov    %edx,-0x2c(%rbp)
  mov    %ecx,-0x30(%rbp)
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <ckalloc@plt>
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L133
L139:
  mov    -0x28(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <ckalloc@plt>
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  mov    %rax,(%rdx)
  movl   $0x0,-0x14(%rbp)
  jmp    L136
L102:
  mov    -0x2c(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <ckalloc@plt>
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  mov    %rax,(%rdx)
  movl   $0x0,-0x10(%rbp)
  jmp    L37
L45:
  mov    -0x30(%rbp),%eax
  cltq
  shl    $0x2,%eax
  mov    %eax,%edi
  call   <ckalloc@plt>
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x8(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x10(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  mov    %rax,(%rdx)
  addl   $0x1,-0x10(%rbp)
L37:
  mov    -0x10(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L45
  addl   $0x1,-0x14(%rbp)
L136:
  mov    -0x14(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jl     L102
  addl   $0x1,-0x18(%rbp)
L133:
  mov    -0x18(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L139
  movl   $0x0,-0x18(%rbp)
  jmp    L16
L125:
  movl   $0x0,-0x14(%rbp)
  jmp    L119
L62:
  movl   $0x0,-0x10(%rbp)
  jmp    L101
L6:
  movl   $0x0,-0xc(%rbp)
  jmp    L39
L97:
  mov    -0x18(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x14(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0xc(%rbp)
L39:
  mov    -0xc(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L97
  addl   $0x1,-0x10(%rbp)
L101:
  mov    -0x10(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L6
  addl   $0x1,-0x14(%rbp)
L119:
  mov    -0x14(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jl     L62
  addl   $0x1,-0x18(%rbp)
L16:
  mov    -0x18(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L125
  mov    -0x8(%rbp),%rax
  leave
  ret
```

assistant: ```c
float ****Float4Dim(int M, int N, int K, int L) {
  int m, n, k, l;
  float ****FourDim;
  FourDim = (float ****)ckalloc(M * sizeof(float ***));
  for (m = 0; m < M; m++) {
    FourDim[m] = (float ***)ckalloc(N * sizeof(float **));
    for (n = 0; n < N; n++) {
      FourDim[m][n] = (float **)ckalloc(K * sizeof(float *));
      for (k = 0; k < K; k++)
        FourDim[m][n][k] = (float *)ckalloc(L * sizeof(float));
    }
  }
  for (m = 0; m < M; m++)
    for (n = 0; n < N; n++)
      for (k = 0; k < K; k++)
        for (l = 0; l < L; l++)
          FourDim[m][n][k][l] = 0.0;
  return (FourDim);
}
```