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

```asm
<reversebit>:
  endbr64
  push   %rbp
  mov    %edi,%ebp
  call   <print@plt>
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x1f,%eax
  xor    $0x80000001,%edx
  xor    %ebp,%eax
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    %edx
  sar    $0x1e,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x40000002,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x2,%edx
  sar    $0x1d,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x20000004,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x3,%edx
  sar    $0x1c,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x10000008,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x4,%edx
  sar    $0x1b,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x8000010,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x5,%edx
  sar    $0x1a,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x4000020,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x6,%edx
  sar    $0x19,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x2000040,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x7,%edx
  sar    $0x18,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x1000080,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x8,%edx
  sar    $0x17,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x800100,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x9,%edx
  sar    $0x16,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x400200,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0xa,%edx
  sar    $0x15,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x200400,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0xb,%edx
  sar    $0x14,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x100800,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0xc,%edx
  sar    $0x13,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x81000,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0xd,%edx
  sar    $0x12,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x42000,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0xe,%edx
  sar    $0x11,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x24000,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%eax
  mov    %ebp,%edx
  sar    $0x10,%edx
  sar    $0xf,%eax
  xor    %edx,%eax
  mov    %ebp,%edx
  xor    $0x18000,%edx
  test   $0x1,%al
  cmovne %edx,%ebp
  mov    %ebp,%edi
  pop    %rbp
  jmp    1050 <print@plt>
```

assistant: ```c
void reversebit(int data) {
  int bit, left, right, m, n;
  print(data);
  for (left = 31, right = 0; left > right; left--, right++) {
    m = (data >> left) & 1;
    n = (data >> right) & 1;
    if (m != n) {
      data ^= (1 << left);
      data ^= (1 << right);
    }
  }
  print(data);
  return 0;
}
```