user: 请从给定的汇编指令推导出C源代码:

```asm
<adders_io>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%r12d
  mov    %esi,%ebx
  mov    %rdx,%rbp
  lea    D59(%rip),%rdi
  call   <getenv@plt>
  test   %rax,%rax
  je     L9
  lea    D10(%rip),%rdi
  call   <puts@plt>
  mov    D147(%rip),%rax
  lea    0x1(%rax),%rsi
  mov    %rsi,D145(%rip)
  lea    D145(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x0(%rbp),%r14d
  mov    %r14d,%esi
  lea    D28(%rip),%r13
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    D41(%rip),%rax
  lea    0x1(%rax),%rsi
  mov    %rsi,D61(%rip)
  lea    D61(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    %r12d,%ebx
  mov    %ebx,%esi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    D123(%rip),%rax
  lea    0x1(%rax),%rsi
  mov    %rsi,D152(%rip)
  lea    D152(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    %r14d,%ebx
  mov    %ebx,%esi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    D39(%rip),%rax
  lea    0x1(%rax),%rsi
  mov    %rsi,D111(%rip)
  lea    D111(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,0x0(%rbp)
  mov    %ebx,%esi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D40(%rip),%rdi
  call   <puts@plt>
L15:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L9:
  add    %r12d,%ebx
  add    %ebx,0x0(%rbp)
  jmp    L15
```

tool_calls: name: disassemble_data
arguments: tag: D59
type_guessed: string
name: disassemble_data
arguments: tag: D10
type_guessed: string
name: disassemble_data
arguments: tag: D145
type_guessed: string
name: disassemble_data
arguments: tag: D28
type_guessed: string
name: disassemble_data
arguments: tag: D61
type_guessed: string
name: disassemble_data
arguments: tag: D152
type_guessed: string
name: disassemble_data
arguments: tag: D111
type_guessed: string
name: disassemble_data
arguments: tag: D40
type_guessed: string

tool: D59: DEBUG_TRACE

tool: D10: 
{ BEGIN @adders_io

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


tool: D28: 
 = 0x%X


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


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


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


tool: D40: 
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;
}
```