user: 请将以下的汇编代码转换成C语言代码:

```asm
<element_notepad_output>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    %r8d,-0x20(%rbp)
  mov    %r9d,-0x34(%rbp)
  mov    0x10(%rbp),%eax
  mov    %al,-0x38(%rbp)
  cmpl   $0x1e,-0x1c(%rbp)
  jle    L70
  movl   $0x1e,-0x4(%rbp)
  jmp    L16
L70:
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x4(%rbp)
L16:
  cmpq   $0x0,-0x30(%rbp)
  jne    L20
  lea    D128(%rip),%rax
  mov    %rax,-0x30(%rbp)
L20:
  cmpl   $0x1,-0x34(%rbp)
  jne    L0
  mov    -0x30(%rbp),%rdi
  mov    -0x4(%rbp),%esi
  mov    -0x20(%rbp),%ecx
  mov    -0x28(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdi,%r9
  mov    %esi,%r8d
  lea    D26(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D10(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2c,%edx
  mov    $0x1,%esi
  lea    D115(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  cmpb   $0x79,-0x38(%rbp)
  jne    L15
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L15:
  cmpl   $0x0,0x18(%rbp)
  je     L66
  mov    0x18(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D78(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L66:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L27
L0:
  cmpl   $0x270f,-0x1c(%rbp)
  jle    L82
  movl   $0x46,-0x4(%rbp)
  movl   $0xc,-0x34(%rbp)
L82:
  mov    -0x34(%rbp),%edi
  mov    -0x4(%rbp),%esi
  mov    -0x20(%rbp),%ecx
  mov    -0x28(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %edi,%r9d
  mov    %esi,%r8d
  lea    D143(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  cmpb   $0x79,-0x38(%rbp)
  jne    L31
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L31:
  mov    -0x1c(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D7(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2c,%edx
  mov    $0x1,%esi
  lea    D115(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  cmpl   $0x0,0x18(%rbp)
  je     L39
  mov    0x18(%rbp),%edx
  mov    -0x18(%rbp),%rax
  lea    D78(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L39:
  mov    -0x30(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rcx
  lea    D144(%rip),%rdx
  lea    D137(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L27:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D128
datatype: string
name: retrieve_data
arguments: tag: D26
datatype: string
name: retrieve_data
arguments: tag: D10
datatype: string
name: retrieve_data
arguments: tag: D115
datatype: string
name: retrieve_data
arguments: tag: D113
datatype: string
name: retrieve_data
arguments: tag: D78
datatype: string
name: retrieve_data
arguments: tag: D63
datatype: string
name: retrieve_data
arguments: tag: D143
datatype: string
name: retrieve_data
arguments: tag: D7
datatype: string
name: retrieve_data
arguments: tag: D144
datatype: string
name: retrieve_data
arguments: tag: D137
datatype: string
name: retrieve_data
arguments: tag: D44
datatype: string

tool: 

tool: D26: <td><input name="%s_%d" type="text" size="%d" value="%s"

tool: D10:  maxlength="%d"

tool: D115:  onkeyup="timlib_prevent_carrot(event,this)"

tool: D113:  onChange="null2slash(this)"

tool: D78:  tabindex=%d

tool: D63: >


tool: D143: <td><textarea name="%s_%d" cols=%d rows=%d

tool: D7:  onblur="timlib_check_notepad_size(this, %d);"

tool: D144: soft

tool: D137:  wrap=%s>%s</textarea>


tool: D44: </td>


assistant: ```c
void element_notepad_output(FILE *output_file, int attribute_width, char *element_name, char *data, int row, int number_rows, char onchange_null2slash_yn, int tab_index) {
  int display_width;
  if (attribute_width > 30)
    display_width = 30;
  else
    display_width = attribute_width;
  if (!data)
    data = "";
  if (number_rows == 1) {
    fprintf(output_file, "<td><input name=\"%s_%d\" type=\"text\" size=\"%d\" value=\"%s\"", element_name, row, display_width, data);
    fprintf(output_file, " maxlength=\"%d\"", attribute_width);
    fprintf(output_file, " onkeyup=\"timlib_prevent_carrot(event,this)\"");
    if (onchange_null2slash_yn == 'y') {
      fprintf(output_file, " onChange=\"null2slash(this)\"");
    }
    if (tab_index) {
      fprintf(output_file, " tabindex=%d", tab_index);
    }
    fprintf(output_file, ">\n");
  } else {
    if (attribute_width >= 10000) {
      display_width = 70;
      number_rows = 12;
    }
    fprintf(output_file, "<td><textarea name=\"%s_%d\" cols=%d rows=%d", element_name, row, display_width, number_rows);
    if (onchange_null2slash_yn == 'y') {
      fprintf(output_file, " onChange=\"null2slash(this)\"");
    }
    fprintf(output_file, " onblur=\"timlib_check_notepad_size(this, %d);\"", attribute_width);
    fprintf(output_file, " onkeyup=\"timlib_prevent_carrot(event,this)\"");
    if (tab_index) {
      fprintf(output_file, " tabindex=%d", tab_index);
    }
    fprintf(output_file, " wrap=%s>%s</textarea>\n", "soft", data);
  }
  fprintf(output_file, "</td>\n");
}
```