somni 0.3.1

Somni scripting language and VM
Documentation
Globals:

Function: translate
block 0
  var return_value: void = None
  var p: &struct#0 = None
  var dx: int = None
  var dy: int = None
  var temp4: void = None
  var temp5: int = None
  temp5 = *p[0..+8]
  var temp6: void = None
  temp6 = temp5 + dx
  free(temp5)
  *p[0..+8] = temp6
  free(temp6)
  var temp7: void = None
  free(temp7)
  var temp8: int = None
  temp8 = *p[8..+8]
  var temp9: void = None
  temp9 = temp8 + dy
  free(temp8)
  *p[8..+8] = temp9
  free(temp9)
  var temp10: void = None
  free(temp10)
  free(temp4)
  free(dy)
  free(dx)
  free(p)
  free(return_value)
  -> block 1

block 1
  -> return

Function: dot
block 0
  var return_value: int = None
  var a: &struct#0 = None
  var b: &struct#0 = None
  var temp3: void = None
  var temp4: int = None
  temp4 = *a[0..+8]
  var temp5: int = None
  temp5 = *b[0..+8]
  var temp6: void = None
  temp6 = temp4 * temp5
  free(temp4)
  free(temp5)
  var temp7: int = None
  temp7 = *a[8..+8]
  var temp8: int = None
  temp8 = *b[8..+8]
  var temp9: void = None
  temp9 = temp7 * temp8
  free(temp7)
  free(temp8)
  var temp10: void = None
  temp10 = temp6 + temp9
  free(temp6)
  free(temp9)
  return_value = temp10
  free(temp10)
  free(temp3)
  free(b)
  free(a)
  free(return_value)
  -> block 2

block 1
  -> return

block 2
  -> block 1

block 3
  free(b)
  free(a)
  free(return_value)
  -> block 1

Function: bump
block 0
  var return_value: void = None
  var v: &int = None
  var temp2: void = None
  var temp3: void = None
  temp3 = *v
  var temp4: {int/signed} = Some(MaybeSignedInt(1))
  var temp5: void = None
  temp5 = temp3 + temp4
  free(temp3)
  free(temp4)
  *v = temp5
  free(temp5)
  var temp6: void = None
  free(temp6)
  free(temp2)
  free(v)
  free(return_value)
  -> block 1

block 1
  -> return

Function: main
block 0
  var return_value: int = None
  var temp1: void = None
  var acc: void = None
  var temp3: {int/signed} = Some(MaybeSignedInt(0))
  acc = temp3
  free(temp3)
  var i: void = None
  var temp5: {int/signed} = Some(MaybeSignedInt(0))
  i = temp5
  free(temp5)
  var temp6: void = None
  -> block 3

block 1
  -> return

block 2
  return_value = acc
  free(temp6)
  free(i)
  free(acc)
  free(temp1)
  free(return_value)
  -> block 10

block 3
  var temp7: void = None
  var temp8: void = None
  var temp9: {int/signed} = Some(MaybeSignedInt(1000))
  var temp10: void = None
  temp10 = i >= temp9
  free(temp9)
  if temp10 -> block 5 else block 4

block 4
  free(temp10)
  var line: struct#1 = None
  var temp13: struct#1 = None
  var temp14: struct#0 = None
  temp14[0..+8] = i
  temp14[8..+8] = i
  temp13[0..+16] = temp14
  free(temp14)
  var temp15: struct#0 = None
  var temp16: {int/signed} = Some(MaybeSignedInt(1))
  temp15[0..+8] = temp16
  free(temp16)
  var temp17: {int/signed} = Some(MaybeSignedInt(2))
  temp15[8..+8] = temp17
  free(temp17)
  temp13[16..+16] = temp15
  free(temp15)
  line = temp13
  free(temp13)
  var temp18: void = None
  var temp19: &struct#0 = None
  temp19 = &line[0]
  var temp20: {int/signed} = Some(MaybeSignedInt(1))
  var temp21: {int/signed} = Some(MaybeSignedInt(2))
  var temp22: int = None
  var temp23: int = None
  var temp24: void = None
  var temp25: void = None
  temp25 = temp19
  var temp26: void = None
  temp26 = temp20
  var temp27: void = None
  temp27 = temp21
  temp24 = call translate(temp25, temp26, temp27)
  temp18 = temp24
  free(temp27)
  free(temp26)
  free(temp25)
  free(temp24)
  free(temp23)
  free(temp22)
  free(temp21)
  free(temp20)
  free(temp19)
  free(temp18)
  var temp28: void = None
  var temp29: &struct#0 = None
  temp29 = &line[16]
  var temp30: &int = None
  temp30 = &*temp29[0]
  var temp31: int = None
  var temp32: int = None
  var temp33: void = None
  var temp34: void = None
  temp34 = temp30
  temp33 = call bump(temp34)
  temp28 = temp33
  free(temp34)
  free(temp33)
  free(temp32)
  free(temp31)
  free(temp30)
  free(temp29)
  free(temp28)
  var temp35: void = None
  var temp36: &struct#0 = None
  temp36 = &line[0]
  var temp37: &struct#0 = None
  temp37 = &line[16]
  var temp38: int = None
  var temp39: int = None
  var temp40: void = None
  var temp41: void = None
  temp41 = temp36
  var temp42: void = None
  temp42 = temp37
  temp40 = call dot(temp41, temp42)
  temp35 = temp40
  free(temp42)
  free(temp41)
  free(temp40)
  free(temp39)
  free(temp38)
  free(temp37)
  free(temp36)
  var temp43: void = None
  temp43 = acc + temp35
  free(temp35)
  acc = temp43
  free(temp43)
  var temp44: void = None
  free(temp44)
  var mirror: struct#0 = None
  var temp46: struct#0 = None
  var temp47: struct#0 = None
  temp47 = line[0..+16]
  var temp48: int = None
  temp48 = temp47[0..+8]
  free(temp47)
  temp46[0..+8] = temp48
  free(temp48)
  var temp49: struct#0 = None
  temp49 = line[0..+16]
  var temp50: int = None
  temp50 = temp49[8..+8]
  free(temp49)
  temp46[8..+8] = temp50
  free(temp50)
  mirror = temp46
  free(temp46)
  var temp51: void = None
  var temp52: struct#0 = None
  temp52 = line[0..+16]
  var temp53: void = None
  temp53 = mirror == temp52
  free(temp52)
  if temp53 -> block 9 else block 8

block 5
  var temp11: void = None
  free(temp11)
  free(temp10)
  free(temp8)
  free(temp7)
  -> block 6

block 6
  -> block 2

block 7
  -> block 4

block 8
  free(temp53)
  var temp58: {int/signed} = Some(MaybeSignedInt(1))
  var temp59: void = None
  temp59 = i + temp58
  free(temp58)
  i = temp59
  free(temp59)
  var temp60: void = None
  free(temp60)
  free(temp51)
  free(mirror)
  free(line)
  free(temp8)
  free(temp7)
  -> block 3

block 9
  var temp54: void = None
  var temp55: {int/signed} = Some(MaybeSignedInt(1))
  var temp56: void = None
  temp56 = acc + temp55
  free(temp55)
  acc = temp56
  free(temp56)
  var temp57: void = None
  free(temp57)
  free(temp54)
  -> block 8

block 10
  -> block 1

block 11
  free(return_value)
  -> block 1