SOURCE_FILE
  FN
    FN_KW "fn"
    WHITESPACE " "
    NAME
      IDENT "foo"
    PARAM_LIST
      L_PAREN "("
      R_PAREN ")"
    WHITESPACE " "
    BLOCK_EXPR
      STMT_LIST
        L_CURLY "{"
        WHITESPACE "\n    "
        EXPR_STMT
          ASM_EXPR
            BUILTIN_KW "builtin"
            POUND "#"
            ASM_KW "asm"
            L_PAREN "("
            WHITESPACE "\n        "
            LITERAL
              STRING "\"mov {tmp}, {x}\""
            COMMA ","
            WHITESPACE "\n        "
            LITERAL
              STRING "\"shl {tmp}, 1\""
            COMMA ","
            WHITESPACE "\n        "
            LITERAL
              STRING "\"shl {x}, 2\""
            COMMA ","
            WHITESPACE "\n        "
            LITERAL
              STRING "\"add {x}, {tmp}\""
            COMMA ","
            WHITESPACE "\n        "
            ASM_OPERAND_NAMED
              NAME
                IDENT "x"
              WHITESPACE " "
              EQ "="
              WHITESPACE " "
              ASM_REG_OPERAND
                ASM_DIR_SPEC
                  INOUT_KW "inout"
                L_PAREN "("
                ASM_REG_SPEC
                  NAME_REF
                    IDENT "reg"
                R_PAREN ")"
                WHITESPACE " "
                ASM_OPERAND_EXPR
                  PATH_EXPR
                    PATH
                      PATH_SEGMENT
                        NAME_REF
                          IDENT "x"
            COMMA ","
            WHITESPACE "\n        "
            ASM_OPERAND_NAMED
              NAME
                IDENT "tmp"
              WHITESPACE " "
              EQ "="
              WHITESPACE " "
              ASM_REG_OPERAND
                ASM_DIR_SPEC
                  OUT_KW "out"
                L_PAREN "("
                ASM_REG_SPEC
                  NAME_REF
                    IDENT "reg"
                R_PAREN ")"
                WHITESPACE " "
                ASM_OPERAND_EXPR
                  UNDERSCORE_EXPR
                    UNDERSCORE "_"
            COMMA ","
            WHITESPACE "\n    "
            R_PAREN ")"
          SEMICOLON ";"
        WHITESPACE "\n"
        R_CURLY "}"
  WHITESPACE "\n"
