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

```asm
<vmsarg_mapping>:
  endbr64
  sub    $0x8,%rsp
  mov    0x18(%rsp),%rax
  movl   $0x1a,(%rdi)
  mov    0x30(%rsp),%rcx
  movl   $0x515,(%rcx)
  lea    D455(%rip),%rcx
  mov    %rcx,0x8(%rsi)
  movl   $0x1,0x4(%rax)
  lea    D333(%rip),%rcx
  mov    %rcx,0x8(%rdx)
  lea    D79(%rip),%rcx
  mov    %rcx,0x10(%rsi)
  movl   $0x1,0x8(%rax)
  lea    D173(%rip),%rdi
  mov    %rdi,0x10(%rdx)
  lea    D305(%rip),%rcx
  mov    %rcx,0x18(%rsi)
  movl   $0x1,0xc(%rax)
  lea    D303(%rip),%rdi
  mov    %rdi,0x18(%rdx)
  lea    D509(%rip),%rcx
  mov    %rcx,0x20(%rsi)
  movl   $0x1,0x10(%rax)
  lea    D104(%rip),%rdi
  mov    %rdi,0x20(%rdx)
  lea    D190(%rip),%rcx
  mov    %rcx,0x28(%rsi)
  movl   $0x1,0x14(%rax)
  lea    D233(%rip),%rdi
  mov    %rdi,0x28(%rdx)
  lea    D350(%rip),%rcx
  mov    %rcx,0x30(%rsi)
  movl   $0x1,0x18(%rax)
  lea    D100(%rip),%rdi
  mov    %rdi,0x30(%rdx)
  lea    D218(%rip),%rcx
  mov    %rcx,0x38(%rsi)
  movl   $0x1,0x1c(%rax)
  lea    D428(%rip),%rdi
  mov    %rdi,0x38(%rdx)
  lea    D65(%rip),%rcx
  mov    %rcx,0x40(%rsi)
  movl   $0x1,0x20(%rax)
  lea    D527(%rip),%rdi
  mov    %rdi,0x40(%rdx)
  lea    D487(%rip),%rcx
  mov    %rcx,0x48(%rsi)
  movl   $0x1,0x24(%rax)
  lea    D335(%rip),%rdi
  mov    %rdi,0x48(%rdx)
  lea    D131(%rip),%rcx
  mov    %rcx,0x50(%rsi)
  movl   $0x1,0x28(%rax)
  lea    D459(%rip),%rdi
  mov    %rdi,0x50(%rdx)
  lea    D1(%rip),%rcx
  mov    %rcx,0x58(%rsi)
  movl   $0x1,0x2c(%rax)
  lea    D5(%rip),%rdi
  mov    %rdi,0x58(%rdx)
  lea    D330(%rip),%rcx
  mov    %rcx,0x60(%rsi)
  movl   $0x1,0x30(%rax)
  lea    D430(%rip),%rdi
  mov    %rdi,0x60(%rdx)
  lea    D69(%rip),%rcx
  mov    %rcx,0x68(%rsi)
  movl   $0x1,0x34(%rax)
  lea    D29(%rip),%rdi
  mov    %rdi,0x68(%rdx)
  lea    D302(%rip),%rcx
  mov    %rcx,0x70(%rsi)
  movl   $0x1,0x38(%rax)
  lea    D140(%rip),%rdi
  mov    %rdi,0x70(%rdx)
  lea    D156(%rip),%rcx
  mov    %rcx,0x78(%rsi)
  movl   $0x1,0x3c(%rax)
  lea    D477(%rip),%rdi
  mov    %rdi,0x78(%rdx)
  lea    D437(%rip),%rcx
  mov    %rcx,0x80(%rsi)
  movl   $0x1,0x40(%rax)
  lea    D308(%rip),%rdi
  mov    %rdi,0x80(%rdx)
  lea    D270(%rip),%rdi
  mov    %rdi,0x88(%rsi)
  movl   $0x1,0x44(%rax)
  lea    D318(%rip),%rcx
  mov    %rcx,0x88(%rdx)
  lea    D279(%rip),%rcx
  mov    %rcx,0x90(%rsi)
  movl   $0x1,0x48(%rax)
  lea    D236(%rip),%rcx
  mov    %rcx,0x90(%rdx)
  lea    D353(%rip),%rcx
  mov    %rcx,0x98(%rsi)
  movl   $0x1,0x4c(%rax)
  lea    D98(%rip),%rcx
  mov    %rcx,0x98(%rdx)
  lea    D269(%rip),%rcx
  mov    %rcx,0xa0(%rsi)
  movl   $0x1,0x50(%rax)
  lea    D266(%rip),%rcx
  mov    %rcx,0xa0(%rdx)
  lea    D137(%rip),%rcx
  mov    %rcx,0xa8(%rsi)
  movl   $0x1,0x54(%rax)
  lea    D493(%rip),%rcx
  mov    %rcx,0xa8(%rdx)
  lea    D328(%rip),%rcx
  mov    %rcx,0xb0(%rsi)
  movl   $0x1,0x58(%rax)
  lea    D293(%rip),%rcx
  mov    %rcx,0xb0(%rdx)
  lea    D450(%rip),%rcx
  mov    %rcx,0xb8(%rsi)
  movl   $0x1,0x5c(%rax)
  lea    D351(%rip),%rcx
  mov    %rcx,0xb8(%rdx)
  lea    D35(%rip),%rcx
  mov    %rcx,0xc0(%rsi)
  movl   $0x1,0x60(%rax)
  lea    D185(%rip),%rcx
  mov    %rcx,0xc0(%rdx)
  lea    D516(%rip),%rcx
  mov    %rcx,0xc8(%rsi)
  movl   $0x1,0x64(%rax)
  lea    D219(%rip),%rcx
  mov    %rcx,0xc8(%rdx)
  lea    D392(%rip),%rcx
  mov    %rcx,0xd0(%rsi)
  movl   $0x1,0x68(%rax)
  lea    D419(%rip),%rax
  mov    %rax,0xd0(%rdx)
  mov    $0x0,%edx
  lea    D513(%rip),%rsi
  call   <setenv@plt>
  test   %rax,%rax
  sete   %al
  movzbl %al,%eax
  add    $0x8,%rsp
  ret
```

