user: 这段汇编代码用C语言表示是什么样的：

```asm
<lob_bnd_lin_3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xd0,%rsp
  mov    %rdi,-0xa8(%rbp)
  mov    %rsi,-0xb0(%rbp)
  mov    %edx,-0xb4(%rbp)
  mov    %ecx,-0xb8(%rbp)
  mov    %r8,-0xc0(%rbp)
  mov    %r9d,-0xc4(%rbp)
  mov    -0xc4(%rbp),%eax
  imul   0x20(%rbp),%eax
  mov    %eax,-0x90(%rbp)
  mov    -0xb8(%rbp),%eax
  imul   0x10(%rbp),%eax
  mov    0x28(%rbp),%edx
  imul   %edx,%eax
  mov    %eax,-0x8c(%rbp)
  mov    -0xb8(%rbp),%eax
  imul   0x10(%rbp),%eax
  mov    %eax,-0x88(%rbp)
  mov    -0xb8(%rbp),%eax
  imul   -0xc4(%rbp),%eax
  mov    %eax,-0x84(%rbp)
  mov    -0xb0(%rbp),%rax
  mov    %rax,-0x70(%rbp)
  mov    -0xb4(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x70(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x68(%rbp)
  mov    -0xb4(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x60(%rbp)
  mov    -0xb8(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x60(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x58(%rbp)
  mov    -0xc0(%rbp),%rax
  mov    %rax,-0x50(%rbp)
  mov    -0xc4(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x48(%rbp)
  mov    -0xc4(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x48(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x40(%rbp)
  mov    0x10(%rbp),%edx
  mov    -0xc4(%rbp),%eax
  imul   0x10(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x38(%rbp)
  mov    0x18(%rbp),%rax
  mov    %rax,-0x30(%rbp)
  mov    0x20(%rbp),%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x28(%rbp)
  mov    0x20(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    0x28(%rbp),%edx
  mov    0x20(%rbp),%eax
  imul   0x28(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  add    %rdx,%rax
  lea    0x0(,%rax,8),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    0x40(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0xb8(%rbp),%eax
  imul   0x10(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  lea    0x0(,%rax,8),%rdx
  mov    -0x10(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  jmp    L31
L43:
  movl   $0x0,-0x94(%rbp)
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  jmp    L3
L15:
  mov    -0xb4(%rbp),%r9d
  mov    -0x58(%rbp),%r8
  mov    -0x60(%rbp),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x70(%rbp),%rsi
  mov    -0x80(%rbp),%rax
  push   0x30(%rbp)
  mov    -0xb8(%rbp),%edi
  push   %rdi
  mov    %rax,%rdi
  call   <lob_bnd_fst@plt>
  add    $0x10,%rsp
  addl   $0x1,-0x94(%rbp)
  mov    -0xb8(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  shl    $0x3,%rax
  add    %rax,-0x80(%rbp)
  mov    -0xb4(%rbp),%eax
  shl    $0x3,%rax
  add    %rax,0x30(%rbp)
L3:
  mov    -0x94(%rbp),%eax
  cmp    -0x90(%rbp),%eax
  jb     L15
  movl   $0x0,-0x94(%rbp)
  mov    -0xa8(%rbp),%rax
  mov    %rax,-0x80(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,-0x78(%rbp)
  jmp    L48
L45:
  mov    -0xc4(%rbp),%r9d
  mov    -0x38(%rbp),%r8
  mov    -0x40(%rbp),%rcx
  mov    -0x48(%rbp),%rdx
  mov    -0x50(%rbp),%rsi
  mov    -0x78(%rbp),%rax
  push   -0x10(%rbp)
  mov    -0xb8(%rbp),%edi
  push   %rdi
  push   -0x80(%rbp)
  mov    0x10(%rbp),%edi
  push   %rdi
  mov    %rax,%rdi
  call   <lob_bnd_ext@plt>
  add    $0x20,%rsp
  addl   $0x1,-0x94(%rbp)
  mov    -0x84(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  shl    $0x3,%rax
  add    %rax,-0x80(%rbp)
  mov    -0x88(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  shl    $0x3,%rax
  add    %rax,-0x78(%rbp)
L48:
  mov    -0x94(%rbp),%eax
  cmp    0x20(%rbp),%eax
  jb     L45
  mov    0x20(%rbp),%r9d
  mov    -0x18(%rbp),%r8
  mov    -0x20(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    -0x30(%rbp),%rsi
  mov    -0xa8(%rbp),%rax
  push   -0x10(%rbp)
  mov    -0x88(%rbp),%edi
  push   %rdi
  push   -0x8(%rbp)
  mov    0x28(%rbp),%edi
  push   %rdi
  mov    %rax,%rdi
  call   <lob_bnd_ext@plt>
  add    $0x20,%rsp
  subl   $0x1,0x38(%rbp)
  mov    -0x8c(%rbp),%eax
  add    %eax,%eax
  mov    %eax,%eax
  shl    $0x3,%rax
  add    %rax,-0xa8(%rbp)
L31:
  cmpl   $0x0,0x38(%rbp)
  jne    L43
  nop
  nop
  leave
  ret
```

assistant: ```c
void lob_bnd_lin_3(double *restrict b, const double *lob_bnd_data_r, unsigned nr, unsigned mr, const double *lob_bnd_data_s, unsigned ns, unsigned ms, const double *lob_bnd_data_t, unsigned nt, unsigned mt, const double *restrict u, unsigned int un, double *restrict work) {
  unsigned nst = ns * nt, mrst = mr * ms * mt, mrs = mr * ms, mr_ns = mr * ns;
  const double *zr = lob_bnd_data_r, *Qr = zr + nr, *hr = Qr + 2 * nr, *lb_r = hr + mr;
  const double *zs = lob_bnd_data_s, *Qs = zs + ns, *hs = Qs + 2 * ns, *lbnp_s = hs + ms + 2 * ns * ms;
  const double *zt = lob_bnd_data_t, *Qt = zt + nt, *ht = Qt + 2 * nt, *lbnp_t = ht + mt + 2 * nt * mt;
  double *a = work, *bs = a + 2 * mr * ms;
  for (; un; --un, b += 2 * mrst) {
    double *br_, *bs_;
    unsigned i;
    for (i = 0, br_ = b; i < nst; ++i, br_ += 2 * mr, u += nr)
      lob_bnd_fst(br_, zr, Qr, hr, lb_r, nr, mr, u);
    for (i = 0, br_ = b, bs_ = bs; i < nt; ++i, br_ += 2 * mr_ns, bs_ += 2 * mrs)
      lob_bnd_ext(bs_, zs, Qs, hs, lbnp_s, ns, ms, br_, mr, a);
    lob_bnd_ext(b, zt, Qt, ht, lbnp_t, nt, mt, bs, mrs, a);
  }
}
```