user: Please show me the C implementation that matches the assembly code listed below:

```asm
<adders_io>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  mov    %rdx,-0x30(%rbp)
  lea    D166(%rip),%rax
  mov    %rax,%rdi
  call   <getenv@plt>
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L75
  lea    D202(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L75:
  cmpq   $0x0,-0x8(%rbp)
  je     L91
  mov    D181(%rip),%rax
  add    $0x1,%rax
  mov    %rax,D105(%rip)
  mov    D105(%rip),%rax
  mov    %rax,%rsi
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L91:
  mov    -0x30(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x14(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L3
  mov    -0x14(%rbp),%eax
  mov    %eax,%esi
  lea    D176(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L3:
  cmpq   $0x0,-0x8(%rbp)
  je     L82
  mov    D48(%rip),%rax
  add    $0x1,%rax
  mov    %rax,D30(%rip)
  mov    D30(%rip),%rax
  mov    %rax,%rsi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L82:
  mov    -0x28(%rbp),%edx
  mov    -0x24(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x10(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L28
  mov    -0x10(%rbp),%eax
  mov    %eax,%esi
  lea    D176(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L28:
  cmpq   $0x0,-0x8(%rbp)
  je     L72
  mov    D68(%rip),%rax
  add    $0x1,%rax
  mov    %rax,D46(%rip)
  mov    D46(%rip),%rax
  mov    %rax,%rsi
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L72:
  mov    -0x10(%rbp),%edx
  mov    -0x14(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0xc(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  je     L4
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D176(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L4:
  cmpq   $0x0,-0x8(%rbp)
  je     L44
  mov    D168(%rip),%rax
  add    $0x1,%rax
  mov    %rax,D173(%rip)
  mov    D173(%rip),%rax
  mov    %rax,%rsi
  lea    D173(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L44:
  mov    -0xc(%rbp),%edx
  mov    -0x30(%rbp),%rax
  mov    %edx,(%rax)
  cmpq   $0x0,-0x8(%rbp)
  je     L58
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D176(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L58:
  cmpq   $0x0,-0x8(%rbp)
  je     L52
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  nop
L52:
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D166
type_guessed: string
name: disassemble_data
arguments: data_tag: D202
type_guessed: string
name: disassemble_data
arguments: data_tag: D105
type_guessed: string
name: disassemble_data
arguments: data_tag: D176
type_guessed: string
name: disassemble_data
arguments: data_tag: D30
type_guessed: string
name: disassemble_data
arguments: data_tag: D46
type_guessed: string
name: disassemble_data
arguments: data_tag: D173
type_guessed: string
name: disassemble_data
arguments: data_tag: D42
type_guessed: string

tool: D166: DEBUG_TRACE

tool: D202: 
{ BEGIN @adders_io

tool: D105: 
  %%1 = load i32* %%in_out1, align 4, !dbg !2 for 0x%I64xth hint within @adders_io  --> 


tool: D176: 
 = 0x%X


tool: D30: 
  %%2 = add i32 %%in2, %%in1, !dbg !2 for 0x%I64xth hint within @adders_io  --> 


tool: D46: 
  %%3 = add i32 %%2, %%1, !dbg !2 for 0x%I64xth hint within @adders_io  --> 


tool: D173: 
  store i32 %%3, i32* %%in_out1, align 4, !dbg !2 for 0x%I64xth hint within @adders_io  --> 


tool: D42: 
END @adders_io}

assistant: ```c
void adders_io(signed int llvm_cbe_in1, signed int llvm_cbe_in2, signed int *llvm_cbe_in_out1) {
  static unsigned long long aesl_llvm_cbe_1_count = 0;
  static unsigned long long aesl_llvm_cbe_2_count = 0;
  static unsigned long long aesl_llvm_cbe_3_count = 0;
  static unsigned long long aesl_llvm_cbe_4_count = 0;
  static unsigned long long aesl_llvm_cbe_5_count = 0;
  static unsigned long long aesl_llvm_cbe_6_count = 0;
  static unsigned long long aesl_llvm_cbe_7_count = 0;
  unsigned int llvm_cbe_tmp__1;
  static unsigned long long aesl_llvm_cbe_8_count = 0;
  unsigned int llvm_cbe_tmp__2;
  static unsigned long long aesl_llvm_cbe_9_count = 0;
  unsigned int llvm_cbe_tmp__3;
  static unsigned long long aesl_llvm_cbe_10_count = 0;
  static unsigned long long aesl_llvm_cbe_11_count = 0;
  static unsigned long long aesl_llvm_cbe_12_count = 0;
  const char *AESL_DEBUG_TRACE = getenv("DEBUG_TRACE");
  if (AESL_DEBUG_TRACE)
    printf("\n\{ BEGIN @adders_io\n");
  if (AESL_DEBUG_TRACE)
    printf("\n  %%1 = load i32* %%in_out1, align 4, !dbg !2 for 0x%I64xth hint within @adders_io  --> \n", ++aesl_llvm_cbe_7_count);
  llvm_cbe_tmp__1 = (unsigned int)*llvm_cbe_in_out1;
  if (AESL_DEBUG_TRACE)
    printf("\n = 0x%X\n", llvm_cbe_tmp__1);
  if (AESL_DEBUG_TRACE)
    printf("\n  %%2 = add i32 %%in2, %%in1, !dbg !2 for 0x%I64xth hint within @adders_io  --> \n", ++aesl_llvm_cbe_8_count);
  llvm_cbe_tmp__2 = (unsigned int)((unsigned int)(llvm_cbe_in2 & 4294967295ull)) + ((unsigned int)(llvm_cbe_in1 & 4294967295ull));
  if (AESL_DEBUG_TRACE)
    printf("\n = 0x%X\n", ((unsigned int)(llvm_cbe_tmp__2 & 4294967295ull)));
  if (AESL_DEBUG_TRACE)
    printf("\n  %%3 = add i32 %%2, %%1, !dbg !2 for 0x%I64xth hint within @adders_io  --> \n", ++aesl_llvm_cbe_9_count);
  llvm_cbe_tmp__3 = (unsigned int)((unsigned int)(llvm_cbe_tmp__2 & 4294967295ull)) + ((unsigned int)(llvm_cbe_tmp__1 & 4294967295ull));
  if (AESL_DEBUG_TRACE)
    printf("\n = 0x%X\n", ((unsigned int)(llvm_cbe_tmp__3 & 4294967295ull)));
  if (AESL_DEBUG_TRACE)
    printf("\n  store i32 %%3, i32* %%in_out1, align 4, !dbg !2 for 0x%I64xth hint within @adders_io  --> \n", ++aesl_llvm_cbe_11_count);
  *llvm_cbe_in_out1 = llvm_cbe_tmp__3;
  if (AESL_DEBUG_TRACE)
    printf("\n = 0x%X\n", llvm_cbe_tmp__3);
  if (AESL_DEBUG_TRACE)
    printf("\nEND @adders_io}\n");
  return;
}
```