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

```asm
<lineTwoStep>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  mov    %edi,0x8(%rsp)
  mov    %esi,0xc(%rsp)
  mov    %edx,%r15d
  mov    %ecx,%r14d
  mov    %edx,%r12d
  sub    %edi,%r12d
  movl   $0x1,(%rsp)
  mov    %ecx,%r13d
  sub    %esi,%r13d
  js     L876
L968:
  movl   $0x1,0x4(%rsp)
  test   %r12d,%r12d
  js     L709
L154:
  mov    0xc(%rsp),%esi
  mov    0x8(%rsp),%ebx
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r13d,%eax
  or     %r12d,%eax
  jne    L288
L482:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L876:
  sub    %ecx,%esi
  mov    %esi,%r13d
  movl   $0xffffffff,(%rsp)
  jmp    L968
L709:
  mov    0x8(%rsp),%r12d
  sub    %r15d,%r12d
  movl   $0xffffffff,0x4(%rsp)
  jmp    L154
L288:
  mov    %r14d,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  cmp    %r12d,%r13d
  jge    L716
  lea    -0x1(%r12),%eax
  mov    %eax,0x38(%rsp)
  mov    %eax,%ecx
  sar    $0x2,%ecx
  mov    %ecx,0x10(%rsp)
  and    $0x3,%eax
  mov    %eax,0x30(%rsp)
  lea    0x0(,%r13,4),%edx
  mov    %edx,0x34(%rsp)
  lea    (%r12,%r12,1),%eax
  mov    %edx,%edi
  sub    %eax,%edi
  mov    %edi,0x18(%rsp)
  js     L651
  mov    %r13d,%ebx
  sub    %r12d,%ebx
  lea    (%rbx,%rbx,1),%eax
  mov    %eax,0x2c(%rsp)
  lea    0x0(,%rbx,4),%eax
  mov    %eax,0x34(%rsp)
  lea    (%r12,%rax,1),%ebx
  cmpl   $0x0,0x10(%rsp)
  jle    L476
  mov    0x4(%rsp),%ecx
  mov    %ecx,0x1c(%rsp)
  mov    0x8(%rsp),%eax
  lea    (%rax,%rcx,2),%r12d
  mov    %ecx,%eax
  neg    %eax
  sub    %ecx,%eax
  mov    %eax,0x20(%rsp)
  mov    %r15d,%ebp
  sub    %ecx,%ebp
  sub    %ecx,%ebp
  mov    $0x0,%r13d
  lea    (%rcx,%rcx,2),%eax
  mov    %eax,0x28(%rsp)
  mov    %r15d,0x3c(%rsp)
  mov    0xc(%rsp),%r15d
  jmp    L913
L651:
  lea    0x0(%r13,%r13,1),%eax
  mov    %eax,0x2c(%rsp)
  sub    %r12d,%edx
  mov    %edx,%ebp
  test   %ecx,%ecx
  jle    L745
  mov    0x4(%rsp),%eax
  mov    %eax,%edx
  mov    %eax,0x1c(%rsp)
  lea    (%rbx,%rax,2),%r13d
  neg    %eax
  mov    %eax,%ecx
  sub    %edx,%ecx
  mov    %ecx,0x20(%rsp)
  mov    %r15d,%ebx
  sub    %edx,%ebx
  sub    %edx,%ebx
  mov    $0x0,%r12d
  lea    (%rdx,%rdx,2),%eax
  mov    %eax,0x28(%rsp)
  mov    %r15d,0x3c(%rsp)
  mov    0xc(%rsp),%r15d
  jmp    L529
L505:
  mov    %r15d,%esi
  mov    %ecx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r15d,%esi
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r14d,%esi
  mov    0x14(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r14d,%esi
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x34(%rsp),%ebp
  jmp    L927
L260:
  add    (%rsp),%r15d
  mov    %r15d,%esi
  mov    0xc(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r15d,%esi
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    (%rsp),%r14d
  mov    %r14d,%esi
  mov    0x14(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r14d,%esi
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
L790:
  add    0x18(%rsp),%ebp
L927:
  add    $0x1,%r12d
  mov    0xc(%rsp),%r13d
  add    0x28(%rsp),%r13d
  add    0x20(%rsp),%ebx
  cmp    %r12d,0x10(%rsp)
  je     L386
L529:
  mov    0x1c(%rsp),%eax
  mov    %eax,%ecx
  neg    %ecx
  mov    %ecx,0x24(%rsp)
  mov    %r13d,%ecx
  sub    %eax,%ecx
  mov    %ecx,0xc(%rsp)
  add    %ebx,%eax
  mov    %eax,0x14(%rsp)
  test   %ebp,%ebp
  js     L505
  cmp    %ebp,0x2c(%rsp)
  jle    L260
  mov    %r15d,%esi
  mov    0xc(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    (%rsp),%r15d
  mov    %r15d,%esi
  mov    %r13d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r14d,%esi
  mov    0x14(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    (%rsp),%r14d
  mov    %r14d,%esi
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L790
L386:
  mov    %r15d,0xc(%rsp)
  mov    0x3c(%rsp),%r15d
  mov    0x10(%rsp),%ecx
  sub    $0x1,%ecx
  mov    0x8(%rsp),%eax
  mov    0x1c(%rsp),%ebx
  lea    (%rax,%rbx,2),%eax
  mov    %ebx,%edx
  imul   %ecx,%edx
  lea    (%rax,%rdx,2),%eax
  mov    %eax,0x8(%rsp)
  mov    %r15d,%edx
  sub    %ebx,%edx
  sub    %ebx,%edx
  mov    0x24(%rsp),%eax
  sub    %ebx,%eax
  imul   %ecx,%eax
  lea    (%rdx,%rax,1),%r15d
L745:
  cmpl   $0x0,0x30(%rsp)
  jle    L482
  test   %ebp,%ebp
  js     L165
  cmp    %ebp,0x2c(%rsp)
  jle    L390
  mov    0x8(%rsp),%ebx
  add    0x4(%rsp),%ebx
  mov    0xc(%rsp),%esi
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L152
L35:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    %r14d,%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L165:
  mov    0x8(%rsp),%ebx
  add    0x4(%rsp),%ebx
  mov    0xc(%rsp),%esi
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L849
L39:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    %r14d,%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L849:
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbx,1),%edi
  mov    0xc(%rsp),%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L39
L152:
  mov    (%rsp),%esi
  add    0xc(%rsp),%esi
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbx,1),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L35
L390:
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    0x8(%rsp),%ebp
  add    0x4(%rsp),%ebp
  mov    %ebx,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L897
L544:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L897:
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbp,1),%edi
  mov    %ebx,%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L544
L402:
  add    (%rsp),%r15d
  mov    %r15d,%esi
  mov    %ecx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    (%rsp),%r15d
  mov    %r15d,%esi
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    (%rsp),%r12d
  sub    %r12d,%r14d
  mov    %r14d,%esi
  mov    0x14(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    %r12d,%r14d
  mov    %r14d,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x34(%rsp),%ebx
  jmp    L697
L840:
  add    (%rsp),%r15d
  mov    %r15d,%esi
  mov    0xc(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r15d,%esi
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    (%rsp),%r14d
  mov    %r14d,%esi
  mov    0x14(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r14d,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
L534:
  add    0x18(%rsp),%ebx
L697:
  add    $0x1,%r13d
  mov    0xc(%rsp),%r12d
  add    0x28(%rsp),%r12d
  add    0x20(%rsp),%ebp
  cmp    %r13d,0x10(%rsp)
  je     L218
L913:
  mov    0x1c(%rsp),%eax
  mov    %eax,%ecx
  neg    %ecx
  mov    %ecx,0x24(%rsp)
  mov    %r12d,%ecx
  sub    %eax,%ecx
  mov    %ecx,0xc(%rsp)
  add    %ebp,%eax
  mov    %eax,0x14(%rsp)
  test   %ebx,%ebx
  jg     L402
  cmp    %ebx,0x2c(%rsp)
  jle    L840
  mov    %r15d,%esi
  mov    0xc(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    (%rsp),%r15d
  mov    %r15d,%esi
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r14d,%esi
  mov    0x14(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    (%rsp),%r14d
  mov    %r14d,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L534
L218:
  mov    %r15d,0xc(%rsp)
  mov    0x3c(%rsp),%r15d
  mov    0x10(%rsp),%eax
  sub    $0x1,%eax
  mov    0x8(%rsp),%edx
  mov    0x1c(%rsp),%edi
  lea    (%rdx,%rdi,2),%edx
  mov    %edi,%ecx
  imul   %eax,%ecx
  lea    (%rdx,%rcx,2),%edx
  mov    %edx,0x8(%rsp)
  mov    %r15d,%ecx
  sub    %edi,%ecx
  sub    %edi,%ecx
  mov    0x24(%rsp),%edx
  sub    %edi,%edx
  imul   %edx,%eax
  lea    (%rcx,%rax,1),%r15d
L476:
  cmpl   $0x0,0x30(%rsp)
  jle    L482
  test   %ebx,%ebx
  jg     L966
  cmp    %ebx,0x2c(%rsp)
  jle    L764
  mov    0x8(%rsp),%ebx
  add    0x4(%rsp),%ebx
  mov    0xc(%rsp),%esi
  mov    %ebx,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L660
L981:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    %r14d,%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L966:
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    0x8(%rsp),%ebp
  add    0x4(%rsp),%ebp
  mov    %ebx,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L788
L149:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L788:
  mov    (%rsp),%eax
  lea    (%rax,%rbx,1),%esi
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbp,1),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L149
L660:
  mov    (%rsp),%esi
  add    0xc(%rsp),%esi
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbx,1),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L981
L764:
  mov    0xc(%rsp),%ebp
  add    (%rsp),%ebp
  mov    0x8(%rsp),%r12d
  add    0x4(%rsp),%r12d
  mov    %ebp,%esi
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L309
L230:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  cmp    %ebx,0x2c(%rsp)
  jge    L713
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L309:
  mov    0x4(%rsp),%eax
  lea    (%rax,%r12,1),%edi
  mov    %ebp,%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L230
L713:
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    %r14d,%esi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L716:
  lea    -0x1(%r13),%eax
  mov    %eax,0x38(%rsp)
  mov    %eax,%ebx
  sar    $0x2,%ebx
  mov    %ebx,0x10(%rsp)
  and    $0x3,%eax
  mov    %eax,0x30(%rsp)
  lea    0x0(,%r12,4),%ecx
  mov    %ecx,0x34(%rsp)
  lea    0x0(%r13,%r13,1),%eax
  mov    %ecx,%edx
  sub    %eax,%edx
  mov    %edx,0x18(%rsp)
  js     L615
  mov    %r12d,%ebx
  sub    %r13d,%ebx
  lea    (%rbx,%rbx,1),%eax
  mov    %eax,0x2c(%rsp)
  lea    0x0(,%rbx,4),%eax
  mov    %eax,0x34(%rsp)
  lea    0x0(%r13,%rax,1),%ebx
  cmpl   $0x0,0x10(%rsp)
  jle    L406
  mov    (%rsp),%edi
  mov    %edi,0x1c(%rsp)
  mov    0xc(%rsp),%eax
  lea    (%rax,%rdi,2),%r12d
  mov    %edi,%eax
  neg    %eax
  sub    %edi,%eax
  mov    %eax,0x20(%rsp)
  mov    %r14d,%ebp
  sub    %edi,%ebp
  sub    %edi,%ebp
  mov    $0x0,%r13d
  lea    (%rdi,%rdi,2),%eax
  mov    %eax,0x28(%rsp)
  mov    %r14d,0x3c(%rsp)
  mov    %r15d,%r14d
  mov    0x8(%rsp),%r15d
  jmp    L637
L615:
  lea    (%r12,%r12,1),%eax
  mov    %eax,0x2c(%rsp)
  sub    %r13d,%ecx
  mov    %ecx,%ebp
  test   %ebx,%ebx
  jle    L922
  mov    (%rsp),%ebx
  mov    %ebx,%edx
  mov    %ebx,0x1c(%rsp)
  mov    0xc(%rsp),%eax
  lea    (%rax,%rbx,2),%r13d
  mov    %ebx,%eax
  neg    %eax
  mov    %eax,%ecx
  sub    %ebx,%ecx
  mov    %ecx,0x20(%rsp)
  mov    %r14d,%ebx
  sub    %edx,%ebx
  sub    %edx,%ebx
  mov    $0x0,%r12d
  lea    (%rdx,%rdx,2),%eax
  mov    %eax,0x28(%rsp)
  mov    %r14d,0x3c(%rsp)
  mov    0x8(%rsp),%r14d
  jmp    L612
L472:
  mov    %edx,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r13d,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    0x14(%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %ebx,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x34(%rsp),%ebp
  jmp    L319
L66:
  add    0x4(%rsp),%r14d
  mov    0x8(%rsp),%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r13d,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    0x4(%rsp),%r15d
  mov    0x14(%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %ebx,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
L572:
  add    0x18(%rsp),%ebp
L319:
  add    $0x1,%r12d
  mov    0x8(%rsp),%r13d
  add    0x28(%rsp),%r13d
  add    0x20(%rsp),%ebx
  cmp    %r12d,0x10(%rsp)
  je     L100
L612:
  mov    0x1c(%rsp),%eax
  mov    %eax,%edx
  neg    %edx
  mov    %edx,0x24(%rsp)
  mov    %r13d,%edx
  sub    %eax,%edx
  mov    %edx,0x8(%rsp)
  add    %ebx,%eax
  mov    %eax,0x14(%rsp)
  test   %ebp,%ebp
  js     L472
  cmp    %ebp,0x2c(%rsp)
  jle    L66
  mov    0x8(%rsp),%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x4(%rsp),%r14d
  mov    %r13d,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    0x14(%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    0x4(%rsp),%r15d
  mov    %ebx,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L572
L100:
  mov    %r14d,0x8(%rsp)
  mov    0x3c(%rsp),%r14d
  mov    0x10(%rsp),%ecx
  sub    $0x1,%ecx
  mov    0xc(%rsp),%eax
  mov    0x1c(%rsp),%ebx
  lea    (%rax,%rbx,2),%eax
  mov    %ebx,%edx
  imul   %ecx,%edx
  lea    (%rax,%rdx,2),%eax
  mov    %eax,0xc(%rsp)
  mov    %r14d,%edx
  sub    %ebx,%edx
  sub    %ebx,%edx
  mov    0x24(%rsp),%eax
  sub    %ebx,%eax
  imul   %ecx,%eax
  lea    (%rdx,%rax,1),%r14d
L922:
  cmpl   $0x0,0x30(%rsp)
  jle    L482
  test   %ebp,%ebp
  js     L275
  cmp    %ebp,0x2c(%rsp)
  jle    L993
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    %ebx,%esi
  mov    0x8(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L607
L404:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L275:
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    %ebx,%esi
  mov    0x8(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L672
L800:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L672:
  mov    (%rsp),%eax
  lea    (%rax,%rbx,1),%esi
  mov    0x8(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L800
L607:
  mov    (%rsp),%eax
  lea    (%rax,%rbx,1),%esi
  mov    0x4(%rsp),%edi
  add    0x8(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L404
L993:
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    0x8(%rsp),%ebp
  add    0x4(%rsp),%ebp
  mov    %ebx,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L330
L753:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L330:
  mov    (%rsp),%eax
  lea    (%rax,%rbx,1),%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L753
L654:
  add    0x4(%rsp),%r15d
  mov    %edx,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x4(%rsp),%r15d
  mov    %r12d,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    (%rsp),%r14d
  mov    0x14(%rsp),%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    0x4(%rsp),%r14d
  mov    %ebp,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x34(%rsp),%ebx
  jmp    L609
L342:
  add    0x4(%rsp),%r15d
  mov    0x8(%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %r12d,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    0x4(%rsp),%r14d
  mov    0x14(%rsp),%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    %ebp,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
L961:
  add    0x18(%rsp),%ebx
L609:
  add    $0x1,%r13d
  mov    0x8(%rsp),%r12d
  add    0x28(%rsp),%r12d
  add    0x20(%rsp),%ebp
  cmp    %r13d,0x10(%rsp)
  je     L644
L637:
  mov    0x1c(%rsp),%eax
  mov    %eax,%edx
  neg    %edx
  mov    %edx,0x24(%rsp)
  mov    %r12d,%edx
  sub    %eax,%edx
  mov    %edx,0x8(%rsp)
  add    %ebp,%eax
  mov    %eax,0x14(%rsp)
  test   %ebx,%ebx
  jg     L654
  cmp    %ebx,0x2c(%rsp)
  jle    L342
  mov    0x8(%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  add    0x4(%rsp),%r15d
  mov    %r12d,%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  mov    0x14(%rsp),%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  sub    0x4(%rsp),%r14d
  mov    %ebp,%esi
  mov    %r14d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L961
L644:
  mov    %r15d,0x8(%rsp)
  mov    %r14d,%r15d
  mov    0x3c(%rsp),%r14d
  mov    0x10(%rsp),%eax
  sub    $0x1,%eax
  mov    0xc(%rsp),%edx
  mov    0x1c(%rsp),%esi
  lea    (%rdx,%rsi,2),%edx
  mov    %esi,%ecx
  imul   %eax,%ecx
  lea    (%rdx,%rcx,2),%edx
  mov    %edx,0xc(%rsp)
  mov    %r14d,%ecx
  sub    %esi,%ecx
  sub    %esi,%ecx
  mov    0x24(%rsp),%edx
  sub    %esi,%edx
  imul   %edx,%eax
  lea    (%rcx,%rax,1),%r14d
L406:
  cmpl   $0x0,0x30(%rsp)
  jle    L482
  test   %ebx,%ebx
  jg     L95
  cmp    %ebx,0x2c(%rsp)
  jle    L658
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    %ebx,%esi
  mov    0x8(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L605
L318:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L95:
  mov    0xc(%rsp),%ebx
  add    (%rsp),%ebx
  mov    0x8(%rsp),%ebp
  add    0x4(%rsp),%ebp
  mov    %ebx,%esi
  mov    %ebp,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L805
L855:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L805:
  mov    (%rsp),%eax
  lea    (%rax,%rbx,1),%esi
  mov    0x4(%rsp),%eax
  lea    (%rax,%rbp,1),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L855
L605:
  mov    (%rsp),%eax
  lea    (%rax,%rbx,1),%esi
  mov    0x4(%rsp),%edi
  add    0x8(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L318
L658:
  mov    0xc(%rsp),%ebp
  add    (%rsp),%ebp
  mov    0x8(%rsp),%r12d
  add    0x4(%rsp),%r12d
  mov    %ebp,%esi
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  testb  $0x2,0x38(%rsp)
  jne    L914
L872:
  cmpl   $0x2,0x30(%rsp)
  jle    L482
  cmp    %ebx,0x2c(%rsp)
  jge    L561
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  sub    0x4(%rsp),%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
L914:
  mov    (%rsp),%eax
  lea    (%rax,%rbp,1),%esi
  mov    %r12d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L872
L561:
  mov    %r14d,%esi
  sub    (%rsp),%esi
  mov    %r15d,%edi
  mov    $0x0,%eax
  call   <lpoint@plt>
  jmp    L482
```

