// File: PeterDenton[P]Nu-Pert/src/Mixed.cpp
// Function: Mixed::UMNSm(double, double, int)
Matrix<std::complex<double> > UMNSm(double a, double delta, int order)
{
	double t12m = atan2(sqrt(s12msq(a, order)), sqrt(c12msq(a, order)));
	double t13m = atan2(sqrt(s13msq(a, order)), sqrt(c13msq(a, order)));
	double t23m = atan2(sqrt(s23msq(a, delta, order)), sqrt(c23msq(a, delta, order)));
	double deltam = atan2(sdeltam(a, delta, order), cdeltam(a, delta, order));

	Matrix<std::complex<double> > U12m = U12(t12m);
	Matrix<std::complex<double> > U13m = U13(t13m);
	Matrix<std::complex<double> > U23m = U23(deltam, t23m);

	return U23m * U13m * U12m;
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x8(%rsp)
movq %rdi, %rax
movq %rax, 0x10(%rsp)
movq %rdi, 0x110(%rsp)
movsd %xmm0, 0x108(%rsp)
movsd %xmm1, 0x100(%rsp)
movl %esi, 0xfc(%rsp)
movsd 0x108(%rsp), %xmm0
movl 0xfc(%rsp), %edi
callq 0xe1a0
callq 0x20f0
movsd %xmm0, 0x18(%rsp)
movsd 0x108(%rsp), %xmm0
movl 0xfc(%rsp), %edi
callq 0xe360
callq 0x20f0
movaps %xmm0, %xmm1
movsd 0x18(%rsp), %xmm0
callq 0x2050
movsd %xmm0, 0xf0(%rsp)
movsd 0x108(%rsp), %xmm0
movl 0xfc(%rsp), %edi
callq 0xe3a0
callq 0x20f0
movsd %xmm0, 0x20(%rsp)
movsd 0x108(%rsp), %xmm0
movl 0xfc(%rsp), %edi
callq 0xe480
callq 0x20f0
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
callq 0x2050
movsd %xmm0, 0xe8(%rsp)
movsd 0x108(%rsp), %xmm0
movsd 0x100(%rsp), %xmm1
movl 0xfc(%rsp), %edi
callq 0xe4c0
callq 0x20f0
movsd %xmm0, 0x28(%rsp)
movsd 0x108(%rsp), %xmm0
movsd 0x100(%rsp), %xmm1
movl 0xfc(%rsp), %edi
callq 0xe630
callq 0x20f0
movaps %xmm0, %xmm1
movsd 0x28(%rsp), %xmm0
callq 0x2050
movsd %xmm0, 0xe0(%rsp)
movsd 0x108(%rsp), %xmm0
movsd 0x100(%rsp), %xmm1
movl 0xfc(%rsp), %edi
callq 0xe930
movsd %xmm0, 0x30(%rsp)
movsd 0x108(%rsp), %xmm0
movsd 0x100(%rsp), %xmm1
movl 0xfc(%rsp), %edi
callq 0xe670
movaps %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
callq 0x2050
movsd %xmm0, 0xd8(%rsp)
movsd 0xf0(%rsp), %xmm0
leaq 0xc0(%rsp), %rdi
callq 0x4f10
movsd 0xe8(%rsp), %xmm0
leaq 0xa8(%rsp), %rdi
callq 0x4d60
jmp 0xed81
movsd 0xd8(%rsp), %xmm0
movsd 0xe0(%rsp), %xmm1
leaq 0x80(%rsp), %rdi
callq 0x4a80
jmp 0xeda2
leaq 0x50(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xcc80
jmp 0xedb6
leaq 0x68(%rsp), %rdi
leaq 0x80(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0xd410
jmp 0xedcf
leaq 0x38(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xcc80
jmp 0xede3
movq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0xd410
jmp 0xedf9
leaq 0x38(%rsp), %rdi
callq 0xce00
leaq 0x68(%rsp), %rdi
callq 0xce00
leaq 0x50(%rsp), %rdi
callq 0xce00
leaq 0x80(%rsp), %rdi
callq 0xce00
leaq 0xa8(%rsp), %rdi
callq 0xce00
leaq 0xc0(%rsp), %rdi
callq 0xce00
movq 0x10(%rsp), %rax
addq $0x118, %rsp            # imm = 0x118
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
jmp 0xef0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
jmp 0xeefe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
jmp 0xeef1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
jmp 0xeee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
jmp 0xeedd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
leaq 0x38(%rsp), %rdi
callq 0xce00
leaq 0x68(%rsp), %rdi
callq 0xce00
leaq 0x50(%rsp), %rdi
callq 0xce00
leaq 0x80(%rsp), %rdi
callq 0xce00
leaq 0xa8(%rsp), %rdi
callq 0xce00
leaq 0xc0(%rsp), %rdi
callq 0xce00
movq 0xa0(%rsp), %rdi
callq 0x22b0
nopw %cs:(%rax,%rax)