// File: /workspace/github_c_makefile_star2_O3/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 $0xe8, %rsp
movq %rcx, 0x28(%rsp)
movq %rdi, %rbx
xorpd %xmm3, %xmm3
movapd %xmm0, 0x90(%rsp)
ucomisd %xmm3, %xmm0
jbe 0x34d8
ucomisd %xmm3, %xmm1
jbe 0x34d8
movq %rsi, %r12
movsd (%rsi), %xmm0
unpcklps 0x9572(%rip), %xmm0     # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x957a(%rip), %xmm0     # 0xc070
movapd %xmm0, %xmm3
unpckhpd %xmm0, %xmm3            # xmm3 = xmm3[1],xmm0[1]
addsd %xmm0, %xmm3
ucomisd 0x90(%rsp), %xmm3
jbe 0x34d8
movsd 0x8(%r12), %xmm0
unpcklps 0x9541(%rip), %xmm0     # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x9549(%rip), %xmm0     # 0xc070
movapd %xmm0, %xmm3
unpckhpd %xmm0, %xmm3            # xmm3 = xmm3[1],xmm0[1]
addsd %xmm0, %xmm3
ucomisd %xmm1, %xmm3
jbe 0x34d8
movq %rdx, 0x60(%rsp)
movapd %xmm1, 0xb0(%rsp)
movsd 0x95a5(%rip), %xmm1     # 0xc0f8
movapd %xmm2, %xmm0
callq 0x21c0
movsd 0x9594(%rip), %xmm3     # 0xc0f8
addsd %xmm0, %xmm3
xorpd %xmm2, %xmm2
movapd %xmm0, %xmm1
cmpltsd %xmm2, %xmm1
andpd %xmm1, %xmm3
andnpd %xmm0, %xmm1
orpd %xmm3, %xmm1
movapd %xmm1, 0xc0(%rsp)
movq 0x10(%rbx), %rax
testq %rax, %rax
je 0x3483
leaq 0x80(%rbx), %rdi
movapd 0x90(%rsp), %xmm0
unpcklpd 0xb0(%rsp), %xmm0       # xmm0 = xmm0[0],mem[0]
movapd %xmm0, 0xd0(%rsp)
xorl %r8d, %r8d
movsd 0x952c(%rip), %xmm5     # 0xc0f0
movq %rdi, 0x58(%rsp)
movq %r8, 0x68(%rsp)
movq %r8, %xmm0
movq 0x9485(%rip), %xmm2     # 0xc060
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movapd 0x9489(%rip), %xmm3     # 0xc070
subpd %xmm3, %xmm0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movq %rax, %xmm0
punpckldq %xmm2, %xmm0    # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
subpd %xmm3, %xmm0
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
addsd %xmm0, %xmm2
divsd %xmm2, %xmm1
movapd %xmm5, %xmm0
subsd %xmm1, %xmm0
mulsd (%rbx), %xmm0
addsd 0xc0(%rsp), %xmm0
movsd %xmm0, (%rsp)
callq 0x2190
movapd %xmm0, 0x10(%rsp)
movsd (%rsp), %xmm0
callq 0x2520
movapd 0x10(%rsp), %xmm4
xorpd %xmm2, %xmm2
unpcklpd %xmm0, %xmm4            # xmm4 = xmm4[0],xmm0[0]
mulpd 0x93c7(%rip), %xmm4     # 0xc020
movq (%r12), %rax
movq %rax, 0xa0(%rsp)
movapd %xmm4, %xmm5
unpckhpd %xmm4, %xmm5            # xmm5 = xmm5[1],xmm4[1]
movapd 0x90(%rsp), %xmm3
movapd 0xb0(%rsp), %xmm6
movapd %xmm4, 0x10(%rsp)
movapd %xmm5, 0x30(%rsp)
ucomisd %xmm4, %xmm2
movapd %xmm3, (%rsp)
movapd %xmm6, 0x40(%rsp)
jbe 0x2cd8
movapd %xmm3, %xmm0
callq 0x2480
movapd 0x40(%rsp), %xmm6
movapd 0x30(%rsp), %xmm5
movapd 0x10(%rsp), %xmm4
movapd (%rsp), %xmm3
xorpd %xmm2, %xmm2
movapd %xmm3, %xmm7
subsd %xmm0, %xmm7
xorpd 0x93b0(%rip), %xmm7     # 0xc080
movl $0x2, %r15d
jmp 0x2d17
movl $0x2, %r15d
xorpd %xmm7, %xmm7
ucomisd %xmm7, %xmm4
jbe 0x2d17
movapd %xmm3, %xmm0
callq 0x20b0
movapd 0x40(%rsp), %xmm6
movapd 0x30(%rsp), %xmm5
movapd 0x10(%rsp), %xmm4
movapd (%rsp), %xmm3
xorpd %xmm2, %xmm2
movapd %xmm0, %xmm7
subsd %xmm3, %xmm7
xorl %r15d, %r15d
ucomisd %xmm5, %xmm2
jbe 0x2d69
movapd %xmm6, %xmm0
movapd %xmm7, 0x70(%rsp)
callq 0x2480
movapd 0x70(%rsp), %xmm7
movapd 0x40(%rsp), %xmm6
movapd 0x30(%rsp), %xmm5
movapd 0x10(%rsp), %xmm4
movapd (%rsp), %xmm3
xorpd %xmm2, %xmm2
movapd %xmm0, %xmm1
movapd %xmm6, %xmm0
subsd %xmm1, %xmm0
xorpd 0x931f(%rip), %xmm0     # 0xc080
movl $0x3, %r14d
jmp 0x2db3
movl $0x3, %r14d
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm5
jbe 0x2db3
movapd %xmm6, %xmm0
movapd %xmm7, 0x70(%rsp)
callq 0x20b0
movapd 0x70(%rsp), %xmm7
movapd 0x40(%rsp), %xmm6
movapd 0x30(%rsp), %xmm5
movapd 0x10(%rsp), %xmm4
movapd (%rsp), %xmm3
xorpd %xmm2, %xmm2
subsd %xmm6, %xmm0
movl $0x1, %r14d
ucomisd %xmm2, %xmm4
jne 0x2dc5
jp 0x2dc5
movapd %xmm0, %xmm2
divsd %xmm5, %xmm2
jmp 0x2def
ucomisd %xmm2, %xmm5
movapd %xmm7, %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
divpd %xmm4, %xmm1
jne 0x2ddd
jnp 0x300a
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
ucomisd %xmm1, %xmm2
ja 0x300a
addsd %xmm0, %xmm6
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
unpcklpd %xmm6, %xmm2            # xmm2 = xmm2[0],xmm6[0]
movapd %xmm2, %xmm3
movapd %xmm3, (%rsp)
movapd %xmm3, %xmm0
callq 0x2480
movapd (%rsp), %xmm1
xorpd %xmm2, %xmm2
movapd 0x10(%rsp), %xmm3
ucomisd %xmm2, %xmm3
movapd %xmm0, 0x70(%rsp)
jbe 0x2e64
ucomisd %xmm2, %xmm1
jne 0x2e34
jnp 0x2e64
ucomisd %xmm1, %xmm0
jne 0x2e64
jp 0x2e64
cvttsd2si %xmm1, %rax
movq %rax, %rcx
movapd %xmm1, %xmm0
subsd 0x92b0(%rip), %xmm0     # 0xc100
cvttsd2si %xmm0, %r13
sarq $0x3f, %rcx
andq %rcx, %r13
orq %rax, %r13
decq %r13
jmp 0x2e83
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x9288(%rip), %xmm0     # 0xc100
cvttsd2si %xmm0, %r13
andq %rcx, %r13
orq %rax, %r13
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
movapd %xmm0, 0x40(%rsp)
callq 0x2480
movapd 0x40(%rsp), %xmm1
xorpd %xmm2, %xmm2
movapd 0x30(%rsp), %xmm5
ucomisd %xmm2, %xmm5
movq %r13, 0x88(%rsp)
jbe 0x2eec
ucomisd %xmm2, %xmm1
jne 0x2ebc
jnp 0x2eec
ucomisd %xmm1, %xmm0
jne 0x2eec
jp 0x2eec
cvttsd2si %xmm1, %rax
movq %rax, %rcx
movapd %xmm1, %xmm3
subsd 0x9228(%rip), %xmm3     # 0xc100
cvttsd2si %xmm3, %rdx
sarq $0x3f, %rcx
andq %rcx, %rdx
orq %rax, %rdx
decq %rdx
jmp 0x2f0f
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
movapd %xmm0, %xmm3
subsd 0x91fc(%rip), %xmm3     # 0xc100
cvttsd2si %xmm3, %rdx
andq %rcx, %rdx
orq %rax, %rdx
movq 0xa0(%rsp), %r8
movq %rdx, 0x80(%rsp)
cmpq %r8, %r13
movapd (%rsp), %xmm3
movapd 0x10(%rsp), %xmm4
jae 0x3022
movq 0x8(%r12), %rcx
cmpq %rcx, %rdx
jae 0x3022
movl %r14d, %esi
leaq 0x9195(%rip), %rax      # 0xc0e0
movl (%rax,%rsi,4), %eax
imulq %rcx, %r13
addq %rdx, %r13
movq 0x10(%r12,%r13,8), %rdx
movq (%rdx,%rsi,8), %rbp
testq %rbp, %rbp
jne 0x3031
movl $0x1, %edx
leaq 0x91b5(%rip), %rdi      # 0xc128
movslq (%rdi,%rsi,4), %rsi
addq %rdi, %rsi
jmpq *%rsi
movq $-0x1, %rdx
leaq 0x88(%rsp), %rsi
jmp 0x2f9c
movq $-0x1, %rdx
leaq 0x80(%rsp), %rsi
addq %rdx, (%rsi)
movq 0x88(%rsp), %rdx
cmpq %r8, %rdx
jae 0x3022
movq 0x80(%rsp), %rsi
cmpq %rcx, %rsi
jae 0x3022
imulq %rcx, %rdx
addq %rdx, %rsi
movq 0x10(%r12,%rsi,8), %rcx
movq (%rcx,%rax,8), %rbp
testq %rbp, %rbp
jne 0x302e
movapd %xmm4, %xmm6
movapd %xmm3, %xmm0
cmpl %r15d, %r14d
je 0x2fe3
movapd %xmm5, %xmm6
movapd %xmm1, %xmm0
andpd 0x9095(%rip), %xmm6     # 0xc080
orpd 0x90dd(%rip), %xmm6     # 0xc0d0
addsd %xmm0, %xmm6
jne 0x2c8b
movapd %xmm6, %xmm3
movapd %xmm1, %xmm6
jmp 0x2c8b
addsd %xmm7, %xmm3
mulsd %xmm5, %xmm1
addsd %xmm6, %xmm1
unpcklpd %xmm1, %xmm3            # xmm3 = xmm3[0],xmm1[0]
movl %r15d, %r14d
jmp 0x2e03
movapd %xmm0, 0x30(%rsp)
movq 0x20(%rbx), %rbp
jmp 0x303a
movl %r14d, %eax
movapd %xmm0, 0x30(%rsp)
movl %eax, %r14d
subpd 0xd0(%rsp), %xmm3
movapd %xmm3, %xmm1
unpckhpd %xmm3, %xmm1            # xmm1 = xmm1[1],xmm3[1]
movapd %xmm3, 0x10(%rsp)
movapd %xmm3, %xmm0
callq 0x21a0
movapd %xmm0, %xmm15
movq 0x78(%rbx), %rax
movq 0x68(%rsp), %r8
movsd %xmm0, (%rax,%r8,8)
cmpl $0x2, %r14d
movapd %xmm0, 0xa0(%rsp)
je 0x3103
cmpl $0x1, %r14d
xorpd %xmm4, %xmm4
movq 0x58(%rsp), %rdi
movsd 0x905a(%rip), %xmm5     # 0xc0f0
movsd 0x906a(%rip), %xmm7     # 0xc108
movdqa 0x8fe9(%rip), %xmm8     # 0xc090
movdqa 0x8ff0(%rip), %xmm9     # 0xc0a0
movdqa 0x8ff7(%rip), %xmm10    # 0xc0b0
movapd 0x8ffe(%rip), %xmm11    # 0xc0c0
movapd 0x8f45(%rip), %xmm12    # 0xc010
je 0x30ee
testl %r14d, %r14d
movapd (%rsp), %xmm0
jne 0x315f
movapd 0x40(%rsp), %xmm0
callq 0x20b0
subsd 0x40(%rsp), %xmm0
jmp 0x3169
movapd (%rsp), %xmm0
subsd 0x70(%rsp), %xmm0
movapd %xmm0, (%rsp)
jmp 0x31c3
movapd 0x40(%rsp), %xmm13
subsd 0x30(%rsp), %xmm13
movapd %xmm13, (%rsp)
xorpd %xmm4, %xmm4
movq 0x58(%rsp), %rdi
movsd 0x8fc8(%rip), %xmm5     # 0xc0f0
movsd 0x8fd8(%rip), %xmm7     # 0xc108
movdqa 0x8f57(%rip), %xmm8     # 0xc090
movdqa 0x8f5e(%rip), %xmm9     # 0xc0a0
movdqa 0x8f65(%rip), %xmm10    # 0xc0b0
movapd 0x8f6c(%rip), %xmm11    # 0xc0c0
movapd 0x8eb3(%rip), %xmm12    # 0xc010
jmp 0x31c3
callq 0x20b0
subsd (%rsp), %xmm0
movapd %xmm0, (%rsp)
xorpd %xmm4, %xmm4
movq 0x58(%rsp), %rdi
movq 0x68(%rsp), %r8
movsd 0x8f6c(%rip), %xmm5     # 0xc0f0
movsd 0x8f7c(%rip), %xmm7     # 0xc108
movdqa 0x8efb(%rip), %xmm8     # 0xc090
movdqa 0x8f02(%rip), %xmm9     # 0xc0a0
movdqa 0x8f09(%rip), %xmm10    # 0xc0b0
movapd 0x8f10(%rip), %xmm11    # 0xc0c0
movapd 0x8e57(%rip), %xmm12    # 0xc010
movapd 0xa0(%rsp), %xmm15
movq 0x18(%rbx), %r14
testq %r14, %r14
movsd 0x8f2e(%rip), %xmm6     # 0xc100
movapd 0x10(%rsp), %xmm14
je 0x3473
movapd %xmm15, %xmm0
unpcklpd %xmm15, %xmm0           # xmm0 = xmm0[0],xmm15[0]
divpd %xmm0, %xmm14
xorl %r15d, %r15d
movapd %xmm14, 0x10(%rsp)
movq 0x70(%rbx), %rax
movsd (%rax,%r15,8), %xmm1
movapd %xmm1, %xmm13
mulsd %xmm15, %xmm13
addsd %xmm5, %xmm13
ucomisd %xmm4, %xmm13
jbe 0x32dd
ucomisd %xmm13, %xmm7
jbe 0x32dd
movdqu (%rbp), %xmm1
movdqa %xmm1, %xmm2
pand %xmm8, %xmm2
por %xmm9, %xmm2
movdqa %xmm1, %xmm3
psrlq $0x20, %xmm3
por %xmm10, %xmm3
subpd %xmm11, %xmm3
addpd %xmm2, %xmm3
movapd %xmm7, %xmm2
subsd %xmm13, %xmm2
movapd (%rsp), %xmm0
unpcklpd %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0]
mulpd %xmm3, %xmm0
movq %rbp, %r13
movapd %xmm0, %xmm2
subsd %xmm6, %xmm2
cvttsd2si %xmm2, %rcx
cvttsd2si %xmm0, %rdx
movq %rdx, %rax
sarq $0x3f, %rax
andq %rcx, %rax
orq %rdx, %rax
movq %xmm1, %rcx
cmpq %rax, %rcx
jbe 0x344e
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
cvttsd2si %xmm0, %rdx
subsd %xmm6, %xmm0
cvttsd2si %xmm0, %rsi
movq %rdx, %rcx
sarq $0x3f, %rcx
andq %rsi, %rcx
orq %rdx, %rcx
pshufd $0xee, %xmm1, %xmm0     # xmm0 = xmm1[2,3,2,3]
movq %xmm0, %rdx
cmpq %rcx, %rdx
jbe 0x344e
imulq %rax, %rdx
addq %rcx, %rdx
leaq (%rdx,%r13), %rax
addq $0x10, %rax
jmp 0x3456
andpd %xmm12, %xmm1
movapd %xmm5, %xmm0
divsd %xmm1, %xmm0
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
mulpd %xmm14, %xmm0
addpd 0xd0(%rsp), %xmm0
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
movapd %xmm0, %xmm1
subsd %xmm6, %xmm1
cvttsd2si %xmm1, %rax
andq %rdx, %rax
orq %rcx, %rax
cmpq %rax, (%r12)
jbe 0x344e
movapd %xmm0, %xmm2
unpckhpd %xmm0, %xmm2            # xmm2 = xmm2[1],xmm0[1]
cvttsd2si %xmm2, %rdx
movq %rdx, %rsi
sarq $0x3f, %rsi
movapd %xmm2, %xmm1
subsd %xmm6, %xmm1
cvttsd2si %xmm1, %rcx
andq %rsi, %rcx
orq %rdx, %rcx
movq 0x8(%r12), %rdx
cmpq %rcx, %rdx
jbe 0x344e
imulq %rax, %rdx
addq %rcx, %rdx
ucomisd %xmm7, %xmm13
movq 0x10(%r12,%rdx,8), %rax
movl $0x0, %ecx
adcl $0x4, %ecx
movq (%rax,%rcx,8), %r13
testq %r13, %r13
je 0x344e
movapd %xmm0, 0x30(%rsp)
movapd %xmm2, 0x70(%rsp)
callq 0x2480
movapd %xmm0, 0x40(%rsp)
movapd 0x70(%rsp), %xmm0
callq 0x2480
movapd 0xa0(%rsp), %xmm15
movapd 0x10(%rsp), %xmm14
movapd 0x8c54(%rip), %xmm12    # 0xc010
movapd 0x8cfb(%rip), %xmm11    # 0xc0c0
movdqa 0x8ce2(%rip), %xmm10    # 0xc0b0
movdqa 0x8cc9(%rip), %xmm9     # 0xc0a0
movdqa 0x8cb0(%rip), %xmm8     # 0xc090
movsd 0x8d20(%rip), %xmm7     # 0xc108
movsd 0x8d10(%rip), %xmm6     # 0xc100
movsd 0x8cf8(%rip), %xmm5     # 0xc0f0
movq 0x68(%rsp), %r8
movq 0x58(%rsp), %rdi
xorpd %xmm4, %xmm4
movapd 0x40(%rsp), %xmm1
unpcklpd %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
movapd 0x30(%rsp), %xmm3
subpd %xmm1, %xmm3
movdqu (%r13), %xmm1
movdqa %xmm1, %xmm2
pand %xmm8, %xmm2
por %xmm9, %xmm2
movdqa %xmm1, %xmm0
psrlq $0x20, %xmm0
por %xmm10, %xmm0
subpd %xmm11, %xmm0
addpd %xmm2, %xmm0
mulpd %xmm3, %xmm0
jmp 0x326a
movq 0x20(%rbx), %rax
addq $0x10, %rax
movb (%rax), %al
imulq %r8, %r14
addq %rdi, %r14
movb %al, (%r15,%r14)
incq %r15
movq 0x18(%rbx), %r14
cmpq %r14, %r15
jb 0x31f8
incq %r8
movq 0x10(%rbx), %rax
cmpq %rax, %r8
jb 0x2bc9
movq 0x60(%rsp), %rdx
cmpq %rdx, 0x68(%rbx)
jne 0x349d
movq 0x28(%rsp), %rax
cmpq %rax, 0x60(%rbx)
je 0x3908
movq 0x58(%rbx), %rax
cmpq %rdx, %rax
jae 0x3519
movq %rdx, %rcx
shrq $0x3c, %rcx
jne 0x351c
movq %rdx, %rsi
shlq $0x4, %rsi
movq 0x50(%rbx), %rdi
movq %rdx, %r14
callq 0x2470
testq %rax, %rax
je 0x39ea
movq %rax, 0x50(%rbx)
movq %r14, 0x58(%rbx)
movq %r14, %rsi
jmp 0x3524
movq 0x18(%rbx), %rax
imulq 0x10(%rbx), %rax
testq %rax, %rax
je 0x3507
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 0x34ef
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rdx, %rax
movq %rax, %rsi
testq %rax, %rax
je 0x3580
movq 0x28(%rsp), %rax
leaq 0x8(%rax), %r14
movl $0x8, %r15d
xorl %r12d, %r12d
movq 0x50(%rbx), %r13
movsd -0x8(%r14), %xmm0
movsd (%r14), %xmm1
subsd 0x90(%rsp), %xmm0
subsd 0xb0(%rsp), %xmm1
movq %rsi, %rbp
callq 0x21a0
movq %rbp, %rsi
movsd %xmm0, -0x8(%r13,%r15)
movq %r12, (%r13,%r15)
incq %r12
addq $0x30, %r14
addq $0x10, %r15
cmpq %r12, %rbp
jne 0x3536
jmp 0x3582
xorl %esi, %esi
movq 0x50(%rbx), %rdi
leaq 0x4f0(%rip), %rcx       # 0x3a7d
movl $0x10, %edx
movq %rsi, %r14
callq 0x2330
movq %r14, %rcx
movq 0x28(%rsp), %rax
movq %rax, 0x60(%rbx)
movq %r14, 0x68(%rbx)
testq %r14, %r14
je 0x3507
xorpd %xmm5, %xmm5
decq %rcx
movq 0x50(%rbx), %rax
movq %rcx, 0x60(%rsp)
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %rdx
leaq (%rdx,%rdx,2), %r14
shlq $0x4, %r14
movq 0x28(%rsp), %rdx
ucomisd 0x10(%rdx,%r14), %xmm5
jae 0x38f5
movsd (%rax,%rcx), %xmm2
ucomisd %xmm5, %xmm2
jne 0x35f7
jnp 0x38f5
addq 0x28(%rsp), %r14
ucomisd 0x18(%r14), %xmm5
jae 0x38f5
movsd (%r14), %xmm1
movsd 0x8(%r14), %xmm0
subsd 0xb0(%rsp), %xmm0
subsd 0x90(%rsp), %xmm1
movsd %xmm2, (%rsp)
callq 0x2050
movsd %xmm0, 0x10(%rsp)
movsd 0x10(%r14), %xmm0
divsd (%rsp), %xmm0
callq 0x21f0
movapd %xmm0, %xmm3
addsd %xmm0, %xmm3
movsd (%rbx), %xmm0
addsd %xmm3, %xmm0
mulsd 0x8a93(%rip), %xmm0     # 0xc0f0
movapd 0xc0(%rsp), %xmm4
subsd 0x10(%rsp), %xmm4
ucomisd 0x8a9c(%rip), %xmm4     # 0xc110
jbe 0x3680
addsd 0x8aa2(%rip), %xmm4     # 0xc120
jmp 0x369e
movsd 0x8a90(%rip), %xmm1     # 0xc118
ucomisd %xmm4, %xmm1
jbe 0x369e
movsd 0x8a8a(%rip), %xmm1     # 0xc120
subsd %xmm4, %xmm1
movapd %xmm1, %xmm4
xorpd %xmm5, %xmm5
movsd (%rsp), %xmm2
movapd %xmm4, %xmm1
andpd 0x895d(%rip), %xmm1     # 0xc010
ucomisd %xmm0, %xmm1
ja 0x38f5
movsd 0x18(%r14), %xmm0
divsd %xmm2, %xmm0
movsd %xmm3, 0x10(%rsp)
movapd %xmm4, 0x30(%rsp)
callq 0x21f0
movapd 0x30(%rsp), %xmm12
movsd 0x10(%rsp), %xmm11
movsd (%rsp), %xmm10
movsd 0x8a0b(%rip), %xmm9     # 0xc100
movapd 0x8972(%rip), %xmm8     # 0xc070
movsd 0x895a(%rip), %xmm7     # 0xc060
xorpd %xmm5, %xmm5
movsd (%rbx), %xmm1
divsd %xmm1, %xmm11
movsd 0x10(%rbx), %xmm3
unpcklps %xmm7, %xmm3            # xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1]
subpd 0x894d(%rip), %xmm3     # 0xc070
movapd %xmm3, %xmm2
unpckhpd %xmm3, %xmm2            # xmm2 = xmm2[1],xmm3[1]
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm11
ucomisd %xmm5, %xmm11
jbe 0x38f5
addsd %xmm0, %xmm0
divsd 0x8(%rbx), %xmm0
movsd 0x18(%rbx), %xmm3
unpcklps %xmm7, %xmm3            # xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1]
subpd 0x8918(%rip), %xmm3     # 0xc070
movapd %xmm3, %xmm4
unpckhpd %xmm3, %xmm4            # xmm4 = xmm4[1],xmm3[1]
addsd %xmm3, %xmm4
mulsd %xmm4, %xmm0
movapd %xmm2, %xmm3
subsd %xmm11, %xmm3
movsd 0x8977(%rip), %xmm6     # 0xc0f0
mulsd %xmm6, %xmm3
divsd %xmm1, %xmm12
mulsd %xmm2, %xmm12
addsd %xmm3, %xmm12
cvttsd2si %xmm12, %rax
subsd %xmm0, %xmm4
mulsd %xmm6, %xmm4
cvttsd2si %xmm4, %rcx
xorpd %xmm1, %xmm1
movq %rax, %rdx
xorl %esi, %esi
leaq (%rsi,%rax), %rdi
cmpq 0x10(%rbx), %rdi
jae 0x38ca
movq 0x78(%rbx), %r8
ucomisd (%r8,%rdi,8), %xmm10
jae 0x38ca
divsd %xmm11, %xmm1
movq 0x20(%r14), %rdi
movq (%rdi), %r8
movq %r8, %xmm2
punpckldq %xmm7, %xmm2    # xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]
subpd %xmm8, %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 %xmm9, %xmm3
cvttsd2si %xmm3, %rdi
sarq $0x3f, %r10
andq %r10, %rdi
orq %r9, %rdi
cmpq %rdi, %r8
jbe 0x38ca
ucomisd %xmm5, %xmm0
jbe 0x38ca
xorpd %xmm1, %xmm1
movl $0x1, %r8d
movq %rcx, %r9
movq 0x18(%rbx), %r10
cmpq %r10, %r9
jae 0x38a0
divsd %xmm0, %xmm1
movq 0x20(%r14), %r11
movq 0x8(%r11), %r15
movq %r15, %xmm2
punpckldq %xmm7, %xmm2    # xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]
subpd %xmm8, %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 %xmm9, %xmm3
cvttsd2si %xmm3, %r12
sarq $0x3f, %rbp
andq %rbp, %r12
orq %r13, %r12
cmpq %r12, %r15
jbe 0x38a0
imulq %rdi, %r15
addq %r12, %r15
movb 0x10(%r11,%r15), %r11b
cmpb 0x28(%r14), %r11b
je 0x38a0
imulq %rdx, %r10
addq %rbx, %r10
movb %r11b, 0x80(%r9,%r10)
movq %r8, %xmm2
punpckldq %xmm7, %xmm2    # xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]
subpd %xmm8, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
incq %r8
incq %r9
ucomisd %xmm1, %xmm0
ja 0x382b
incq %rsi
movq %rsi, %xmm2
punpckldq %xmm7, %xmm2    # xmm2 = xmm2[0],xmm7[0],xmm2[1],xmm7[1]
subpd %xmm8, %xmm2
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
incq %rdx
ucomisd %xmm1, %xmm11
ja 0x37a7
movq 0x60(%rsp), %rcx
testq %rcx, %rcx
jne 0x35b7
jmp 0x3507
testq %rdx, %rdx
je 0x3507
movq 0x50(%rbx), %rax
movl $0x1, %r13d
movq $-0x10, %r15
xorl %r12d, %r12d
movq %r12, %rbp
sarq $0x3f, %rbp
andq %r12, %rbp
movq %r12, %rcx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %rax
movq %rax, (%rsp)
leaq (%rax,%rax,2), %rax
shlq $0x4, %rax
movq 0x28(%rsp), %rcx
movsd (%rcx,%rax), %xmm0
movsd 0x8(%rcx,%rax), %xmm1
subsd 0x90(%rsp), %xmm0
subsd 0xb0(%rsp), %xmm1
callq 0x21a0
movq 0x50(%rbx), %rsi
leaq (%rsi,%r15), %rax
movq %r13, %r14
decq %r14
testq %r14, %r14
jle 0x398d
ucomisd (%rax), %xmm0
leaq -0x10(%rax), %rax
jb 0x3979
jmp 0x3990
movq %rbp, %r14
movq %r12, %rdx
subq %r14, %rdx
shlq $0x4, %r14
leaq (%rsi,%r14), %rdi
addq $0x10, %rdi
addq %r14, %rsi
shlq $0x4, %rdx
movsd %xmm0, 0x10(%rsp)
callq 0x22b0
movq 0x50(%rbx), %rax
movsd 0x10(%rsp), %xmm0
movsd %xmm0, (%rax,%r14)
movq (%rsp), %rcx
movq %rcx, 0x8(%rax,%r14)
incq %r12
incq %r13
addq $0x10, %r15
movq 0x60(%rsp), %rcx
cmpq %rcx, %r12
jne 0x3925
jmp 0x35b3
movq 0x58(%rbx), %rax
jmp 0x351c