// File: /workspace/github_c_makefile_star2_O1/TurkeyMcMac[P]ts3d/src/d3d.c
// Function: d3d_draw
void d3d_draw(
	d3d_camera *cam,
	d3d_vec_s cam_pos,
	d3d_scalar cam_facing,
	const d3d_board *board,
	size_t n_sprites,
	const d3d_sprite_s sprites[])
{
	if (cam_pos.x > (d3d_scalar)0.0 && cam_pos.y > (d3d_scalar)0.0
	 && cam_pos.x < board->width && cam_pos.y < board->height) {
		// Canonicalize camera direction:
		cam_facing = fmod(cam_facing, 2 * PI);
		if (cam_facing < (d3d_scalar)0.0) cam_facing += 2 * PI;
		for (size_t x = 0; x < cam->width; ++x) {
			draw_column(cam, cam_pos, cam_facing, board, x);
		}
		draw_sprites(cam, cam_pos, cam_facing, n_sprites, sprites);
	} else {
		empty_camera_pixels(cam);
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rcx, 0x38(%rsp)
movq %rdi, %rbx
xorpd %xmm3, %xmm3
ucomisd %xmm3, %xmm0
jbe 0x344a
ucomisd %xmm3, %xmm1
jbe 0x344a
movq %rsi, %r14
movsd (%rsi), %xmm4
unpcklps 0x9603(%rip), %xmm4     # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1]
subpd 0x960b(%rip), %xmm4     # 0xc080
movapd %xmm4, %xmm3
unpckhpd %xmm4, %xmm3            # xmm3 = xmm3[1],xmm4[1]
addsd %xmm4, %xmm3
ucomisd %xmm0, %xmm3
jbe 0x344a
movsd 0x8(%r14), %xmm4
unpcklps 0x95d8(%rip), %xmm4     # xmm4 = xmm4[0],mem[0],xmm4[1],mem[1]
subpd 0x95e0(%rip), %xmm4     # 0xc080
movapd %xmm4, %xmm3
unpckhpd %xmm4, %xmm3            # xmm3 = xmm3[1],xmm4[1]
addsd %xmm4, %xmm3
ucomisd %xmm1, %xmm3
jbe 0x344a
movsd %xmm0, 0x30(%rsp)
movsd %xmm1, 0x8(%rsp)
movq %rdx, 0x60(%rsp)
movsd 0x9561(%rip), %xmm1     # 0xc030
movapd %xmm2, %xmm0
callq 0x21c0
movsd 0x9550(%rip), %xmm3     # 0xc030
addsd %xmm0, %xmm3
xorpd %xmm2, %xmm2
movapd %xmm0, %xmm1
cmpltsd %xmm2, %xmm1
andpd %xmm1, %xmm3
andnpd %xmm0, %xmm1
orpd %xmm3, %xmm1
movapd %xmm1, 0xb0(%rsp)
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x3402
leaq 0x10(%r14), %rcx
movq %rcx, 0x88(%rsp)
leaq 0x80(%rbx), %r9
xorl %r10d, %r10d
movq 0x953f(%rip), %xmm5     # 0xc070
movapd 0x9547(%rip), %xmm6     # 0xc080
movsd 0x94e7(%rip), %xmm7     # 0xc028
movq %r14, 0x68(%rsp)
movq %r9, 0x98(%rsp)
movq %r10, 0x80(%rsp)
movq %r10, %xmm0
punpckldq %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]
subpd %xmm6, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movq %rax, %xmm0
punpckldq %xmm5, %xmm0    # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]
subpd %xmm6, %xmm0
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movapd %xmm7, %xmm0
subsd %xmm1, %xmm0
mulsd (%rbx), %xmm0
addsd 0xb0(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
callq 0x2190
movapd %xmm0, %xmm1
movsd 0x9468(%rip), %xmm0     # 0xc020
mulsd %xmm0, %xmm1
movapd %xmm1, 0x40(%rsp)
movsd 0x10(%rsp), %xmm0
callq 0x2520
movapd 0x40(%rsp), %xmm5
movapd %xmm0, %xmm6
mulsd 0x9441(%rip), %xmm6     # 0xc020
movq (%r14), %r15
movapd %xmm6, %xmm2
movapd 0x94a2(%rip), %xmm0     # 0xc090
andpd %xmm0, %xmm2
movapd 0x94a6(%rip), %xmm1     # 0xc0a0
orpd %xmm1, %xmm2
movapd %xmm2, 0xa0(%rsp)
movapd %xmm5, %xmm2
andpd %xmm0, %xmm2
orpd %xmm1, %xmm2
movapd %xmm2, 0xc0(%rsp)
movsd 0x8(%rsp), %xmm4
movsd 0x30(%rsp), %xmm3
movapd %xmm6, 0x50(%rsp)
xorpd %xmm0, %xmm0
ucomisd %xmm5, %xmm0
movapd %xmm3, 0x10(%rsp)
movapd %xmm4, 0x20(%rsp)
jbe 0x2c7d
movapd %xmm3, %xmm0
callq 0x2480
movapd 0x50(%rsp), %xmm6
movapd 0x40(%rsp), %xmm5
movapd 0x20(%rsp), %xmm4
movapd 0x10(%rsp), %xmm3
movapd %xmm3, %xmm7
subsd %xmm0, %xmm7
xorpd 0x941b(%rip), %xmm7     # 0xc090
movl $0x2, %r12d
jmp 0x2cb9
movl $0x2, %r12d
xorpd %xmm7, %xmm7
ucomisd %xmm7, %xmm5
jbe 0x2cb9
movapd %xmm3, %xmm0
callq 0x20b0
movapd 0x50(%rsp), %xmm6
movapd 0x40(%rsp), %xmm5
movapd 0x20(%rsp), %xmm4
movapd 0x10(%rsp), %xmm3
movapd %xmm0, %xmm7
subsd %xmm3, %xmm7
xorl %r12d, %r12d
xorpd %xmm0, %xmm0
ucomisd %xmm6, %xmm0
jbe 0x2d0c
movapd %xmm4, %xmm0
movapd %xmm7, 0x70(%rsp)
callq 0x2480
movapd 0x70(%rsp), %xmm7
movapd 0x50(%rsp), %xmm6
movapd 0x40(%rsp), %xmm5
movapd 0x20(%rsp), %xmm4
movapd 0x10(%rsp), %xmm3
movapd %xmm0, %xmm1
movapd %xmm4, %xmm0
subsd %xmm1, %xmm0
xorpd 0x938c(%rip), %xmm0     # 0xc090
movl $0x3, %r14d
jmp 0x2d4f
movl $0x3, %r14d
ucomisd %xmm0, %xmm6
jbe 0x2d4f
movapd %xmm4, %xmm0
movapd %xmm7, 0x70(%rsp)
callq 0x20b0
movapd 0x70(%rsp), %xmm7
movapd 0x50(%rsp), %xmm6
movapd 0x40(%rsp), %xmm5
movapd 0x20(%rsp), %xmm4
movapd 0x10(%rsp), %xmm3
subsd %xmm4, %xmm0
movl $0x1, %r14d
ucomisd 0x9309(%rip), %xmm5     # 0xc060
jne 0x2d73
jp 0x2d73
addsd %xmm0, %xmm4
movapd %xmm4, 0x20(%rsp)
divsd %xmm6, %xmm0
mulsd %xmm5, %xmm0
addsd %xmm0, %xmm3
jmp 0x2dae
ucomisd 0x92e5(%rip), %xmm6     # 0xc060
jne 0x2d7f
jnp 0x2d95
movapd %xmm7, %xmm1
divsd %xmm5, %xmm1
movapd %xmm0, %xmm2
divsd %xmm6, %xmm2
ucomisd %xmm1, %xmm2
jbe 0x2d5b
addsd %xmm7, %xmm3
divsd %xmm5, %xmm7
mulsd %xmm6, %xmm7
addsd %xmm7, %xmm4
movapd %xmm4, 0x20(%rsp)
movl %r12d, %r14d
movapd %xmm3, 0x10(%rsp)
movapd %xmm3, %xmm0
callq 0x2480
movapd 0x10(%rsp), %xmm1
movapd 0x40(%rsp), %xmm2
ucomisd 0x928f(%rip), %xmm2     # 0xc060
jbe 0x2e0f
ucomisd 0x9285(%rip), %xmm1     # 0xc060
jne 0x2ddf
jnp 0x2e0f
ucomisd %xmm1, %xmm0
jne 0x2e0f
jp 0x2e0f
cvttsd2si %xmm1, %rax
movq %rax, %rcx
movapd %xmm1, %xmm0
subsd 0x923d(%rip), %xmm0     # 0xc038
cvttsd2si %xmm0, %r13
sarq $0x3f, %rcx
andq %rcx, %r13
orq %rax, %r13
decq %r13
jmp 0x2e2e
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x9215(%rip), %xmm0     # 0xc038
cvttsd2si %xmm0, %r13
andq %rcx, %r13
orq %rax, %r13
movapd 0x20(%rsp), %xmm0
callq 0x2480
movapd 0x20(%rsp), %xmm4
movapd 0x50(%rsp), %xmm6
ucomisd 0x9213(%rip), %xmm6     # 0xc060
jbe 0x2e8b
ucomisd 0x9209(%rip), %xmm4     # 0xc060
jne 0x2e5b
jnp 0x2e8b
ucomisd %xmm4, %xmm0
jne 0x2e8b
jp 0x2e8b
cvttsd2si %xmm4, %rax
movq %rax, %rdx
movapd %xmm4, %xmm0
subsd 0x91c1(%rip), %xmm0     # 0xc038
cvttsd2si %xmm0, %rcx
sarq $0x3f, %rdx
andq %rdx, %rcx
orq %rax, %rcx
decq %rcx
jmp 0x2eaa
cvttsd2si %xmm0, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
subsd 0x9199(%rip), %xmm0     # 0xc038
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rax, %rcx
movsd 0x8(%rsp), %xmm0
movsd 0x30(%rsp), %xmm1
movl %r14d, %edx
leaq 0x91f0(%rip), %rax      # 0xc0b0
movl (%rax,%rdx,4), %eax
cmpq %r15, %r13
movapd 0x10(%rsp), %xmm3
movdqa 0x40(%rsp), %xmm5
jae 0x2ef7
movq 0x68(%rsp), %rsi
movq 0x8(%rsi), %rsi
cmpq %rsi, %rcx
jae 0x2ef7
imulq %r13, %rsi
addq %rcx, %rsi
movq 0x88(%rsp), %rdi
leaq (%rdi,%rsi,8), %rsi
jmp 0x2ef9
xorl %esi, %esi
testq %rsi, %rsi
je 0x2f8c
movq (%rsi), %rsi
movq (%rsi,%rdx,8), %rdi
testq %rdi, %rdi
je 0x2f20
xorl %ecx, %ecx
movq %rdi, 0x90(%rsp)
movl %eax, %r14d
movq %rsi, %rbp
jmp 0x2f90
leaq 0x9199(%rip), %rsi      # 0xc0c0
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
incq %r13
jmp 0x2f42
decq %r13
jmp 0x2f42
decq %rcx
jmp 0x2f42
incq %rcx
cmpq %r15, %r13
jae 0x2f6a
movq 0x68(%rsp), %rdx
movq 0x8(%rdx), %rdx
cmpq %rdx, %rcx
jae 0x2f6a
imulq %r13, %rdx
addq %rcx, %rdx
movq 0x88(%rsp), %rcx
leaq (%rcx,%rdx,8), %rcx
jmp 0x2f6c
xorl %ecx, %ecx
testq %rcx, %rcx
je 0x2f8c
movq (%rcx), %rdx
movq (%rdx,%rax,8), %rax
testq %rax, %rax
je 0x2f9a
xorl %ecx, %ecx
movq %rax, 0x90(%rsp)
movq %rdx, %rbp
jmp 0x2f90
xorl %ebp, %ebp
xorl %ecx, %ecx
testb %cl, %cl
jne 0x2c2e
jmp 0x2fb7
cmpl %r12d, %r14d
jne 0x2faa
addsd 0xc0(%rsp), %xmm3
jmp 0x2fb3
addsd 0xa0(%rsp), %xmm4
movb $0x1, %cl
jmp 0x2f90
testq %rbp, %rbp
jne 0x2fc8
movq 0x20(%rbx), %rax
movq %rax, 0x90(%rsp)
movapd %xmm3, 0x10(%rsp)
subsd %xmm1, %xmm3
movapd %xmm4, 0x20(%rsp)
subsd %xmm0, %xmm4
movsd %xmm3, 0x50(%rsp)
movapd %xmm3, %xmm0
movsd %xmm4, 0x70(%rsp)
movapd %xmm4, %xmm1
callq 0x21a0
movsd %xmm0, 0xa0(%rsp)
movq 0x78(%rbx), %rax
movq 0x80(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
cmpl $0x2, %r14d
je 0x3053
cmpl $0x1, %r14d
je 0x303f
testl %r14d, %r14d
movapd 0x10(%rsp), %xmm0
jne 0x306c
movapd 0x20(%rsp), %xmm0
callq 0x20b0
movapd %xmm0, %xmm11
subsd 0x20(%rsp), %xmm11
jmp 0x307d
movapd 0x10(%rsp), %xmm0
callq 0x2480
movapd 0x10(%rsp), %xmm11
jmp 0x3065
movapd 0x20(%rsp), %xmm0
callq 0x2480
movapd 0x20(%rsp), %xmm11
subsd %xmm0, %xmm11
jmp 0x307d
callq 0x20b0
movapd %xmm0, %xmm11
subsd 0x10(%rsp), %xmm11
movq 0x18(%rbx), %r14
testq %r14, %r14
movsd 0x8(%rsp), %xmm3
movsd 0x30(%rsp), %xmm4
movq 0x98(%rsp), %r9
movq 0x80(%rsp), %r10
movsd 0x8fc8(%rip), %xmm5     # 0xc070
movapd 0x8fd0(%rip), %xmm6     # 0xc080
movsd 0x8f70(%rip), %xmm7     # 0xc028
movsd 0x8f77(%rip), %xmm8     # 0xc038
movsd 0x8f76(%rip), %xmm9     # 0xc040
movapd 0x8f3d(%rip), %xmm10    # 0xc010
movsd 0x50(%rsp), %xmm12
movsd 0x70(%rsp), %xmm13
movsd 0xa0(%rsp), %xmm14
je 0x33ed
divsd %xmm14, %xmm12
divsd %xmm14, %xmm13
xorl %r15d, %r15d
movapd %xmm11, 0x10(%rsp)
movsd %xmm12, 0x50(%rsp)
movsd %xmm13, 0x70(%rsp)
movq 0x70(%rbx), %rcx
movsd (%rcx,%r15,8), %xmm1
movapd %xmm1, %xmm15
mulsd %xmm14, %xmm15
addsd %xmm7, %xmm15
ucomisd 0x8f2b(%rip), %xmm15    # 0xc060
jbe 0x31ce
ucomisd %xmm15, %xmm9
jbe 0x31ce
movq 0x90(%rsp), %rbp
movsd (%rbp), %xmm1
unpcklps %xmm5, %xmm1            # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
subpd %xmm6, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
mulsd %xmm11, %xmm2
cvttsd2si %xmm2, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd %xmm8, %xmm2
cvttsd2si %xmm2, %r12
andq %rcx, %r12
orq %rax, %r12
movsd 0x8(%rbp), %xmm1
unpcklps %xmm5, %xmm1            # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1]
subpd %xmm6, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
movapd %xmm9, %xmm1
subsd %xmm15, %xmm1
mulsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
movq %rcx, %rdx
subsd %xmm8, %xmm1
cvttsd2si %xmm1, %rax
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rcx, %rax
jmp 0x33a2
andpd %xmm10, %xmm1
movapd %xmm7, %xmm2
divsd %xmm1, %xmm2
movapd %xmm12, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm4, %xmm0
mulsd %xmm13, %xmm2
addsd %xmm3, %xmm2
cvttsd2si %xmm0, %rdx
movq %rdx, %rsi
sarq $0x3f, %rsi
movapd %xmm0, %xmm1
subsd %xmm8, %xmm1
cvttsd2si %xmm1, %rcx
andq %rsi, %rcx
orq %rdx, %rcx
movq 0x68(%rsp), %r8
cmpq %rcx, (%r8)
jbe 0x3259
cvttsd2si %xmm2, %rsi
movq %rsi, %rdi
sarq $0x3f, %rdi
movapd %xmm2, %xmm1
subsd %xmm8, %xmm1
cvttsd2si %xmm1, %rdx
andq %rdi, %rdx
orq %rsi, %rdx
movq 0x8(%r8), %rsi
cmpq %rdx, %rsi
jbe 0x3259
imulq %rcx, %rsi
addq %rdx, %rsi
movq 0x88(%rsp), %rcx
leaq (%rcx,%rsi,8), %rdx
jmp 0x325b
xorl %edx, %edx
xorl %ecx, %ecx
testq %rdx, %rdx
je 0x339e
ucomisd %xmm9, %xmm15
movq (%rdx), %rdx
movl $0x0, %esi
adcl $0x4, %esi
movq (%rdx,%rsi,8), %rbp
testq %rbp, %rbp
je 0x339e
movapd %xmm2, 0x20(%rsp)
movapd %xmm0, 0x40(%rsp)
callq 0x2480
movapd 0x40(%rsp), %xmm2
subsd %xmm0, %xmm2
movsd (%rbp), %xmm0
unpcklps 0x8dc6(%rip), %xmm0     # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x8dce(%rip), %xmm0     # 0xc080
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x8d62(%rip), %xmm1     # 0xc038
cvttsd2si %xmm1, %r12
andq %rcx, %r12
orq %rax, %r12
movapd 0x20(%rsp), %xmm0
callq 0x2480
movsd 0xa0(%rsp), %xmm14
movsd 0x70(%rsp), %xmm13
movsd 0x50(%rsp), %xmm12
movapd 0x10(%rsp), %xmm11
movapd 0x8cfc(%rip), %xmm10    # 0xc010
movsd 0x8d23(%rip), %xmm9     # 0xc040
movsd 0x8d12(%rip), %xmm8     # 0xc038
movsd 0x8cfa(%rip), %xmm7     # 0xc028
movapd 0x8d4a(%rip), %xmm6     # 0xc080
movsd 0x8d32(%rip), %xmm5     # 0xc070
movq 0x80(%rsp), %r10
movq 0x98(%rsp), %r9
movsd 0x30(%rsp), %xmm4
movsd 0x8(%rsp), %xmm3
movapd 0x20(%rsp), %xmm2
subsd %xmm0, %xmm2
movsd 0x8(%rbp), %xmm0
unpcklps %xmm5, %xmm0            # xmm0 = xmm0[0],xmm5[0],xmm0[1],xmm5[1]
subpd %xmm6, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
mulsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
movq %rcx, %rdx
subsd %xmm8, %xmm1
cvttsd2si %xmm1, %rax
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rcx, %rax
movb $0x1, %cl
testb %cl, %cl
je 0x33c8
cmpq (%rbp), %r12
jae 0x33c1
movq 0x8(%rbp), %rcx
cmpq %rcx, %rax
jae 0x33c1
imulq %r12, %rcx
addq %rax, %rcx
addq %rbp, %rcx
addq $0x10, %rcx
jmp 0x33c3
xorl %ecx, %ecx
testq %rcx, %rcx
jne 0x33d0
movq 0x20(%rbx), %rcx
addq $0x10, %rcx
movb (%rcx), %cl
imulq %r10, %r14
addq %r9, %r14
movb %cl, (%r15,%r14)
incq %r15
movq 0x18(%rbx), %r14
cmpq %r14, %r15
jb 0x3113
incq %r10
movq 0x10(%rbx), %rax
cmpq %rax, %r10
movq 0x68(%rsp), %r14
jb 0x2b4e
movq 0x60(%rsp), %rbp
cmpq %rbp, 0x68(%rbx)
jne 0x341c
movq 0x38(%rsp), %rax
cmpq %rax, 0x60(%rbx)
je 0x3884
cmpq %rbp, 0x58(%rbx)
jae 0x348f
movq %rbp, %rax
shrq $0x3c, %rax
jne 0x348b
movq %rbp, %rsi
shlq $0x4, %rsi
movq 0x50(%rbx), %rdi
callq 0x2470
testq %rax, %rax
je 0x348b
movq %rax, 0x50(%rbx)
movq %rbp, 0x58(%rbx)
jmp 0x348f
movq 0x18(%rbx), %rax
imulq 0x10(%rbx), %rax
testq %rax, %rax
je 0x3479
movq 0x20(%rbx), %rax
movb 0x10(%rax), %al
xorl %ecx, %ecx
movb %al, 0x80(%rbx,%rcx)
incq %rcx
movq 0x18(%rbx), %rdx
imulq 0x10(%rbx), %rdx
cmpq %rdx, %rcx
jb 0x3461
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x58(%rbx), %rbp
testq %rbp, %rbp
movsd 0x30(%rsp), %xmm2
je 0x34ec
movq 0x38(%rsp), %rax
leaq 0x8(%rax), %r14
movl $0x8, %r15d
xorl %r12d, %r12d
movq 0x50(%rbx), %r13
movsd -0x8(%r14), %xmm0
movsd (%r14), %xmm1
subsd %xmm2, %xmm0
subsd 0x8(%rsp), %xmm1
callq 0x21a0
movsd 0x30(%rsp), %xmm2
movsd %xmm0, -0x8(%r13,%r15)
movq %r12, (%r13,%r15)
incq %r12
addq $0x30, %r14
addq $0x10, %r15
cmpq %r12, %rbp
jne 0x34ac
movq 0x50(%rbx), %rdi
leaq 0x503(%rip), %rcx       # 0x39fa
movl $0x10, %edx
movq %rbp, %rsi
callq 0x2330
movq 0x38(%rsp), %rax
movq %rax, 0x60(%rbx)
movq %rbp, 0x68(%rbx)
movsd 0x8(%rsp), %xmm5
testq %rbp, %rbp
je 0x3479
xorpd %xmm6, %xmm6
decq %rbp
movq 0x50(%rbx), %rax
movq %rbp, 0x60(%rsp)
shlq $0x4, %rbp
movq 0x8(%rax,%rbp), %rdx
leaq (%rdx,%rdx,2), %r14
shlq $0x4, %r14
movq 0x38(%rsp), %rdx
ucomisd 0x10(%rdx,%r14), %xmm6
jae 0x3871
movsd (%rax,%rbp), %xmm2
ucomisd %xmm6, %xmm2
jne 0x3564
jnp 0x3871
addq 0x38(%rsp), %r14
ucomisd 0x18(%r14), %xmm6
jae 0x3871
movsd (%r14), %xmm1
movsd 0x8(%r14), %xmm0
subsd %xmm5, %xmm0
subsd 0x30(%rsp), %xmm1
movsd %xmm2, 0x10(%rsp)
callq 0x2050
movsd %xmm0, 0x20(%rsp)
movsd 0x10(%r14), %xmm0
divsd 0x10(%rsp), %xmm0
callq 0x21f0
movapd %xmm0, %xmm3
addsd %xmm0, %xmm3
movsd (%rbx), %xmm0
addsd %xmm3, %xmm0
mulsd 0x8a64(%rip), %xmm0     # 0xc028
movapd 0xb0(%rsp), %xmm4
subsd 0x20(%rsp), %xmm4
ucomisd 0x8a6d(%rip), %xmm4     # 0xc048
jbe 0x35e7
addsd 0x8a73(%rip), %xmm4     # 0xc058
jmp 0x3605
movsd 0x8a61(%rip), %xmm1     # 0xc050
ucomisd %xmm4, %xmm1
jbe 0x3605
movsd 0x8a5b(%rip), %xmm1     # 0xc058
subsd %xmm4, %xmm1
movapd %xmm1, %xmm4
movsd 0x8(%rsp), %xmm5
xorpd %xmm6, %xmm6
movsd 0x10(%rsp), %xmm2
movapd %xmm4, %xmm1
andpd 0x89ef(%rip), %xmm1     # 0xc010
ucomisd %xmm0, %xmm1
ja 0x3871
movsd 0x18(%r14), %xmm0
divsd %xmm2, %xmm0
movsd %xmm3, 0x20(%rsp)
movapd %xmm4, 0x40(%rsp)
callq 0x21f0
movapd 0x40(%rsp), %xmm13
movsd 0x20(%rsp), %xmm12
movsd 0x10(%rsp), %xmm11
movsd 0x89d4(%rip), %xmm10    # 0xc038
movapd 0x8a13(%rip), %xmm9     # 0xc080
movsd 0x89fa(%rip), %xmm8     # 0xc070
xorpd %xmm6, %xmm6
movsd 0x8(%rsp), %xmm5
movsd (%rbx), %xmm1
divsd %xmm1, %xmm12
movsd 0x10(%rbx), %xmm3
unpcklps %xmm8, %xmm3            # xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1]
subpd 0x89e6(%rip), %xmm3     # 0xc080
movapd %xmm3, %xmm2
unpckhpd %xmm3, %xmm2            # xmm2 = xmm2[1],xmm3[1]
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm12
ucomisd %xmm6, %xmm12
jbe 0x3871
addsd %xmm0, %xmm0
divsd 0x8(%rbx), %xmm0
movsd 0x18(%rbx), %xmm3
unpcklps %xmm8, %xmm3            # xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1]
subpd 0x89b0(%rip), %xmm3     # 0xc080
movapd %xmm3, %xmm4
unpckhpd %xmm3, %xmm4            # xmm4 = xmm4[1],xmm3[1]
addsd %xmm3, %xmm4
mulsd %xmm4, %xmm0
movapd %xmm2, %xmm3
subsd %xmm12, %xmm3
movsd 0x8937(%rip), %xmm7     # 0xc028
mulsd %xmm7, %xmm3
divsd %xmm1, %xmm13
mulsd %xmm2, %xmm13
addsd %xmm3, %xmm13
cvttsd2si %xmm13, %rax
subsd %xmm0, %xmm4
mulsd %xmm7, %xmm4
cvttsd2si %xmm4, %rcx
xorpd %xmm1, %xmm1
movq %rax, %rdx
xorl %esi, %esi
leaq (%rsi,%rax), %rdi
cmpq 0x10(%rbx), %rdi
jae 0x3845
movq 0x78(%rbx), %r8
ucomisd (%r8,%rdi,8), %xmm11
jae 0x3845
divsd %xmm12, %xmm1
movq 0x20(%r14), %rdi
movq (%rdi), %r8
movq %r8, %xmm2
punpckldq %xmm8, %xmm2    # xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1]
subpd %xmm9, %xmm2
movapd %xmm2, %xmm3
unpckhpd %xmm2, %xmm3            # xmm3 = xmm3[1],xmm2[1]
addsd %xmm2, %xmm3
mulsd %xmm1, %xmm3
cvttsd2si %xmm3, %r9
movq %r9, %r10
subsd %xmm10, %xmm3
cvttsd2si %xmm3, %rdi
sarq $0x3f, %r10
andq %r10, %rdi
orq %r9, %rdi
cmpq %rdi, %r8
jbe 0x3845
ucomisd %xmm6, %xmm0
jbe 0x3845
xorpd %xmm1, %xmm1
movl $0x1, %r8d
movq %rcx, %r9
movq 0x18(%rbx), %r10
cmpq %r10, %r9
jae 0x381a
divsd %xmm0, %xmm1
movq 0x20(%r14), %r11
movq 0x8(%r11), %r15
movq %r15, %xmm2
punpckldq %xmm8, %xmm2    # xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1]
subpd %xmm9, %xmm2
movapd %xmm2, %xmm3
unpckhpd %xmm2, %xmm3            # xmm3 = xmm3[1],xmm2[1]
addsd %xmm2, %xmm3
mulsd %xmm1, %xmm3
cvttsd2si %xmm3, %r13
movq %r13, %rbp
subsd %xmm10, %xmm3
cvttsd2si %xmm3, %r12
sarq $0x3f, %rbp
andq %rbp, %r12
orq %r13, %r12
cmpq %r12, %r15
jbe 0x381a
imulq %rdi, %r15
addq %r12, %r15
movb 0x10(%r11,%r15), %r11b
cmpb 0x28(%r14), %r11b
je 0x381a
imulq %rdx, %r10
addq %rbx, %r10
movb %r11b, 0x80(%r9,%r10)
movq %r8, %xmm2
punpckldq %xmm8, %xmm2    # xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1]
subpd %xmm9, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
incq %r8
incq %r9
ucomisd %xmm1, %xmm0
ja 0x37a4
incq %rsi
movq %rsi, %xmm2
punpckldq %xmm8, %xmm2    # xmm2 = xmm2[0],xmm8[0],xmm2[1],xmm8[1]
subpd %xmm9, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
incq %rdx
ucomisd %xmm1, %xmm12
ja 0x371f
movq 0x60(%rsp), %rbp
testq %rbp, %rbp
jne 0x3524
jmp 0x3479
testq %rbp, %rbp
movsd 0x8(%rsp), %xmm5
je 0x3517
movl $0x1, %r13d
movq $-0x10, %r15
xorl %r12d, %r12d
movq %r12, %rbp
sarq $0x3f, %rbp
andq %r12, %rbp
movq 0x50(%rbx), %rax
movq %r12, %rcx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %rax
movq %rax, 0x10(%rsp)
leaq (%rax,%rax,2), %rax
shlq $0x4, %rax
movq 0x38(%rsp), %rcx
movsd (%rcx,%rax), %xmm0
movsd 0x8(%rcx,%rax), %xmm1
subsd 0x30(%rsp), %xmm0
subsd %xmm5, %xmm1
callq 0x21a0
movq %r15, %rax
movq %r13, %r14
decq %r14
testq %r14, %r14
jle 0x3908
movq 0x50(%rbx), %rcx
ucomisd (%rcx,%rax), %xmm0
leaq -0x10(%rax), %rax
jb 0x38ef
jmp 0x390b
movq %rbp, %r14
movq 0x50(%rbx), %rsi
movq %r12, %rdx
subq %r14, %rdx
shlq $0x4, %r14
leaq (%rsi,%r14), %rdi
addq $0x10, %rdi
addq %r14, %rsi
shlq $0x4, %rdx
movsd %xmm0, 0x20(%rsp)
callq 0x22b0
movq 0x50(%rbx), %rax
movsd 0x20(%rsp), %xmm0
movsd %xmm0, (%rax,%r14)
movq 0x10(%rsp), %rcx
movq %rcx, 0x8(%rax,%r14)
incq %r12
incq %r13
addq $0x10, %r15
movq 0x60(%rsp), %rbp
cmpq %rbp, %r12
movsd 0x8(%rsp), %xmm5
jne 0x38a3
jmp 0x3517