user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %r12
  xor    %r12d,%r12d
  push   %rbp
  lea    D147(%rip),%rbp
  mov    %rbp,%rdi
  sub    $0x8,%rsp
  call   <puts@plt>
  lea    D266(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  xor    %edi,%edi
  call   <check_sdot@plt>
  lea    D516(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  test   %rax,%rax
  setne  %r12b
  xor    %edi,%edi
  call   <check_saxpy@plt>
  lea    D229(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_srotg@plt>
  lea    D54(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_srot@plt>
  lea    D143(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_scopy@plt>
  lea    D98(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_sswap@plt>
  lea    D193(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_snrm2@plt>
  lea    D274(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_sasum@plt>
  lea    D272(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_sscal@plt>
  lea    D518(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_isamax@plt>
  lea    D301(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_srotmg@plt>
  lea    D186(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_srotm@plt>
  lea    D136(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_sdsdot@plt>
  lea    D402(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_ddot@plt>
  lea    D497(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_daxpy@plt>
  lea    D323(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_drotg@plt>
  lea    D204(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_drot@plt>
  lea    D356(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dcopy@plt>
  lea    D132(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dswap@plt>
  lea    D514(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dnrm2@plt>
  lea    D51(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dasum@plt>
  lea    D214(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dscal@plt>
  lea    D278(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_idamax@plt>
  lea    D336(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_drotmg@plt>
  lea    D162(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_drotm@plt>
  lea    D404(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dsdot@plt>
  lea    D104(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_cdotc@plt>
  lea    D438(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_cdotu@plt>
  lea    D394(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_caxpy@plt>
  lea    D456(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_ccopy@plt>
  lea    D19(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_cswap@plt>
  lea    D315(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_scnrm2@plt>
  lea    D508(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_scasum@plt>
  lea    D30(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_cscal@plt>
  lea    D39(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_csscal@plt>
  lea    D425(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_icamax@plt>
  lea    D385(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zdotc@plt>
  lea    D354(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zdotu@plt>
  lea    D335(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zaxpy@plt>
  lea    D167(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zcopy@plt>
  lea    D421(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zswap@plt>
  lea    D112(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dznrm2@plt>
  lea    D316(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_dzasum@plt>
  lea    D94(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zscal@plt>
  lea    D351(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  cmp    $0x1,%rax
  sbb    $0xffffffff,%r12d
  xor    %edi,%edi
  call   <check_zdscal@plt>
  lea    D99(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  test   %rax,%rax
  je     L54
  xor    %edi,%edi
  add    $0x1,%r12d
  call   <check_izamax@plt>
  lea    D347(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  test   %rax,%rax
  je     L45
L76:
  mov    %rbp,%rdi
  add    $0x1,%r12d
  call   <puts@plt>
L41:
  cmp    $0x1,%r12d
  je     L63
  mov    %r12d,%esi
  lea    D477(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
L62:
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
L54:
  xor    %edi,%edi
  call   <check_izamax@plt>
  lea    D347(%rip),%rdi
  mov    %eax,%esi
  call   <test_function@plt>
  test   %rax,%rax
  jne    L76
  mov    %rbp,%rdi
  call   <puts@plt>
  test   %r12d,%r12d
  jne    L41
  lea    D513(%rip),%rdi
  call   <puts@plt>
  jmp    L62
L63:
  lea    D295(%rip),%rdi
  call   <puts@plt>
  jmp    L62
L45:
  mov    %rbp,%rdi
  call   <puts@plt>
  jmp    L41
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D147
datatype: string
name: extract_symbolic_data
arguments: data_tag: D266
datatype: string
name: extract_symbolic_data
arguments: data_tag: D516
datatype: string
name: extract_symbolic_data
arguments: data_tag: D229
datatype: string
name: extract_symbolic_data
arguments: data_tag: D54
datatype: string
name: extract_symbolic_data
arguments: data_tag: D143
datatype: string
name: extract_symbolic_data
arguments: data_tag: D98
datatype: string
name: extract_symbolic_data
arguments: data_tag: D193
datatype: string
name: extract_symbolic_data
arguments: data_tag: D274
datatype: string
name: extract_symbolic_data
arguments: data_tag: D272
datatype: string
name: extract_symbolic_data
arguments: data_tag: D518
datatype: string
name: extract_symbolic_data
arguments: data_tag: D301
datatype: string
name: extract_symbolic_data
arguments: data_tag: D186
datatype: string
name: extract_symbolic_data
arguments: data_tag: D136
datatype: string
name: extract_symbolic_data
arguments: data_tag: D402
datatype: string
name: extract_symbolic_data
arguments: data_tag: D497
datatype: string
name: extract_symbolic_data
arguments: data_tag: D323
datatype: string
name: extract_symbolic_data
arguments: data_tag: D204
datatype: string
name: extract_symbolic_data
arguments: data_tag: D356
datatype: string
name: extract_symbolic_data
arguments: data_tag: D132
datatype: string
name: extract_symbolic_data
arguments: data_tag: D514
datatype: string
name: extract_symbolic_data
arguments: data_tag: D51
datatype: string
name: extract_symbolic_data
arguments: data_tag: D214
datatype: string
name: extract_symbolic_data
arguments: data_tag: D278
datatype: string
name: extract_symbolic_data
arguments: data_tag: D336
datatype: string
name: extract_symbolic_data
arguments: data_tag: D162
datatype: string
name: extract_symbolic_data
arguments: data_tag: D404
datatype: string
name: extract_symbolic_data
arguments: data_tag: D104
datatype: string
name: extract_symbolic_data
arguments: data_tag: D438
datatype: string
name: extract_symbolic_data
arguments: data_tag: D394
datatype: string
name: extract_symbolic_data
arguments: data_tag: D456
datatype: string
name: extract_symbolic_data
arguments: data_tag: D19
datatype: string
name: extract_symbolic_data
arguments: data_tag: D315
datatype: string
name: extract_symbolic_data
arguments: data_tag: D508
datatype: string
name: extract_symbolic_data
arguments: data_tag: D30
datatype: string
name: extract_symbolic_data
arguments: data_tag: D39
datatype: string
name: extract_symbolic_data
arguments: data_tag: D425
datatype: string
name: extract_symbolic_data
arguments: data_tag: D385
datatype: string
name: extract_symbolic_data
arguments: data_tag: D354
datatype: string
name: extract_symbolic_data
arguments: data_tag: D335
datatype: string
name: extract_symbolic_data
arguments: data_tag: D167
datatype: string
name: extract_symbolic_data
arguments: data_tag: D421
datatype: string
name: extract_symbolic_data
arguments: data_tag: D112
datatype: string
name: extract_symbolic_data
arguments: data_tag: D316
datatype: string
name: extract_symbolic_data
arguments: data_tag: D94
datatype: string
name: extract_symbolic_data
arguments: data_tag: D351
datatype: string
name: extract_symbolic_data
arguments: data_tag: D99
datatype: string
name: extract_symbolic_data
arguments: data_tag: D347
datatype: string
name: extract_symbolic_data
arguments: data_tag: D477
datatype: string
name: extract_symbolic_data
arguments: data_tag: D513
datatype: string
name: extract_symbolic_data
arguments: data_tag: D295
datatype: string

tool: D147:  ---------------------------

tool: D266:       CoBLAS Test Suite     

tool: D516: cblas_sdot  

tool: D229: cblas_saxpy 

tool: D54: cblas_srotg 

tool: D143: cblas_srot  

tool: D98: cblas_scopy 

tool: D193: cblas_sswap 

tool: D274: cblas_snrm2 

tool: D272: cblas_sasum 

tool: D518: cblas_sscal 

tool: D301: cblas_isamax

tool: D186: cblas_srotmg

tool: D136: cblas_srotm 

tool: D402: cblas_sdsdot

tool: D497: cblas_ddot  

tool: D323: cblas_daxpy 

tool: D204: cblas_drotg 

tool: D356: cblas_drot  

tool: D132: cblas_dcopy 

tool: D514: cblas_dswap 

tool: D51: cblas_dnrm2 

tool: D214: cblas_dasum 

tool: D278: cblas_dscal 

tool: D336: cblas_idamax

tool: D162: cblas_drotmg

tool: D404: cblas_drotm 

tool: D104: cblas_dsdot 

tool: D438: cblas_cdotc 

tool: D394: cblas_cdotu 

tool: D456: cblas_caxpy 

tool: D19: cblas_ccopy 

tool: D315: cblas_cswap 

tool: D508: cblas_scnrm2

tool: D30: cblas_scasum

tool: D39: cblas_cscal 

tool: D425: cblas_csscal

tool: D385: cblas_icamax

tool: D354: cblas_zdotc 

tool: D335: cblas_zdotu 

tool: D167: cblas_zaxpy 

tool: D421: cblas_zcopy 

tool: D112: cblas_zswap 

tool: D316: cblas_dznrm2

tool: D94: cblas_dzasum

tool: D351: cblas_zscal 

tool: D99: cblas_zdscal

tool: D347: cblas_izamax

tool: D477:  There were %d failed tests.


tool: D513:  All tests passed.

tool: D295:  There was one failed test.

assistant: ```c
int main(int argc, char *argv[]) {
  int fail = 0;
  bool verbose = false;
  printf(" ---------------------------\n");
  printf("      CoBLAS Test Suite     \n");
  printf(" ---------------------------\n");
  if (test_function("cblas_sdot  ", check_sdot(verbose)))
    fail++;
  if (test_function("cblas_saxpy ", check_saxpy(verbose)))
    fail++;
  if (test_function("cblas_srotg ", check_srotg(verbose)))
    fail++;
  if (test_function("cblas_srot  ", check_srot(verbose)))
    fail++;
  if (test_function("cblas_scopy ", check_scopy(verbose)))
    fail++;
  if (test_function("cblas_sswap ", check_sswap(verbose)))
    fail++;
  if (test_function("cblas_snrm2 ", check_snrm2(verbose)))
    fail++;
  if (test_function("cblas_sasum ", check_sasum(verbose)))
    fail++;
  if (test_function("cblas_sscal ", check_sscal(verbose)))
    fail++;
  if (test_function("cblas_isamax", check_isamax(verbose)))
    fail++;
  if (test_function("cblas_srotmg", check_srotmg(verbose)))
    fail++;
  if (test_function("cblas_srotm ", check_srotm(verbose)))
    fail++;
  if (test_function("cblas_sdsdot", check_sdsdot(verbose)))
    fail++;
  if (test_function("cblas_ddot  ", check_ddot(verbose)))
    fail++;
  if (test_function("cblas_daxpy ", check_daxpy(verbose)))
    fail++;
  if (test_function("cblas_drotg ", check_drotg(verbose)))
    fail++;
  if (test_function("cblas_drot  ", check_drot(verbose)))
    fail++;
  if (test_function("cblas_dcopy ", check_dcopy(verbose)))
    fail++;
  if (test_function("cblas_dswap ", check_dswap(verbose)))
    fail++;
  if (test_function("cblas_dnrm2 ", check_dnrm2(verbose)))
    fail++;
  if (test_function("cblas_dasum ", check_dasum(verbose)))
    fail++;
  if (test_function("cblas_dscal ", check_dscal(verbose)))
    fail++;
  if (test_function("cblas_idamax", check_idamax(verbose)))
    fail++;
  if (test_function("cblas_drotmg", check_drotmg(verbose)))
    fail++;
  if (test_function("cblas_drotm ", check_drotm(verbose)))
    fail++;
  if (test_function("cblas_dsdot ", check_dsdot(verbose)))
    fail++;
  if (test_function("cblas_cdotc ", check_cdotc(verbose)))
    fail++;
  if (test_function("cblas_cdotu ", check_cdotu(verbose)))
    fail++;
  if (test_function("cblas_caxpy ", check_caxpy(verbose)))
    fail++;
  if (test_function("cblas_ccopy ", check_ccopy(verbose)))
    fail++;
  if (test_function("cblas_cswap ", check_cswap(verbose)))
    fail++;
  if (test_function("cblas_scnrm2", check_scnrm2(verbose)))
    fail++;
  if (test_function("cblas_scasum", check_scasum(verbose)))
    fail++;
  if (test_function("cblas_cscal ", check_cscal(verbose)))
    fail++;
  if (test_function("cblas_csscal", check_csscal(verbose)))
    fail++;
  if (test_function("cblas_icamax", check_icamax(verbose)))
    fail++;
  if (test_function("cblas_zdotc ", check_zdotc(verbose)))
    fail++;
  if (test_function("cblas_zdotu ", check_zdotu(verbose)))
    fail++;
  if (test_function("cblas_zaxpy ", check_zaxpy(verbose)))
    fail++;
  if (test_function("cblas_zcopy ", check_zcopy(verbose)))
    fail++;
  if (test_function("cblas_zswap ", check_zswap(verbose)))
    fail++;
  if (test_function("cblas_dznrm2", check_dznrm2(verbose)))
    fail++;
  if (test_function("cblas_dzasum", check_dzasum(verbose)))
    fail++;
  if (test_function("cblas_zscal ", check_zscal(verbose)))
    fail++;
  if (test_function("cblas_zdscal", check_zdscal(verbose)))
    fail++;
  if (test_function("cblas_izamax", check_izamax(verbose)))
    fail++;
  printf(" ---------------------------\n");
  if (fail == 0)
    printf(" All tests passed.\n");
  else if (fail == 1)
    printf(" There was one failed test.\n");
  else
    printf(" There were %d failed tests.\n", fail);
  return fail;
}
```