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

```asm
<CreateImplFile>:
  endbr64
  push   %r15
  mov    %esi,%r15d
  push   %r14
  mov    %rdx,%r14
  push   %r13
  mov    %rdi,%r13
  lea    D320(%rip),%rdi
  push   %r12
  mov    %rcx,%r12
  push   %rbp
  push   %rbx
  lea    D61(%rip),%rbx
  sub    $0x18,%rsp
  mov    %esi,0x4(%rsp)
  mov    $0x1,%esi
  mov    %rdx,0x8(%rsp)
  mov    $0x32,%edx
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x17,%edx
  mov    $0x1,%esi
  lea    D188(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x24,%edx
  mov    $0x1,%esi
  lea    D82(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x1f,%edx
  mov    $0x1,%esi
  lea    D226(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D302(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xa9,%edx
  mov    $0x1,%esi
  lea    D314(%rip),%rdi
  call   <fwrite@plt>
  test   %r15d,%r15d
  jle    L18
  lea    -0x1(%r15),%eax
  lea    D81(%rip),%rbp
  lea    0x8(%r14,%rax,8),%r15
  cs nopw 0x0(%rax,%rax,1)
L13:
  mov    (%r14),%rcx
  mov    %rbx,%rdx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  add    $0x8,%r14
  call   <fprintf@plt>
  cmp    %r15,%r14
  jne    L13
L18:
  mov    %r13,%rdx
  lea    D47(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x19,%edx
  mov    $0x1,%esi
  lea    D128(%rip),%rdi
  lea    D138(%rip),%r15
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x10,%edx
  mov    %r15,%rdi
  mov    $0x1,%esi
  lea    D83(%rip),%rbp
  call   <fwrite@plt>
  mov    %r13,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D130(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x19,%edx
  mov    $0x1,%esi
  lea    D286(%rip),%rdi
  call   <fwrite@plt>
  mov    %r13,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D325(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x11,%edx
  mov    $0x1,%esi
  lea    D33(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xf,%edx
  mov    $0x1,%esi
  lea    D186(%rip),%rdi
  call   <fwrite@plt>
  mov    %r13,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D68(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D236(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x16,%edx
  mov    $0x1,%esi
  lea    D51(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D240(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D339(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x3,%edx
  mov    $0x1,%esi
  lea    D86(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x8,%edx
  mov    %rbp,%rdi
  mov    $0x1,%esi
  call   <fwrite@plt>
  mov    %r13,%rcx
  mov    %rbx,%rdx
  mov    %r12,%rdi
  lea    D253(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %r13,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D308(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x10,%edx
  mov    %r15,%rdi
  mov    $0x1,%esi
  call   <fwrite@plt>
  mov    %r13,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D36(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x7,%edx
  mov    $0x1,%esi
  lea    D285(%rip),%rdi
  call   <fwrite@plt>
  mov    %r13,%rcx
  mov    %r13,%rdx
  mov    %r12,%rdi
  lea    D190(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x8,%edx
  mov    %rbp,%rdi
  mov    $0x1,%esi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x25,%edx
  mov    $0x1,%esi
  lea    D35(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0xa,%edx
  mov    $0x1,%esi
  lea    D102(%rip),%rdi
  call   <fwrite@plt>
  mov    %r12,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D157(%rip),%rdi
  call   <fwrite@plt>
  mov    %r13,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  lea    D111(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D136(%rip),%rdi
  call   <fwrite@plt>
  mov    0x4(%rsp),%eax
  test   %eax,%eax
  jle    L32
  mov    0x8(%rsp),%rbx
  sub    $0x1,%eax
  lea    D321(%rip),%rbp
  lea    0x8(%rbx,%rax,8),%r13
  nopw   0x0(%rax,%rax,1)
L29:
  mov    (%rbx),%rdx
  mov    %rbp,%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  add    $0x8,%rbx
  call   <fprintf@plt>
  cmp    %rbx,%r13
  jne    L29
L32:
  mov    %r12,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    %r12,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D245(%rip),%rdi
  call   <fwrite@plt>
  add    $0x18,%rsp
  mov    %r12,%rcx
  mov    $0x3,%edx
  pop    %rbx
  mov    $0x1,%esi
  lea    D172(%rip),%rdi
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1090 <fwrite@plt>
```

