summaryrefslogtreecommitdiff
path: root/output/Factorial.vapor
blob: 713ef0621c6e8979ac2b3f5d81c413ab8564ddac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
func Main()
  t.3 = HeapAllocZ(4)
  [t.3+0] = :functable_Fac
  t.4 = t.3
  t.5 = [t.4+0]
  t.6 = [t.5+0]
  t.7 = 10
  t.2 = call t.6(t.4 t.7)
  t.8 = t.2
  PrintIntS(t.8)
  ret

const functable_Fac
   :Fac_ComputeFac

func Fac_ComputeFac(this t.0 )
  t.2 = t.0
  t.3 = 1
  t.1 = LtS(t.2 t.3)
  t.4 = t.1
  if0 t.4 goto :if6_else
if6_body:
  t.5 = 1
  goto :if6_end
if6_else:
  t.7 = t.0
  t.9 = [this]
  t.11 = t.0
  t.12 = 1
  t.10 = Sub(t.11 t.12)
  t.13 = t.10
  t.9 = [t.9+0]
  t.8 = call t.9(this t.13)
  t.14 = t.8
  t.6 = MulS(t.7 t.14)
  t.5 = t.6
if6_end:
  t.15 = t.5
  ret t.15

func AllocArray(size)
  bytes = MulS(size 4)
  bytes = Add(bytes 4)
  v = HeapAllocZ(bytes)
  [v] = size
  ret v