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

```asm
<_SHAMD5DataWriteMultiple>:
  endbr64
  push   %r15
  push   %r14
  mov    %edx,%r14d
  push   %r13
  lea    0x3f(%r14),%r15d
  mov    %rsi,%r13
  push   %r12
  mov    %edi,%r12d
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  cmp    $0x44034000,%edi
  sete   %dil
  movzbl %dil,%edi
  call   <ASSERT@plt>
  test   %r14d,%r14d
  cmovns %r14d,%r15d
  sar    $0x6,%r15d
  cmp    $0x3f,%r14d
  jle    L126
  mov    %r13,%rbp
  xor    %ebx,%ebx
  nopl   0x0(%rax,%rax,1)
L114:
  mov    %rbp,%rsi
  mov    %r12d,%edi
  add    $0x1,%ebx
  add    $0x40,%rbp
  call   <SHAMD5DataWrite@plt>
  cmp    %ebx,%r15d
  jg     L114
  lea    -0x1(%r15),%eax
  mov    $0x40,%edx
  add    $0x1,%rax
  shl    $0x6,%rax
  cmp    $0x3f,%r14d
  cmovle %rdx,%rax
  add    %rax,%r13
L126:
  test   $0x3f,%r14b
  je     L177
  lea    0x118(%r12),%edx
  movslq %edx,%rdx
  nopl   0x0(%rax,%rax,1)
L95:
  mov    (%rdx),%eax
  test   $0x2,%al
  je     L95
  mov    %r14d,%eax
  sar    $0x1f,%eax
  shr    $0x1a,%eax
  add    %eax,%r14d
  and    $0x3f,%r14d
  sub    %eax,%r14d
  test   %r14d,%r14d
  jle    L177
  mov    0x0(%r13),%edx
  lea    0x80(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x4,%r14d
  jle    L177
  mov    0x4(%r13),%edx
  lea    0x84(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x8,%r14d
  jle    L177
  mov    0x8(%r13),%edx
  lea    0x88(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0xc,%r14d
  jle    L177
  mov    0xc(%r13),%edx
  lea    0x8c(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x10,%r14d
  jle    L177
  mov    0x10(%r13),%edx
  lea    0x90(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x14,%r14d
  jle    L177
  mov    0x14(%r13),%edx
  lea    0x94(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x18,%r14d
  jle    L177
  mov    0x18(%r13),%edx
  lea    0x98(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x1c,%r14d
  jle    L177
  mov    0x1c(%r13),%edx
  lea    0x9c(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x20,%r14d
  jle    L177
  mov    0x20(%r13),%edx
  lea    0xa0(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x24,%r14d
  jle    L177
  mov    0x24(%r13),%edx
  lea    0xa4(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x28,%r14d
  jle    L177
  mov    0x28(%r13),%edx
  lea    0xa8(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x2c,%r14d
  jle    L177
  mov    0x2c(%r13),%edx
  lea    0xac(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x30,%r14d
  jle    L177
  mov    0x30(%r13),%edx
  lea    0xb0(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x34,%r14d
  jle    L177
  mov    0x34(%r13),%edx
  lea    0xb4(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x38,%r14d
  jle    L177
  mov    0x38(%r13),%edx
  lea    0xb8(%r12),%eax
  cltq
  mov    %edx,(%rax)
  cmp    $0x3c,%r14d
  jle    L177
  mov    0x3c(%r13),%edx
  lea    0xbc(%r12),%eax
  cltq
  mov    %edx,(%rax)
L177:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void _SHAMD5DataWriteMultiple(uint32_t ui32Base, uint32_t *pui32DataSrc, uint32_t ui32DataLength) {
  uint32_t ui32Idx, ui32Count;
  ASSERT(ui32Base == 0x44034000);
  ui32Count = ui32DataLength / 64;
  for (ui32Idx = 0; ui32Idx < ui32Count; ui32Idx++) {
    SHAMD5DataWrite(ui32Base, pui32DataSrc);
    pui32DataSrc += 16;
  }
  ui32Count = ui32DataLength % 64;
  if (ui32Count) {
    while (((*((volatile uint32_t *)(ui32Base + 0x00000118))) & 0x00000002) == 0) {
    }
    for (ui32Idx = 0; ui32Idx < ui32Count; ui32Idx += 4) {
      (*((volatile uint32_t *)(ui32Base + 0x00000080 + ui32Idx))) = *pui32DataSrc++;
    }
  }
}
```