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

```asm
<main>:
  endbr64
  push   %r13
  xor    %esi,%esi
  lea    D221(%rip),%r13
  push   %r12
  lea    D134(%rip),%r12
  push   %rbp
  lea    D182(%rip),%rbp
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x2,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x2,%esi
  lea    D187(%rip),%rbp
  call   <str2int@plt>
  mov    %r12,%rdi
  lea    D39(%rip),%r12
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x8,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  mov    %r13,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x8,%esi
  call   <str2int@plt>
  mov    %r13,%rdi
  lea    D61(%rip),%r13
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x8,%esi
  lea    D123(%rip),%rbp
  call   <str2int@plt>
  mov    %r12,%rdi
  lea    D80(%rip),%r12
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  lea    D30(%rip),%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  lea    D188(%rip),%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %r12,%rdi
  call   <str2int@plt>
  mov    %rbp,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %r12,%rdi
  mov    $0xa,%esi
  lea    D272(%rip),%r12
  call   <str2int@plt>
  mov    %rbp,%rdi
  lea    D181(%rip),%rbp
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %r12,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  lea    D42(%rip),%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x10,%esi
  mov    %r12,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x10,%esi
  lea    D184(%rip),%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0xffffffff,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %r12,%rdi
  call   <str2int@plt>
  mov    %rbp,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %r13,%rdi
  call   <str2int@plt>
  mov    %rbp,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %r12,%rdi
  mov    $0x10,%esi
  lea    D276(%rip),%r12
  call   <str2int@plt>
  mov    %rbp,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %r13,%rdi
  mov    $0x10,%esi
  call   <str2int@plt>
  mov    %rbp,%rdi
  lea    D104(%rip),%rbp
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x2,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x2,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x2,%esi
  call   <str2int@plt>
  mov    %r12,%rdi
  lea    D81(%rip),%r12
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x2,%esi
  lea    D6(%rip),%rbp
  call   <str2int@plt>
  mov    %r12,%rdi
  lea    D264(%rip),%r12
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x8,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x8,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x8,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    %rbp,%rdi
  mov    $0x8,%esi
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  mov    %r12,%rdi
  lea    D49(%rip),%r12
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x8,%esi
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x8,%esi
  lea    D258(%rip),%rbp
  call   <str2int@plt>
  mov    %r12,%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    %rbp,%rdi
  mov    $0xa,%esi
  call   <str2int@plt>
  lea    D147(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0xa,%esi
  lea    D112(%rip),%rbp
  call   <str2int@plt>
  lea    D100(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0x10,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    $0x10,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x80000000,%eax
  sete   %dil
  call   <assert@plt>
  mov    %rbp,%rdi
  mov    $0x10,%esi
  call   <str2int@plt>
  lea    D185(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rdi
  mov    $0x10,%esi
  lea    D234(%rip),%rbp
  call   <str2int@plt>
  lea    D186(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0x23,%esi
  mov    %rbp,%rdi
  call   <str2int@plt>
  xor    %edi,%edi
  cmp    $0x23,%eax
  sete   %dil
  call   <assert@plt>
  mov    %rbp,%rdi
  mov    $0x23,%esi
  call   <str2int@plt>
  lea    D33(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D221
type: string
name: extract_symbolic_data
arguments: data_label: D134
type: string
name: extract_symbolic_data
arguments: data_label: D182
type: string
name: extract_symbolic_data
arguments: data_label: D187
type: string
name: extract_symbolic_data
arguments: data_label: D39
type: string
name: extract_symbolic_data
arguments: data_label: D61
type: string
name: extract_symbolic_data
arguments: data_label: D123
type: string
name: extract_symbolic_data
arguments: data_label: D80
type: string
name: extract_symbolic_data
arguments: data_label: D30
type: string
name: extract_symbolic_data
arguments: data_label: D188
type: string
name: extract_symbolic_data
arguments: data_label: D272
type: string
name: extract_symbolic_data
arguments: data_label: D181
type: string
name: extract_symbolic_data
arguments: data_label: D42
type: string
name: extract_symbolic_data
arguments: data_label: D184
type: string
name: extract_symbolic_data
arguments: data_label: D276
type: string
name: extract_symbolic_data
arguments: data_label: D104
type: string
name: extract_symbolic_data
arguments: data_label: D81
type: string
name: extract_symbolic_data
arguments: data_label: D6
type: string
name: extract_symbolic_data
arguments: data_label: D264
type: string
name: extract_symbolic_data
arguments: data_label: D49
type: string
name: extract_symbolic_data
arguments: data_label: D258
type: string
name: extract_symbolic_data
arguments: data_label: D147
type: string
name: extract_symbolic_data
arguments: data_label: D112
type: string
name: extract_symbolic_data
arguments: data_label: D100
type: string
name: extract_symbolic_data
arguments: data_label: D185
type: string
name: extract_symbolic_data
arguments: data_label: D234
type: string
name: extract_symbolic_data
arguments: data_label: D186
type: string
name: extract_symbolic_data
arguments: data_label: D33
type: string

tool: D221: 8 max:%x


tool: D134: 2 max:%x


tool: D182: 0b11111111111111111111111111111111

tool: D187: 0777777777777

tool: D39: 8 max:%u


tool: D61: 0XFFFFFFFf

tool: D123: 10 max:%u


tool: D80: 4294967295	

tool: D30: 4294967295

tool: D188:    	
 4294967295

tool: D272: 0xffffffff

tool: D181: 16 max:%x


tool: D42: 0xFFFFFFFF

tool: D184: 0XFFFFFFFF

tool: D276: 2 min:%x


tool: D104: 0b10000000000000000000000000000000

tool: D81: 2 min:%d


tool: D6: 020000000000

tool: D264: 8 min:%d


tool: D49: 8 min:%x


tool: D258: -2147483648

tool: D147: 10 min:%d


tool: D112: 0x80000000

tool: D100: 10 min:%x


tool: D185: 16 min:%d


tool: D234: z

tool: D186: 16 min:%x


tool: D33: 35:%d


assistant: ```c
int main() {
  assert(str2int("0b11111111111111111111111111111111", 0) == 0xFFFFFFFF);
  assert(str2int("0b11111111111111111111111111111111", 2) == 0xFFFFFFFF);
  printf("2 max:%x\n", str2int("0b11111111111111111111111111111111", 0));
  printf("2 max:%x\n", str2int("0b11111111111111111111111111111111", 2));
  assert(str2int("0777777777777", 0) == 0xFFFFFFFF);
  assert(str2int("0777777777777", 8) == 0xFFFFFFFF);
  printf("8 max:%x\n", str2int("0777777777777", 0));
  printf("8 max:%u\n", str2int("0777777777777", 0));
  printf("8 max:%x\n", str2int("0777777777777", 8));
  printf("8 max:%u\n", str2int("0777777777777", 8));
  assert(str2int("4294967295", 0) == 0xFFFFFFFF);
  assert(str2int("   \t\n\r 4294967295", 0) == 0xFFFFFFFF);
  printf("10 max:%u\n", str2int("4294967295	", 0));
  printf("10 max:%u\n", str2int("4294967295	", 10));
  assert(str2int("0xffffffff", 0) == 0xFFFFFFFF);
  assert(str2int("0xFFFFFFFF", 0) == 0xFFFFFFFF);
  assert(str2int("0xffffffff", 16) == 0xFFFFFFFF);
  assert(str2int("0XFFFFFFFF", 16) == 0xFFFFFFFF);
  printf("16 max:%x\n", str2int("0xffffffff", 0));
  printf("16 max:%x\n", str2int("0XFFFFFFFf", 0));
  printf("16 max:%x\n", str2int("0xffffffff", 16));
  printf("16 max:%x\n", str2int("0XFFFFFFFf", 16));
  assert(str2int("0b10000000000000000000000000000000", 0) == 0x80000000);
  assert(str2int("0b10000000000000000000000000000000", 0) == 0x80000000);
  assert(str2int("0b10000000000000000000000000000000", 2) == 0x80000000);
  assert(str2int("0b10000000000000000000000000000000", 0) == 0x80000000);
  assert(str2int("0b10000000000000000000000000000000", 2) == 0x80000000);
  printf("2 min:%x\n", str2int("0b10000000000000000000000000000000", 0));
  printf("2 min:%x\n", str2int("0b10000000000000000000000000000000", 2));
  printf("2 min:%d\n", str2int("0b10000000000000000000000000000000", 0));
  printf("2 min:%d\n", str2int("0b10000000000000000000000000000000", 2));
  assert(str2int("020000000000", 0) == 0x80000000);
  assert(str2int("020000000000", 8) == 0x80000000);
  assert(str2int("020000000000", 0) == 0x80000000);
  assert(str2int("020000000000", 8) == 0x80000000);
  assert(str2int("020000000000", 8) == 0x80000000);
  printf("8 min:%d\n", str2int("020000000000", 8));
  printf("8 min:%d\n", str2int("020000000000", 0));
  printf("8 min:%x\n", str2int("020000000000", 8));
  printf("8 min:%x\n", str2int("020000000000", 8));
  assert(str2int("-2147483648", 10) == -2147483648);
  assert(str2int("-2147483648", 0) == -2147483648);
  printf("10 min:%d\n", str2int("-2147483648", 10));
  printf("10 min:%x\n", str2int("-2147483648", 10));
  assert(str2int("0x80000000", 16) == 0x80000000);
  assert(str2int("0x80000000", 16) == 0x80000000);
  printf("16 min:%d\n", str2int("0x80000000", 16));
  printf("16 min:%x\n", str2int("0x80000000", 16));
  assert(str2int("z", 35) == 35);
  printf("35:%d\n", str2int("z", 35));
  return 0;
}
```