user: Please show me the C implementation that matches the assembly code listed below:

```asm
<MatriceTrasposta>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  movl   $0x0,-0x10(%rbp)
  movl   $0x0,-0x18(%rbp)
  movl   $0x0,-0x14(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0xc(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  movl   $0x1,-0x10(%rbp)
  mov    -0x10(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <InserimentoNumeroRigheEColonne@plt>
  mov    -0x10(%rbp),%edx
  mov    -0x28(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <InserimentoElementiMatrice@plt>
  mov    -0x4(%rbp),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <LetturaElemento@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0xc(%rbp)
  addl   $0x1,-0x4(%rbp)
  mov    -0xc(%rbp),%esi
  mov    -0x4(%rbp),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x30(%rbp),%rax
  movd   %esi,%xmm0
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <ScrivereElemento@plt>
  mov    -0x4(%rbp),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <LetturaElemento@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0xc(%rbp)
  movl   $0x0,-0x4(%rbp)
  mov    -0xc(%rbp),%esi
  mov    -0x4(%rbp),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x30(%rbp),%rax
  movd   %esi,%xmm0
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <ScrivereElemento@plt>
  movl   $0x0,-0x18(%rbp)
  jmp    L29
L3:
  movl   $0x0,-0x14(%rbp)
  jmp    L23
L11:
  mov    -0x14(%rbp),%eax
  lea    0x2(%rax),%edx
  mov    -0x18(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <LetturaElemento@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0xc(%rbp)
  mov    -0x18(%rbp),%eax
  lea    0x2(%rax),%esi
  mov    -0xc(%rbp),%edx
  mov    -0x14(%rbp),%ecx
  mov    -0x30(%rbp),%rax
  movd   %edx,%xmm0
  mov    %esi,%edx
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <ScrivereElemento@plt>
  addl   $0x1,-0x14(%rbp)
L23:
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <LetturaElemento@plt>
  cmp    %eax,-0x14(%rbp)
  jl     L11
  addl   $0x1,-0x18(%rbp)
L29:
  mov    -0x4(%rbp),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x28(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <LetturaElemento@plt>
  cmp    %eax,-0x18(%rbp)
  jl     L3
  nop
  leave
  ret
```

assistant: ```c
void MatriceTrasposta(float matrice[][100], float matrice3[][100]) {
  int n = 0;
  int i = 0;
  int j = 0;
  float valore = 0;
  int righe = 0;
  int colonne = 0;
  n = 1;
  InserimentoNumeroRigheEColonne(matrice, n);
  InserimentoElementiMatrice(matrice, n);
  valore = LetturaElemento(matrice, righe, colonne);
  colonne++;
  ScrivereElemento(matrice3, righe, colonne, valore);
  valore = LetturaElemento(matrice, righe, colonne);
  colonne = 0;
  ScrivereElemento(matrice3, righe, colonne, valore);
  i = 0;
  while (i < LetturaElemento(matrice, righe, colonne)) {
    j = 0;
    while (j < LetturaElemento(matrice, righe, colonne + 1)) {
      valore = LetturaElemento(matrice, i, j + 2);
      ScrivereElemento(matrice3, j, i + 2, valore);
      j++;
    }
    i++;
  }
  return;
}
```