user: Please show me the C implementation that matches the assembly code listed below:

```asm
<show_mainsk_usage>:
  endbr64
  sub    $0x68,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  xor    %eax,%eax
  lea    D11(%rip),%rdi
  call   <printf@plt>
  lea    D20(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  call   <gets@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D4(%rip),%rdi
  call   <printf@plt>
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L5
  mov    $0x1,%eax
  add    $0x68,%rsp
  ret
L5:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D11
datatype: string
name: unpack_data
arguments: label: D20
datatype: string
name: unpack_data
arguments: label: D8
datatype: string
name: unpack_data
arguments: label: D4
datatype: string

tool: D11: 

Not enough parameters:

 usage: mainsk in-file out-file type value [threshold-or-mask-type] [number]

 recall type: EROsion DILation Mask-ERosion
              Mask_DIlation INTerior-outline
              EXTerior-outline THInning
              Dilate-Not-Join OPEning
              CLOsing SPecial-Opening
              SPecial-Closing
              Euclidean-Distance-Measure
              Medial-Axis-Transform

tool: D20: 
Press Enter to see more

tool: D8: 

   MASK DILATION
mainsk in-file out-file mdi value mask-type
   MASK EROSION
mainsk in-file out-file mer value mask-type
   EROSION 
mainsk in-file out-file ero value threshold
   DILATION 
mainsk in-file out-file dil value threshold
   INTERIOR OUTLINE 
mainsk in-file out-file int value mask-type
   EXTERIOR OUTLINE 
mainsk in-file out-file ext value mask-type
   OPENING
mainsk in-file out-file ope value mask-type number
   CLOSING
mainsk in-file out-file clo value mask-type number

tool: D4: 
   THINNING
mainsk in-file out-file thi value threshold
   DILATE NOT JOIN
mainsk in-file out-file dnj value threshold
   SPECIAL CLOSING
mainsk in-file out-file spc value threshold number
   SPECIAL OPENING
mainsk in-file out-file spo value threshold number
   EUCLIDEAN DISTANCE MEASURE
mainsk in-file out-file edm value
   MEDIAL AXIS TRANSFORM
mainsk in-file out-file mat value
 
 value is usually 1
 mask-type is 1-4 inclusive
 threshold is 0-8 inclusive
 number is number of erosions or dilations


assistant: ```c
int show_mainsk_usage() {
  char response[80];
  printf("\n\nNot enough parameters:"
         "\n"
         "\n usage: mainsk in-file out-file type value"
         " [threshold-or-mask-type] [number]"
         "\n"
         "\n recall type: EROsion DILation Mask-ERosion"
         "\n              Mask_DIlation INTerior-outline"
         "\n              EXTerior-outline THInning"
         "\n              Dilate-Not-Join OPEning"
         "\n              CLOsing SPecial-Opening"
         "\n              SPecial-Closing"
         "\n              Euclidean-Distance-Measure"
         "\n              Medial-Axis-Transform");
  printf("\nPress Enter to see more");
  gets(response);
  printf("\n"
         "\n   MASK DILATION"
         "\nmainsk in-file out-file mdi value mask-type"
         "\n   MASK EROSION"
         "\nmainsk in-file out-file mer value mask-type"
         "\n   EROSION "
         "\nmainsk in-file out-file ero value threshold"
         "\n   DILATION "
         "\nmainsk in-file out-file dil value threshold"
         "\n   INTERIOR OUTLINE "
         "\nmainsk in-file out-file int value mask-type"
         "\n   EXTERIOR OUTLINE "
         "\nmainsk in-file out-file ext value mask-type"
         "\n   OPENING"
         "\nmainsk in-file out-file ope value mask-type number"
         "\n   CLOSING"
         "\nmainsk in-file out-file clo value mask-type number");
  printf("\n   THINNING"
         "\nmainsk in-file out-file thi value threshold"
         "\n   DILATE NOT JOIN"
         "\nmainsk in-file out-file dnj value threshold"
         "\n   SPECIAL CLOSING"
         "\nmainsk in-file out-file spc value threshold number"
         "\n   SPECIAL OPENING"
         "\nmainsk in-file out-file spo value threshold number"
         "\n   EUCLIDEAN DISTANCE MEASURE"
         "\nmainsk in-file out-file edm value"
         "\n   MEDIAL AXIS TRANSFORM"
         "\nmainsk in-file out-file mat value"
         "\n "
         "\n value is usually 1"
         "\n mask-type is 1-4 inclusive"
         "\n threshold is 0-8 inclusive"
         "\n number is number of erosions or dilations"
         "\n");
  return (1);
}
```