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

```asm
<test_fetch_and_op>:
  endbr64
  sub    $0x78,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x68(%rsp)
  xor    %eax,%eax
  mov    $0xfffffff5,%eax
  lock xadd %al,0x65(%rsp)
  mov    %al,0x65(%rsp)
  mov    $0xfffffff5,%eax
  lock xadd %al,0x67(%rsp)
  mov    %al,0x67(%rsp)
  mov    $0xfffffff5,%eax
  lock xadd %ax,0xa(%rsp)
  mov    %ax,0xa(%rsp)
  mov    $0xfffffff5,%eax
  lock xadd %ax,0xe(%rsp)
  mov    %ax,0xe(%rsp)
  mov    $0xfffffff5,%eax
  lock xadd %eax,0x14(%rsp)
  mov    %eax,0x14(%rsp)
  mov    $0xfffffff5,%eax
  lock xadd %eax,0x1c(%rsp)
  mov    %eax,0x1c(%rsp)
  mov    $0xfffffffffffffff5,%rax
  lock xadd %rax,0x28(%rsp)
  mov    %rax,0x28(%rsp)
  mov    $0xfffffffffffffff5,%rax
  lock xadd %rax,0x38(%rsp)
  mov    %rax,0x38(%rsp)
  mov    $0xfffffffffffffff5,%rax
  lock xadd %rax,0x48(%rsp)
  mov    %rax,0x48(%rsp)
  mov    $0xfffffffffffffff5,%rax
  lock xadd %rax,0x58(%rsp)
  mov    %rax,0x58(%rsp)
  mov    $0xb,%eax
  lock xadd %al,0x65(%rsp)
  mov    %al,0x65(%rsp)
  mov    $0xb,%eax
  lock xadd %al,0x67(%rsp)
  mov    %al,0x67(%rsp)
  mov    $0xb,%eax
  lock xadd %ax,0xa(%rsp)
  mov    %ax,0xa(%rsp)
  mov    $0xb,%eax
  lock xadd %ax,0xe(%rsp)
  mov    %ax,0xe(%rsp)
  mov    $0xb,%eax
  lock xadd %eax,0x14(%rsp)
  mov    %eax,0x14(%rsp)
  mov    $0xb,%eax
  lock xadd %eax,0x1c(%rsp)
  mov    %eax,0x1c(%rsp)
  mov    $0xb,%eax
  lock xadd %rax,0x28(%rsp)
  mov    %rax,0x28(%rsp)
  mov    $0xb,%eax
  lock xadd %rax,0x38(%rsp)
  mov    %rax,0x38(%rsp)
  mov    $0xb,%eax
  lock xadd %rax,0x48(%rsp)
  mov    %rax,0x48(%rsp)
  mov    $0xb,%eax
  lock xadd %rax,0x58(%rsp)
  mov    %rax,0x58(%rsp)
  movzbl 0x65(%rsp),%eax
L290:
  mov    %eax,%ecx
  mov    %eax,%edx
  or     $0xfffffff5,%ecx
  lock cmpxchg %cl,0x65(%rsp)
  jne    L290
  mov    %dl,0x65(%rsp)
  movzbl 0x67(%rsp),%eax
L326:
  mov    %eax,%ecx
  mov    %eax,%edx
  or     $0xfffffff5,%ecx
  lock cmpxchg %cl,0x67(%rsp)
  jne    L326
  mov    %dl,0x67(%rsp)
  movzwl 0xa(%rsp),%eax
L139:
  mov    %eax,%ecx
  mov    %eax,%edx
  or     $0xfffffff5,%ecx
  lock cmpxchg %cx,0xa(%rsp)
  jne    L139
  mov    %dx,0xa(%rsp)
  movzwl 0xe(%rsp),%eax
L75:
  mov    %eax,%ecx
  mov    %eax,%edx
  or     $0xfffffff5,%ecx
  lock cmpxchg %cx,0xe(%rsp)
  jne    L75
  mov    %dx,0xe(%rsp)
  mov    0x14(%rsp),%eax
L300:
  mov    %eax,%ecx
  mov    %eax,%edx
  or     $0xfffffff5,%ecx
  lock cmpxchg %ecx,0x14(%rsp)
  jne    L300
  mov    %edx,0x14(%rsp)
  mov    0x1c(%rsp),%eax
L348:
  mov    %eax,%ecx
  mov    %eax,%edx
  or     $0xfffffff5,%ecx
  lock cmpxchg %ecx,0x1c(%rsp)
  jne    L348
  mov    %edx,0x1c(%rsp)
  mov    0x28(%rsp),%rax
L358:
  mov    %rax,%rcx
  mov    %rax,%rdx
  or     $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x28(%rsp)
  jne    L358
  mov    %rdx,0x28(%rsp)
  mov    0x38(%rsp),%rax
L221:
  mov    %rax,%rcx
  mov    %rax,%rdx
  or     $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x38(%rsp)
  jne    L221
  mov    %rdx,0x38(%rsp)
  mov    0x48(%rsp),%rax
L158:
  mov    %rax,%rcx
  mov    %rax,%rdx
  or     $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x48(%rsp)
  jne    L158
  mov    %rdx,0x48(%rsp)
  mov    0x58(%rsp),%rax
L328:
  mov    %rax,%rcx
  mov    %rax,%rdx
  or     $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x58(%rsp)
  jne    L328
  mov    %rdx,0x58(%rsp)
  movzbl 0x65(%rsp),%eax
L319:
  mov    %eax,%ecx
  mov    %eax,%edx
  xor    $0xfffffff5,%ecx
  lock cmpxchg %cl,0x65(%rsp)
  jne    L319
  mov    %dl,0x65(%rsp)
  movzbl 0x67(%rsp),%eax
L133:
  mov    %eax,%ecx
  mov    %eax,%edx
  xor    $0xfffffff5,%ecx
  lock cmpxchg %cl,0x67(%rsp)
  jne    L133
  mov    %dl,0x67(%rsp)
  movzwl 0xa(%rsp),%eax
L3:
  mov    %eax,%ecx
  mov    %eax,%edx
  xor    $0xfffffff5,%ecx
  lock cmpxchg %cx,0xa(%rsp)
  jne    L3
  mov    %dx,0xa(%rsp)
  movzwl 0xe(%rsp),%eax
L195:
  mov    %eax,%ecx
  mov    %eax,%edx
  xor    $0xfffffff5,%ecx
  lock cmpxchg %cx,0xe(%rsp)
  jne    L195
  mov    %dx,0xe(%rsp)
  mov    0x14(%rsp),%eax
L122:
  mov    %eax,%ecx
  mov    %eax,%edx
  xor    $0xfffffff5,%ecx
  lock cmpxchg %ecx,0x14(%rsp)
  jne    L122
  mov    %edx,0x14(%rsp)
  mov    0x1c(%rsp),%eax
L236:
  mov    %eax,%ecx
  mov    %eax,%edx
  xor    $0xfffffff5,%ecx
  lock cmpxchg %ecx,0x1c(%rsp)
  jne    L236
  mov    %edx,0x1c(%rsp)
  mov    0x28(%rsp),%rax
L125:
  mov    %rax,%rcx
  mov    %rax,%rdx
  xor    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x28(%rsp)
  jne    L125
  mov    %rdx,0x28(%rsp)
  mov    0x38(%rsp),%rax
L117:
  mov    %rax,%rcx
  mov    %rax,%rdx
  xor    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x38(%rsp)
  jne    L117
  mov    %rdx,0x38(%rsp)
  mov    0x48(%rsp),%rax
L283:
  mov    %rax,%rcx
  mov    %rax,%rdx
  xor    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x48(%rsp)
  jne    L283
  mov    %rdx,0x48(%rsp)
  mov    0x58(%rsp),%rax
L375:
  mov    %rax,%rcx
  mov    %rax,%rdx
  xor    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x58(%rsp)
  jne    L375
  mov    %rdx,0x58(%rsp)
  movzbl 0x65(%rsp),%eax
L183:
  mov    %eax,%ecx
  mov    %eax,%edx
  and    $0xfffffff5,%ecx
  lock cmpxchg %cl,0x65(%rsp)
  jne    L183
  mov    %dl,0x65(%rsp)
  movzbl 0x67(%rsp),%eax
L279:
  mov    %eax,%ecx
  mov    %eax,%edx
  and    $0xfffffff5,%ecx
  lock cmpxchg %cl,0x67(%rsp)
  jne    L279
  mov    %dl,0x67(%rsp)
  movzwl 0xa(%rsp),%eax
L155:
  mov    %eax,%ecx
  mov    %eax,%edx
  and    $0xfffffff5,%ecx
  lock cmpxchg %cx,0xa(%rsp)
  jne    L155
  mov    %dx,0xa(%rsp)
  movzwl 0xe(%rsp),%eax
L198:
  mov    %eax,%ecx
  mov    %eax,%edx
  and    $0xfffffff5,%ecx
  lock cmpxchg %cx,0xe(%rsp)
  jne    L198
  mov    %dx,0xe(%rsp)
  mov    0x14(%rsp),%eax
L370:
  mov    %eax,%ecx
  mov    %eax,%edx
  and    $0xfffffff5,%ecx
  lock cmpxchg %ecx,0x14(%rsp)
  jne    L370
  mov    %edx,0x14(%rsp)
  mov    0x1c(%rsp),%eax
L314:
  mov    %eax,%ecx
  mov    %eax,%edx
  and    $0xfffffff5,%ecx
  lock cmpxchg %ecx,0x1c(%rsp)
  jne    L314
  mov    %edx,0x1c(%rsp)
  mov    0x28(%rsp),%rax
L349:
  mov    %rax,%rcx
  mov    %rax,%rdx
  and    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x28(%rsp)
  jne    L349
  mov    %rdx,0x28(%rsp)
  mov    0x38(%rsp),%rax
L126:
  mov    %rax,%rcx
  mov    %rax,%rdx
  and    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x38(%rsp)
  jne    L126
  mov    %rdx,0x38(%rsp)
  mov    0x48(%rsp),%rax
L194:
  mov    %rax,%rcx
  mov    %rax,%rdx
  and    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x48(%rsp)
  jne    L194
  mov    %rdx,0x48(%rsp)
  mov    0x58(%rsp),%rax
L105:
  mov    %rax,%rcx
  mov    %rax,%rdx
  and    $0xfffffffffffffff5,%rcx
  lock cmpxchg %rcx,0x58(%rsp)
  jne    L105
  mov    %rdx,0x58(%rsp)
  movzbl 0x65(%rsp),%eax
L116:
  mov    %eax,%edx
  mov    %eax,%ecx
  and    $0xfffffff5,%edx
  not    %edx
  lock cmpxchg %dl,0x65(%rsp)
  jne    L116
  mov    %cl,0x65(%rsp)
  movzbl 0x67(%rsp),%eax
L34:
  mov    %eax,%edx
  mov    %eax,%ecx
  and    $0xfffffff5,%edx
  not    %edx
  lock cmpxchg %dl,0x67(%rsp)
  jne    L34
  mov    %cl,0x67(%rsp)
  movzwl 0xa(%rsp),%eax
L233:
  mov    %eax,%edx
  mov    %eax,%ecx
  and    $0xfffffff5,%edx
  not    %edx
  lock cmpxchg %dx,0xa(%rsp)
  jne    L233
  mov    %cx,0xa(%rsp)
  movzwl 0xe(%rsp),%eax
L149:
  mov    %eax,%edx
  mov    %eax,%ecx
  and    $0xfffffff5,%edx
  not    %edx
  lock cmpxchg %dx,0xe(%rsp)
  jne    L149
  mov    %cx,0xe(%rsp)
  mov    0x14(%rsp),%eax
L42:
  mov    %eax,%edx
  mov    %eax,%ecx
  and    $0xfffffff5,%edx
  not    %edx
  lock cmpxchg %edx,0x14(%rsp)
  jne    L42
  mov    %ecx,0x14(%rsp)
  mov    0x1c(%rsp),%eax
L400:
  mov    %eax,%edx
  mov    %eax,%ecx
  and    $0xfffffff5,%edx
  not    %edx
  lock cmpxchg %edx,0x1c(%rsp)
  jne    L400
  mov    %ecx,0x1c(%rsp)
  mov    0x28(%rsp),%rax
L352:
  mov    %rax,%rdx
  mov    %rax,%rcx
  and    $0xfffffffffffffff5,%rdx
  not    %rdx
  lock cmpxchg %rdx,0x28(%rsp)
  jne    L352
  mov    %rcx,0x28(%rsp)
  mov    0x38(%rsp),%rax
L184:
  mov    %rax,%rdx
  mov    %rax,%rcx
  and    $0xfffffffffffffff5,%rdx
  not    %rdx
  lock cmpxchg %rdx,0x38(%rsp)
  jne    L184
  mov    %rcx,0x38(%rsp)
  mov    0x48(%rsp),%rax
L175:
  mov    %rax,%rdx
  mov    %rax,%rcx
  and    $0xfffffffffffffff5,%rdx
  not    %rdx
  lock cmpxchg %rdx,0x48(%rsp)
  jne    L175
  mov    %rcx,0x48(%rsp)
  mov    0x58(%rsp),%rax
L333:
  mov    %rax,%rdx
  and    $0xfffffffffffffff5,%rdx
  not    %rdx
  lock cmpxchg %rdx,0x58(%rsp)
  jne    L333
  mov    0x68(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L409
  add    $0x78,%rsp
  ret
L409:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void test_fetch_and_op(void) {
  signed char sc[2];
  unsigned char uc[2];
  signed short ss[2];
  unsigned short us[2];
  signed int si[2];
  unsigned int ui[2];
  signed long sl[2];
  unsigned long ul[2];
  signed long long sll[2];
  unsigned long long ull[2];
  sc[1] = __sync_fetch_and_add(&sc[1], -11);
  uc[1] = __sync_fetch_and_add(&uc[1], -11);
  ss[1] = __sync_fetch_and_add(&ss[1], -11);
  us[1] = __sync_fetch_and_add(&us[1], -11);
  si[1] = __sync_fetch_and_add(&si[1], -11);
  ui[1] = __sync_fetch_and_add(&ui[1], -11);
  sl[1] = __sync_fetch_and_add(&sl[1], -11);
  ul[1] = __sync_fetch_and_add(&ul[1], -11);
  sll[1] = __sync_fetch_and_add(&sll[1], -11);
  ull[1] = __sync_fetch_and_add(&ull[1], -11);
  sc[1] = __sync_fetch_and_sub(&sc[1], -11);
  uc[1] = __sync_fetch_and_sub(&uc[1], -11);
  ss[1] = __sync_fetch_and_sub(&ss[1], -11);
  us[1] = __sync_fetch_and_sub(&us[1], -11);
  si[1] = __sync_fetch_and_sub(&si[1], -11);
  ui[1] = __sync_fetch_and_sub(&ui[1], -11);
  sl[1] = __sync_fetch_and_sub(&sl[1], -11);
  ul[1] = __sync_fetch_and_sub(&ul[1], -11);
  sll[1] = __sync_fetch_and_sub(&sll[1], -11);
  ull[1] = __sync_fetch_and_sub(&ull[1], -11);
  sc[1] = __sync_fetch_and_or(&sc[1], -11);
  uc[1] = __sync_fetch_and_or(&uc[1], -11);
  ss[1] = __sync_fetch_and_or(&ss[1], -11);
  us[1] = __sync_fetch_and_or(&us[1], -11);
  si[1] = __sync_fetch_and_or(&si[1], -11);
  ui[1] = __sync_fetch_and_or(&ui[1], -11);
  sl[1] = __sync_fetch_and_or(&sl[1], -11);
  ul[1] = __sync_fetch_and_or(&ul[1], -11);
  sll[1] = __sync_fetch_and_or(&sll[1], -11);
  ull[1] = __sync_fetch_and_or(&ull[1], -11);
  sc[1] = __sync_fetch_and_xor(&sc[1], -11);
  uc[1] = __sync_fetch_and_xor(&uc[1], -11);
  ss[1] = __sync_fetch_and_xor(&ss[1], -11);
  us[1] = __sync_fetch_and_xor(&us[1], -11);
  si[1] = __sync_fetch_and_xor(&si[1], -11);
  ui[1] = __sync_fetch_and_xor(&ui[1], -11);
  sl[1] = __sync_fetch_and_xor(&sl[1], -11);
  ul[1] = __sync_fetch_and_xor(&ul[1], -11);
  sll[1] = __sync_fetch_and_xor(&sll[1], -11);
  ull[1] = __sync_fetch_and_xor(&ull[1], -11);
  sc[1] = __sync_fetch_and_and(&sc[1], -11);
  uc[1] = __sync_fetch_and_and(&uc[1], -11);
  ss[1] = __sync_fetch_and_and(&ss[1], -11);
  us[1] = __sync_fetch_and_and(&us[1], -11);
  si[1] = __sync_fetch_and_and(&si[1], -11);
  ui[1] = __sync_fetch_and_and(&ui[1], -11);
  sl[1] = __sync_fetch_and_and(&sl[1], -11);
  ul[1] = __sync_fetch_and_and(&ul[1], -11);
  sll[1] = __sync_fetch_and_and(&sll[1], -11);
  ull[1] = __sync_fetch_and_and(&ull[1], -11);
  sc[1] = __sync_fetch_and_nand(&sc[1], -11);
  uc[1] = __sync_fetch_and_nand(&uc[1], -11);
  ss[1] = __sync_fetch_and_nand(&ss[1], -11);
  us[1] = __sync_fetch_and_nand(&us[1], -11);
  si[1] = __sync_fetch_and_nand(&si[1], -11);
  ui[1] = __sync_fetch_and_nand(&ui[1], -11);
  sl[1] = __sync_fetch_and_nand(&sl[1], -11);
  ul[1] = __sync_fetch_and_nand(&ul[1], -11);
  sll[1] = __sync_fetch_and_nand(&sll[1], -11);
  ull[1] = __sync_fetch_and_nand(&ull[1], -11);
}
```