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

```asm
<test_add>:
  endbr64
  sub    $0x8,%rsp
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <add_i8@plt>
  cmp    $0x2,%eax
  je     L273
  mov    $0x7c,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
L202:
  add    $0x8,%rsp
  ret
L273:
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <add_i8@plt>
  test   %eax,%eax
  jne    L53
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <add_i8@plt>
  cmp    $0xfffffffe,%eax
  je     L28
  mov    $0x80,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L53:
  mov    $0x7e,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L28:
  mov    $0x1,%esi
  mov    $0xff,%edi
  call   <add_i8@plt>
  test   %eax,%eax
  jne    L163
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <add_i16@plt>
  cmp    $0x2,%eax
  je     L179
  mov    $0x85,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L163:
  mov    $0x82,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L179:
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <add_i16@plt>
  test   %eax,%eax
  jne    L61
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <add_i16@plt>
  cmp    $0xfffffffe,%eax
  je     L300
  mov    $0x89,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L61:
  mov    $0x87,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L300:
  mov    $0x1,%esi
  mov    $0xffff,%edi
  call   <add_i16@plt>
  test   %eax,%eax
  jne    L294
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <add_i32@plt>
  cmp    $0x2,%eax
  je     L204
  mov    $0x8e,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L294:
  mov    $0x8b,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L204:
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <add_i32@plt>
  test   %eax,%eax
  jne    L249
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <add_i32@plt>
  cmp    $0xfffffffe,%eax
  je     L56
  mov    $0x92,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L249:
  mov    $0x90,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L56:
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <add_i32@plt>
  test   %eax,%eax
  jne    L30
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <add_i64@plt>
  cmp    $0x2,%eax
  je     L262
  mov    $0x97,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L30:
  mov    $0x94,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L262:
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <add_i64@plt>
  test   %eax,%eax
  jne    L240
  mov    $0xffffffff,%esi
  mov    $0xffffffffffffffff,%rdi
  call   <add_i64@plt>
  cmp    $0xfffffffe,%eax
  je     L222
  mov    $0x9b,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L240:
  mov    $0x99,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
L222:
  mov    $0x1,%esi
  mov    $0xffffffffffffffff,%rdi
  call   <add_i64@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L202
  mov    $0x9d,%esi
  mov    $0x0,%edi
  call   <fail_real@plt>
  jmp    L202
```

assistant: ```c
int test_add(void) {
  if (add_i8(1, 1) != 2)
    return fail_real(0, 124);
  if (add_i8(1, -1) != 0)
    return fail_real(0, 126);
  if (add_i8(-1, -1) != -2)
    return fail_real(0, 128);
  if (add_i8(255, 1) != 0)
    return fail_real(0, 130);
  if (add_i16(1, 1) != 2)
    return fail_real(0, 133);
  if (add_i16(1, -1) != 0)
    return fail_real(0, 135);
  if (add_i16(-1, -1) != -2)
    return fail_real(0, 137);
  if (add_i16(65535, 1) != 0)
    return fail_real(0, 139);
  if (add_i32(1, 1) != 2)
    return fail_real(0, 142);
  if (add_i32(1, -1) != 0)
    return fail_real(0, 144);
  if (add_i32(-1, -1) != -2)
    return fail_real(0, 146);
  if (add_i32(~0u, 1) != 0)
    return fail_real(0, 148);
  if (add_i64(1, 1) != 2)
    return fail_real(0, 151);
  if (add_i64(1, -1) != 0)
    return fail_real(0, 153);
  if (add_i64(-1, -1) != -2)
    return fail_real(0, 155);
  if (add_i64(~0ull, 1) != 0)
    return fail_real(0, 157);
  return 0x1;
}
```