user: 请将以下的汇编代码转换成C语言代码：

```asm
<rSignifcanceTest>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x548,%rsp
  mov    %edi,%eax
  mov    %esi,%ebp
  mov    %fs:0x28,%rdx
  mov    %rdx,0x538(%rsp)
  xor    %edx,%edx
  lea    0xb0(%rsp),%rdi
  lea    D20(%rip),%rsi
  mov    $0x90,%ecx
  rep movsq %ds:(%rsi),%es:(%rdi)
  movl   $0x1,0x20(%rsp)
  movl   $0x2,0x24(%rsp)
  movl   $0x3,0x28(%rsp)
  movl   $0x4,0x2c(%rsp)
  movl   $0x5,0x30(%rsp)
  movl   $0x6,0x34(%rsp)
  movl   $0x7,0x38(%rsp)
  movl   $0x8,0x3c(%rsp)
  movl   $0x9,0x40(%rsp)
  movl   $0xa,0x44(%rsp)
  movl   $0xb,0x48(%rsp)
  movl   $0xc,0x4c(%rsp)
  movl   $0xd,0x50(%rsp)
  movl   $0xe,0x54(%rsp)
  movl   $0xf,0x58(%rsp)
  movl   $0x10,0x5c(%rsp)
  movl   $0x11,0x60(%rsp)
  movl   $0x12,0x64(%rsp)
  movl   $0x13,0x68(%rsp)
  movl   $0x14,0x6c(%rsp)
  movl   $0x15,0x70(%rsp)
  movl   $0x16,0x74(%rsp)
  movl   $0x17,0x78(%rsp)
  movl   $0x18,0x7c(%rsp)
  movl   $0x19,0x80(%rsp)
  movl   $0x1a,0x84(%rsp)
  movl   $0x1b,0x88(%rsp)
  movl   $0x1c,0x8c(%rsp)
  movl   $0x1d,0x90(%rsp)
  movl   $0x1e,0x94(%rsp)
  movl   $0x28,0x98(%rsp)
  movl   $0x3c,0x9c(%rsp)
  movl   $0x50,0xa0(%rsp)
  movl   $0x64,0xa4(%rsp)
  movl   $0x3e8,0xa8(%rsp)
  movl   $0xf4240,0xac(%rsp)
  mov    D46(%rip),%rsi
  mov    %rsi,(%rsp)
  mov    D64(%rip),%rdi
  mov    %rdi,0x8(%rsp)
  mov    D37(%rip),%rcx
  mov    %rcx,0x10(%rsp)
  mov    D26(%rip),%rsi
  mov    %rsi,0x18(%rsp)
  lea    -0x2(%rax),%ebx
  mov    %eax,%edi
  call   <correlationTTest@plt>
  lea    0x20(%rsp),%rax
  lea    0xb0(%rsp),%rdx
  lea    0x510(%rsp),%rdi
  movsd  D10(%rip),%xmm2
  lea    0x18(%rsp),%r8
  jmp    L65
L173:
  add    $0x8,%rcx
  add    $0x8,%rsi
  cmp    %r8,%rsi
  je     L27
L30:
  comisd (%rcx),%xmm0
  jb     L173
  movsd  0x8(%rcx),%xmm1
  comisd %xmm0,%xmm1
  jbe    L173
  movsd  (%rsi),%xmm2
  jmp    L173
L27:
  comisd 0x18(%rdx),%xmm0
  jb     L15
  movsd  D26(%rip),%xmm2
L15:
  add    $0x4,%rax
  add    $0x20,%rdx
  cmp    %rdi,%rdx
  je     L11
L65:
  cmp    %ebx,(%rax)
  jg     L15
  cmp    %ebx,0x4(%rax)
  jle    L15
  mov    %rsp,%rsi
  mov    %rdx,%rcx
  jmp    L30
L11:
  cmp    $0xf423f,%ebx
  jle    L70
  mov    $0x0,%eax
  lea    0x510(%rsp),%rdx
  lea    0x518(%rsp),%rcx
  jmp    L26
L149:
  add    $0x8,%rax
  cmp    $0x18,%rax
  je     L95
L26:
  comisd (%rdx,%rax,1),%xmm0
  jb     L149
  movsd  (%rcx,%rax,1),%xmm1
  comisd %xmm0,%xmm1
  jbe    L149
  movsd  (%rsp,%rax,1),%xmm2
  jmp    L149
L95:
  comisd D21(%rip),%xmm0
  jb     L70
  movsd  D26(%rip),%xmm2
L70:
  cmp    $0x2,%ebp
  je     L83
L86:
  mov    0x538(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L109
  movapd %xmm2,%xmm0
  add    $0x548,%rsp
  pop    %rbx
  pop    %rbp
  ret
L83:
  addsd  %xmm2,%xmm2
  jmp    L86
L109:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: label: D20
type_infered: f64
name: read_data
arguments: label: D46
type_infered: f64
name: read_data
arguments: label: D64
type_infered: f64
name: read_data
arguments: label: D37
type_infered: f64
name: read_data
arguments: label: D26
type_infered: f64
name: read_data
arguments: label: D10
type_infered: f64
name: read_data
arguments: label: D21
type_infered: f64

tool: D20: 31.82

tool: D46: 0.01

tool: D64: 0.005

tool: D37: 0.001

tool: D26: 0.0005

tool: D10: 1

tool: D21: 3.291

assistant: ```c
double rSignifcanceTest(double r, int N, int tail) {
  double prob = 1.0, t;
  int i, j, df;
  double tDist[36][4] = {{31.82, 63.66, 318.31, 636.62}, {6.965, 9.925, 22.327, 31.599}, {4.541, 5.841, 10.215, 12.924}, {3.747, 4.604, 7.173, 8.610}, {3.365, 4.032, 5.893, 6.869}, {3.143, 3.707, 5.208, 5.959}, {2.998, 3.499, 4.785, 5.408}, {2.896, 3.355, 4.501, 5.041}, {2.821, 3.250, 4.297, 4.781}, {2.764, 3.169, 4.144, 4.587}, {2.718, 3.106, 4.025, 4.437}, {2.681, 3.055, 3.930, 4.318}, {2.650, 3.012, 3.852, 4.221}, {2.624, 2.977, 3.787, 4.140}, {2.602, 2.947, 3.733, 4.073}, {2.583, 2.921, 3.686, 4.015}, {2.567, 2.898, 3.646, 3.965}, {2.552, 2.878, 3.610, 3.922}, {2.539, 2.861, 3.579, 3.883}, {2.528, 2.845, 3.552, 3.850}, {2.518, 2.831, 3.527, 3.819}, {2.508, 2.819, 3.505, 3.792}, {2.500, 2.807, 3.485, 3.768}, {2.492, 2.797, 3.467, 3.745}, {2.485, 2.787, 3.450, 3.725}, {2.479, 2.779, 3.435, 3.707}, {2.473, 2.771, 3.421, 3.690}, {2.467, 2.763, 3.408, 3.674}, {2.462, 2.756, 3.396, 3.659}, {2.457, 2.750, 3.385, 3.646}, {2.423, 2.704, 3.307, 3.551}, {2.390, 2.660, 3.232, 3.460}, {2.374, 2.639, 3.195, 3.416}, {2.364, 2.626, 3.174, 3.390}, {2.330, 2.581, 3.098, 3.300}, {2.326, 2.576, 3.090, 3.291}};
  int dfTable[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 40, 60, 80, 100, 1000, 1e6};
  double p[] = {0.01, 0.005, 0.001, 0.0005};
  df = N - 2;
  t = correlationTTest(r, N);
  for (j = 1; j < 36; j++) {
    if ((df >= dfTable[j - 1]) && (df < dfTable[j])) {
      for (i = 0; i < 4 - 1; i++) {
        if (t >= tDist[j - 1][i] && t < tDist[j - 1][i + 1])
          prob = p[i];
      }
      if (t >= tDist[j - 1][4 - 1])
        prob = p[4 - 1];
    }
  }
  if (df >= dfTable[36 - 1]) {
    for (i = 0; i < 4 - 1; i++) {
      if (t >= tDist[36 - 1][i] && t < tDist[36 - 1][i + 1])
        prob = p[i];
    }
    if (t >= tDist[36 - 1][4 - 1])
      prob = p[4 - 1];
  }
  if (tail == 2)
    prob *= 2.0;
  return prob;
}
```