user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x38,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x28(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x34(%rbp)
  movq   $0x0,-0x30(%rbp)
  lea    -0x30(%rbp),%rdx
  lea    -0x34(%rbp),%rsi
  lea    D50(%rip),%rdi
  call   <scanf@plt>
  mov    -0x34(%rbp),%ecx
  mov    %ecx,%eax
  and    $0x7fffffff,%eax
  shl    $0x4,%rax
  mov    %rax,%rsi
  and    $0xfffffffffffff000,%rsi
  mov    %rsp,%rdx
  sub    %rsi,%rdx
L124:
  cmp    %rdx,%rsp
  je     L118
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L124
L118:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  test   %rdx,%rdx
  je     L96
  orq    $0x0,-0x8(%rsp,%rdx,1)
L96:
  mov    %rsp,%rbx
  test   %ecx,%ecx
  je     L34
  mov    $0x0,%r12d
  movsd  D26(%rip),%xmm7
  movsd  %xmm7,-0x48(%rbp)
  lea    D35(%rip),%r13
L9:
  lea    (%rcx,%r12,1),%eax
  lea    (%rbx,%rax,8),%rdx
  mov    %r12d,%eax
  lea    (%rbx,%rax,8),%rsi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x34(%rbp),%ecx
  lea    (%rcx,%r12,1),%eax
  movsd  (%rbx,%rax,8),%xmm0
  minsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x48(%rbp)
  add    $0x1,%r12d
  cmp    %r12d,%ecx
  ja     L9
L135:
  movsd  -0x48(%rbp),%xmm0
  xorpd  D45(%rip),%xmm0
  movsd  -0x30(%rbp),%xmm7
  movsd  D23(%rip),%xmm5
  movsd  D16(%rip),%xmm6
  movsd  D34(%rip),%xmm8
  mov    %ecx,%esi
  jmp    L81
L34:
  movsd  D26(%rip),%xmm7
  movsd  %xmm7,-0x48(%rbp)
  jmp    L135
L49:
  pxor   %xmm2,%xmm2
L47:
  comisd %xmm7,%xmm2
  jbe    L125
  movapd %xmm4,%xmm0
L81:
  movapd %xmm5,%xmm1
  subsd  %xmm0,%xmm1
  comisd %xmm6,%xmm1
  jbe    L87
  movapd %xmm5,%xmm4
  addsd  %xmm0,%xmm4
  mulsd  %xmm8,%xmm4
  test   %ecx,%ecx
  je     L49
  mov    $0x0,%eax
  pxor   %xmm2,%xmm2
L37:
  lea    (%rcx,%rax,1),%edx
  movapd %xmm4,%xmm3
  addsd  (%rbx,%rdx,8),%xmm3
  movsd  (%rbx,%rax,8),%xmm1
  divsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm2
  add    $0x1,%rax
  cmp    %rsi,%rax
  jne    L37
  jmp    L47
L125:
  comisd %xmm2,%xmm7
  jbe    L87
  movapd %xmm4,%xmm5
  jmp    L81
L87:
  addsd  %xmm5,%xmm0
  mulsd  D34(%rip),%xmm0
  lea    D20(%rip),%rdi
  call   <printf@plt>
  mov    -0x28(%rbp),%rax
  sub    %fs:0x28,%rax
  jne    L119
  mov    $0x0,%eax
  lea    -0x18(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %rbp
  ret
L119:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D50
type: string
name: parse_data
arguments: data_label: D26
type: f64
name: parse_data
arguments: data_label: D35
type: string
name: parse_data
arguments: data_label: D45
type: f32[4]
name: parse_data
arguments: data_label: D23
type: f64
name: parse_data
arguments: data_label: D16
type: f64
name: parse_data
arguments: data_label: D34
type: f32[2]
name: parse_data
arguments: data_label: D20
type: string

tool: D50: %u %lf

tool: D26: 100000000

tool: D35: %lf %lf

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

tool: D23: 1001000

tool: D16: 1e-09

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

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