user: 请从给定的汇编指令推导出C源代码:

```asm
<main>:
  endbr64
  sub    $0x8,%rsp
  mov    $0xffffffe2,%edi
  call   <test1@plt>
  test   %eax,%eax
  jne    L852
L539:
  mov    $0xffffffe3,%edi
  call   <test1@plt>
  cmp    $0x1,%eax
  je     L644
  xor    %eax,%eax
  call   <abort@plt>
L644:
  mov    $0xffffffec,%edi
  call   <test1@plt>
  cmp    $0x1,%eax
  je     L230
  xor    %eax,%eax
  call   <abort@plt>
L230:
  mov    $0xffffffed,%edi
  call   <test1@plt>
  test   %eax,%eax
  jne    L784
L326:
  xor    %edi,%edi
  call   <test2@plt>
  cmp    $0x1,%eax
  je     L721
  xor    %eax,%eax
  call   <abort@plt>
L721:
  mov    $0x9,%edi
  call   <test2@plt>
  cmp    $0x1,%eax
  je     L18
  xor    %eax,%eax
  call   <abort@plt>
L18:
  mov    $0xa,%edi
  call   <test2@plt>
  test   %eax,%eax
  jne    L220
L377:
  mov    $0xffffffff,%edi
  call   <test2@plt>
  cmp    $0x1,%eax
  je     L715
  xor    %eax,%eax
  call   <abort@plt>
L715:
  mov    $0xfffffff7,%edi
  call   <test2@plt>
  cmp    $0x1,%eax
  je     L37
  xor    %eax,%eax
  call   <abort@plt>
L37:
  mov    $0xfffffff6,%edi
  call   <test2@plt>
  test   %eax,%eax
  jne    L566
L59:
  mov    $0xffffffe2,%edi
  call   <test3@plt>
  cmp    $0x1,%eax
  je     L181
  xor    %eax,%eax
  call   <abort@plt>
L181:
  mov    $0xffffffe3,%edi
  call   <test3@plt>
  test   %eax,%eax
  jne    L300
L84:
  mov    $0xffffffec,%edi
  call   <test3@plt>
  test   %eax,%eax
  jne    L695
L90:
  mov    $0xffffffed,%edi
  call   <test3@plt>
  cmp    $0x1,%eax
  je     L359
  xor    %eax,%eax
  call   <abort@plt>
L359:
  xor    %edi,%edi
  call   <test4@plt>
  test   %eax,%eax
  jne    L373
L541:
  mov    $0x9,%edi
  call   <test4@plt>
  test   %eax,%eax
  jne    L329
L421:
  mov    $0xa,%edi
  call   <test4@plt>
  cmp    $0x1,%eax
  je     L876
  xor    %eax,%eax
  call   <abort@plt>
L876:
  mov    $0xffffffff,%edi
  call   <test4@plt>
  test   %eax,%eax
  jne    L355
L357:
  mov    $0xfffffff7,%edi
  call   <test4@plt>
  test   %eax,%eax
  jne    L801
L361:
  mov    $0xfffffff6,%edi
  call   <test4@plt>
  cmp    $0x1,%eax
  je     L17
  xor    %eax,%eax
  call   <abort@plt>
L17:
  mov    $0xffffffe2,%edi
  call   <test5@plt>
  test   %eax,%eax
  jne    L745
L427:
  mov    $0xffffffe3,%edi
  call   <test5@plt>
  test   %eax,%eax
  jne    L687
L237:
  mov    $0xffffffec,%edi
  call   <test5@plt>
  test   %eax,%eax
  jne    L127
L761:
  mov    $0xffffffed,%edi
  call   <test5@plt>
  cmp    $0x1,%eax
  je     L195
  xor    %eax,%eax
  call   <abort@plt>
L195:
  xor    %edi,%edi
  call   <test6@plt>
  test   %eax,%eax
  jne    L497
L145:
  mov    $0x9,%edi
  call   <test6@plt>
  test   %eax,%eax
  jne    L288
L469:
  mov    $0xa,%edi
  call   <test6@plt>
  cmp    $0x1,%eax
  je     L879
  xor    %eax,%eax
  call   <abort@plt>
L879:
  mov    $0xffffffff,%edi
  call   <test6@plt>
  test   %eax,%eax
  jne    L403
L102:
  mov    $0xfffffff7,%edi
  call   <test6@plt>
  test   %eax,%eax
  jne    L360
L194:
  mov    $0xfffffff6,%edi
  call   <test6@plt>
  test   %eax,%eax
  jne    L108
L759:
  mov    $0xffffffe2,%edi
  call   <test7@plt>
  test   %eax,%eax
  jne    L110
L547:
  mov    $0xffffffe3,%edi
  call   <test7@plt>
  cmp    $0x1,%eax
  je     L418
  xor    %eax,%eax
  call   <abort@plt>
L418:
  mov    $0xffffffec,%edi
  call   <test7@plt>
  cmp    $0x1,%eax
  je     L41
  xor    %eax,%eax
  call   <abort@plt>
L41:
  mov    $0xffffffed,%edi
  call   <test7@plt>
  cmp    $0x1,%eax
  je     L744
  xor    %eax,%eax
  call   <abort@plt>
L744:
  xor    %edi,%edi
  call   <test8@plt>
  cmp    $0x1,%eax
  je     L416
  xor    %eax,%eax
  call   <abort@plt>
L416:
  mov    $0x9,%edi
  call   <test8@plt>
  cmp    $0x1,%eax
  je     L717
  xor    %eax,%eax
  call   <abort@plt>
L717:
  mov    $0xa,%edi
  call   <test8@plt>
  cmp    $0x1,%eax
  je     L218
  xor    %eax,%eax
  call   <abort@plt>
L218:
  mov    $0xffffffff,%edi
  call   <test8@plt>
  cmp    $0x1,%eax
  je     L475
  xor    %eax,%eax
  call   <abort@plt>
L475:
  mov    $0xfffffff7,%edi
  call   <test8@plt>
  cmp    $0x1,%eax
  je     L366
  xor    %eax,%eax
  call   <abort@plt>
L366:
  mov    $0xfffffff6,%edi
  call   <test8@plt>
  test   %eax,%eax
  jne    L9
L607:
  mov    $0xffffffe2,%edi
  call   <test9@plt>
  cmp    $0x1,%eax
  je     L415
  xor    %eax,%eax
  call   <abort@plt>
L415:
  mov    $0xffffffe3,%edi
  call   <test9@plt>
  test   %eax,%eax
  jne    L178
L137:
  mov    $0xffffffec,%edi
  call   <test9@plt>
  test   %eax,%eax
  jne    L588
L723:
  mov    $0xffffffed,%edi
  call   <test9@plt>
  test   %eax,%eax
  jne    L6
L203:
  xor    %edi,%edi
  call   <test10@plt>
  test   %eax,%eax
  jne    L289
L639:
  mov    $0x9,%edi
  call   <test10@plt>
  test   %eax,%eax
  jne    L602
L386:
  mov    $0xa,%edi
  call   <test10@plt>
  test   %eax,%eax
  jne    L882
L701:
  mov    $0xffffffff,%edi
  call   <test10@plt>
  test   %eax,%eax
  jne    L12
L45:
  mov    $0xfffffff7,%edi
  call   <test10@plt>
  test   %eax,%eax
  jne    L823
L779:
  mov    $0xfffffff6,%edi
  call   <test10@plt>
  cmp    $0x1,%eax
  je     L693
  xor    %eax,%eax
  call   <abort@plt>
L693:
  mov    $0xffffffe2,%edi
  call   <test11@plt>
  cmp    $0x1,%eax
  je     L748
  xor    %eax,%eax
  call   <abort@plt>
L748:
  mov    $0xffffffe3,%edi
  call   <test11@plt>
  cmp    $0x1,%eax
  je     L505
  xor    %eax,%eax
  call   <abort@plt>
L505:
  mov    $0xffffffec,%edi
  call   <test11@plt>
  cmp    $0x1,%eax
  je     L48
  xor    %eax,%eax
  call   <abort@plt>
L48:
  mov    $0xffffffed,%edi
  call   <test11@plt>
  test   %eax,%eax
  jne    L375
L675:
  xor    %edi,%edi
  call   <test12@plt>
  cmp    $0x1,%eax
  je     L797
  xor    %eax,%eax
  call   <abort@plt>
L797:
  mov    $0x9,%edi
  call   <test12@plt>
  cmp    $0x1,%eax
  je     L336
  xor    %eax,%eax
  call   <abort@plt>
L336:
  mov    $0xa,%edi
  call   <test12@plt>
  test   %eax,%eax
  jne    L707
L455:
  mov    $0xffffffff,%edi
  call   <test12@plt>
  cmp    $0x1,%eax
  je     L49
  xor    %eax,%eax
  call   <abort@plt>
L49:
  mov    $0xfffffff7,%edi
  call   <test12@plt>
  cmp    $0x1,%eax
  je     L513
  xor    %eax,%eax
  call   <abort@plt>
L513:
  mov    $0xfffffff6,%edi
  call   <test12@plt>
  cmp    $0x1,%eax
  je     L821
  xor    %eax,%eax
  call   <abort@plt>
L821:
  xor    %eax,%eax
  add    $0x8,%rsp
  ret
L707:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L455
L375:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L675
L823:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L779
L12:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L45
L882:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L701
L602:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L386
L289:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L639
L6:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L203
L588:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L723
L178:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L137
L9:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L607
L110:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L547
L108:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L759
L360:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L194
L403:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L102
L288:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L469
L497:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L145
L127:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L761
L687:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L237
L745:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L427
L801:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L361
L355:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L357
L329:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L421
L373:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L541
L695:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L90
L300:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L84
L566:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L59
L220:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L377
L784:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L326
L852:
  xor    %eax,%eax
  call   <abort@plt>
  jmp    L539
```

