user: 请将以下的汇编代码转换成C语言代码:

```asm
<poash_data_extract>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x140,%rsp
  mov    %rdi,-0x138(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x110(%rbp)
  movq   $0x0,-0x108(%rbp)
  movq   $0x0,-0x100(%rbp)
  movq   $0x0,-0xf8(%rbp)
  movq   $0x0,-0xf0(%rbp)
  movq   $0x0,-0xe8(%rbp)
  movq   $0x0,-0xe0(%rbp)
  movq   $0x0,-0xd8(%rbp)
  movq   $0x0,-0xd0(%rbp)
  movq   $0x0,-0xc8(%rbp)
  movq   $0x0,-0xc0(%rbp)
  movq   $0x0,-0xb8(%rbp)
  movq   $0x0,-0xb0(%rbp)
  movq   $0x0,-0xa8(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  movq   $0x0,-0x90(%rbp)
  movq   $0x0,-0x88(%rbp)
  movq   $0x0,-0x80(%rbp)
  movq   $0x0,-0x78(%rbp)
  movq   $0x0,-0x70(%rbp)
  movq   $0x0,-0x68(%rbp)
  movq   $0x0,-0x60(%rbp)
  movq   $0x0,-0x58(%rbp)
  movq   $0x0,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movl   $0x0,-0x11c(%rbp)
  mov    -0x11c(%rbp),%eax
  mov    %eax,-0x120(%rbp)
  mov    -0x120(%rbp),%eax
  mov    %eax,-0x124(%rbp)
  jmp    L7
L74:
  mov    -0x124(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x138(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x23,%al
  jne    L8
  cmpl   $0x0,-0x11c(%rbp)
  jne    L98
  movl   $0x1,-0x11c(%rbp)
  jmp    L57
L8:
  cmpl   $0x0,-0x11c(%rbp)
  je     L57
  mov    -0x124(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x138(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x120(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x120(%rbp)
  movzbl (%rcx),%edx
  cltq
  mov    %dl,-0x110(%rbp,%rax,1)
L57:
  addl   $0x1,-0x124(%rbp)
L7:
  cmpl   $0xff,-0x124(%rbp)
  jg     L3
  mov    -0x124(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x138(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L74
  jmp    L3
L98:
  nop
L3:
  lea    -0x110(%rbp),%rax
  mov    %rax,%rdi
  call   <strdup@plt>
  mov    %rax,-0x118(%rbp)
  cmpq   $0x0,-0x118(%rbp)
  jne    L25
  mov    $0x83,%edx
  lea    D10(%rip),%rax
  mov    %rax,%rsi
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <runtime_exception@plt>
L25:
  mov    -0x118(%rbp),%rax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L39
  call   <__stack_chk_fail@plt>
L39:
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D10
type: string
name: read_data
arguments: tag: D13
type: string

tool: D10: /scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/evilaliv3/janus/refs/heads/master/src/os_cmds.c

tool: D13: damn, unable to allocate memory [FILE: %s LINE: %u]

assistant: ```c
char *poash_data_extract(char *line) {
  char *ret;
  char swapL[256] = {0};
  uint32_t i, j, good;
  for (i = j = good = 0; i < 256 && line[i] != 0x00; ++i) {
    if (line[i] == '#') {
      if (good == 0) {
        good = 1;
        continue;
      } else {
        break;
      }
    }
    if (good)
      swapL[j++] = line[i];
  }
  if (((ret) = strdup(swapL)) == NULL) {
    { runtime_exception("damn, unable to allocate memory [FILE: %s LINE: %u]", "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/evilaliv3/janus/refs/heads/master/src/os_cmds.c", 131); }
  };
  return ret;
}
```