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

```asm
<call3>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x98,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  lea    0x80(%rsp),%rax
  mov    %rax,0x58(%rsp)
  lea    0x7c(%rsp),%rax
  mov    %rax,0x50(%rsp)
  lea    0x78(%rsp),%rax
  mov    %rax,0x48(%rsp)
  lea    0x74(%rsp),%rax
  mov    %rax,0x40(%rsp)
  lea    0x70(%rsp),%rax
  mov    %rax,0x38(%rsp)
  lea    0x84(%rsp),%rax
  mov    %rax,0x60(%rsp)
  jmp    L14
  nop
L338:
  lea    -0x41(%rax),%edx
  cmp    $0xe,%edx
  jbe    L71
  lea    -0x28(%rax),%edx
  cmp    $0x18,%edx
  jbe    L390
  cmp    $0x27,%eax
  jg     L209
  lea    D69(%rip),%rdi
  call   <puts@plt>
  mov    0x10(%rsp),%r14d
  nopw   0x0(%rax,%rax,1)
L283:
  mov    %r14d,%esi
  lea    D114(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %r15d,%esi
  lea    D309(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %r13d,%esi
  lea    D270(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  xor    %eax,%eax
  mov    %ebp,%esi
  lea    D28(%rip),%rdi
  call   <printf@plt>
  cmpl   $0x64,0x70(%rsp)
  jg     L36
L14:
  lea    D127(%rip),%rdi
  call   <puts@plt>
  sub    $0x8,%rsp
  lea    D161(%rip),%rdi
  push   0x68(%rsp)
  mov    0x50(%rsp),%rdx
  mov    0x68(%rsp),%r9
  mov    0x60(%rsp),%r8
  mov    0x58(%rsp),%rcx
  mov    0x48(%rsp),%rsi
  call   <scanf@plt>
  mov    0x80(%rsp),%eax
  pop    %rcx
  pop    %rsi
  lea    -0x50(%rax),%edx
  cmp    $0x13,%edx
  jbe    L35
  lea    -0x41(%rax),%edx
  cmp    $0xe,%edx
  jbe    L114
  lea    -0x28(%rax),%edx
  cmp    $0x18,%edx
  jbe    L147
  cmp    $0x27,%eax
  jg     L126
  lea    D112(%rip),%rdi
  xor    %r13d,%r13d
  xor    %r15d,%r15d
  xor    %ebp,%ebp
  call   <puts@plt>
  movl   $0x4,0x24(%rsp)
  mov    $0x5,%ecx
  mov    $0x5,%esi
  movl   $0x4,0x30(%rsp)
  mov    $0x5,%r9d
  mov    $0x6,%r8d
  mov    $0x2,%r12d
  movl   $0x4,0x68(%rsp)
  mov    $0x1,%ebx
  mov    $0x1,%r14d
  movl   $0x5,0x34(%rsp)
  movl   $0x3,0x8(%rsp)
  movl   $0x3,0x18(%rsp)
  movl   $0x3,0x2c(%rsp)
  movl   $0x4,0x28(%rsp)
  movl   $0x2,0xc(%rsp)
  movl   $0x2,0x20(%rsp)
  movl   $0x3,0x1c(%rsp)
  movl   $0x1,0x4(%rsp)
  movl   $0x1,0x14(%rsp)
  movl   $0x2,0x10(%rsp)
L277:
  mov    0x74(%rsp),%eax
  lea    -0x50(%rax),%edx
  cmp    $0x13,%edx
  jbe    L199
  lea    -0x41(%rax),%edx
  cmp    $0xe,%edx
  jbe    L418
  lea    -0x28(%rax),%edx
  cmp    $0x18,%edx
  jbe    L217
  mov    %r8d,0x6c(%rsp)
  cmp    $0x27,%eax
  jg     L18
  lea    D102(%rip),%rdi
  call   <puts@plt>
  mov    0x1c(%rsp),%eax
  mov    0x10(%rsp),%r14d
  mov    0x6c(%rsp),%r8d
  mov    %eax,0x10(%rsp)
  mov    0x28(%rsp),%eax
  mov    %eax,0x1c(%rsp)
  mov    0x34(%rsp),%eax
  mov    %r8d,0x34(%rsp)
  mov    %eax,0x28(%rsp)
  nopl   0x0(%rax)
L61:
  mov    0x78(%rsp),%eax
  lea    -0x50(%rax),%edx
  cmp    $0x13,%edx
  jbe    L103
  lea    -0x41(%rax),%edx
  cmp    $0xe,%edx
  jbe    L191
  lea    -0x28(%rax),%edx
  cmp    $0x18,%edx
  jbe    L20
  cmp    $0x27,%eax
  jg     L188
  lea    D75(%rip),%rdi
  call   <puts@plt>
  mov    0x1c(%rsp),%eax
  mov    0x10(%rsp),%r14d
  mov    %eax,0x10(%rsp)
  mov    0x28(%rsp),%eax
  mov    %eax,0x1c(%rsp)
  mov    0x34(%rsp),%eax
  mov    %eax,0x28(%rsp)
  nopw   0x0(%rax,%rax,1)
L469:
  mov    0x7c(%rsp),%eax
  lea    -0x50(%rax),%edx
  cmp    $0x13,%edx
  jbe    L455
  lea    -0x41(%rax),%edx
  cmp    $0xe,%edx
  jbe    L463
  lea    -0x28(%rax),%edx
  cmp    $0x18,%edx
  jbe    L91
  cmp    $0x27,%eax
  jg     L265
  lea    D248(%rip),%rdi
  call   <puts@plt>
  mov    0x1c(%rsp),%eax
  mov    0x10(%rsp),%r14d
  mov    %eax,0x10(%rsp)
  mov    0x28(%rsp),%eax
  mov    %eax,0x1c(%rsp)
  nopw   0x0(%rax,%rax,1)
L23:
  mov    0x80(%rsp),%eax
  lea    -0x50(%rax),%edx
  cmp    $0x13,%edx
  jbe    L268
  lea    -0x41(%rax),%edx
  cmp    $0xe,%edx
  jbe    L434
  lea    -0x28(%rax),%edx
  cmp    $0x18,%edx
  jbe    L368
  cmp    $0x27,%eax
  jg     L471
  lea    D78(%rip),%rdi
  call   <puts@plt>
  mov    0x1c(%rsp),%eax
  mov    0x10(%rsp),%r14d
  mov    %eax,0x10(%rsp)
  nopl   0x0(%rax)
L381:
  mov    0x84(%rsp),%eax
  lea    -0x50(%rax),%edx
  cmp    $0x13,%edx
  ja     L338
  lea    D327(%rip),%rdi
  mov    %ebx,%ebp
  call   <puts@plt>
  jmp    L283
  xchg   %ax,%ax
L268:
  lea    D174(%rip),%rdi
  mov    %ebx,%ebp
  mov    %r12d,%ebx
  call   <puts@plt>
  jmp    L381
  nopl   0x0(%rax,%rax,1)
L455:
  lea    D83(%rip),%rdi
  mov    %ebx,%ebp
  mov    %r12d,%ebx
  call   <puts@plt>
  mov    0x8(%rsp),%r12d
  jmp    L23
  nopl   0x0(%rax,%rax,1)
L103:
  lea    D235(%rip),%rdi
  mov    %ebx,%ebp
  mov    %r12d,%ebx
  call   <puts@plt>
  mov    0x24(%rsp),%eax
  mov    0x8(%rsp),%r12d
  mov    %eax,0x8(%rsp)
  jmp    L469
  nopl   0x0(%rax,%rax,1)
L199:
  lea    D148(%rip),%rdi
  mov    %ecx,0x6c(%rsp)
  mov    %ebx,%ebp
  mov    %r12d,%ebx
  call   <puts@plt>
  mov    0x24(%rsp),%eax
  mov    0x6c(%rsp),%ecx
  mov    0x8(%rsp),%r12d
  mov    %ecx,0x24(%rsp)
  mov    %eax,0x8(%rsp)
  jmp    L61
  nop
L35:
  lea    D275(%rip),%rdi
  xor    %r13d,%r13d
  xor    %r14d,%r14d
  xor    %r15d,%r15d
  call   <puts@plt>
  mov    $0x3,%r12d
  movl   $0x5,0x24(%rsp)
  mov    $0x6,%ecx
  movl   $0x4,0x30(%rsp)
  mov    $0x5,%esi
  mov    $0x5,%r9d
  mov    $0x5,%r8d
  movl   $0x4,0x68(%rsp)
  mov    $0x2,%ebx
  mov    $0x1,%ebp
  movl   $0x4,0x34(%rsp)
  movl   $0x4,0x8(%rsp)
  movl   $0x3,0x18(%rsp)
  movl   $0x3,0x2c(%rsp)
  movl   $0x3,0x28(%rsp)
  movl   $0x2,0xc(%rsp)
  movl   $0x2,0x20(%rsp)
  movl   $0x2,0x1c(%rsp)
  movl   $0x1,0x4(%rsp)
  movl   $0x1,0x14(%rsp)
  movl   $0x1,0x10(%rsp)
  jmp    L277
L114:
  lea    D56(%rip),%rdi
  xor    %r14d,%r14d
  xor    %r15d,%r15d
  xor    %ebp,%ebp
  call   <puts@plt>
  mov    $0x1,%ebx
  movl   $0x4,0x24(%rsp)
  mov    $0x5,%ecx
  movl   $0x5,0x30(%rsp)
  mov    $0x6,%esi
  mov    $0x5,%r9d
  mov    $0x5,%r8d
  movl   $0x4,0x68(%rsp)
  mov    $0x2,%r12d
  mov    $0x1,%r13d
  movl   $0x4,0x34(%rsp)
  movl   $0x3,0x8(%rsp)
  movl   $0x4,0x18(%rsp)
  movl   $0x3,0x2c(%rsp)
  movl   $0x3,0x28(%rsp)
  movl   $0x3,0xc(%rsp)
  movl   $0x2,0x20(%rsp)
  movl   $0x2,0x1c(%rsp)
  movl   $0x2,0x4(%rsp)
  movl   $0x1,0x14(%rsp)
  movl   $0x1,0x10(%rsp)
  jmp    L277
L434:
  lea    D118(%rip),%rdi
  call   <puts@plt>
  mov    0xc(%rsp),%eax
  mov    0x4(%rsp),%r13d
  mov    %eax,0x4(%rsp)
  jmp    L381
  xchg   %ax,%ax
L463:
  lea    D186(%rip),%rdi
  call   <puts@plt>
  mov    0xc(%rsp),%eax
  mov    0x4(%rsp),%r13d
  mov    %eax,0x4(%rsp)
  mov    0x18(%rsp),%eax
  mov    %eax,0xc(%rsp)
  jmp    L23
  cs nopw 0x0(%rax,%rax,1)
L71:
  lea    D183(%rip),%rdi
  call   <puts@plt>
  mov    0x4(%rsp),%r13d
  jmp    L283
  cs nopw 0x0(%rax,%rax,1)
L191:
  lea    D105(%rip),%rdi
  call   <puts@plt>
  mov    0xc(%rsp),%eax
  mov    0x4(%rsp),%r13d
  mov    %eax,0x4(%rsp)
  mov    0x18(%rsp),%eax
  mov    %eax,0xc(%rsp)
  mov    0x30(%rsp),%eax
  mov    %eax,0x18(%rsp)
  jmp    L469
  xchg   %ax,%ax
L418:
  lea    D335(%rip),%rdi
  mov    %esi,0x6c(%rsp)
  call   <puts@plt>
  mov    0xc(%rsp),%eax
  mov    0x4(%rsp),%r13d
  mov    0x6c(%rsp),%esi
  mov    %eax,0x4(%rsp)
  mov    0x18(%rsp),%eax
  mov    %eax,0xc(%rsp)
  mov    0x30(%rsp),%eax
  mov    %esi,0x30(%rsp)
  mov    %eax,0x18(%rsp)
  jmp    L61
  nopw   0x0(%rax,%rax,1)
L126:
  lea    D310(%rip),%rdi
  xor    %r13d,%r13d
  xor    %r14d,%r14d
  xor    %r15d,%r15d
  call   <puts@plt>
  mov    $0x2,%r12d
  movl   $0x4,0x24(%rsp)
  mov    $0x5,%ecx
  movl   $0x4,0x30(%rsp)
  mov    $0x5,%esi
  xor    %ebp,%ebp
  mov    $0x5,%r9d
  movl   $0x4,0x68(%rsp)
  mov    $0x5,%r8d
  mov    $0x1,%ebx
  movl   $0x4,0x34(%rsp)
  movl   $0x3,0x8(%rsp)
  movl   $0x3,0x18(%rsp)
  movl   $0x3,0x2c(%rsp)
  movl   $0x3,0x28(%rsp)
  movl   $0x2,0xc(%rsp)
  movl   $0x2,0x20(%rsp)
  movl   $0x2,0x1c(%rsp)
  movl   $0x1,0x4(%rsp)
  movl   $0x1,0x14(%rsp)
  movl   $0x1,0x10(%rsp)
  jmp    L277
  nopl   (%rax)
L265:
  lea    D310(%rip),%rdi
  call   <puts@plt>
  jmp    L23
  nopl   0x0(%rax)
L209:
  lea    D310(%rip),%rdi
  call   <puts@plt>
  jmp    L283
  nopl   0x0(%rax)
L18:
  lea    D310(%rip),%rdi
  call   <puts@plt>
  jmp    L61
  nopl   0x0(%rax)
L471:
  lea    D310(%rip),%rdi
  call   <puts@plt>
  jmp    L381
  nopl   0x0(%rax)
L188:
  lea    D310(%rip),%rdi
  call   <puts@plt>
  jmp    L469
  nopl   0x0(%rax)
L20:
  lea    D103(%rip),%rdi
  call   <puts@plt>
  mov    0x20(%rsp),%eax
  mov    0x14(%rsp),%r15d
  mov    %eax,0x14(%rsp)
  mov    0x2c(%rsp),%eax
  mov    %eax,0x20(%rsp)
  mov    0x68(%rsp),%eax
  mov    %eax,0x2c(%rsp)
  jmp    L469
  cs nopw 0x0(%rax,%rax,1)
L217:
  lea    D10(%rip),%rdi
  mov    %r9d,0x6c(%rsp)
  call   <puts@plt>
  mov    0x20(%rsp),%eax
  mov    0x14(%rsp),%r15d
  mov    0x6c(%rsp),%r9d
  mov    %eax,0x14(%rsp)
  mov    0x2c(%rsp),%eax
  mov    %eax,0x20(%rsp)
  mov    0x68(%rsp),%eax
  mov    %r9d,0x68(%rsp)
  mov    %eax,0x2c(%rsp)
  jmp    L61
  nopl   (%rax)
L368:
  lea    D64(%rip),%rdi
  call   <puts@plt>
  mov    0x20(%rsp),%eax
  mov    0x14(%rsp),%r15d
  mov    %eax,0x14(%rsp)
  jmp    L381
  xchg   %ax,%ax
L390:
  lea    D151(%rip),%rdi
  call   <puts@plt>
  mov    0x14(%rsp),%r15d
  jmp    L283
  cs nopw 0x0(%rax,%rax,1)
L147:
  lea    D96(%rip),%rdi
  xor    %r13d,%r13d
  xor    %r14d,%r14d
  xor    %ebp,%ebp
  call   <puts@plt>
  mov    $0x1,%ebx
  movl   $0x4,0x24(%rsp)
  mov    $0x5,%ecx
  movl   $0x4,0x30(%rsp)
  mov    $0x5,%esi
  mov    $0x6,%r9d
  mov    $0x5,%r8d
  movl   $0x5,0x68(%rsp)
  mov    $0x2,%r12d
  mov    $0x1,%r15d
  movl   $0x4,0x34(%rsp)
  movl   $0x3,0x8(%rsp)
  movl   $0x3,0x18(%rsp)
  movl   $0x4,0x2c(%rsp)
  movl   $0x3,0x28(%rsp)
  movl   $0x2,0xc(%rsp)
  movl   $0x3,0x20(%rsp)
  movl   $0x2,0x1c(%rsp)
  movl   $0x1,0x4(%rsp)
  movl   $0x2,0x14(%rsp)
  movl   $0x1,0x10(%rsp)
  jmp    L277
L91:
  lea    D189(%rip),%rdi
  call   <puts@plt>
  mov    0x20(%rsp),%eax
  mov    0x14(%rsp),%r15d
  mov    %eax,0x14(%rsp)
  mov    0x2c(%rsp),%eax
  mov    %eax,0x20(%rsp)
  jmp    L23
  cs nopw 0x0(%rax,%rax,1)
L36:
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L336
  add    $0x98,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L336:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: tag: D69
data_type: string
name: extract_symbolic_data
arguments: tag: D114
data_type: string
name: extract_symbolic_data
arguments: tag: D309
data_type: string
name: extract_symbolic_data
arguments: tag: D270
data_type: string
name: extract_symbolic_data
arguments: tag: D28
data_type: string
name: extract_symbolic_data
arguments: tag: D127
data_type: string
name: extract_symbolic_data
arguments: tag: D161
data_type: string
name: extract_symbolic_data
arguments: tag: D112
data_type: string
name: extract_symbolic_data
arguments: tag: D102
data_type: string
name: extract_symbolic_data
arguments: tag: D75
data_type: string
name: extract_symbolic_data
arguments: tag: D248
data_type: string
name: extract_symbolic_data
arguments: tag: D78
data_type: string
name: extract_symbolic_data
arguments: tag: D327
data_type: string
name: extract_symbolic_data
arguments: tag: D174
data_type: string
name: extract_symbolic_data
arguments: tag: D83
data_type: string
name: extract_symbolic_data
arguments: tag: D235
data_type: string
name: extract_symbolic_data
arguments: tag: D148
data_type: string
name: extract_symbolic_data
arguments: tag: D275
data_type: string
name: extract_symbolic_data
arguments: tag: D56
data_type: string
name: extract_symbolic_data
arguments: tag: D118
data_type: string
name: extract_symbolic_data
arguments: tag: D186
data_type: string
name: extract_symbolic_data
arguments: tag: D183
data_type: string
name: extract_symbolic_data
arguments: tag: D105
data_type: string
name: extract_symbolic_data
arguments: tag: D335
data_type: string
name: extract_symbolic_data
arguments: tag: D310
data_type: string
name: extract_symbolic_data
arguments: tag: D103
data_type: string
name: extract_symbolic_data
arguments: tag: D10
data_type: string
name: extract_symbolic_data
arguments: tag: D64
data_type: string
name: extract_symbolic_data
arguments: tag: D151
data_type: string
name: extract_symbolic_data
arguments: tag: D96
data_type: string
name: extract_symbolic_data
arguments: tag: D189
data_type: string

tool: D69: bio fail

tool: D114: total fail is %d


tool: D309: total pass is %d


tool: D270: total cred is %d


tool: D28: total dist is %d


tool: D127: enter  mark of six subjict

tool: D161:  %d %d %d %d %d %d

tool: D112: myan fail

tool: D102: eng fail

tool: D75: math fail

tool: D248: phy fail

tool: D78:  che fail

tool: D327: bio distinct

tool: D174: che distinct

tool: D83: phy distinct

tool: D235: math distinct

tool: D148: eng distinct

tool: D275:  myan is distinct

tool: D56: myan credit

tool: D118: che credit

tool: D186: phy credit

tool: D183: bio credit

tool: D105: math credit

tool: D335: eng credit

tool: D310: error

tool: D103: math pass

tool: D10: eng pass

tool: D64: che pass

tool: D151: bio pass

tool: D96: myan pass

tool: D189: phy pass

assistant: ```c
void call3() {
  int myan, eng, math, phy, che, bio;
  int dist, pass, fail, cred;
  do {
    printf("enter  mark of six subjict\n");
    scanf(" %d %d %d %d %d %d", &myan, &eng, &math, &phy, &che, &bio);
    dist = 0, pass = 0, fail = 0, cred = 0;
    if (myan >= 80 && myan < 100) {
      printf(" myan is distinct\n");
      dist++;
    } else if (myan >= 65 && myan < 80) {
      printf("myan credit\n");
      cred++;
    } else if (myan >= 40 && myan < 65) {
      printf("myan pass\n");
      pass++;
    } else if (myan < 40) {
      printf("myan fail\n");
      fail++;
    } else
      printf("error\n");
    if (eng >= 80 && eng < 100) {
      printf("eng distinct\n");
      dist++;
    } else if (eng >= 65 && eng < 80) {
      printf("eng credit\n");
      cred++;
    } else if (eng >= 40 && eng < 65) {
      printf("eng pass\n");
      pass++;
    } else if (eng < 40) {
      printf("eng fail\n");
      fail++;
    } else
      printf("error\n");
    if (math >= 80 && math < 100) {
      printf("math distinct\n");
      dist++;
    } else if (math >= 65 && math < 80) {
      printf("math credit\n");
      cred++;
    } else if (math >= 40 && math < 65) {
      printf("math pass\n");
      pass++;
    } else if (math < 40) {
      printf("math fail\n");
      fail++;
    } else
      printf("error\n");
    if (phy >= 80 && phy < 100) {
      printf("phy distinct\n");
      dist++;
    } else if (phy >= 65 && phy < 80) {
      printf("phy credit\n");
      cred++;
    } else if (phy >= 40 && phy < 65) {
      printf("phy pass\n");
      pass++;
    } else if (phy < 40) {
      printf("phy fail\n");
      fail++;
    } else
      printf("error\n");
    if (che >= 80 && che < 100) {
      printf("che distinct\n");
      dist++;
    } else if (che >= 65 && che < 80) {
      printf("che credit\n");
      cred++;
    } else if (che >= 40 && che < 65) {
      printf("che pass\n");
      pass++;
    } else if (che < 40) {
      printf(" che fail\n");
      fail++;
    } else
      printf("error\n");
    if (bio >= 80 && bio < 100) {
      printf("bio distinct\n");
      dist++;
    } else if (bio >= 65 && bio < 80) {
      printf("bio credit\n");
      cred++;
    } else if (bio >= 40 && bio < 65) {
      printf("bio pass\n");
      pass++;
    } else if (bio < 40) {
      printf("bio fail\n");
      fail++;
    } else
      printf("error\n");
    printf("total fail is %d\n", fail);
    printf("total pass is %d\n", pass);
    printf("total cred is %d\n", cred);
    printf("total dist is %d\n", dist);
  } while (myan <= 100);
}
```