This document describes a simple compiler written in Scheme to compile a minimal functional language to x86 assembly. It discusses the key passes of the compiler including type inference, CPS transformation, closure conversion, generation of a low-level IR, register allocation, and machine code generation. While simple, the compiler demonstrates the major stages of a compiler from parsing and semantic analysis to code optimization and back-end code generation.