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

```asm
<sample_add_sub>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <min_int@plt>
  mov    %eax,-0x8(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,%edi
  call   <max_int@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%edx
  mov    -0x8(%rbp),%ecx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x8(%rbp),%eax
  lea    0x1(%rax),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x8(%rbp),%eax
  lea    0x2(%rax),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x8(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x4(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  neg    %eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    $0xfffffffe,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    $0xffffffff,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    $0x1,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    $0x2,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x4(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x4(%rbp),%eax
  lea    0x3(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x2,%eax
  neg    %eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x4(%rbp),%eax
  lea    -0x2(%rax),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x4(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x4(%rbp),%ecx
  mov    -0x14(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <test_add_sub@plt>
  nop
  leave
  ret
```

assistant: ```c
void sample_add_sub(int64_t x, uint32_t n) {
  int64_t min, max;
  min = min_int(n);
  max = max_int(n);
  test_add_sub(x, min, n);
  test_add_sub(x, min + 1, n);
  test_add_sub(x, min + 2, n);
  test_add_sub(x, min / 4, n);
  test_add_sub(x, -(max / 4), n);
  test_add_sub(x, -2, n);
  test_add_sub(x, -1, n);
  test_add_sub(x, 0, n);
  test_add_sub(x, 1, n);
  test_add_sub(x, 2, n);
  test_add_sub(x, max / 4, n);
  test_add_sub(x, -(max / 4), n);
  test_add_sub(x, max - 2, n);
  test_add_sub(x, max - 1, n);
  test_add_sub(x, max, n);
}
```