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

```asm
<help>:
  endbr64
  push   %rbp
  lea    D110(%rip),%rdi
  lea    D62(%rip),%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x8,%rsp
  call   <puts@plt>
  lea    D86(%rip),%rdi
  call   <puts@plt>
  lea    D15(%rip),%rdi
  call   <puts@plt>
  lea    D100(%rip),%rdi
  call   <puts@plt>
  lea    D38(%rip),%rdi
  call   <puts@plt>
  lea    D128(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D84(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D82(%rip),%rdi
  call   <puts@plt>
  mov    (%rbx),%rsi
  lea    D50(%rip),%rdi
  call   <printf@plt>
  mov    (%rbx),%rsi
  lea    D138(%rip),%rdi
  call   <printf@plt>
  mov    (%rbx),%rsi
  lea    D49(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D36(%rip),%rdi
  call   <puts@plt>
  lea    D150(%rip),%rdi
  call   <puts@plt>
  lea    D156(%rip),%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  lea    D39(%rip),%rdi
  pop    %rbx
  pop    %rbp
  jmp    1060 <puts@plt>
```

tool_calls: name: read_data
arguments: label: D110
type: string
name: read_data
arguments: label: D62
type: string
name: read_data
arguments: label: D86
type: string
name: read_data
arguments: label: D15
type: string
name: read_data
arguments: label: D100
type: string
name: read_data
arguments: label: D38
type: string
name: read_data
arguments: label: D128
type: string
name: read_data
arguments: label: D84
type: string
name: read_data
arguments: label: D82
type: string
name: read_data
arguments: label: D50
type: string
name: read_data
arguments: label: D138
type: string
name: read_data
arguments: label: D49
type: string
name: read_data
arguments: label: D36
type: string
name: read_data
arguments: label: D150
type: string
name: read_data
arguments: label: D156
type: string
name: read_data
arguments: label: D39
type: string

tool: D110: ****************************************************************

tool: 

tool: D86:  * Moravec Point Feature Detector

tool: D15:  * @Author: Gnat TANG

tool: D100:  * @Email: gnat_tang@yeah.net

tool: D38:  * @Date: Wednesday, March 26 2014

tool: D128:  * @Github: https://github.com/district10/homework/2014/Photogrammetry/moravec.cpp

tool: D84:  * How to compile: gcc -std=c99 moravec.c -o moravec -g -O0

tool: D82:  * Usage(3 ways)

tool: D50:  *     [1] %s


tool: D138:  *     [2] %s <raw_img_path> <row> <col> <kernel_size> <threshold>


tool: D49:  *     [3] %s <raw_img_path> <row> <col> <kernel_size> 0 <threshold1> <threshold2> ...


tool: D36:  * For example:

tool: D150:  *       [1]: ./moravec

tool: D156:  *       [2]: ./moravec data/u0367panLeft.raw 887 805 7 30

tool: D39:  *       [3]: ./moravec data/u0367panLeft.raw 887o 805 7 0 20 40 60 80

assistant: ```c
void help(int argc, char **argv) {
  puts("****************************************************************");
  puts(" * Moravec Point Feature Detector");
  puts(" * @Author: Gnat TANG");
  puts(" * @Email: gnat_tang@yeah.net");
  puts(" * @Date: Wednesday, March 26 2014");
  puts(" * @Github: https://github.com/district10/homework/2014/Photogrammetry/moravec.cpp");
  puts("");
  puts(" * How to compile: gcc -std=c99 moravec.c -o moravec -g -O0");
  puts("");
  puts(" * Usage(3 ways)");
  printf(" *     [1] %s\n", argv[0]);
  printf(" *     [2] %s <raw_img_path> <row> <col> <kernel_size> <threshold>\n", argv[0]);
  printf(" *     [3] %s <raw_img_path> <row> <col> <kernel_size> 0 <threshold1> <threshold2> ...\n", argv[0]);
  puts("");
  puts(" * For example:");
  puts(" *       [1]: ./moravec");
  puts(" *       [2]: ./moravec data/u0367panLeft.raw 887 805 7 30");
  puts(" *       [3]: ./moravec data/u0367panLeft.raw 887o 805 7 0 20 40 60 80");
  return;
}
```