user: Demonstrate the C code that generates the assembly output below:

```asm
<ffpsvc>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %rdx,-0x48(%rbp)
  mov    %rcx,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  jle    L494
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  jmp    L720
L494:
  mov    -0x40(%rbp),%rax
  movb   $0x0,(%rax)
  cmpq   $0x0,-0x48(%rbp)
  je     L66
  mov    -0x48(%rbp),%rax
  movb   $0x0,(%rax)
L66:
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x48,%edx
  cmp    %dl,%al
  jl     L645
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x48,%edx
  cmp    %dl,%al
  jg     L645
  mov    -0x38(%rbp),%rax
  mov    $0x9,%edx
  lea    D28(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L645
  mov    -0x38(%rbp),%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcspn@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L161
  cmpq   $0x0,-0x48(%rbp)
  je     L214
  cmpq   $0x8,-0x10(%rbp)
  jbe    L214
  mov    -0x38(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x48(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x10(%rbp),%rax
  sub    $0x8,%eax
  mov    %eax,-0x24(%rbp)
  subl   $0x1,-0x24(%rbp)
  jmp    L490
L716:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L52
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  subl   $0x1,-0x24(%rbp)
L490:
  cmpl   $0x0,-0x24(%rbp)
  jns    L716
  jmp    L214
L52:
  nop
L214:
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  jmp    L720
L161:
  addq   $0x1,-0x18(%rbp)
  jmp    L430
L645:
  cmpq   $0x8,-0x10(%rbp)
  jbe    L362
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x43,%edx
  cmp    %dl,%al
  jl     L599
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x43,%edx
  cmp    %dl,%al
  jg     L599
  mov    -0x38(%rbp),%rax
  mov    $0x8,%edx
  lea    D4(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L362
L599:
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x48,%edx
  cmp    %dl,%al
  jl     L67
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x48,%edx
  cmp    %dl,%al
  jg     L67
  mov    -0x38(%rbp),%rax
  mov    $0x8,%edx
  lea    D33(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L362
L67:
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x45,%edx
  cmp    %dl,%al
  jl     L176
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x45,%edx
  cmp    %dl,%al
  jg     L176
  mov    -0x38(%rbp),%rax
  mov    $0x8,%edx
  lea    D47(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L362
L176:
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x43,%edx
  cmp    %dl,%al
  jl     L624
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x43,%edx
  cmp    %dl,%al
  jg     L624
  mov    -0x38(%rbp),%rax
  mov    $0x8,%edx
  lea    D122(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  je     L362
L624:
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x20,%edx
  cmp    %dl,%al
  jl     L336
  mov    -0x38(%rbp),%rax
  movzbl (%rax),%eax
  mov    $0x20,%edx
  cmp    %dl,%al
  jg     L336
  mov    -0x38(%rbp),%rax
  mov    $0x8,%edx
  lea    D44(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L336
L362:
  cmpq   $0x0,-0x48(%rbp)
  je     L732
  cmpq   $0x8,-0x10(%rbp)
  jbe    L732
  mov    -0x38(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x48(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x10(%rbp),%rax
  sub    $0x8,%eax
  mov    %eax,-0x24(%rbp)
  subl   $0x1,-0x24(%rbp)
  jmp    L621
L549:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L686
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  subl   $0x1,-0x24(%rbp)
L621:
  cmpl   $0x0,-0x24(%rbp)
  jns    L549
  jmp    L732
L686:
  nop
L732:
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  jmp    L720
L336:
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  movzbl (%rax),%eax
  mov    $0x3d,%edx
  cmp    %dl,%al
  jl     L481
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  movzbl (%rax),%eax
  mov    $0x3d,%edx
  cmp    %dl,%al
  jg     L481
  mov    -0x38(%rbp),%rax
  add    $0x8,%rax
  mov    $0x2,%edx
  lea    D112(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L481
  movq   $0xa,-0x18(%rbp)
  jmp    L430
L481:
  mov    -0x38(%rbp),%rax
  lea    D43(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcspn@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0x18(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L151
  cmpq   $0x0,-0x48(%rbp)
  je     L299
  cmpq   $0x8,-0x10(%rbp)
  jbe    L299
  mov    -0x38(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x48(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  mov    -0x10(%rbp),%rax
  sub    $0x8,%eax
  mov    %eax,-0x24(%rbp)
  subl   $0x1,-0x24(%rbp)
  jmp    L539
L530:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L395
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  subl   $0x1,-0x24(%rbp)
L539:
  cmpl   $0x0,-0x24(%rbp)
  jns    L530
  jmp    L299
L395:
  nop
L299:
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  jmp    L720
L151:
  addq   $0x1,-0x18(%rbp)
L430:
  mov    -0x38(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  lea    D131(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strspn@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  cmp    %rax,-0x10(%rbp)
  jne    L111
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  jmp    L720
L111:
  mov    -0x18(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L514
  addq   $0x1,-0x20(%rbp)
  jmp    L127
L514:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L334
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    %dl,(%rax)
  movl   $0x1,-0x24(%rbp)
  addq   $0x1,-0x20(%rbp)
  jmp    L39
L637:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L670
  mov    -0x20(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    -0x38(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L743
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    -0x24(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addq   $0x1,-0x20(%rbp)
  addl   $0x1,-0x24(%rbp)
  jmp    L670
L743:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    -0x24(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  jmp    L107
L670:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    -0x24(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addq   $0x1,-0x20(%rbp)
  addl   $0x1,-0x24(%rbp)
L39:
  mov    -0x20(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jb     L637
L107:
  mov    -0x20(%rbp),%rax
  cmp    -0x10(%rbp),%rax
  jne    L337
  mov    -0x24(%rbp),%eax
  mov    $0x45,%edx
  cmp    %edx,%eax
  cmovg  %edx,%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movb   $0x27,(%rax)
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <ffpmsg@plt>
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <ffpmsg@plt>
  jmp    L127
L337:
  mov    -0x24(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  addq   $0x1,-0x20(%rbp)
  jmp    L127
L334:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x28,%al
  jne    L756
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcspn@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    %rax,-0x8(%rbp)
  jne    L581
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  call   <ffpmsg@plt>
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <ffpmsg@plt>
  mov    -0x50(%rbp),%rax
  movl   $0xcd,(%rax)
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  jmp    L720
L581:
  addq   $0x1,-0x8(%rbp)
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x8(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x40(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0x8(%rbp),%rax
  add    %rax,-0x20(%rbp)
  jmp    L127
L756:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  lea    D137(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcspn@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x8(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    -0x40(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  mov    -0x8(%rbp),%rax
  add    %rax,-0x20(%rbp)
L127:
  cmpq   $0x0,-0x48(%rbp)
  je     L10
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  lea    D131(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strspn@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  add    %rax,-0x20(%rbp)
  cmpq   $0x4f,-0x20(%rbp)
  ja     L10
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L404
  addq   $0x1,-0x20(%rbp)
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L404
  addq   $0x1,-0x20(%rbp)
L404:
  mov    -0x38(%rbp),%rdx
  mov    -0x20(%rbp),%rax
  add    %rax,%rdx
  mov    -0x48(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcat@plt>
  mov    -0x48(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x24(%rbp)
  subl   $0x1,-0x24(%rbp)
  jmp    L447
L243:
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L25
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  subl   $0x1,-0x24(%rbp)
L447:
  cmpl   $0x0,-0x24(%rbp)
  jns    L243
  jmp    L10
L25:
  nop
L10:
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
L720:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D28
data_type: string
name: read_data
arguments: label: D43
data_type: string
name: read_data
arguments: label: D4
data_type: string
name: read_data
arguments: label: D33
data_type: string
name: read_data
arguments: label: D47
data_type: string
name: read_data
arguments: label: D122
data_type: string
name: read_data
arguments: label: D44
data_type: string
name: read_data
arguments: label: D112
data_type: string
name: read_data
arguments: label: D131
data_type: string
name: read_data
arguments: label: D100
data_type: string
name: read_data
arguments: label: D68
data_type: string
name: read_data
arguments: label: D82
data_type: string
name: read_data
arguments: label: D137
data_type: string

tool: D28: HIERARCH 

tool: D43: =

tool: D4: COMMENT 

tool: D33: HISTORY 

tool: D47: END     

tool: D122: CONTINUE

tool: D44:         

tool: D112: = 

tool: D131:  

tool: D100: This keyword string value has no closing quote:

tool: D68: )

tool: D82: This complex keyword value has no closing ')':

tool: D137:  /

assistant: ```c
int ffpsvc(char *card, char *value, char *comm, int *status) {
  int jj;
  size_t ii, cardlen, nblank, valpos;
  if (*status > 0)
    return (*status);
  value[0] = '\0';
  if (comm)
    comm[0] = '\0';
  cardlen = strlen(card);
  if (((card)[0] < ("HIERARCH ")[0] ? -1 : (card)[0] > ("HIERARCH ")[0] ? 1 : strncmp((card), ("HIERARCH "), (9))) == 0) {
    valpos = strcspn(card, "=");
    if (valpos == cardlen) {
      if (comm != NULL) {
        if (cardlen > 8) {
          strcpy(comm, &card[8]);
          jj = cardlen - 8;
          for (jj--; jj >= 0; jj--) {
            if (comm[jj] == ' ')
              comm[jj] = '\0';
            else
              break;
          }
        }
      }
      return (*status);
    }
    valpos++;
  } else if (cardlen < 9 || ((card)[0] < ("COMMENT ")[0] ? -1 : (card)[0] > ("COMMENT ")[0] ? 1 : strncmp((card), ("COMMENT "), (8))) == 0 || ((card)[0] < ("HISTORY ")[0] ? -1 : (card)[0] > ("HISTORY ")[0] ? 1 : strncmp((card), ("HISTORY "), (8))) == 0 || ((card)[0] < ("END     ")[0] ? -1 : (card)[0] > ("END     ")[0] ? 1 : strncmp((card), ("END     "), (8))) == 0 || ((card)[0] < ("CONTINUE")[0] ? -1 : (card)[0] > ("CONTINUE")[0] ? 1 : strncmp((card), ("CONTINUE"), (8))) == 0 || ((card)[0] < ("        ")[0] ? -1 : (card)[0] > ("        ")[0] ? 1 : strncmp((card), ("        "), (8))) == 0) {
    if (comm != NULL) {
      if (cardlen > 8) {
        strcpy(comm, &card[8]);
        jj = cardlen - 8;
        for (jj--; jj >= 0; jj--) {
          if (comm[jj] == ' ')
            comm[jj] = '\0';
          else
            break;
        }
      }
    }
    return (*status);
  } else if (((&card[8])[0] < ("= ")[0] ? -1 : (&card[8])[0] > ("= ")[0] ? 1 : strncmp((&card[8]), ("= "), (2))) == 0) {
    valpos = 10;
  } else {
    valpos = strcspn(card, "=");
    if (valpos == cardlen) {
      if (comm != NULL) {
        if (cardlen > 8) {
          strcpy(comm, &card[8]);
          jj = cardlen - 8;
          for (jj--; jj >= 0; jj--) {
            if (comm[jj] == ' ')
              comm[jj] = '\0';
            else
              break;
          }
        }
      }
      return (*status);
    }
    valpos++;
  }
  nblank = strspn(&card[valpos], " ");
  if (nblank + valpos == cardlen) {
    return (*status);
  }
  ii = valpos + nblank;
  if (card[ii] == '/') {
    ii++;
  } else if (card[ii] == '\'') {
    value[0] = card[ii];
    for (jj = 1, ii++; ii < cardlen; ii++, jj++) {
      if (card[ii] == '\'') {
        if (card[ii + 1] == '\'') {
          value[jj] = card[ii];
          ii++;
          jj++;
        } else {
          value[jj] = card[ii];
          break;
        }
      }
      value[jj] = card[ii];
    }
    if (ii == cardlen) {
      jj = ((jj) < (69) ? (jj) : (69));
      value[jj] = '\'';
      value[jj + 1] = '\0';
      ffpmsg("This keyword string value has no closing quote:");
      ffpmsg(card);
    } else {
      value[jj + 1] = '\0';
      ii++;
    }
  } else if (card[ii] == '(') {
    nblank = strcspn(&card[ii], ")");
    if (nblank == strlen(&card[ii])) {
      ffpmsg("This complex keyword value has no closing ')':");
      ffpmsg(card);
      return (*status = 205);
    }
    nblank++;
    strncpy(value, &card[ii], nblank);
    value[nblank] = '\0';
    ii = ii + nblank;
  } else {
    nblank = strcspn(&card[ii], " /");
    strncpy(value, &card[ii], nblank);
    value[nblank] = '\0';
    ii = ii + nblank;
  }
  if (comm) {
    nblank = strspn(&card[ii], " ");
    ii = ii + nblank;
    if (ii < 80) {
      if (card[ii] == '/') {
        ii++;
        if (card[ii] == ' ')
          ii++;
      }
      strcat(comm, &card[ii]);
      jj = strlen(comm);
      for (jj--; jj >= 0; jj--) {
        if (comm[jj] == ' ')
          comm[jj] = '\0';
        else
          break;
      }
    }
  }
  return (*status);
}
```