// File: PeterDenton[P]Nu-Pert/src/GF.cpp
// Function: GF::ReUm4(double, double, int, int, int, int, int, int)
double ReUm4(double a, double delta, int alpha, int beta, int w, int x, int y, int z)
{
	assert (alpha >= 0 && alpha <= 2); // alpha valid for 0, 1, 2
	assert (beta >= 0 && beta <= 2); // beta valid for 0, 1, 2
	assert (w >= 0 && w <= 2); // w valid for 0, 1, 2
	assert (x >= 0 && x <= 2); // x valid for 0, 1, 2
	assert (y >= 0 && y <= 2); // y valid for 0, 1, 2
	assert (z >= 0 && z <= 2); // z valid for 0, 1, 2

	Matrix<std::complex<double> > U = Check::UMNSm(a, delta);

	return std::real(U(alpha, w) * std::conj(U(beta, x) * U(alpha, y)) * U(beta, z));
}

// Assembly:
subq $0x108, %rsp            # imm = 0x108
movsd %xmm0, 0x100(%rsp)
movsd %xmm1, 0xf8(%rsp)
movl %edi, 0xf4(%rsp)
movl %esi, 0xf0(%rsp)
movl %edx, 0xec(%rsp)
movl %ecx, 0xe8(%rsp)
movl %r8d, 0xe4(%rsp)
movl %r9d, 0xe0(%rsp)
xorl %eax, %eax
cmpl $0x0, 0xf4(%rsp)
movb %al, 0x77(%rsp)
jl 0x7514
cmpl $0x2, 0xf4(%rsp)
setle %al
movb %al, 0x77(%rsp)
movb 0x77(%rsp), %al
testb $0x1, %al
jne 0x751e
jmp 0x7520
jmp 0x753f
leaq 0xac58(%rip), %rdi      # 0x1217f
leaq 0xaf72(%rip), %rsi      # 0x124a0
movl $0x13, %edx
leaq 0xaf71(%rip), %rcx      # 0x124ab
callq 0x20d0
xorl %eax, %eax
cmpl $0x0, 0xf0(%rsp)
movb %al, 0x76(%rsp)
jl 0x755e
cmpl $0x2, 0xf0(%rsp)
setle %al
movb %al, 0x76(%rsp)
movb 0x76(%rsp), %al
testb $0x1, %al
jne 0x7568
jmp 0x756a
jmp 0x7589
leaq 0xac73(%rip), %rdi      # 0x121e4
leaq 0xaf28(%rip), %rsi      # 0x124a0
movl $0x14, %edx
leaq 0xaf27(%rip), %rcx      # 0x124ab
callq 0x20d0
xorl %eax, %eax
cmpl $0x0, 0xec(%rsp)
movb %al, 0x75(%rsp)
jl 0x75a8
cmpl $0x2, 0xec(%rsp)
setle %al
movb %al, 0x75(%rsp)
movb 0x75(%rsp), %al
testb $0x1, %al
jne 0x75b2
jmp 0x75b4
jmp 0x75d3
leaq 0xaf2f(%rip), %rdi      # 0x124ea
leaq 0xaede(%rip), %rsi      # 0x124a0
movl $0x15, %edx
leaq 0xaedd(%rip), %rcx      # 0x124ab
callq 0x20d0
xorl %eax, %eax
cmpl $0x0, 0xe8(%rsp)
movb %al, 0x74(%rsp)
jl 0x75f2
cmpl $0x2, 0xe8(%rsp)
setle %al
movb %al, 0x74(%rsp)
movb 0x74(%rsp), %al
testb $0x1, %al
jne 0x75fc
jmp 0x75fe
jmp 0x761d
leaq 0xaef6(%rip), %rdi      # 0x124fb
leaq 0xae94(%rip), %rsi      # 0x124a0
movl $0x16, %edx
leaq 0xae93(%rip), %rcx      # 0x124ab
callq 0x20d0
xorl %eax, %eax
cmpl $0x0, 0xe4(%rsp)
movb %al, 0x73(%rsp)
jl 0x763c
cmpl $0x2, 0xe4(%rsp)
setle %al
movb %al, 0x73(%rsp)
movb 0x73(%rsp), %al
testb $0x1, %al
jne 0x7646
jmp 0x7648
jmp 0x7667
leaq 0xaebd(%rip), %rdi      # 0x1250c
leaq 0xae4a(%rip), %rsi      # 0x124a0
movl $0x17, %edx
leaq 0xae49(%rip), %rcx      # 0x124ab
callq 0x20d0
xorl %eax, %eax
cmpl $0x0, 0xe0(%rsp)
movb %al, 0x72(%rsp)
jl 0x7686
cmpl $0x2, 0xe0(%rsp)
setle %al
movb %al, 0x72(%rsp)
movb 0x72(%rsp), %al
testb $0x1, %al
jne 0x7690
jmp 0x7692
jmp 0x76b1
leaq 0xae84(%rip), %rdi      # 0x1251d
leaq 0xae00(%rip), %rsi      # 0x124a0
movl $0x18, %edx
leaq 0xadff(%rip), %rcx      # 0x124ab
callq 0x20d0
movsd 0x100(%rsp), %xmm0
movsd 0xf8(%rsp), %xmm1
leaq 0xc8(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x3c60
movq 0x60(%rsp), %rdi
movslq 0xf4(%rsp), %rsi
movslq 0xec(%rsp), %rdx
callq 0xce30
movq %rax, 0x68(%rsp)
jmp 0x76f6
movslq 0xf0(%rsp), %rsi
movslq 0xe8(%rsp), %rdx
leaq 0xc8(%rsp), %rdi
callq 0xce30
movq %rax, 0x58(%rsp)
jmp 0x771a
movslq 0xf4(%rsp), %rsi
movslq 0xe4(%rsp), %rdx
leaq 0xc8(%rsp), %rdi
callq 0xce30
movq %rax, 0x50(%rsp)
jmp 0x773e
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdi
callq 0x46b0
movsd %xmm1, 0x40(%rsp)
movsd %xmm0, 0x48(%rsp)
jmp 0x775b
movsd 0x40(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
movsd %xmm1, 0x78(%rsp)
movsd %xmm0, 0x80(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x46f0
movsd %xmm1, 0x30(%rsp)
movsd %xmm0, 0x38(%rsp)
jmp 0x778e
movq 0x68(%rsp), %rdi
movsd 0x30(%rsp), %xmm0
movsd 0x38(%rsp), %xmm1
movsd %xmm1, 0x88(%rsp)
movsd %xmm0, 0x90(%rsp)
leaq 0x88(%rsp), %rsi
callq 0x46b0
movsd %xmm1, 0x20(%rsp)
movsd %xmm0, 0x28(%rsp)
jmp 0x77cc
movsd 0x20(%rsp), %xmm0
movsd 0x28(%rsp), %xmm1
movsd %xmm1, 0xa8(%rsp)
movsd %xmm0, 0xb0(%rsp)
movslq 0xf0(%rsp), %rsi
movslq 0xe0(%rsp), %rdx
leaq 0xc8(%rsp), %rdi
callq 0xce30
movq %rax, 0x18(%rsp)
jmp 0x780e
movq 0x18(%rsp), %rsi
leaq 0xa8(%rsp), %rdi
callq 0x46b0
movsd %xmm1, 0x8(%rsp)
movsd %xmm0, 0x10(%rsp)
jmp 0x782e
movsd 0x8(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd %xmm1, 0xb8(%rsp)
movsd %xmm0, 0xc0(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x9140
movsd %xmm0, (%rsp)
jmp 0x7860
leaq 0xc8(%rsp), %rdi
callq 0xce00
movsd (%rsp), %xmm0
addq $0x108, %rsp            # imm = 0x108
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0xce00
movq 0xa0(%rsp), %rdi
callq 0x22b0
nopl (%rax,%rax)