// File: fiveseven-lambda[P]michaelis-menten/a.cpp
// Function: bezier(Vector<double>, Vector<double>, Vector<double>, double)
std::vector<XPoint> bezier(Vector<double> p1, Vector<double> p2, Vector<double> p3, double w){
	p1.x *= width;
	p1.y *= height;
	p2.x *= width;
	p2.y *= height;
	p3.x *= width;
	p3.y *= height;
	p1 -= p3;
	p2 -= p3;
	int n = std::max({p1.x - p2.x, p2.x - p1.x, p1.y - p2.y, p2.y - p1.y});
	std::vector<XPoint> ret(n * 2);
	for(int i = 0; i < n; ++i){
		double t = static_cast<double>(i) / (n - 1);
		Vector<double> p = (1 - t) * (1 - t) * p1 + t * t * p2;
		Vector<double> v = (t - 1) * p1 + t * p2;
		v *= w / v.abs();
		ret[i].x = p3.x + p.x - v.y;
		ret[i].y = p3.y + p.y + v.x;
		ret[n * 2 - i - 1].x = p3.x + p.x + v.y;
		ret[n * 2 - i - 1].y = p3.y + p.y - v.x;
	}
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movq %rdi, -0x180(%rbp)
movq %rdi, %rax
movq %rax, -0x190(%rbp)
movq %rdi, -0x8(%rbp)
movsd %xmm0, -0x18(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x28(%rbp)
movsd %xmm3, -0x20(%rbp)
movsd %xmm4, -0x38(%rbp)
movsd %xmm5, -0x30(%rbp)
movsd %xmm6, -0x40(%rbp)
cvtsi2sdl 0xdc85(%rip), %xmm1 # 0x101b0
movsd -0x18(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
cvtsi2sdl 0xdc73(%rip), %xmm1 # 0x101b4
movsd -0x10(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x10(%rbp)
cvtsi2sdl 0xdc59(%rip), %xmm1 # 0x101b0
movsd -0x28(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
cvtsi2sdl 0xdc47(%rip), %xmm1 # 0x101b4
movsd -0x20(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
cvtsi2sdl 0xdc2d(%rip), %xmm1 # 0x101b0
movsd -0x38(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
cvtsi2sdl 0xdc1b(%rip), %xmm1 # 0x101b4
movsd -0x30(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movq %rsi, -0x188(%rbp)
callq 0x5110
movq -0x188(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x5110
movsd -0x18(%rbp), %xmm0
movsd -0x28(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x28(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x10(%rbp), %xmm0
movsd -0x20(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x20(%rbp), %xmm0
movsd -0x10(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
leaq -0x78(%rbp), %rax
movq %rax, -0x58(%rbp)
movq $0x4, -0x50(%rbp)
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x5150
cvttsd2si %xmm0, %eax
movl %eax, -0x44(%rbp)
movb $0x0, -0x79(%rbp)
movl -0x44(%rbp), %eax
addl %eax, %eax
cltq
movq %rax, -0x178(%rbp)
leaq -0x7a(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0x5190
movq -0x180(%rbp), %rdi
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
callq 0x51b0
jmp 0x2679
leaq -0x7a(%rbp), %rdi
callq 0x5220
movl $0x0, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0x2adb
cvtsi2sdl -0x90(%rbp), %xmm0
movl -0x44(%rbp), %eax
decl %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd -0x98(%rbp), %xmm1
movsd 0x8940(%rip), %xmm0     # 0xb008
subsd %xmm1, %xmm0
mulsd %xmm0, %xmm0
movsd %xmm0, -0xc0(%rbp)
movups -0x18(%rbp), %xmm0
movaps %xmm0, -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd -0xc8(%rbp), %xmm1
leaq -0xc0(%rbp), %rdi
callq 0x5270
movsd %xmm1, -0x1a0(%rbp)
movsd %xmm0, -0x198(%rbp)
jmp 0x2711
movsd -0x1a0(%rbp), %xmm0
movsd -0x198(%rbp), %xmm1
movsd %xmm1, -0xb8(%rbp)
movsd %xmm0, -0xb0(%rbp)
movsd -0x98(%rbp), %xmm0
mulsd %xmm0, %xmm0
movsd %xmm0, -0xe8(%rbp)
movups -0x28(%rbp), %xmm0
movaps %xmm0, -0x100(%rbp)
movsd -0x100(%rbp), %xmm0
movsd -0xf8(%rbp), %xmm1
leaq -0xe8(%rbp), %rdi
callq 0x5270
movsd %xmm1, -0x1b0(%rbp)
movsd %xmm0, -0x1a8(%rbp)
jmp 0x277e
movsd -0x1b0(%rbp), %xmm0
movsd -0x1a8(%rbp), %xmm1
movsd %xmm1, -0xe0(%rbp)
movsd %xmm0, -0xd8(%rbp)
movsd -0xb8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
leaq -0xe0(%rbp), %rdi
callq 0x5230
movsd %xmm1, -0x1c0(%rbp)
movsd %xmm0, -0x1b8(%rbp)
jmp 0x27cc
movsd -0x1c0(%rbp), %xmm0
movsd -0x1b8(%rbp), %xmm1
movsd %xmm1, -0xa8(%rbp)
movsd %xmm0, -0xa0(%rbp)
movsd -0x98(%rbp), %xmm0
movsd 0x8814(%rip), %xmm1     # 0xb010
addsd %xmm1, %xmm0
movsd %xmm0, -0x128(%rbp)
movups -0x18(%rbp), %xmm0
movaps %xmm0, -0x140(%rbp)
movsd -0x140(%rbp), %xmm0
movsd -0x138(%rbp), %xmm1
leaq -0x128(%rbp), %rdi
callq 0x5270
movsd %xmm1, -0x1d0(%rbp)
movsd %xmm0, -0x1c8(%rbp)
jmp 0x2841
movsd -0x1d0(%rbp), %xmm0
movsd -0x1c8(%rbp), %xmm1
movsd %xmm1, -0x120(%rbp)
movsd %xmm0, -0x118(%rbp)
movups -0x28(%rbp), %xmm0
movaps %xmm0, -0x160(%rbp)
movsd -0x160(%rbp), %xmm0
movsd -0x158(%rbp), %xmm1
leaq -0x98(%rbp), %rdi
callq 0x5270
movsd %xmm1, -0x1e0(%rbp)
movsd %xmm0, -0x1d8(%rbp)
jmp 0x289a
movsd -0x1e0(%rbp), %xmm0
movsd -0x1d8(%rbp), %xmm1
movsd %xmm1, -0x150(%rbp)
movsd %xmm0, -0x148(%rbp)
movsd -0x120(%rbp), %xmm0
movsd -0x118(%rbp), %xmm1
leaq -0x150(%rbp), %rdi
callq 0x5230
movsd %xmm1, -0x1f0(%rbp)
movsd %xmm0, -0x1e8(%rbp)
jmp 0x28e8
movsd -0x1f0(%rbp), %xmm0
movsd -0x1e8(%rbp), %xmm1
movsd %xmm1, -0x110(%rbp)
movsd %xmm0, -0x108(%rbp)
movsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x200(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x52b0
movsd %xmm0, -0x1f8(%rbp)
jmp 0x292b
movsd -0x1f8(%rbp), %xmm1
movsd -0x200(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x168(%rbp)
leaq -0x110(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x52e0
jmp 0x295c
movq -0x180(%rbp), %rdi
movsd -0x38(%rbp), %xmm0
movsd -0xa8(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd -0x108(%rbp), %xmm1
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movw %ax, -0x208(%rbp)
movslq -0x90(%rbp), %rsi
callq 0x5320
movw -0x208(%rbp), %cx
movq -0x180(%rbp), %rdi
movw %cx, (%rax)
movsd -0x30(%rbp), %xmm0
movsd -0xa0(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd -0x110(%rbp), %xmm1
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movw %ax, -0x206(%rbp)
movslq -0x90(%rbp), %rsi
callq 0x5320
movw -0x206(%rbp), %cx
movq -0x180(%rbp), %rdi
movw %cx, 0x2(%rax)
movsd -0x38(%rbp), %xmm0
movsd -0xa8(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd -0x108(%rbp), %xmm1
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movw %ax, -0x204(%rbp)
movl -0x44(%rbp), %eax
movl -0x90(%rbp), %edx
movl %eax, %ecx
notl %edx
movl %edx, %eax
leal (%rax,%rcx,2), %eax
movslq %eax, %rsi
callq 0x5320
movw -0x204(%rbp), %cx
movq -0x180(%rbp), %rdi
movw %cx, (%rax)
movsd -0x30(%rbp), %xmm0
movsd -0xa0(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd -0x110(%rbp), %xmm1
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movw %ax, -0x202(%rbp)
movl -0x44(%rbp), %eax
shll %eax
subl -0x90(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x5320
movw -0x202(%rbp), %cx
movw %cx, 0x2(%rax)
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x268c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x7a(%rbp), %rdi
callq 0x5220
jmp 0x2b01
movq -0x180(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
callq 0x5340
jmp 0x2b01
movb $0x1, -0x79(%rbp)
testb $0x1, -0x79(%rbp)
jne 0x2af1
movq -0x180(%rbp), %rdi
callq 0x5340
movq -0x190(%rbp), %rax
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
movq -0x88(%rbp), %rdi
callq 0x22a0
nopl (%rax)