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

```asm
<element_notepad_output>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %esi,%ebp
  mov    %rcx,%r12
  mov    %r8d,%ecx
  mov    0x30(%rsp),%r14d
  mov    0x38(%rsp),%r13d
  mov    $0x1e,%eax
  cmp    %eax,%esi
  cmovle %esi,%eax
  mov    %eax,%r8d
  test   %r12,%r12
  lea    D35(%rip),%rax
  cmove  %rax,%r12
  cmp    $0x1,%r9d
  je     L61
  cmp    $0x2710,%esi
  mov    $0x46,%eax
  cmovge %eax,%r8d
  mov    $0xc,%eax
  cmovge %eax,%r9d
  lea    D94(%rip),%rsi
  mov    $0x0,%eax
  call   <fprintf@plt>
  cmp    $0x79,%r14b
  je     L12
L58:
  mov    %ebp,%edx
  lea    D22(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rcx
  mov    $0x2c,%edx
  mov    $0x1,%esi
  lea    D23(%rip),%rdi
  call   <fwrite@plt>
  test   %r13d,%r13d
  jne    L73
L96:
  mov    %r12,%rcx
  lea    D17(%rip),%rdx
  lea    D108(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L92:
  mov    %rbx,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D47(%rip),%rdi
  call   <fwrite@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L61:
  mov    %r12,%r9
  lea    D106(%rip),%rsi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %ebp,%edx
  lea    D36(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rcx
  mov    $0x2c,%edx
  mov    $0x1,%esi
  lea    D23(%rip),%rdi
  call   <fwrite@plt>
  cmp    $0x79,%r14b
  je     L55
L17:
  test   %r13d,%r13d
  jne    L32
L83:
  mov    %rbx,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D46(%rip),%rdi
  call   <fwrite@plt>
  jmp    L92
L55:
  mov    %rbx,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D43(%rip),%rdi
  call   <fwrite@plt>
  jmp    L17
L32:
  mov    %r13d,%edx
  lea    D86(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L83
L12:
  mov    %rbx,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D43(%rip),%rdi
  call   <fwrite@plt>
  jmp    L58
L73:
  mov    %r13d,%edx
  lea    D86(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L96
```

tool_calls: name: read_data
arguments: data_label: D35
type_infered: string
name: read_data
arguments: data_label: D94
type_infered: string
name: read_data
arguments: data_label: D22
type_infered: string
name: read_data
arguments: data_label: D23
type_infered: string
name: read_data
arguments: data_label: D17
type_infered: string
name: read_data
arguments: data_label: D108
type_infered: string
name: read_data
arguments: data_label: D47
type_infered: string
name: read_data
arguments: data_label: D106
type_infered: string
name: read_data
arguments: data_label: D36
type_infered: string
name: read_data
arguments: data_label: D46
type_infered: string
name: read_data
arguments: data_label: D43
type_infered: string
name: read_data
arguments: data_label: D86
type_infered: string

tool: 

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

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

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

tool: D17: soft

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


tool: D47: </td>


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

tool: D36:  maxlength="%d"

tool: D46: >


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

tool: D86:  tabindex=%d

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