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

```asm
<regressionTest>:
  endbr64
  push   %r13
  xor    %eax,%eax
  push   %r12
  push   %rbp
  call   <Fractions_one@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %eax,%eax
  call   <Fractions_two@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <Fractions_initFract@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_two@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <Fractions_initFract@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xffffffff,%edi
  call   <Fractions_integer@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_half@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %edi,%edi
  mov    $0x14,%edx
  mov    $0x9,%esi
  call   <Fractions_initFract@plt>
  xor    %edi,%edi
  mov    $0x5,%edx
  mov    $0x1,%esi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    $0x4,%edx
  xor    %edi,%edi
  mov    $0x1,%esi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x14,%edx
  mov    $0x9,%esi
  mov    $0x2,%edi
  call   <Fractions_initFract@plt>
  xor    %edi,%edi
  mov    $0x5,%edx
  mov    $0x1,%esi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    $0x4,%edx
  xor    %edi,%edi
  mov    $0x9,%esi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x9,%edi
  call   <Fractions_cardinal@plt>
  mov    $0x9,%edx
  mov    $0x1,%esi
  xor    %edi,%edi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %edi,%edi
  mov    $0x3,%edx
  mov    $0xa,%esi
  call   <Fractions_initFract@plt>
  mov    $0xa,%edx
  mov    $0x3,%esi
  xor    %edi,%edi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x6,%edx
  mov    $0x1,%esi
  xor    %edi,%edi
  call   <Fractions_initFract@plt>
  mov    $0x3,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    $0x2,%edi
  mov    %eax,%r12d
  call   <Fractions_cardinal@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x64,%edx
  mov    $0x3,%esi
  xor    %edi,%edi
  call   <Fractions_initFract@plt>
  mov    $0x64,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    $0x32,%edi
  mov    %eax,%r12d
  call   <Fractions_cardinal@plt>
  mov    %eax,%edi
  call   <Fractions_reciprocal@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_inc@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x31,%edx
  mov    $0x2b,%esi
  mov    $0x9,%edi
  call   <Fractions_initFract@plt>
  xor    %edi,%edi
  mov    $0x7,%edx
  mov    $0x16,%esi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    $0x7,%edx
  xor    %edi,%edi
  mov    $0x16,%esi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x4,%edx
  mov    $0x1,%esi
  xor    %edi,%edi
  call   <Fractions_initFract@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  xor    %edi,%edi
  mov    $0x2,%edx
  mov    $0x1,%esi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    $0x4,%edx
  xor    %edi,%edi
  mov    $0x1,%esi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_dec@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %edi,%edi
  mov    $0x4,%edx
  mov    $0x1,%esi
  call   <Fractions_initFract@plt>
  xor    %edi,%edi
  mov    $0x4,%edx
  mov    $0x1,%esi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  mov    $0x2,%edx
  xor    %edi,%edi
  mov    $0x1,%esi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_dec@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x4,%edx
  mov    $0x1,%esi
  xor    %edi,%edi
  call   <Fractions_initFract@plt>
  mov    %eax,%edi
  call   <Fractions_negate@plt>
  mov    $0x4,%edx
  mov    $0x1,%esi
  mov    $0x3,%edi
  mov    %eax,%ebp
  call   <Fractions_initFract@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x3,%edi
  mov    %eax,%r12d
  call   <Fractions_initFract@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_dec@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xffffffff,%edi
  call   <Fractions_integer@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xfffffffe,%edi
  call   <Fractions_integer@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %eax,%eax
  call   <Fractions_one@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xffffffff,%edi
  call   <Fractions_integer@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    $0x2,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x2,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xfffffffe,%edi
  call   <Fractions_integer@plt>
  mov    $0x1,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xfffffffe,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0x2,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xfffffffe,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xffffffff,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    $0xfffffffe,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %edi,%edi
  call   <Fractions_integer@plt>
  mov    $0x1,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %edi,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0x1,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_add@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %edi,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xffffffff,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  xor    %edi,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0xfffffffe,%edi
  call   <Fractions_integer@plt>
  mov    $0x1,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  mov    $0x2,%edi
  call   <Fractions_integer@plt>
  mov    $0xffffffff,%edi
  mov    %eax,%ebp
  call   <Fractions_integer@plt>
  mov    $0x1,%edi
  mov    %eax,%r12d
  call   <Fractions_integer@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_isEqual@plt>
  mov    %eax,%edi
  call   <Assertion_Assert@plt>
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %eax,%edi
  call   <Fractions_writeFract@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0x6,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0x4,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0x4,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    $0x4,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0xc,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    $0x5,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %eax,%edi
  call   <Fractions_tan@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0xc,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  xor    %eax,%eax
  call   <Fractions_two@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_root2@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_root6@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_sub@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_power@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0xc,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    $0xc,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  xor    %eax,%eax
  call   <writeLn@plt>
  mov    $0xc,%edi
  call   <Fractions_cardinal@plt>
  mov    %eax,%ebp
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    $0xc,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    $0xc,%edi
  mov    %eax,%ebp
  call   <Fractions_cardinal@plt>
  mov    %eax,%r12d
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    $0xc,%edi
  mov    %eax,%r12d
  call   <Fractions_cardinal@plt>
  mov    %eax,%r13d
  xor    %eax,%eax
  call   <Fractions_pi@plt>
  mov    %r13d,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_sin@plt>
  mov    %r12d,%esi
  mov    %eax,%edi
  call   <Fractions_mult@plt>
  mov    %ebp,%esi
  mov    %eax,%edi
  call   <Fractions_div@plt>
  mov    %eax,%edi
  call   <Fractions_simplify@plt>
  mov    %eax,%edi
  call   <pf@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  jmp    1220 <writeLn@plt>
```

