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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x3,-0x20(%rbp)
  movl   $0x4,-0x1c(%rbp)
  movl   $0x9,-0x18(%rbp)
  movl   $0xc,-0x14(%rbp)
  movl   $0xe,-0x10(%rbp)
  movl   $0x11,-0xc(%rbp)
  movl   $0x0,-0x2c(%rbp)
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x34(%rbp),%rax
  mov    %rax,%rsi
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  movl   $0x0,-0x30(%rbp)
  movl   $0x5,-0x28(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D28(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x30(%rbp),%eax
  cltq
  mov    -0x20(%rbp,%rax,4),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  jg     L57
  mov    -0x28(%rbp),%eax
  cltq
  mov    -0x20(%rbp,%rax,4),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  jge    L87
L57:
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  jmp    L61
L129:
  mov    -0x24(%rbp),%eax
  cltq
  mov    -0x20(%rbp,%rax,4),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  je     L38
  mov    -0x30(%rbp),%eax
  cltq
  mov    -0x20(%rbp,%rax,4),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  je     L38
  mov    -0x28(%rbp),%eax
  cltq
  mov    -0x20(%rbp,%rax,4),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  jne    L111
L38:
  movl   $0x1,-0x2c(%rbp)
  jmp    L42
L111:
  mov    -0x24(%rbp),%eax
  cltq
  mov    -0x20(%rbp,%rax,4),%edx
  mov    -0x34(%rbp),%eax
  cmp    %eax,%edx
  jle    L70
  mov    -0x24(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D28(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x24(%rbp)
  jmp    L87
L70:
  mov    -0x24(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x28(%rbp),%eax
  add    %edx,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D28(%rip),%xmm1
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x24(%rbp)
L87:
  mov    -0x30(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jl     L129
L42:
  cmpl   $0x1,-0x2c(%rbp)
  jne    L11
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L8
L11:
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L8:
  mov    $0x0,%eax
L61:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L85
  call   <__stack_chk_fail@plt>
L85:
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D11
type_infered: string
name: unpack_data
arguments: data_tag: D2
type_infered: string
name: unpack_data
arguments: data_tag: D28
type_infered: f64
name: unpack_data
arguments: data_tag: D0
type_infered: string
name: unpack_data
arguments: data_tag: D8
type_infered: string

tool: D11: Enter a number: 

tool: D2: %d

tool: D28: 2

tool: D0: It is not found!


tool: D8: It is found!


assistant: ```c
int main() {
  int a[] = {3, 4, 9, 12, 14, 17}, i, n, f = 0, j, k;
  printf("Enter a number: ");
  scanf("%d", &n);
  i = 0;
  j = sizeof(a) / sizeof(int) - 1;
  k = (int)(i + j) / 2.0;
  if (n < a[i] || n > a[j]) {
    printf("It is not found!\n");
    return 0;
  }
  while (i < j) {
    if (a[k] == n || a[i] == n || a[j] == n) {
      f = 1;
      break;
    } else if (a[k] > n) {
      j = k - 1;
      k = (i + j) / 2.0;
    } else {
      i = k + 1;
      k = (i + j) / 2.0;
    }
  }
  if (f == 1)
    printf("It is found!\n");
  else
    printf("It is not found!\n");
  return 0;
}
```