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

```asm
<showhelp>:
  endbr64
  test   %edi,%edi
  jg     L4
  xor    %edi,%edi
  jmp    1070 <exit@plt>
  nop
L4:
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  lea    D240(%rip),%rdi
  sub    $0x8,%rsp
  call   <printf@plt>
  lea    D355(%rip),%rdi
  call   <printf@plt>
  lea    D274(%rip),%rdi
  call   <printf@plt>
  lea    D294(%rip),%rdi
  call   <printf@plt>
  lea    D337(%rip),%rdi
  call   <printf@plt>
  lea    D118(%rip),%rdi
  call   <printf@plt>
  lea    D53(%rip),%rdi
  call   <printf@plt>
  lea    D10(%rip),%rdi
  call   <printf@plt>
  lea    D156(%rip),%rdi
  call   <printf@plt>
  lea    D291(%rip),%rdi
  call   <printf@plt>
  lea    D76(%rip),%rdi
  call   <printf@plt>
  lea    D95(%rip),%rdi
  call   <printf@plt>
  lea    D54(%rip),%rdi
  call   <printf@plt>
  cmp    $0x1,%ebx
  je     L15
  lea    D389(%rip),%rdi
  lea    D17(%rip),%rbp
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D358(%rip),%rdi
  call   <printf@plt>
  lea    D202(%rip),%rdi
  call   <printf@plt>
  lea    D3(%rip),%rdi
  call   <printf@plt>
  lea    D264(%rip),%rdi
  call   <printf@plt>
  cmp    $0x2,%ebx
  je     L15
  lea    D323(%rip),%rdi
  call   <printf@plt>
  lea    D75(%rip),%rdi
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <printf@plt>
  lea    D126(%rip),%rdi
  call   <printf@plt>
  lea    D127(%rip),%rdi
  call   <printf@plt>
  lea    D221(%rip),%rdi
  call   <printf@plt>
  lea    D210(%rip),%rdi
  call   <printf@plt>
  lea    D144(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D121(%rip),%rdi
  call   <printf@plt>
  lea    D152(%rip),%rdi
  call   <printf@plt>
  lea    D310(%rip),%rdi
  call   <printf@plt>
  lea    D86(%rip),%rdi
  call   <printf@plt>
  lea    D276(%rip),%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  lea    D208(%rip),%rdi
  call   <printf@plt>
  lea    D170(%rip),%rdi
  call   <printf@plt>
  lea    D228(%rip),%rdi
  call   <printf@plt>
  lea    D290(%rip),%rdi
  call   <printf@plt>
  lea    D244(%rip),%rdi
  call   <printf@plt>
  lea    D194(%rip),%rdi
  call   <printf@plt>
  lea    D297(%rip),%rdi
  call   <printf@plt>
  lea    D33(%rip),%rdi
  call   <printf@plt>
  lea    D223(%rip),%rdi
  call   <printf@plt>
L15:
  add    $0x8,%rsp
  xor    %edi,%edi
  pop    %rbx
  pop    %rbp
  jmp    1070 <exit@plt>
```

tool_calls: name: parse_data
arguments: label: D240
type_infered: string
name: parse_data
arguments: label: D355
type_infered: string
name: parse_data
arguments: label: D274
type_infered: string
name: parse_data
arguments: label: D294
type_infered: string
name: parse_data
arguments: label: D337
type_infered: string
name: parse_data
arguments: label: D118
type_infered: string
name: parse_data
arguments: label: D53
type_infered: string
name: parse_data
arguments: label: D10
type_infered: string
name: parse_data
arguments: label: D156
type_infered: string
name: parse_data
arguments: label: D291
type_infered: string
name: parse_data
arguments: label: D76
type_infered: string
name: parse_data
arguments: label: D95
type_infered: string
name: parse_data
arguments: label: D54
type_infered: string
name: parse_data
arguments: label: D389
type_infered: string
name: parse_data
arguments: label: D17
type_infered: string
name: parse_data
arguments: label: D358
type_infered: string
name: parse_data
arguments: label: D202
type_infered: string
name: parse_data
arguments: label: D3
type_infered: string
name: parse_data
arguments: label: D264
type_infered: string
name: parse_data
arguments: label: D323
type_infered: string
name: parse_data
arguments: label: D75
type_infered: string
name: parse_data
arguments: label: D63
type_infered: string
name: parse_data
arguments: label: D126
type_infered: string
name: parse_data
arguments: label: D127
type_infered: string
name: parse_data
arguments: label: D221
type_infered: string
name: parse_data
arguments: label: D210
type_infered: string
name: parse_data
arguments: label: D144
type_infered: string
name: parse_data
arguments: label: D121
type_infered: string
name: parse_data
arguments: label: D152
type_infered: string
name: parse_data
arguments: label: D310
type_infered: string
name: parse_data
arguments: label: D86
type_infered: string
name: parse_data
arguments: label: D276
type_infered: string
name: parse_data
arguments: label: D59
type_infered: string
name: parse_data
arguments: label: D208
type_infered: string
name: parse_data
arguments: label: D170
type_infered: string
name: parse_data
arguments: label: D228
type_infered: string
name: parse_data
arguments: label: D290
type_infered: string
name: parse_data
arguments: label: D244
type_infered: string
name: parse_data
arguments: label: D194
type_infered: string
name: parse_data
arguments: label: D297
type_infered: string
name: parse_data
arguments: label: D33
type_infered: string
name: parse_data
arguments: label: D223
type_infered: string

tool: D240:         **** Mofext v1.0.3 ****


