// File: /workspace/github_cpp_makefile_star2_O2/soybin[P]idyll/src/fractal.cpp
// Function: fractal::calculateNormal(math::vec3)
math::vec3 fractal::calculateNormal(math::vec3 point) {
	double e = 0.00001;
	math::vec3 xyy(1.0, -1.0, -1.0);
	math::vec3 yyx(-1.0, -1.0, 1.0);
	math::vec3 yxy(-1.0, 1.0, -1.0);
	math::vec3 xxx(1.0, 1.0, 1.0);
	return math::normalize(
				xyy * de(point + xyy * e) +
				yyx * de(point + yyx * e) +
				yxy * de(point + yxy * e) +
				xxx * de(point + xxx * e)
				);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1e8, %rsp            # imm = 0x1E8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x1f8(%rbp), %rbx
movsd 0x416c(%rip), %xmm0     # 0xc678
movsd 0x435c(%rip), %xmm1     # 0xc870
movq %rbx, %rdi
movaps %xmm1, %xmm2
callq 0x5c46
leaq -0x90(%rbp), %rdi
movsd 0x4342(%rip), %xmm0     # 0xc870
movaps %xmm0, %xmm1
movsd 0x413f(%rip), %xmm2     # 0xc678
callq 0x5c46
leaq -0x78(%rbp), %rdi
movsd 0x4326(%rip), %xmm0     # 0xc870
movsd 0x4126(%rip), %xmm1     # 0xc678
movaps %xmm0, %xmm2
callq 0x5c46
leaq -0x60(%rbp), %rdi
movsd 0x4112(%rip), %xmm0     # 0xc678
movaps %xmm0, %xmm1
movaps %xmm0, %xmm2
callq 0x5c46
leaq -0x180(%rbp), %r12
movsd 0x4368(%rip), %xmm0     # 0xc8e8
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5cf6
leaq -0x198(%rbp), %r15
leaq 0x10(%rbp), %r13
movq %r15, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x5c5a
movq 0x10(%r15), %rax
movq %rax, 0x10(%rsp)
movups (%r15), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x82e0
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
callq 0x5cf6
leaq -0x138(%rbp), %rbx
movq %rbx, %rdi
leaq -0x90(%rbp), %r12
movq %r12, %rsi
movsd 0x4303(%rip), %xmm0     # 0xc8e8
callq 0x5cf6
leaq -0x150(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x5c5a
movq 0x10(%r15), %rax
movq %rax, 0x10(%rsp)
movups (%r15), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x82e0
leaq -0x168(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x5cf6
leaq -0x1b0(%rbp), %rbx
movq %rbx, %rdi
leaq -0x48(%rbp), %rsi
movq %r15, %rdx
callq 0x5c5a
leaq -0xf0(%rbp), %r15
movq %r15, %rdi
leaq -0x78(%rbp), %r13
movq %r13, %rsi
movsd 0x428f(%rip), %xmm0     # 0xc8e8
callq 0x5cf6
leaq -0x108(%rbp), %r12
movq %r12, %rdi
leaq 0x10(%rbp), %rsi
movq %r15, %rdx
callq 0x5c5a
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x82e0
leaq -0x120(%rbp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x5cf6
leaq -0x1c8(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0x5c5a
leaq -0xa8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x60(%rbp), %r13
movq %r13, %rsi
movsd 0x4219(%rip), %xmm0     # 0xc8e8
callq 0x5cf6
leaq -0xc0(%rbp), %r12
movq %r12, %rdi
leaq 0x10(%rbp), %rsi
movq %rbx, %rdx
callq 0x5c5a
movq 0x10(%r12), %rax
movq %rax, 0x10(%rsp)
movups (%r12), %xmm0
movups %xmm0, (%rsp)
movq %r14, %rdi
callq 0x82e0
leaq -0xd8(%rbp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5cf6
leaq -0x1e0(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x5c5a
movq 0x10(%r14), %rax
movq %rax, 0x10(%rsp)
movups (%r14), %xmm0
movups %xmm0, (%rsp)
movq -0x30(%rbp), %rbx
movq %rbx, %rdi
callq 0x5fdf
movq %rbx, %rax
addq $0x1e8, %rsp            # imm = 0x1E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq