user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<unlzss>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,%rbx
  mov    %esi,%r13d
  mov    %edx,%ebp
  mov    %edx,%edi
  call   <get_word@plt>
  mov    %eax,0x8(%rsp)
  lea    0x3(%rbp),%eax
  mov    %eax,0xc(%rsp)
  lea    0x15(%rbp),%eax
  mov    %eax,0x4(%rsp)
  lea    0x14(%rbp),%edi
  call   <get_byte@plt>
  lea    0x1(%rbx),%r14
  mov    %al,(%rbx)
L194:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  jmp    L274
L182:
  mov    0x4(%rsp),%edi
  lea    0x1(%rdi),%r12d
  call   <get_byte@plt>
  mov    %al,(%r14)
  mov    %r12d,0x4(%rsp)
  lea    0x1(%r14),%r14
  jmp    L82
L18:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1e,%ebx
  mov    $0x1f,%eax
  test   %ebp,%ebp
  js     L371
L100:
  sub    $0x1,%eax
  mov    %eax,%ebx
  js     L373
L108:
  mov    0x4(%rsp),%r15d
  mov    %r15d,%edi
  call   <get_byte@plt>
  add    $0x1,%r15d
  mov    %r15d,0x4(%rsp)
  mov    %ebp,%esi
  mov    %ebx,%ecx
  sar    %cl,%esi
  mov    %eax,%edx
  or     $0x1,%dh
  test   $0x1,%sil
  cmove  %eax,%edx
  mov    %edx,(%rsp)
  jmp    L338
L373:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  jmp    L108
L12:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  jmp    L371
L191:
  add    %r12d,%r15d
  cmp    $0x10,%r15d
  je     L105
L248:
  mov    0xc(%rsp),%eax
  lea    (%rax,%r15,1),%edi
  call   <get_byte@plt>
  mov    0x8(%rsp),%edi
  mov    %r15d,%ecx
  sar    %cl,%edi
  mov    %eax,%edx
  or     $0x1,%dh
  test   $0x1,%dil
  cmove  %eax,%edx
  mov    %edx,(%rsp)
L338:
  sub    $0x1,%ebx
  js     L66
L37:
  mov    %ebp,%r15d
  mov    %ebx,%ecx
  sar    %cl,%r15d
  and    $0x1,%r15d
  jne    L237
  mov    $0x1,%r12d
  jmp    L103
L146:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  test   %eax,%eax
  jns    L134
L110:
  add    %r12d,%r15d
L339:
  add    %r12d,%r12d
  sub    $0x1,%ebx
  js     L72
L314:
  bt     %ebx,%ebp
  jb     L191
L222:
  sub    $0x1,%ebx
  js     L146
  bt     %ebx,%ebp
  jb     L110
  jmp    L339
L72:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  jmp    L314
L66:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  jmp    L37
L65:
  lea    0x1(%r15,%r12,1),%ecx
  movslq (%rsp),%rax
  mov    %r14,%rsi
  sub    %rax,%rsi
  test   %ecx,%ecx
  js     L82
L184:
  mov    $0x0,%eax
L78:
  movzbl (%rsi,%rax,1),%edx
  mov    %dl,(%r14,%rax,1)
  add    $0x1,%rax
  cmp    %eax,%ecx
  jns    L78
  test   %ecx,%ecx
  mov    $0x0,%eax
  cmovs  %eax,%ecx
  lea    0x1(%rcx),%eax
  add    %rax,%r14
L82:
  sub    $0x1,%ebx
  js     L194
L274:
  bt     %ebx,%ebp
  jb     L182
  mov    %ebx,%eax
  sub    $0x1,%eax
  js     L18
  bt     %eax,%ebp
  jae    L100
  sub    $0x2,%ebx
  js     L12
L371:
  mov    %ebp,%r15d
  mov    %ebx,%ecx
  sar    %cl,%r15d
  and    $0x1,%r15d
  jne    L248
  mov    $0x1,%r12d
  jmp    L222
L187:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  test   %eax,%eax
  js     L211
  add    %r12d,%r12d
  mov    $0x1e,%ebx
  jmp    L158
