This commit is contained in:
NikolajDanger
2022-05-18 13:25:57 +02:00
parent 8e3427a843
commit f0fda0bcd7
11 changed files with 7155 additions and 920 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
.vscode
Fasto/bin/*
Fasto/obj/*

267
Fasto/Lexer.fs Normal file
View File

@ -0,0 +1,267 @@
# 18 "Lexer.fsl"
module Lexer
open System;;
open FSharp.Text.Lexing;;
open System.Text;;
(* A lexer definition for Fasto, for use with fslex. *)
(* boilerplate code for all lexer files... *)
let mutable currentLine = 1
let mutable lineStartPos = [0]
let rec getLineCol pos line = function
| (p1::ps) ->
if pos>=p1
then (line, pos-p1)
else getLineCol pos (line-1) ps
| [] -> (0,0) (* should not happen *)
let getPos (lexbuf : LexBuffer<'char>) =
getLineCol lexbuf.StartPos.pos_cnum
(currentLine)
(lineStartPos)
exception LexicalError of string * (int * int) (* (message, (line, column)) *)
let lexerError lexbuf s =
raise (LexicalError (s, getPos lexbuf))
(* This one is language specific, yet very common. Alternative would
be to encode every keyword as a regexp. This one is much easier.
Note that here we recognize specific keywords, and if none matches
then we assume we have found a user-defined identifier (last case).
*)
let keyword (s, pos) =
match s with
| "if" -> Parser.IF pos
| "then" -> Parser.THEN pos
| "else" -> Parser.ELSE pos
| "let" -> Parser.LET pos
| "in" -> Parser.IN pos
| "int" -> Parser.INT pos
| "bool" -> Parser.BOOL pos
| "char" -> Parser.CHAR pos
| "fun" -> Parser.FUN pos
| "fn" -> Parser.FN pos
| "op" -> Parser.OP pos
(* specials: *)
| "iota" -> Parser.IOTA pos
| "map" -> Parser.MAP pos
| "reduce" -> Parser.REDUCE pos
| "read" -> Parser.READ pos
| "write" -> Parser.WRITE pos
| _ -> Parser.ID (s, pos)
# 60 "Lexer.fs"
let trans : uint16[] array =
[|
(* State 0 *)
[|21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 1us; 2us; 21us; 2us; 1us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 1us; 21us; 8us; 21us; 21us; 21us; 21us; 7us; 13us; 14us; 21us; 9us; 19us; 10us; 21us; 3us; 4us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 5us; 21us; 21us; 12us; 11us; 21us; 21us; 21us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 15us; 21us; 16us; 21us; 21us; 21us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 6us; 17us; 21us; 18us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 21us; 20us; |];
(* State 1 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 2 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 3 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 32us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 4 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 5 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 6 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 30us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 7 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 27us; 65535us; 27us; 27us; 27us; 27us; 65535us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 28us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 8 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 25us; 24us; 25us; 25us; 25us; 25us; 65535us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 26us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 9 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 10 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 11 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 23us; 22us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 12 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 13 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 14 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 15 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 16 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 17 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 18 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 19 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 20 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 21 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 22 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 23 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 24 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 25 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 25us; 24us; 25us; 25us; 25us; 25us; 65535us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 26us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 26 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 25us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 27 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 29us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 28 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 27us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 29 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 30 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 30us; 65535us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 30us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 31 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 31us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
(* State 32 *)
[|33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; 33us; 65535us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; |];
(* State 33 *)
[|33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; 33us; 65535us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 33us; 65535us; |];
(* State 34 *)
[|65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 34us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; 65535us; |];
|]
let actions : uint16[] = [|65535us; 0us; 1us; 21us; 3us; 3us; 4us; 21us; 21us; 7us; 8us; 11us; 12us; 13us; 14us; 15us; 16us; 17us; 18us; 19us; 20us; 21us; 9us; 10us; 6us; 65535us; 65535us; 65535us; 65535us; 5us; 4us; 3us; 2us; 2us; 0us; |]
let _fslex_tables = FSharp.Text.Lexing.AsciiTables.Create(trans,actions)
let rec _fslex_dummy () = _fslex_dummy()
// Rule Token
and Token lexbuf =
match _fslex_tables.Interpret(0,lexbuf) with
| 0 -> (
# 78 "Lexer.fsl"
Token lexbuf
# 143 "Lexer.fs"
)
| 1 -> (
# 79 "Lexer.fsl"
currentLine <- currentLine + 1;
lineStartPos <- lexbuf.StartPos.pos_cnum
:: lineStartPos;
Token lexbuf
# 151 "Lexer.fs"
)
| 2 -> (
# 83 "Lexer.fsl"
Token lexbuf
# 156 "Lexer.fs"
)
| 3 -> (
# 85 "Lexer.fsl"
Parser.NUM
( int (Encoding.UTF8.GetString(lexbuf.Lexeme))
, getPos lexbuf )
# 164 "Lexer.fs"
)
| 4 -> (
# 90 "Lexer.fsl"
keyword ( Encoding.UTF8.GetString(lexbuf.Lexeme)
, getPos lexbuf )
# 170 "Lexer.fs"
)
| 5 -> (
# 93 "Lexer.fsl"
let str0 = Encoding.UTF8.GetString(lexbuf.Lexeme)
let str1 = str0.Substring (1, (String.length str0) - 2)
let str2 = AbSyn.fromCString str1
Parser.CHARLIT (str2.Chars(0), getPos lexbuf)
# 179 "Lexer.fs"
)
| 6 -> (
# 99 "Lexer.fsl"
let str0 = Encoding.UTF8.GetString(lexbuf.Lexeme)
let str1 = str0.Substring (1, (String.length str0) - 2)
Parser.STRINGLIT (AbSyn.fromCString str1, getPos lexbuf)
# 188 "Lexer.fs"
)
| 7 -> (
# 104 "Lexer.fsl"
Parser.PLUS (getPos lexbuf)
# 193 "Lexer.fs"
)
| 8 -> (
# 105 "Lexer.fsl"
Parser.MINUS (getPos lexbuf)
# 198 "Lexer.fs"
)
| 9 -> (
# 106 "Lexer.fsl"
Parser.ARROW (getPos lexbuf)
# 203 "Lexer.fs"
)
| 10 -> (
# 107 "Lexer.fsl"
Parser.DEQ (getPos lexbuf)
# 208 "Lexer.fs"
)
| 11 -> (
# 108 "Lexer.fsl"
Parser.EQ (getPos lexbuf)
# 213 "Lexer.fs"
)
| 12 -> (
# 109 "Lexer.fsl"
Parser.LTH (getPos lexbuf)
# 218 "Lexer.fs"
)
| 13 -> (
# 110 "Lexer.fsl"
Parser.LPAR (getPos lexbuf)
# 223 "Lexer.fs"
)
| 14 -> (
# 111 "Lexer.fsl"
Parser.RPAR (getPos lexbuf)
# 228 "Lexer.fs"
)
| 15 -> (
# 112 "Lexer.fsl"
Parser.LBRACKET (getPos lexbuf)
# 233 "Lexer.fs"
)
| 16 -> (
# 113 "Lexer.fsl"
Parser.RBRACKET (getPos lexbuf)
# 238 "Lexer.fs"
)
| 17 -> (
# 114 "Lexer.fsl"
Parser.LCURLY (getPos lexbuf)
# 243 "Lexer.fs"
)
| 18 -> (
# 115 "Lexer.fsl"
Parser.RCURLY (getPos lexbuf)
# 248 "Lexer.fs"
)
| 19 -> (
# 116 "Lexer.fsl"
Parser.COMMA (getPos lexbuf)
# 253 "Lexer.fs"
)
| 20 -> (
# 117 "Lexer.fsl"
Parser.EOF (getPos lexbuf)
# 258 "Lexer.fs"
)
| 21 -> (
# 118 "Lexer.fsl"
lexerError lexbuf "Illegal symbol in input"
# 263 "Lexer.fs"
)
| _ -> failwith "Token"
# 3000000 "Lexer.fs"

887
Fasto/Parser.fs Normal file

File diff suppressed because one or more lines are too long

101
Fasto/Parser.fsi Normal file
View File

@ -0,0 +1,101 @@
// Signature file for parser generated by fsyacc
module Parser
type token =
| LPAR of (Position)
| RPAR of (Position)
| LBRACKET of (Position)
| RBRACKET of (Position)
| LCURLY of (Position)
| RCURLY of (Position)
| FUN of (Position)
| FN of (Position)
| COMMA of (Position)
| SEMICOLON of (Position)
| READ of (Position)
| WRITE of (Position)
| DEQ of (Position)
| LTH of (Position)
| EQ of (Position)
| OP of (Position)
| MAP of (Position)
| REDUCE of (Position)
| IOTA of (Position)
| ARROW of (Position)
| PLUS of (Position)
| MINUS of (Position)
| LESS of (Position)
| INT of (Position)
| CHAR of (Position)
| BOOL of (Position)
| IF of (Position)
| THEN of (Position)
| ELSE of (Position)
| LET of (Position)
| IN of (Position)
| EOF of (Position)
| ID of (string * Position)
| STRINGLIT of (string * Position)
| CHARLIT of (char * Position)
| NUM of (int * Position)
type tokenId =
| TOKEN_LPAR
| TOKEN_RPAR
| TOKEN_LBRACKET
| TOKEN_RBRACKET
| TOKEN_LCURLY
| TOKEN_RCURLY
| TOKEN_FUN
| TOKEN_FN
| TOKEN_COMMA
| TOKEN_SEMICOLON
| TOKEN_READ
| TOKEN_WRITE
| TOKEN_DEQ
| TOKEN_LTH
| TOKEN_EQ
| TOKEN_OP
| TOKEN_MAP
| TOKEN_REDUCE
| TOKEN_IOTA
| TOKEN_ARROW
| TOKEN_PLUS
| TOKEN_MINUS
| TOKEN_LESS
| TOKEN_INT
| TOKEN_CHAR
| TOKEN_BOOL
| TOKEN_IF
| TOKEN_THEN
| TOKEN_ELSE
| TOKEN_LET
| TOKEN_IN
| TOKEN_EOF
| TOKEN_ID
| TOKEN_STRINGLIT
| TOKEN_CHARLIT
| TOKEN_NUM
| TOKEN_end_of_input
| TOKEN_error
type nonTerminalId =
| NONTERM__startProg
| NONTERM_Prog
| NONTERM_FunDecs
| NONTERM_Fun
| NONTERM_Type
| NONTERM_Params
| NONTERM_BinOp
| NONTERM_Exp
| NONTERM_Exps
| NONTERM_FunArg
/// This function maps tokens to integer indexes
val tagOfToken: token -> int
/// This function maps integer indexes to symbolic token ids
val tokenTagToTokenId: int -> tokenId
/// This function maps production indexes returned in syntax errors to strings representing the non terminal that would be produced by that production
val prodIdxToNonTerminal: int -> nonTerminalId
/// This function gets the name of a token as a string
val token_to_string: token -> string
val Prog : (FSharp.Text.Lexing.LexBuffer<'cty> -> token) -> FSharp.Text.Lexing.LexBuffer<'cty> -> (AbSyn.UntypedProg)

4640
Fasto/Parser.fsyacc.output Normal file

File diff suppressed because it is too large Load Diff

View File

@ -17,189 +17,316 @@
_stop_:
ori $2, $0, 10
syscall
# Function main
main:
# Function plus5
plus5:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_1_,$2,0
# ori _plus_L_3_,_param_x_1_,0
ori $3, $0, 5
# was: ori _plus_R_4_, $0, 5
add $2, $2, $3
# was: add _plus5res_2_, _plus_L_3_, _plus_R_4_
# ori $2,_plus5res_2_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function mul2
mul2:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_5_,$2,0
ori $3, $2, 0
# was: ori _plus_L_7_, _param_x_5_, 0
# ori _plus_R_8_,_param_x_5_,0
add $2, $3, $2
# was: add _mul2res_6_, _plus_L_7_, _plus_R_8_
# ori $2,_mul2res_6_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function testcomp
testcomp:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_9_,$2,0
# ori _arg_12_,_param_x_9_,0
# ori $2,_arg_12_,0
jal write_int_arr
# was: jal write_int_arr, $2
# ori _arg_11_,$2,0
# ori $2,_arg_11_,0
jal write_int_arr
# was: jal write_int_arr, $2
# ori _testcompres_10_,$2,0
# ori $2,_testcompres_10_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function write_int
write_int:
sw $31, -4($29)
sw $16, -8($29)
addi $29, $29, -12
# ori _param_x_13_,$2,0
ori $16, $2, 0
# was: ori _tmp_15_, _param_x_13_, 0
# ori _write_intres_14_,_tmp_15_,0
ori $2, $16, 0
# was: ori $2, _write_intres_14_, 0
jal putint
# was: jal putint, $2
ori $2, $16, 0
# was: ori $2, _write_intres_14_, 0
addi $29, $29, 12
lw $16, -8($29)
lw $31, -4($29)
jr $31
# Function write_int_arr
write_int_arr:
sw $31, -4($29)
sw $21, -28($29)
sw $20, -24($29)
sw $19, -20($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -32
addi $29, $29, -28
# ori _param_x_16_,$2,0
# ori _arr_reg_19_,_param_x_16_,0
lw $16, 0($2)
# was: lw _size_reg_18_, 0(_arr_reg_19_)
ori $17, $28, 0
# was: ori _write_int_arrres_17_, $28, 0
sll $3, $16, 2
# was: sll _tmp_28_, _size_reg_18_, 2
addi $3, $3, 4
# was: addi _tmp_28_, _tmp_28_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_28_
sw $16, 0($17)
# was: sw _size_reg_18_, 0(_write_int_arrres_17_)
addi $18, $17, 4
# was: addi _addr_reg_22_, _write_int_arrres_17_, 4
ori $19, $0, 0
# was: ori _i_reg_23_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_20_, _arr_reg_19_, 4
_loop_beg_24_:
sub $2, $19, $16
# was: sub _tmp_reg_26_, _i_reg_23_, _size_reg_18_
bgez $2, _loop_end_25_
# was: bgez _tmp_reg_26_, _loop_end_25_
lw $2, 0($20)
# was: lw _res_reg_21_, 0(_elem_reg_20_)
addi $20, $20, 4
# was: addi _elem_reg_20_, _elem_reg_20_, 4
# ori $2,_res_reg_21_,0
jal write_int
# was: jal write_int, $2
# ori _tmp_reg_27_,$2,0
# ori _res_reg_21_,_tmp_reg_27_,0
sw $2, 0($18)
# was: sw _res_reg_21_, 0(_addr_reg_22_)
addi $18, $18, 4
# was: addi _addr_reg_22_, _addr_reg_22_, 4
addi $19, $19, 1
# was: addi _i_reg_23_, _i_reg_23_, 1
j _loop_beg_24_
_loop_end_25_:
ori $2, $17, 0
# was: ori $2, _write_int_arrres_17_, 0
addi $29, $29, 28
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)
lw $17, -12($29)
lw $16, -8($29)
lw $31, -4($29)
jr $31
# Function boo
boo:
sw $31, -4($29)
sw $20, -24($29)
sw $19, -20($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -28
# ori _param_a_29_,$2,0
ori $4, $0, 5
# was: ori _plus_L_33_, $0, 5
ori $3, $0, 3
# was: ori _plus_R_34_, $0, 3
add $0, $4, $3
# was: add _letBind_32_, _plus_L_33_, _plus_R_34_
# ori _arr_reg_36_,_param_a_29_,0
lw $17, 0($2)
# was: lw _size_reg_35_, 0(_arr_reg_36_)
ori $16, $28, 0
# was: ori _letBind_31_, $28, 0
sll $3, $17, 2
# was: sll _tmp_45_, _size_reg_35_, 2
addi $3, $3, 4
# was: addi _tmp_45_, _tmp_45_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_45_
sw $17, 0($16)
# was: sw _size_reg_35_, 0(_letBind_31_)
addi $18, $16, 4
# was: addi _addr_reg_39_, _letBind_31_, 4
ori $19, $0, 0
# was: ori _i_reg_40_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_37_, _arr_reg_36_, 4
_loop_beg_41_:
sub $2, $19, $17
# was: sub _tmp_reg_43_, _i_reg_40_, _size_reg_35_
bgez $2, _loop_end_42_
# was: bgez _tmp_reg_43_, _loop_end_42_
lw $2, 0($20)
# was: lw _res_reg_38_, 0(_elem_reg_37_)
addi $20, $20, 4
# was: addi _elem_reg_37_, _elem_reg_37_, 4
# ori $2,_res_reg_38_,0
jal plus5
# was: jal plus5, $2
# ori _tmp_reg_44_,$2,0
# ori _res_reg_38_,_tmp_reg_44_,0
sw $2, 0($18)
# was: sw _res_reg_38_, 0(_addr_reg_39_)
addi $18, $18, 4
# was: addi _addr_reg_39_, _addr_reg_39_, 4
addi $19, $19, 1
# was: addi _i_reg_40_, _i_reg_40_, 1
j _loop_beg_41_
_loop_end_42_:
ori $2, $16, 0
# was: ori _boores_30_, _letBind_31_, 0
# ori $2,_boores_30_,0
addi $29, $29, 28
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)
lw $17, -12($29)
lw $16, -8($29)
lw $31, -4($29)
jr $31
# Function main
main:
sw $31, -4($29)
sw $20, -24($29)
sw $19, -20($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -28
jal getint
# was: jal getint, $2
# ori _letBind_2_,$2,0
# ori _size_reg_4_,_letBind_2_,0
bgez $2, _safe_lab_5_
# was: bgez _size_reg_4_, _safe_lab_5_
ori $3, $2, 0
# was: ori _letBind_47_, $2, 0
# ori _size_reg_49_,_letBind_47_,0
bgez $3, _safe_lab_50_
# was: bgez _size_reg_49_, _safe_lab_50_
ori $5, $0, 15
# was: ori $5, $0, 15
la $6, _Msg_IllegalArraySize_
# was: la $6, _Msg_IllegalArraySize_
j _RuntimeError_
_safe_lab_5_:
ori $3, $28, 0
# was: ori _letBind_3_, $28, 0
sll $4, $2, 2
# was: sll _tmp_11_, _size_reg_4_, 2
_safe_lab_50_:
ori $2, $28, 0
# was: ori _letBind_48_, $28, 0
sll $4, $3, 2
# was: sll _tmp_56_, _size_reg_49_, 2
addi $4, $4, 4
# was: addi _tmp_11_, _tmp_11_, 4
# was: addi _tmp_56_, _tmp_56_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_11_
sw $2, 0($3)
# was: sw _size_reg_4_, 0(_letBind_3_)
addi $6, $3, 4
# was: addi _addr_reg_6_, _letBind_3_, 4
ori $5, $0, 0
# was: ori _i_reg_7_, $0, 0
_loop_beg_8_:
sub $4, $5, $2
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
bgez $4, _loop_end_9_
# was: bgez _tmp_reg_10_, _loop_end_9_
sw $5, 0($6)
# was: sw _i_reg_7_, 0(_addr_reg_6_)
addi $6, $6, 4
# was: addi _addr_reg_6_, _addr_reg_6_, 4
addi $5, $5, 1
# was: addi _i_reg_7_, _i_reg_7_, 1
j _loop_beg_8_
_loop_end_9_:
ori $2, $3, 0
# was: ori _arr_reg_14_, _letBind_3_, 0
lw $4, 0($2)
# was: lw _size_reg_13_, 0(_arr_reg_14_)
ori $6, $28, 0
# was: ori _letBind_12_, $28, 0
sll $3, $4, 2
# was: sll _tmp_25_, _size_reg_13_, 2
addi $3, $3, 4
# was: addi _tmp_25_, _tmp_25_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_25_
sw $4, 0($6)
# was: sw _size_reg_13_, 0(_letBind_12_)
addi $3, $6, 4
# was: addi _addr_reg_17_, _letBind_12_, 4
ori $5, $0, 0
# was: ori _i_reg_18_, $0, 0
addi $7, $2, 4
# was: addi _elem_reg_15_, _arr_reg_14_, 4
_loop_beg_19_:
sub $2, $5, $4
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_
bgez $2, _loop_end_20_
# was: bgez _tmp_reg_21_, _loop_end_20_
lw $2, 0($7)
# was: lw _res_reg_16_, 0(_elem_reg_15_)
addi $7, $7, 4
# was: addi _elem_reg_15_, _elem_reg_15_, 4
ori $8, $2, 0
# was: ori _plus_L_23_, _res_reg_16_, 0
ori $2, $0, 5
# was: ori _plus_R_24_, $0, 5
add $2, $8, $2
# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_
# ori _res_reg_16_,_fun_arg_res_22_,0
sw $2, 0($3)
# was: sw _res_reg_16_, 0(_addr_reg_17_)
addi $3, $3, 4
# was: addi _addr_reg_17_, _addr_reg_17_, 4
addi $5, $5, 1
# was: addi _i_reg_18_, _i_reg_18_, 1
j _loop_beg_19_
_loop_end_20_:
ori $2, $6, 0
# was: ori _arr_reg_28_, _letBind_12_, 0
lw $4, 0($2)
# was: lw _size_reg_27_, 0(_arr_reg_28_)
ori $5, $28, 0
# was: ori _letBind_26_, $28, 0
sll $3, $4, 2
# was: sll _tmp_39_, _size_reg_27_, 2
addi $3, $3, 4
# was: addi _tmp_39_, _tmp_39_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_39_
sw $4, 0($5)
# was: sw _size_reg_27_, 0(_letBind_26_)
addi $3, $5, 4
# was: addi _addr_reg_31_, _letBind_26_, 4
# was: add $28, $28, _tmp_56_
sw $3, 0($2)
# was: sw _size_reg_49_, 0(_letBind_48_)
addi $5, $2, 4
# was: addi _addr_reg_51_, _letBind_48_, 4
ori $6, $0, 0
# was: ori _i_reg_32_, $0, 0
addi $7, $2, 4
# was: addi _elem_reg_29_, _arr_reg_28_, 4
_loop_beg_33_:
sub $2, $6, $4
# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_
bgez $2, _loop_end_34_
# was: bgez _tmp_reg_35_, _loop_end_34_
lw $2, 0($7)
# was: lw _res_reg_30_, 0(_elem_reg_29_)
addi $7, $7, 4
# was: addi _elem_reg_29_, _elem_reg_29_, 4
ori $8, $2, 0
# was: ori _plus_L_37_, _res_reg_30_, 0
# ori _plus_R_38_,_res_reg_30_,0
add $2, $8, $2
# was: add _fun_arg_res_36_, _plus_L_37_, _plus_R_38_
# ori _res_reg_30_,_fun_arg_res_36_,0
sw $2, 0($3)
# was: sw _res_reg_30_, 0(_addr_reg_31_)
addi $3, $3, 4
# was: addi _addr_reg_31_, _addr_reg_31_, 4
# was: ori _i_reg_52_, $0, 0
_loop_beg_53_:
sub $4, $6, $3
# was: sub _tmp_reg_55_, _i_reg_52_, _size_reg_49_
bgez $4, _loop_end_54_
# was: bgez _tmp_reg_55_, _loop_end_54_
sw $6, 0($5)
# was: sw _i_reg_52_, 0(_addr_reg_51_)
addi $5, $5, 4
# was: addi _addr_reg_51_, _addr_reg_51_, 4
addi $6, $6, 1
# was: addi _i_reg_32_, _i_reg_32_, 1
j _loop_beg_33_
_loop_end_34_:
# ori _arr_reg_41_,_letBind_26_,0
lw $16, 0($5)
# was: lw _size_reg_40_, 0(_arr_reg_41_)
# was: addi _i_reg_52_, _i_reg_52_, 1
j _loop_beg_53_
_loop_end_54_:
# ori _plus_L_59_,_letBind_47_,0
ori $4, $3, 0
# was: ori _plus_R_60_, _letBind_47_, 0
add $0, $3, $4
# was: add _letBind_58_, _plus_L_59_, _plus_R_60_
ori $4, $3, 0
# was: ori _plus_L_63_, _letBind_47_, 0
# ori _plus_R_64_,_letBind_47_,0
add $4, $4, $3
# was: add _plus_L_61_, _plus_L_63_, _plus_R_64_
# ori _plus_R_62_,_letBind_47_,0
add $0, $4, $3
# was: add _letBind_57_, _plus_L_61_, _plus_R_62_
# ori _arg_66_,_letBind_48_,0
# ori $2,_arg_66_,0
jal boo
# was: jal boo, $2
# ori _letBind_65_,$2,0
# ori _arr_reg_69_,_letBind_65_,0
lw $16, 0($2)
# was: lw _size_reg_68_, 0(_arr_reg_69_)
ori $17, $28, 0
# was: ori _mainres_1_, $28, 0
sll $2, $16, 2
# was: sll _tmp_51_, _size_reg_40_, 2
addi $2, $2, 4
# was: addi _tmp_51_, _tmp_51_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_51_
# was: ori _letBind_67_, $28, 0
sll $3, $16, 2
# was: sll _tmp_78_, _size_reg_68_, 2
addi $3, $3, 4
# was: addi _tmp_78_, _tmp_78_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_78_
sw $16, 0($17)
# was: sw _size_reg_40_, 0(_mainres_1_)
# was: sw _size_reg_68_, 0(_letBind_67_)
addi $18, $17, 4
# was: addi _addr_reg_44_, _mainres_1_, 4
# was: addi _addr_reg_72_, _letBind_67_, 4
ori $19, $0, 0
# was: ori _i_reg_45_, $0, 0
addi $20, $5, 4
# was: addi _elem_reg_42_, _arr_reg_41_, 4
_loop_beg_46_:
# was: ori _i_reg_73_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_70_, _arr_reg_69_, 4
_loop_beg_74_:
sub $2, $19, $16
# was: sub _tmp_reg_48_, _i_reg_45_, _size_reg_40_
bgez $2, _loop_end_47_
# was: bgez _tmp_reg_48_, _loop_end_47_
lw $21, 0($20)
# was: lw _res_reg_43_, 0(_elem_reg_42_)
# was: sub _tmp_reg_76_, _i_reg_73_, _size_reg_68_
bgez $2, _loop_end_75_
# was: bgez _tmp_reg_76_, _loop_end_75_
lw $2, 0($20)
# was: lw _res_reg_71_, 0(_elem_reg_70_)
addi $20, $20, 4
# was: addi _elem_reg_42_, _elem_reg_42_, 4
# ori _tmp_50_,_res_reg_43_,0
# ori _fun_arg_res_49_,_tmp_50_,0
ori $2, $21, 0
# was: ori $2, _fun_arg_res_49_, 0
jal putint
# was: jal putint, $2
# ori _res_reg_43_,_fun_arg_res_49_,0
sw $21, 0($18)
# was: sw _res_reg_43_, 0(_addr_reg_44_)
# was: addi _elem_reg_70_, _elem_reg_70_, 4
# ori $2,_res_reg_71_,0
jal mul2
# was: jal mul2, $2
# ori _tmp_reg_77_,$2,0
# ori _res_reg_71_,_tmp_reg_77_,0
sw $2, 0($18)
# was: sw _res_reg_71_, 0(_addr_reg_72_)
addi $18, $18, 4
# was: addi _addr_reg_44_, _addr_reg_44_, 4
# was: addi _addr_reg_72_, _addr_reg_72_, 4
addi $19, $19, 1
# was: addi _i_reg_45_, _i_reg_45_, 1
j _loop_beg_46_
_loop_end_47_:
# was: addi _i_reg_73_, _i_reg_73_, 1
j _loop_beg_74_
_loop_end_75_:
ori $2, $17, 0
# was: ori $2, _mainres_1_, 0
addi $29, $29, 32
lw $21, -28($29)
# was: ori _arg_79_, _letBind_67_, 0
# ori $2,_arg_79_,0
jal write_int_arr
# was: jal write_int_arr, $2
# ori _mainres_46_,$2,0
# ori $2,_mainres_46_,0
addi $29, $29, 28
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)

View File

@ -1,12 +1,12 @@
.text 0x00400000
.globl main
la $28, _heap_
la $4, _a__str__41_
# was: la _a__str__41__addr, _a__str__41_
la $4, _a__str__45_
# was: la _a__str__45__addr, _a__str__45_
ori $3, $0, 1
# was: ori _a__str__41__init, $0, 1
# was: ori _a__str__45__init, $0, 1
sw $3, 0($4)
# was: sw _a__str__41__init, 0(_a__str__41__addr)
# was: sw _a__str__45__init, 0(_a__str__45__addr)
la $4, _true
# was: la _true_addr, _true
ori $3, $0, 4
@ -23,191 +23,220 @@
_stop_:
ori $2, $0, 10
syscall
# Function main
main:
# Function write_int
write_int:
sw $31, -4($29)
sw $16, -8($29)
addi $29, $29, -12
# ori _param_x_1_,$2,0
ori $16, $2, 0
# was: ori _tmp_3_, _param_x_1_, 0
# ori _write_intres_2_,_tmp_3_,0
ori $2, $16, 0
# was: ori $2, _write_intres_2_, 0
jal putint
# was: jal putint, $2
ori $2, $16, 0
# was: ori $2, _write_intres_2_, 0
addi $29, $29, 12
lw $16, -8($29)
lw $31, -4($29)
jr $31
# Function write_int_arr
write_int_arr:
sw $31, -4($29)
sw $21, -28($29)
sw $20, -24($29)
sw $19, -20($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -32
addi $29, $29, -28
# ori _param_x_4_,$2,0
# ori _arr_reg_7_,_param_x_4_,0
lw $16, 0($2)
# was: lw _size_reg_6_, 0(_arr_reg_7_)
ori $17, $28, 0
# was: ori _write_int_arrres_5_, $28, 0
sll $3, $16, 2
# was: sll _tmp_16_, _size_reg_6_, 2
addi $3, $3, 4
# was: addi _tmp_16_, _tmp_16_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_16_
sw $16, 0($17)
# was: sw _size_reg_6_, 0(_write_int_arrres_5_)
addi $18, $17, 4
# was: addi _addr_reg_10_, _write_int_arrres_5_, 4
ori $19, $0, 0
# was: ori _i_reg_11_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_8_, _arr_reg_7_, 4
_loop_beg_12_:
sub $2, $19, $16
# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_6_
bgez $2, _loop_end_13_
# was: bgez _tmp_reg_14_, _loop_end_13_
lw $2, 0($20)
# was: lw _res_reg_9_, 0(_elem_reg_8_)
addi $20, $20, 4
# was: addi _elem_reg_8_, _elem_reg_8_, 4
# ori $2,_res_reg_9_,0
jal write_int
# was: jal write_int, $2
# ori _tmp_reg_15_,$2,0
# ori _res_reg_9_,_tmp_reg_15_,0
sw $2, 0($18)
# was: sw _res_reg_9_, 0(_addr_reg_10_)
addi $18, $18, 4
# was: addi _addr_reg_10_, _addr_reg_10_, 4
addi $19, $19, 1
# was: addi _i_reg_11_, _i_reg_11_, 1
j _loop_beg_12_
_loop_end_13_:
ori $2, $17, 0
# was: ori $2, _write_int_arrres_5_, 0
addi $29, $29, 28
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)
lw $17, -12($29)
lw $16, -8($29)
lw $31, -4($29)
jr $31
# Function main
main:
sw $31, -4($29)
sw $16, -8($29)
addi $29, $29, -12
jal getint
# was: jal getint, $2
# ori _letBind_2_,$2,0
ori $4, $2, 0
# was: ori _size_reg_4_, _letBind_2_, 0
bgez $4, _safe_lab_5_
# was: bgez _size_reg_4_, _safe_lab_5_
# ori _letBind_18_,$2,0
ori $5, $2, 0
# was: ori _size_reg_20_, _letBind_18_, 0
bgez $5, _safe_lab_21_
# was: bgez _size_reg_20_, _safe_lab_21_
ori $5, $0, 7
# was: ori $5, $0, 7
la $6, _Msg_IllegalArraySize_
# was: la $6, _Msg_IllegalArraySize_
j _RuntimeError_
_safe_lab_5_:
_safe_lab_21_:
ori $6, $28, 0
# was: ori _letBind_3_, $28, 0
sll $2, $4, 2
# was: sll _tmp_11_, _size_reg_4_, 2
# was: ori _letBind_19_, $28, 0
sll $2, $5, 2
# was: sll _tmp_27_, _size_reg_20_, 2
addi $2, $2, 4
# was: addi _tmp_11_, _tmp_11_, 4
# was: addi _tmp_27_, _tmp_27_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_11_
sw $4, 0($6)
# was: sw _size_reg_4_, 0(_letBind_3_)
addi $5, $6, 4
# was: addi _addr_reg_6_, _letBind_3_, 4
ori $2, $0, 0
# was: ori _i_reg_7_, $0, 0
_loop_beg_8_:
sub $3, $2, $4
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
bgez $3, _loop_end_9_
# was: bgez _tmp_reg_10_, _loop_end_9_
sw $2, 0($5)
# was: sw _i_reg_7_, 0(_addr_reg_6_)
addi $5, $5, 4
# was: addi _addr_reg_6_, _addr_reg_6_, 4
addi $2, $2, 1
# was: addi _i_reg_7_, _i_reg_7_, 1
j _loop_beg_8_
_loop_end_9_:
# ori _arr_reg_14_,_letBind_3_,0
# was: add $28, $28, _tmp_27_
sw $5, 0($6)
# was: sw _size_reg_20_, 0(_letBind_19_)
addi $2, $6, 4
# was: addi _addr_reg_22_, _letBind_19_, 4
ori $4, $0, 0
# was: ori _i_reg_23_, $0, 0
_loop_beg_24_:
sub $3, $4, $5
# was: sub _tmp_reg_26_, _i_reg_23_, _size_reg_20_
bgez $3, _loop_end_25_
# was: bgez _tmp_reg_26_, _loop_end_25_
sw $4, 0($2)
# was: sw _i_reg_23_, 0(_addr_reg_22_)
addi $2, $2, 4
# was: addi _addr_reg_22_, _addr_reg_22_, 4
addi $4, $4, 1
# was: addi _i_reg_23_, _i_reg_23_, 1
j _loop_beg_24_
_loop_end_25_:
# ori _arr_reg_31_,_letBind_19_,0
lw $2, 0($6)
# was: lw _size_reg_13_, 0(_arr_reg_14_)
# was: lw _size_reg_30_, 0(_arr_reg_31_)
ori $3, $28, 0
# was: ori _letBind_12_, $28, 0
# was: ori _arg_29_, $28, 0
sll $4, $2, 2
# was: sll _tmp_25_, _size_reg_13_, 2
# was: sll _tmp_42_, _size_reg_30_, 2
addi $4, $4, 4
# was: addi _tmp_25_, _tmp_25_, 4
# was: addi _tmp_42_, _tmp_42_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_25_
# was: add $28, $28, _tmp_42_
sw $2, 0($3)
# was: sw _size_reg_13_, 0(_letBind_12_)
# was: sw _size_reg_30_, 0(_arg_29_)
addi $4, $3, 4
# was: addi _addr_reg_17_, _letBind_12_, 4
# was: addi _addr_reg_34_, _arg_29_, 4
ori $5, $0, 0
# was: ori _i_reg_18_, $0, 0
# was: ori _i_reg_35_, $0, 0
addi $6, $6, 4
# was: addi _elem_reg_15_, _arr_reg_14_, 4
_loop_beg_19_:
# was: addi _elem_reg_32_, _arr_reg_31_, 4
_loop_beg_36_:
sub $7, $5, $2
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_
bgez $7, _loop_end_20_
# was: bgez _tmp_reg_21_, _loop_end_20_
# was: sub _tmp_reg_38_, _i_reg_35_, _size_reg_30_
bgez $7, _loop_end_37_
# was: bgez _tmp_reg_38_, _loop_end_37_
lw $7, 0($6)
# was: lw _res_reg_16_, 0(_elem_reg_15_)
# was: lw _res_reg_33_, 0(_elem_reg_32_)
addi $6, $6, 4
# was: addi _elem_reg_15_, _elem_reg_15_, 4
ori $8, $7, 0
# was: ori _plus_L_23_, _res_reg_16_, 0
ori $7, $0, 2
# was: ori _plus_R_24_, $0, 2
add $7, $8, $7
# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_
# ori _res_reg_16_,_fun_arg_res_22_,0
# was: addi _elem_reg_32_, _elem_reg_32_, 4
# ori _plus_L_40_,_res_reg_33_,0
ori $8, $0, 2
# was: ori _plus_R_41_, $0, 2
add $7, $7, $8
# was: add _fun_arg_res_39_, _plus_L_40_, _plus_R_41_
# ori _res_reg_33_,_fun_arg_res_39_,0
sw $7, 0($4)
# was: sw _res_reg_16_, 0(_addr_reg_17_)
# was: sw _res_reg_33_, 0(_addr_reg_34_)
addi $4, $4, 4
# was: addi _addr_reg_17_, _addr_reg_17_, 4
# was: addi _addr_reg_34_, _addr_reg_34_, 4
addi $5, $5, 1
# was: addi _i_reg_18_, _i_reg_18_, 1
j _loop_beg_19_
_loop_end_20_:
# ori _arr_reg_28_,_letBind_12_,0
lw $17, 0($3)
# was: lw _size_reg_27_, 0(_arr_reg_28_)
ori $16, $28, 0
# was: ori _letBind_26_, $28, 0
sll $2, $17, 2
# was: sll _tmp_38_, _size_reg_27_, 2
addi $2, $2, 4
# was: addi _tmp_38_, _tmp_38_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_38_
sw $17, 0($16)
# was: sw _size_reg_27_, 0(_letBind_26_)
addi $18, $16, 4
# was: addi _addr_reg_31_, _letBind_26_, 4
ori $19, $0, 0
# was: ori _i_reg_32_, $0, 0
addi $20, $3, 4
# was: addi _elem_reg_29_, _arr_reg_28_, 4
_loop_beg_33_:
sub $2, $19, $17
# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_
bgez $2, _loop_end_34_
# was: bgez _tmp_reg_35_, _loop_end_34_
lw $21, 0($20)
# was: lw _res_reg_30_, 0(_elem_reg_29_)
addi $20, $20, 4
# was: addi _elem_reg_29_, _elem_reg_29_, 4
# ori _tmp_37_,_res_reg_30_,0
# ori _fun_arg_res_36_,_tmp_37_,0
ori $2, $21, 0
# was: ori $2, _fun_arg_res_36_, 0
jal putint
# was: jal putint, $2
# ori _res_reg_30_,_fun_arg_res_36_,0
sw $21, 0($18)
# was: sw _res_reg_30_, 0(_addr_reg_31_)
addi $18, $18, 4
# was: addi _addr_reg_31_, _addr_reg_31_, 4
addi $19, $19, 1
# was: addi _i_reg_32_, _i_reg_32_, 1
j _loop_beg_33_
_loop_end_34_:
la $2, _a__str__41_
# was: la _tmp_40_, _a__str__41_
# _a__str__41_: string "\n"
# ori _letBind_39_,_tmp_40_,0
# ori $2,_tmp_40_,0
# was: addi _i_reg_35_, _i_reg_35_, 1
j _loop_beg_36_
_loop_end_37_:
ori $2, $3, 0
# was: ori $2, _arg_29_, 0
jal write_int_arr
# was: jal write_int_arr, $2
ori $16, $2, 0
# was: ori _letBind_28_, $2, 0
la $2, _a__str__45_
# was: la _tmp_44_, _a__str__45_
# _a__str__45_: string "\n"
# ori _letBind_43_,_tmp_44_,0
# ori $2,_tmp_44_,0
jal putstring
# was: jal putstring, $2
# ori _arr_reg_43_,_letBind_26_,0
# ori _arr_reg_47_,_letBind_28_,0
lw $2, 0($16)
# was: lw _size_reg_44_, 0(_arr_reg_43_)
ori $5, $0, 0
# was: ori _letBind_42_, $0, 0
# was: lw _size_reg_48_, 0(_arr_reg_47_)
ori $4, $0, 0
# was: ori _arg_46_, $0, 0
addi $16, $16, 4
# was: addi _arr_reg_43_, _arr_reg_43_, 4
# was: addi _arr_reg_47_, _arr_reg_47_, 4
ori $3, $0, 0
# was: ori _ind_var_45_, $0, 0
_loop_beg_47_:
sub $4, $3, $2
# was: sub _tmp_reg_46_, _ind_var_45_, _size_reg_44_
bgez $4, _loop_end_48_
# was: bgez _tmp_reg_46_, _loop_end_48_
lw $4, 0($16)
# was: lw _tmp_reg_46_, 0(_arr_reg_43_)
# was: ori _ind_var_49_, $0, 0
_loop_beg_51_:
sub $5, $3, $2
# was: sub _tmp_reg_50_, _ind_var_49_, _size_reg_48_
bgez $5, _loop_end_52_
# was: bgez _tmp_reg_50_, _loop_end_52_
lw $5, 0($16)
# was: lw _tmp_reg_50_, 0(_arr_reg_47_)
addi $16, $16, 4
# was: addi _arr_reg_43_, _arr_reg_43_, 4
# ori _plus_L_50_,_letBind_42_,0
# ori _plus_R_51_,_tmp_reg_46_,0
add $5, $5, $4
# was: add _fun_arg_res_49_, _plus_L_50_, _plus_R_51_
# ori _letBind_42_,_fun_arg_res_49_,0
# was: addi _arr_reg_47_, _arr_reg_47_, 4
# ori _plus_L_54_,_arg_46_,0
# ori _plus_R_55_,_tmp_reg_50_,0
add $4, $4, $5
# was: add _fun_arg_res_53_, _plus_L_54_, _plus_R_55_
# ori _arg_46_,_fun_arg_res_53_,0
addi $3, $3, 1
# was: addi _ind_var_45_, _ind_var_45_, 1
j _loop_beg_47_
_loop_end_48_:
# ori _tmp_52_,_letBind_42_,0
ori $16, $5, 0
# was: ori _mainres_1_, _tmp_52_, 0
ori $2, $16, 0
# was: ori $2, _mainres_1_, 0
jal putint
# was: jal putint, $2
ori $2, $16, 0
# was: ori $2, _mainres_1_, 0
addi $29, $29, 32
lw $21, -28($29)
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)
lw $17, -12($29)
# was: addi _ind_var_49_, _ind_var_49_, 1
j _loop_beg_51_
_loop_end_52_:
ori $2, $4, 0
# was: ori $2, _arg_46_, 0
jal write_int
# was: jal write_int, $2
# ori _mainres_17_,$2,0
# ori $2,_mainres_17_,0
addi $29, $29, 12
lw $16, -8($29)
lw $31, -4($29)
jr $31
@ -323,7 +352,7 @@ _Msg_DivZero_:
.asciiz "division by zero"
# String Literals
.align 2
_a__str__41_:
_a__str__45_:
.space 4
.asciiz "\n"
.align 2

View File

@ -1,24 +1,24 @@
.text 0x00400000
.globl main
la $28, _heap_
la $4, _Maxacha_72_
# was: la _Maxacha_72__addr, _Maxacha_72_
la $4, _Maxacha_82_
# was: la _Maxacha_82__addr, _Maxacha_82_
ori $3, $0, 10
# was: ori _Maxacha_72__init, $0, 10
# was: ori _Maxacha_82__init, $0, 10
sw $3, 0($4)
# was: sw _Maxacha_72__init, 0(_Maxacha_72__addr)
la $4, _a__str__69_
# was: la _a__str__69__addr, _a__str__69_
# was: sw _Maxacha_82__init, 0(_Maxacha_82__addr)
la $4, _a__str__79_
# was: la _a__str__79__addr, _a__str__79_
ori $3, $0, 1
# was: ori _a__str__69__init, $0, 1
# was: ori _a__str__79__init, $0, 1
sw $3, 0($4)
# was: sw _a__str__69__init, 0(_a__str__69__addr)
la $4, _Sumaa___64_
# was: la _Sumaa___64__addr, _Sumaa___64_
# was: sw _a__str__79__init, 0(_a__str__79__addr)
la $4, _Sumaa___74_
# was: la _Sumaa___74__addr, _Sumaa___74_
ori $3, $0, 5
# was: ori _Sumaa___64__init, $0, 5
# was: ori _Sumaa___74__init, $0, 5
sw $3, 0($4)
# was: sw _Sumaa___64__init, 0(_Sumaa___64__addr)
# was: sw _Sumaa___74__init, 0(_Sumaa___74__addr)
la $4, _true
# was: la _true_addr, _true
ori $3, $0, 4
@ -35,6 +35,70 @@
_stop_:
ori $2, $0, 10
syscall
# Function plus100
plus100:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_1_,$2,0
# ori _plus_L_3_,_param_x_1_,0
ori $3, $0, 100
# was: ori _plus_R_4_, $0, 100
add $2, $2, $3
# was: add _plus100res_2_, _plus_L_3_, _plus_R_4_
# ori $2,_plus100res_2_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function read_chr
read_chr:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_i_5_,$2,0
jal getchar
# was: jal getchar, $2
# ori _read_chrres_6_,$2,0
# ori $2,_read_chrres_6_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function plus
plus:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_7_,$2,0
# ori _param_y_8_,$3,0
# ori _plus_L_10_,_param_x_7_,0
# ori _plus_R_11_,_param_y_8_,0
add $2, $2, $3
# was: add _plusres_9_, _plus_L_10_, _plus_R_11_
# ori $2,_plusres_9_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function max_chr
max_chr:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_a_12_,$2,0
# ori _param_b_13_,$3,0
# ori _lt_L_19_,_param_a_12_,0
# ori _lt_R_20_,_param_b_13_,0
slt $4, $2, $3
# was: slt _cond_18_, _lt_L_19_, _lt_R_20_
bne $4, $0, _then_15_
# was: bne _cond_18_, $0, _then_15_
j _else_16_
_then_15_:
ori $2, $3, 0
# was: ori _max_chrres_14_, _param_b_13_, 0
j _endif_17_
_else_16_:
# ori _max_chrres_14_,_param_a_12_,0
_endif_17_:
# ori $2,_max_chrres_14_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function main
main:
sw $31, -4($29)
@ -47,234 +111,227 @@ main:
addi $29, $29, -32
jal getint
# was: jal getint, $2
# ori _letBind_2_,$2,0
ori $5, $2, 0
# was: ori _size_reg_4_, _letBind_2_, 0
bgez $5, _safe_lab_5_
# was: bgez _size_reg_4_, _safe_lab_5_
# ori _letBind_22_,$2,0
# ori _size_reg_24_,_letBind_22_,0
bgez $2, _safe_lab_25_
# was: bgez _size_reg_24_, _safe_lab_25_
ori $5, $0, 10
# was: ori $5, $0, 10
la $6, _Msg_IllegalArraySize_
# was: la $6, _Msg_IllegalArraySize_
j _RuntimeError_
_safe_lab_5_:
ori $3, $28, 0
# was: ori _letBind_3_, $28, 0
sll $4, $5, 2
# was: sll _tmp_11_, _size_reg_4_, 2
addi $4, $4, 4
# was: addi _tmp_11_, _tmp_11_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_11_
sw $5, 0($3)
# was: sw _size_reg_4_, 0(_letBind_3_)
addi $7, $3, 4
# was: addi _addr_reg_6_, _letBind_3_, 4
ori $4, $0, 0
# was: ori _i_reg_7_, $0, 0
_loop_beg_8_:
sub $6, $4, $5
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
bgez $6, _loop_end_9_
# was: bgez _tmp_reg_10_, _loop_end_9_
sw $4, 0($7)
# was: sw _i_reg_7_, 0(_addr_reg_6_)
addi $7, $7, 4
# was: addi _addr_reg_6_, _addr_reg_6_, 4
addi $4, $4, 1
# was: addi _i_reg_7_, _i_reg_7_, 1
j _loop_beg_8_
_loop_end_9_:
# ori _arr_reg_14_,_letBind_3_,0
lw $5, 0($3)
# was: lw _size_reg_13_, 0(_arr_reg_14_)
ori $4, $28, 0
# was: ori _letBind_12_, $28, 0
sll $6, $5, 2
# was: sll _tmp_25_, _size_reg_13_, 2
addi $6, $6, 4
# was: addi _tmp_25_, _tmp_25_, 4
add $28, $28, $6
# was: add $28, $28, _tmp_25_
sw $5, 0($4)
# was: sw _size_reg_13_, 0(_letBind_12_)
addi $7, $4, 4
# was: addi _addr_reg_17_, _letBind_12_, 4
ori $6, $0, 0
# was: ori _i_reg_18_, $0, 0
addi $8, $3, 4
# was: addi _elem_reg_15_, _arr_reg_14_, 4
_loop_beg_19_:
sub $9, $6, $5
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_
bgez $9, _loop_end_20_
# was: bgez _tmp_reg_21_, _loop_end_20_
lw $9, 0($8)
# was: lw _res_reg_16_, 0(_elem_reg_15_)
addi $8, $8, 4
# was: addi _elem_reg_15_, _elem_reg_15_, 4
# ori _plus_L_23_,_res_reg_16_,0
ori $10, $0, 100
# was: ori _plus_R_24_, $0, 100
add $9, $9, $10
# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_
# ori _res_reg_16_,_fun_arg_res_22_,0
sw $9, 0($7)
# was: sw _res_reg_16_, 0(_addr_reg_17_)
addi $7, $7, 4
# was: addi _addr_reg_17_, _addr_reg_17_, 4
addi $6, $6, 1
# was: addi _i_reg_18_, _i_reg_18_, 1
j _loop_beg_19_
_loop_end_20_:
ori $7, $4, 0
# was: ori _arr_reg_27_, _letBind_12_, 0
lw $5, 0($7)
# was: lw _size_reg_28_, 0(_arr_reg_27_)
ori $17, $0, 0
# was: ori _letBind_26_, $0, 0
addi $7, $7, 4
# was: addi _arr_reg_27_, _arr_reg_27_, 4
ori $6, $0, 0
# was: ori _ind_var_29_, $0, 0
_loop_beg_31_:
sub $4, $6, $5
# was: sub _tmp_reg_30_, _ind_var_29_, _size_reg_28_
bgez $4, _loop_end_32_
# was: bgez _tmp_reg_30_, _loop_end_32_
lw $4, 0($7)
# was: lw _tmp_reg_30_, 0(_arr_reg_27_)
addi $7, $7, 4
# was: addi _arr_reg_27_, _arr_reg_27_, 4
# ori _plus_L_34_,_letBind_26_,0
# ori _plus_R_35_,_tmp_reg_30_,0
add $17, $17, $4
# was: add _fun_arg_res_33_, _plus_L_34_, _plus_R_35_
# ori _letBind_26_,_fun_arg_res_33_,0
addi $6, $6, 1
# was: addi _ind_var_29_, _ind_var_29_, 1
j _loop_beg_31_
_loop_end_32_:
# ori _arr_reg_38_,_letBind_3_,0
lw $18, 0($3)
# was: lw _size_reg_37_, 0(_arr_reg_38_)
_safe_lab_25_:
ori $16, $28, 0
# was: ori _letBind_36_, $28, 0
addi $4, $18, 3
# was: addi _tmp_47_, _size_reg_37_, 3
sra $4, $4, 2
# was: sra _tmp_47_, _tmp_47_, 2
sll $4, $4, 2
# was: sll _tmp_47_, _tmp_47_, 2
addi $4, $4, 4
# was: addi _tmp_47_, _tmp_47_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_47_
sw $18, 0($16)
# was: sw _size_reg_37_, 0(_letBind_36_)
addi $20, $16, 4
# was: addi _addr_reg_41_, _letBind_36_, 4
ori $19, $0, 0
# was: ori _i_reg_42_, $0, 0
addi $21, $3, 4
# was: addi _elem_reg_39_, _arr_reg_38_, 4
_loop_beg_43_:
sub $3, $19, $18
# was: sub _tmp_reg_45_, _i_reg_42_, _size_reg_37_
bgez $3, _loop_end_44_
# was: bgez _tmp_reg_45_, _loop_end_44_
lw $3, 0($21)
# was: lw _res_reg_40_, 0(_elem_reg_39_)
addi $21, $21, 4
# was: addi _elem_reg_39_, _elem_reg_39_, 4
jal getchar
# was: jal getchar, $2
# ori _fun_arg_res_46_,$2,0
ori $3, $2, 0
# was: ori _res_reg_40_, _fun_arg_res_46_, 0
sb $3, 0($20)
# was: sb _res_reg_40_, 0(_addr_reg_41_)
addi $20, $20, 1
# was: addi _addr_reg_41_, _addr_reg_41_, 1
addi $19, $19, 1
# was: addi _i_reg_42_, _i_reg_42_, 1
j _loop_beg_43_
_loop_end_44_:
ori $2, $16, 0
# was: ori _arr_reg_49_, _letBind_36_, 0
lw $3, 0($2)
# was: lw _size_reg_50_, 0(_arr_reg_49_)
ori $18, $0, 97
# was: ori _letBind_48_, $0, 97
addi $2, $2, 4
# was: addi _arr_reg_49_, _arr_reg_49_, 4
# was: ori _letBind_23_, $28, 0
sll $3, $2, 2
# was: sll _tmp_31_, _size_reg_24_, 2
addi $3, $3, 4
# was: addi _tmp_31_, _tmp_31_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_31_
sw $2, 0($16)
# was: sw _size_reg_24_, 0(_letBind_23_)
addi $3, $16, 4
# was: addi _addr_reg_26_, _letBind_23_, 4
ori $4, $0, 0
# was: ori _ind_var_51_, $0, 0
_loop_beg_53_:
sub $5, $4, $3
# was: sub _tmp_reg_52_, _ind_var_51_, _size_reg_50_
bgez $5, _loop_end_54_
# was: bgez _tmp_reg_52_, _loop_end_54_
lb $5, 0($2)
# was: lb _tmp_reg_52_, 0(_arr_reg_49_)
addi $2, $2, 1
# was: addi _arr_reg_49_, _arr_reg_49_, 1
# ori _lt_L_60_,_letBind_48_,0
# ori _lt_R_61_,_tmp_reg_52_,0
slt $6, $18, $5
# was: slt _cond_59_, _lt_L_60_, _lt_R_61_
bne $6, $0, _then_56_
# was: bne _cond_59_, $0, _then_56_
j _else_57_
_then_56_:
# ori _fun_arg_res_55_,_tmp_reg_52_,0
j _endif_58_
_else_57_:
ori $5, $18, 0
# was: ori _fun_arg_res_55_, _letBind_48_, 0
_endif_58_:
ori $18, $5, 0
# was: ori _letBind_48_, _fun_arg_res_55_, 0
# was: ori _i_reg_27_, $0, 0
_loop_beg_28_:
sub $5, $4, $2
# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_24_
bgez $5, _loop_end_29_
# was: bgez _tmp_reg_30_, _loop_end_29_
sw $4, 0($3)
# was: sw _i_reg_27_, 0(_addr_reg_26_)
addi $3, $3, 4
# was: addi _addr_reg_26_, _addr_reg_26_, 4
addi $4, $4, 1
# was: addi _ind_var_51_, _ind_var_51_, 1
j _loop_beg_53_
_loop_end_54_:
la $2, _Sumaa___64_
# was: la _tmp_63_, _Sumaa___64_
# _Sumaa___64_: string "Sum: "
# ori _letBind_62_,_tmp_63_,0
# ori $2,_tmp_63_,0
# was: addi _i_reg_27_, _i_reg_27_, 1
j _loop_beg_28_
_loop_end_29_:
# ori _arr_reg_34_,_letBind_23_,0
lw $17, 0($16)
# was: lw _size_reg_33_, 0(_arr_reg_34_)
ori $20, $28, 0
# was: ori _letBind_32_, $28, 0
sll $2, $17, 2
# was: sll _tmp_43_, _size_reg_33_, 2
addi $2, $2, 4
# was: addi _tmp_43_, _tmp_43_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_43_
sw $17, 0($20)
# was: sw _size_reg_33_, 0(_letBind_32_)
addi $18, $20, 4
# was: addi _addr_reg_37_, _letBind_32_, 4
ori $19, $0, 0
# was: ori _i_reg_38_, $0, 0
addi $21, $16, 4
# was: addi _elem_reg_35_, _arr_reg_34_, 4
_loop_beg_39_:
sub $2, $19, $17
# was: sub _tmp_reg_41_, _i_reg_38_, _size_reg_33_
bgez $2, _loop_end_40_
# was: bgez _tmp_reg_41_, _loop_end_40_
lw $2, 0($21)
# was: lw _res_reg_36_, 0(_elem_reg_35_)
addi $21, $21, 4
# was: addi _elem_reg_35_, _elem_reg_35_, 4
# ori $2,_res_reg_36_,0
jal plus100
# was: jal plus100, $2
# ori _tmp_reg_42_,$2,0
# ori _res_reg_36_,_tmp_reg_42_,0
sw $2, 0($18)
# was: sw _res_reg_36_, 0(_addr_reg_37_)
addi $18, $18, 4
# was: addi _addr_reg_37_, _addr_reg_37_, 4
addi $19, $19, 1
# was: addi _i_reg_38_, _i_reg_38_, 1
j _loop_beg_39_
_loop_end_40_:
# ori _arr_reg_45_,_letBind_32_,0
lw $18, 0($20)
# was: lw _size_reg_46_, 0(_arr_reg_45_)
ori $17, $0, 0
# was: ori _letBind_44_, $0, 0
addi $20, $20, 4
# was: addi _arr_reg_45_, _arr_reg_45_, 4
ori $19, $0, 0
# was: ori _ind_var_47_, $0, 0
_loop_beg_49_:
sub $3, $19, $18
# was: sub _tmp_reg_48_, _ind_var_47_, _size_reg_46_
bgez $3, _loop_end_50_
# was: bgez _tmp_reg_48_, _loop_end_50_
lw $3, 0($20)
# was: lw _tmp_reg_48_, 0(_arr_reg_45_)
addi $20, $20, 4
# was: addi _arr_reg_45_, _arr_reg_45_, 4
ori $2, $17, 0
# was: ori $2, _letBind_44_, 0
# ori $3,_tmp_reg_48_,0
jal plus
# was: jal plus, $2 $3
# ori _tmp_reg_51_,$2,0
ori $17, $2, 0
# was: ori _letBind_44_, _tmp_reg_51_, 0
addi $19, $19, 1
# was: addi _ind_var_47_, _ind_var_47_, 1
j _loop_beg_49_
_loop_end_50_:
ori $2, $16, 0
# was: ori _arr_reg_54_, _letBind_23_, 0
lw $18, 0($2)
# was: lw _size_reg_53_, 0(_arr_reg_54_)
ori $16, $28, 0
# was: ori _letBind_52_, $28, 0
addi $3, $18, 3
# was: addi _tmp_63_, _size_reg_53_, 3
sra $3, $3, 2
# was: sra _tmp_63_, _tmp_63_, 2
sll $3, $3, 2
# was: sll _tmp_63_, _tmp_63_, 2
addi $3, $3, 4
# was: addi _tmp_63_, _tmp_63_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_63_
sw $18, 0($16)
# was: sw _size_reg_53_, 0(_letBind_52_)
addi $20, $16, 4
# was: addi _addr_reg_57_, _letBind_52_, 4
ori $19, $0, 0
# was: ori _i_reg_58_, $0, 0
addi $21, $2, 4
# was: addi _elem_reg_55_, _arr_reg_54_, 4
_loop_beg_59_:
sub $2, $19, $18
# was: sub _tmp_reg_61_, _i_reg_58_, _size_reg_53_
bgez $2, _loop_end_60_
# was: bgez _tmp_reg_61_, _loop_end_60_
lw $2, 0($21)
# was: lw _res_reg_56_, 0(_elem_reg_55_)
addi $21, $21, 4
# was: addi _elem_reg_55_, _elem_reg_55_, 4
# ori $2,_res_reg_56_,0
jal read_chr
# was: jal read_chr, $2
# ori _tmp_reg_62_,$2,0
# ori _res_reg_56_,_tmp_reg_62_,0
sb $2, 0($20)
# was: sb _res_reg_56_, 0(_addr_reg_57_)
addi $20, $20, 1
# was: addi _addr_reg_57_, _addr_reg_57_, 1
addi $19, $19, 1
# was: addi _i_reg_58_, _i_reg_58_, 1
j _loop_beg_59_
_loop_end_60_:
ori $20, $16, 0
# was: ori _arr_reg_65_, _letBind_52_, 0
lw $19, 0($20)
# was: lw _size_reg_66_, 0(_arr_reg_65_)
ori $18, $0, 97
# was: ori _letBind_64_, $0, 97
addi $20, $20, 4
# was: addi _arr_reg_65_, _arr_reg_65_, 4
ori $21, $0, 0
# was: ori _ind_var_67_, $0, 0
_loop_beg_69_:
sub $3, $21, $19
# was: sub _tmp_reg_68_, _ind_var_67_, _size_reg_66_
bgez $3, _loop_end_70_
# was: bgez _tmp_reg_68_, _loop_end_70_
lb $3, 0($20)
# was: lb _tmp_reg_68_, 0(_arr_reg_65_)
addi $20, $20, 1
# was: addi _arr_reg_65_, _arr_reg_65_, 1
ori $2, $18, 0
# was: ori $2, _letBind_64_, 0
# ori $3,_tmp_reg_68_,0
jal max_chr
# was: jal max_chr, $2 $3
# ori _tmp_reg_71_,$2,0
ori $18, $2, 0
# was: ori _letBind_64_, _tmp_reg_71_, 0
addi $21, $21, 1
# was: addi _ind_var_67_, _ind_var_67_, 1
j _loop_beg_69_
_loop_end_70_:
la $2, _Sumaa___74_
# was: la _tmp_73_, _Sumaa___74_
# _Sumaa___74_: string "Sum: "
# ori _letBind_72_,_tmp_73_,0
# ori $2,_tmp_73_,0
jal putstring
# was: jal putstring, $2
# ori _tmp_66_,_letBind_26_,0
ori $2, $17, 0
# was: ori _letBind_65_, _tmp_66_, 0
# ori $2,_letBind_65_,0
# was: ori _tmp_76_, _letBind_44_, 0
# ori _letBind_75_,_tmp_76_,0
# ori $2,_letBind_75_,0
jal putint
# was: jal putint, $2
la $2, _a__str__69_
# was: la _tmp_68_, _a__str__69_
# _a__str__69_: string "\n"
# ori _letBind_67_,_tmp_68_,0
# ori $2,_tmp_68_,0
la $2, _a__str__79_
# was: la _tmp_78_, _a__str__79_
# _a__str__79_: string "\n"
# ori _letBind_77_,_tmp_78_,0
# ori $2,_tmp_78_,0
jal putstring
# was: jal putstring, $2
la $2, _Maxacha_72_
# was: la _tmp_71_, _Maxacha_72_
# _Maxacha_72_: string "Max char: "
# ori _letBind_70_,_tmp_71_,0
# ori $2,_tmp_71_,0
la $2, _Maxacha_82_
# was: la _tmp_81_, _Maxacha_82_
# _Maxacha_82_: string "Max char: "
# ori _letBind_80_,_tmp_81_,0
# ori $2,_tmp_81_,0
jal putstring
# was: jal putstring, $2
ori $2, $18, 0
# was: ori _tmp_74_, _letBind_48_, 0
# ori _letBind_73_,_tmp_74_,0
# ori $2,_letBind_73_,0
# was: ori _tmp_84_, _letBind_64_, 0
# ori _letBind_83_,_tmp_84_,0
# ori $2,_letBind_83_,0
jal putchar
# was: jal putchar, $2
ori $2, $16, 0
# was: ori _mainres_1_, _letBind_36_, 0
# ori $2,_mainres_1_,0
# was: ori _mainres_21_, _letBind_52_, 0
# ori $2,_mainres_21_,0
addi $29, $29, 32
lw $21, -28($29)
lw $20, -24($29)
@ -396,15 +453,15 @@ _Msg_DivZero_:
.asciiz "division by zero"
# String Literals
.align 2
_Maxacha_72_:
_Maxacha_82_:
.space 4
.asciiz "Max char: "
.align 2
_a__str__69_:
_a__str__79_:
.space 4
.asciiz "\n"
.align 2
_Sumaa___64_:
_Sumaa___74_:
.space 4
.asciiz "Sum: "
.align 2

View File

@ -17,6 +17,133 @@
_stop_:
ori $2, $0, 10
syscall
# Function read_char
read_char:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_i_1_,$2,0
jal getchar
# was: jal getchar, $2
# ori _read_charres_2_,$2,0
# ori $2,_read_charres_2_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function read_string
read_string:
sw $31, -4($29)
sw $20, -24($29)
sw $19, -20($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -28
# ori _param_n_3_,$2,0
ori $3, $2, 0
# was: ori _size_reg_9_, _param_n_3_, 0
bgez $3, _safe_lab_10_
# was: bgez _size_reg_9_, _safe_lab_10_
ori $5, $0, 3
# was: ori $5, $0, 3
la $6, _Msg_IllegalArraySize_
# was: la $6, _Msg_IllegalArraySize_
j _RuntimeError_
_safe_lab_10_:
ori $2, $28, 0
# was: ori _arr_reg_6_, $28, 0
sll $4, $3, 2
# was: sll _tmp_16_, _size_reg_9_, 2
addi $4, $4, 4
# was: addi _tmp_16_, _tmp_16_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_16_
sw $3, 0($2)
# was: sw _size_reg_9_, 0(_arr_reg_6_)
addi $6, $2, 4
# was: addi _addr_reg_11_, _arr_reg_6_, 4
ori $5, $0, 0
# was: ori _i_reg_12_, $0, 0
_loop_beg_13_:
sub $4, $5, $3
# was: sub _tmp_reg_15_, _i_reg_12_, _size_reg_9_
bgez $4, _loop_end_14_
# was: bgez _tmp_reg_15_, _loop_end_14_
sw $5, 0($6)
# was: sw _i_reg_12_, 0(_addr_reg_11_)
addi $6, $6, 4
# was: addi _addr_reg_11_, _addr_reg_11_, 4
addi $5, $5, 1
# was: addi _i_reg_12_, _i_reg_12_, 1
j _loop_beg_13_
_loop_end_14_:
lw $16, 0($2)
# was: lw _size_reg_5_, 0(_arr_reg_6_)
ori $17, $28, 0
# was: ori _read_stringres_4_, $28, 0
addi $3, $16, 3
# was: addi _tmp_23_, _size_reg_5_, 3
sra $3, $3, 2
# was: sra _tmp_23_, _tmp_23_, 2
sll $3, $3, 2
# was: sll _tmp_23_, _tmp_23_, 2
addi $3, $3, 4
# was: addi _tmp_23_, _tmp_23_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_23_
sw $16, 0($17)
# was: sw _size_reg_5_, 0(_read_stringres_4_)
addi $18, $17, 4
# was: addi _addr_reg_17_, _read_stringres_4_, 4
ori $19, $0, 0
# was: ori _i_reg_18_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_7_, _arr_reg_6_, 4
_loop_beg_19_:
sub $2, $19, $16
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_5_
bgez $2, _loop_end_20_
# was: bgez _tmp_reg_21_, _loop_end_20_
lw $2, 0($20)
# was: lw _res_reg_8_, 0(_elem_reg_7_)
addi $20, $20, 4
# was: addi _elem_reg_7_, _elem_reg_7_, 4
# ori $2,_res_reg_8_,0
jal read_char
# was: jal read_char, $2
# ori _tmp_reg_22_,$2,0
# ori _res_reg_8_,_tmp_reg_22_,0
sb $2, 0($18)
# was: sb _res_reg_8_, 0(_addr_reg_17_)
addi $18, $18, 1
# was: addi _addr_reg_17_, _addr_reg_17_, 1
addi $19, $19, 1
# was: addi _i_reg_18_, _i_reg_18_, 1
j _loop_beg_19_
_loop_end_20_:
ori $2, $17, 0
# was: ori $2, _read_stringres_4_, 0
addi $29, $29, 28
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)
lw $17, -12($29)
lw $16, -8($29)
lw $31, -4($29)
jr $31
# Function add_one
add_one:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_24_,$2,0
# ori _plus_L_26_,_param_x_24_,0
ori $3, $0, 1
# was: ori _plus_R_27_, $0, 1
add $2, $2, $3
# was: add _add_oneres_25_, _plus_L_26_, _plus_R_27_
# ori $2,_add_oneres_25_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function main
main:
sw $31, -4($29)
@ -28,224 +155,146 @@ main:
addi $29, $29, -28
jal getint
# was: jal getint, $2
# ori _letBind_2_,$2,0
ori $4, $2, 0
# was: ori _size_reg_8_, _letBind_2_, 0
bgez $4, _safe_lab_9_
# was: bgez _size_reg_8_, _safe_lab_9_
ori $5, $0, 3
# was: ori $5, $0, 3
la $6, _Msg_IllegalArraySize_
# was: la $6, _Msg_IllegalArraySize_
j _RuntimeError_
_safe_lab_9_:
ori $3, $28, 0
# was: ori _arr_reg_5_, $28, 0
sll $5, $4, 2
# was: sll _tmp_15_, _size_reg_8_, 2
addi $5, $5, 4
# was: addi _tmp_15_, _tmp_15_, 4
add $28, $28, $5
# was: add $28, $28, _tmp_15_
sw $4, 0($3)
# was: sw _size_reg_8_, 0(_arr_reg_5_)
addi $5, $3, 4
# was: addi _addr_reg_10_, _arr_reg_5_, 4
ori $7, $0, 0
# was: ori _i_reg_11_, $0, 0
_loop_beg_12_:
sub $6, $7, $4
# was: sub _tmp_reg_14_, _i_reg_11_, _size_reg_8_
bgez $6, _loop_end_13_
# was: bgez _tmp_reg_14_, _loop_end_13_
sw $7, 0($5)
# was: sw _i_reg_11_, 0(_addr_reg_10_)
addi $5, $5, 4
# was: addi _addr_reg_10_, _addr_reg_10_, 4
addi $7, $7, 1
# was: addi _i_reg_11_, _i_reg_11_, 1
j _loop_beg_12_
_loop_end_13_:
lw $17, 0($3)
# was: lw _size_reg_4_, 0(_arr_reg_5_)
ori $18, $28, 0
# was: ori _letBind_3_, $28, 0
addi $4, $17, 3
# was: addi _tmp_22_, _size_reg_4_, 3
sra $4, $4, 2
# was: sra _tmp_22_, _tmp_22_, 2
sll $4, $4, 2
# was: sll _tmp_22_, _tmp_22_, 2
addi $4, $4, 4
# was: addi _tmp_22_, _tmp_22_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_22_
sw $17, 0($18)
# was: sw _size_reg_4_, 0(_letBind_3_)
addi $16, $18, 4
# was: addi _addr_reg_16_, _letBind_3_, 4
ori $19, $0, 0
# was: ori _i_reg_17_, $0, 0
addi $20, $3, 4
# was: addi _elem_reg_6_, _arr_reg_5_, 4
_loop_beg_18_:
sub $3, $19, $17
# was: sub _tmp_reg_20_, _i_reg_17_, _size_reg_4_
bgez $3, _loop_end_19_
# was: bgez _tmp_reg_20_, _loop_end_19_
lw $3, 0($20)
# was: lw _res_reg_7_, 0(_elem_reg_6_)
addi $20, $20, 4
# was: addi _elem_reg_6_, _elem_reg_6_, 4
jal getchar
# was: jal getchar, $2
# ori _fun_arg_res_21_,$2,0
ori $3, $2, 0
# was: ori _res_reg_7_, _fun_arg_res_21_, 0
sb $3, 0($16)
# was: sb _res_reg_7_, 0(_addr_reg_16_)
addi $16, $16, 1
# was: addi _addr_reg_16_, _addr_reg_16_, 1
addi $19, $19, 1
# was: addi _i_reg_17_, _i_reg_17_, 1
j _loop_beg_18_
_loop_end_19_:
ori $2, $18, 0
# was: ori _arr_reg_33_, _letBind_3_, 0
# ori _letBind_29_,$2,0
# ori _arg_31_,_letBind_29_,0
# ori $2,_arg_31_,0
jal read_string
# was: jal read_string, $2
# ori _letBind_30_,$2,0
# ori _arr_reg_42_,_letBind_30_,0
lw $18, 0($2)
# was: lw _size_reg_32_, 0(_arr_reg_33_)
ori $16, $28, 0
# was: ori _arr_reg_29_, $28, 0
# was: lw _size_reg_41_, 0(_arr_reg_42_)
ori $20, $28, 0
# was: ori _arr_reg_38_, $28, 0
sll $3, $18, 2
# was: sll _tmp_42_, _size_reg_32_, 2
# was: sll _tmp_51_, _size_reg_41_, 2
addi $3, $3, 4
# was: addi _tmp_42_, _tmp_42_, 4
# was: addi _tmp_51_, _tmp_51_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_42_
sw $18, 0($16)
# was: sw _size_reg_32_, 0(_arr_reg_29_)
addi $19, $16, 4
# was: addi _addr_reg_36_, _arr_reg_29_, 4
ori $17, $0, 0
# was: ori _i_reg_37_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_34_, _arr_reg_33_, 4
_loop_beg_38_:
sub $2, $17, $18
# was: sub _tmp_reg_40_, _i_reg_37_, _size_reg_32_
bgez $2, _loop_end_39_
# was: bgez _tmp_reg_40_, _loop_end_39_
lb $2, 0($20)
# was: lb _res_reg_35_, 0(_elem_reg_34_)
addi $20, $20, 1
# was: addi _elem_reg_34_, _elem_reg_34_, 1
# ori $2,_res_reg_35_,0
# was: add $28, $28, _tmp_51_
sw $18, 0($20)
# was: sw _size_reg_41_, 0(_arr_reg_38_)
addi $17, $20, 4
# was: addi _addr_reg_45_, _arr_reg_38_, 4
ori $16, $0, 0
# was: ori _i_reg_46_, $0, 0
addi $19, $2, 4
# was: addi _elem_reg_43_, _arr_reg_42_, 4
_loop_beg_47_:
sub $2, $16, $18
# was: sub _tmp_reg_49_, _i_reg_46_, _size_reg_41_
bgez $2, _loop_end_48_
# was: bgez _tmp_reg_49_, _loop_end_48_
lb $2, 0($19)
# was: lb _res_reg_44_, 0(_elem_reg_43_)
addi $19, $19, 1
# was: addi _elem_reg_43_, _elem_reg_43_, 1
# ori $2,_res_reg_44_,0
jal ord
# was: jal ord, $2
# ori _tmp_reg_41_,$2,0
# ori _res_reg_35_,_tmp_reg_41_,0
sw $2, 0($19)
# was: sw _res_reg_35_, 0(_addr_reg_36_)
addi $19, $19, 4
# was: addi _addr_reg_36_, _addr_reg_36_, 4
addi $17, $17, 1
# was: addi _i_reg_37_, _i_reg_37_, 1
j _loop_beg_38_
_loop_end_39_:
lw $3, 0($16)
# was: lw _size_reg_28_, 0(_arr_reg_29_)
ori $2, $28, 0
# was: ori _arr_reg_25_, $28, 0
sll $4, $3, 2
# was: sll _tmp_51_, _size_reg_28_, 2
addi $4, $4, 4
# was: addi _tmp_51_, _tmp_51_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_51_
sw $3, 0($2)
# was: sw _size_reg_28_, 0(_arr_reg_25_)
addi $5, $2, 4
# was: addi _addr_reg_43_, _arr_reg_25_, 4
ori $4, $0, 0
# was: ori _i_reg_44_, $0, 0
addi $6, $16, 4
# was: addi _elem_reg_30_, _arr_reg_29_, 4
_loop_beg_45_:
sub $7, $4, $3
# was: sub _tmp_reg_47_, _i_reg_44_, _size_reg_28_
bgez $7, _loop_end_46_
# was: bgez _tmp_reg_47_, _loop_end_46_
lw $8, 0($6)
# was: lw _res_reg_31_, 0(_elem_reg_30_)
addi $6, $6, 4
# was: addi _elem_reg_30_, _elem_reg_30_, 4
# ori _plus_L_49_,_res_reg_31_,0
ori $7, $0, 1
# was: ori _plus_R_50_, $0, 1
add $8, $8, $7
# was: add _fun_arg_res_48_, _plus_L_49_, _plus_R_50_
# ori _res_reg_31_,_fun_arg_res_48_,0
sw $8, 0($5)
# was: sw _res_reg_31_, 0(_addr_reg_43_)
addi $5, $5, 4
# was: addi _addr_reg_43_, _addr_reg_43_, 4
addi $4, $4, 1
# was: addi _i_reg_44_, _i_reg_44_, 1
j _loop_beg_45_
_loop_end_46_:
lw $17, 0($2)
# was: lw _size_reg_24_, 0(_arr_reg_25_)
# ori _tmp_reg_50_,$2,0
# ori _res_reg_44_,_tmp_reg_50_,0
sw $2, 0($17)
# was: sw _res_reg_44_, 0(_addr_reg_45_)
addi $17, $17, 4
# was: addi _addr_reg_45_, _addr_reg_45_, 4
addi $16, $16, 1
# was: addi _i_reg_46_, _i_reg_46_, 1
j _loop_beg_47_
_loop_end_48_:
lw $19, 0($20)
# was: lw _size_reg_37_, 0(_arr_reg_38_)
ori $16, $28, 0
# was: ori _letBind_23_, $28, 0
addi $3, $17, 3
# was: addi _tmp_58_, _size_reg_24_, 3
sra $3, $3, 2
# was: sra _tmp_58_, _tmp_58_, 2
sll $3, $3, 2
# was: sll _tmp_58_, _tmp_58_, 2
addi $3, $3, 4
# was: ori _arr_reg_34_, $28, 0
sll $2, $19, 2
# was: sll _tmp_58_, _size_reg_37_, 2
addi $2, $2, 4
# was: addi _tmp_58_, _tmp_58_, 4
add $28, $28, $3
add $28, $28, $2
# was: add $28, $28, _tmp_58_
sw $17, 0($16)
# was: sw _size_reg_24_, 0(_letBind_23_)
sw $19, 0($16)
# was: sw _size_reg_37_, 0(_arr_reg_34_)
addi $18, $16, 4
# was: addi _addr_reg_52_, _letBind_23_, 4
ori $19, $0, 0
# was: addi _addr_reg_52_, _arr_reg_34_, 4
ori $17, $0, 0
# was: ori _i_reg_53_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_26_, _arr_reg_25_, 4
addi $20, $20, 4
# was: addi _elem_reg_39_, _arr_reg_38_, 4
_loop_beg_54_:
sub $2, $19, $17
# was: sub _tmp_reg_56_, _i_reg_53_, _size_reg_24_
sub $2, $17, $19
# was: sub _tmp_reg_56_, _i_reg_53_, _size_reg_37_
bgez $2, _loop_end_55_
# was: bgez _tmp_reg_56_, _loop_end_55_
lw $2, 0($20)
# was: lw _res_reg_27_, 0(_elem_reg_26_)
# was: lw _res_reg_40_, 0(_elem_reg_39_)
addi $20, $20, 4
# was: addi _elem_reg_26_, _elem_reg_26_, 4
# ori $2,_res_reg_27_,0
jal chr
# was: jal chr, $2
# was: addi _elem_reg_39_, _elem_reg_39_, 4
# ori $2,_res_reg_40_,0
jal add_one
# was: jal add_one, $2
# ori _tmp_reg_57_,$2,0
# ori _res_reg_27_,_tmp_reg_57_,0
sb $2, 0($18)
# was: sb _res_reg_27_, 0(_addr_reg_52_)
addi $18, $18, 1
# was: addi _addr_reg_52_, _addr_reg_52_, 1
addi $19, $19, 1
# ori _res_reg_40_,_tmp_reg_57_,0
sw $2, 0($18)
# was: sw _res_reg_40_, 0(_addr_reg_52_)
addi $18, $18, 4
# was: addi _addr_reg_52_, _addr_reg_52_, 4
addi $17, $17, 1
# was: addi _i_reg_53_, _i_reg_53_, 1
j _loop_beg_54_
_loop_end_55_:
ori $2, $16, 0
# was: ori _tmp_59_, _letBind_23_, 0
lw $18, 0($16)
# was: lw _size_reg_33_, 0(_arr_reg_34_)
ori $17, $28, 0
# was: ori _letBind_32_, $28, 0
addi $2, $18, 3
# was: addi _tmp_65_, _size_reg_33_, 3
sra $2, $2, 2
# was: sra _tmp_65_, _tmp_65_, 2
sll $2, $2, 2
# was: sll _tmp_65_, _tmp_65_, 2
addi $2, $2, 4
# was: addi _tmp_65_, _tmp_65_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_65_
sw $18, 0($17)
# was: sw _size_reg_33_, 0(_letBind_32_)
addi $19, $17, 4
# was: addi _addr_reg_59_, _letBind_32_, 4
ori $20, $0, 0
# was: ori _i_reg_60_, $0, 0
addi $16, $16, 4
# was: addi _elem_reg_35_, _arr_reg_34_, 4
_loop_beg_61_:
sub $2, $20, $18
# was: sub _tmp_reg_63_, _i_reg_60_, _size_reg_33_
bgez $2, _loop_end_62_
# was: bgez _tmp_reg_63_, _loop_end_62_
lw $2, 0($16)
# was: lw _res_reg_36_, 0(_elem_reg_35_)
addi $16, $16, 4
# was: addi _elem_reg_35_, _elem_reg_35_, 4
# ori $2,_res_reg_36_,0
jal chr
# was: jal chr, $2
# ori _tmp_reg_64_,$2,0
# ori _res_reg_36_,_tmp_reg_64_,0
sb $2, 0($19)
# was: sb _res_reg_36_, 0(_addr_reg_59_)
addi $19, $19, 1
# was: addi _addr_reg_59_, _addr_reg_59_, 1
addi $20, $20, 1
# was: addi _i_reg_60_, _i_reg_60_, 1
j _loop_beg_61_
_loop_end_62_:
ori $2, $17, 0
# was: ori _tmp_66_, _letBind_32_, 0
ori $16, $2, 0
# was: ori _mainres_1_, _tmp_59_, 0
# ori $2,_tmp_59_,0
# was: ori _mainres_28_, _tmp_66_, 0
# ori $2,_tmp_66_,0
jal putstring
# was: jal putstring, $2
ori $2, $16, 0
# was: ori $2, _mainres_1_, 0
# was: ori $2, _mainres_28_, 0
addi $29, $29, 28
lw $20, -24($29)
lw $19, -20($29)

View File

@ -17,184 +17,240 @@
_stop_:
ori $2, $0, 10
syscall
# Function plus100
plus100:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_1_,$2,0
# ori _plus_L_3_,_param_x_1_,0
ori $3, $0, 100
# was: ori _plus_R_4_, $0, 100
add $2, $2, $3
# was: add _plus100res_2_, _plus_L_3_, _plus_R_4_
# ori $2,_plus100res_2_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function plus
plus:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_x_5_,$2,0
# ori _param_y_6_,$3,0
# ori _plus_L_8_,_param_x_5_,0
# ori _plus_R_9_,_param_y_6_,0
add $2, $2, $3
# was: add _plusres_7_, _plus_L_8_, _plus_R_9_
# ori $2,_plusres_7_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function main
main:
sw $31, -4($29)
sw $21, -28($29)
sw $20, -24($29)
sw $19, -20($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -28
addi $29, $29, -32
jal getint
# was: jal getint, $2
# ori _letBind_2_,$2,0
ori $3, $2, 0
# was: ori _size_reg_4_, _letBind_2_, 0
bgez $3, _safe_lab_5_
# was: bgez _size_reg_4_, _safe_lab_5_
# ori _letBind_11_,$2,0
# ori _size_reg_13_,_letBind_11_,0
bgez $2, _safe_lab_14_
# was: bgez _size_reg_13_, _safe_lab_14_
ori $5, $0, 6
# was: ori $5, $0, 6
la $6, _Msg_IllegalArraySize_
# was: la $6, _Msg_IllegalArraySize_
j _RuntimeError_
_safe_lab_5_:
ori $6, $28, 0
# was: ori _letBind_3_, $28, 0
sll $2, $3, 2
# was: sll _tmp_11_, _size_reg_4_, 2
addi $2, $2, 4
# was: addi _tmp_11_, _tmp_11_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_11_
sw $3, 0($6)
# was: sw _size_reg_4_, 0(_letBind_3_)
addi $5, $6, 4
# was: addi _addr_reg_6_, _letBind_3_, 4
ori $4, $0, 0
# was: ori _i_reg_7_, $0, 0
_loop_beg_8_:
sub $2, $4, $3
# was: sub _tmp_reg_10_, _i_reg_7_, _size_reg_4_
bgez $2, _loop_end_9_
# was: bgez _tmp_reg_10_, _loop_end_9_
sw $4, 0($5)
# was: sw _i_reg_7_, 0(_addr_reg_6_)
addi $5, $5, 4
# was: addi _addr_reg_6_, _addr_reg_6_, 4
addi $4, $4, 1
# was: addi _i_reg_7_, _i_reg_7_, 1
j _loop_beg_8_
_loop_end_9_:
# ori _arr_reg_14_,_letBind_3_,0
lw $2, 0($6)
# was: lw _size_reg_13_, 0(_arr_reg_14_)
ori $3, $28, 0
_safe_lab_14_:
ori $20, $28, 0
# was: ori _letBind_12_, $28, 0
sll $4, $2, 2
# was: sll _tmp_25_, _size_reg_13_, 2
addi $4, $4, 4
# was: addi _tmp_25_, _tmp_25_, 4
add $28, $28, $4
# was: add $28, $28, _tmp_25_
sw $2, 0($3)
sll $3, $2, 2
# was: sll _tmp_20_, _size_reg_13_, 2
addi $3, $3, 4
# was: addi _tmp_20_, _tmp_20_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_20_
sw $2, 0($20)
# was: sw _size_reg_13_, 0(_letBind_12_)
addi $5, $3, 4
# was: addi _addr_reg_17_, _letBind_12_, 4
ori $4, $0, 0
# was: ori _i_reg_18_, $0, 0
addi $6, $6, 4
# was: addi _elem_reg_15_, _arr_reg_14_, 4
_loop_beg_19_:
sub $7, $4, $2
# was: sub _tmp_reg_21_, _i_reg_18_, _size_reg_13_
bgez $7, _loop_end_20_
# was: bgez _tmp_reg_21_, _loop_end_20_
lw $7, 0($6)
# was: lw _res_reg_16_, 0(_elem_reg_15_)
addi $6, $6, 4
# was: addi _elem_reg_15_, _elem_reg_15_, 4
ori $8, $7, 0
# was: ori _plus_L_23_, _res_reg_16_, 0
ori $7, $0, 100
# was: ori _plus_R_24_, $0, 100
add $7, $8, $7
# was: add _fun_arg_res_22_, _plus_L_23_, _plus_R_24_
# ori _res_reg_16_,_fun_arg_res_22_,0
sw $7, 0($5)
# was: sw _res_reg_16_, 0(_addr_reg_17_)
addi $5, $20, 4
# was: addi _addr_reg_15_, _letBind_12_, 4
ori $3, $0, 0
# was: ori _i_reg_16_, $0, 0
_loop_beg_17_:
sub $4, $3, $2
# was: sub _tmp_reg_19_, _i_reg_16_, _size_reg_13_
bgez $4, _loop_end_18_
# was: bgez _tmp_reg_19_, _loop_end_18_
sw $3, 0($5)
# was: sw _i_reg_16_, 0(_addr_reg_15_)
addi $5, $5, 4
# was: addi _addr_reg_17_, _addr_reg_17_, 4
addi $4, $4, 1
# was: addi _i_reg_18_, _i_reg_18_, 1
j _loop_beg_19_
_loop_end_20_:
# ori _arr_reg_28_,_letBind_12_,0
lw $17, 0($3)
# was: lw _size_reg_27_, 0(_arr_reg_28_)
# was: addi _addr_reg_15_, _addr_reg_15_, 4
addi $3, $3, 1
# was: addi _i_reg_16_, _i_reg_16_, 1
j _loop_beg_17_
_loop_end_18_:
# ori _arr_reg_23_,_letBind_12_,0
lw $17, 0($20)
# was: lw _size_reg_22_, 0(_arr_reg_23_)
ori $16, $28, 0
# was: ori _letBind_26_, $28, 0
addi $2, $17, 3
# was: addi _tmp_37_, _size_reg_27_, 3
sra $2, $2, 2
# was: sra _tmp_37_, _tmp_37_, 2
sll $2, $2, 2
# was: sll _tmp_37_, _tmp_37_, 2
# was: ori _letBind_21_, $28, 0
sll $2, $17, 2
# was: sll _tmp_32_, _size_reg_22_, 2
addi $2, $2, 4
# was: addi _tmp_37_, _tmp_37_, 4
# was: addi _tmp_32_, _tmp_32_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_37_
# was: add $28, $28, _tmp_32_
sw $17, 0($16)
# was: sw _size_reg_27_, 0(_letBind_26_)
# was: sw _size_reg_22_, 0(_letBind_21_)
addi $19, $16, 4
# was: addi _addr_reg_31_, _letBind_26_, 4
# was: addi _addr_reg_26_, _letBind_21_, 4
ori $18, $0, 0
# was: ori _i_reg_32_, $0, 0
addi $20, $3, 4
# was: addi _elem_reg_29_, _arr_reg_28_, 4
_loop_beg_33_:
# was: ori _i_reg_27_, $0, 0
addi $21, $20, 4
# was: addi _elem_reg_24_, _arr_reg_23_, 4
_loop_beg_28_:
sub $2, $18, $17
# was: sub _tmp_reg_35_, _i_reg_32_, _size_reg_27_
bgez $2, _loop_end_34_
# was: bgez _tmp_reg_35_, _loop_end_34_
lw $2, 0($20)
# was: lw _res_reg_30_, 0(_elem_reg_29_)
# was: sub _tmp_reg_30_, _i_reg_27_, _size_reg_22_
bgez $2, _loop_end_29_
# was: bgez _tmp_reg_30_, _loop_end_29_
lw $2, 0($21)
# was: lw _res_reg_25_, 0(_elem_reg_24_)
addi $21, $21, 4
# was: addi _elem_reg_24_, _elem_reg_24_, 4
# ori $2,_res_reg_25_,0
jal plus100
# was: jal plus100, $2
# ori _tmp_reg_31_,$2,0
# ori _res_reg_25_,_tmp_reg_31_,0
sw $2, 0($19)
# was: sw _res_reg_25_, 0(_addr_reg_26_)
addi $19, $19, 4
# was: addi _addr_reg_26_, _addr_reg_26_, 4
addi $18, $18, 1
# was: addi _i_reg_27_, _i_reg_27_, 1
j _loop_beg_28_
_loop_end_29_:
# ori _arr_reg_34_,_letBind_12_,0
lw $17, 0($20)
# was: lw _size_reg_35_, 0(_arr_reg_34_)
ori $2, $0, 0
# was: ori _letBind_33_, $0, 0
addi $20, $20, 4
# was: addi _elem_reg_29_, _elem_reg_29_, 4
# ori $2,_res_reg_30_,0
# was: addi _arr_reg_34_, _arr_reg_34_, 4
ori $18, $0, 0
# was: ori _ind_var_36_, $0, 0
_loop_beg_38_:
sub $3, $18, $17
# was: sub _tmp_reg_37_, _ind_var_36_, _size_reg_35_
bgez $3, _loop_end_39_
# was: bgez _tmp_reg_37_, _loop_end_39_
lw $3, 0($20)
# was: lw _tmp_reg_37_, 0(_arr_reg_34_)
addi $20, $20, 4
# was: addi _arr_reg_34_, _arr_reg_34_, 4
# ori $2,_letBind_33_,0
# ori $3,_tmp_reg_37_,0
jal plus
# was: jal plus, $2 $3
# ori _tmp_reg_40_,$2,0
# ori _letBind_33_,_tmp_reg_40_,0
addi $18, $18, 1
# was: addi _ind_var_36_, _ind_var_36_, 1
j _loop_beg_38_
_loop_end_39_:
ori $2, $16, 0
# was: ori _arr_reg_43_, _letBind_21_, 0
lw $16, 0($2)
# was: lw _size_reg_42_, 0(_arr_reg_43_)
ori $17, $28, 0
# was: ori _letBind_41_, $28, 0
addi $3, $16, 3
# was: addi _tmp_52_, _size_reg_42_, 3
sra $3, $3, 2
# was: sra _tmp_52_, _tmp_52_, 2
sll $3, $3, 2
# was: sll _tmp_52_, _tmp_52_, 2
addi $3, $3, 4
# was: addi _tmp_52_, _tmp_52_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_52_
sw $16, 0($17)
# was: sw _size_reg_42_, 0(_letBind_41_)
addi $18, $17, 4
# was: addi _addr_reg_46_, _letBind_41_, 4
ori $19, $0, 0
# was: ori _i_reg_47_, $0, 0
addi $20, $2, 4
# was: addi _elem_reg_44_, _arr_reg_43_, 4
_loop_beg_48_:
sub $2, $19, $16
# was: sub _tmp_reg_50_, _i_reg_47_, _size_reg_42_
bgez $2, _loop_end_49_
# was: bgez _tmp_reg_50_, _loop_end_49_
lw $2, 0($20)
# was: lw _res_reg_45_, 0(_elem_reg_44_)
addi $20, $20, 4
# was: addi _elem_reg_44_, _elem_reg_44_, 4
# ori $2,_res_reg_45_,0
jal chr
# was: jal chr, $2
# ori _tmp_reg_36_,$2,0
# ori _res_reg_30_,_tmp_reg_36_,0
sb $2, 0($19)
# was: sb _res_reg_30_, 0(_addr_reg_31_)
addi $19, $19, 1
# was: addi _addr_reg_31_, _addr_reg_31_, 1
# ori _tmp_reg_51_,$2,0
# ori _res_reg_45_,_tmp_reg_51_,0
sb $2, 0($18)
# was: sb _res_reg_45_, 0(_addr_reg_46_)
addi $18, $18, 1
# was: addi _i_reg_32_, _i_reg_32_, 1
j _loop_beg_33_
_loop_end_34_:
# was: addi _addr_reg_46_, _addr_reg_46_, 1
addi $19, $19, 1
# was: addi _i_reg_47_, _i_reg_47_, 1
j _loop_beg_48_
_loop_end_49_:
ori $2, $0, 1
# was: ori _arr_ind_41_, $0, 1
addi $3, $16, 4
# was: addi _arr_reg_42_, _letBind_26_, 4
lw $4, 0($16)
# was: lw _size_reg_43_, 0(_letBind_26_)
bgez $2, _safe_lab_46_
# was: bgez _arr_ind_41_, _safe_lab_46_
_error_lab_45_:
# was: ori _arr_ind_56_, $0, 1
addi $3, $17, 4
# was: addi _arr_reg_57_, _letBind_41_, 4
lw $4, 0($17)
# was: lw _size_reg_58_, 0(_letBind_41_)
bgez $2, _safe_lab_61_
# was: bgez _arr_ind_56_, _safe_lab_61_
_error_lab_60_:
ori $5, $0, 10
# was: ori $5, $0, 10
la $6, _Msg_IllegalIndex_
# was: la $6, _Msg_IllegalIndex_
j _RuntimeError_
_safe_lab_46_:
_safe_lab_61_:
sub $4, $2, $4
# was: sub _tmp_reg_44_, _arr_ind_41_, _size_reg_43_
bgez $4, _error_lab_45_
# was: bgez _tmp_reg_44_, _error_lab_45_
# was: sub _tmp_reg_59_, _arr_ind_56_, _size_reg_58_
bgez $4, _error_lab_60_
# was: bgez _tmp_reg_59_, _error_lab_60_
add $3, $3, $2
# was: add _arr_reg_42_, _arr_reg_42_, _arr_ind_41_
# was: add _arr_reg_57_, _arr_reg_57_, _arr_ind_56_
lb $2, 0($3)
# was: lb _arg_40_, 0(_arr_reg_42_)
# ori $2,_arg_40_,0
# was: lb _arg_55_, 0(_arr_reg_57_)
# ori $2,_arg_55_,0
jal ord
# was: jal ord, $2
# ori _tmp_39_,$2,0
# ori _letBind_38_,_tmp_39_,0
# ori $2,_letBind_38_,0
# ori _tmp_54_,$2,0
# ori _letBind_53_,_tmp_54_,0
# ori $2,_letBind_53_,0
jal putint
# was: jal putint, $2
ori $2, $16, 0
# was: ori _tmp_47_, _letBind_26_, 0
ori $2, $17, 0
# was: ori _tmp_62_, _letBind_41_, 0
ori $16, $2, 0
# was: ori _mainres_1_, _tmp_47_, 0
# ori $2,_tmp_47_,0
# was: ori _mainres_10_, _tmp_62_, 0
# ori $2,_tmp_62_,0
jal putstring
# was: jal putstring, $2
ori $2, $16, 0
# was: ori $2, _mainres_1_, 0
addi $29, $29, 28
# was: ori $2, _mainres_10_, 0
addi $29, $29, 32
lw $21, -28($29)
lw $20, -24($29)
lw $19, -20($29)
lw $18, -16($29)

View File

@ -17,79 +17,98 @@
_stop_:
ori $2, $0, 10
syscall
# Function incr
incr:
sw $31, -4($29)
addi $29, $29, -8
# ori _param_a_1_,$2,0
# ori _param_b_2_,$3,0
# ori _plus_L_4_,_param_a_1_,0
# ori _plus_R_5_,_param_b_2_,0
add $2, $2, $3
# was: add _incrres_3_, _plus_L_4_, _plus_R_5_
# ori $2,_incrres_3_,0
addi $29, $29, 8
lw $31, -4($29)
jr $31
# Function main
main:
sw $31, -4($29)
sw $18, -16($29)
sw $17, -12($29)
sw $16, -8($29)
addi $29, $29, -12
ori $4, $0, 3
# was: ori _size_reg_9_, $0, 3
ori $2, $28, 0
# was: ori _arr_reg_3_, $28, 0
sll $3, $4, 2
# was: sll _tmp_12_, _size_reg_9_, 2
addi $3, $3, 4
# was: addi _tmp_12_, _tmp_12_, 4
add $28, $28, $3
# was: add $28, $28, _tmp_12_
sw $4, 0($2)
# was: sw _size_reg_9_, 0(_arr_reg_3_)
addi $4, $2, 4
# was: addi _addr_reg_10_, _arr_reg_3_, 4
ori $3, $0, 1
# was: ori _tmp_reg_11_, $0, 1
sw $3, 0($4)
# was: sw _tmp_reg_11_, 0(_addr_reg_10_)
addi $4, $4, 4
# was: addi _addr_reg_10_, _addr_reg_10_, 4
ori $3, $0, 2
# was: ori _tmp_reg_11_, $0, 2
sw $3, 0($4)
# was: sw _tmp_reg_11_, 0(_addr_reg_10_)
addi $4, $4, 4
# was: addi _addr_reg_10_, _addr_reg_10_, 4
addi $29, $29, -20
ori $3, $0, 3
# was: ori _tmp_reg_11_, $0, 3
sw $3, 0($4)
# was: sw _tmp_reg_11_, 0(_addr_reg_10_)
addi $4, $4, 4
# was: addi _addr_reg_10_, _addr_reg_10_, 4
lw $3, 0($2)
# was: lw _size_reg_4_, 0(_arr_reg_3_)
ori $6, $0, 0
# was: ori _letBind_2_, $0, 0
# was: ori _size_reg_14_, $0, 3
ori $16, $28, 0
# was: ori _arr_reg_8_, $28, 0
sll $2, $3, 2
# was: sll _tmp_17_, _size_reg_14_, 2
addi $2, $2, 4
# was: addi _arr_reg_3_, _arr_reg_3_, 4
ori $4, $0, 0
# was: ori _ind_var_5_, $0, 0
_loop_beg_7_:
sub $5, $4, $3
# was: sub _tmp_reg_6_, _ind_var_5_, _size_reg_4_
bgez $5, _loop_end_8_
# was: bgez _tmp_reg_6_, _loop_end_8_
lw $5, 0($2)
# was: lw _tmp_reg_6_, 0(_arr_reg_3_)
addi $2, $2, 4
# was: addi _arr_reg_3_, _arr_reg_3_, 4
# ori _plus_L_14_,_letBind_2_,0
# ori _plus_R_15_,_tmp_reg_6_,0
add $6, $6, $5
# was: add _fun_arg_res_13_, _plus_L_14_, _plus_R_15_
# ori _letBind_2_,_fun_arg_res_13_,0
addi $4, $4, 1
# was: addi _ind_var_5_, _ind_var_5_, 1
j _loop_beg_7_
_loop_end_8_:
# ori _tmp_16_,_letBind_2_,0
ori $16, $6, 0
# was: ori _mainres_1_, _tmp_16_, 0
# was: addi _tmp_17_, _tmp_17_, 4
add $28, $28, $2
# was: add $28, $28, _tmp_17_
sw $3, 0($16)
# was: sw _size_reg_14_, 0(_arr_reg_8_)
addi $3, $16, 4
# was: addi _addr_reg_15_, _arr_reg_8_, 4
ori $2, $0, 1
# was: ori _tmp_reg_16_, $0, 1
sw $2, 0($3)
# was: sw _tmp_reg_16_, 0(_addr_reg_15_)
addi $3, $3, 4
# was: addi _addr_reg_15_, _addr_reg_15_, 4
ori $2, $0, 2
# was: ori _tmp_reg_16_, $0, 2
sw $2, 0($3)
# was: sw _tmp_reg_16_, 0(_addr_reg_15_)
addi $3, $3, 4
# was: addi _addr_reg_15_, _addr_reg_15_, 4
ori $2, $0, 3
# was: ori _tmp_reg_16_, $0, 3
sw $2, 0($3)
# was: sw _tmp_reg_16_, 0(_addr_reg_15_)
addi $3, $3, 4
# was: addi _addr_reg_15_, _addr_reg_15_, 4
lw $17, 0($16)
# was: lw _size_reg_9_, 0(_arr_reg_8_)
ori $2, $0, 0
# was: ori _letBind_7_, $0, 0
addi $16, $16, 4
# was: addi _arr_reg_8_, _arr_reg_8_, 4
ori $18, $0, 0
# was: ori _ind_var_10_, $0, 0
_loop_beg_12_:
sub $3, $18, $17
# was: sub _tmp_reg_11_, _ind_var_10_, _size_reg_9_
bgez $3, _loop_end_13_
# was: bgez _tmp_reg_11_, _loop_end_13_
lw $3, 0($16)
# was: lw _tmp_reg_11_, 0(_arr_reg_8_)
addi $16, $16, 4
# was: addi _arr_reg_8_, _arr_reg_8_, 4
# ori $2,_letBind_7_,0
# ori $3,_tmp_reg_11_,0
jal incr
# was: jal incr, $2 $3
# ori _tmp_reg_18_,$2,0
# ori _letBind_7_,_tmp_reg_18_,0
addi $18, $18, 1
# was: addi _ind_var_10_, _ind_var_10_, 1
j _loop_beg_12_
_loop_end_13_:
# ori _tmp_19_,_letBind_7_,0
ori $16, $2, 0
# was: ori _mainres_6_, _tmp_19_, 0
ori $2, $16, 0
# was: ori $2, _mainres_1_, 0
# was: ori $2, _mainres_6_, 0
jal putint
# was: jal putint, $2
ori $2, $16, 0
# was: ori $2, _mainres_1_, 0
addi $29, $29, 12
# was: ori $2, _mainres_6_, 0
addi $29, $29, 20
lw $18, -16($29)
lw $17, -12($29)
lw $16, -8($29)
lw $31, -4($29)
jr $31