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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  lea    D138(%rip),%rsi
  lea    D86(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,%r15
  mov    $0xc8,%ecx
  mov    $0xc8,%edx
  lea    D20(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  movl   $0x1,0xc(%rsp)
L2:
  pxor   %xmm0,%xmm0
  cvtsi2sdl 0xc(%rsp),%xmm0
  divsd  D87(%rip),%xmm0
  cvttsd2si %xmm0,%r13d
  mov    $0x1,%ebp
L38:
  mov    %r13d,%edi
  call   <sin@plt>
  movq   %xmm0,%rbx
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebp,%xmm0
  divsd  D87(%rip),%xmm0
  cvttsd2si %xmm0,%edi
  call   <cos@plt>
  mov    %eax,%edi
  call   <floor@plt>
  movapd %xmm0,%xmm1
  movq   %rbx,%xmm0
  mulsd  D135(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  call   <fabs@plt>
  mov    %rax,%rbx
  mov    %r13d,%edi
  call   <cos@plt>
  imul   %ebx,%eax
  mov    %eax,%r12d
  mov    %r13d,%edi
  call   <cos@plt>
  imul   %ebx,%eax
  mov    %eax,%ecx
  mov    %r12d,%r8d
  mov    %ebx,%edx
  lea    D124(%rip),%rsi
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  add    $0x1,%ebp
  cmp    $0xc9,%ebp
  jne    L38
  addl   $0x1,0xc(%rsp)
  mov    0xc(%rsp),%eax
  cmp    $0xc9,%eax
  jne    L2
  mov    %r15,%rdi
  call   <fclose@plt>
  test   %rax,%rax
  jne    L5
L9:
  lea    D138(%rip),%rsi
  lea    D23(%rip),%rbp
  mov    %rbp,%rdi
  call   <fopen@plt>
  mov    %rax,%rbx
  mov    %rax,%rcx
  mov    $0x2e,%edx
  mov    $0x1,%esi
  lea    D118(%rip),%rdi
  call   <fwrite@plt>
  lea    D36(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  lea    D14(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rcx
  mov    $0x16,%edx
  mov    $0x1,%esi
  lea    D122(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x33,%edx
  mov    $0x1,%esi
  lea    D42(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  mov    $0x0,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L5:
  lea    D116(%rip),%rdi
  call   <printf@plt>
  jmp    L9
```

tool_calls: name: disassemble_data
arguments: label: D138
type_guessed: string
name: disassemble_data
arguments: label: D86
type_guessed: string
name: disassemble_data
arguments: label: D20
type_guessed: string
name: disassemble_data
arguments: label: D87
type_guessed: f64
name: disassemble_data
arguments: label: D135
type_guessed: f64
name: disassemble_data
arguments: label: D124
type_guessed: string
name: disassemble_data
arguments: label: D23
type_guessed: string
name: disassemble_data
arguments: label: D118
type_guessed: string
name: disassemble_data
arguments: label: D36
type_guessed: string
name: disassemble_data
arguments: label: D14
type_guessed: string
name: disassemble_data
arguments: label: D122
type_guessed: string
name: disassemble_data
arguments: label: D42
type_guessed: string
name: disassemble_data
arguments: label: D116
type_guessed: string

tool: D138: w

tool: D86: ImageOutput3.ppm

tool: D20: P3
%d %d
255


tool: D87: 10

tool: D135: 255

tool: D124: %d
%d
%d


tool: D23: startGimp.bat

tool: D118: set DefaultGimp = C:\Program Files\GIMP 2\bin\

tool: D36: 
if not exist %%DefaultGimp%%gimp goto ERROR

tool: D14: 
set PATH =;%%PATH%%;%%DefaultGimp%%;

tool: D122: 
gimp ImageOutput3.ppm

tool: D42: 
:ERROR 
echo Something happened, exiting!
pause
cd

tool: D116: There was an error in closing the file.


assistant: ```c
int main() {
  int height = 200;
  int width = 200;
  int col = 0;
  int i, j, s;
  FILE *fout;
  fout = fopen("ImageOutput3.ppm", "w");
  fprintf(fout, "P3\n%d %d\n255\n", width, height);
  for (i = 1; i <= width; i++) {
    for (j = 1; j <= height; j++) {
      col = (int)fabs(255.0 * sin(i / 10.0) * floor(cos(j / 10.0)));
      fprintf(fout, "%d\n%d\n%d\n", (int)col, (int)col * cos(i / 10.0), (int)col * cos(i / 10.0));
    }
  }
  if (fclose(fout) != 0) {
    printf("There was an error in closing the file.\n");
  }
  fout = fopen("startGimp.bat", "w");
  fprintf(fout, "set DefaultGimp = C:\\Program Files\\GIMP 2\\bin\\");
  fprintf(fout, "\nif not exist %%DefaultGimp%%\gimp goto ERROR");
  fprintf(fout, "\nset PATH =;%%PATH%%;%%DefaultGimp%%;");
  fprintf(fout, "\ngimp ImageOutput3.ppm");
  fprintf(fout, "\n:ERROR \necho Something happened, exiting!\npause\ncd");
  s = system("startGimp.bat");
  return 0;
}
```