--- source: src/main.rs expression: parsed input_file: test-data/lua5.3-tests/bitwise.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing bitwise operations\"", ), ], ], ), ], line: 4, }, Variable { names: [ ( "numbits", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "packsize", ), Call( [ [ Symbol( "'j'", ), ], ], ), ], line: 6, }, Operator( ( "*", true, ), ), Symbol( "8", ), ], ], line: 6, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "~", false, ), ), Symbol( "0", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Expr( [ Ident { expr: [ Symbol( "numbits", ), ], line: 10, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 10, }, ], ), Ident { expr: [], line: 10, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "mininteger", ), ], line: 10, }, ], ], ), ], line: 8, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ( "c", false, ), ( "d", false, ), ], values: [], line: 14, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 14, }, ], values: [ [ Symbol( "0xFFFFFFFFFFFFFFFF", ), ], ], line: 15, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 16, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 16, }, Operator( ( "&", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 16, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 16, }, Operator( ( "&", true, ), ), Symbol( "35", ), Operator( ( "==", true, ), ), Symbol( "35", ), ], ], ), ], line: 15, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 16, }, ], values: [ [ Symbol( "0xF0F0F0F0F0F0F0F0", ), ], ], line: 17, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 18, }, Operator( ( "|", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 19, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, Operator( ( "~", true, ), ), Symbol( "0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, Operator( ( "~", true, ), ), Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 19, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 20, }, Operator( ( ">>", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 20, }, ], ], ), ], line: 19, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 20, }, ], values: [ [ Symbol( "0xF0", ), ], ], line: 21, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 21, }, ], values: [ [ Symbol( "0xCC", ), ], ], line: 21, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 21, }, ], values: [ [ Symbol( "0xAA", ), ], ], line: 21, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 21, }, ], values: [ [ Symbol( "0xFD", ), ], ], line: 21, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 22, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 22, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 22, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 22, }, Operator( ( "==", true, ), ), Symbol( "0xF4", ), ], ], ), ], line: 21, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 22, }, ], values: [ [ Symbol( "240", ), ], ], line: 24, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 24, }, ], values: [ [ Symbol( "204", ), ], ], line: 24, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 24, }, ], values: [ [ Symbol( "\"0xAA.0\"", ), ], ], line: 24, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 24, }, ], values: [ [ Symbol( "\"0xFD.0\"", ), ], ], line: 24, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 25, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 25, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 25, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 25, }, Operator( ( "==", true, ), ), Symbol( "0xF4", ), ], ], ), ], line: 24, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 25, }, ], values: [ [ Symbol( "0xF0000000", ), ], ], line: 27, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 27, }, ], values: [ [ Symbol( "0xCC000000", ), ], ], line: 27, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 27, }, ], values: [ [ Symbol( "0xAA000000", ), ], ], line: 28, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 28, }, ], values: [ [ Symbol( "0xFD000000", ), ], ], line: 28, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 29, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 29, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 29, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "0xF4000000", ), ], ], ), ], line: 28, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "~", false, ), ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "and", true, ), ), Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 30, }, Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "d", ), ], line: 30, }, Operator( ( "==", true, ), ), Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "d", ), ], line: 30, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 29, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, Operator( ( "<<", true, ), ), Symbol( "32", ), ], ], line: 32, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 32, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 33, }, Operator( ( "<<", true, ), ), Symbol( "32", ), ], ], line: 33, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 33, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 34, }, Operator( ( "<<", true, ), ), Symbol( "32", ), ], ], line: 34, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 34, }, ], values: [ [ Ident { expr: [ Symbol( "d", ), ], line: 35, }, Operator( ( "<<", true, ), ), Symbol( "32", ), ], ], line: 35, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 36, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 36, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 36, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 36, }, Operator( ( "==", true, ), ), Symbol( "0xF4000000", ), Operator( ( "<<", true, ), ), Symbol( "32", ), ], ], ), ], line: 35, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "~", false, ), ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 37, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 37, }, Operator( ( "and", true, ), ), Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 37, }, Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 37, }, Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "d", ), ], line: 37, }, Operator( ( "==", true, ), ), Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "d", ), ], line: 37, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( ">>", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Expr( [ Ident { expr: [ Symbol( "numbits", ), ], line: 39, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 39, }, ], ), Ident { expr: [], line: 39, }, Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "31", ), Operator( ( "==", true, ), ), Symbol( "0x80000000", ), ], ], ), ], line: 37, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( ">>", true, ), ), Expr( [ Ident { expr: [ Symbol( "numbits", ), ], line: 40, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 40, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "numbits", ), ], line: 41, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( ">>", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "numbits", ), ], line: 42, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Ident { expr: [ Symbol( "numbits", ), ], line: 43, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "numbits", ), ], line: 44, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 40, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "30", ), Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 46, }, Operator( ( "<<", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "30", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 44, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "30", ), Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 47, }, Operator( ( ">>", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "30", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 46, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1", ), Operator( ( ">>", true, ), ), Operator( ( "-", false, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Symbol( "1000", ), Operator( ( ">>", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Symbol( "1000", ), Operator( ( "<<", true, ), ), Operator( ( "-", false, ), ), Symbol( "5", ), ], ], ), ], line: 47, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"0xffffffffffffffff\"", ), Operator( ( "|", true, ), ), Symbol( "0", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 49, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"0xfffffffffffffffe\"", ), Operator( ( "&", true, ), ), Symbol( "\"-1\"", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 53, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\" \\t-0xfffffffffffffffe\\n\\t\"", ), Operator( ( "&", true, ), ), Symbol( "\"-1\"", ), Operator( ( "==", true, ), ), Symbol( "2", ), ], ], ), ], line: 54, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\" \\n -45 \\t \"", ), Operator( ( ">>", true, ), ), Symbol( "\" -2 \"", ), Operator( ( "==", true, ), ), Operator( ( "-", false, ), ), Symbol( "45", ), Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 55, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 444, code: [ Return( Some( [ [ Symbol( "\"0xffffffffffffffff.0\"", ), Operator( ( "|", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 449, }, line: 59, column: 13, }, ], ], ), ], line: 59, }, ], ], ), ], line: 56, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 459, code: [ Return( Some( [ [ Symbol( "\"0xffffffffffffffff\\0\"", ), Operator( ( "|", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 464, }, line: 62, column: 13, }, ], ], ), ], line: 62, }, ], ], ), ], line: 59, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 62, }, Alter { names: [ Ident { expr: [ Symbol( "package", ), Symbol( ".", ), Symbol( "preload", ), Symbol( ".", ), Symbol( "bit32", ), ], line: 64, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 477, code: [ Variable { names: [ ( "bit", false, ), ], values: [ [ Table { data: [], line: 71, column: 5, }, ], ], line: 73, column: 0, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "bnot", ), ], args: [ "a", ], body: CodeBlock { start: 12, code: [ Return( Some( [ [ Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 74, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 18, }, line: 75, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "band", ), ], args: [ "x", "y", "z", "...", ], body: CodeBlock { start: 31, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "z", ), ], line: 84, }, ], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 85, }, Operator( ( "or", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 85, }, Operator( ( "&", true, ), ), Expr( [ Ident { expr: [ Symbol( "y", ), ], line: 85, }, Operator( ( "or", true, ), ), Operator( ( "-", false, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 85, }, ], ), Ident { expr: [], line: 85, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 23, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 23, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 87, column: 6, }, ], ], line: 88, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 88, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 88, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 88, }, ], ], line: 89, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 89, }, ], step: None, code: CodeBlock { start: 22, code: [ Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 89, }, ], values: [ [ Ident { expr: [ Symbol( "res", ), ], line: 89, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 89, }, ], ), Symbol( "]", ), ], line: 89, }, ], ], line: 89, column: 8, }, ], end: 31, }, line: 89, column: 17, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 90, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 59, }, next: None, line: 91, column: 1, }, ), line: 91, column: 1, }, ], end: 91, }, line: 92, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "bor", ), ], args: [ "x", "y", "z", "...", ], body: CodeBlock { start: 104, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "z", ), ], line: 95, }, ], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 96, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 96, }, Operator( ( "|", true, ), ), Expr( [ Ident { expr: [ Symbol( "y", ), ], line: 96, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 96, }, ], ), Ident { expr: [], line: 96, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 21, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 21, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 98, column: 6, }, ], ], line: 99, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 99, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 99, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 99, }, ], ], line: 100, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 100, }, ], step: None, code: CodeBlock { start: 22, code: [ Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 100, }, ], values: [ [ Ident { expr: [ Symbol( "res", ), ], line: 100, }, Operator( ( "|", true, ), ), Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 100, }, ], ), Symbol( "]", ), ], line: 100, }, ], ], line: 100, column: 8, }, ], end: 31, }, line: 100, column: 17, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 101, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 57, }, next: None, line: 102, column: 1, }, ), line: 102, column: 1, }, ], end: 162, }, line: 103, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "bxor", ), ], args: [ "x", "y", "z", "...", ], body: CodeBlock { start: 175, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "z", ), ], line: 106, }, ], body: CodeBlock { start: 4, code: [ Return( Some( [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "x", ), ], line: 107, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 107, }, Operator( ( "~", true, ), ), Expr( [ Ident { expr: [ Symbol( "y", ), ], line: 107, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 107, }, ], ), Ident { expr: [], line: 107, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 21, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 21, code: [ Variable { names: [ ( "arg", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 109, column: 6, }, ], ], line: 110, column: 0, }, Variable { names: [ ( "res", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 110, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 110, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 110, }, ], ], line: 111, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "arg", ), ], line: 111, }, ], step: None, code: CodeBlock { start: 22, code: [ Alter { names: [ Ident { expr: [ Symbol( "res", ), ], line: 111, }, ], values: [ [ Ident { expr: [ Symbol( "res", ), ], line: 111, }, Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "arg", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 111, }, ], ), Symbol( "]", ), ], line: 111, }, ], ], line: 111, column: 8, }, ], end: 31, }, line: 111, column: 17, }, Return( Some( [ [ Ident { expr: [ Symbol( "res", ), ], line: 112, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 57, }, next: None, line: 113, column: 1, }, ), line: 113, column: 1, }, ], end: 233, }, line: 114, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "btest", ), ], args: [ "...", ], body: CodeBlock { start: 240, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 117, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ], ), ), ], end: 250, }, line: 118, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "lshift", ), ], args: [ "a", "b", ], body: CodeBlock { start: 259, code: [ Return( Some( [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 121, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ), Ident { expr: [], line: 121, }, Operator( ( "<<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 121, }, ], ), Ident { expr: [], line: 121, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 272, }, line: 122, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "rshift", ), ], args: [ "a", "b", ], body: CodeBlock { start: 281, code: [ Return( Some( [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 125, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ), Ident { expr: [], line: 125, }, Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 125, }, ], ), Ident { expr: [], line: 125, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 294, }, line: 126, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "arshift", ), ], args: [ "a", "b", ], body: CodeBlock { start: 303, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 129, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 129, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], line: 130, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "b", ), ], line: 130, }, Operator( ( "<=", true, ), ), Symbol( "0", ), Operator( ( "or", true, ), ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, Operator( ( "&", true, ), ), Symbol( "0x80000000", ), ], ), Ident { expr: [], line: 130, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], body: CodeBlock { start: 18, code: [ Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 131, }, Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 131, }, ], ), Ident { expr: [], line: 131, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 27, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 27, code: [ Return( Some( [ [ Expr( [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 133, }, Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 133, }, ], ), Ident { expr: [], line: 133, }, Operator( ( "|", true, ), ), Operator( ( "~", false, ), ), Expr( [ Symbol( "0xFFFFFFFF", ), Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 133, }, ], ), Ident { expr: [], line: 133, }, ], ), Ident { expr: [], line: 133, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 45, }, next: None, line: 134, column: 1, }, ), line: 134, column: 1, }, ], end: 349, }, line: 135, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "lrotate", ), ], args: [ "a", "b", ], body: CodeBlock { start: 358, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 138, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 138, }, Operator( ( "&", true, ), ), Symbol( "31", ), ], ], line: 138, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 138, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 139, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], line: 139, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 139, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 140, }, Operator( ( "<<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 140, }, ], ), Ident { expr: [], line: 140, }, Operator( ( "|", true, ), ), Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 140, }, Operator( ( ">>", true, ), ), Expr( [ Symbol( "32", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 140, }, ], ), Ident { expr: [], line: 140, }, ], ), Ident { expr: [], line: 140, }, ], ], line: 141, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 141, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 390, }, line: 142, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "rrotate", ), ], args: [ "a", "b", ], body: CodeBlock { start: 399, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 145, }, ], [ Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "b", ), ], line: 145, }, ], ], ), ], line: 145, }, ], ], ), ), ], end: 410, }, line: 146, column: 1, }, Function { local: true, name: [ Symbol( "checkfield", ), ], args: [ "f", "w", ], body: CodeBlock { start: 418, code: [ Alter { names: [ Ident { expr: [ Symbol( "w", ), ], line: 149, }, ], values: [ [ Ident { expr: [ Symbol( "w", ), ], line: 149, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ], line: 149, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 150, }, Operator( ( ">=", true, ), ), Symbol( "0", ), ], [ Symbol( "\"field cannot be negative\"", ), ], ], ), ], line: 149, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "w", ), ], line: 151, }, Operator( ( ">", true, ), ), Symbol( "0", ), ], [ Symbol( "\"width must be positive\"", ), ], ], ), ], line: 150, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 152, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "w", ), ], line: 152, }, Operator( ( "<=", true, ), ), Symbol( "32", ), ], [ Symbol( "\"trying to access non-existent bits\"", ), ], ], ), ], line: 151, }, Return( Some( [ [ Ident { expr: [ Symbol( "f", ), ], line: 153, }, ], [ Operator( ( "~", false, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "<<", true, ), ), Ident { expr: [ Symbol( "w", ), ], line: 153, }, ], ), Ident { expr: [], line: 153, }, ], ], ), ), ], end: 460, }, line: 154, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "extract", ), ], args: [ "a", "f", "w", ], body: CodeBlock { start: 471, code: [ Variable { names: [ ( "f", false, ), ( "mask", false, ), ], values: [ [ Ident { expr: [ Symbol( "checkfield", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 157, }, ], [ Ident { expr: [ Symbol( "w", ), ], line: 157, }, ], ], ), ], line: 157, }, ], ], line: 158, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 158, }, Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "f", ), ], line: 158, }, ], ), Ident { expr: [], line: 158, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "mask", ), ], line: 158, }, ], ], ), ), ], end: 491, }, line: 159, column: 1, }, Function { local: false, name: [ Symbol( "bit", ), Symbol( ".", ), Symbol( "replace", ), ], args: [ "a", "v", "f", "w", ], body: CodeBlock { start: 504, code: [ Variable { names: [ ( "f", false, ), ( "mask", false, ), ], values: [ [ Ident { expr: [ Symbol( "checkfield", ), Call( [ [ Ident { expr: [ Symbol( "f", ), ], line: 162, }, ], [ Ident { expr: [ Symbol( "w", ), ], line: 162, }, ], ], ), ], line: 162, }, ], ], line: 162, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "v", ), ], line: 162, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 163, }, Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "mask", ), ], line: 163, }, ], ], line: 163, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 163, }, ], values: [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 164, }, Operator( ( "&", true, ), ), Operator( ( "~", false, ), ), Expr( [ Ident { expr: [ Symbol( "mask", ), ], line: 164, }, Operator( ( "<<", true, ), ), Ident { expr: [ Symbol( "f", ), ], line: 164, }, ], ), Ident { expr: [], line: 164, }, ], ), Ident { expr: [], line: 164, }, Operator( ( "|", true, ), ), Expr( [ Ident { expr: [ Symbol( "v", ), ], line: 164, }, Operator( ( "<<", true, ), ), Ident { expr: [ Symbol( "f", ), ], line: 164, }, ], ), Ident { expr: [], line: 164, }, ], ], line: 165, column: 0, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 165, }, Operator( ( "&", true, ), ), Symbol( "0xFFFFFFFF", ), ], ], ), ), ], end: 543, }, line: 166, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "bit", ), ], line: 168, }, ], ], ), ), ], end: 1023, }, line: 170, column: 1, }, ], ], line: 170, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"testing bitwise library\"", ), ], ], ), ], line: 170, }, Variable { names: [ ( "bit32", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "'bit32'", ), ], ], ), ], line: 175, }, ], ], line: 175, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [], ), ], line: 177, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 177, }, ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "btest", ), Call( [], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [], ), ], line: 179, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bxor", ), Call( [], ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [], ), ], line: 182, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Symbol( "0xffffffff", ), ], ], ), ], line: 182, }, ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "33", ), ], ), Ident { expr: [], line: 188, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 188, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "33", ), ], ), Ident { expr: [], line: 189, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 189, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 188, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "33", ), ], ), Ident { expr: [], line: 190, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 190, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 189, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "33", ), ], ), Ident { expr: [], line: 191, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 191, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 190, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "40", ), ], ), Ident { expr: [], line: 192, }, ], ], ), ], line: 192, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 191, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "40", ), ], ], ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 192, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Operator( ( "-", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "40", ), ], ), Ident { expr: [], line: 194, }, Operator( ( "-", true, ), ), Symbol( "2", ), ], ], ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffe", ), ], ], ), ], line: 193, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "40", ), ], ), Ident { expr: [], line: 195, }, Operator( ( "-", true, ), ), Symbol( "4", ), ], ], ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffc", ), ], ], ), ], line: 194, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 197, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 195, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "7", ), ], ], ), ], line: 198, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 197, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "0", ), ], ], ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "0x12345678", ), ], ], ), ], line: 198, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "32", ), ], ], ), ], line: 200, }, Operator( ( "==", true, ), ), Symbol( "0x12345678", ), ], ], ), ], line: 199, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "4", ), ], ], ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "0x23456781", ), ], ], ), ], line: 200, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rrotate", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 202, }, Operator( ( "==", true, ), ), Symbol( "0x23456781", ), ], ], ), ], line: 201, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "8", ), ], ], ), ], line: 203, }, Operator( ( "==", true, ), ), Symbol( "0x78123456", ), ], ], ), ], line: 202, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rrotate", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "8", ), ], ], ), ], line: 204, }, Operator( ( "==", true, ), ), Symbol( "0x78123456", ), ], ], ), ], line: 203, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0xaaaaaaaa", ), ], [ Symbol( "2", ), ], ], ), ], line: 205, }, Operator( ( "==", true, ), ), Symbol( "0xaaaaaaaa", ), ], ], ), ], line: 204, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0xaaaaaaaa", ), ], [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 206, }, Operator( ( "==", true, ), ), Symbol( "0xaaaaaaaa", ), ], ], ), ], line: 205, }, ForLoop { iter: "i", start: [ Operator( ( "-", false, ), ), Symbol( "50", ), ], end: [ Symbol( "50", ), ], step: None, code: CodeBlock { start: 1393, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0x89abcdef", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 208, }, ], ], ), ], line: 208, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Symbol( "0x89abcdef", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 208, }, Operator( ( "%", true, ), ), Symbol( "32", ), ], ], ), ], line: 208, }, ], ], ), ], line: 208, }, ], end: 1416, }, line: 209, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "4", ), ], ], ), ], line: 211, }, Operator( ( "==", true, ), ), Symbol( "0x23456780", ), ], ], ), ], line: 209, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "8", ), ], ], ), ], line: 212, }, Operator( ( "==", true, ), ), Symbol( "0x34567800", ), ], ], ), ], line: 211, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "0x01234567", ), ], ], ), ], line: 212, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "8", ), ], ], ), ], line: 214, }, Operator( ( "==", true, ), ), Symbol( "0x00123456", ), ], ], ), ], line: 213, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "32", ), ], ], ), ], line: 215, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "32", ), ], ], ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 215, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "4", ), ], ], ), ], line: 217, }, Operator( ( "==", true, ), ), Symbol( "0x01234567", ), ], ], ), ], line: 216, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "8", ), ], ], ), ], line: 218, }, Operator( ( "==", true, ), ), Symbol( "0x00123456", ), ], ], ), ], line: 217, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "32", ), ], ], ), ], line: 219, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 218, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "32", ), ], ], ), ], line: 220, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 219, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "0", ), ], ], ), ], line: 221, }, Operator( ( "==", true, ), ), Symbol( "0x12345678", ), ], ], ), ], line: 220, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "1", ), ], ], ), ], line: 222, }, Operator( ( "==", true, ), ), Symbol( "0x12345678", ), Operator( ( "//", true, ), ), Symbol( "2", ), ], ], ), ], line: 221, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Symbol( "0x12345678", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 223, }, Operator( ( "==", true, ), ), Symbol( "0x12345678", ), Operator( ( "*", true, ), ), Symbol( "2", ), ], ], ), ], line: 222, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "1", ), ], ], ), ], line: 224, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 223, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "24", ), ], ], ), ], line: 225, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 224, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "32", ), ], ], ), ], line: 226, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 225, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "arshift", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 227, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( "*", true, ), ), Symbol( "2", ), ], [ Symbol( "0xffffffff", ), ], ], ), ], line: 227, }, ], ], ), ], line: 226, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( "<<", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Symbol( "0x123456780", ), ], ], ), ], line: 227, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( "<<", true, ), ), Symbol( "8", ), Operator( ( "==", true, ), ), Symbol( "0x1234567800", ), ], ], ), ], line: 229, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( "<<", true, ), ), Operator( ( "-", false, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Symbol( "0x01234567", ), ], ], ), ], line: 230, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( "<<", true, ), ), Operator( ( "-", false, ), ), Symbol( "8", ), Operator( ( "==", true, ), ), Symbol( "0x00123456", ), ], ], ), ], line: 231, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( "<<", true, ), ), Symbol( "32", ), Operator( ( "==", true, ), ), Symbol( "0x1234567800000000", ), ], ], ), ], line: 232, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( "<<", true, ), ), Operator( ( "-", false, ), ), Symbol( "32", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 233, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( ">>", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Symbol( "0x01234567", ), ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( ">>", true, ), ), Symbol( "8", ), Operator( ( "==", true, ), ), Symbol( "0x00123456", ), ], ], ), ], line: 235, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( ">>", true, ), ), Symbol( "32", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 236, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0x12345678", ), Operator( ( ">>", true, ), ), Operator( ( "-", false, ), ), Symbol( "32", ), Operator( ( "==", true, ), ), Symbol( "0x1234567800000000", ), ], ], ), ], line: 237, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 238, }, Variable { names: [ ( "c", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "0x80000000", ), ], ), ( None, [ Symbol( "0xaaaaaaaa", ), ], ), ( None, [ Symbol( "0x55555555", ), ], ), ( None, [ Symbol( "0xffffffff", ), ], ), ( None, [ Symbol( "0x7fffffff", ), ], ), ], line: 243, column: 4, }, ], ], line: 245, column: 0, }, ForFuncLoop { iters: [ "_", "b", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 245, }, ], ], ), ], line: 245, }, ], stop: None, initial: None, code: CodeBlock { start: 1783, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 246, }, ], ], ), ], line: 246, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 246, }, ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 247, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 247, }, ], ], ), ], line: 247, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 247, }, ], ], ), ], line: 246, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 248, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 248, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 248, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 248, }, ], ], ), ], line: 248, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 248, }, ], ], ), ], line: 247, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "btest", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 249, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 249, }, ], ], ), ], line: 249, }, Operator( ( "==", true, ), ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 249, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 249, }, ], ], ), ], line: 248, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 250, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 250, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 250, }, ], ], ), ], line: 250, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 250, }, ], ], ), ], line: 249, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 251, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 251, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 251, }, ], [ Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "b", ), ], line: 251, }, ], ], ), ], line: 251, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 250, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "btest", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, ], ], ), ], line: 252, }, Operator( ( "==", true, ), ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, Operator( ( "~=", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 252, }, ], ], ), ], line: 251, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 253, }, ], [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 253, }, ], ], ), ], line: 253, }, ], ], ), ], line: 253, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 252, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 254, }, ], [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 254, }, ], ], ), ], line: 254, }, ], ], ), ], line: 254, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 254, }, ], ], ), ], line: 253, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 255, }, ], ], ), ], line: 255, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 255, }, ], ], ), ], line: 254, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 256, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 256, }, ], ], ), ], line: 256, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 256, }, ], ], ), ], line: 255, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 257, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 257, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 257, }, ], ], ), ], line: 257, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 257, }, ], ], ), ], line: 256, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 258, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 258, }, ], [ Symbol( "0", ), ], [ Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "b", ), ], line: 258, }, ], ], ), ], line: 258, }, Operator( ( "==", true, ), ), Symbol( "0xffffffff", ), ], ], ), ], line: 257, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bxor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 259, }, ], ], ), ], line: 259, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 259, }, ], ], ), ], line: 258, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bxor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 260, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 260, }, ], ], ), ], line: 260, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 259, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bxor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 261, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 261, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 261, }, ], ], ), ], line: 261, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 261, }, ], ], ), ], line: 260, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bxor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 262, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 262, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 262, }, ], [ Ident { expr: [ Symbol( "b", ), ], line: 262, }, ], ], ), ], line: 262, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 261, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bxor", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 263, }, ], [ Symbol( "0", ), ], ], ), ], line: 263, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 263, }, ], ], ), ], line: 262, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 264, }, ], ], ), ], line: 264, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 264, }, ], ], ), ], line: 263, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 265, }, ], ], ), ], line: 265, }, ], ], ), ], line: 265, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 265, }, ], ], ), ], line: 264, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 266, }, ], ], ), ], line: 266, }, Operator( ( "==", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "32", ), ], ), Ident { expr: [], line: 266, }, Operator( ( "-", true, ), ), Symbol( "1", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 266, }, ], ], ), ], line: 265, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lrotate", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 267, }, ], [ Symbol( "32", ), ], ], ), ], line: 267, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 267, }, ], ], ), ], line: 266, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rrotate", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 268, }, ], [ Symbol( "32", ), ], ], ), ], line: 268, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 268, }, ], ], ), ], line: 267, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 269, }, ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 269, }, ], [ Symbol( "4", ), ], ], ), ], line: 269, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 269, }, ], [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Symbol( "0xf", ), ], ], ), ], line: 269, }, ], ], ), ], line: 269, }, ], ], ), ], line: 268, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 270, }, ], [ Symbol( "4", ), ], ], ), ], line: 270, }, ], [ Operator( ( "-", false, ), ), Symbol( "4", ), ], ], ), ], line: 270, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 270, }, ], [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), Call( [ [ Symbol( "0xf", ), ], ], ), ], line: 270, }, ], ], ), ], line: 270, }, ], ], ), ], line: 269, }, ], end: 2199, }, line: 271, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 271, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "0x800000", ), ], ), ( None, [ Symbol( "0xaaaaaa", ), ], ), ( None, [ Symbol( "0x555555", ), ], ), ( None, [ Symbol( "0xffffff", ), ], ), ( None, [ Symbol( "0x7fffff", ), ], ), ], line: 274, column: 23, }, ], ], line: 275, column: 0, }, ForFuncLoop { iters: [ "_", "b", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 275, }, ], ], ), ], line: 275, }, ], stop: None, initial: None, code: CodeBlock { start: 2232, code: [ ForLoop { iter: "i", start: [ Operator( ( "-", false, ), ), Symbol( "40", ), ], end: [ Symbol( "40", ), ], step: None, code: CodeBlock { start: 8, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 277, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 277, }, ], ], ), ], line: 277, }, ], ], line: 278, column: 0, }, Variable { names: [ ( "y", false, ), ], values: [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "fmod", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 278, }, Operator( ( "*", true, ), ), Symbol( "2.0", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 278, }, ], [ Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ], ), ], line: 278, }, ], ], ), ], line: 278, }, ], ], line: 278, column: 22, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "fmod", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 279, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 279, }, ], [ Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "32", ), ], ], ), ], line: 279, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 278, }, ], end: 59, }, line: 280, column: 1, }, ], end: 2292, }, line: 281, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "band", ), ], line: 283, }, ], [ Table { data: [], line: 283, column: 11, }, ], ], ), ], line: 283, }, ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bnot", ), ], line: 284, }, ], [ Symbol( "\"a\"", ), ], ], ), ], line: 284, }, ], ], ), ], line: 283, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), ], line: 285, }, ], [ Symbol( "45", ), ], ], ), ], line: 285, }, ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "lshift", ), ], line: 286, }, ], [ Symbol( "45", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 286, }, ], ], ), ], line: 286, }, ], ], ), ], line: 285, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "rshift", ), ], line: 287, }, ], [ Symbol( "45", ), ], [ Ident { expr: [ Symbol( "print", ), ], line: 287, }, ], ], ), ], line: 287, }, ], ], ), ], line: 286, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 287, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "0", ), ], [ Symbol( "4", ), ], ], ), ], line: 294, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], ], ), ], line: 289, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "4", ), ], [ Symbol( "4", ), ], ], ), ], line: 295, }, Operator( ( "==", true, ), ), Symbol( "7", ), ], ], ), ], line: 294, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), Call( [ [ Symbol( "0xa0001111", ), ], [ Symbol( "28", ), ], [ Symbol( "4", ), ], ], ), ], line: 296, }, Operator( ( "==", true, ), ), Symbol( "0xa", ), ], ], ), ], line: 295, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), Call( [ [ Symbol( "0xa0001111", ), ], [ Symbol( "31", ), ], [ Symbol( "1", ), ], ], ), ], line: 297, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 296, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), Call( [ [ Symbol( "0x50000111", ), ], [ Symbol( "31", ), ], [ Symbol( "1", ), ], ], ), ], line: 298, }, Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 297, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), Call( [ [ Symbol( "0xf2345679", ), ], [ Symbol( "0", ), ], [ Symbol( "32", ), ], ], ), ], line: 299, }, Operator( ( "==", true, ), ), Symbol( "0xf2345679", ), ], ], ), ], line: 298, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), ], line: 301, }, ], [ Symbol( "0", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], ], ), ], line: 301, }, ], ], ), ], line: 299, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), ], line: 302, }, ], [ Symbol( "0", ), ], [ Symbol( "32", ), ], ], ), ], line: 302, }, ], ], ), ], line: 301, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), ], line: 303, }, ], [ Symbol( "0", ), ], [ Symbol( "0", ), ], [ Symbol( "33", ), ], ], ), ], line: 303, }, ], ], ), ], line: 302, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "extract", ), ], line: 304, }, ], [ Symbol( "0", ), ], [ Symbol( "31", ), ], [ Symbol( "2", ), ], ], ), ], line: 304, }, ], ], ), ], line: 303, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "replace", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "5", ), ], [ Symbol( "28", ), ], [ Symbol( "4", ), ], ], ), ], line: 306, }, Operator( ( "==", true, ), ), Symbol( "0x52345678", ), ], ], ), ], line: 304, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "replace", ), Call( [ [ Symbol( "0x12345678", ), ], [ Symbol( "0x87654321", ), ], [ Symbol( "0", ), ], [ Symbol( "32", ), ], ], ), ], line: 307, }, Operator( ( "==", true, ), ), Symbol( "0x87654321", ), ], ], ), ], line: 306, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "replace", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 308, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "2", ), ], ], ), ], line: 307, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "replace", ), Call( [ [ Symbol( "0", ), ], [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "4", ), ], ], ), ], line: 309, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "4", ), ], ], ), ], line: 308, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "replace", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "0", ), ], [ Symbol( "31", ), ], ], ), ], line: 310, }, Operator( ( "==", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "31", ), ], ), Ident { expr: [], line: 310, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ], ), ], line: 309, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "replace", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "1", ), ], [ Symbol( "0", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], ], ), ], line: 311, }, Operator( ( "==", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "<<", true, ), ), Symbol( "32", ), ], ), Ident { expr: [], line: 311, }, Operator( ( "-", true, ), ), Symbol( "7", ), ], ], ), ], line: 310, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Symbol( "3.0", ), ], ], ), ], line: 316, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 311, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "4.0", ), ], ], ), ], line: 317, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffc", ), ], ], ), ], line: 316, }, IfStatement { condition: [ Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "50", ), Operator( ( "<", true, ), ), Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "50", ), Operator( ( "+", true, ), ), Symbol( "1.0", ), Operator( ( "and", true, ), ), Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "50", ), Operator( ( "<", true, ), ), Expr( [ Operator( ( "-", false, ), ), Symbol( "1", ), Operator( ( ">>", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 320, }, ], body: CodeBlock { start: 2672, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "32", ), Operator( ( "-", true, ), ), Symbol( "5.0", ), ], ], ), ], line: 321, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffb", ), ], ], ), ], line: 321, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "32", ), Operator( ( "-", true, ), ), Symbol( "6.0", ), ], ], ), ], line: 322, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffa", ), ], ], ), ], line: 321, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "48", ), Operator( ( "-", true, ), ), Symbol( "5.0", ), ], ], ), ], line: 323, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffb", ), ], ], ), ], line: 322, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "bit32", ), Symbol( ".", ), Symbol( "bor", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2.0", ), Operator( ( "^", true, ), ), Symbol( "48", ), Operator( ( "-", true, ), ), Symbol( "6.0", ), ], ], ), ], line: 324, }, Operator( ( "==", true, ), ), Symbol( "0xfffffffa", ), ], ], ), ], line: 323, }, ], end: 2735, }, next: None, line: 325, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 325, }, ]