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

```asm
<drawRoundRect>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %ecx,%eax
  mov    %r9d,%ecx
  mov    %di,-0x4(%rbp)
  mov    %si,-0x8(%rbp)
  mov    %dx,-0xc(%rbp)
  mov    %ax,-0x10(%rbp)
  mov    %r8d,%eax
  mov    %ax,-0x14(%rbp)
  mov    %ecx,%eax
  mov    %ax,-0x18(%rbp)
  movswl -0x18(%rbp),%ecx
  movzwl -0xc(%rbp),%eax
  movzwl -0x14(%rbp),%edx
  add    %edx,%edx
  sub    %edx,%eax
  movswl %ax,%edx
  movswl -0x8(%rbp),%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0x14(%rbp),%eax
  add    %edi,%eax
  cwtl
  mov    %eax,%edi
  call   <writeFastHLine@plt>
  movswl -0x18(%rbp),%ecx
  movzwl -0xc(%rbp),%eax
  movzwl -0x14(%rbp),%edx
  add    %edx,%edx
  sub    %edx,%eax
  movswl %ax,%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x10(%rbp),%eax
  add    %esi,%eax
  sub    $0x1,%eax
  movswl %ax,%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0x14(%rbp),%eax
  add    %edi,%eax
  cwtl
  mov    %eax,%edi
  call   <writeFastHLine@plt>
  movswl -0x18(%rbp),%ecx
  movzwl -0x10(%rbp),%eax
  movzwl -0x14(%rbp),%edx
  add    %edx,%edx
  sub    %edx,%eax
  movswl %ax,%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x14(%rbp),%eax
  add    %esi,%eax
  movswl %ax,%esi
  movswl -0x4(%rbp),%eax
  mov    %eax,%edi
  call   <writeFastVLine@plt>
  movswl -0x18(%rbp),%ecx
  movzwl -0x10(%rbp),%eax
  movzwl -0x14(%rbp),%edx
  add    %edx,%edx
  sub    %edx,%eax
  movswl %ax,%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x14(%rbp),%eax
  add    %esi,%eax
  movswl %ax,%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0xc(%rbp),%eax
  add    %edi,%eax
  sub    $0x1,%eax
  cwtl
  mov    %eax,%edi
  call   <writeFastVLine@plt>
  movswl -0x18(%rbp),%ecx
  movswl -0x14(%rbp),%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x14(%rbp),%eax
  add    %esi,%eax
  movswl %ax,%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0x14(%rbp),%eax
  add    %edi,%eax
  cwtl
  mov    %ecx,%r8d
  mov    $0x1,%ecx
  mov    %eax,%edi
  call   <drawCircleHelper@plt>
  movswl -0x18(%rbp),%ecx
  movswl -0x14(%rbp),%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x14(%rbp),%eax
  add    %esi,%eax
  movswl %ax,%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0xc(%rbp),%eax
  add    %edi,%eax
  movzwl -0x14(%rbp),%edi
  sub    %edi,%eax
  sub    $0x1,%eax
  cwtl
  mov    %ecx,%r8d
  mov    $0x2,%ecx
  mov    %eax,%edi
  call   <drawCircleHelper@plt>
  movswl -0x18(%rbp),%ecx
  movswl -0x14(%rbp),%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x10(%rbp),%eax
  add    %esi,%eax
  movzwl -0x14(%rbp),%esi
  sub    %esi,%eax
  sub    $0x1,%eax
  movswl %ax,%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0xc(%rbp),%eax
  add    %edi,%eax
  movzwl -0x14(%rbp),%edi
  sub    %edi,%eax
  sub    $0x1,%eax
  cwtl
  mov    %ecx,%r8d
  mov    $0x4,%ecx
  mov    %eax,%edi
  call   <drawCircleHelper@plt>
  movswl -0x18(%rbp),%ecx
  movswl -0x14(%rbp),%edx
  movzwl -0x8(%rbp),%esi
  movzwl -0x10(%rbp),%eax
  add    %esi,%eax
  movzwl -0x14(%rbp),%esi
  sub    %esi,%eax
  sub    $0x1,%eax
  movswl %ax,%esi
  movzwl -0x4(%rbp),%edi
  movzwl -0x14(%rbp),%eax
  add    %edi,%eax
  cwtl
  mov    %ecx,%r8d
  mov    $0x8,%ecx
  mov    %eax,%edi
  call   <drawCircleHelper@plt>
  nop
  leave
  ret
```

assistant: ```c
void drawRoundRect(short x, short y, short w, short h, short r, short color) {
  writeFastHLine(x + r, y, w - 2 * r, color);
  writeFastHLine(x + r, y + h - 1, w - 2 * r, color);
  writeFastVLine(x, y + r, h - 2 * r, color);
  writeFastVLine(x + w - 1, y + r, h - 2 * r, color);
  drawCircleHelper(x + r, y + r, r, 1, color);
  drawCircleHelper(x + w - r - 1, y + r, r, 2, color);
  drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color);
  drawCircleHelper(x + r, y + h - r - 1, r, 8, color);
}
```