// File: hzeller[P]gcode-multi-shell-extrude/third_party/clipper.cpp
// Function: ClipperLib::Clipper::UpdateEdgeIntoAEL(ClipperLib::TEdge*&)
void Clipper::UpdateEdgeIntoAEL(TEdge *&e)
{
  if( !e->NextInLML ) throw
    clipperException("UpdateEdgeIntoAEL: invalid call");

  e->NextInLML->OutIdx = e->OutIdx;
  TEdge* AelPrev = e->PrevInAEL;
  TEdge* AelNext = e->NextInAEL;
  if (AelPrev) AelPrev->NextInAEL = e->NextInLML;
  else m_ActiveEdges = e->NextInLML;
  if (AelNext) AelNext->PrevInAEL = e->NextInLML;
  e->NextInLML->Side = e->Side;
  e->NextInLML->WindDelta = e->WindDelta;
  e->NextInLML->WindCnt = e->WindCnt;
  e->NextInLML->WindCnt2 = e->WindCnt2;
  e = e->NextInLML;
  e->Curr = e->Bot;
  e->PrevInAEL = AelPrev;
  e->NextInAEL = AelNext;
  if (!IsHorizontal(*e)) InsertScanbeam(e->Top.Y);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x70(%rax)
jne 0x19b19
movl $0x28, %edi
callq 0x3110
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
leaq 0x12cec(%rip), %rsi     # 0x2c7cd
callq 0x20830
jmp 0x19ae8
movq -0x40(%rbp), %rdi
leaq 0x2126d(%rip), %rsi     # 0x3ad60
leaq 0x6dd6(%rip), %rdx      # 0x208d0
callq 0x3430
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x31c0
jmp 0x19c7b
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x5c(%rax), %ecx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rax
movl %ecx, 0x5c(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x80(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x78(%rax), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x19b6e
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x78(%rax)
jmp 0x19b84
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rcx
movq 0x70(%rcx), %rcx
movq %rcx, 0xa0(%rax)
cmpq $0x0, -0x30(%rbp)
je 0x19ba1
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x80(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x4c(%rax), %ecx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rax
movl %ecx, 0x4c(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x50(%rax), %ecx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rax
movl %ecx, 0x50(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x54(%rax), %ecx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rax
movl %ecx, 0x54(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movl 0x58(%rax), %ecx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rax
movl %ecx, 0x58(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x70(%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq (%rcx), %rdx
movq %rdx, 0x10(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x80(%rax)
movq -0x30(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x78(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x20510
testb $0x1, %al
jne 0x19c75
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rsi
callq 0x14a80
addq $0x40, %rsp
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x3440
nopw %cs:(%rax,%rax)