       true -> [:C_ARITHMETIC, [line]]
     end
   end
-
-  # def label(key, map) do
-  #   if Map.has_key?(map, key) do
-  #     {map, Map.get(map, key)}
-  #   else
-  #     count = Map.size(map)
-  #     new_label = "#{key}__#{count}"
-  #     {Map.update(map, key, new_label), new_label}
-  #   end
-  # end
-
-  @doc """
-  Generates a version 4 (random) UUID.
-  """
-  def generate do
-    bingenerate() |> encode
-  end
-
-  @doc """
-  Generates a version 4 (random) UUID in the binary format.
-  """
-  def bingenerate do
-    <<u0::48, _::4, u1::12, _::2, u2::62>> = :crypto.strong_rand_bytes(16)
-    <<u0::48, 4::4, u1::12, 2::2, u2::62>>
-  end
-
-  defp encode(<<u0::32, u1::16, u2::16, u3::16, u4::48>>) do
-    hex_pad(u0, 8) <> "-" <>
-    hex_pad(u1, 4) <> "-" <>
-    hex_pad(u2, 4) <> "-" <>
-    hex_pad(u3, 4) <> "-" <>
-    hex_pad(u4, 12)
-  end
-
-  defp hex_pad(hex, count) do
-    hex = Integer.to_string(hex, 16)
-    lower(hex, :binary.copy("0", count - byte_size(hex)))
-  end
-
-  defp lower(<<h, t::binary>>, acc) when h in ?A..?F,
-    do: lower(t, acc <> <<h + 32>>)
-  defp lower(<<h, t::binary>>, acc),
-    do: lower(t, acc <> <<h>>)
-  defp lower(<<>>, acc),
-    do: acc
   
   def get_top_item_on_stack(), do: ["@SP","M=M-1","A=M"]
   def increment_stack_pointer(), do: ["@SP","M=M+1"]

defmodule Translator do

  def file_binary(file_name) do

  end
  def translate_command([:C_ARITHMETIC, ["lt"]]) do
    # x is LT y if x-y is LT 0
    true_label = "IS_TRUE_#{UUID.generate()}"
    false_label = "IS_FALSE_#{UUID.generate()}"
    end_label = "END__#{UUID.generate()}"
    [get_top_item_on_stack(), # y
     "D=M",                   # and assign to D register
     get_top_item_on_stack(), # x