assistant: ```c
void regressionTest(void) {
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_half(), Fractions_initFract(1, 1, 2)), Fractions_negate(Fractions_one())));
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_initFract(1, 1, 2), Fractions_half()), Fractions_one()));
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_initFract(1, 1, 2), Fractions_negate(Fractions_half())), Fractions_two()));
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_negate(Fractions_two()), Fractions_negate(Fractions_half())), Fractions_negate(Fractions_initFract(1, 1, 2))));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_negate(Fractions_one()), Fractions_negate(Fractions_half())), Fractions_negate(Fractions_initFract(1, 1, 2))));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_negate(Fractions_half()), Fractions_negate(Fractions_half())), Fractions_integer(-1)));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_initFract(0, 1, 4), Fractions_initFract(0, 1, 5)), Fractions_initFract(0, 9, 20)));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_initFract(0, 9, 4), Fractions_initFract(0, 1, 5)), Fractions_initFract(2, 9, 20)));
  Assertion_Assert(Fractions_isEqual(Fractions_reciprocal(Fractions_initFract(0, 1, 9)), Fractions_cardinal(9)));
  Assertion_Assert(Fractions_isEqual(Fractions_reciprocal(Fractions_initFract(0, 3, 10)), Fractions_initFract(0, 10, 3)));
  Assertion_Assert(Fractions_isEqual(Fractions_reciprocal(Fractions_one()), Fractions_one()));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_reciprocal(Fractions_cardinal(2)), Fractions_reciprocal(Fractions_cardinal(3))), Fractions_initFract(0, 1, 6)));
  Assertion_Assert(Fractions_isEqual(Fractions_inc(Fractions_reciprocal(Fractions_cardinal(50)), Fractions_reciprocal(Fractions_cardinal(100))), Fractions_initFract(0, 3, 100)));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_initFract(0, 22, 7), Fractions_initFract(0, 22, 7)), Fractions_initFract(9, 43, 49)));
  Assertion_Assert(Fractions_isEqual(Fractions_dec(Fractions_initFract(0, 1, 4), Fractions_initFract(0, 1, 2)), Fractions_negate(Fractions_initFract(0, 1, 4))));
  Assertion_Assert(Fractions_isEqual(Fractions_dec(Fractions_initFract(0, 1, 2), Fractions_initFract(0, 1, 4)), Fractions_initFract(0, 1, 4)));
  Assertion_Assert(Fractions_isEqual(Fractions_dec(Fractions_initFract(3, 0, 0), Fractions_initFract(3, 1, 4)), Fractions_negate(Fractions_initFract(0, 1, 4))));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_integer(-1), Fractions_one()), Fractions_integer(-1)));
  Assertion_Assert(Fractions_isEqual(Fractions_integer(-1), Fractions_mult(Fractions_integer(-1), Fractions_one())));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_integer(-2), Fractions_one()), Fractions_integer(-2)));
  Assertion_Assert(Fractions_isEqual(Fractions_integer(-2), Fractions_mult(Fractions_integer(-2), Fractions_one())));
  Assertion_Assert(Fractions_isEqual(Fractions_integer(2), Fractions_mult(Fractions_integer(-2), Fractions_integer(-1))));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_integer(-2), Fractions_integer(-1)), Fractions_integer(2)));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_integer(-2), Fractions_integer(1)), Fractions_integer(-2)));
  Assertion_Assert(Fractions_isEqual(Fractions_mult(Fractions_integer(2), Fractions_integer(-1)), Fractions_integer(-2)));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_integer(-1), Fractions_integer(-1)), Fractions_integer(-2)));
  Assertion_Assert(Fractions_isEqual(Fractions_integer(-2), Fractions_add(Fractions_integer(-1), Fractions_integer(-1))));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_integer(-1), Fractions_integer(1)), Fractions_integer(0)));
  Assertion_Assert(Fractions_isEqual(Fractions_add(Fractions_integer(1), Fractions_integer(-1)), Fractions_integer(0)));
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_integer(-1), Fractions_integer(-1)), Fractions_integer(0)));
  Assertion_Assert(Fractions_isEqual(Fractions_integer(0), Fractions_sub(Fractions_integer(-1), Fractions_integer(-1))));
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_integer(-1), Fractions_integer(1)), Fractions_integer(-2)));
  Assertion_Assert(Fractions_isEqual(Fractions_sub(Fractions_integer(1), Fractions_integer(-1)), Fractions_integer(2)));
  Fractions_writeFract(Fractions_pi());
  writeLn();
  pf(Fractions_simplify(Fractions_sin(Fractions_pi())));
  writeLn();
  pf(Fractions_simplify(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(6)))));
  writeLn();
  pf(Fractions_simplify(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(4)))));
  writeLn();
  pf(Fractions_simplify(Fractions_mult(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(4))), Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(4))))));
  writeLn();
  pf(Fractions_simplify(Fractions_tan(Fractions_mult(Fractions_cardinal(5), Fractions_div(Fractions_pi(), Fractions_cardinal(12))))));
  writeLn();
  pf(Fractions_simplify(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12)))));
  writeLn();
  pf(Fractions_simplify(Fractions_power(Fractions_sub(Fractions_root6(), Fractions_root2()), Fractions_two())));
  writeLn();
  pf(Fractions_simplify(Fractions_mult(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12))), Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12))))));
  writeLn();
  pf(Fractions_simplify(Fractions_div(Fractions_mult(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12))), Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12)))), Fractions_mult(Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12))), Fractions_sin(Fractions_div(Fractions_pi(), Fractions_cardinal(12)))))));
  writeLn();
}
```