user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x1008(%rsp)
  xor    %eax,%eax
  cmp    $0x1,%edi
  jle    L14
  mov    %rsi,%rbx
  mov    0x8(%rsi),%rdi
  call   <strlen@plt>
  lea    0x1(%rax),%edi
  call   <malloc@plt>
  mov    %rax,%rbp
  mov    0x8(%rbx),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L10:
  mov    %rsp,%rbx
  lea    D955(%rip),%rcx
  mov    %rbp,%rdx
  lea    D824(%rip),%r12
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <insert_file@plt>
  lea    D1063(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <insert_file@plt>
  lea    D506(%rip),%r13
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D210(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D350(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D941(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D528(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D787(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D971(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D339(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D46(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D542(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D523(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D637(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D106(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D372(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D927(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D203(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D94(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D149(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D386(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D560(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D685(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D729(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D440(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D566(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D155(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D655(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D275(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D886(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D626(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D593(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D93(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D1049(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D695(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D978(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D465(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D880(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D543(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D480(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  lea    D420(%rip),%rsi
  mov    %rbx,%rdi
  call   <rules_from_file@plt>
  lea    D335(%rip),%rdi
  call   <puts@plt>
  lea    D436(%rip),%rsi
  lea    D855(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D179(%rip),%rsi
  lea    D742(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D547(%rip),%rsi
  lea    D33(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D700(%rip),%rsi
  lea    D196(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D657(%rip),%rsi
  lea    D78(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D200(%rip),%rsi
  lea    D959(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D302(%rip),%rsi
  lea    D977(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D1031(%rip),%rsi
  lea    D909(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D630(%rip),%rsi
  lea    D801(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D859(%rip),%rsi
  lea    D1120(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D439(%rip),%rsi
  lea    D329(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D407(%rip),%rsi
  lea    D1022(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D194(%rip),%rsi
  lea    D912(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D871(%rip),%rsi
  lea    D970(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D145(%rip),%rsi
  lea    D47(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D538(%rip),%rsi
  lea    D925(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D698(%rip),%rsi
  lea    D574(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D49(%rip),%rsi
  lea    D472(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D802(%rip),%rsi
  lea    D752(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D180(%rip),%rsi
  lea    D242(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D1080(%rip),%rsi
  lea    D507(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D785(%rip),%rsi
  lea    D10(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D134(%rip),%rsi
  lea    D913(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D489(%rip),%rsi
  lea    D1107(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D393(%rip),%rsi
  lea    D330(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D531(%rip),%rsi
  lea    D125(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D1096(%rip),%rsi
  lea    D781(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D974(%rip),%rsi
  lea    D404(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D142(%rip),%rsi
  lea    D1000(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D428(%rip),%rsi
  lea    D856(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D105(%rip),%rsi
  lea    D62(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D20(%rip),%rsi
  lea    D726(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D586(%rip),%rsi
  lea    D537(%rip),%rdi
  call   <rule_for_word@plt>
  lea    D337(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rsi
  lea    D878(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <insert_file@plt>
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D177(%rip),%rcx
  mov    %rbp,%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <insert_file@plt>
  mov    %rbp,%rdi
  call   <free@plt>
  mov    0x1008(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  mov    $0x0,%eax
  add    $0x1018,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L14:
  mov    $0x2,%edi
  call   <malloc@plt>
  mov    %rax,%rbp
  lea    D122(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L10
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D955
data_type: string
name: parse_data
arguments: tag: D824
data_type: string
name: parse_data
arguments: tag: D1063
data_type: string
name: parse_data
arguments: tag: D506
data_type: string
name: parse_data
arguments: tag: D210
data_type: string
name: parse_data
arguments: tag: D350
data_type: string
name: parse_data
arguments: tag: D941
data_type: string
name: parse_data
arguments: tag: D528
data_type: string
name: parse_data
arguments: tag: D787
data_type: string
name: parse_data
arguments: tag: D971
data_type: string
name: parse_data
arguments: tag: D339
data_type: string
name: parse_data
arguments: tag: D46
data_type: string
name: parse_data
arguments: tag: D542
data_type: string
name: parse_data
arguments: tag: D523
data_type: string
name: parse_data
arguments: tag: D637
data_type: string
name: parse_data
arguments: tag: D106
data_type: string
name: parse_data
arguments: tag: D372
data_type: string
name: parse_data
arguments: tag: D927
data_type: string
name: parse_data
arguments: tag: D203
data_type: string
name: parse_data
arguments: tag: D94
data_type: string
name: parse_data
arguments: tag: D149
data_type: string
name: parse_data
arguments: tag: D386
data_type: string
name: parse_data
arguments: tag: D560
data_type: string
name: parse_data
arguments: tag: D685
data_type: string
name: parse_data
arguments: tag: D729
data_type: string
name: parse_data
arguments: tag: D440
data_type: string
name: parse_data
arguments: tag: D566
data_type: string
name: parse_data
arguments: tag: D155
data_type: string
name: parse_data
arguments: tag: D655
data_type: string
name: parse_data
arguments: tag: D275
data_type: string
name: parse_data
arguments: tag: D886
data_type: string
name: parse_data
arguments: tag: D626
data_type: string
name: parse_data
arguments: tag: D593
data_type: string
name: parse_data
arguments: tag: D93
data_type: string
name: parse_data
arguments: tag: D1049
data_type: string
name: parse_data
arguments: tag: D695
data_type: string
name: parse_data
arguments: tag: D978
data_type: string
name: parse_data
arguments: tag: D465
data_type: string
name: parse_data
arguments: tag: D880
data_type: string
name: parse_data
arguments: tag: D543
data_type: string
name: parse_data
arguments: tag: D480
data_type: string
name: parse_data
arguments: tag: D420
data_type: string
name: parse_data
arguments: tag: D335
data_type: string
name: parse_data
arguments: tag: D436
data_type: string
name: parse_data
arguments: tag: D855
data_type: string
name: parse_data
arguments: tag: D179
data_type: string
name: parse_data
arguments: tag: D742
data_type: string
name: parse_data
arguments: tag: D547
data_type: string
name: parse_data
arguments: tag: D33
data_type: string
name: parse_data
arguments: tag: D700
data_type: string
name: parse_data
arguments: tag: D196
data_type: string
name: parse_data
arguments: tag: D657
data_type: string
name: parse_data
arguments: tag: D78
data_type: string
name: parse_data
arguments: tag: D200
data_type: string
name: parse_data
arguments: tag: D959
data_type: string
name: parse_data
arguments: tag: D302
data_type: string
name: parse_data
arguments: tag: D977
data_type: string
name: parse_data
arguments: tag: D1031
data_type: string
name: parse_data
arguments: tag: D909
data_type: string
name: parse_data
arguments: tag: D630
data_type: string
name: parse_data
arguments: tag: D801
data_type: string
name: parse_data
arguments: tag: D859
data_type: string
name: parse_data
arguments: tag: D1120
data_type: string
name: parse_data
arguments: tag: D439
data_type: string
name: parse_data
arguments: tag: D329
data_type: string
name: parse_data
arguments: tag: D407
data_type: string
name: parse_data
arguments: tag: D1022
data_type: string
name: parse_data
arguments: tag: D194
data_type: string
name: parse_data
arguments: tag: D912
data_type: string
name: parse_data
arguments: tag: D871
data_type: string
name: parse_data
arguments: tag: D970
data_type: string
name: parse_data
arguments: tag: D145
data_type: string
name: parse_data
arguments: tag: D47
data_type: string
name: parse_data
arguments: tag: D538
data_type: string
name: parse_data
arguments: tag: D925
data_type: string
name: parse_data
arguments: tag: D698
data_type: string
name: parse_data
arguments: tag: D574
data_type: string
name: parse_data
arguments: tag: D49
data_type: string
name: parse_data
arguments: tag: D472
data_type: string
name: parse_data
arguments: tag: D802
data_type: string
name: parse_data
arguments: tag: D752
data_type: string
name: parse_data
arguments: tag: D180
data_type: string
name: parse_data
arguments: tag: D242
data_type: string
name: parse_data
arguments: tag: D1080
data_type: string
name: parse_data
arguments: tag: D507
data_type: string
name: parse_data
arguments: tag: D785
data_type: string
name: parse_data
arguments: tag: D10
data_type: string
name: parse_data
arguments: tag: D134
data_type: string
name: parse_data
arguments: tag: D913
data_type: string
name: parse_data
arguments: tag: D489
data_type: string
name: parse_data
arguments: tag: D1107
data_type: string
name: parse_data
arguments: tag: D393
data_type: string
name: parse_data
arguments: tag: D330
data_type: string
name: parse_data
arguments: tag: D531
data_type: string
name: parse_data
arguments: tag: D125
data_type: string
name: parse_data
arguments: tag: D1096
data_type: string
name: parse_data
arguments: tag: D781
data_type: string
name: parse_data
arguments: tag: D974
data_type: string
name: parse_data
arguments: tag: D404
data_type: string
name: parse_data
arguments: tag: D142
data_type: string
name: parse_data
arguments: tag: D1000
data_type: string
name: parse_data
arguments: tag: D428
data_type: string
name: parse_data
arguments: tag: D856
data_type: string
name: parse_data
arguments: tag: D105
data_type: string
name: parse_data
arguments: tag: D62
data_type: string
name: parse_data
arguments: tag: D20
data_type: string
name: parse_data
arguments: tag: D726
data_type: string
name: parse_data
arguments: tag: D586
data_type: string
name: parse_data
arguments: tag: D537
data_type: string
name: parse_data
arguments: tag: D337
data_type: string
name: parse_data
arguments: tag: D878
data_type: string
name: parse_data
arguments: tag: D177
data_type: string
name: parse_data
arguments: tag: D122
data_type: string

tool: D955: user_code_top.metaflex

tool: D824: %s/%s

tool: D1063: roman_numbers.metaflex

tool: D506: 
%%%%


tool: D210: article.wordlist

tool: D350: ARTICLE

tool: D941: be.wordlist

tool: D528: BE

tool: D787: character.wordlist

tool: D971: CHARACTER

tool: D339: first_person.wordlist

tool: D46: FIRST_PERSON

tool: D542: first_person_possessive.wordlist

tool: D523: FIRST_PERSON_POSSESSIVE

tool: D637: first_person_reflexive.wordlist

tool: D106: FIRST_PERSON_REFLEXIVE

tool: D372: negative_adjective.wordlist

tool: D927: NEGATIVE_ADJECTIVE

tool: D203: negative_comparative.wordlist

tool: D94: NEGATIVE_COMPARATIVE

tool: D149: negative_noun.wordlist

tool: D386: NEGATIVE_NOUN

tool: D560: neutral_adjective.wordlist

tool: D685: NEUTRAL_ADJECTIVE

tool: D729: neutral_noun.wordlist

tool: D440: NEUTRAL_NOUN

tool: D566: nothing.wordlist

tool: D155: NOTHING

tool: D655: positive_adjective.wordlist

tool: D275: POSITIVE_ADJECTIVE

tool: D886: positive_comparative.wordlist

tool: D626: POSITIVE_COMPARATIVE

tool: D593: positive_noun.wordlist

tool: D93: POSITIVE_NOUN

tool: D1049: second_person.wordlist

tool: D695: SECOND_PERSON

tool: D978: second_person_possessive.wordlist

tool: D465: SECOND_PERSON_POSSESSIVE

tool: D880: second_person_reflexive.wordlist

tool: D543: SECOND_PERSON_REFLEXIVE

tool: D480: third_person_possessive.wordlist

tool: D420: THIRD_PERSON_POSSESSIVE

tool: D335: 
 /* single word rules */

tool: D436: AND

tool: D855: and

tool: D179: AS

tool: D742: as

tool: D547: ENTER

tool: D33: enter

tool: D700: EXEUNT

tool: D196: exeunt

tool: D657: EXIT

tool: D78: exit

tool: D200: HEART

tool: D959: heart

tool: D302: IF_NOT

tool: D977: if not

tool: D1031: IF_SO

tool: D909: if so

tool: D630: LESS

tool: D801: less

tool: D859: LET_US

tool: D1120: let us

tool: D439: LISTEN_TO

tool: D329: listen to

tool: D407: MIND

tool: D1022: mind

tool: D194: MORE

tool: D912: more

tool: D871: NOT

tool: D970: not

tool: D145: OPEN

tool: D47: open

tool: D538: PROCEED_TO

tool: D925: proceed to

tool: D698: RECALL

tool: D574: recall

tool: D49: REMEMBER

tool: D472: remember

tool: D802: RETURN_TO

tool: D752: return to

tool: D180: SPEAK

tool: D242: speak

tool: D1080: THAN

tool: D507: than

tool: D785: THE_CUBE_OF

tool: D10: the cube of

tool: D134: THE_DIFFERENCE_BETWEEN

tool: D913: the difference between

tool: D489: THE_FACTORIAL_OF

tool: D1107: the factorial of

tool: D393: THE_PRODUCT_OF

tool: D330: the product of

tool: D531: THE_QUOTIENT_BETWEEN

tool: D125: the quotient between

tool: D1096: THE_REMAINDER_OF_THE_QUOTIENT_BETWEEN

tool: D781: the remainder of the quotient between

tool: D974: THE_SQUARE_OF

tool: D404: the square of

tool: D142: THE_SQUARE_ROOT_OF

tool: D1000: the square root of

tool: D428: THE_SUM_OF

tool: D856: the sum of

tool: D105: TWICE

tool: D62: twice

tool: D20: WE_MUST

tool: D726: we must

tool: D586: WE_SHALL

tool: D537: we shall

tool: D337: terminals.metaflex

tool: D878: 
 /* rules for terminals from file %s */

tool: D177: user_code_bottom.metaflex

tool: D122: .

assistant: ```c
int main(int argc, char *argv[]) {
  char filename[4096];
  char *include_path;
  if (argc < 2) {
    include_path = (char *)malloc(sizeof(char) * 2);
    strcpy(include_path, ".");
  } else {
    include_path = (char *)malloc(sizeof(char) * strlen(argv[1]) + 1);
    strcpy(include_path, argv[1]);
  }
  sprintf(filename, "%s/%s", include_path, "user_code_top.metaflex");
  insert_file(filename);
  sprintf(filename, "%s/%s", include_path, "roman_numbers.metaflex");
  insert_file(filename);
  printf("\n%%%%\n");
  sprintf(filename, "%s/%s", include_path, "article.wordlist");
  rules_from_file(filename, "ARTICLE");
  sprintf(filename, "%s/%s", include_path, "be.wordlist");
  rules_from_file(filename, "BE");
  sprintf(filename, "%s/%s", include_path, "character.wordlist");
  rules_from_file(filename, "CHARACTER");
  sprintf(filename, "%s/%s", include_path, "first_person.wordlist");
  rules_from_file(filename, "FIRST_PERSON");
  sprintf(filename, "%s/%s", include_path, "first_person_possessive.wordlist");
  rules_from_file(filename, "FIRST_PERSON_POSSESSIVE");
  sprintf(filename, "%s/%s", include_path, "first_person_reflexive.wordlist");
  rules_from_file(filename, "FIRST_PERSON_REFLEXIVE");
  sprintf(filename, "%s/%s", include_path, "negative_adjective.wordlist");
  rules_from_file(filename, "NEGATIVE_ADJECTIVE");
  sprintf(filename, "%s/%s", include_path, "negative_comparative.wordlist");
  rules_from_file(filename, "NEGATIVE_COMPARATIVE");
  sprintf(filename, "%s/%s", include_path, "negative_noun.wordlist");
  rules_from_file(filename, "NEGATIVE_NOUN");
  sprintf(filename, "%s/%s", include_path, "neutral_adjective.wordlist");
  rules_from_file(filename, "NEUTRAL_ADJECTIVE");
  sprintf(filename, "%s/%s", include_path, "neutral_noun.wordlist");
  rules_from_file(filename, "NEUTRAL_NOUN");
  sprintf(filename, "%s/%s", include_path, "nothing.wordlist");
  rules_from_file(filename, "NOTHING");
  sprintf(filename, "%s/%s", include_path, "positive_adjective.wordlist");
  rules_from_file(filename, "POSITIVE_ADJECTIVE");
  sprintf(filename, "%s/%s", include_path, "positive_comparative.wordlist");
  rules_from_file(filename, "POSITIVE_COMPARATIVE");
  sprintf(filename, "%s/%s", include_path, "positive_noun.wordlist");
  rules_from_file(filename, "POSITIVE_NOUN");
  sprintf(filename, "%s/%s", include_path, "second_person.wordlist");
  rules_from_file(filename, "SECOND_PERSON");
  sprintf(filename, "%s/%s", include_path, "second_person_possessive.wordlist");
  rules_from_file(filename, "SECOND_PERSON_POSSESSIVE");
  sprintf(filename, "%s/%s", include_path, "second_person_reflexive.wordlist");
  rules_from_file(filename, "SECOND_PERSON_REFLEXIVE");
  sprintf(filename, "%s/%s", include_path, "third_person_possessive.wordlist");
  rules_from_file(filename, "THIRD_PERSON_POSSESSIVE");
  printf("\n /* single word rules */\n");
  rule_for_word("and", "AND");
  rule_for_word("as", "AS");
  rule_for_word("enter", "ENTER");
  rule_for_word("exeunt", "EXEUNT");
  rule_for_word("exit", "EXIT");
  rule_for_word("heart", "HEART");
  rule_for_word("if not", "IF_NOT");
  rule_for_word("if so", "IF_SO");
  rule_for_word("less", "LESS");
  rule_for_word("let us", "LET_US");
  rule_for_word("listen to", "LISTEN_TO");
  rule_for_word("mind", "MIND");
  rule_for_word("more", "MORE");
  rule_for_word("not", "NOT");
  rule_for_word("open", "OPEN");
  rule_for_word("proceed to", "PROCEED_TO");
  rule_for_word("recall", "RECALL");
  rule_for_word("remember", "REMEMBER");
  rule_for_word("return to", "RETURN_TO");
  rule_for_word("speak", "SPEAK");
  rule_for_word("than", "THAN");
  rule_for_word("the cube of", "THE_CUBE_OF");
  rule_for_word("the difference between", "THE_DIFFERENCE_BETWEEN");
  rule_for_word("the factorial of", "THE_FACTORIAL_OF");
  rule_for_word("the product of", "THE_PRODUCT_OF");
  rule_for_word("the quotient between", "THE_QUOTIENT_BETWEEN");
  rule_for_word("the remainder of the quotient between", "THE_REMAINDER_OF_THE_QUOTIENT_BETWEEN");
  rule_for_word("the square of", "THE_SQUARE_OF");
  rule_for_word("the square root of", "THE_SQUARE_ROOT_OF");
  rule_for_word("the sum of", "THE_SUM_OF");
  rule_for_word("twice", "TWICE");
  rule_for_word("we must", "WE_MUST");
  rule_for_word("we shall", "WE_SHALL");
  sprintf(filename, "%s/%s", include_path, "terminals.metaflex");
  printf("\n /* rules for terminals from file %s */", filename);
  insert_file(filename);
  printf("\n%%%%\n");
  sprintf(filename, "%s/%s", include_path, "user_code_bottom.metaflex");
  insert_file(filename);
  free(include_path);
  return 0;
}
```