// File: changliu00[P]ascii-animation/ascii-anim.cpp
// Function: EllArc::EllArc(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::pair<float, float> const&, float, float, float, float, float, float, bool, std::pair<float, float> const&, std::pair<float, float> const&)
EllArc::EllArc(const string& name, const Fpair& pc0, float a, float b, float angle, float width, float anglim1, float anglim2, bool solid, const Fpair& tlim, const Fpair& pc):
	Ellipse(name, pc0, a, b, angle, solid, tlim, pc), width(width), anglim1(anglim1), anglim2(anglim2) {
	if(width <= 0 || width > 1) throw invalid_argument(dynamic_cast<ostringstream&&>(ostringstream() << "\"width\" (" << width << ") should be in the range (0, 1]!").str());
	if(anglim1 >= anglim2) throw invalid_argument(dynamic_cast<ostringstream&&>(ostringstream() << "\"anglim1\" (" << anglim1 << ") should be less than \"anglim2\" (" << anglim2 << ")!").str());
	if(anglim1 > pi || anglim1 < -pi) throw invalid_argument(dynamic_cast<ostringstream&&>(ostringstream() << "\"anglim1\" (" << anglim1 << ") should be in the range [-\\pi, \\pi]!").str());
	if(anglim2 > pi || anglim2 < -pi) throw invalid_argument(dynamic_cast<ostringstream&&>(ostringstream() << "\"anglim2\" (" << anglim2 << ") should be in the range [-\\pi, \\pi]!").str());
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x770, %rsp            # imm = 0x770
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movss %xmm0, -0x1c(%rbp)
movss %xmm1, -0x20(%rbp)
movss %xmm2, -0x24(%rbp)
movss %xmm3, -0x28(%rbp)
movss %xmm4, -0x2c(%rbp)
movss %xmm5, -0x30(%rbp)
andb $0x1, %al
movb %al, -0x31(%rbp)
movq %r8, -0x40(%rbp)
movq %r9, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movss -0x1c(%rbp), %xmm0
movss -0x20(%rbp), %xmm1
movss -0x24(%rbp), %xmm2
movb -0x31(%rbp), %al
movq -0x40(%rbp), %r8
movq -0x48(%rbp), %r9
andb $0x1, %al
movzbl %al, %ecx
callq 0x8210
movq -0x6d8(%rbp), %rax
leaq 0x24f07(%rip), %rcx     # 0x2d9e0
addq $0x10, %rcx
movq %rcx, (%rax)
movss -0x28(%rbp), %xmm0
movss %xmm0, 0x98(%rax)
movss -0x2c(%rbp), %xmm0
movss %xmm0, 0x9c(%rax)
movss -0x30(%rbp), %xmm0
movss %xmm0, 0xa0(%rax)
xorps %xmm0, %xmm0
ucomiss -0x28(%rbp), %xmm0
jae 0x8b26
movss -0x28(%rbp), %xmm0
movss 0x19523(%rip), %xmm1    # 0x22040
ucomiss %xmm1, %xmm0
jbe 0x8c52
movb $0x1, -0x1ed(%rbp)
movl $0x10, %edi
callq 0x4110
movq %rax, -0x6e0(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x4340
jmp 0x8b4c
leaq 0x1958f(%rip), %rsi     # 0x220e2
leaq -0x1e0(%rbp), %rdi
callq 0xb7c0
movq %rax, -0x6e8(%rbp)
jmp 0x8b68
movq -0x6e8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xb790
movq %rax, -0x6f0(%rbp)
jmp 0x8b81
movq -0x6f0(%rbp), %rdi
leaq 0x1955d(%rip), %rsi     # 0x220ec
callq 0xb760
movq %rax, -0x6f8(%rbp)
jmp 0x8b9d
movq -0x6f8(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x4290
jmp 0x8baf
movq -0x6e0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x4400
jmp 0x8bc1
movq -0x6e0(%rbp), %rdi
movb $0x0, -0x1ed(%rbp)
movq 0x2540a(%rip), %rsi     # 0x2dfe0
movq 0x253eb(%rip), %rdx     # 0x2dfc8
callq 0x43e0
jmp 0x909b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x8c36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x8c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x4160
leaq -0x1e0(%rbp), %rdi
callq 0x4070
testb $0x1, -0x1ed(%rbp)
jne 0x8c41
jmp 0x8c4d
movq -0x6e0(%rbp), %rdi
callq 0x41a0
jmp 0x9083
movss -0x2c(%rbp), %xmm0
ucomiss -0x30(%rbp), %xmm0
jb 0x8dcb
movb $0x1, -0x389(%rbp)
movl $0x10, %edi
callq 0x4110
movq %rax, -0x700(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x4340
jmp 0x8c87
leaq 0x1947f(%rip), %rsi     # 0x2210d
leaq -0x388(%rbp), %rdi
callq 0xb820
movq %rax, -0x708(%rbp)
jmp 0x8ca3
movq -0x708(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0xb790
movq %rax, -0x710(%rbp)
jmp 0x8cbc
movq -0x710(%rbp), %rdi
leaq 0x1944f(%rip), %rsi     # 0x22119
callq 0xb7f0
movq %rax, -0x718(%rbp)
jmp 0x8cd8
movq -0x718(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb790
movq %rax, -0x720(%rbp)
jmp 0x8cf1
movq -0x720(%rbp), %rdi
leaq 0x1943c(%rip), %rsi     # 0x2213b
callq 0xb0e0
movq %rax, -0x728(%rbp)
jmp 0x8d0d
movq -0x728(%rbp), %rsi
leaq -0x210(%rbp), %rdi
callq 0x4290
jmp 0x8d22
movq -0x700(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x4400
jmp 0x8d37
movq -0x700(%rbp), %rdi
movb $0x0, -0x389(%rbp)
movq 0x25294(%rip), %rsi     # 0x2dfe0
movq 0x25275(%rip), %rdx     # 0x2dfc8
callq 0x43e0
jmp 0x909b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x8daf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x8da3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x4160
leaq -0x388(%rbp), %rdi
callq 0x4070
testb $0x1, -0x389(%rbp)
jne 0x8dba
jmp 0x8dc6
movq -0x700(%rbp), %rdi
callq 0x41a0
jmp 0x9083
movss -0x2c(%rbp), %xmm0
movss 0x19288(%rip), %xmm1    # 0x22060
ucomiss %xmm1, %xmm0
ja 0x8def
movss 0x1927f(%rip), %xmm0    # 0x22064
ucomiss -0x2c(%rbp), %xmm0
jbe 0x8f24
movb $0x1, -0x529(%rbp)
movl $0x10, %edi
callq 0x4110
movq %rax, -0x730(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x4340
jmp 0x8e15
leaq 0x192f1(%rip), %rsi     # 0x2210d
leaq -0x528(%rbp), %rdi
callq 0xb820
movq %rax, -0x738(%rbp)
jmp 0x8e31
movq -0x738(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0xb790
movq %rax, -0x740(%rbp)
jmp 0x8e4a
movq -0x740(%rbp), %rdi
leaq 0x192e6(%rip), %rsi     # 0x2213e
callq 0xb850
movq %rax, -0x748(%rbp)
jmp 0x8e66
movq -0x748(%rbp), %rsi
leaq -0x3b0(%rbp), %rdi
callq 0x4290
jmp 0x8e7b
movq -0x730(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x4400
jmp 0x8e90
movq -0x730(%rbp), %rdi
movb $0x0, -0x529(%rbp)
movq 0x2513b(%rip), %rsi     # 0x2dfe0
movq 0x2511c(%rip), %rdx     # 0x2dfc8
callq 0x43e0
jmp 0x909b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x8f08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x8efc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x4160
leaq -0x528(%rbp), %rdi
callq 0x4070
testb $0x1, -0x529(%rbp)
jne 0x8f13
jmp 0x8f1f
movq -0x730(%rbp), %rdi
callq 0x41a0
jmp 0x9083
movss -0x30(%rbp), %xmm0
movss 0x1912f(%rip), %xmm1    # 0x22060
ucomiss %xmm1, %xmm0
ja 0x8f48
movss 0x19126(%rip), %xmm0    # 0x22064
ucomiss -0x30(%rbp), %xmm0
jbe 0x907a
movb $0x1, -0x6c9(%rbp)
movl $0x10, %edi
callq 0x4110
movq %rax, -0x750(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x4340
jmp 0x8f6e
leaq 0x191ba(%rip), %rsi     # 0x2212f
leaq -0x6c8(%rbp), %rdi
callq 0xb820
movq %rax, -0x758(%rbp)
jmp 0x8f8a
movq -0x758(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xb790
movq %rax, -0x760(%rbp)
jmp 0x8fa3
movq -0x760(%rbp), %rdi
leaq 0x1918d(%rip), %rsi     # 0x2213e
callq 0xb850
movq %rax, -0x768(%rbp)
jmp 0x8fbf
movq -0x768(%rbp), %rsi
leaq -0x550(%rbp), %rdi
callq 0x4290
jmp 0x8fd4
movq -0x750(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x4400
jmp 0x8fe9
movq -0x750(%rbp), %rdi
movb $0x0, -0x6c9(%rbp)
movq 0x24fe2(%rip), %rsi     # 0x2dfe0
movq 0x24fc3(%rip), %rdx     # 0x2dfc8
callq 0x43e0
jmp 0x909b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x9061
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
jmp 0x9055
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x4160
leaq -0x6c8(%rbp), %rdi
callq 0x4070
testb $0x1, -0x6c9(%rbp)
jne 0x906c
jmp 0x9078
movq -0x750(%rbp), %rdi
callq 0x41a0
jmp 0x9083
addq $0x770, %rsp            # imm = 0x770
popq %rbp
retq
movq -0x6d8(%rbp), %rdi
callq 0xbd70
movq -0x1e8(%rbp), %rdi
callq 0x4420
nopl (%rax,%rax)