user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<StatMinMaxFloat>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    %rcx,-0x28(%rbp)
  mov    %r8,-0x30(%rbp)
  mov    -0x1c(%rbp),%eax
  cltd
  shr    $0x1f,%edx
  add    %edx,%eax
  and    $0x1,%eax
  sub    %edx,%eax
  cmp    $0x1,%eax
  jne    L29
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  %xmm0,(%rax)
  movl   $0x1,-0x4(%rbp)
  jmp    L50
L29:
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L30
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
  jmp    L3
L30:
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x18(%rbp),%rax
  movss  (%rax),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
L3:
  movl   $0x2,-0x4(%rbp)
L50:
  mov    -0x4(%rbp),%eax
  mov    %eax,-0x8(%rbp)
  jmp    L48
L76:
  mov    -0x8(%rbp),%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L12
  mov    -0x8(%rbp),%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L82
  mov    -0x8(%rbp),%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  %xmm0,(%rax)
L82:
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jbe    L88
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
  jmp    L88
L12:
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm1
  comiss %xmm1,%xmm0
  jbe    L114
  mov    -0x8(%rbp),%eax
  add    $0x1,%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x30(%rbp),%rax
  movss  %xmm0,(%rax)
L114:
  mov    -0x8(%rbp),%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  mov    -0x28(%rbp),%rax
  movss  (%rax),%xmm0
  comiss %xmm1,%xmm0
  jbe    L88
  mov    -0x8(%rbp),%eax
  imul   -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
L88:
  addl   $0x2,-0x8(%rbp)
L48:
  mov    -0x8(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jl     L76
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void StatMinMaxFloat(float a[], int n, int s, float *mina, float *maxa) {
  int i;
  int start;
  if (n % 2 == 1) {
    *maxa = *mina = a[0];
    start = 1;
  } else {
    if (a[0] > a[s]) {
      *maxa = a[0];
      *mina = a[s];
    } else {
      *maxa = a[s];
      *mina = a[0];
    }
    start = 2;
  }
  for (i = start; i < n; i += 2) {
    if (a[i * s] > a[(i + 1) * s]) {
      if (a[i * s] > *maxa)
        *maxa = a[i * s];
      if (a[(i + 1) * s] < *mina)
        *mina = a[(i + 1) * s];
    } else {
      if (a[(i + 1) * s] > *maxa)
        *maxa = a[(i + 1) * s];
      if (a[i * s] < *mina)
        *mina = a[i * s];
    }
  }
}
```