user: Translate the below assembly code into C programming language:

```asm
<mm>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %ecx,-0x2c(%rbp)
  mov    %r8d,-0x30(%rbp)
  mov    %r9d,-0x34(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L72
L97:
  movl   $0x0,-0x8(%rbp)
  jmp    L11
L94:
  mov    -0x4(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jge    L101
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  cmpl   $0x3,-0x4(%rbp)
  jle    L59
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movss  (%rax),%xmm2
  mov    -0x20(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
L59:
  cmpl   $0x3,-0x4(%rbp)
  jle    L49
  movl   $0x1,-0xc(%rbp)
  jmp    L42
L30:
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm2
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0xc(%rbp)
L42:
  mov    -0x2c(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jg     L30
  jmp    L49
L101:
  cmpl   $0x3,-0x4(%rbp)
  jle    L49
  movl   $0x0,-0xc(%rbp)
  jmp    L12
L129:
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0xc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm2
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x20(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  addl   $0x1,-0xc(%rbp)
L12:
  mov    -0x2c(%rbp),%eax
  cmp    -0xc(%rbp),%eax
  jg     L129
L49:
  addl   $0x1,-0x8(%rbp)
L11:
  mov    -0x34(%rbp),%eax
  cmp    -0x8(%rbp),%eax
  jg     L94
  addl   $0x1,-0x4(%rbp)
L72:
  mov    -0x30(%rbp),%eax
  add    $0x3,%eax
  cmp    %eax,-0x4(%rbp)
  jle    L97
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void mm(float **A, float **B, float **C, int ambn, int an, int bm) {
  int t6;
  int t4;
  int t2;
  int i;
  int j;
  int n;
  for (t2 = 0; t2 <= an + 3; t2 += 1)
    for (t4 = 0; t4 <= bm - 1; t4 += 1)
      if (t2 + 1 <= an) {
        C[t2][t4] = 0.0f;
        if (4 <= t2)
          C[t2 - 4][t4] += (A[t2 - 4][0] * B[0][t4]);
        if (4 <= t2)
          for (t6 = 1; t6 <= ambn - 1; t6 += 1)
            C[t2 - 4][t4] += (A[t2 - 4][t6] * B[t6][t4]);
      } else if (4 <= t2)
        for (t6 = 0; t6 <= ambn - 1; t6 += 1)
          C[t2 - 4][t4] += (A[t2 - 4][t6] * B[t6][t4]);
}
```