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

```asm
<matInfinityNormCheckResultGMSP>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %esi,-0x3c(%rbp)
  mov    %edx,-0x40(%rbp)
  mov    %rcx,-0x48(%rbp)
  movl   $0x0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x24(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  D3(%rip),%xmm0
  movss  %xmm0,-0x14(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x0,-0x30(%rbp)
  jmp    L84
L108:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  movl   $0x0,-0x2c(%rbp)
  jmp    L10
L78:
  mov    -0x30(%rbp),%eax
  imul   -0x40(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  movss  -0x20(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x20(%rbp)
  addl   $0x1,-0x2c(%rbp)
L10:
  mov    -0x2c(%rbp),%eax
  cmp    -0x40(%rbp),%eax
  jl     L78
  movss  -0x20(%rbp),%xmm0
  comiss -0x24(%rbp),%xmm0
  jbe    L28
  movss  -0x20(%rbp),%xmm0
  movss  %xmm0,-0x24(%rbp)
L28:
  addl   $0x1,-0x30(%rbp)
L84:
  mov    -0x30(%rbp),%eax
  cmp    -0x3c(%rbp),%eax
  jl     L108
  mov    -0x24(%rbp),%eax
  movd   %eax,%xmm0
  call   <fabs@plt>
  movd   %xmm0,%ebx
  mov    -0x48(%rbp),%rax
  mov    (%rax),%eax
  movd   %eax,%xmm0
  call   <fabs@plt>
  movd   %ebx,%xmm2
  comiss %xmm0,%xmm2
  jbe    L14
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm1
  movss  -0x24(%rbp),%xmm0
  subss  %xmm1,%xmm0
  divss  -0x24(%rbp),%xmm0
  movd   %xmm0,%eax
  movd   %eax,%xmm0
  call   <fabs@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x1c(%rbp)
  jmp    L33
L14:
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm0
  subss  -0x24(%rbp),%xmm0
  mov    -0x48(%rbp),%rax
  movss  (%rax),%xmm1
  divss  %xmm1,%xmm0
  movd   %xmm0,%eax
  movd   %eax,%xmm0
  call   <fabs@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x1c(%rbp)
L33:
  movss  -0x1c(%rbp),%xmm0
  comiss -0x14(%rbp),%xmm0
  jbe    L5
  pxor   %xmm0,%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  jp     L54
  pxor   %xmm0,%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  je     L5
L54:
  movss  -0x1c(%rbp),%xmm0
  comiss -0x18(%rbp),%xmm0
  jbe    L5
  movss  -0x1c(%rbp),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x28(%rbp)
L5:
  cmpl   $0x1,-0x28(%rbp)
  jne    L23
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  pxor   %xmm3,%xmm3
  cvtss2sd -0x14(%rbp),%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm4,%xmm4
  cvtss2sd -0x18(%rbp),%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  lea    D12(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  jmp    L111
L23:
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L111:
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D3
type_infered: byte[4]
name: read_data
arguments: tag: D41
type_infered: string
name: read_data
arguments: tag: D24
type_infered: string
name: read_data
arguments: tag: D12
type_infered: string
name: read_data
arguments: tag: D47
type_infered: string

tool: {"D3": [0x77,0xcc,0x2b,0x32]}

tool: D41:  
 		 Results verfication : Failed

tool: D24:  
 		 Considered machine precision : %e


tool: D12:  
 		 Relative Error                  : %e


tool: D47: 
 
		Results verfication : Success


assistant: ```c
int matInfinityNormCheckResultGMSP(float *h_Mat, int rows, int cols, float *cal_norm) {
  int currRow, iCol, flag = 0;
  float temp_norm = 0.0f, myRowSum = 0.0f;
  float eps = 1.0e-8f;
  float relativeError = 0.0f;
  float errorNorm = 0.0f;
  for (currRow = 0; currRow < rows; currRow++) {
    myRowSum = 0;
    for (iCol = 0; iCol < cols; iCol++)
      myRowSum += h_Mat[currRow * cols + iCol];
    if (temp_norm < myRowSum)
      temp_norm = myRowSum;
  }
  if (fabs(temp_norm) > fabs(*cal_norm))
    relativeError = fabs((temp_norm - *cal_norm) / temp_norm);
  else
    relativeError = fabs((*cal_norm - temp_norm) / *cal_norm);
  if (relativeError > eps && relativeError != 0.0e+00) {
    if (errorNorm < relativeError) {
      errorNorm = relativeError;
      flag = 1;
    }
  }
  if (flag == 1) {
    printf(" \n \t\t Results verfication : Failed\n");
    printf(" \n \t\t Considered machine precision : %e\n", eps);
    printf(" \n \t\t Relative Error                  : %e\n", errorNorm);
  } else {
    printf("\n \n\t\tResults verfication : Success\n\n");
  }
}
```