user: 下面的汇编指令对应的C源代码是什么：

```asm
<main>:
  endbr64
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  mov    $0x7fffffff,%esi
  mov    $0xfffffff6,%edi
  call   <fn1@plt>
  cmp    $0x7ffffff7,%eax
  je     L153
L135:
  mov    $0x0,%eax
  call   <__builtin_abort@plt>
L31:
  lea    0x4(%rsp),%rdx
  mov    $0xffff,%esi
  mov    $0x7f,%edi
  call   <fn3@plt>
  cmp    $0x1007e,%eax
  jne    L256
  cmpl   $0x0,0x4(%rsp)
  je     L95
L256:
  mov    $0x0,%eax
  call   <__builtin_abort@plt>
L58:
  lea    0x4(%rsp),%rdx
  mov    $0x0,%esi
  mov    $0xffff,%edi
  call   <fn4@plt>
  cmp    $0xffffffff80008000,%rax
  jne    L18
  cmpl   $0x0,0x4(%rsp)
  je     L251
L18:
  mov    $0x0,%eax
  call   <__builtin_abort@plt>
L251:
  lea    0x4(%rsp),%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <fn5@plt>
  cmp    $0x9b,%al
  jne    L125
  cmpl   $0x0,0x4(%rsp)
  jne    L25
L125:
  mov    $0x0,%eax
  call   <__builtin_abort@plt>
L130:
  lea    0x4(%rsp),%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <fn6@plt>
  cmp    $0xbd,%al
  jne    L110
  cmpl   $0x0,0x4(%rsp)
  je     L265
L110:
  mov    $0x0,%eax
  call   <__builtin_abort@plt>
L131:
  lea    0x4(%rsp),%rdx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <fn7@plt>
  test   %eax,%eax
  jne    L184
  cmpl   $0x0,0x4(%rsp)
  jne    L55
L184:
  mov    $0x0,%eax
  call   <__builtin_abort@plt>
L107:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L2
  mov    $0x0,%eax
  add    $0x18,%rsp
  ret
L153:
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <fn2@plt>
  test   %ax,%ax
  jne    L135
  mov    $0x3fff,%esi
  mov    $0x20,%edi
  call   <fn2@plt>
  cmp    $0xffe0,%ax
  jne    L135
  jmp    L31
L95:
  lea    0x4(%rsp),%rdx
  mov    $0x0,%esi
  mov    $0xffffff80,%edi
  call   <fn3@plt>
  cmp    $0xffffff80,%eax
  jne    L256
  cmpl   $0x0,0x4(%rsp)
  je     L58
  jmp    L256
L25:
  lea    0x4(%rsp),%rdx
  mov    $0x3,%esi
  mov    $0x3f,%edi
  call   <fn5@plt>
  cmp    $0xf0,%al
  jne    L125
  cmpl   $0x0,0x4(%rsp)
  jne    L130
  jmp    L125
L265:
  lea    0x4(%rsp),%rdx
  mov    $0x3,%esi
  mov    $0x3f,%edi
  call   <fn6@plt>
  cmp    $0xff,%al
  jne    L110
  cmpl   $0x0,0x4(%rsp)
  je     L131
  jmp    L110
L55:
  lea    0x4(%rsp),%rdx
  mov    $0x3,%esi
  mov    $0x3f,%edi
  call   <fn7@plt>
  cmp    $0x12,%eax
  jne    L184
  cmpl   $0x0,0x4(%rsp)
  jne    L107
  jmp    L184
L2:
  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;
}
```