// File: /workspace/github_cpp_makefile_star2_O2/iamlouk[P]asbi/src/tests.cc
// Function: tests::run()
void run(){

		test("(true & true) & !((false & true) | (true  & false) | (false & false))", Value::boolean(true));
		test("(true | true) & (false | true) & (true | false) & !(false | false)", Value::boolean(true));
		test("3 - 2 == 1 & 6 / 2 == 3 & 1 + 2 == 3 & 3.14 > 0.1 + 2 & 10 < 100", Value::boolean(true));
		test("(if true { 1 } else { 2 }) == 1 & (if false { 2 } else {}) == nil", Value::boolean(true));
		test("if false { 1 } else if true { true & false; 3.14 + 42; 2 } else { 3 }", Value::number(2));
		test(":hello_world != \"Hallo Welt!\" & (\"hello\" + \"world\") == \"helloworld\"", Value::boolean(true));
		test("a := 6; a = 42; a = a == 42 & { b := 12; b } == 12; a & { a == true }", Value::boolean(true));
		test("sum := 0; for i := 1; i < 6; i := i + 1 { sum = sum + i; }; sum", Value::number(15));
		test("add := (a, b) -> a + b, sub := (a, b) -> a - b; add(28, 14) == sub(45, 3)", Value::boolean(true));
		test("fib := (n) -> if n < 2 { 1 } else { fib(n - 1) + fib(n - 2) }; fib(5) == fib(4) + fib(3)", Value::boolean(true));
		test("fibGen := ()->{a := 1, b := 1; ()->{tmp := a; a = a + b; b = tmp}}; fibs := fibGen(); fibs()+fibs()==fibs()", Value::boolean(true));
		test("arr := [\"hello\", :symbol, 3.14, 42], map := [1234 ~ \"value\", 42 ~ [,], :key ~ 42]; (arr.3 + map.:key) / 2", Value::number(42));
		test("arr := [:key ~ \"value\"]; arr.:key == \"value\" & { arr.:key = 42; arr.:key == 42 }", Value::boolean(true));
		test("(\"hallo\" + (\" \" + \"welt\")) == \"hallo welt\" & :test == { a := :test; a }", Value::boolean(true));
		test("fibs := [1, 1], fib := (n) -> if fibs.n != nil { fibs.n } else { fibs.n = fib(n - 1) + fib(n - 2) }; fib(5)", Value::number(8));
		test("if nil == {} {} else { [:would_fail] := [:no_match] }", Value::nil());
		test("[a, :test, b, 123] := ((x) -> [x, :test, :b, 123])(42); a == 42 & b == :b", Value::boolean(true));
		test("[1, 4, 9, 16, 25] := map([1, 2, 3, 4, 5], (_, x) -> x * x); nil", Value::nil());
		test("reduce([1, 2, 3, 4, 5], 0, (sum, _, x) -> sum + x)", Value::number(15));

	}

// Assembly:
pushq %rbx
subq $0x270, %rsp            # imm = 0x270
leaq 0x1eb8(%rip), %rsi      # 0x157a2
leaq 0x250(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x250(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x250(%rsp), %rdi
callq 0x5170
leaq 0x1eb9(%rip), %rsi      # 0x157e8
leaq 0x230(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x230(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x230(%rsp), %rdi
callq 0x5170
leaq 0x1eb7(%rip), %rsi      # 0x1582b
leaq 0x210(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x210(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x210(%rsp), %rdi
callq 0x5170
leaq 0x1eb3(%rip), %rsi      # 0x1586c
leaq 0x1f0(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x1f0(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x1f0(%rsp), %rdi
callq 0x5170
leaq 0x1eb0(%rip), %rsi      # 0x158ae
leaq 0x1d0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0x1d0(%rsp), %rdi
pushq $0x1
popq %rsi
movabsq $0x4000000000000000, %rdx # imm = 0x4000000000000000
callq 0x13808
leaq 0x1d0(%rsp), %rdi
callq 0x5170
leaq 0x1eb6(%rip), %rsi      # 0x158f4
leaq 0x1b0(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x1b0(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x1b0(%rsp), %rdi
callq 0x5170
leaq 0x1eb5(%rip), %rsi      # 0x15938
leaq 0x190(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x190(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x190(%rsp), %rdi
callq 0x5170
leaq 0x1eb6(%rip), %rsi      # 0x1597e
leaq 0x170(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0x170(%rsp), %rdi
pushq $0x1
popq %rsi
movabsq $0x402e000000000000, %rdx # imm = 0x402E000000000000
callq 0x13808
leaq 0x170(%rsp), %rdi
callq 0x5170
leaq 0x1eb6(%rip), %rsi      # 0x159be
leaq 0x150(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x150(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x150(%rsp), %rdi
callq 0x5170
leaq 0x1ebb(%rip), %rsi      # 0x15a08
leaq 0x130(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x130(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x130(%rsp), %rdi
callq 0x5170
leaq 0x1ecf(%rip), %rsi      # 0x15a61
leaq 0x110(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x110(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x110(%rsp), %rdi
callq 0x5170
leaq 0x1ef6(%rip), %rsi      # 0x15acd
leaq 0xf0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0xf0(%rsp), %rdi
pushq $0x1
popq %rsi
movabsq $0x4045000000000000, %rdx # imm = 0x4045000000000000
callq 0x13808
leaq 0xf0(%rsp), %rdi
callq 0x5170
leaq 0x1f20(%rip), %rsi      # 0x15b37
leaq 0xd0(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0xd0(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0xd0(%rsp), %rdi
callq 0x5170
leaq 0x1f2c(%rip), %rsi      # 0x15b88
leaq 0xb0(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0xb0(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0xb0(%rsp), %rdi
callq 0x5170
leaq 0x1f2f(%rip), %rsi      # 0x15bd0
leaq 0x90(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0x90(%rsp), %rdi
pushq $0x1
popq %rsi
movabsq $0x4020000000000000, %rdx # imm = 0x4020000000000000
callq 0x13808
leaq 0x90(%rsp), %rdi
callq 0x5170
leaq 0x1f5b(%rip), %rsi      # 0x15c3c
leaq 0x70(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0x70(%rsp), %rdi
pushq $0x2
popq %rsi
xorl %edx, %edx
callq 0x13808
leaq 0x70(%rsp), %rdi
callq 0x5170
leaq 0x1f62(%rip), %rsi      # 0x15c72
leaq 0x50(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x60ee
andq $0x0, 0x8(%rsp)
movb $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rdx
leaq 0x50(%rsp), %rdi
xorl %esi, %esi
callq 0x13808
leaq 0x50(%rsp), %rdi
callq 0x5170
leaq 0x1f70(%rip), %rsi      # 0x15cbc
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0x30(%rsp), %rdi
pushq $0x2
popq %rsi
xorl %edx, %edx
callq 0x13808
leaq 0x30(%rsp), %rdi
callq 0x5170
leaq 0x1f81(%rip), %rsi      # 0x15cfc
leaq 0x10(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x60ee
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
movabsq $0x402e000000000000, %rdx # imm = 0x402E000000000000
callq 0x13808
leaq 0x10(%rsp), %rdi
callq 0x5170
addq $0x270, %rsp            # imm = 0x270
popq %rbx
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x130(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x170(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x190(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x1b0(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x1d0(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x1f0(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x210(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x230(%rsp), %rdi
jmp 0x13efd
jmp 0x13f04
movq %rax, %rbx
leaq 0x250(%rsp), %rdi
callq 0x5170
jmp 0x13f07
movq %rax, %rbx
movq %rbx, %rdi
callq 0x5600