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

```asm
<makeMCTs>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %rdx,-0x28(%rbp)
  mov    %rcx,-0x30(%rbp)
  mov    -0x18(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x18(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  lea    D63(%rip),%rcx
  lea    D28(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fflush@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x80,%esi
  mov    %rax,%rdi
  call   <rijndaelECB_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x0,%edx
  mov    $0xc0,%esi
  mov    %rax,%rdi
  call   <rijndaelECB_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <rijndaelECB_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x20(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x20(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  lea    D63(%rip),%rcx
  lea    D118(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fflush@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%edx
  mov    $0x80,%esi
  mov    %rax,%rdi
  call   <rijndaelECB_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%edx
  mov    $0xc0,%esi
  mov    %rax,%rdi
  call   <rijndaelECB_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%edx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <rijndaelECB_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x28(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x28(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  lea    D63(%rip),%rcx
  lea    D0(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fflush@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x80,%esi
  mov    %rax,%rdi
  call   <rijndaelCBC_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x0,%edx
  mov    $0xc0,%esi
  mov    %rax,%rdi
  call   <rijndaelCBC_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x0,%edx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <rijndaelCBC_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x30(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x30(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  lea    D63(%rip),%rcx
  lea    D43(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fflush@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%edx
  mov    $0x80,%esi
  mov    %rax,%rdi
  call   <rijndaelCBC_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%edx
  mov    $0xc0,%esi
  mov    %rax,%rdi
  call   <rijndaelCBC_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    $0x1,%edx
  mov    $0x100,%esi
  mov    %rax,%rdi
  call   <rijndaelCBC_MCT@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D122
data_type: string
name: unpack_data
arguments: label: D63
data_type: string
name: unpack_data
arguments: label: D28
data_type: string
name: unpack_data
arguments: label: D60
data_type: string
name: unpack_data
arguments: label: D118
data_type: string
name: unpack_data
arguments: label: D0
data_type: string
name: unpack_data
arguments: label: D43
data_type: string

tool: D122: w

tool: D63: Joan Daemen

tool: D28: 
=========================

FILENAME:  "%s"

Electronic Codebook (ECB) Mode - ENCRYPTION
Monte Carlo Test

Algorithm Name: Rijndael
Principal Submitter: %s


tool: D60: 
===========

tool: D118: 
=========================

FILENAME:  "%s"

Electronic Codebook (ECB) Mode - DECRYPTION
Monte Carlo Test

Algorithm Name: Rijndael
Principal Submitter: %s


tool: D0: 
=========================

FILENAME:  "%s"

Cipher Block Chaining (CBC) Mode - ENCRYPTION
Monte Carlo Test

Algorithm Name: Rijndael
Principal Submitter: %s


tool: D43: 
=========================

FILENAME:  "%s"

Cipher Block Chaining (CBC) Mode - DECRYPTION
Monte Carlo Test

Algorithm Name: Rijndael
Principal Submitter: %s


assistant: ```c
void makeMCTs(const char *ecbEncryptionFile, const char *ecbDecryptionFile, const char *cbcEncryptionFile, const char *cbcDecryptionFile) {
  FILE *fp;
  fp = fopen(ecbEncryptionFile, "w");
  fprintf(fp,
          "\n"
          "=========================\n"
          "\n"
          "FILENAME:  \"%s\"\n"
          "\n"
          "Electronic Codebook (ECB) Mode - ENCRYPTION\n"
          "Monte Carlo Test\n"
          "\n"
          "Algorithm Name: Rijndael\n"
          "Principal Submitter: %s\n",
          ecbEncryptionFile, "Joan Daemen");
  fflush(fp);
  rijndaelECB_MCT(fp, 128, 0);
  rijndaelECB_MCT(fp, 192, 0);
  rijndaelECB_MCT(fp, 256, 0);
  fprintf(fp, "\n"
              "===========");
  fclose(fp);
  fp = fopen(ecbDecryptionFile, "w");
  fprintf(fp,
          "\n"
          "=========================\n"
          "\n"
          "FILENAME:  \"%s\"\n"
          "\n"
          "Electronic Codebook (ECB) Mode - DECRYPTION\n"
          "Monte Carlo Test\n"
          "\n"
          "Algorithm Name: Rijndael\n"
          "Principal Submitter: %s\n",
          ecbDecryptionFile, "Joan Daemen");
  fflush(fp);
  rijndaelECB_MCT(fp, 128, 1);
  rijndaelECB_MCT(fp, 192, 1);
  rijndaelECB_MCT(fp, 256, 1);
  fprintf(fp, "\n"
              "===========");
  fclose(fp);
  fp = fopen(cbcEncryptionFile, "w");
  fprintf(fp,
          "\n"
          "=========================\n"
          "\n"
          "FILENAME:  \"%s\"\n"
          "\n"
          "Cipher Block Chaining (CBC) Mode - ENCRYPTION\n"
          "Monte Carlo Test\n"
          "\n"
          "Algorithm Name: Rijndael\n"
          "Principal Submitter: %s\n",
          cbcEncryptionFile, "Joan Daemen");
  fflush(fp);
  rijndaelCBC_MCT(fp, 128, 0);
  rijndaelCBC_MCT(fp, 192, 0);
  rijndaelCBC_MCT(fp, 256, 0);
  fprintf(fp, "\n"
              "===========");
  fclose(fp);
  fp = fopen(cbcDecryptionFile, "w");
  fprintf(fp,
          "\n"
          "=========================\n"
          "\n"
          "FILENAME:  \"%s\"\n"
          "\n"
          "Cipher Block Chaining (CBC) Mode - DECRYPTION\n"
          "Monte Carlo Test\n"
          "\n"
          "Algorithm Name: Rijndael\n"
          "Principal Submitter: %s\n",
          cbcDecryptionFile, "Joan Daemen");
  fflush(fp);
  rijndaelCBC_MCT(fp, 128, 1);
  rijndaelCBC_MCT(fp, 192, 1);
  rijndaelCBC_MCT(fp, 256, 1);
  fprintf(fp, "\n"
              "===========");
  fclose(fp);
}
```