tool: D355: Usage: mofext -d mypatterns1.list mypatterns2.list -q GGATCC TTGANTGA -m matrix -w 10 -c 0.95



tool: D274: Options:


tool: D294: ~~~~~~~~


tool: D337: -h     Display full help.


tool: D118: -d     Databases to search. Space separated, maximum 50.


tool: D53: -q     Query patterns. Space separated, maximum 50.


tool: D10: -m     The similarity matrix.


tool: D156: -w     Wordsize. Default: 6.


tool: D291: -c     The similarity percentage limit (cutoff). Default: 0.8.


tool: D76: -o     Output format. See below.


tool: D95: Example:


tool: D54: mofext -d mypatterns1.list mypatterns2.list -q GGATCC TTGANTGA -m matrix -w 4 -c 0.5



tool: D389: Matrix:


tool: D17: ~~~~~~~


tool: D358:  The matrix used by mofext is a plain text file. Each row ends with a newline character.


tool: D202:  Columns are separated by one or more spaces. The matrix is quadratic, so A[j,i] = A[i,j].


tool: D3:  The number in the upper left corner denotes the matrix size. See default matrix included


tool: D264:  in the source.


tool: D323: Motif list:


tool: D75: ~~~~~~~~~~~


tool: D63:  The motif list file used by mofext is a plain text file. Each row ends with a newline character.


tool: D126:  The motif list file must have at least 2 columns, separated by spaces or tabs. The first column


tool: D127:  is a UNIQUE motif id. It can contain any characters except space, newline or tab. The second


tool: D221:  column is the sequence (pattern) of the motif. The available characters are the ones defined in


tool: D210:  the matrix file. Additional columns are ignored by the program.


tool: D144: Output:


tool: D121:  The -o option sets the output format of the program. The following characters represent an output


tool: D152:  element. The default is ieqd.


tool: D310:  i: ID column.


tool: D86:  s: Score.


tool: D276:  e: Extended score.


tool: D59:  p: Probability value.


tool: D208:  d: Hit subsequence.


tool: D170:  D: Full hit sequence.


tool: D228:  q: Query subsequence.


tool: D290:  Q: Full query sequence.


tool: D244:  F: The position of the first base of the hit subsequence in the full hit sequence.


tool: D194:  f: The position of the first base of the query subsequence in the full query sequence.


tool: D297:  %%: The similarity percent score of the hit/query subsequence pair.


tool: D33:  Example: mofext -d mypatterns1.list -q GGATCC -m matrix -o ied


tool: D223:  The program prints out the ID, extended score and the hit subsequence.


assistant: ```c
void showhelp(int which) {
  if (which > 0) {
    printf("        **** Mofext v1.0.3 ****\n");
    printf("Usage: mofext -d mypatterns1.list mypatterns2.list -q GGATCC TTGANTGA -m matrix -w 10 -c 0.95\n\n");
    printf("Options:\n");
    printf("~~~~~~~~\n");
    printf("-h     Display full help.\n");
    printf("-d     Databases to search. Space separated, maximum 50.\n");
    printf("-q     Query patterns. Space separated, maximum 50.\n");
    printf("-m     The similarity matrix.\n");
    printf("-w     Wordsize. Default: 6.\n");
    printf("-c     The similarity percentage limit (cutoff). Default: 0.8.\n");
    printf("-o     Output format. See below.\n");
    printf("Example:\n");
    printf("mofext -d mypatterns1.list mypatterns2.list -q GGATCC TTGANTGA -m matrix -w 4 -c 0.5\n\n");
  }
  if (which > 1) {
    printf("Matrix:\n");
    printf("~~~~~~~\n");
    printf(" The matrix used by mofext is a plain text file. Each row ends with a newline character.\n");
    printf(" Columns are separated by one or more spaces. The matrix is quadratic, so A[j,i] = A[i,j].\n");
    printf(" The number in the upper left corner denotes the matrix size. See default matrix included\n");
    printf(" in the source.\n");
  }
  if (which > 2) {
    printf("Motif list:\n");
    printf("~~~~~~~~~~~\n");
    printf(" The motif list file used by mofext is a plain text file. Each row ends with a newline character.\n");
    printf(" The motif list file must have at least 2 columns, separated by spaces or tabs. The first column\n");
    printf(" is a UNIQUE motif id. It can contain any characters except space, newline or tab. The second\n");
    printf(" column is the sequence (pattern) of the motif. The available characters are the ones defined in\n");
    printf(" the matrix file. Additional columns are ignored by the program.\n");
    printf("Output:\n");
    printf("~~~~~~~\n");
    printf(" The -o option sets the output format of the program. The following characters represent an output\n");
    printf(" element. The default is ieqd.\n");
    printf(" i: ID column.\n");
    printf(" s: Score.\n");
    printf(" e: Extended score.\n");
    printf(" p: Probability value.\n");
    printf(" d: Hit subsequence.\n");
    printf(" D: Full hit sequence.\n");
    printf(" q: Query subsequence.\n");
    printf(" Q: Full query sequence.\n");
    printf(" F: The position of the first base of the hit subsequence in the full hit sequence.\n");
    printf(" f: The position of the first base of the query subsequence in the full query sequence.\n");
    printf(" %%: The similarity percent score of the hit/query subsequence pair.\n");
    printf(" Example: mofext -d mypatterns1.list -q GGATCC -m matrix -o ied\n");
    printf(" The program prints out the ID, extended score and the hit subsequence.\n");
  }
  exit(0);
}
```