user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<element_notepad_output>:
  endbr64
  mov    $0x1e,%eax
  push   %r15
  cmp    %eax,%esi
  push   %r14
  mov    %esi,%r14d
  cmovle %esi,%eax
  push   %r13
  mov    %rcx,%r13
  mov    %r8d,%ecx
  test   %r13,%r13
  push   %r12
  mov    %rdi,%r12
  mov    %eax,%r8d
  lea    D130(%rip),%rax
  push   %rbx
  mov    0x30(%rsp),%ebx
  mov    0x38(%rsp),%r15d
  cmove  %rax,%r13
  cmp    $0x1,%r9d
  je     L24
  cmp    $0x2710,%esi
  mov    $0xc,%eax
  cmovge %eax,%r9d
  mov    $0x46,%eax
  lea    D117(%rip),%rsi
  cmovge %eax,%r8d
  xor    %eax,%eax
  call   <fprintf@plt>
  cmp    $0x79,%bl
  je     L30
L6:
  mov    %r14d,%edx
  lea    D60(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x2c,%edx
  mov    $0x1,%esi
  lea    D149(%rip),%rdi
  call   <fwrite@plt>
  test   %r15d,%r15d
  jne    L76
L21:
  mov    %r13,%rcx
  lea    D101(%rip),%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D115(%rip),%rsi
  call   <fprintf@plt>
L67:
  pop    %rbx
  mov    %r12,%rcx
  mov    $0x6,%edx
  pop    %r12
  mov    $0x1,%esi
  pop    %r13
  lea    D136(%rip),%rdi
  pop    %r14
  pop    %r15
  jmp    1070 <fwrite@plt>
  nopl   (%rax)
L76:
  mov    %r15d,%edx
  lea    D5(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L21
  xchg   %ax,%ax
L24:
  mov    %r13,%r9
  lea    D41(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %r14d,%edx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D66(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x2c,%edx
  mov    $0x1,%esi
  lea    D149(%rip),%rdi
  call   <fwrite@plt>
  cmp    $0x79,%bl
  je     L20
L32:
  test   %r15d,%r15d
  jne    L88
L51:
  mov    %r12,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D19(%rip),%rdi
  call   <fwrite@plt>
  jmp    L67
  cs nopw 0x0(%rax,%rax,1)
L88:
  mov    %r15d,%edx
  lea    D5(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  jmp    L51
  cs nopw 0x0(%rax,%rax,1)
L30:
  mov    %r12,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D23(%rip),%rdi
  call   <fwrite@plt>
  jmp    L6
  xchg   %ax,%ax
L20:
  mov    %r12,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D23(%rip),%rdi
  call   <fwrite@plt>
  jmp    L32
```

tool_calls: name: retrieve_data
arguments: data_tag: D130
datatype: string
name: retrieve_data
arguments: data_tag: D117
datatype: string
name: retrieve_data
arguments: data_tag: D60
datatype: string
name: retrieve_data
arguments: data_tag: D149
datatype: string
name: retrieve_data
arguments: data_tag: D101
datatype: string
name: retrieve_data
arguments: data_tag: D115
datatype: string
name: retrieve_data
arguments: data_tag: D136
datatype: string
name: retrieve_data
arguments: data_tag: D5
datatype: string
name: retrieve_data
arguments: data_tag: D41
datatype: string
name: retrieve_data
arguments: data_tag: D66
datatype: string
name: retrieve_data
arguments: data_tag: D19
datatype: string
name: retrieve_data
arguments: data_tag: D23
datatype: string

tool: 

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

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

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

tool: D101: soft

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


tool: D136: </td>


tool: D5:  tabindex=%d

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

tool: D66:  maxlength="%d"

tool: D19: >


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

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");
}
```