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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%eax
  call   <__globinit_cfg_test@plt>
  mov    $0x7,%esi
  mov    $0x31,%edi
  call   <__CrestCall@plt>
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <__CrestInt@plt>
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x34,%edi
  call   <__CrestLoad@plt>
  mov    $0x13,%edx
  mov    $0x0,%esi
  mov    $0x33,%edi
  call   <__CrestLoad@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x13,%eax
  sete   %al
  movzbl %al,%eax
  mov    %rax,%rdx
  mov    $0xc,%esi
  mov    $0x32,%edi
  call   <__CrestApply2@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x13,%eax
  jne    L39
  mov    $0x1,%edx
  mov    $0x1b,%esi
  mov    $0x35,%edi
  call   <__CrestBranch@plt>
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x37,%edi
  call   <__CrestClearStack@plt>
  jmp    L41
L39:
  mov    $0x0,%edx
  mov    $0x1c,%esi
  mov    $0x36,%edi
  call   <__CrestBranch@plt>
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x38,%edi
  call   <__CrestClearStack@plt>
L41:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x39,%edi
  call   <__CrestLoad@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  call   <f@plt>
  mov    $0x3a,%edi
  call   <__CrestClearStack@plt>
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x3b,%edi
  call   <__CrestLoad@plt>
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  call   <g@plt>
  mov    $0x3c,%edi
  call   <__CrestClearStack@plt>
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x3f,%edi
  call   <__CrestLoad@plt>
  mov    $0x1,%edx
  mov    $0x0,%esi
  mov    $0x3e,%edi
  call   <__CrestLoad@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x1,%eax
  setne  %al
  movzbl %al,%eax
  mov    %rax,%rdx
  mov    $0xd,%esi
  mov    $0x3d,%edi
  call   <__CrestApply2@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x1,%eax
  je     L11
  mov    $0x1,%edx
  mov    $0x1f,%esi
  mov    $0x40,%edi
  call   <__CrestBranch@plt>
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x42,%edi
  call   <__CrestClearStack@plt>
  jmp    L24
L11:
  mov    $0x0,%edx
  mov    $0x20,%esi
  mov    $0x41,%edi
  call   <__CrestBranch@plt>
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x43,%edi
  call   <__CrestClearStack@plt>
L24:
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x44,%edi
  call   <__CrestLoad@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x45,%edi
  call   <__CrestStore@plt>
  movl   $0x0,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  movslq %eax,%rdx
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x46,%edi
  call   <__CrestLoad@plt>
  mov    $0x47,%edi
  call   <__CrestReturn@plt>
  mov    -0xc(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L6
  call   <__stack_chk_fail@plt>
L6:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D19
type_guessed: string
name: disassemble_data
arguments: tag: D0
type_guessed: string
name: disassemble_data
arguments: tag: D5
type_guessed: string
name: disassemble_data
arguments: tag: D10
type_guessed: string

tool: D19: 19


tool: D0: not 19


tool: D5: not 1


tool: D10: 1


assistant: ```c
int main(void) {
  int a;
  int __retres2;
  {
    __globinit_cfg_test();
    __CrestCall(49, 7);
    __CrestInt(&a);
    __CrestLoad(52, (unsigned long)(&a), (long long)a);
    __CrestLoad(51, (unsigned long)0, (long long)19);
    __CrestApply2(50, 12, (long long)(a == 19));
    if (a == 19) {
      __CrestBranch(53, 27, 1);
      printf((char const *__restrict)"19\n");
      __CrestClearStack(55);
    } else {
      __CrestBranch(54, 28, 0);
      printf((char const *__restrict)"not 19\n");
      __CrestClearStack(56);
    }
    __CrestLoad(57, (unsigned long)(&a), (long long)a);
    f(a);
    __CrestClearStack(58);
    __CrestLoad(59, (unsigned long)(&a), (long long)a);
    g(a);
    __CrestClearStack(60);
    __CrestLoad(63, (unsigned long)(&a), (long long)a);
    __CrestLoad(62, (unsigned long)0, (long long)1);
    __CrestApply2(61, 13, (long long)(a != 1));
    if (a != 1) {
      __CrestBranch(64, 31, 1);
      printf((char const *__restrict)"not 1\n");
      __CrestClearStack(66);
    } else {
      __CrestBranch(65, 32, 0);
      printf((char const *__restrict)"1\n");
      __CrestClearStack(67);
    }
    __CrestLoad(68, (unsigned long)0, (long long)0);
    __CrestStore(69, (unsigned long)(&__retres2));
    __retres2 = 0;
    __CrestLoad(70, (unsigned long)(&__retres2), (long long)__retres2);
    __CrestReturn(71);
    return (__retres2);
  }
}
```