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

```asm
<standard_condition_report>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x148,%rsp
  mov    %rcx,-0x148(%rbp)
  mov    %r8,-0x150(%rbp)
  mov    %r9,-0x158(%rbp)
  mov    0x10(%rbp),%r15
  mov    0x18(%rbp),%rax
  mov    %rax,-0x160(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0x168(%rbp)
  mov    0x28(%rbp),%r14
  mov    0x30(%rbp),%r13
  mov    0x38(%rbp),%r12
  mov    %fs:0x28,%rax
  mov    %rax,-0x38(%rbp)
  xor    %eax,%eax
  mov    %edi,-0x140(%rbp)
  mov    0x40(%rbp),%eax
  mov    %eax,-0x13c(%rbp)
  mov    %esi,-0x138(%rbp)
  movsd  %xmm0,-0x120(%rbp)
  movsd  %xmm1,-0x118(%rbp)
  movsd  %xmm2,-0x110(%rbp)
  test   %esi,%esi
  je     L83
  cmp    $0x30,%esi
  jg     L4
  mov    %esi,%edi
  mov    $0x0,%eax
  test   %esi,%esi
  jle    L151
L125:
  movsbl (%rdx,%rax,1),%ecx
  mov    %ecx,-0x100(%rbp,%rax,4)
  add    $0x1,%rax
  cmp    %rdi,%rax
  jne    L125
L151:
  lea    -0x120(%rbp),%rcx
  lea    -0x100(%rbp),%rdx
  lea    -0x140(%rbp),%rsi
  mov    $0x0,%r8d
  mov    $0x398,%edi
  call   <_ada_use_c2phc@plt>
  mov    %eax,%edx
  mov    $0x0,%eax
L191:
  mov    -0x100(%rbp,%rax,1),%ecx
  mov    %ecx,(%r14,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L191
  mov    $0x0,%eax
  lea    -0xc0(%rbp),%rsi
L192:
  mov    (%rsi,%rax,1),%ecx
  mov    %ecx,0x0(%r13,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L192
  mov    $0x0,%eax
  lea    -0x80(%rbp),%rsi
L145:
  mov    (%rsi,%rax,1),%ecx
  mov    %ecx,(%r12,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L145
  jmp    L64
L83:
  lea    -0x120(%rbp),%rcx
  lea    -0x100(%rbp),%rdx
  lea    -0x140(%rbp),%rsi
  mov    $0x0,%r8d
  mov    $0x398,%edi
  call   <_ada_use_c2phc@plt>
  mov    %eax,%edx
  mov    $0x0,%eax
L53:
  mov    -0x100(%rbp,%rax,1),%ecx
  mov    %ecx,(%r14,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L53
  mov    $0x0,%eax
  lea    -0xc0(%rbp),%rsi
L187:
  mov    (%rsi,%rax,1),%ecx
  mov    %ecx,0x0(%r13,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L187
  mov    $0x0,%eax
  lea    -0x80(%rbp),%rsi
L175:
  mov    (%rsi,%rax,1),%ecx
  mov    %ecx,(%r12,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L175
  jmp    L64
L4:
  mov    %rsp,-0x170(%rbp)
  movslq %esi,%rax
  lea    0xf(,%rax,4),%rax
  mov    %rax,%rdi
  and    $0xfffffffffffffff0,%rdi
  and    $0xfffffffffffff000,%rax
  mov    %rsp,%rcx
  sub    %rax,%rcx
L33:
  cmp    %rcx,%rsp
  je     L111
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L33
L111:
  mov    %rdi,%rax
  and    $0xfff,%eax
  sub    %rax,%rsp
  test   %rax,%rax
  je     L59
  orq    $0x0,-0x8(%rsp,%rax,1)
L59:
  mov    %rsp,%rbx
  mov    %esi,%esi
  mov    $0x0,%eax
L184:
  movsbl (%rdx,%rax,1),%ecx
  mov    %ecx,(%rbx,%rax,4)
  add    $0x1,%rax
  cmp    %rsi,%rax
  jne    L184
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rsi
  mov    $0x0,%r8d
  mov    %rbx,%rdx
  mov    $0x398,%edi
  call   <_ada_use_c2phc@plt>
  mov    %eax,%edx
  mov    $0x0,%eax
L138:
  mov    (%rbx,%rax,1),%ecx
  mov    %ecx,(%r14,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L138
  mov    $0x0,%eax
L174:
  mov    0x40(%rbx,%rax,1),%ecx
  mov    %ecx,0x0(%r13,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L174
  mov    $0x0,%eax
L136:
  mov    0x80(%rbx,%rax,1),%ecx
  mov    %ecx,(%r12,%rax,1)
  add    $0x4,%rax
  cmp    $0x40,%rax
  jne    L136
  mov    -0x170(%rbp),%rsp
L64:
  mov    -0x140(%rbp),%eax
  mov    -0x148(%rbp),%rdi
  mov    %eax,(%rdi)
  mov    -0x13c(%rbp),%eax
  mov    -0x150(%rbp),%rdi
  mov    %eax,(%rdi)
  mov    -0x138(%rbp),%eax
  mov    -0x158(%rbp),%rdi
  mov    %eax,(%rdi)
  mov    -0x134(%rbp),%eax
  mov    %eax,(%r15)
  mov    -0x130(%rbp),%eax
  mov    -0x160(%rbp),%rdi
  mov    %eax,(%rdi)
  mov    -0x12c(%rbp),%eax
  mov    -0x168(%rbp),%rdi
  mov    %eax,(%rdi)
  mov    -0x38(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L134
  mov    %edx,%eax
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
L134:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int standard_condition_report(int maxit, double tolres, double tolerr, double tolsing, int nbc, char *name, int *cntfail, int *cntreal, int *cntcmplx, int *cntregu, int *cntsing, int *cntclus, int *t_err, int *t_rco, int *t_res, int verbose) {
  int fail, idx;
  int a[6];
  double c[3];
  a[0] = maxit;
  a[1] = verbose;
  a[2] = nbc;
  c[0] = tolres;
  c[1] = tolerr;
  c[2] = tolsing;
  if (nbc == 0) {
    int b[48];
    fail = _ada_use_c2phc(920, a, b, c, 0);
    idx = 0;
    for (int i = 0; i < 16; i++)
      t_err[i] = b[idx++];
    for (int i = 0; i < 16; i++)
      t_rco[i] = b[idx++];
    for (int i = 0; i < 16; i++)
      t_res[i] = b[idx++];
  } else if (nbc > 48) {
    int b[nbc];
    for (int i = 0; i < nbc; i++)
      b[i] = (int)name[i];
    fail = _ada_use_c2phc(920, a, b, c, 0);
    idx = 0;
    for (int i = 0; i < 16; i++)
      t_err[i] = b[idx++];
    for (int i = 0; i < 16; i++)
      t_rco[i] = b[idx++];
    for (int i = 0; i < 16; i++)
      t_res[i] = b[idx++];
  } else {
    int b[48];
    for (int i = 0; i < nbc; i++)
      b[i] = (int)name[i];
    fail = _ada_use_c2phc(920, a, b, c, 0);
    idx = 0;
    for (int i = 0; i < 16; i++)
      t_err[i] = b[idx++];
    for (int i = 0; i < 16; i++)
      t_rco[i] = b[idx++];
    for (int i = 0; i < 16; i++)
      t_res[i] = b[idx++];
  }
  *cntfail = a[0];
  *cntreal = a[1];
  *cntcmplx = a[2];
  *cntregu = a[3];
  *cntsing = a[4];
  *cntclus = a[5];
  return fail;
}
```