tool_calls: name: parse_data
arguments: data_tag: D320
type_guessed: string
name: parse_data
arguments: data_tag: D61
type_guessed: string
name: parse_data
arguments: data_tag: D188
type_guessed: string
name: parse_data
arguments: data_tag: D82
type_guessed: string
name: parse_data
arguments: data_tag: D226
type_guessed: string
name: parse_data
arguments: data_tag: D302
type_guessed: string
name: parse_data
arguments: data_tag: D314
type_guessed: string
name: parse_data
arguments: data_tag: D81
type_guessed: string
name: parse_data
arguments: data_tag: D47
type_guessed: string
name: parse_data
arguments: data_tag: D128
type_guessed: string
name: parse_data
arguments: data_tag: D138
type_guessed: string
name: parse_data
arguments: data_tag: D83
type_guessed: string
name: parse_data
arguments: data_tag: D130
type_guessed: string
name: parse_data
arguments: data_tag: D286
type_guessed: string
name: parse_data
arguments: data_tag: D325
type_guessed: string
name: parse_data
arguments: data_tag: D33
type_guessed: string
name: parse_data
arguments: data_tag: D186
type_guessed: string
name: parse_data
arguments: data_tag: D68
type_guessed: string
name: parse_data
arguments: data_tag: D236
type_guessed: string
name: parse_data
arguments: data_tag: D51
type_guessed: string
name: parse_data
arguments: data_tag: D240
type_guessed: string
name: parse_data
arguments: data_tag: D339
type_guessed: string
name: parse_data
arguments: data_tag: D86
type_guessed: string
name: parse_data
arguments: data_tag: D253
type_guessed: string
name: parse_data
arguments: data_tag: D308
type_guessed: string
name: parse_data
arguments: data_tag: D36
type_guessed: string
name: parse_data
arguments: data_tag: D285
type_guessed: string
name: parse_data
arguments: data_tag: D190
type_guessed: string
name: parse_data
arguments: data_tag: D35
type_guessed: string
name: parse_data
arguments: data_tag: D102
type_guessed: string
name: parse_data
arguments: data_tag: D157
type_guessed: string
name: parse_data
arguments: data_tag: D111
type_guessed: string
name: parse_data
arguments: data_tag: D136
type_guessed: string
name: parse_data
arguments: data_tag: D321
type_guessed: string
name: parse_data
arguments: data_tag: D245
type_guessed: string
name: parse_data
arguments: data_tag: D172
type_guessed: string

tool: D320: // Generated by vtkWrapPythonInit in VTK/Wrapping


tool: D61: VTK_ABI_EXPORT 

tool: D188: #include "vtkPython.h"


tool: D82: #include "vtkPythonCompatibility.h"


tool: D226: #include "vtkSystemIncludes.h"


tool: D302: #include <string.h>


tool: D314: // Handle compiler warning messages, etc.
#if defined( _MSC_VER ) && !defined(VTK_DISPLAY_WIN32_WARNINGS)
#pragma warning ( disable : 4706 )
#endif // Windows Warnings



tool: D81: extern  "C" {%sPyObject *PyVTKAddFile_%s(PyObject *); }


tool: D47: 
static PyMethodDef Py%s_Methods[] = {


tool: D128: {NULL, NULL, 0, NULL}};



tool: D138: #ifdef VTK_PY3K


tool: D83: #endif



tool: D130: static PyModuleDef Py%s_Module = {


tool: D286:   PyModuleDef_HEAD_INIT,


tool: D325:   "%s", // m_name


tool: D33:   NULL, // m_doc


tool: D186:   0, // m_size


tool: D68:   Py%s_Methods, //m_methods


tool: D236:   NULL, // m_reload


tool: D51:   NULL, // m_traverse


tool: D240:   NULL, // m_clear


tool: D339:   NULL  // m_free


tool: D86: };


