user: 请将以下的汇编代码转换成C语言代码:

```asm
<_test_various_MAX_biggerint_smalleruint>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <_test_MAX_biggerint_smalleruint@plt>
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <_test_MAX_biggerint_smalleruint@plt>
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%esi
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    %esi,%eax
  sub    $0x1,%eax
  add    %edx,%eax
  mov    $0xffffffff,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <_test_MAX_biggerint_smalleruint@plt>
  mov    $0x2,%esi
  mov    $0x3,%edi
  call   <_test_MAX_biggerint_smalleruint@plt>
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%esi
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    %esi,%eax
  sub    $0x1,%eax
  add    %edx,%eax
  mov    $0xffffffff,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  lea    -0x1(%rax),%edx
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%esi
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%edi
  mov    %eax,%ecx
  shl    %cl,%edi
  mov    %edi,%eax
  sub    $0x1,%eax
  add    %esi,%eax
  mov    $0xffffffff,%ecx
  test   %eax,%eax
  cmovs  %ecx,%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_test_MAX_biggerint_smalleruint@plt>
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%esi
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    %esi,%eax
  sub    $0x1,%eax
  add    %edx,%eax
  mov    $0xffffffff,%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  lea    -0x2(%rax),%edx
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%esi
  mov    %eax,%ecx
  shl    %cl,%esi
  mov    D37(%rip),%rax
  mov    (%rax),%eax
  cltq
  shl    $0x2,%eax
  sub    $0x2,%eax
  mov    $0x1,%edi
  mov    %eax,%ecx
  shl    %cl,%edi
  mov    %edi,%eax
  sub    $0x1,%eax
  add    %esi,%eax
  mov    $0xffffffff,%ecx
  test   %eax,%eax
  cmovs  %ecx,%eax
  sub    $0x1,%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <_test_MAX_biggerint_smalleruint@plt>
  mov    $0x0,%eax
  pop    %rbp
  ret
```

assistant: ```c
int _test_various_MAX_biggerint_smalleruint() {
  _test_MAX_biggerint_smalleruint(1, 0);
  _test_MAX_biggerint_smalleruint(2, 0);
  _test_MAX_biggerint_smalleruint(((((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) > ((int)(~((int)0)))) ? ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) : ((int)(~((int)0)))), 0);
  _test_MAX_biggerint_smalleruint(3, 2);
  _test_MAX_biggerint_smalleruint(((((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) > ((int)(~((int)0)))) ? ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) : ((int)(~((int)0)))), ((((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) > ((int)(~((int)0)))) ? ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) : ((int)(~((int)0)))) - 1);
  _test_MAX_biggerint_smalleruint(((((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) > ((int)(~((int)0)))) ? ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) : ((int)(~((int)0)))) - 1, ((((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) > ((int)(~((int)0)))) ? ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) + ((int)(((int)(((int)1) << ((sizeof(int) * CHAR_BIT) - 2))) - 1)))) : ((int)(~((int)0)))) - 2);
  return 0;
}
```