(* thinking of the Klein function remainder as a loop *) function remainder(a : integer, b : integer) : integer top: if a < b then a else begin a := a - b; b := b; goto top (* the Klein function remainder in 3AC *) L1: IF a >= b THEN GOTO L2 T1 := a GOTO L3 L2: T2 := a - b PARAM T2 PARAM b T1 := CALL remainder 2 L3: RETURN T1 (* the Klein function remainder in 3AC *) L1: IF a >= b THEN GOTO L2 T1 := a GOTO L3 L2: T2 := a - b a = T2 # PARAM T1 b = b # PARAM b GOTO L1 # T1 := CALL remainder 2 L3: RETURN T1