// File: /workspace/github_cpp_makefile_star2_O3/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 0x5f80
movss 0xc(%rsp), %xmm3
movaps 0x40(%rsp), %xmm2
movaps 0x30(%rsp), %xmm1
leaq 0xe4b0(%rip), %rax      # 0x149f0
movq %rax, (%rbx)
movss %xmm3, 0x98(%rbx)
movss %xmm2, 0x9c(%rbx)
movss %xmm1, 0xa0(%rbx)
xorps %xmm0, %xmm0
ucomiss %xmm3, %xmm0
jae 0x65b1
ucomiss 0x9b06(%rip), %xmm3     # 0x10070
ja 0x65b1
ucomiss %xmm1, %xmm2
jae 0x6643
movaps 0x9ae4(%rip), %xmm0     # 0x10060
andps %xmm2, %xmm0
ucomiss 0x9b06(%rip), %xmm0     # 0x1008c
ja 0x66fe
movaps 0x9acd(%rip), %xmm0     # 0x10060
andps %xmm1, %xmm0
ucomiss 0x9aef(%rip), %xmm0     # 0x1008c
ja 0x6790
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x30d0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x9b2b(%rip), %rsi      # 0x100fa
leaq 0x50(%rsp), %rdi
movl $0x9, %edx
callq 0x3210
xorps %xmm0, %xmm0
cvtss2sd 0xc(%rsp), %xmm0
leaq 0x50(%rsp), %rdi
callq 0x32b0
leaq 0x9b0c(%rip), %rsi      # 0x10104
leaq 0x50(%rsp), %rdi
movl $0x20, %edx
callq 0x3210
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32a0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe9b1(%rip), %rsi      # 0x14fe0
movq 0xe992(%rip), %rdx      # 0x14fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x681d
movl $0x10, %edi
callq 0x30d0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x9ac4(%rip), %rsi      # 0x10125
leaq 0x50(%rsp), %rdi
movl $0xb, %edx
callq 0x3210
xorps %xmm0, %xmm0
cvtss2sd 0x40(%rsp), %xmm0
leaq 0x50(%rsp), %rdi
callq 0x32b0
leaq 0x9aa7(%rip), %rsi      # 0x10131
leaq 0x50(%rsp), %rdi
movl $0x21, %edx
callq 0x3210
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp), %xmm0
leaq 0x50(%rsp), %rdi
callq 0x32b0
leaq 0x9aa0(%rip), %rsi      # 0x10153
leaq 0x50(%rsp), %rdi
movl $0x2, %edx
callq 0x3210
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32a0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe8f6(%rip), %rsi      # 0x14fe0
movq 0xe8d7(%rip), %rdx      # 0x14fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x681d
movl $0x10, %edi
callq 0x30d0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x9a09(%rip), %rsi      # 0x10125
leaq 0x50(%rsp), %rdi
movl $0xb, %edx
callq 0x3210
xorps %xmm0, %xmm0
cvtss2sd 0x40(%rsp), %xmm0
leaq 0x50(%rsp), %rdi
callq 0x32b0
leaq 0x9a11(%rip), %rsi      # 0x10156
leaq 0x50(%rsp), %rdi
movl $0x25, %edx
callq 0x3210
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32a0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe864(%rip), %rsi      # 0x14fe0
movq 0xe845(%rip), %rdx      # 0x14fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x681d
movl $0x10, %edi
callq 0x30d0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x3230
leaq 0x9999(%rip), %rsi      # 0x10147
leaq 0x50(%rsp), %rdi
movl $0xb, %edx
callq 0x3210
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp), %xmm0
leaq 0x50(%rsp), %rdi
callq 0x32b0
leaq 0x997f(%rip), %rsi      # 0x10156
leaq 0x50(%rsp), %rdi
movl $0x25, %edx
callq 0x3210
leaq 0x58(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x32a0
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x32e0
xorl %ebp, %ebp
movq 0xe7d2(%rip), %rsi      # 0x14fe0
movq 0xe7b3(%rip), %rdx      # 0x14fc8
movq %r14, %rdi
callq 0x32d0
jmp 0x6823
jmp 0x6823
jmp 0x6823
movq %rax, %r15
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x684f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x31d0
jmp 0x684f
jmp 0x6849
jmp 0x6849
jmp 0x6849
movq %rax, %r15
movb $0x1, %bpl
movq 0xe75a(%rip), %rsi      # 0x14fb0
leaq 0x50(%rsp), %rdi
callq 0x30f0
leaq 0xc0(%rsp), %rdi
callq 0x3080
testb %bpl, %bpl
jne 0x687d
jmp 0x6885
jmp 0x687a
jmp 0x687a
jmp 0x687a
movq %rax, %r15
movq %r14, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x712e
movq %r15, %rdi
callq 0x32f0
nop