tool: D253: extern  "C" {%sPyObject *real_init%s(const char *); }



tool: D308: PyObject *real_init%s(const char *)
{


tool: D36:   PyObject *m = PyModule_Create(&Py%s_Module);


tool: D285: #else



tool: D190:   PyObject *m = Py_InitModule("%s",
                              Py%s_Methods);


tool: D35:   PyObject *d = PyModule_GetDict(m);


tool: D102:   if (!d)


tool: D157:     {


tool: D111:     Py_FatalError("can't get dictionary for module %s");


tool: D136:     }


tool: D321:   PyVTKAddFile_%s(d);


tool: D245:   return m;


tool: D172: }



assistant: ```c
void CreateImplFile(const char *libName, int numFiles, char **files, FILE *fout) {
  int i;
  const char *dllexp = "VTK_ABI_EXPORT ";
  fprintf(fout, "// Generated by vtkWrapPythonInit in VTK/Wrapping\n");
  fprintf(fout, "#include \"vtkPython.h\"\n");
  fprintf(fout, "#include \"vtkPythonCompatibility.h\"\n");
  fprintf(fout, "#include \"vtkSystemIncludes.h\"\n");
  fprintf(fout, "#include <string.h>\n");
  fprintf(fout, "// Handle compiler warning messages, etc.\n"
                "#if defined( _MSC_VER ) && !defined(VTK_DISPLAY_WIN32_WARNINGS)\n"
                "#pragma warning ( disable : 4706 )\n"
                "#endif // Windows Warnings\n\n");
  for (i = 0; i < numFiles; i++) {
    fprintf(fout, "extern  \"C\" {%sPyObject *PyVTKAddFile_%s(PyObject *); }\n", dllexp, files[i]);
  }
  fprintf(fout, "\nstatic PyMethodDef Py%s_Methods[] = {\n", libName);
  fprintf(fout, "{NULL, NULL, 0, NULL}};\n\n");
  fprintf(fout, "#ifdef VTK_PY3K\n");
  fprintf(fout, "static PyModuleDef Py%s_Module = {\n", libName);
  fprintf(fout, "  PyModuleDef_HEAD_INIT,\n");
  fprintf(fout, "  \"%s\", // m_name\n", libName);
  fprintf(fout, "  NULL, // m_doc\n");
  fprintf(fout, "  0, // m_size\n");
  fprintf(fout, "  Py%s_Methods, //m_methods\n", libName);
  fprintf(fout, "  NULL, // m_reload\n");
  fprintf(fout, "  NULL, // m_traverse\n");
  fprintf(fout, "  NULL, // m_clear\n");
  fprintf(fout, "  NULL  // m_free\n");
  fprintf(fout, "};\n");
  fprintf(fout, "#endif\n\n");
  fprintf(fout, "extern  \"C\" {%sPyObject *real_init%s(const char *); }\n\n", dllexp, libName);
  fprintf(fout, "PyObject *real_init%s(const char *)\n{\n", libName);
  fprintf(fout, "#ifdef VTK_PY3K\n");
  fprintf(fout, "  PyObject *m = PyModule_Create(&Py%s_Module);\n", libName);
  fprintf(fout, "#else\n\n");
  fprintf(fout,
          "  PyObject *m = Py_InitModule(\"%s\",\n"
          "                              Py%s_Methods);\n",
          libName, libName);
  fprintf(fout, "#endif\n\n");
  fprintf(fout, "  PyObject *d = PyModule_GetDict(m);\n");
  fprintf(fout, "  if (!d)\n");
  fprintf(fout, "    {\n");
  fprintf(fout, "    Py_FatalError(\"can't get dictionary for module %s\");\n", libName);
  fprintf(fout, "    }\n");
  for (i = 0; i < numFiles; i++) {
    fprintf(fout, "  PyVTKAddFile_%s(d);\n", files[i]);
  }
  fprintf(fout, "\n");
  fprintf(fout, "  return m;\n");
  fprintf(fout, "}\n\n");
}
```