user: 下面的汇编指令对应的C源代码是什么:

```asm
<standard_condition_report>:
  endbr64
  push   %rbp
  movslq %esi,%rax
  mov    %rdx,%rsi
  mov    %rsp,%rbp
  push   %r15
  mov    %r8,%r15
  push   %r14
  mov    %r9,%r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x158,%rsp
  mov    0x18(%rbp),%rbx
  mov    0x10(%rbp),%r11
  mov    %rcx,-0x148(%rbp)
  mov    0x28(%rbp),%r13
  mov    0x30(%rbp),%r12
  mov    %rbx,-0x150(%rbp)
  mov    0x20(%rbp),%rbx
  mov    %rbx,-0x158(%rbp)
  mov    0x38(%rbp),%rbx
  mov    %fs:0x28,%rdx
  mov    %rdx,-0x38(%rbp)
  xor    %edx,%edx
  mov    0x40(%rbp),%edx
  mov    %edi,-0x140(%rbp)
  mov    %eax,-0x138(%rbp)
  mov    %edx,-0x13c(%rbp)
  movsd  %xmm0,-0x120(%rbp)
  movsd  %xmm1,-0x118(%rbp)
  movsd  %xmm2,-0x110(%rbp)
  test   %eax,%eax
  je     L50
  cmp    $0x30,%eax
  jle    L13
  lea    0xf(,%rax,4),%rdx
  mov    %rsp,%rdi
  mov    %rsp,%r10
  mov    %rdx,%rcx
  and    $0xfffffffffffff000,%rdx
  sub    %rdx,%rdi
  and    $0xfffffffffffffff0,%rcx
  cmp    %rdi,%rsp
  je     L38
L57:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rdi,%rsp
  jne    L57
L38:
  and    $0xfff,%ecx
  sub    %rcx,%rsp
  test   %rcx,%rcx
  je     L91
  orq    $0x0,-0x8(%rsp,%rcx,1)
L91:
  lea    0x3(%rsp),%rdx
  xor    %ecx,%ecx
  mov    %rdx,%r9
  and    $0xfffffffffffffffc,%rdx
  shr    $0x2,%r9
  nopl   (%rax)
L68:
  movsbl (%rsi,%rcx,1),%edi
  mov    %edi,(%rdx,%rcx,4)
  add    $0x1,%rcx
  cmp    %rax,%rcx
  jne    L68
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rsi
  xor    %r8d,%r8d
  mov    $0x398,%edi
  mov    %r11,-0x170(%rbp)
  mov    %r9,-0x168(%rbp)
  mov    %rdx,-0x160(%rbp)
  mov    %r10,-0x178(%rbp)
  call   <_ada_use_c2phc@plt>
  mov    -0x168(%rbp),%r9
  mov    -0x160(%rbp),%rdx
  movdqu 0x0(,%r9,4),%xmm3
  movdqu 0x10(,%r9,4),%xmm4
  movdqu 0x20(,%r9,4),%xmm5
  movdqu 0x30(,%r9,4),%xmm6
  movups %xmm3,0x0(%r13)
  movups %xmm4,0x10(%r13)
  movups %xmm5,0x20(%r13)
  movups %xmm6,0x30(%r13)
  movdqu 0x40(,%r9,4),%xmm7
  movups %xmm7,(%r12)
  movdqu 0x50(%rdx),%xmm3
  movups %xmm3,0x10(%r12)
  movdqu 0x60(%rdx),%xmm4
  movups %xmm4,0x20(%r12)
  movdqu 0x70(%rdx),%xmm5
  movups %xmm5,0x30(%r12)
  movdqu 0x80(,%r9,4),%xmm6
  movups %xmm6,(%rbx)
  movdqu 0x90(%rdx),%xmm7
  movups %xmm7,0x10(%rbx)
  movdqu 0xa0(%rdx),%xmm3
  movups %xmm3,0x20(%rbx)
  movdqu 0xb0(%rdx),%xmm4
  movups %xmm4,0x30(%rbx)
  mov    -0x178(%rbp),%rsp
  mov    -0x170(%rbp),%r11
  jmp    L95
  nopl   (%rax)
L13:
  movslq %eax,%rcx
  xor    %edx,%edx
  lea    -0x100(%rbp),%r9
  test   %eax,%eax
  jle    L76
  nopl   0x0(%rax,%rax,1)
L28:
  movsbl (%rsi,%rdx,1),%eax
  mov    %eax,(%r9,%rdx,4)
  add    $0x1,%rdx
  cmp    %rdx,%rcx
  jne    L28
L76:
  lea    -0x120(%rbp),%rcx
  lea    -0x140(%rbp),%rsi
  xor    %r8d,%r8d
  mov    %r9,%rdx
  mov    $0x398,%edi
  mov    %r11,-0x160(%rbp)
  call   <_ada_use_c2phc@plt>
  movdqa -0x100(%rbp),%xmm5
  movdqa -0xf0(%rbp),%xmm6
  movdqa -0xe0(%rbp),%xmm7
  movdqa -0xd0(%rbp),%xmm3
  movups %xmm5,0x0(%r13)
  movdqa -0xc0(%rbp),%xmm4
  movdqa -0xb0(%rbp),%xmm5
  movups %xmm6,0x10(%r13)
  movdqa -0xa0(%rbp),%xmm6
  mov    -0x160(%rbp),%r11
  movups %xmm7,0x20(%r13)
  movdqa -0x90(%rbp),%xmm7
  movups %xmm3,0x30(%r13)
  movdqa -0x80(%rbp),%xmm3
  movups %xmm4,(%r12)
  movdqa -0x70(%rbp),%xmm4
  movups %xmm5,0x10(%r12)
  movdqa -0x60(%rbp),%xmm5
  movups %xmm6,0x20(%r12)
  movdqa -0x50(%rbp),%xmm6
  movups %xmm7,0x30(%r12)
  movups %xmm3,(%rbx)
  movups %xmm4,0x10(%rbx)
  movups %xmm5,0x20(%rbx)
  movups %xmm6,0x30(%rbx)
L95:
  mov    -0x140(%rbp),%edx
  mov    -0x148(%rbp),%rdi
  mov    -0x150(%rbp),%rbx
  mov    %edx,(%rdi)
  mov    -0x13c(%rbp),%edx
  mov    -0x158(%rbp),%rdi
  mov    %edx,(%r15)
  mov    -0x138(%rbp),%edx
  mov    %edx,(%r14)
  mov    -0x134(%rbp),%edx
  mov    %edx,(%r11)
  mov    -0x130(%rbp),%edx
  mov    %edx,(%rbx)
  mov    -0x12c(%rbp),%edx
  mov    %edx,(%rdi)
  mov    -0x38(%rbp),%rdx
  sub    %fs:0x28,%rdx
  jne    L4
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
  nopl   (%rax)
L50:
  lea    -0x120(%rbp),%rcx
  lea    -0x100(%rbp),%rdx
  xor    %r8d,%r8d
  mov    $0x398,%edi
  lea    -0x140(%rbp),%rsi
  mov    %r11,-0x160(%rbp)
  call   <_ada_use_c2phc@plt>
  movdqa -0x100(%rbp),%xmm7
  movdqa -0xf0(%rbp),%xmm0
  movdqa -0xe0(%rbp),%xmm1
  movdqa -0xd0(%rbp),%xmm2
  movups %xmm7,0x0(%r13)
  movdqa -0xb0(%rbp),%xmm3
  movdqa -0xc0(%rbp),%xmm7
  movups %xmm0,0x10(%r13)
  movdqa -0xa0(%rbp),%xmm4
  movdqa -0x90(%rbp),%xmm5
  movups %xmm1,0x20(%r13)
  movdqa -0x80(%rbp),%xmm6
  movdqa -0x70(%rbp),%xmm0
  movups %xmm2,0x30(%r13)
  movdqa -0x60(%rbp),%xmm1
  movdqa -0x50(%rbp),%xmm2
  movups %xmm7,(%r12)
  mov    -0x160(%rbp),%r11
  movups %xmm3,0x10(%r12)
  movups %xmm4,0x20(%r12)
  movups %xmm5,0x30(%r12)
  movups %xmm6,(%rbx)
  movups %xmm0,0x10(%rbx)
  movups %xmm1,0x20(%rbx)
  movups %xmm2,0x30(%rbx)
  jmp    L95
L4:
  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;
}
```