tool_calls: name: read_data
arguments: data_label: D455
type_infered: string
name: read_data
arguments: data_label: D333
type_infered: string
name: read_data
arguments: data_label: D79
type_infered: string
name: read_data
arguments: data_label: D173
type_infered: string
name: read_data
arguments: data_label: D305
type_infered: string
name: read_data
arguments: data_label: D303
type_infered: string
name: read_data
arguments: data_label: D509
type_infered: string
name: read_data
arguments: data_label: D104
type_infered: string
name: read_data
arguments: data_label: D190
type_infered: string
name: read_data
arguments: data_label: D233
type_infered: string
name: read_data
arguments: data_label: D350
type_infered: string
name: read_data
arguments: data_label: D100
type_infered: string
name: read_data
arguments: data_label: D218
type_infered: string
name: read_data
arguments: data_label: D428
type_infered: string
name: read_data
arguments: data_label: D65
type_infered: string
name: read_data
arguments: data_label: D527
type_infered: string
name: read_data
arguments: data_label: D487
type_infered: string
name: read_data
arguments: data_label: D335
type_infered: string
name: read_data
arguments: data_label: D131
type_infered: string
name: read_data
arguments: data_label: D459
type_infered: string
name: read_data
arguments: data_label: D1
type_infered: string
name: read_data
arguments: data_label: D5
type_infered: string
name: read_data
arguments: data_label: D330
type_infered: string
name: read_data
arguments: data_label: D430
type_infered: string
name: read_data
arguments: data_label: D69
type_infered: string
name: read_data
arguments: data_label: D29
type_infered: string
name: read_data
arguments: data_label: D302
type_infered: string
name: read_data
arguments: data_label: D140
type_infered: string
name: read_data
arguments: data_label: D156
type_infered: string
name: read_data
arguments: data_label: D477
type_infered: string
name: read_data
arguments: data_label: D437
type_infered: string
name: read_data
arguments: data_label: D308
type_infered: string
name: read_data
arguments: data_label: D270
type_infered: string
name: read_data
arguments: data_label: D318
type_infered: string
name: read_data
arguments: data_label: D279
type_infered: string
name: read_data
arguments: data_label: D236
type_infered: string
name: read_data
arguments: data_label: D353
type_infered: string
name: read_data
arguments: data_label: D98
type_infered: string
name: read_data
arguments: data_label: D269
type_infered: string
name: read_data
arguments: data_label: D266
type_infered: string
name: read_data
arguments: data_label: D137
type_infered: string
name: read_data
arguments: data_label: D493
type_infered: string
name: read_data
arguments: data_label: D328
type_infered: string
name: read_data
arguments: data_label: D293
type_infered: string
name: read_data
arguments: data_label: D450
type_infered: string
name: read_data
arguments: data_label: D351
type_infered: string
name: read_data
arguments: data_label: D35
type_infered: string
name: read_data
arguments: data_label: D185
type_infered: string
name: read_data
arguments: data_label: D516
type_infered: string
name: read_data
arguments: data_label: D219
type_infered: string
name: read_data
arguments: data_label: D392
type_infered: string
name: read_data
arguments: data_label: D419
type_infered: string
name: read_data
arguments: data_label: D513
type_infered: string

tool: D455: USERNAME

tool: D333: -U

tool: D79: PASSWORD

tool: D173: -P

tool: D305: SERVER_NAME

