// File: sergiosvieira[P]ptd2ns2/rng.cc
// Function: RNG::U01()
double RNG::U01() {
	long k;
	double p1, p2, u;
	/* Component 1 */
	p1 = a12 * Cg_[1] - a13n * Cg_[0];
	k = static_cast<long> (p1 / m1);
	p1 -= k * m1;
	if (p1 < 0.0)
		p1 += m1;
	Cg_[0] = Cg_[1];
	Cg_[1] = Cg_[2];
	Cg_[2] = p1;
	/* Component 2 */
	p2 = a21 * Cg_[5] - a23n * Cg_[3];
	k = static_cast<long> (p2 / m2);
	p2 -= k * m2;
	if (p2 < 0.0)
		p2 += m2;
	Cg_[3] = Cg_[4];
	Cg_[4] = Cg_[5];
	Cg_[5] = p2;
	/* Combination */
	u = ((p1 > p2) ? (p1 - p2) * norm : (p1 - p2 + m1) * norm);
	return (anti_ == false) ? u : (1 - u);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
movsd 0x8(%rax), %xmm0
movsd 0x2a6b(%rip), %xmm1     # 0xa3b8
mulsd (%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
movsd 0x2a40(%rip), %xmm2     # 0xa3b0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0x2a1e(%rip), %xmm1     # 0xa3a8
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
movq %rax, -0x10(%rbp)
cvtsi2sdq -0x10(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x29e7(%rip), %xmm2     # 0xa3a8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x18(%rbp), %xmm0
jbe 0x79ea
movsd 0x29c8(%rip), %xmm0     # 0xa3a8
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movq -0x30(%rbp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd -0x18(%rbp), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x28(%rax), %xmm0
movsd 0x29b8(%rip), %xmm1     # 0xa3d0
mulsd 0x18(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
movsd 0x298c(%rip), %xmm2     # 0xa3c8
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x296a(%rip), %xmm1     # 0xa3c0
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
movq %rax, -0x10(%rbp)
cvtsi2sdq -0x10(%rbp), %xmm0
movsd -0x20(%rbp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x2933(%rip), %xmm2     # 0xa3c0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x20(%rbp), %xmm0
jbe 0x7ab6
movsd 0x2914(%rip), %xmm0     # 0xa3c0
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movq -0x30(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
movsd 0x28(%rax), %xmm0
movsd %xmm0, 0x20(%rax)
movsd -0x20(%rbp), %xmm0
movsd %xmm0, 0x28(%rax)
movsd -0x18(%rbp), %xmm0
ucomisd -0x20(%rbp), %xmm0
jbe 0x7b01
movsd -0x18(%rbp), %xmm0
subsd -0x20(%rbp), %xmm0
movsd 0x28e2(%rip), %xmm1     # 0xa3d8
mulsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
jmp 0x7b28
movsd -0x18(%rbp), %xmm0
subsd -0x20(%rbp), %xmm0
movsd 0x2895(%rip), %xmm1     # 0xa3a8
addsd %xmm1, %xmm0
movsd 0x28b9(%rip), %xmm1     # 0xa3d8
mulsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movq -0x30(%rbp), %rax
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movb 0x90(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x7b52
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0x7b64
movsd 0x24b6(%rip), %xmm0     # 0xa010
subsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x40(%rbp), %xmm0
popq %rbp
retq
nopl (%rax,%rax)