user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<testdrawline>:
  endbr64
  push   %rbx
  mov    $0x0,%ebx
L59:
  mov    $0x1,%r8d
  mov    $0x1f,%ecx
  mov    %ebx,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  add    $0x4,%ebx
  cmp    $0x80,%ebx
  jne    L59
  mov    $0x0,%ebx
L33:
  mov    $0x1,%r8d
  mov    %ebx,%ecx
  mov    $0x7f,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  add    $0x4,%ebx
  cmp    $0x20,%ebx
  jne    L33
  mov    $0x3d090,%edi
  call   <usleep@plt>
  mov    $0x0,%eax
  call   <clearDisplay@plt>
  mov    $0x0,%ebx
L51:
  mov    $0x1,%r8d
  mov    $0x0,%ecx
  mov    %ebx,%edx
  mov    $0x1f,%esi
  mov    $0x0,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  add    $0x4,%ebx
  cmp    $0x80,%ebx
  jne    L51
  mov    $0x1f,%ebx
L72:
  mov    $0x1,%r8d
  mov    %ebx,%ecx
  mov    $0x7f,%edx
  mov    $0x1f,%esi
  mov    $0x0,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  sub    $0x4,%ebx
  cmp    $0xffffffff,%ebx
  jne    L72
  mov    $0x3d090,%edi
  call   <usleep@plt>
  mov    $0x0,%eax
  call   <clearDisplay@plt>
  mov    $0x7f,%ebx
L70:
  mov    $0x1,%r8d
  mov    $0x0,%ecx
  mov    %ebx,%edx
  mov    $0x1f,%esi
  mov    $0x7f,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  sub    $0x4,%ebx
  cmp    $0xffffffff,%ebx
  jne    L70
  mov    $0x1f,%ebx
L37:
  mov    $0x1,%r8d
  mov    %ebx,%ecx
  mov    $0x0,%edx
  mov    $0x1f,%esi
  mov    $0x7f,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  sub    $0x4,%ebx
  cmp    $0xffffffff,%ebx
  jne    L37
  mov    $0x3d090,%edi
  call   <usleep@plt>
  mov    $0x0,%eax
  call   <clearDisplay@plt>
  mov    $0x0,%ebx
L68:
  mov    $0x1,%r8d
  mov    %ebx,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x7f,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  add    $0x4,%ebx
  cmp    $0x20,%ebx
  jne    L68
  mov    $0x0,%ebx
L69:
  mov    $0x1,%r8d
  mov    $0x1f,%ecx
  mov    %ebx,%edx
  mov    $0x0,%esi
  mov    $0x7f,%edi
  call   <drawLine@plt>
  mov    $0x0,%eax
  call   <Display@plt>
  mov    $0x3e8,%edi
  call   <usleep@plt>
  add    $0x4,%ebx
  cmp    $0x80,%ebx
  jne    L69
  mov    $0x3d090,%edi
  call   <usleep@plt>
  pop    %rbx
  ret
```

assistant: ```c
void testdrawline() {
  short i = 0;
  for (i = 0; i < 128; i += 4) {
    drawLine(0, 0, i, 32 - 1, 1);
    Display();
    usleep(1000);
  }
  for (i = 0; i < 32; i += 4) {
    drawLine(0, 0, 128 - 1, i, 1);
    Display();
    usleep(1000);
  }
  usleep(250000);
  clearDisplay();
  for (i = 0; i < 128; i += 4) {
    drawLine(0, 32 - 1, i, 0, 1);
    Display();
    usleep(1000);
  }
  for (i = 32 - 1; i >= 0; i -= 4) {
    drawLine(0, 32 - 1, 128 - 1, i, 1);
    Display();
    usleep(1000);
  }
  usleep(250000);
  clearDisplay();
  for (i = 128 - 1; i >= 0; i -= 4) {
    drawLine(128 - 1, 32 - 1, i, 0, 1);
    Display();
    usleep(1000);
  }
  for (i = 32 - 1; i >= 0; i -= 4) {
    drawLine(128 - 1, 32 - 1, 0, i, 1);
    Display();
    usleep(1000);
  }
  usleep(250000);
  clearDisplay();
  for (i = 0; i < 32; i += 4) {
    drawLine(128 - 1, 0, 0, i, 1);
    Display();
    usleep(1000);
  }
  for (i = 0; i < 128; i += 4) {
    drawLine(128 - 1, 0, i, 32 - 1, 1);
    Display();
    usleep(1000);
  }
  usleep(250000);
}
```