tool: D303: -S

tool: D509: TIMEOUT

tool: D104: -t

tool: D190: INPUT

tool: D233: -i

tool: D350: OUTPUT

tool: D100: -o

tool: D218: VERSION

tool: D428: -v

tool: D65: ECHO

tool: D527: -e

tool: D487: FIPS

tool: D335: -F

tool: D131: STATISTICS

tool: D459: -p

tool: D1: NOPROMPT

tool: D5: -n

tool: D330: ENCRYPT

tool: D430: -X

tool: D69: CHAIN_XACT

tool: D29: -Y

tool: D302: DISPCHARSET

tool: D140: -a

tool: D156: TDSPACKETSIZE

tool: D477: -A

tool: D437: TERMINATOR

tool: D308: -c

tool: D270: EDITOR

tool: D318: -E

tool: D279: ROWSINPAGE

tool: D236: -h

tool: D353: HOSTNAME

tool: D98: -H

tool: D269: INTERFACE

tool: D266: -I

tool: D137: CLIENTCHARSET

tool: D493: -J

tool: D328: ERRORLEVEL

tool: D293: -m

tool: D450: LOGINTIME

tool: D351: -l

tool: D35: COLSEPARATOR

tool: D185: -s

tool: D516: WIDTH

tool: D219: -w

tool: D392: LANGUAGE

tool: D419: -z

tool: D513: edit

assistant: ```c
int vmsarg_mapping(int *nvargs, char *vms_arg[], char *unix_arg[], char *unix_narg[], char *vms_key[], char *unix_key[], char *separator[], int flags[], char *pattern[], char **outverb, int *action_flags, char **arg_symbol, char **image_name) {
  *nvargs = 26;
  *action_flags = 1301;
  vms_arg[1] = "USERNAME";
  flags[1] = 1;
  unix_arg[1] = "-U";
  vms_arg[2] = "PASSWORD";
  flags[2] = 1;
  unix_arg[2] = "-P";
  vms_arg[3] = "SERVER_NAME";
  flags[3] = 1;
  unix_arg[3] = "-S";
  vms_arg[4] = "TIMEOUT";
  flags[4] = 1;
  unix_arg[4] = "-t";
  vms_arg[5] = "INPUT";
  flags[5] = 1;
  unix_arg[5] = "-i";
  vms_arg[6] = "OUTPUT";
  flags[6] = 1;
  unix_arg[6] = "-o";
  vms_arg[7] = "VERSION";
  flags[7] = 1;
  unix_arg[7] = "-v";
  vms_arg[8] = "ECHO";
  flags[8] = 1;
  unix_arg[8] = "-e";
  vms_arg[9] = "FIPS";
  flags[9] = 1;
  unix_arg[9] = "-F";
  vms_arg[10] = "STATISTICS";
  flags[10] = 1;
  unix_arg[10] = "-p";
  vms_arg[11] = "NOPROMPT";
  flags[11] = 1;
  unix_arg[11] = "-n";
  vms_arg[12] = "ENCRYPT";
  flags[12] = 1;
  unix_arg[12] = "-X";
  vms_arg[13] = "CHAIN_XACT";
  flags[13] = 1;
  unix_arg[13] = "-Y";
  vms_arg[14] = "DISPCHARSET";
  flags[14] = 1;
  unix_arg[14] = "-a";
  vms_arg[15] = "TDSPACKETSIZE";
  flags[15] = 1;
  unix_arg[15] = "-A";
  vms_arg[16] = "TERMINATOR";
  flags[16] = 1;
  unix_arg[16] = "-c";
  vms_arg[17] = "EDITOR";
  flags[17] = 1;
  unix_arg[17] = "-E";
  vms_arg[18] = "ROWSINPAGE";
  flags[18] = 1;
  unix_arg[18] = "-h";
  vms_arg[19] = "HOSTNAME";
  flags[19] = 1;
  unix_arg[19] = "-H";
  vms_arg[20] = "INTERFACE";
  flags[20] = 1;
  unix_arg[20] = "-I";
  vms_arg[21] = "CLIENTCHARSET";
  flags[21] = 1;
  unix_arg[21] = "-J";
  vms_arg[22] = "ERRORLEVEL";
  flags[22] = 1;
  unix_arg[22] = "-m";
  vms_arg[23] = "LOGINTIME";
  flags[23] = 1;
  unix_arg[23] = "-l";
  vms_arg[24] = "COLSEPARATOR";
  flags[24] = 1;
  unix_arg[24] = "-s";
  vms_arg[25] = "WIDTH";
  flags[25] = 1;
  unix_arg[25] = "-w";
  vms_arg[26] = "LANGUAGE";
  flags[26] = 1;
  unix_arg[26] = "-z";
  if (setenv("EDITOR", "edit", 0) != 0)
    return 0;
  return 1;
}
```