user: Translate the below assembly code into C programming language:

```asm
<mount_method_select_all>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xe50,%rsp
  mov    %rdi,-0xe28(%rbp)
  mov    %rsi,-0xe30(%rbp)
  mov    %rdx,-0xe38(%rbp)
  mov    %ecx,-0xe3c(%rbp)
  mov    %r8,-0xe48(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    -0xe30(%rbp),%rdx
  lea    -0xe00(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0xe00(%rbp),%rax
  mov    %rax,%rdi
  call   <capitalize_name@plt>
  mov    -0xe30(%rbp),%rdx
  lea    -0xc00(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0xc00(%rbp),%rax
  mov    %rax,%rdi
  call   <uncapitalize_name@plt>
  mov    -0xe48(%rbp),%rdx
  lea    -0xa00(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0xa00(%rbp),%rax
  mov    %rax,%rdi
  call   <capitalize_name@plt>
  movl   $0x0,-0xe14(%rbp)
  mov    -0xe38(%rbp),%rdx
  mov    -0xe14(%rbp),%ecx
  mov    -0xe3c(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <write_array_type@plt>
  mov    %rax,-0xe08(%rbp)
  movl   $0x0,-0xe14(%rbp)
  jmp    L8
L59:
  mov    -0xe14(%rbp),%eax
  cltq
  imul   $0x1f4,%rax,%rdx
  mov    -0xe30(%rbp),%rax
  add    %rax,%rdx
  mov    -0xe48(%rbp),%rax
  mov    %rax,%rsi
  mov    %rdx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L30
  mov    -0xe14(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe08(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x800(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L30:
  addl   $0x1,-0xe14(%rbp)
L8:
  mov    -0xe14(%rbp),%eax
  cmp    -0xe3c(%rbp),%eax
  jl     L59
  lea    -0x800(%rbp),%rdx
  lea    -0x600(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0x600(%rbp),%rax
  mov    %rax,%rdi
  call   <capitalize_name@plt>
  lea    -0xe00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  lea    D127(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  lea    -0xe00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  lea    D38(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  lea    -0xc00(%rbp),%rcx
  lea    -0xe00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  lea    D91(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0xe28(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x3d,%edx
  mov    $0x1,%esi
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0xe28(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x32,%edx
  mov    $0x1,%esi
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0xe28(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  lea    -0xe00(%rbp),%rsi
  lea    -0xc00(%rbp),%rcx
  lea    -0xe00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  mov    %rsi,%r8
  lea    D69(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  movl   $0x0,-0xe10(%rbp)
  movl   $0x1,-0xe0c(%rbp)
  movl   $0x1,-0xe10(%rbp)
  jmp    L18
L39:
  mov    -0xe10(%rbp),%eax
  cltq
  imul   $0x1f4,%rax,%rdx
  mov    -0xe30(%rbp),%rax
  add    %rax,%rdx
  lea    -0x400(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0x400(%rbp),%rax
  mov    %rax,%rdi
  call   <capitalize_name@plt>
  mov    -0xe10(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xe08(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  lea    -0x200(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  lea    -0x200(%rbp),%rax
  mov    %rax,%rdi
  call   <capitalize_name@plt>
  mov    -0xe10(%rbp),%edi
  lea    -0x200(%rbp),%rsi
  lea    -0x400(%rbp),%rcx
  lea    -0xc00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  mov    %edi,%r9d
  mov    %rsi,%r8
  lea    D95(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x1,-0xe0c(%rbp)
  addl   $0x1,-0xe10(%rbp)
L18:
  mov    -0xe10(%rbp),%eax
  cmp    -0xe3c(%rbp),%eax
  jl     L39
  lea    -0xc00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  lea    D109(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  lea    -0xc00(%rbp),%rcx
  lea    -0xc00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  lea    D31(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0xe28(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x5,%edx
  mov    $0x1,%esi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0xe28(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  lea    -0xc00(%rbp),%rdx
  mov    -0xe28(%rbp),%rax
  lea    D9(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0xe28(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L17
  call   <__stack_chk_fail@plt>
L17:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D127
type: string
name: retrieve_data
arguments: tag: D38
type: string
name: retrieve_data
arguments: tag: D91
type: string
name: retrieve_data
arguments: tag: D134
type: string
name: retrieve_data
arguments: tag: D18
type: string
name: retrieve_data
arguments: tag: D84
type: string
name: retrieve_data
arguments: tag: D69
type: string
name: retrieve_data
arguments: tag: D95
type: string
name: retrieve_data
arguments: tag: D109
type: string
name: retrieve_data
arguments: tag: D31
type: string
name: retrieve_data
arguments: tag: D62
type: string
name: retrieve_data
arguments: tag: D45
type: string
name: retrieve_data
arguments: tag: D9
type: string
name: retrieve_data
arguments: tag: D98
type: string

tool: D127: 	public ArrayList<%s> selectAll() throws SQLException {


tool: D38: 		String sql = 'SELECT * FROM %s';


tool: D91: 		ArrayList<%s> %ss = new ArrayList<>();


tool: D134: 		PreparedStatement statement = conn.preparedStatement(sql);


tool: D18: 		ResultSet result = statement.executeQuery(sql);


tool: D84: 		while (result.next()) {


tool: D69: 			%s %s = new %s();


tool: D95: 			%s.set%s(result.get%s(%d));


tool: D109: 			if (%s != null) {


tool: D31: 				%ss.add(%s);


tool: D62: 			}


tool: D45: 		}


tool: D9: 		return %ss;


tool: D98: 	}

assistant: ```c
void mount_method_select_all(FILE *file_out, char name_array[][500], char type_array[][500], int real_dimension, char primary_key[500]) {
  char entity_name_pascalcase[500];
  strcpy(entity_name_pascalcase, name_array[0]);
  capitalize_name(entity_name_pascalcase);
  char lowercase_entity_name[500];
  strcpy(lowercase_entity_name, name_array[0]);
  uncapitalize_name(lowercase_entity_name);
  char capital_primary_key[500];
  strcpy(capital_primary_key, primary_key);
  capitalize_name(capital_primary_key);
  int k = 0;
  char **type_out;
  type_out = write_array_type(real_dimension, k, type_array);
  char type_primary_key[500];
  for (k = 0; k < real_dimension; k++) {
    if (strcmp(name_array[k], primary_key) == 0) {
      strcpy(type_primary_key, type_out[k]);
    }
  }
  char capital_type_primary_key[500];
  strcpy(capital_type_primary_key, type_primary_key);
  capitalize_name(capital_type_primary_key);
  fprintf(file_out, "	public ArrayList<%s> selectAll() throws SQLException {\n", entity_name_pascalcase);
  fprintf(file_out, "\t\tString sql = 'SELECT * FROM %s';\n", entity_name_pascalcase);
  fprintf(file_out, "\t\tArrayList<%s> %ss = new ArrayList<>();\n", entity_name_pascalcase, lowercase_entity_name);
  fprintf(file_out, "\t\tPreparedStatement statement = conn.preparedStatement(sql);\n");
  fprintf(file_out, "\t\tResultSet result = statement.executeQuery(sql);\n");
  fprintf(file_out, "\t\twhile (result.next()) {\n");
  fprintf(file_out, "\t\t\t%s %s = new %s();\n", entity_name_pascalcase, lowercase_entity_name, entity_name_pascalcase);
  int i = 0, j = 1;
  for (i = 1; i < real_dimension; i++) {
    char capital_column_name[500];
    strcpy(capital_column_name, name_array[i]);
    capitalize_name(capital_column_name);
    char capital_type_column[500];
    strcpy(capital_type_column, type_out[i]);
    capitalize_name(capital_type_column);
    fprintf(file_out, "\t\t\t%s.set%s(result.get%s(%d));\n", lowercase_entity_name, capital_column_name, capital_type_column, i);
    j++;
  }
  fprintf(file_out, "\t\t\tif (%s != null) {\n", lowercase_entity_name);
  fprintf(file_out, "\t\t\t\t%ss.add(%s);\n", lowercase_entity_name, lowercase_entity_name);
  fprintf(file_out, "\t\t\t}\n");
  fprintf(file_out, "\t\t}\n");
  fprintf(file_out, "\t\treturn %ss;\n", lowercase_entity_name);
  fprintf(file_out, "\t}");
}
```