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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x70(%rbp)
  lea    D137(%rip),%rax
  mov    %rax,%rsi
  lea    D236(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x60(%rbp)
  lea    D9(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xa0(%rbp),%rcx
  lea    -0x40(%rbp),%rdx
  lea    -0x54(%rbp),%rax
  mov    %rax,%rsi
  lea    D246(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movl   $0x0,-0x84(%rbp)
  mov    -0x84(%rbp),%eax
  mov    %eax,-0x88(%rbp)
  jmp    L117
L44:
  mov    -0x84(%rbp),%eax
  cltq
  movzbl -0x54(%rbp,%rax,1),%eax
  movsbl %al,%eax
  add    %eax,-0x88(%rbp)
  addl   $0x1,-0x84(%rbp)
L117:
  mov    -0x84(%rbp),%eax
  cltq
  movzbl -0x54(%rbp,%rax,1),%eax
  test   %al,%al
  jne    L44
  mov    -0x88(%rbp),%edx
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%ecx
  mov    %ecx,%eax
  shl    $0x2,%eax
  add    %ecx,%eax
  add    %eax,%eax
  sub    %eax,%edx
  mov    %edx,-0x78(%rbp)
  mov    -0x78(%rbp),%eax
  mov    %eax,-0x84(%rbp)
  jmp    L10
L93:
  mov    -0x84(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x3,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0x68(%rbp),%rcx
  mov    -0x60(%rbp),%rax
  mov    $0x0,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fseek@plt>
  lea    -0x90(%rbp),%rcx
  lea    -0x94(%rbp),%rdx
  mov    -0x60(%rbp),%rax
  lea    D46(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  movl   $0x0,-0x80(%rbp)
  jmp    L26
L102:
  mov    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <ftell@plt>
  add    $0x2,%eax
  mov    %eax,-0x74(%rbp)
  lea    -0x98(%rbp),%rdi
  lea    -0x20(%rbp),%rsi
  lea    -0x4a(%rbp),%rcx
  lea    -0x9c(%rbp),%rdx
  mov    -0x60(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  lea    D206(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    -0x9c(%rbp),%eax
  test   %eax,%eax
  jne    L43
  lea    -0x54(%rbp),%rdx
  lea    -0x4a(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L43
  lea    D116(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  lea    -0x9c(%rbp),%rax
  mov    %rax,%rsi
  lea    D103(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L43:
  mov    -0x9c(%rbp),%eax
  cmp    $0x1,%eax
  jne    L159
  lea    D137(%rip),%rax
  mov    %rax,%rsi
  lea    D236(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x70(%rbp)
  mov    -0x74(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x70(%rbp),%rax
  mov    $0x0,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fseek@plt>
L159:
  addl   $0x1,-0x80(%rbp)
L26:
  mov    -0x94(%rbp),%eax
  cmp    %eax,-0x80(%rbp)
  jl     L102
  mov    -0x90(%rbp),%eax
  mov    %eax,-0x84(%rbp)
L10:
  cmpl   $0xffffffff,-0x84(%rbp)
  jne    L93
  cmpq   $0x0,-0x70(%rbp)
  je     L103
  movss  -0xa0(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movq   %xmm1,%rcx
  lea    -0x40(%rbp),%rsi
  lea    -0x54(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  movq   %rcx,%xmm0
  mov    %rsi,%r8
  mov    %rdx,%rcx
  mov    $0x0,%edx
  lea    D109(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  jmp    L22
L103:
  mov    -0x94(%rbp),%eax
  cmp    $0x2,%eax
  jg     L158
  mov    -0x60(%rbp),%rax
  mov    $0x1,%edx
  mov    $0x2,%esi
  mov    %rax,%rdi
  call   <fseek@plt>
  movss  -0xa0(%rbp),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd %xmm0,%xmm2
  movq   %xmm2,%rcx
  lea    -0x40(%rbp),%rsi
  lea    -0x54(%rbp),%rdx
  mov    -0x60(%rbp),%rax
  movq   %rcx,%xmm0
  mov    %rsi,%r8
  mov    %rdx,%rcx
  mov    $0x0,%edx
  lea    D109(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  mov    -0x68(%rbp),%rcx
  mov    -0x60(%rbp),%rax
  mov    $0x0,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fseek@plt>
  mov    -0x94(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x94(%rbp)
  mov    -0x94(%rbp),%edx
  mov    -0x60(%rbp),%rax
  lea    D157(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L22
L158:
  lea    D137(%rip),%rax
  mov    %rax,%rsi
  lea    D155(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x70(%rbp)
  lea    -0x8c(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  lea    D103(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fscanf@plt>
  mov    -0x68(%rbp),%rcx
  mov    -0x60(%rbp),%rax
  mov    $0x0,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fseek@plt>
  mov    -0x8c(%rbp),%eax
  lea    0xa(%rax),%ecx
  mov    -0x94(%rbp),%edx
  mov    -0x60(%rbp),%rax
  lea    D125(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x60(%rbp),%rax
  mov    $0x2,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <fseek@plt>
  mov    -0x60(%rbp),%rax
  mov    $0xffffffff,%ecx
  mov    $0x1,%edx
  lea    D125(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  movss  -0xa0(%rbp),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd %xmm0,%xmm3
  movq   %xmm3,%rcx
  lea    -0x40(%rbp),%rsi
  lea    -0x54(%rbp),%rdx
  mov    -0x60(%rbp),%rax
  movq   %rcx,%xmm0
  mov    %rsi,%r8
  mov    %rdx,%rcx
  mov    $0x0,%edx
  lea    D109(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  movl   $0x0,-0x7c(%rbp)
  jmp    L125
L146:
  mov    -0x60(%rbp),%rax
  mov    D105(%rip),%rdx
  movq   %rdx,%xmm0
  lea    D57(%rip),%r8
  lea    D57(%rip),%rdx
  mov    %rdx,%rcx
  mov    $0xffffffff,%edx
  lea    D109(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x7c(%rbp)
L125:
  cmpl   $0x1,-0x7c(%rbp)
  jle    L146
  mov    -0x70(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <fseek@plt>
  mov    -0x8c(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x8c(%rbp)
  mov    -0x8c(%rbp),%edx
  mov    -0x70(%rbp),%rax
  lea    D5(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
L22:
  mov    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0x9c(%rbp),%rax
  mov    %rax,%rsi
  lea    D103(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    $0x0,%edi
  call   <exit@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L61
  call   <__stack_chk_fail@plt>
L61:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D137
type: string
name: extract_symbolic_data
arguments: tag: D236
type: string
name: extract_symbolic_data
arguments: tag: D9
type: string
name: extract_symbolic_data
arguments: tag: D246
type: string
name: extract_symbolic_data
arguments: tag: D46
type: string
name: extract_symbolic_data
arguments: tag: D206
type: string
name: extract_symbolic_data
arguments: tag: D116
type: string
name: extract_symbolic_data
arguments: tag: D103
type: string
name: extract_symbolic_data
arguments: tag: D109
type: string
name: extract_symbolic_data
arguments: tag: D157
type: string
name: extract_symbolic_data
arguments: tag: D155
type: string
name: extract_symbolic_data
arguments: tag: D125
type: string
name: extract_symbolic_data
arguments: tag: D105
type: f64
name: extract_symbolic_data
arguments: tag: D57
type: string
name: extract_symbolic_data
arguments: tag: D5
type: string
name: extract_symbolic_data
arguments: tag: D41
type: string

tool: D137: r+

tool: D236: ../create/emp

tool: D9: Please enter SSN, name and salary separated by blanks


tool: D246: %s%s%f

tool: D46: %d%d

tool: D206: %d%s%s%f

tool: D116: Error!!!SSN all ready Exist, aborting the insert.

tool: D103: %d

tool: D109: %3d%10s%21s%10.2f


tool: D157: %4d

tool: D155: ../create/over

tool: D125: %4d%4d


tool: D105: 0

tool: D57: x

tool: D5: %4d


tool: D41: Insert complete.


assistant: ```c
main() {
  FILE *fp;
  FILE *fpd = 0;
  char issn[10], iname[21];
  float isal;
  int del;
  char ssn[10], name[21];
  float sal;
  int h;
  long off;
  int x;
  int i;
  int nrec;
  int j, z;
  int ovptr;
  int offr;
  int nov;
  fp = fopen("../create/emp", "r+");
  printf("Please enter SSN, name and salary separated by blanks\n");
  scanf("%s%s%f", issn, iname, &isal);
  for (x = i = 0; issn[i] != 0; i++) {
    x = x + issn[i];
  }
  h = x % 10;
  for (i = h; i != -1; i = ovptr) {
    off = i * (10L + 3 * (3 + 10 + 21 + 10 + 2));
    fseek(fp, off, 0);
    fscanf(fp, "%d%d", &nrec, &ovptr);
    for (j = 0; j < nrec; j++) {
      offr = ftell(fp) + 2;
      fscanf(fp, "%d%s%s%f", &del, ssn, name, &sal);
      if ((del == 0) && (strcmp(ssn, issn) == 0)) {
        printf("Error!!!SSN all ready Exist, aborting the insert.");
        fclose(fp);
        scanf("%d", &del);
        exit(1);
      }
      if (del == 1) {
        fpd = fopen("../create/emp", "r+");
        fseek(fpd, offr, 0);
      }
    }
  }
  if (fpd != 0) {
    fprintf(fpd, "%3d%10s%21s%10.2f\n", 0, issn, iname, isal);
    fclose(fpd);
  } else if (nrec < 3) {
    fseek(fp, 2L, 1);
    fprintf(fp, "%3d%10s%21s%10.2f\n", 0, issn, iname, isal);
    fseek(fp, off, 0);
    fprintf(fp, "%4d", ++nrec);
  } else {
    fpd = fopen("../create/over", "r+");
    fscanf(fpd, "%d", &nov);
    fseek(fp, off, 0);
    fprintf(fp, "%4d%4d\n", nrec, 10 + nov);
    fseek(fp, 0L, 2);
    fprintf(fp, "%4d%4d\n", 1, -1);
    fprintf(fp, "%3d%10s%21s%10.2f\n", 0, issn, iname, isal);
    for (z = 0; z < 2; z++) {
      fprintf(fp, "%3d%10s%21s%10.2f\n", -1, "x", "x", 0.0);
    }
    fseek(fpd, 0L, 0);
    fprintf(fpd, "%4d\n", ++nov);
    fclose(fpd);
  }
  fclose(fp);
  printf("Insert complete.\n");
  scanf("%d", &del);
  exit(0);
}
```