// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movaps %xmm5, 0x30(%rsp)
movaps %xmm4, 0x40(%rsp)
movss %xmm3, 0xc(%rsp)
movq %rdi, %rbx
callq 0x529e
movss 0xc(%rsp), %xmm3
movaps 0x40(%rsp), %xmm2
movaps 0x30(%rsp), %xmm1
leaq 0xe302(%rip), %rax      # 0x139f8
movq %rax, (%rbx)
movss %xmm3, 0x98(%rbx)
movss %xmm2, 0x9c(%rbx)
movss %xmm1, 0xa0(%rbx)
xorps %xmm0, %xmm0
ucomiss %xmm3, %xmm0
jae 0x5767
ucomiss 0x8950(%rip), %xmm3     # 0xe070
ja 0x5767
ucomiss %xmm1, %xmm2
jae 0x57ea
movaps 0x892e(%rip), %xmm0     # 0xe060
andps %xmm2, %xmm0
ucomiss 0x8950(%rip), %xmm0     # 0xe08c
ja 0x588c
movaps 0x8917(%rip), %xmm0     # 0xe060
andps %xmm1, %xmm0
ucomiss 0x8939(%rip), %xmm0     # 0xe08c
ja 0x590b
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x30f0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x8977(%rip), %rsi      # 0xe0fa
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x50(%rsp), %rdi
movss 0xc(%rsp), %xmm0
callq 0x3150
leaq 0x8960(%rip), %rsi      # 0xe104
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32b0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe80a(%rip), %rsi      # 0x13fe0
movq 0xe7eb(%rip), %rdx      # 0x13fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x5988
pushq $0x10
popq %rdi
callq 0x30f0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x891f(%rip), %rsi      # 0xe125
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x50(%rsp), %rdi
movaps 0x40(%rsp), %xmm0
callq 0x3150
leaq 0x890b(%rip), %rsi      # 0xe131
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x50(%rsp), %rdi
movaps 0x30(%rsp), %xmm0
callq 0x3150
leaq 0x890d(%rip), %rsi      # 0xe153
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32b0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe768(%rip), %rsi      # 0x13fe0
movq 0xe749(%rip), %rdx      # 0x13fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x5988
pushq $0x10
popq %rdi
callq 0x30f0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x887d(%rip), %rsi      # 0xe125
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x50(%rsp), %rdi
movaps 0x40(%rsp), %xmm0
callq 0x3150
leaq 0x888e(%rip), %rsi      # 0xe156
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32b0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe6e6(%rip), %rsi      # 0x13fe0
movq 0xe6c7(%rip), %rdx      # 0x13fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x5988
pushq $0x10
popq %rdi
callq 0x30f0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x8820(%rip), %rsi      # 0xe147
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x50(%rsp), %rdi
movaps 0x30(%rsp), %xmm0
callq 0x3150
leaq 0x880f(%rip), %rsi      # 0xe156
leaq 0x50(%rsp), %rdi
callq 0x31c0
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32b0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe667(%rip), %rsi      # 0x13fe0
movq 0xe648(%rip), %rdx      # 0x13fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x598e
jmp 0x598e
jmp 0x598e
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x30d0
jmp 0x59a9
jmp 0x59a3
jmp 0x59a3
jmp 0x59a3
movq %rax, %r15
movb $0x1, %bpl
leaq 0x50(%rsp), %rdi
callq 0x3050
testb %bpl, %bpl
jne 0x59c3
jmp 0x59cb
jmp 0x59c0
jmp 0x59c0
jmp 0x59c0
movq %rax, %r15
movq %r14, %rdi
callq 0x3130
movq %rbx, %rdi
callq 0x5fee
movq %r15, %rdi
callq 0x32f0
nop