// File: soybin[P]idyll/src/renderer.cpp
// Function: renderer::renderer(int, int, seed*, fractal*)
renderer::renderer(int WIDTH, int HEIGHT, seed* s, fractal* f) 	: WIDTH(WIDTH), HEIGHT(HEIGHT), s(s), f(f) {

	// get field of view from config file
	FOV = config::getInt("fov");

	// get sample value from config file
	SAMPLES = config::getInt("samples");

	// get surface bounces per ray
	BOUNCES = config::getInt("bounces");

	// set lower bound for randomness in sky noise
	SKY_NOISE = std::min(std::max(0.8, SAMPLES / 8.0), 1.0);

	// get random glossiness chance and glossiness amount from the
	// region's seed.
	// this represents the probability for a ray to be reflected
	// as glossy instead of as diffuse, and with which intensity
	// it will do so
	GLOSSINESS_CHANCE = s->values["GLOSSINESS_CHANCE"];
	GLOSSINESS_AMOUNT = s->values["GLOSSINESS_AMOUNT"];

	// random positioning of the camera along the surface of a
	// sphere with a certain radius
	math::vec3 dir;
	dir.x = s->values["xcameraDirection"];
	dir.y = s->values["ycameraDirection"];
	dir.z = s->values["zcameraDirection"];
	double distance = s->values["cameraDistance"];
	for (double radius = 0.0; radius < MAX_DIST; ) {
		cameraPosition = dir * radius;
		updateRotationMatrix();
		++radius;
		if (f->de(cameraPosition) < distance) continue;
		bool hit = false;
		for (int i = 0; i < 64; ++i) {
			double y = HEIGHT * s->d(0.0, 1.0);
			double x = WIDTH * s->d(0.0, 1.0);
			double d = march({cameraPosition, calculateRayDirection(x, y)});
			if (d != -1.0) {
				hit = true;
				break;
			}
		}
		if (hit) {
			break;
		}
	}

	// get directional light direction
	lightDirection.x = s->values["xlightDirection"];
	lightDirection.y = s->values["ylightDirection"];
	lightDirection.z = s->values["zlightDirection"];

	// get directional light color
	lightColor.x = s->values["xlightColor"];
	lightColor.y = s->values["ylightColor"];
	lightColor.z = s->values["zlightColor"];
	
	// get sky color
	skyColor.x = s->values["xskyColor"];
	skyColor.y = s->values["yskyColor"];
	skyColor.z = s->values["zskyColor"];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x630, %rsp            # imm = 0x630
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x410(%rbp)
movl -0xc(%rbp), %eax
movl %eax, (%rdi)
movl -0x10(%rbp), %eax
movl %eax, 0x4(%rdi)
addq $0x30, %rdi
callq 0xbdd0
movq -0x410(%rbp), %rdi
addq $0x48, %rdi
callq 0xbdd0
movq -0x410(%rbp), %rdi
addq $0x60, %rdi
callq 0xbdd0
movq -0x410(%rbp), %rdi
addq $0x78, %rdi
callq 0xbdd0
movq -0x410(%rbp), %rdi
addq $0x90, %rdi
movq %rdi, -0x420(%rbp)
callq 0xf960
movq -0x410(%rbp), %rdi
addq $0xa8, %rdi
movq %rdi, -0x418(%rbp)
callq 0xf960
movq -0x410(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, 0xc0(%rax)
movq -0x18(%rbp), %rcx
movq %rcx, 0xc8(%rax)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x408(%rbp)
callq 0x45e0
movq -0x408(%rbp), %rdx
leaq 0xfedd(%rip), %rsi      # 0x1d8d8
leaq -0x40(%rbp), %rdi
callq 0x62c0
jmp 0xda06
leaq -0x40(%rbp), %rdi
callq 0xac80
movl %eax, -0x424(%rbp)
jmp 0xda17
movq -0x410(%rbp), %rax
movl -0x424(%rbp), %ecx
movl %ecx, 0x8(%rax)
leaq -0x40(%rbp), %rdi
callq 0x41f0
leaq -0x41(%rbp), %rdi
callq 0x43c0
leaq -0x79(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x45e0
movq -0x430(%rbp), %rdx
leaq 0xfe85(%rip), %rsi      # 0x1d8dc
leaq -0x78(%rbp), %rdi
callq 0x62c0
jmp 0xda62
leaq -0x78(%rbp), %rdi
callq 0xac80
movl %eax, -0x434(%rbp)
jmp 0xda73
movq -0x410(%rbp), %rax
movl -0x434(%rbp), %ecx
movl %ecx, 0xc(%rax)
leaq -0x78(%rbp), %rdi
callq 0x41f0
leaq -0x79(%rbp), %rdi
callq 0x43c0
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x45e0
movq -0x440(%rbp), %rdx
leaq 0xfe2e(%rip), %rsi      # 0x1d8e4
leaq -0xa0(%rbp), %rdi
callq 0x62c0
jmp 0xdac4
leaq -0xa0(%rbp), %rdi
callq 0xac80
movl %eax, -0x444(%rbp)
jmp 0xdad8
movq -0x410(%rbp), %rax
movl -0x444(%rbp), %ecx
movl %ecx, 0x10(%rax)
leaq -0xa0(%rbp), %rdi
callq 0x41f0
leaq -0xa1(%rbp), %rdi
callq 0x43c0
movq -0x410(%rbp), %rax
movabsq $0x3fe999999999999a, %rcx # imm = 0x3FE999999999999A
movq %rcx, -0xb0(%rbp)
cvtsi2sdl 0xc(%rax), %xmm0
movsd 0xfd5b(%rip), %xmm1     # 0x1d880
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
leaq -0xb0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xcef0
movq %rax, -0x450(%rbp)
jmp 0xdb4d
movq -0x450(%rbp), %rdi
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, -0xc0(%rbp)
leaq -0xc0(%rbp), %rsi
callq 0xceb0
movq %rax, -0x458(%rbp)
jmp 0xdb7a
movq -0x410(%rbp), %rax
movq -0x458(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x18(%rax)
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x468(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x45e0
movq -0x460(%rbp), %rdx
leaq 0xfd29(%rip), %rsi      # 0x1d8ec
leaq -0xe0(%rbp), %rdi
callq 0x62c0
jmp 0xdbd1
movq -0x468(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xf980
movq %rax, -0x470(%rbp)
jmp 0xdbed
movq -0x410(%rbp), %rax
movq -0x470(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x20(%rax)
leaq -0xe0(%rbp), %rdi
callq 0x41f0
leaq -0xe1(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x480(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x45e0
movq -0x478(%rbp), %rdx
leaq 0xfcb0(%rip), %rsi      # 0x1d8fe
leaq -0x108(%rbp), %rdi
callq 0x62c0
jmp 0xdc5c
movq -0x480(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xf980
movq %rax, -0x488(%rbp)
jmp 0xdc78
movq -0x410(%rbp), %rax
movq -0x488(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x28(%rax)
leaq -0x108(%rbp), %rdi
callq 0x41f0
leaq -0x109(%rbp), %rdi
callq 0x43c0
leaq -0x128(%rbp), %rdi
callq 0xbdd0
jmp 0xdcb5
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x498(%rbp)
leaq -0x149(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x45e0
movq -0x490(%rbp), %rdx
leaq 0xfc29(%rip), %rsi      # 0x1d910
leaq -0x148(%rbp), %rdi
callq 0x62c0
jmp 0xdcf5
movq -0x498(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xf980
movq %rax, -0x4a0(%rbp)
jmp 0xdd11
movq -0x4a0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x128(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x41f0
leaq -0x149(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x4b0(%rbp)
leaq -0x171(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x45e0
movq -0x4a8(%rbp), %rdx
leaq 0xfbb3(%rip), %rsi      # 0x1d921
leaq -0x170(%rbp), %rdi
callq 0x62c0
jmp 0xdd7c
movq -0x4b0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xf980
movq %rax, -0x4b8(%rbp)
jmp 0xdd98
movq -0x4b8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x120(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x41f0
leaq -0x171(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x4c8(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x45e0
movq -0x4c0(%rbp), %rdx
leaq 0xfb3d(%rip), %rsi      # 0x1d932
leaq -0x198(%rbp), %rdi
callq 0x62c0
jmp 0xde03
movq -0x4c8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xf980
movq %rax, -0x4d0(%rbp)
jmp 0xde1f
movq -0x4d0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x118(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x41f0
leaq -0x199(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x4e0(%rbp)
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x45e0
movq -0x4d8(%rbp), %rdx
leaq 0xfac7(%rip), %rsi      # 0x1d943
leaq -0x1c8(%rbp), %rdi
callq 0x62c0
jmp 0xde8a
movq -0x4e0(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xf980
movq %rax, -0x4e8(%rbp)
jmp 0xdea6
movq -0x4e8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x4f0(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x41f0
leaq -0x1c9(%rbp), %rdi
callq 0x43c0
movsd -0x4f0(%rbp), %xmm0
movsd %xmm0, -0x1a8(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1d8(%rbp)
movsd 0xf994(%rip), %xmm0     # 0x1d888
ucomisd -0x1d8(%rbp), %xmm0
jbe 0xe372
movsd -0x1d8(%rbp), %xmm0
leaq -0x1f0(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xbf90
jmp 0xdf1f
movq -0x410(%rbp), %rdi
addq $0x30, %rdi
leaq -0x1f0(%rbp), %rsi
callq 0xc090
jmp 0xdf38
movq -0x410(%rbp), %rdi
callq 0xcf50
jmp 0xdf46
movq -0x410(%rbp), %rax
movsd -0x1d8(%rbp), %xmm0
movsd 0xf713(%rip), %xmm1     # 0x1d670
addsd %xmm1, %xmm0
movsd %xmm0, -0x1d8(%rbp)
movq -0x20(%rbp), %rdi
movq 0x40(%rax), %rcx
movq %rcx, -0x200(%rbp)
movups 0x30(%rax), %xmm0
movaps %xmm0, -0x210(%rbp)
movq -0x200(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x10(%rax)
movaps -0x210(%rbp), %xmm0
movups %xmm0, (%rax)
callq 0x12450
movsd %xmm0, -0x4f8(%rbp)
jmp 0xdfaa
movsd -0x4f8(%rbp), %xmm1
movsd -0x1a8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xe1bd
jmp 0xdeec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xdfec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x41f0
leaq -0x41(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe01d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x41f0
leaq -0x79(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe051
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x41f0
leaq -0xa1(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x41f0
leaq -0xe1(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe0d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x41f0
leaq -0x109(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe107
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x41f0
leaq -0x149(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe13e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x41f0
leaq -0x171(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe175
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x41f0
leaq -0x199(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe1ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x41f0
leaq -0x1c9(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movb $0x0, -0x211(%rbp)
movl $0x0, -0x218(%rbp)
cmpl $0x40, -0x218(%rbp)
jge 0xe362
cvtsi2sdl -0x10(%rbp), %xmm0
movsd %xmm0, -0x508(%rbp)
movq -0x18(%rbp), %rdi
xorps %xmm0, %xmm0
movsd 0xf479(%rip), %xmm1     # 0x1d670
callq 0x14f90
movsd %xmm0, -0x500(%rbp)
jmp 0xe206
movsd -0x500(%rbp), %xmm1
movsd -0x508(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x220(%rbp)
cvtsi2sdl -0xc(%rbp), %xmm0
movsd %xmm0, -0x518(%rbp)
movq -0x18(%rbp), %rdi
xorps %xmm0, %xmm0
movsd 0xf432(%rip), %xmm1     # 0x1d670
callq 0x14f90
movsd %xmm0, -0x510(%rbp)
jmp 0xe24d
movq -0x410(%rbp), %rsi
movsd -0x510(%rbp), %xmm1
movsd -0x518(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x228(%rbp)
movq 0x40(%rsi), %rax
movq %rax, -0x270(%rbp)
movups 0x30(%rsi), %xmm0
movaps %xmm0, -0x280(%rbp)
movsd -0x228(%rbp), %xmm0
movsd -0x220(%rbp), %xmm1
leaq -0x298(%rbp), %rdi
callq 0xd2e0
jmp 0xe2a4
movq -0x288(%rbp), %rcx
movq %rsp, %rax
movq %rcx, 0x28(%rax)
movups -0x298(%rbp), %xmm0
movups %xmm0, 0x18(%rax)
movq -0x270(%rbp), %rcx
movq %rcx, 0x10(%rax)
movaps -0x280(%rbp), %xmm0
movups %xmm0, (%rax)
leaq -0x260(%rbp), %rdi
callq 0xfa60
jmp 0xe2e0
movq -0x410(%rbp), %rdi
movups -0x260(%rbp), %xmm0
movups -0x250(%rbp), %xmm1
movups -0x240(%rbp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0xea70
movsd %xmm0, -0x520(%rbp)
jmp 0xe319
movsd -0x520(%rbp), %xmm0
movsd %xmm0, -0x230(%rbp)
movsd -0x230(%rbp), %xmm0
movsd 0xf557(%rip), %xmm1     # 0x1d890
ucomisd %xmm1, %xmm0
jne 0xe343
jp 0xe343
jmp 0xe34c
movb $0x1, -0x211(%rbp)
jmp 0xe362
jmp 0xe34e
movl -0x218(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x218(%rbp)
jmp 0xe1ce
testb $0x1, -0x211(%rbp)
je 0xe36d
jmp 0xe372
jmp 0xdeec
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x530(%rbp)
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x45e0
movq -0x528(%rbp), %rdx
leaq 0xf5ae(%rip), %rsi      # 0x1d952
leaq -0x2b8(%rbp), %rdi
callq 0x62c0
jmp 0xe3b2
movq -0x530(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0xf980
movq %rax, -0x538(%rbp)
jmp 0xe3ce
movq -0x410(%rbp), %rax
movq -0x538(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x48(%rax)
leaq -0x2b8(%rbp), %rdi
callq 0x41f0
leaq -0x2b9(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x548(%rbp)
leaq -0x2e1(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x45e0
movq -0x540(%rbp), %rdx
leaq 0xf533(%rip), %rsi      # 0x1d962
leaq -0x2e0(%rbp), %rdi
callq 0x62c0
jmp 0xe43d
movq -0x548(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xf980
movq %rax, -0x550(%rbp)
jmp 0xe459
movq -0x410(%rbp), %rax
movq -0x550(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x50(%rax)
leaq -0x2e0(%rbp), %rdi
callq 0x41f0
leaq -0x2e1(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x560(%rbp)
leaq -0x309(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x45e0
movq -0x558(%rbp), %rdx
leaq 0xf4b8(%rip), %rsi      # 0x1d972
leaq -0x308(%rbp), %rdi
callq 0x62c0
jmp 0xe4c8
movq -0x560(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0xf980
movq %rax, -0x568(%rbp)
jmp 0xe4e4
movq -0x410(%rbp), %rax
movq -0x568(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x58(%rax)
leaq -0x308(%rbp), %rdi
callq 0x41f0
leaq -0x309(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x578(%rbp)
leaq -0x331(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x45e0
movq -0x570(%rbp), %rdx
leaq 0xf43d(%rip), %rsi      # 0x1d982
leaq -0x330(%rbp), %rdi
callq 0x62c0
jmp 0xe553
movq -0x578(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0xf980
movq %rax, -0x580(%rbp)
jmp 0xe56f
movq -0x410(%rbp), %rax
movq -0x580(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x60(%rax)
leaq -0x330(%rbp), %rdi
callq 0x41f0
leaq -0x331(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x590(%rbp)
leaq -0x359(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x45e0
movq -0x588(%rbp), %rdx
leaq 0xf3be(%rip), %rsi      # 0x1d98e
leaq -0x358(%rbp), %rdi
callq 0x62c0
jmp 0xe5de
movq -0x590(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0xf980
movq %rax, -0x598(%rbp)
jmp 0xe5fa
movq -0x410(%rbp), %rax
movq -0x598(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x68(%rax)
leaq -0x358(%rbp), %rdi
callq 0x41f0
leaq -0x359(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x5a8(%rbp)
leaq -0x381(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x45e0
movq -0x5a0(%rbp), %rdx
leaq 0xf33f(%rip), %rsi      # 0x1d99a
leaq -0x380(%rbp), %rdi
callq 0x62c0
jmp 0xe669
movq -0x5a8(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0xf980
movq %rax, -0x5b0(%rbp)
jmp 0xe685
movq -0x410(%rbp), %rax
movq -0x5b0(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x70(%rax)
leaq -0x380(%rbp), %rdi
callq 0x41f0
leaq -0x381(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x5c0(%rbp)
leaq -0x3a9(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x45e0
movq -0x5b8(%rbp), %rdx
leaq 0xf2c0(%rip), %rsi      # 0x1d9a6
leaq -0x3a8(%rbp), %rdi
callq 0x62c0
jmp 0xe6f4
movq -0x5c0(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0xf980
movq %rax, -0x5c8(%rbp)
jmp 0xe710
movq -0x410(%rbp), %rax
movq -0x5c8(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x78(%rax)
leaq -0x3a8(%rbp), %rdi
callq 0x41f0
leaq -0x3a9(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x5d8(%rbp)
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x45e0
movq -0x5d0(%rbp), %rdx
leaq 0xf23f(%rip), %rsi      # 0x1d9b0
leaq -0x3d0(%rbp), %rdi
callq 0x62c0
jmp 0xe77f
movq -0x5d8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0xf980
movq %rax, -0x5e0(%rbp)
jmp 0xe79b
movq -0x410(%rbp), %rax
movq -0x5e0(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x80(%rax)
leaq -0x3d0(%rbp), %rdi
callq 0x41f0
leaq -0x3d1(%rbp), %rdi
callq 0x43c0
movq -0x18(%rbp), %rax
addq $0x2718, %rax           # imm = 0x2718
movq %rax, -0x5f0(%rbp)
leaq -0x3f9(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x45e0
movq -0x5e8(%rbp), %rdx
leaq 0xf1bb(%rip), %rsi      # 0x1d9ba
leaq -0x3f8(%rbp), %rdi
callq 0x62c0
jmp 0xe80d
movq -0x5f0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0xf980
movq %rax, -0x5f8(%rbp)
jmp 0xe829
movq -0x410(%rbp), %rax
movq -0x5f8(%rbp), %rcx
movsd (%rcx), %xmm0
movsd %xmm0, 0x88(%rax)
leaq -0x3f8(%rbp), %rdi
callq 0x41f0
leaq -0x3f9(%rbp), %rdi
callq 0x43c0
addq $0x630, %rsp            # imm = 0x630
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe88a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x41f0
leaq -0x2b9(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe8c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x41f0
leaq -0x2e1(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe8f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x41f0
leaq -0x309(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe92f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x41f0
leaq -0x331(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe966
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x41f0
leaq -0x359(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe99d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x41f0
leaq -0x381(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xe9d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x41f0
leaq -0x3a9(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xea08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x41f0
leaq -0x3d1(%rbp), %rdi
callq 0x43c0
jmp 0xea48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xea3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x41f0
leaq -0x3f9(%rbp), %rdi
callq 0x43c0
movq -0x418(%rbp), %rdi
callq 0x64d0
movq -0x420(%rbp), %rdi
callq 0x64d0
movq -0x50(%rbp), %rdi
callq 0x45d0
nopl (%rax)