user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<main>:
  endbr64
  push   %r12
  mov    $0x7fffffff,%esi
  mov    $0xfffffff6,%edi
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <fn1@plt>
  cmp    $0x7ffffff7,%eax
  je     L213
L231:
  xor    %eax,%eax
  call   <__builtin_abort@plt>
L185:
  lea    0x4(%rsp),%r12
  mov    $0xffff,%esi
  mov    $0x7f,%edi
  mov    %r12,%rdx
  call   <fn3@plt>
  cmp    $0x1007e,%eax
  jne    L184
  cmpl   $0x0,0x4(%rsp)
  je     L68
L184:
  xor    %eax,%eax
  call   <__builtin_abort@plt>
L3:
  xor    %esi,%esi
  mov    %r12,%rdx
  mov    $0xffff,%edi
  call   <fn4@plt>
  cmp    $0xffffffff80008000,%rax
  jne    L216
  cmpl   $0x0,0x4(%rsp)
  jne    L216
L223:
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %r12,%rdx
  call   <fn5@plt>
  cmp    $0x9b,%al
  jne    L49
  cmpl   $0x0,0x4(%rsp)
  jne    L233
L49:
  xor    %eax,%eax
  call   <__builtin_abort@plt>
L106:
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %r12,%rdx
  call   <fn6@plt>
  cmp    $0xbd,%al
  jne    L215
  cmpl   $0x0,0x4(%rsp)
  je     L29
L215:
  xor    %eax,%eax
  call   <__builtin_abort@plt>
L160:
  xor    %esi,%esi
  xor    %edi,%edi
  mov    %r12,%rdx
  call   <fn7@plt>
  test   %eax,%eax
  jne    L97
  mov    0x4(%rsp),%eax
  test   %eax,%eax
  jne    L109
L97:
  xor    %eax,%eax
  call   <__builtin_abort@plt>
L87:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L147
  add    $0x10,%rsp
  xor    %eax,%eax
  pop    %r12
  ret
  nopl   0x0(%rax)
L216:
  xor    %eax,%eax
  call   <__builtin_abort@plt>
  jmp    L223
L109:
  mov    %r12,%rdx
  mov    $0x3,%esi
  mov    $0x3f,%edi
  call   <fn7@plt>
  cmp    $0x12,%eax
  jne    L97
  cmpl   $0x0,0x4(%rsp)
  je     L97
  jmp    L87
L213:
  xor    %esi,%esi
  xor    %edi,%edi
  call   <fn2@plt>
  test   %ax,%ax
  jne    L231
  mov    $0x3fff,%esi
  mov    $0x20,%edi
  call   <fn2@plt>
  cmp    $0xffe0,%ax
  jne    L231
  jmp    L185
L29:
  mov    %r12,%rdx
  mov    $0x3,%esi
  mov    $0x3f,%edi
  call   <fn6@plt>
  add    $0x1,%al
  jne    L215
  cmpl   $0x0,0x4(%rsp)
  jne    L215
  jmp    L160
L68:
  xor    %esi,%esi
  mov    %r12,%rdx
  mov    $0xffffff80,%edi
  call   <fn3@plt>
  cmp    $0xffffff80,%eax
  jne    L184
  cmpl   $0x0,0x4(%rsp)
  jne    L184
  jmp    L3
L233:
  mov    %r12,%rdx
  mov    $0x3,%esi
  mov    $0x3f,%edi
  call   <fn5@plt>
  cmp    $0xf0,%al
  jne    L49
  cmpl   $0x0,0x4(%rsp)
  je     L49
  jmp    L106
L147:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int main() {
  int ovf;
  if (fn1(-10, 0x7fffffff) != (int)(-10U - 0x7fffffff) || fn2(0, 0) != 0 || fn2(32, 16383) != (short int)524256ULL)
    __builtin_abort();
  if (fn3(0x7f, (unsigned short)~0, &ovf) != (int)(0x7f + (unsigned short)~0) || ovf || fn3(-0x7f - 1, 0, &ovf) != (int)(-0x7f - 1) || ovf)
    __builtin_abort();
  if (fn4(65535, 0, &ovf) != 65535L * -32768 || ovf)
    __builtin_abort();
  if (fn5(0, 0, &ovf) != (signed char)(0x7f / 4 * 5) || !ovf || fn5(63, 3, &ovf) != (signed char)((0x7f / 4 + 63) * 8) || !ovf)
    __builtin_abort();
  if (fn6(0, 0, &ovf) != (unsigned char)~0 - 66 || ovf || fn6(63, 3, &ovf) != (unsigned char)~0 || ovf)
    __builtin_abort();
  if (fn7(0, 0, &ovf) != 0 || !ovf || fn7(63, 3, &ovf) != 18 || !ovf)
    __builtin_abort();
  return 0;
}
```