L211:
  mov    $0x1f,%ebx
L258:
  add    %r12d,%r15d
L17:
  add    %r12d,%r12d
  sub    $0x1,%ebx
  js     L344
L158:
  bt     %ebx,%ebp
  jb     L65
L103:
  sub    $0x1,%ebx
  js     L187
  bt     %ebx,%ebp
  jae    L17
  jmp    L258
L344:
  mov    %r13d,%edi
  call   <get_long@plt>
  mov    %eax,%ebp
  add    $0x4,%r13d
  mov    $0x1f,%ebx
  jmp    L158
L237:
  movslq (%rsp),%rax
  mov    %r14,%rsi
  sub    %rax,%rsi
  mov    $0x2,%ecx
  jmp    L184
L134:
  add    %r12d,%r12d
  mov    $0x1e,%ebx
  jmp    L314
L105:
  mov    $0x0,%eax
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
int unlzss(unsigned char *out, int a2, int a3) {
  int a1;
  int d0, d1, d2, d3, d4, d6;
  int common_distances;
  unsigned char *copy_from;
  a1 = a3 + 20;
  d4 = get_word(a3);
  a3 = a3 + 3;
  common_distances = a3;
  *out++ = get_byte(a1++);
loc_cf6e:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cf7a;
loc_cf74:
  *out++ = get_byte(a1++);
loc_cf76:
  d1--;
  if (d1 < 0) {
    goto loc_cf6e;
  }
loc_cf7a:
  if (d0 & (1 << d1)) {
    goto loc_cf74;
  }
  d1--;
  if (d1 < 0) {
    goto loc_cf98;
  }
loc_cf82:
  if (d0 & (1 << d1)) {
    goto loc_cfa4;
  }
  d1--;
  if (d1 < 0) {
    goto loc_cf9e;
  }
loc_cf8a:
  d3 = get_byte(a1);
  a1++;
  if ((d0 & (1 << d1)) == 0) {
    goto loc_cfe6;
  }
  d3 = d3 | 0x100;
  goto loc_cfe6;
loc_cf98:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cf82;
loc_cf9e:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cf8a;
loc_cfa4:
  d1--;
  if (d1 < 0) {
    goto loc_cfcc;
  }
loc_cfa8:
  d2 = 0;
  d6 = 1;
loc_cfac:
  if (d0 & (1 << d1)) {
    goto loc_cfd2;
  }
  d1--;
  if (d1 < 0) {
    goto loc_cfc6;
  }
loc_cfb4:
  if ((d0 & (1 << d1)) == 0) {
    goto loc_cfba;
  }
  d2 = d2 + d6;
loc_cfba:
  d6 = d6 << 1;
  d1--;
  if (d1 >= 0) {
    goto loc_cfac;
  }
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cfac;
loc_cfc6:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cfb4;
loc_cfcc:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cfa8;
loc_cfd2:
  d2 = d2 + d6;
  if (d2 == 16) {
    goto loc_d026;
  }
  d3 = get_byte(common_distances + d2);
  if (d4 & (1 << d2)) {
    d3 = d3 | 0x100;
  }
loc_cfe6:
  d1--;
  if (d1 < 0) {
    goto loc_d00e;
  }
loc_cfea:
  d2 = 0;
  d6 = 1;
loc_cfee:
  if (d0 & (1 << d1)) {
    goto loc_d014;
  }
  d1 = d1 - 1;
  if (d1 < 0) {
    goto loc_d008;
  }
loc_cff6:
  if ((d0 & (1 << d1))) {
    d2 = d2 + d6;
  }
  d6 = d6 << 1;
  d1--;
  if (d1 >= 0) {
    goto loc_cfee;
  }
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cfee;
loc_d008:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cff6;
loc_d00e:
  d0 = get_long(a2);
  a2 = a2 + 4;
  d1 = 0x1f;
  goto loc_cfea;
loc_d014:
  d2 = d2 + d6 + 1;
  copy_from = out - d3;
  while (d2 >= 0) {
    *out++ = *copy_from++;
    d2--;
  }
  goto loc_cf76;
loc_d026:
  return 0;
}
```