assistant: ```c
void lineTwoStep(int x0, int y0, int x1, int y1) {
  int dy = y1 - y0;
  int dx = x1 - x0;
  int stepx, stepy;
  if (dy < 0) {
    dy = -dy;
    stepy = -1;
  } else {
    stepy = 1;
  }
  if (dx < 0) {
    dx = -dx;
    stepx = -1;
  } else {
    stepx = 1;
  }
  lpoint(x0, y0);
  if (dx == 0 && dy == 0)
    return;
  lpoint(x1, y1);
  if (dx > dy) {
    int length = (dx - 1) >> 2;
    int extras = (dx - 1) & 3;
    int incr2 = (dy << 2) - (dx << 1);
    if (incr2 < 0) {
      int c = dy << 1;
      int incr1 = c << 1;
      int d = incr1 - dx;
      int i;
      for (i = 0; i < length; i++) {
        x0 += stepx;
        x1 -= stepx;
        if (d < 0) {
          lpoint(x0, y0);
          lpoint(x0 += stepx, y0);
          lpoint(x1, y1);
          lpoint(x1 -= stepx, y1);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0, y0 += stepy);
            lpoint(x0 += stepx, y0);
            lpoint(x1, y1 -= stepy);
            lpoint(x1 -= stepx, y1);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d < 0) {
          lpoint(x0 += stepx, y0);
          if (extras > 1)
            lpoint(x0 += stepx, y0);
          if (extras > 2)
            lpoint(x1 -= stepx, y1);
        } else if (d < c) {
          lpoint(x0 += stepx, y0);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        }
      }
    } else {
      int c = (dy - dx) << 1;
      int incr1 = c << 1;
      int d = incr1 + dx;
      int i;
      for (i = 0; i < length; i++) {
        x0 += stepx;
        x1 -= stepx;
        if (d > 0) {
          lpoint(x0, y0 += stepy);
          lpoint(x0 += stepx, y0 += stepy);
          lpoint(x1, y1 -= stepy);
          lpoint(x1 -= stepx, y1 -= stepy);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0, y0 += stepy);
            lpoint(x0 += stepx, y0);
            lpoint(x1, y1 -= stepy);
            lpoint(x1 -= stepx, y1);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d > 0) {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        } else if (d < c) {
          lpoint(x0 += stepx, y0);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0);
          if (extras > 2) {
            if (d > c)
              lpoint(x1 -= stepx, y1 -= stepy);
            else
              lpoint(x1 -= stepx, y1);
          }
        }
      }
    }
  } else {
    int length = (dy - 1) >> 2;
    int extras = (dy - 1) & 3;
    int incr2 = (dx << 2) - (dy << 1);
    if (incr2 < 0) {
      int c = dx << 1;
      int incr1 = c << 1;
      int d = incr1 - dy;
      int i;
      for (i = 0; i < length; i++) {
        y0 += stepy;
        y1 -= stepy;
        if (d < 0) {
          lpoint(x0, y0);
          lpoint(x0, y0 += stepy);
          lpoint(x1, y1);
          lpoint(x1, y1 -= stepy);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0 += stepx, y0);
            lpoint(x0, y0 += stepy);
            lpoint(x1 -= stepx, y1);
            lpoint(x1, y1 -= stepy);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d < 0) {
          lpoint(x0, y0 += stepy);
          if (extras > 1)
            lpoint(x0, y0 += stepy);
          if (extras > 2)
            lpoint(x1, y1 -= stepy);
        } else if (d < c) {
          lpoint(x0, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1, y1 -= stepy);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        }
      }
    } else {
      int c = (dx - dy) << 1;
      int incr1 = c << 1;
      int d = incr1 + dy;
      int i;
      for (i = 0; i < length; i++) {
        y0 += stepy;
        y1 -= stepy;
        if (d > 0) {
          lpoint(x0 += stepx, y0);
          lpoint(x0 += stepx, y0 += stepy);
          lpoint(x1 -= stepy, y1);
          lpoint(x1 -= stepx, y1 -= stepy);
          d += incr1;
        } else {
          if (d < c) {
            lpoint(x0, y0);
            lpoint(x0 += stepx, y0 += stepy);
            lpoint(x1, y1);
            lpoint(x1 -= stepx, y1 -= stepy);
          } else {
            lpoint(x0 += stepx, y0);
            lpoint(x0, y0 += stepy);
            lpoint(x1 -= stepx, y1);
            lpoint(x1, y1 -= stepy);
          }
          d += incr2;
        }
      }
      if (extras > 0) {
        if (d > 0) {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1 -= stepx, y1 -= stepy);
        } else if (d < c) {
          lpoint(x0, y0 += stepy);
          if (extras > 1)
            lpoint(x0 += stepx, y0 += stepy);
          if (extras > 2)
            lpoint(x1, y1 -= stepy);
        } else {
          lpoint(x0 += stepx, y0 += stepy);
          if (extras > 1)
            lpoint(x0, y0 += stepy);
          if (extras > 2) {
            if (d > c)
              lpoint(x1 -= stepx, y1 -= stepy);
            else
              lpoint(x1, y1 -= stepy);
          }
        }
      }
    }
  }
}
```