// File: ddunbar[P]PDSample/ScallopedSector.cpp
// Function: ScallopedSector::ScallopedSector(Vec2&, float, float, Vec2&, float, float, Vec2&, float, float)
ScallopedSector::ScallopedSector(Vec2 &_Pt, float _a1, float _a2, Vec2 &P1, float r1, float sign1, Vec2 &P2, float r2, float sign2)
{
	Vec2 v1 = Vec2(P1.x - _Pt.x, P1.y - _Pt.y);
	Vec2 v2 = Vec2(P2.x - _Pt.x, P2.y - _Pt.y);

	P = _Pt;
	a1 = _a1;
	a2 = _a2;

	arcs[0].P = P1;
	arcs[0].r = r1;
	arcs[0].sign = sign1;
	arcs[0].d = sqrt(v1.x*v1.x + v1.y*v1.y);
	arcs[0].rSqrd = arcs[0].r*arcs[0].r;
	arcs[0].dSqrd = arcs[0].d*arcs[0].d;
	arcs[0].theta = atan2(v1.y,v1.x);
	arcs[0].integralAtStart = integralOfDistToCircle(a1 - arcs[0].theta, arcs[0].d, arcs[0].r, arcs[0].sign);

	arcs[1].P = P2;
	arcs[1].r = r2;
	arcs[1].sign = sign2;
	arcs[1].d = sqrt(v2.x*v2.x + v2.y*v2.y);
	arcs[1].rSqrd = arcs[1].r*arcs[1].r;
	arcs[1].dSqrd = arcs[1].d*arcs[1].d;
	arcs[1].theta = atan2(v2.y,v2.x);
	arcs[1].integralAtStart = integralOfDistToCircle(a1 - arcs[1].theta, arcs[1].d, arcs[1].r, arcs[1].sign);

	area = calcAreaToAngle(a2);
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movss %xmm0, 0x54(%rsp)
movss %xmm1, 0x50(%rsp)
movq %rdx, 0x48(%rsp)
movss %xmm2, 0x44(%rsp)
movss %xmm3, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movss %xmm4, 0x34(%rsp)
movss %xmm5, 0x30(%rsp)
movq 0x60(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x6e60
movq 0x8(%rsp), %rax
addq $0x14, %rax
movq %rax, %rcx
addq $0x48, %rcx
movq %rcx, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movq %rdi, (%rsp)
callq 0x12070
movq (%rsp), %rax
movq 0x10(%rsp), %rcx
addq $0x24, %rax
cmpq %rcx, %rax
movq %rax, 0x18(%rsp)
jne 0x103f5
movq 0x48(%rsp), %rax
movss (%rax), %xmm0
movq 0x58(%rsp), %rax
subss (%rax), %xmm0
movq 0x48(%rsp), %rax
movss 0x4(%rax), %xmm1
movq 0x58(%rsp), %rax
subss 0x4(%rax), %xmm1
leaq 0x28(%rsp), %rdi
callq 0x6b60
movq 0x38(%rsp), %rax
movss (%rax), %xmm0
movq 0x58(%rsp), %rax
subss (%rax), %xmm0
movq 0x38(%rsp), %rax
movss 0x4(%rax), %xmm1
movq 0x58(%rsp), %rax
subss 0x4(%rax), %xmm1
leaq 0x20(%rsp), %rdi
callq 0x6b60
movq 0x8(%rsp), %rax
movq 0x58(%rsp), %rcx
movq (%rcx), %rcx
movq %rcx, (%rax)
movss 0x54(%rsp), %xmm0
movss %xmm0, 0x8(%rax)
movss 0x50(%rsp), %xmm0
movss %xmm0, 0xc(%rax)
movq 0x48(%rsp), %rcx
movq (%rcx), %rcx
movq %rcx, 0x14(%rax)
movss 0x44(%rsp), %xmm0
movss %xmm0, 0x1c(%rax)
movss 0x40(%rsp), %xmm0
movss %xmm0, 0x20(%rax)
movss 0x28(%rsp), %xmm0
movss 0x28(%rsp), %xmm2
movss 0x2c(%rsp), %xmm1
mulss 0x2c(%rsp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
callq 0x6d50
movq 0x8(%rsp), %rax
movss %xmm0, 0x24(%rax)
movss 0x1c(%rax), %xmm0
mulss 0x1c(%rax), %xmm0
movss %xmm0, 0x30(%rax)
movss 0x24(%rax), %xmm0
mulss 0x24(%rax), %xmm0
movss %xmm0, 0x34(%rax)
movss 0x2c(%rsp), %xmm0
movss 0x28(%rsp), %xmm1
callq 0x6dc0
movq 0x8(%rsp), %rax
movss %xmm0, 0x28(%rax)
movss 0x8(%rax), %xmm0
subss 0x28(%rax), %xmm0
movss 0x24(%rax), %xmm1
movss 0x1c(%rax), %xmm2
movss 0x20(%rax), %xmm3
callq 0x10620
movq 0x8(%rsp), %rax
movss %xmm0, 0x2c(%rax)
movq 0x38(%rsp), %rcx
movq (%rcx), %rcx
movq %rcx, 0x38(%rax)
movss 0x34(%rsp), %xmm0
movss %xmm0, 0x40(%rax)
movss 0x30(%rsp), %xmm0
movss %xmm0, 0x44(%rax)
movss 0x20(%rsp), %xmm0
movss 0x20(%rsp), %xmm2
movss 0x24(%rsp), %xmm1
mulss 0x24(%rsp), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
callq 0x6d50
movq 0x8(%rsp), %rax
movss %xmm0, 0x48(%rax)
movss 0x40(%rax), %xmm0
mulss 0x40(%rax), %xmm0
movss %xmm0, 0x54(%rax)
movss 0x48(%rax), %xmm0
mulss 0x48(%rax), %xmm0
movss %xmm0, 0x58(%rax)
movss 0x24(%rsp), %xmm0
movss 0x20(%rsp), %xmm1
callq 0x6dc0
movq 0x8(%rsp), %rax
movss %xmm0, 0x4c(%rax)
movss 0x8(%rax), %xmm0
subss 0x4c(%rax), %xmm0
movss 0x48(%rax), %xmm1
movss 0x40(%rax), %xmm2
movss 0x44(%rax), %xmm3
callq 0x10620
movq 0x8(%rsp), %rdi
movss %xmm0, 0x50(%rdi)
movss 0xc(%rdi), %xmm0
callq 0x107c0
movq 0x8(%rsp), %rax
movss %xmm0, 0x10(%rax)
addq $0x68, %rsp
retq
nopl (%rax)