user: Converte this assembly snippet into its equivalent C code:

```asm
<int_test>:
  endbr64
  push   %rbp
  lea    D50(%rip),%rdi
  push   %rbx
  sub    $0x18,%rsp
  movl   $0x2,0xc(%rsp)
  call   <printf@plt>
  lea    D115(%rip),%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x2,%eax
  jg     L14
  lea    D109(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D75(%rip),%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x3,%eax
  jg     L14
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D28(%rip),%rdi
  movl   $0x4,0xc(%rsp)
  call   <printf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x3,%eax
  jle    L14
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D52(%rip),%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x2,%eax
  jle    L14
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x3,%eax
  je     L14
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%eax
  cmp    $0x3,%eax
  je     L14
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%ebx
  lea    D39(%rip),%rdi
  call   <printf@plt>
  cmp    $0x4,%ebx
  jne    L14
  mov    %rbp,%rdi
  call   <printf@plt>
  movl   $0x64,0xc(%rsp)
  mov    0xc(%rsp),%ebx
  lea    D15(%rip),%rdi
  call   <printf@plt>
  sub    $0x64,%ebx
  cmp    $0x4,%ebx
  ja     L14
  mov    %rbp,%rdi
  call   <printf@plt>
  movl   $0x4,0xc(%rsp)
  mov    0xc(%rsp),%ebx
  lea    D76(%rip),%rdi
  call   <printf@plt>
  cmp    $0x4,%ebx
  jne    L14
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    0xc(%rsp),%ebx
  lea    D21(%rip),%rdi
  call   <printf@plt>
  cmp    $0x4,%ebx
  jne    L14
  mov    %rbp,%rdi
  call   <printf@plt>
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L14:
  lea    D94(%rip),%rdi
  call   <printf@plt>
  add    $0x18,%rsp
  mov    $0xffffffff,%eax
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D50
datatype: string
name: disassemble_data
arguments: data_label: D115
datatype: string
name: disassemble_data
arguments: data_label: D109
datatype: string
name: disassemble_data
arguments: data_label: D75
datatype: string
name: disassemble_data
arguments: data_label: D28
datatype: string
name: disassemble_data
arguments: data_label: D52
datatype: string
name: disassemble_data
arguments: data_label: D8
datatype: string
name: disassemble_data
arguments: data_label: D63
datatype: string
name: disassemble_data
arguments: data_label: D39
datatype: string
name: disassemble_data
arguments: data_label: D15
datatype: string
name: disassemble_data
arguments: data_label: D76
datatype: string
name: disassemble_data
arguments: data_label: D21
datatype: string
name: disassemble_data
arguments: data_label: D94
datatype: string

tool: D50: Start int tests


tool: D115: test <...

tool: D109: passed


tool: D75: test <=...

tool: D28: test >...

tool: D52: test >=...

tool: D8: test ==...

tool: D63: test !=...

tool: D39: test *...

tool: D15: test /...

tool: D76: test +...

tool: D21: test -...

tool: D94: failed


assistant: ```c
int int_test(void) {
  volatile int x;
  int y;
  x = 2;
  printf("Start int tests\n");
  printf("test <...");
  if (x < 3)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  printf("test <=...");
  if (x <= 3)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  x = 4;
  printf("test >...");
  if (x > 3)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  printf("test >=...");
  if (x >= 3)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  printf("test ==...");
  if (x == 3) {
    printf("failed\n");
    return -1;
  } else
    printf("passed\n");
  printf("test !=...");
  if (x != 3)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  y = x * 5;
  printf("test *...");
  if (y == 20)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  x = 100;
  y = x / 5;
  printf("test /...");
  if (y == 20)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  x = 4;
  y = x + 5;
  printf("test +...");
  if (y == 9)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  y = x - 5;
  printf("test -...");
  if (y == -1)
    printf("passed\n");
  else {
    printf("failed\n");
    return -1;
  }
  return 0;
}
```