assistant: ```c
int main() {
  if (test1(-30) != 0)
    abort();
  if (test1(-29) != 1)
    abort();
  if (test1(-20) != 1)
    abort();
  if (test1(-19) != 0)
    abort();
  if (test2(0) != 1)
    abort();
  if (test2(9) != 1)
    abort();
  if (test2(10) != 0)
    abort();
  if (test2(-1) != 1)
    abort();
  if (test2(-9) != 1)
    abort();
  if (test2(-10) != 0)
    abort();
  if (test3(-30) != 1)
    abort();
  if (test3(-29) != 0)
    abort();
  if (test3(-20) != 0)
    abort();
  if (test3(-19) != 1)
    abort();
  if (test4(0) != 0)
    abort();
  if (test4(9) != 0)
    abort();
  if (test4(10) != 1)
    abort();
  if (test4(-1) != 0)
    abort();
  if (test4(-9) != 0)
    abort();
  if (test4(-10) != 1)
    abort();
  if (test5(-30) != 0)
    abort();
  if (test5(-29) != 0)
    abort();
  if (test5(-20) != 0)
    abort();
  if (test5(-19) != 1)
    abort();
  if (test6(0) != 0)
    abort();
  if (test6(9) != 0)
    abort();
  if (test6(10) != 1)
    abort();
  if (test6(-1) != 0)
    abort();
  if (test6(-9) != 0)
    abort();
  if (test6(-10) != 0)
    abort();
  if (test7(-30) != 0)
    abort();
  if (test7(-29) != 1)
    abort();
  if (test7(-20) != 1)
    abort();
  if (test7(-19) != 1)
    abort();
  if (test8(0) != 1)
    abort();
  if (test8(9) != 1)
    abort();
  if (test8(10) != 1)
    abort();
  if (test8(-1) != 1)
    abort();
  if (test8(-9) != 1)
    abort();
  if (test8(-10) != 0)
    abort();
  if (test9(-30) != 1)
    abort();
  if (test9(-29) != 0)
    abort();
  if (test9(-20) != 0)
    abort();
  if (test9(-19) != 0)
    abort();
  if (test10(0) != 0)
    abort();
  if (test10(9) != 0)
    abort();
  if (test10(10) != 0)
    abort();
  if (test10(-1) != 0)
    abort();
  if (test10(-9) != 0)
    abort();
  if (test10(-10) != 1)
    abort();
  if (test11(-30) != 1)
    abort();
  if (test11(-29) != 1)
    abort();
  if (test11(-20) != 1)
    abort();
  if (test11(-19) != 0)
    abort();
  if (test12(0) != 1)
    abort();
  if (test12(9) != 1)
    abort();
  if (test12(10) != 0)
    abort();
  if (test12(-1) != 1)
    abort();
  if (test12(-9) != 1)
    abort();
  if (test12(-10) != 1)
    abort();
  return 0;
}
```