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

```asm
<main>:
  endbr64
  push   %rbp
  lea    D57(%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     L73
L23:
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  cmp    %rdx,%rsp
  jne    L23
L73:
  and    $0xfff,%eax
  sub    %rax,%rsp
  test   %rax,%rax
  jne    L152
L29:
  mov    %rsp,%rbx
  test   %ecx,%ecx
  je     L90
  movsd  D88(%rip),%xmm0
  xor    %r12d,%r12d
  lea    D9(%rip),%r13
  nopl   0x0(%rax)
L49:
  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     L49
L85:
  xorpd  D38(%rip),%xmm0
  movsd  -0x30(%rbp),%xmm8
  mov    %ecx,%esi
  movsd  D56(%rip),%xmm4
  movsd  D1(%rip),%xmm7
  movsd  D82(%rip),%xmm6
  nopl   0x0(%rax,%rax,1)
L51:
  movapd %xmm4,%xmm1
  movapd %xmm0,%xmm5
  subsd  %xmm0,%xmm1
  movapd %xmm4,%xmm0
  addsd  %xmm5,%xmm0
  comisd %xmm6,%xmm1
  mulsd  %xmm7,%xmm0
  jbe    L131
  test   %ecx,%ecx
  je     L60
  xor    %eax,%eax
  pxor   %xmm2,%xmm2
  nopl   0x0(%rax,%rax,1)
L79:
  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    L79
  comisd %xmm8,%xmm2
  ja     L51
L2:
  comisd %xmm2,%xmm8
  jbe    L131
  movapd %xmm0,%xmm4
  movapd %xmm5,%xmm0
  jmp    L51
  nopw   0x0(%rax,%rax,1)
L60:
  pxor   %xmm2,%xmm2
  comisd %xmm8,%xmm2
  ja     L51
  jmp    L2
  nopl   (%rax)
L131:
  lea    D70(%rip),%rdi
  call   <printf@plt>
  mov    -0x28(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L142
  lea    -0x18(%rbp),%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
L152:
  orq    $0x0,-0x8(%rsp,%rax,1)
  jmp    L29
L90:
  movsd  D88(%rip),%xmm0
  jmp    L85
L142:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: data_label: D57
type_guessed: string
name: disassemble_data
arguments: data_label: D88
type_guessed: f64
name: disassemble_data
arguments: data_label: D9
type_guessed: string
name: disassemble_data
arguments: data_label: D38
type_guessed: f32[4]
name: disassemble_data
arguments: data_label: D56
type_guessed: f64
name: disassemble_data
arguments: data_label: D1
type_guessed: f32[2]
name: disassemble_data
arguments: data_label: D82
type_guessed: f64
name: disassemble_data
arguments: data_label: D70
type_guessed: string

tool: D57: %u %lf

tool: D88: 100000000

tool: D9: %lf %lf

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

tool: D56: 1001000

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

tool: D82: 1e-09

tool: D70: %.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;
}
```