val sier = List(
  ArrayDef("mem", 30000),
  Assign("ptr", Num(15000)),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(8))),
  While(
    Bop("!=", Ref("mem", Var("ptr")), Num(0)),
    List(
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(4))),
      Assign("ptr", Aop("-", Var("ptr"), Num(2))),
      AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
      Skip
    )
  ),
  Assign("ptr", Aop("+", Var("ptr"), Num(1))),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))),
  Assign("ptr", Aop("+", Var("ptr"), Num(2))),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
  Assign("ptr", Aop("-", Var("ptr"), Num(1))),
  While(
    Bop("!=", Ref("mem", Var("ptr")), Num(0)),
    List(
      AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
      While(
        Bop("!=", Ref("mem", Var("ptr")), Num(0)),
        List(
          Assign("ptr", Aop("+", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
          Assign("ptr", Aop("-", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
          Skip
        )
      ),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      Assign("ptr", Aop("+", Var("ptr"), Num(2))),
      Skip
    )
  ),
  Assign("ptr", Aop("+", Var("ptr"), Num(1))),
  AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
  While(
    Bop("!=", Ref("mem", Var("ptr")), Num(0)),
    List(
      AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
      Assign("ptr", Aop("-", Var("ptr"), Num(3))),
      While(
        Bop("!=", Ref("mem", Var("ptr")), Num(0)),
        List(
          AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
          Assign("ptr", Aop("+", Var("ptr"), Num(1))),
          While(
            Bop("!=", Ref("mem", Var("ptr")), Num(0)),
            List(
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
              AssignA("mem", Var("ptr"), Num(0)),
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
              Assign("ptr", Aop("+", Var("ptr"), Num(1))),
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))),
              Assign("ptr", Aop("+", Var("ptr"), Num(3))),
              AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
              Assign("ptr", Aop("-", Var("ptr"), Num(2))),
              Skip
            )
          ),
          Assign("ptr", Aop("-", Var("ptr"), Num(1))),
          While(
            Bop("!=", Ref("mem", Var("ptr")), Num(0)),
            List(Assign("ptr", Aop("-", Var("ptr"), Num(1))), Skip)
          ),
          Assign("ptr", Aop("+", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(6))),
          While(
            Bop("!=", Ref("mem", Var("ptr")), Num(0)),
            List(
              Assign("ptr", Aop("-", Var("ptr"), Num(2))),
              AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(5))),
              Assign("ptr", Aop("+", Var("ptr"), Num(2))),
              AssignA("mem", Var("ptr"), Aop("-", Ref("mem", Var("ptr")), Num(1))),
              Skip
            )
          ),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
          Assign("ptr", Aop("-", Var("ptr"), Num(2))),
          AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(2))),
          Assign("x", Ref("mem", Var("ptr"))),
          Write("x"),
          AssignA("mem", Var("ptr"), Num(0)),
          Assign("ptr", Aop("-", Var("ptr"), Num(2))),
          Skip
        )
      ),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      Assign("x", Ref("mem", Var("ptr"))),
      Write("x"),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      While(
        Bop("!=", Ref("mem", Var("ptr")), Num(0)),
        List(Assign("ptr", Aop("+", Var("ptr"), Num(2))), Skip)
      ),
      Assign("ptr", Aop("+", Var("ptr"), Num(1))),
      AssignA("mem", Var("ptr"), Aop("+", Ref("mem", Var("ptr")), Num(1))),
      Skip
    )
  ),
  Skip
)