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

```asm
<main>:
  endbr64
  push   %rbp
  lea    D53(%rip),%rdi
  mov    %rsp,%rbp
  push   %r13
  push   %r12
  lea    -0x30(%rbp),%rdx
  lea    -0x34(%rbp),%rsi
  push   %rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x28(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x34(%rbp)
  movq   $0x0,-0x30(%rbp)
  call   <scanf@plt>
  mov    -0x34(%rbp),%ecx
  mov    %rsp,%rdx
  mov    %ecx,%eax
  and    $0x7fffffff,%eax
  shl    $0x4,%rax
  mov    %rax,%rsi
  and    $0xfffffffffffff000,%rsi
  sub    %rsi,%rdx
  cmp    %rdx,%rsp
  je     L113
L78:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rdx,%rsp
  jne    L78
L113:
  and    $0xfff,%eax
  sub    %rax,%rsp
  test   %rax,%rax
  jne    L82
L148:
  mov    %rsp,%rbx
  test   %ecx,%ecx
  je     L138
  movsd  D21(%rip),%xmm0
  xor    %r12d,%r12d
  lea    D69(%rip),%r13
  nopl   0x0(%rax)
L105:
  lea    (%rcx,%r12,1),%eax
  mov    %r13,%rdi
  movsd  %xmm0,-0x48(%rbp)
  lea    (%rbx,%rax,8),%rdx
  mov    %r12d,%eax
  lea    (%rbx,%rax,8),%rsi
  xor    %eax,%eax
  call   <scanf@plt>
  mov    -0x34(%rbp),%ecx
  movsd  -0x48(%rbp),%xmm0
  lea    (%rcx,%r12,1),%eax
  add    $0x1,%r12d
  movsd  (%rbx,%rax,8),%xmm1
  minsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  cmp    %r12d,%ecx
  ja     L105
L28:
  xorpd  D49(%rip),%xmm0
  movsd  -0x30(%rbp),%xmm8
  mov    %ecx,%esi
  movsd  D3(%rip),%xmm4
  movsd  D6(%rip),%xmm7
  movsd  D83(%rip),%xmm6
  nopl   0x0(%rax,%rax,1)
L37:
  movapd %xmm4,%xmm1
  movapd %xmm0,%xmm5
  subsd  %xmm0,%xmm1
  movapd %xmm4,%xmm0
  addsd  %xmm5,%xmm0
  comisd %xmm6,%xmm1
  mulsd  %xmm7,%xmm0
  jbe    L22
  test   %ecx,%ecx
  je     L95
  xor    %eax,%eax
  pxor   %xmm2,%xmm2
  nopl   0x0(%rax,%rax,1)
L48:
  lea    (%rcx,%rax,1),%edx
  movsd  (%rbx,%rax,8),%xmm1
  add    $0x1,%rax
  movsd  (%rbx,%rdx,8),%xmm3
  addsd  %xmm0,%xmm3
  divsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm2
  cmp    %rax,%rsi
  jne    L48
  comisd %xmm8,%xmm2
  ja     L37
L103:
  comisd %xmm2,%xmm8
  jbe    L22
  movapd %xmm0,%xmm4
  movapd %xmm5,%xmm0
  jmp    L37
  nopw   0x0(%rax,%rax,1)
L95:
  pxor   %xmm2,%xmm2
  comisd %xmm8,%xmm2
  ja     L37
  jmp    L103
  nopl   (%rax)
L22:
  lea    D48(%rip),%rdi
  call   <printf@plt>
  mov    -0x28(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L55
  lea    -0x18(%rbp),%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
L82:
  orq    $0x0,-0x8(%rsp,%rax,1)
  jmp    L148
L138:
  movsd  D21(%rip),%xmm0
  jmp    L28
L55:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D53
datatype: string
name: parse_data
arguments: tag: D21
datatype: f64
name: parse_data
arguments: tag: D69
datatype: string
name: parse_data
arguments: tag: D49
datatype: f32[4]
name: parse_data
arguments: tag: D3
datatype: f64
name: parse_data
arguments: tag: D6
datatype: f32[2]
name: parse_data
arguments: tag: D83
datatype: f64
name: parse_data
arguments: tag: D48
datatype: string

tool: D53: %u %lf

tool: D21: 100000000

tool: D69: %lf %lf

tool: {"D49": [0.0,-0.0,0.0,0.0]}

tool: D3: 1001000

tool: {"D6": [0.0,1.75]}

tool: D83: 1e-09

tool: D48: %.10lf


assistant: ```c
int main() {
  unsigned int n = 0;
  double t = 0.0;
  scanf("%u %lf", &n, &t);
  double arr[n << 1U];
  double min = 100000000.0, max = 1001000.0;
  for (unsigned int i = 0; i < n; i++) {
    scanf("%lf %lf", arr + i, arr + (n + i));
    if (arr[n + i] < min)
      min = arr[n + i];
  }
  min = -min;
  while (max - min > 0.000000001) {
    double mid = (min + max) / 2.0;
    double sum = 0.0;
    for (unsigned int i = 0; i < n; i++)
      sum += arr[i] / (arr[n + i] + mid);
    if (sum > t)
      min = mid;
    else if (sum < t)
      max = mid;
    else
      break;
  }
  printf("%.10lf\n", (min + max) / 2.0);
  return 0;
}
```