user: What is the c source code of the assembly code below?

```asm
<f_maxmemory>:
  endbr64
  push   %r14
  lea    D112(%rip),%rdx
  push   %r13
  push   %r12
  mov    %rsi,%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D41(%rip),%rdx
  mov    %rax,%r14
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D78(%rip),%rdx
  cmp    %rax,%r14
  cmova  %rax,%r14
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D1(%rip),%rdx
  mov    %rax,%rbx
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D73(%rip),%rdx
  add    %rax,%rbx
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D121(%rip),%rdx
  lea    (%rax,%rbx,1),%r13
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D93(%rip),%rdx
  add    %rax,%r13
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D107(%rip),%rdx
  add    %rax,%r13
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  add    %r14,%r13
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D97(%rip),%rdx
  mov    %rax,%rbx
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D113(%rip),%rdx
  add    %rax,%rbx
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D98(%rip),%rdx
  add    %rax,%rbx
  call   <get_var@plt>
  mov    $0xa,%edx
  xor    %esi,%esi
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D32(%rip),%rdx
  add    %rax,%rbx
  call   <get_var@plt>
  mov    $0xa,%edx
  xor    %esi,%esi
  mov    %eax,%edi
  call   <strtoull@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D61(%rip),%rdx
  add    %rax,%rbx
  call   <get_var@plt>
  xor    %esi,%esi
  mov    $0xa,%edx
  mov    %eax,%edi
  call   <strtoull@plt>
  lea    D124(%rip),%rdi
  imul   %rbx,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  lea    (%rax,%r13,1),%rsi
  pop    %r13
  pop    %r14
  jmp    1070 <printf@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D112
type_guessed: string
name: retrieve_data
arguments: data_label: D41
type_guessed: string
name: retrieve_data
arguments: data_label: D78
type_guessed: string
name: retrieve_data
arguments: data_label: D1
type_guessed: string
name: retrieve_data
arguments: data_label: D73
type_guessed: string
name: retrieve_data
arguments: data_label: D121
type_guessed: string
name: retrieve_data
arguments: data_label: D93
type_guessed: string
name: retrieve_data
arguments: data_label: D107
type_guessed: string
name: retrieve_data
arguments: data_label: D97
type_guessed: string
name: retrieve_data
arguments: data_label: D113
type_guessed: string
name: retrieve_data
arguments: data_label: D98
type_guessed: string
name: retrieve_data
arguments: data_label: D32
type_guessed: string
name: retrieve_data
arguments: data_label: D61
type_guessed: string
name: retrieve_data
arguments: data_label: D124
type_guessed: string

tool: D112: tmp_table_size

tool: D41: max_heap_table_size

tool: D78: key_buffer_size

tool: D1: innodb_buffer_pool_size

tool: D73: innodb_additional_mem_pool_size

tool: D121: innodb_log_buffer_size

tool: D93: query_cache_size

tool: D107: read_buffer_size

tool: D97: read_rnd_buffer_size

tool: D113: sort_buffer_size

tool: D98: thread_stack

tool: D32: join_buffer_size

tool: D61: max_connections

tool: D124: %llu

assistant: ```c
void f_maxmemory(const char *buffer, size_t len) {
  unsigned long long tmp_table_size;
  unsigned long long max_heap_table_size;
  unsigned long long max_tmp_table_size;
  unsigned long long server_buffers;
  unsigned long long per_thread_buffers;
  unsigned long long total_per_thread_buffers;
  tmp_table_size = strtoull(get_var(buffer, len, "tmp_table_size"), NULL, 10);
  max_heap_table_size = strtoull(get_var(buffer, len, "max_heap_table_size"), NULL, 10);
  max_tmp_table_size = (tmp_table_size > max_heap_table_size) ? max_heap_table_size : tmp_table_size;
  server_buffers = strtoull(get_var(buffer, len, "key_buffer_size"), NULL, 10) + max_tmp_table_size;
  server_buffers += strtoull(get_var(buffer, len, "innodb_buffer_pool_size"), NULL, 10);
  server_buffers += strtoull(get_var(buffer, len, "innodb_additional_mem_pool_size"), NULL, 10);
  server_buffers += strtoull(get_var(buffer, len, "innodb_log_buffer_size"), NULL, 10);
  server_buffers += strtoull(get_var(buffer, len, "query_cache_size"), NULL, 10);
  per_thread_buffers = strtoull(get_var(buffer, len, "read_buffer_size"), NULL, 10);
  per_thread_buffers += strtoull(get_var(buffer, len, "read_rnd_buffer_size"), NULL, 10);
  per_thread_buffers += strtoull(get_var(buffer, len, "sort_buffer_size"), NULL, 10);
  per_thread_buffers += strtoull(get_var(buffer, len, "thread_stack"), NULL, 10);
  per_thread_buffers += strtoull(get_var(buffer, len, "join_buffer_size"), NULL, 10);
  total_per_thread_buffers = per_thread_buffers * strtoull(get_var(buffer, len, "max_connections"), NULL, 10);
  printf("%llu", server_buffers + total_per_thread_buffers);
}
```