user: 下面的汇编指令对应的C源代码是什么:

```asm
<read_csv>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %rdi,-0x78(%rbp)
  mov    %rsi,-0x80(%rbp)
  mov    %rdx,-0x88(%rbp)
  mov    %rcx,-0x90(%rbp)
  mov    %r8,-0x98(%rbp)
  mov    %r9,-0xa0(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0xa8(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0xb0(%rbp)
  mov    0x20(%rbp),%rax
  mov    %rax,-0xb8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x64(%rbp)
  movl   $0x0,-0x60(%rbp)
  movl   $0x0,-0x5c(%rbp)
  movl   $0x0,-0x58(%rbp)
  mov    -0x78(%rbp),%rax
  lea    D194(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x48(%rbp)
  cmpq   $0x0,-0x48(%rbp)
  jne    L794
  mov    -0x78(%rbp),%rax
  mov    %rax,%rsi
  lea    D120(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0xb8(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    $0xffffffff,%edi
  call   <exit@plt>
  jmp    L794
L204:
  cmpl   $0x2,-0x64(%rbp)
  je     L335
  cmpl   $0x2,-0x64(%rbp)
  jg     L794
  cmpl   $0x0,-0x64(%rbp)
  je     L614
  cmpl   $0x1,-0x64(%rbp)
  je     L674
  jmp    L794
L614:
  mov    -0xb8(%rbp),%rax
  mov    $0x27,%edx
  lea    D209(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L501
  movl   $0x2,-0x64(%rbp)
  jmp    L794
L501:
  mov    -0xb8(%rbp),%rax
  mov    $0x23,%edx
  lea    D97(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L794
  movl   $0x1,-0x64(%rbp)
  jmp    L794
L674:
  mov    -0xb8(%rbp),%rax
  mov    $0x2c,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x50(%rbp)
  cmpq   $0x0,-0x50(%rbp)
  jne    L269
  jmp    L794
L269:
  addq   $0x1,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L940
  jmp    L794
L940:
  mov    -0x50(%rbp),%rax
  mov    $0x7,%edx
  lea    D104(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L584
  addq   $0x7,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    $0x2c,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x50(%rbp)
  test   %rax,%rax
  jne    L912
  jmp    L794
L912:
  mov    -0x50(%rbp),%rax
  mov    $0xd,%edx
  lea    D224(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L281
  addq   $0x10,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L281:
  mov    -0x50(%rbp),%rax
  mov    $0xc,%edx
  lea    D187(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L643
  addq   $0xf,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L643:
  mov    -0x50(%rbp),%rax
  mov    $0x9,%edx
  lea    D132(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L731
  addq   $0xc,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xa8(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L731:
  mov    -0x50(%rbp),%rax
  mov    $0xc,%edx
  lea    D18(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L794
  addq   $0xf,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x80(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L584:
  mov    -0x50(%rbp),%rax
  mov    $0x6,%edx
  lea    D25(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L794
  addq   $0x6,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    $0x2c,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x50(%rbp)
  test   %rax,%rax
  jne    L78
  jmp    L794
L78:
  mov    -0x50(%rbp),%rax
  mov    $0xd,%edx
  lea    D224(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L430
  addq   $0x10,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L430:
  mov    -0x50(%rbp),%rax
  mov    $0xc,%edx
  lea    D187(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L506
  addq   $0xf,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xa0(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L506:
  mov    -0x50(%rbp),%rax
  mov    $0x9,%edx
  lea    D132(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L794
  addq   $0xc,-0x50(%rbp)
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xb0(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L794
L335:
  mov    -0xb8(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  movl   $0x0,-0x54(%rbp)
  jmp    L669
L492:
  mov    -0x54(%rbp),%eax
  cltq
  mov    -0x50(%rbp),%rdx
  mov    %rdx,-0x40(%rbp,%rax,8)
  mov    -0x50(%rbp),%rax
  mov    $0x2c,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x50(%rbp)
  cmpq   $0x0,-0x50(%rbp)
  je     L831
  mov    -0x50(%rbp),%rax
  movb   $0x0,(%rax)
  addq   $0x1,-0x50(%rbp)
  addl   $0x1,-0x54(%rbp)
L669:
  cmpl   $0x5,-0x54(%rbp)
  jle    L492
  jmp    L877
L831:
  nop
L877:
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  cmp    %eax,-0x60(%rbp)
  je     L58
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <atoi@plt>
  mov    %eax,-0x60(%rbp)
  movl   $0x0,-0x5c(%rbp)
  movl   $0x0,-0x58(%rbp)
L58:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x53,%al
  jne    L191
  mov    -0x30(%rbp),%rax
  mov    $0x5,%edx
  lea    D89(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L191
  mov    -0x28(%rbp),%rax
  mov    $0x6,%edx
  lea    D239(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L761
  movl   $0x1,-0x5c(%rbp)
  jmp    L324
L761:
  mov    -0x28(%rbp),%rax
  mov    $0x5,%edx
  lea    D91(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L324
  movl   $0x2,-0x5c(%rbp)
  jmp    L324
L191:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x44,%al
  jne    L104
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L104
  mov    -0x28(%rbp),%rax
  mov    $0x6,%edx
  lea    D4(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L104
  mov    -0x20(%rbp),%rax
  mov    $0xd,%edx
  lea    D157(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L420
  movl   $0x1,-0x58(%rbp)
  jmp    L597
L420:
  mov    -0x20(%rbp),%rax
  mov    $0xc,%edx
  lea    D150(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L375
  movl   $0x2,-0x58(%rbp)
  jmp    L597
L375:
  mov    -0x20(%rbp),%rax
  mov    $0x9,%edx
  lea    D10(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L289
  movl   $0x3,-0x58(%rbp)
  jmp    L597
L289:
  mov    -0x20(%rbp),%rax
  mov    $0xc,%edx
  lea    D168(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L597
  movl   $0x4,-0x58(%rbp)
  jmp    L597
L104:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x44,%al
  jne    L282
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L282
  mov    -0x28(%rbp),%rax
  mov    $0xd,%edx
  lea    D229(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L282
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x5,%eax
  jle    L282
  cmpl   $0x1,-0x5c(%rbp)
  jne    L443
  cmpl   $0x4,-0x58(%rbp)
  je     L317
  cmpl   $0x4,-0x58(%rbp)
  jg     L893
  cmpl   $0x3,-0x58(%rbp)
  je     L331
  cmpl   $0x3,-0x58(%rbp)
  jg     L893
  cmpl   $0x1,-0x58(%rbp)
  je     L786
  cmpl   $0x2,-0x58(%rbp)
  je     L769
  jmp    L893
L786:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x88(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L186
L769:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L186
L331:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xa8(%rbp),%rax
  mov    %rdx,(%rax)
  mov    -0xa8(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,%rsi
  lea    D219(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L186
L317:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x80(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L186
L443:
  cmpl   $0x2,-0x5c(%rbp)
  jne    L893
  cmpl   $0x4,-0x58(%rbp)
  je     L458
  cmpl   $0x4,-0x58(%rbp)
  jg     L893
  cmpl   $0x3,-0x58(%rbp)
  je     L12
  cmpl   $0x3,-0x58(%rbp)
  jg     L893
  cmpl   $0x1,-0x58(%rbp)
  je     L407
  cmpl   $0x2,-0x58(%rbp)
  je     L438
  jmp    L893
L407:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x90(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L186
L438:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xa0(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L186
L12:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xb0(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L186
L458:
  mov    -0x20(%rbp),%rax
  add    $0x3,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0x80(%rbp),%rax
  mov    %rdx,(%rax)
  nop
L186:
  jmp    L893
L282:
  mov    -0x40(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x44,%al
  jne    L106
  mov    -0x30(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L106
  mov    -0x28(%rbp),%rax
  mov    $0x17,%edx
  lea    D192(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %eax,%eax
  jne    L106
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x5,%eax
  jle    L106
  cmpl   $0x1,-0x5c(%rbp)
  jne    L803
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xa8(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L106
L803:
  cmpl   $0x2,-0x5c(%rbp)
  jne    L106
  mov    -0x20(%rbp),%rax
  add    $0x2,%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,%rdx
  mov    -0xb0(%rbp),%rax
  mov    %rdx,(%rax)
  jmp    L106
L324:
  nop
  jmp    L106
L597:
  nop
  jmp    L106
L893:
  nop
L106:
  nop
L794:
  mov    -0x48(%rbp),%rdx
  mov    -0xb8(%rbp),%rax
  mov    $0x400,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L204
  mov    -0x48(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L422
  call   <__stack_chk_fail@plt>
L422:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D194
datatype: string
name: disassemble_data
arguments: tag: D120
datatype: string
name: disassemble_data
arguments: tag: D209
datatype: string
name: disassemble_data
arguments: tag: D97
datatype: string
name: disassemble_data
arguments: tag: D104
datatype: string
name: disassemble_data
arguments: tag: D224
datatype: string
name: disassemble_data
arguments: tag: D187
datatype: string
name: disassemble_data
arguments: tag: D132
datatype: string
name: disassemble_data
arguments: tag: D18
datatype: string
name: disassemble_data
arguments: tag: D25
datatype: string
name: disassemble_data
arguments: tag: D89
datatype: string
name: disassemble_data
arguments: tag: D239
datatype: string
name: disassemble_data
arguments: tag: D91
datatype: string
name: disassemble_data
arguments: tag: D4
datatype: string
name: disassemble_data
arguments: tag: D157
datatype: string
name: disassemble_data
arguments: tag: D150
datatype: string
name: disassemble_data
arguments: tag: D10
datatype: string
name: disassemble_data
arguments: tag: D168
datatype: string
name: disassemble_data
arguments: tag: D229
datatype: string
name: disassemble_data
arguments: tag: D219
datatype: string
name: disassemble_data
arguments: tag: D192
datatype: string

tool: D194: r

tool: D120: Cant open file: %s


tool: D209: L,0,PPP,Type,Identifier,Length,Protocol

tool: D97: Index,Slave/Master,Type,Description

tool: D104: Master,

tool: D224: LMP_comb_key,

tool: D187: LMP_au_rand,

tool: D132: LMP_sres,

tool: D18: LMP_in_rand,

tool: D25: Slave,

tool: D89: Frame

tool: D239: Master

tool: D91: Slave

tool: D4: Opcode

tool: D157: LMP_comb_key

tool: D150: LMP_au_rand

tool: D10: LMP_sres

tool: D168: LMP_in_rand

tool: D229: Random Number

tool: D219: %s


tool: D192: Authentication Response

assistant: ```c
void read_csv(char *filename, char **InRand, char **MasterCombKey, char **SlaveCombKey, char **MasterAuRand, char **SlaveAuRand, char **MasterSres, char **SlaveSres, char *buf) {
  FILE *fh;
  char *tmp;
  char *temp[6];
  int start = 0;
  int count = 0;
  int who = 0;
  int what = 0;
  int i;
  fh = fopen(filename, "r");
  if (!fh) {
    printf("Cant open file: %s\n", filename);
    free(buf);
    exit(-1);
  }
  while (fgets(buf, 1024, fh)) {
    switch (start) {
    case 0:
      if (!strncmp(buf, "L,0,PPP,Type,Identifier,Length,Protocol", 39)) {
        start = 2;
      } else if (!strncmp(buf, "Index,Slave/Master,Type,Description", 35)) {
        start = 1;
      }
      break;
    case 1:
      tmp = strchr(buf, ',');
      if (!tmp)
        continue;
      if (!*(++tmp))
        continue;
      if (!strncmp(tmp, "Master,", 7)) {
        tmp += 7;
        tmp = strchr(tmp, ',');
        if (!tmp++)
          continue;
        if (!strncmp(tmp, "LMP_comb_key,", 13)) {
          tmp += 16;
          *MasterCombKey = strdup(tmp);
        } else if (!strncmp(tmp, "LMP_au_rand,", 12)) {
          tmp += 15;
          *MasterAuRand = strdup(tmp);
        } else if (!strncmp(tmp, "LMP_sres,", 9)) {
          tmp += 12;
          *MasterSres = strdup(tmp);
        } else if (!strncmp(tmp, "LMP_in_rand,", 12)) {
          tmp += 15;
          *InRand = strdup(tmp);
        }
      } else if (!strncmp(tmp, "Slave,", 6)) {
        tmp += 6;
        tmp = strchr(tmp, ',');
        if (!tmp++)
          continue;
        if (!strncmp(tmp, "LMP_comb_key,", 13)) {
          tmp += 16;
          *SlaveCombKey = strdup(tmp);
        } else if (!strncmp(tmp, "LMP_au_rand,", 12)) {
          tmp += 15;
          *SlaveAuRand = strdup(tmp);
        } else if (!strncmp(tmp, "LMP_sres,", 9)) {
          tmp += 12;
          *SlaveSres = strdup(tmp);
        }
      }
      break;
    case 2:
      tmp = buf;
      for (i = 0; i < 6; i++) {
        temp[i] = tmp;
        tmp = strchr(tmp, ',');
        if (!tmp)
          break;
        *tmp = '\0';
        tmp++;
      }
      if (atoi(temp[1]) != count) {
        count = atoi(temp[1]);
        who = 0;
        what = 0;
      }
      if ((*temp[0] == 'S') && (!strncmp(temp[2], "Frame", 5))) {
        if (!strncmp(temp[3], "Master", 6))
          who = 1;
        else if (!strncmp(temp[3], "Slave", 5))
          who = 2;
      } else if ((*temp[0] == 'D') && (*temp[2] == '1') && (!strncmp(temp[3], "Opcode", 6))) {
        if (!strncmp(temp[4], "LMP_comb_key", 13))
          what = 1;
        else if (!strncmp(temp[4], "LMP_au_rand", 12))
          what = 2;
        else if (!strncmp(temp[4], "LMP_sres", 9))
          what = 3;
        else if (!strncmp(temp[4], "LMP_in_rand", 12))
          what = 4;
      } else if ((*temp[0] == 'D') && (*temp[2] == '1') && (!strncmp(temp[3], "Random Number", 13)) && (strlen(temp[4]) > 5)) {
        if (who == 1) {
          switch (what) {
          case 1:
            *MasterCombKey = strdup(temp[4] + 3);
            break;
          case 2:
            *MasterAuRand = strdup(temp[4] + 3);
            break;
          case 3:
            *MasterSres = strdup(temp[4] + 3);
            printf("%s\n", *MasterSres);
            break;
          case 4:
            *InRand = strdup(temp[4] + 3);
            break;
          }
        } else if (who == 2) {
          switch (what) {
          case 1:
            *SlaveCombKey = strdup(temp[4] + 3);
            break;
          case 2:
            *SlaveAuRand = strdup(temp[4] + 3);
            break;
          case 3:
            *SlaveSres = strdup(temp[4] + 3);
            break;
          case 4:
            *InRand = strdup(temp[4] + 3);
            break;
          }
        }
      } else if ((*temp[0] == 'D') && (*temp[2] == '1') && (!strncmp(temp[3], "Authentication Response", 23)) && (strlen(temp[4]) > 5)) {
        if (who == 1)
          *MasterSres = strdup(temp[4] + 2);
        else if (who == 2)
          *SlaveSres = strdup(temp[4] + 2);
      }
      break;
    }
  }
  fclose(fh);
  return;
}
```