From de4ad6b54737d8d7b99ebe2139db622bafde1de0 Mon Sep 17 00:00:00 2001
From: Nishant Kumar <t-niskum@microsoft.com>
Date: Fri, 4 Oct 2019 18:52:55 +0530
Subject: [PATCH] Added license header in ezpc test suite files.

---
 EzPC/EzPC/test_suite/binop.ezpc               |  24 ++
 EzPC/EzPC/test_suite/decl.ezpc                |  24 ++
 EzPC/EzPC/test_suite/dot_product.ezpc         |  24 ++
 EzPC/EzPC/test_suite/for.ezpc                 |  24 ++
 EzPC/EzPC/test_suite/func.ezpc                |  24 ++
 EzPC/EzPC/test_suite/if.ezpc                  |  24 ++
 EzPC/EzPC/test_suite/input.ezpc               |  24 ++
 EzPC/EzPC/test_suite/output.ezpc              |  24 ++
 .../test_suite/precompiled_output/binop0.cpp  | 214 +++++++++---------
 .../test_suite/precompiled_output/decl0.cpp   | 154 ++++++-------
 .../precompiled_output/dot_product0.cpp       | 178 +++++++--------
 .../test_suite/precompiled_output/for0.cpp    | 156 ++++++-------
 .../test_suite/precompiled_output/func0.cpp   | 158 ++++++-------
 .../test_suite/precompiled_output/if0.cpp     | 154 ++++++-------
 .../test_suite/precompiled_output/input0.cpp  | 166 +++++++-------
 .../test_suite/precompiled_output/output0.cpp | 164 +++++++-------
 .../test_suite/precompiled_output/while0.cpp  | 162 ++++++-------
 EzPC/EzPC/test_suite/while.ezpc               |  24 ++
 18 files changed, 969 insertions(+), 753 deletions(-)

diff --git a/EzPC/EzPC/test_suite/binop.ezpc b/EzPC/EzPC/test_suite/binop.ezpc
index 01810f8..863c3c0 100644
--- a/EzPC/EzPC/test_suite/binop.ezpc
+++ b/EzPC/EzPC/test_suite/binop.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This example shows different kinds of binary operations that can be performed in ezpc.
 *)
diff --git a/EzPC/EzPC/test_suite/decl.ezpc b/EzPC/EzPC/test_suite/decl.ezpc
index 674a921..4630852 100644
--- a/EzPC/EzPC/test_suite/decl.ezpc
+++ b/EzPC/EzPC/test_suite/decl.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This shows an example of a declaration in ezpc.
 *)
diff --git a/EzPC/EzPC/test_suite/dot_product.ezpc b/EzPC/EzPC/test_suite/dot_product.ezpc
index b4cd438..6b36e06 100644
--- a/EzPC/EzPC/test_suite/dot_product.ezpc
+++ b/EzPC/EzPC/test_suite/dot_product.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This example shows how something like logistic regression can be written in ezpc.
 	The below program calculates (<w;x> > b), where w and x are vetors of same length and b is a scalar.
diff --git a/EzPC/EzPC/test_suite/for.ezpc b/EzPC/EzPC/test_suite/for.ezpc
index c08153f..0bed568 100644
--- a/EzPC/EzPC/test_suite/for.ezpc
+++ b/EzPC/EzPC/test_suite/for.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This example sums up numbers from 0 to 100 using a for loop.
 *)
diff --git a/EzPC/EzPC/test_suite/func.ezpc b/EzPC/EzPC/test_suite/func.ezpc
index 4690c1d..bffd66d 100644
--- a/EzPC/EzPC/test_suite/func.ezpc
+++ b/EzPC/EzPC/test_suite/func.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	Following shows how functions are declared and used in ezpc.
 	In general, functions are declared with 
diff --git a/EzPC/EzPC/test_suite/if.ezpc b/EzPC/EzPC/test_suite/if.ezpc
index 7bb5c09..afd420a 100644
--- a/EzPC/EzPC/test_suite/if.ezpc
+++ b/EzPC/EzPC/test_suite/if.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This example shows the usage of if-else conditional block.
 *)
diff --git a/EzPC/EzPC/test_suite/input.ezpc b/EzPC/EzPC/test_suite/input.ezpc
index 091f1e8..207a714 100644
--- a/EzPC/EzPC/test_suite/input.ezpc
+++ b/EzPC/EzPC/test_suite/input.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	Following shows usage of input statement.
 	In general, syntax is 
diff --git a/EzPC/EzPC/test_suite/output.ezpc b/EzPC/EzPC/test_suite/output.ezpc
index 830bc39..42bf1b0 100644
--- a/EzPC/EzPC/test_suite/output.ezpc
+++ b/EzPC/EzPC/test_suite/output.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This example shows the usage of output statement.
 	In general, the syntax is 
diff --git a/EzPC/EzPC/test_suite/precompiled_output/binop0.cpp b/EzPC/EzPC/test_suite/precompiled_output/binop0.cpp
index e84ad68..4991176 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/binop0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/binop0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
@@ -373,81 +373,81 @@ uint32_t d;
 c = acirc->PutADDGate(a, b);
 c = acirc->PutSUBGate(a, b);
 c = acirc->PutMULGate(a, b);
-/* Temporary variable for sub-expression on source location: (130,7-130,9) */
+/* Temporary variable for sub-expression on source location: (170,7-170,9) */
 share* __tac_var78 = put_cons32_gate(acirc,  (uint32_t)4);
 c = unsigneddival(b, __tac_var78);
 d = ( (uint32_t)10 %  (uint32_t)4);
-/* Temporary variable for sub-expression on source location: (132,5-132,6) */
+/* Temporary variable for sub-expression on source location: (172,5-172,6) */
 share* __tac_var79 = ycirc->PutA2YGate(b);
-/* Temporary variable for sub-expression on source location: (132,5-132,10) */
+/* Temporary variable for sub-expression on source location: (172,5-172,10) */
 share* __tac_var80 = arithmetic_right_shift(ycirc, __tac_var79,  (uint32_t)2);
 c = acirc->PutY2AGate(__tac_var80, bcirc);
-/* Temporary variable for sub-expression on source location: (133,5-133,6) */
+/* Temporary variable for sub-expression on source location: (173,5-173,6) */
 share* __tac_var81 = __tac_var79;
-/* Temporary variable for sub-expression on source location: (133,5-133,10) */
+/* Temporary variable for sub-expression on source location: (173,5-173,10) */
 share* __tac_var82 = left_shift(ycirc, __tac_var79,  (uint32_t)2);
 c = acirc->PutY2AGate(__tac_var82, bcirc);
-/* Temporary variable for sub-expression on source location: (134,5-134,6) */
+/* Temporary variable for sub-expression on source location: (174,5-174,6) */
 share* __tac_var83 = ycirc->PutA2YGate(a);
-/* Temporary variable for sub-expression on source location: (134,7-134,8) */
+/* Temporary variable for sub-expression on source location: (174,7-174,8) */
 share* __tac_var84 = __tac_var79;
-/* Temporary variable for sub-expression on source location: (134,5-134,8) */
+/* Temporary variable for sub-expression on source location: (174,5-174,8) */
 share* __tac_var85 = ycirc->PutXORGate(__tac_var83, __tac_var79);
 c = acirc->PutY2AGate(__tac_var85, bcirc);
-/* Temporary variable for sub-expression on source location: (135,5-135,6) */
+/* Temporary variable for sub-expression on source location: (175,5-175,6) */
 share* __tac_var86 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (135,7-135,8) */
+/* Temporary variable for sub-expression on source location: (175,7-175,8) */
 share* __tac_var87 = __tac_var79;
-/* Temporary variable for sub-expression on source location: (135,5-135,8) */
+/* Temporary variable for sub-expression on source location: (175,5-175,8) */
 share* __tac_var88 = ycirc->PutANDGate(__tac_var83, __tac_var79);
 c = acirc->PutY2AGate(__tac_var88, bcirc);
-/* Temporary variable for sub-expression on source location: (136,5-136,6) */
+/* Temporary variable for sub-expression on source location: (176,5-176,6) */
 share* __tac_var89 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (136,7-136,8) */
+/* Temporary variable for sub-expression on source location: (176,7-176,8) */
 share* __tac_var90 = __tac_var79;
-/* Temporary variable for sub-expression on source location: (136,5-136,8) */
+/* Temporary variable for sub-expression on source location: (176,5-176,8) */
 share* __tac_var91 = ((BooleanCircuit *) ycirc)->PutORGate(__tac_var83, __tac_var79);
 c = acirc->PutY2AGate(__tac_var91, bcirc);
-/* Temporary variable for sub-expression on source location: (137,5-137,10) */
+/* Temporary variable for sub-expression on source location: (177,5-177,10) */
 int32_t __tac_var92 = (pow( (int32_t)2,  (int32_t)10));
 c = put_cons32_gate(acirc, __tac_var92);
-/* Temporary variable for sub-expression on source location: (138,5-138,6) */
+/* Temporary variable for sub-expression on source location: (178,5-178,6) */
 share* __tac_var93 = __tac_var79;
-/* Temporary variable for sub-expression on source location: (138,5-138,11) */
+/* Temporary variable for sub-expression on source location: (178,5-178,11) */
 share* __tac_var94 = logical_right_shift(ycirc, __tac_var79,  (uint32_t)2);
 c = acirc->PutY2AGate(__tac_var94, bcirc);
-/* Temporary variable for sub-expression on source location: (139,5-139,16) */
+/* Temporary variable for sub-expression on source location: (179,5-179,16) */
 uint32_t __tac_var95 = (1 && 0);
 e = put_cons1_gate(ycirc, __tac_var95);
-/* Temporary variable for sub-expression on source location: (140,5-140,17) */
+/* Temporary variable for sub-expression on source location: (180,5-180,17) */
 uint32_t __tac_var96 = (0 || 0);
 e = put_cons1_gate(ycirc, __tac_var96);
-/* Temporary variable for sub-expression on source location: (141,5-141,15) */
+/* Temporary variable for sub-expression on source location: (181,5-181,15) */
 uint32_t __tac_var97 = (0 ^ 1);
 e = put_cons1_gate(ycirc, __tac_var97);
-/* Temporary variable for sub-expression on source location: (142,5-142,6) */
+/* Temporary variable for sub-expression on source location: (182,5-182,6) */
 share* __tac_var98 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (142,7-142,8) */
+/* Temporary variable for sub-expression on source location: (182,7-182,8) */
 share* __tac_var99 = __tac_var79;
 e = ycirc->PutGTGate(__tac_var83, __tac_var79);
-/* Temporary variable for sub-expression on source location: (143,6-143,7) */
+/* Temporary variable for sub-expression on source location: (183,6-183,7) */
 share* __tac_var100 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (143,9-143,10) */
+/* Temporary variable for sub-expression on source location: (183,9-183,10) */
 share* __tac_var101 = __tac_var79;
 e = unsignedequalsbl(__tac_var83, __tac_var79);
-/* Temporary variable for sub-expression on source location: (144,5-144,6) */
+/* Temporary variable for sub-expression on source location: (184,5-184,6) */
 share* __tac_var102 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (144,8-144,9) */
+/* Temporary variable for sub-expression on source location: (184,8-184,9) */
 share* __tac_var103 = __tac_var79;
 e = unsignedgeqbl(__tac_var83, __tac_var79);
-/* Temporary variable for sub-expression on source location: (145,5-145,6) */
+/* Temporary variable for sub-expression on source location: (185,5-185,6) */
 share* __tac_var104 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (145,8-145,9) */
+/* Temporary variable for sub-expression on source location: (185,8-185,9) */
 share* __tac_var105 = __tac_var79;
 e = unsignedleqbl(__tac_var83, __tac_var79);
-/* Temporary variable for sub-expression on source location: (146,5-146,6) */
+/* Temporary variable for sub-expression on source location: (186,5-186,6) */
 share* __tac_var106 = __tac_var83;
-/* Temporary variable for sub-expression on source location: (146,7-146,8) */
+/* Temporary variable for sub-expression on source location: (186,7-186,8) */
 share* __tac_var107 = __tac_var79;
 e = unsignedltbl(__tac_var83, __tac_var79);
 party->ExecCircuit();
diff --git a/EzPC/EzPC/test_suite/precompiled_output/decl0.cpp b/EzPC/EzPC/test_suite/precompiled_output/decl0.cpp
index 10649d4..78fd24d 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/decl0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/decl0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
diff --git a/EzPC/EzPC/test_suite/precompiled_output/dot_product0.cpp b/EzPC/EzPC/test_suite/precompiled_output/dot_product0.cpp
index 05eca32..905ee2a 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/dot_product0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/dot_product0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
@@ -367,7 +367,7 @@ auto w = make_vector<share*>( (uint32_t)2);
 if ((role == SERVER)) {
 cout << ("Input w:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable w at (129,1-129,32) */
+/* Variable to read the clear value corresponding to the input variable w at (169,1-169,32) */
 uint32_t __tmp_in_w;
 for (uint32_t i0 =  (uint32_t)0; i0 <  (uint32_t)2; i0++){
 if ((role == SERVER)) {
@@ -380,7 +380,7 @@ share* b;
 if ((role == SERVER)) {
 cout << ("Input b:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable b at (130,1-130,27) */
+/* Variable to read the clear value corresponding to the input variable b at (170,1-170,27) */
 uint32_t __tmp_in_b;
 if ((role == SERVER)) {
 cin >> __tmp_in_b;
@@ -391,7 +391,7 @@ auto x = make_vector<share*>( (uint32_t)2);
 if ((role == CLIENT)) {
 cout << ("Input x:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable x at (131,1-131,32) */
+/* Variable to read the clear value corresponding to the input variable x at (171,1-171,32) */
 uint32_t __tmp_in_x;
 for (uint32_t i0 =  (uint32_t)0; i0 <  (uint32_t)2; i0++){
 if ((role == CLIENT)) {
@@ -405,26 +405,26 @@ share* acc = put_cons32_gate(acirc,  (int32_t)0);
 uint32_t lower =  (uint32_t)0;
 
 uint32_t upper =  (uint32_t)2;
-/* Temporary variable for sub-expression on source location: (135,8-135,21) */
+/* Temporary variable for sub-expression on source location: (175,8-175,21) */
 uint32_t __tac_var78 = ( (uint32_t)0 -  (uint32_t)0);
 for (uint32_t i = __tac_var78; i <  (uint32_t)2; i++){
-/* Temporary variable for sub-expression on source location: (135,46-135,50) */
+/* Temporary variable for sub-expression on source location: (175,46-175,50) */
 share* __tac_var79 = w[i];
-/* Temporary variable for sub-expression on source location: (135,53-135,57) */
+/* Temporary variable for sub-expression on source location: (175,53-175,57) */
 share* __tac_var80 = x[i];
-/* Temporary variable for sub-expression on source location: (135,46-135,57) */
+/* Temporary variable for sub-expression on source location: (175,46-175,57) */
 share* __tac_var81 = acirc->PutMULGate(__tac_var79, __tac_var80);
 acc = acirc->PutADDGate(acc, __tac_var81);
 }
-/* Temporary variable for sub-expression on source location: (136,18-136,21) */
+/* Temporary variable for sub-expression on source location: (176,18-176,21) */
 share* __tac_var82 = ycirc->PutA2YGate(acc);
-/* Temporary variable for sub-expression on source location: (136,18-136,25) */
+/* Temporary variable for sub-expression on source location: (176,18-176,25) */
 share* __tac_var83 = signedgtbl(__tac_var82, b);
-/* Temporary variable for sub-expression on source location: (136,29-136,30) */
+/* Temporary variable for sub-expression on source location: (176,29-176,30) */
 share* __tac_var84 = put_cons32_gate(ycirc,  (int32_t)1);
-/* Temporary variable for sub-expression on source location: (136,33-136,34) */
+/* Temporary variable for sub-expression on source location: (176,33-176,34) */
 share* __tac_var85 = put_cons32_gate(ycirc,  (int32_t)0);
-/* Temporary variable for sub-expression on source location: (136,17-136,34) */
+/* Temporary variable for sub-expression on source location: (176,17-176,34) */
 share* __tac_var86 = ycirc->PutMUXGate(__tac_var84, __tac_var85, __tac_var83);
 add_print_msg_to_output_queue(out_q, "Value of __tac_var86:", CLIENT, cout);
 add_to_output_queue(out_q, ycirc->PutOUTGate(__tac_var86, CLIENT), CLIENT, cout);
diff --git a/EzPC/EzPC/test_suite/precompiled_output/for0.cpp b/EzPC/EzPC/test_suite/precompiled_output/for0.cpp
index 2b239f1..3c282df 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/for0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/for0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
@@ -370,7 +370,7 @@ for (uint32_t i =  (int32_t)0; i <  (int32_t)100; i++){
 arr[i] = put_cons32_gate(acirc, i);
 }
 for (uint32_t i =  (int32_t)0; i <  (int32_t)100; i++){
-/* Temporary variable for sub-expression on source location: (133,16-133,22) */
+/* Temporary variable for sub-expression on source location: (173,16-173,22) */
 share* __tac_var78 = arr[i];
 summ = acirc->PutADDGate(summ, __tac_var78);
 }
diff --git a/EzPC/EzPC/test_suite/precompiled_output/func0.cpp b/EzPC/EzPC/test_suite/precompiled_output/func0.cpp
index 66fca0d..633070b 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/func0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/func0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,15 +344,15 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
 
 share* hello(share* a){
-/* Temporary variable for sub-expression on source location: (127,10-127,12) */
+/* Temporary variable for sub-expression on source location: (167,10-167,12) */
 share* __tac_var78 = put_cons32_gate(acirc,  (uint32_t)5);
-/* Temporary variable for sub-expression on source location: (127,8-127,12) */
+/* Temporary variable for sub-expression on source location: (167,8-167,12) */
 share* __tac_var79 = acirc->PutADDGate(a, __tac_var78);
 return __tac_var79;
 }
diff --git a/EzPC/EzPC/test_suite/precompiled_output/if0.cpp b/EzPC/EzPC/test_suite/precompiled_output/if0.cpp
index b406363..ab11a11 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/if0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/if0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
diff --git a/EzPC/EzPC/test_suite/precompiled_output/input0.cpp b/EzPC/EzPC/test_suite/precompiled_output/input0.cpp
index 2bfb78a..e459aa5 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/input0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/input0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
@@ -365,7 +365,7 @@ share* w;
 if ((role == SERVER)) {
 cout << ("Input w:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable w at (126,1-126,28) */
+/* Variable to read the clear value corresponding to the input variable w at (166,1-166,28) */
 uint32_t __tmp_in_w;
 if ((role == SERVER)) {
 cin >> __tmp_in_w;
@@ -376,7 +376,7 @@ share* x;
 if ((role == SERVER)) {
 cout << ("Input x:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable x at (127,1-127,28) */
+/* Variable to read the clear value corresponding to the input variable x at (167,1-167,28) */
 uint32_t __tmp_in_x;
 if ((role == SERVER)) {
 cin >> __tmp_in_x;
@@ -387,7 +387,7 @@ auto z = make_vector<share*>( (int32_t)10);
 if ((role == SERVER)) {
 cout << ("Input z:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable z at (128,1-128,32) */
+/* Variable to read the clear value corresponding to the input variable z at (168,1-168,32) */
 uint32_t __tmp_in_z;
 for (uint32_t i0 =  (uint32_t)0; i0 <  (int32_t)10; i0++){
 if ((role == SERVER)) {
@@ -400,7 +400,7 @@ auto a = make_vector<share*>( (int32_t)10,  (int32_t)100);
 if ((role == CLIENT)) {
 cout << ("Input a:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable a at (129,1-129,37) */
+/* Variable to read the clear value corresponding to the input variable a at (169,1-169,37) */
 uint32_t __tmp_in_a;
 for (uint32_t i0 =  (uint32_t)0; i0 <  (int32_t)10; i0++){
 for (uint32_t i1 =  (uint32_t)0; i1 <  (int32_t)100; i1++){
@@ -415,7 +415,7 @@ share* b;
 if ((role == SERVER)) {
 cout << ("Input b:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable b at (130,1-130,26) */
+/* Variable to read the clear value corresponding to the input variable b at (170,1-170,26) */
 uint32_t __tmp_in_b;
 if ((role == SERVER)) {
 cin >> __tmp_in_b;
@@ -426,7 +426,7 @@ share* c;
 if ((role == SERVER)) {
 cout << ("Input c:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable c at (131,1-131,26) */
+/* Variable to read the clear value corresponding to the input variable c at (171,1-171,26) */
 uint32_t __tmp_in_c;
 if ((role == SERVER)) {
 cin >> __tmp_in_c;
diff --git a/EzPC/EzPC/test_suite/precompiled_output/output0.cpp b/EzPC/EzPC/test_suite/precompiled_output/output0.cpp
index bcb27f1..a14e376 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/output0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/output0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
@@ -365,7 +365,7 @@ share* w;
 if ((role == SERVER)) {
 cout << ("Input w:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable w at (127,1-127,28) */
+/* Variable to read the clear value corresponding to the input variable w at (167,1-167,28) */
 uint32_t __tmp_in_w;
 if ((role == SERVER)) {
 cin >> __tmp_in_w;
@@ -376,7 +376,7 @@ share* x;
 if ((role == SERVER)) {
 cout << ("Input x:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable x at (128,1-128,28) */
+/* Variable to read the clear value corresponding to the input variable x at (168,1-168,28) */
 uint32_t __tmp_in_x;
 if ((role == SERVER)) {
 cin >> __tmp_in_x;
@@ -387,7 +387,7 @@ auto z = make_vector<share*>( (int32_t)10);
 if ((role == SERVER)) {
 cout << ("Input z:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable z at (129,1-129,32) */
+/* Variable to read the clear value corresponding to the input variable z at (169,1-169,32) */
 uint32_t __tmp_in_z;
 for (uint32_t i0 =  (uint32_t)0; i0 <  (int32_t)10; i0++){
 if ((role == SERVER)) {
@@ -400,7 +400,7 @@ auto a = make_vector<share*>( (int32_t)10,  (int32_t)100);
 if ((role == CLIENT)) {
 cout << ("Input a:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable a at (130,1-130,37) */
+/* Variable to read the clear value corresponding to the input variable a at (170,1-170,37) */
 uint32_t __tmp_in_a;
 for (uint32_t i0 =  (uint32_t)0; i0 <  (int32_t)10; i0++){
 for (uint32_t i1 =  (uint32_t)0; i1 <  (int32_t)100; i1++){
@@ -415,7 +415,7 @@ share* b;
 if ((role == SERVER)) {
 cout << ("Input b:") << endl;
 }
-/* Variable to read the clear value corresponding to the input variable b at (131,1-131,26) */
+/* Variable to read the clear value corresponding to the input variable b at (171,1-171,26) */
 uint32_t __tmp_in_b;
 if ((role == SERVER)) {
 cin >> __tmp_in_b;
diff --git a/EzPC/EzPC/test_suite/precompiled_output/while0.cpp b/EzPC/EzPC/test_suite/precompiled_output/while0.cpp
index a243c85..fb3a68a 100644
--- a/EzPC/EzPC/test_suite/precompiled_output/while0.cpp
+++ b/EzPC/EzPC/test_suite/precompiled_output/while0.cpp
@@ -58,37 +58,37 @@ share* signedgtbl(share* x, share* y){
 share* ux = x;
 
 share* uy = y;
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 int32_t __tac_var1 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (5,28-5,33) */
+/* Temporary variable for sub-expression on source location: (25,28-25,33) */
 share* __tac_var2 = put_cons32_gate(ycirc, __tac_var1);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var2);
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 int32_t __tac_var3 = __tac_var1;
-/* Temporary variable for sub-expression on source location: (6,28-6,33) */
+/* Temporary variable for sub-expression on source location: (26,28-26,33) */
 share* __tac_var4 = __tac_var2;
 
 share* signBitY = ycirc->PutANDGate(y, __tac_var2);
-/* Temporary variable for sub-expression on source location: (7,10-7,29) */
+/* Temporary variable for sub-expression on source location: (27,10-27,29) */
 share* __tac_var5 = ycirc->PutXORGate(signBitX, signBitY);
-/* Temporary variable for sub-expression on source location: (7,33-7,35) */
+/* Temporary variable for sub-expression on source location: (27,33-27,35) */
 share* __tac_var6 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (7,9-7,35) */
+/* Temporary variable for sub-expression on source location: (27,9-27,35) */
 share* __tac_var7 = ycirc->PutGTGate(__tac_var5, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,52-7,54) */
+/* Temporary variable for sub-expression on source location: (27,52-27,54) */
 share* __tac_var8 = __tac_var6;
-/* Temporary variable for sub-expression on source location: (7,41-7,54) */
+/* Temporary variable for sub-expression on source location: (27,41-27,54) */
 share* __tac_var9 = ycirc->PutGTGate(signBitX, __tac_var6);
-/* Temporary variable for sub-expression on source location: (7,58-7,63) */
+/* Temporary variable for sub-expression on source location: (27,58-27,63) */
 share* __tac_var10 = put_cons1_gate(ycirc, 0);
-/* Temporary variable for sub-expression on source location: (7,66-7,70) */
+/* Temporary variable for sub-expression on source location: (27,66-27,70) */
 share* __tac_var11 = put_cons1_gate(ycirc, 1);
-/* Temporary variable for sub-expression on source location: (7,40-7,70) */
+/* Temporary variable for sub-expression on source location: (27,40-27,70) */
 share* __tac_var12 = ycirc->PutMUXGate(__tac_var10, __tac_var11, __tac_var9);
-/* Temporary variable for sub-expression on source location: (7,75-7,82) */
+/* Temporary variable for sub-expression on source location: (27,75-27,82) */
 share* __tac_var13 = ycirc->PutGTGate(ux, uy);
-/* Temporary variable for sub-expression on source location: (7,8-7,83) */
+/* Temporary variable for sub-expression on source location: (27,8-27,83) */
 share* __tac_var14 = ycirc->PutMUXGate(__tac_var12, __tac_var13, __tac_var7);
 return __tac_var14;
 }
@@ -96,101 +96,101 @@ return __tac_var14;
 share* signedarshiftbl(share* x, uint32_t y){
 
 share* ux = x;
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 int32_t __tac_var15 = ( (int32_t)1 <<  (int32_t)31);
-/* Temporary variable for sub-expression on source location: (15,28-15,33) */
+/* Temporary variable for sub-expression on source location: (35,28-35,33) */
 share* __tac_var16 = put_cons32_gate(ycirc, __tac_var15);
 
 share* signBitX = ycirc->PutANDGate(x, __tac_var16);
-/* Temporary variable for sub-expression on source location: (16,21-16,23) */
+/* Temporary variable for sub-expression on source location: (36,21-36,23) */
 share* __tac_var17 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (16,10-16,23) */
+/* Temporary variable for sub-expression on source location: (36,10-36,23) */
 share* __tac_var18 = ycirc->PutGTGate(signBitX, __tac_var17);
-/* Temporary variable for sub-expression on source location: (16,28-16,30) */
+/* Temporary variable for sub-expression on source location: (36,28-36,30) */
 share* __tac_var19 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,37) */
+/* Temporary variable for sub-expression on source location: (36,35-36,37) */
 share* __tac_var20 = __tac_var17;
-/* Temporary variable for sub-expression on source location: (16,35-16,42) */
+/* Temporary variable for sub-expression on source location: (36,35-36,42) */
 share* __tac_var21 = ycirc->PutSUBGate(__tac_var17, ux);
-/* Temporary variable for sub-expression on source location: (16,34-16,48) */
+/* Temporary variable for sub-expression on source location: (36,34-36,48) */
 share* __tac_var22 = arithmetic_right_shift(ycirc, __tac_var21, y);
-/* Temporary variable for sub-expression on source location: (16,28-16,49) */
+/* Temporary variable for sub-expression on source location: (36,28-36,49) */
 share* __tac_var23 = ycirc->PutSUBGate(__tac_var17, __tac_var22);
-/* Temporary variable for sub-expression on source location: (16,54-16,61) */
+/* Temporary variable for sub-expression on source location: (36,54-36,61) */
 share* __tac_var24 = arithmetic_right_shift(ycirc, ux, y);
-/* Temporary variable for sub-expression on source location: (16,9-16,62) */
+/* Temporary variable for sub-expression on source location: (36,9-36,62) */
 share* __tac_var25 = ycirc->PutMUXGate(__tac_var23, __tac_var24, __tac_var18);
 return __tac_var25;
 }
 
 share* unsignedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (20,9-20,14) */
+/* Temporary variable for sub-expression on source location: (40,9-40,14) */
 share* __tac_var26 = ycirc->PutGTGate(y, x);
 return __tac_var26;
 }
 
 share* signedltbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (23,9-23,14) */
+/* Temporary variable for sub-expression on source location: (43,9-43,14) */
 share* __tac_var27 = signedgtbl(y, x);
 return __tac_var27;
 }
 
 share* unsignedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (27,10-27,15) */
+/* Temporary variable for sub-expression on source location: (47,10-47,15) */
 share* __tac_var28 = ycirc->PutGTGate(x, y);
-/* Temporary variable for sub-expression on source location: (27,8-27,16) */
+/* Temporary variable for sub-expression on source location: (47,8-47,16) */
 share* __tac_var29 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var28);
 return __tac_var29;
 }
 
 share* signedleqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (30,10-30,15) */
+/* Temporary variable for sub-expression on source location: (50,10-50,15) */
 share* __tac_var30 = signedgtbl(x, y);
-/* Temporary variable for sub-expression on source location: (30,8-30,16) */
+/* Temporary variable for sub-expression on source location: (50,8-50,16) */
 share* __tac_var31 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var30);
 return __tac_var31;
 }
 
 share* unsignedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (34,10-34,15) */
+/* Temporary variable for sub-expression on source location: (54,10-54,15) */
 share* __tac_var32 = ycirc->PutGTGate(y, x);
-/* Temporary variable for sub-expression on source location: (34,8-34,16) */
+/* Temporary variable for sub-expression on source location: (54,8-54,16) */
 share* __tac_var33 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var32);
 return __tac_var33;
 }
 
 share* signedgeqbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (37,10-37,15) */
+/* Temporary variable for sub-expression on source location: (57,10-57,15) */
 share* __tac_var34 = signedgtbl(y, x);
-/* Temporary variable for sub-expression on source location: (37,8-37,16) */
+/* Temporary variable for sub-expression on source location: (57,8-57,16) */
 share* __tac_var35 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var34);
 return __tac_var35;
 }
 
 share* unsignedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (41,11-41,16) */
+/* Temporary variable for sub-expression on source location: (61,11-61,16) */
 share* __tac_var36 = unsignedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (41,9-41,17) */
+/* Temporary variable for sub-expression on source location: (61,9-61,17) */
 share* __tac_var37 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var36);
-/* Temporary variable for sub-expression on source location: (41,25-41,30) */
+/* Temporary variable for sub-expression on source location: (61,25-61,30) */
 share* __tac_var38 = unsignedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (41,23-41,31) */
+/* Temporary variable for sub-expression on source location: (61,23-61,31) */
 share* __tac_var39 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var38);
-/* Temporary variable for sub-expression on source location: (41,8-41,32) */
+/* Temporary variable for sub-expression on source location: (61,8-61,32) */
 share* __tac_var40 = ycirc->PutANDGate(__tac_var37, __tac_var39);
 return __tac_var40;
 }
 
 share* signedequalsbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (44,11-44,16) */
+/* Temporary variable for sub-expression on source location: (64,11-64,16) */
 share* __tac_var41 = signedltbl(x, y);
-/* Temporary variable for sub-expression on source location: (44,9-44,17) */
+/* Temporary variable for sub-expression on source location: (64,9-64,17) */
 share* __tac_var42 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var41);
-/* Temporary variable for sub-expression on source location: (44,25-44,30) */
+/* Temporary variable for sub-expression on source location: (64,25-64,30) */
 share* __tac_var43 = signedltbl(y, x);
-/* Temporary variable for sub-expression on source location: (44,23-44,31) */
+/* Temporary variable for sub-expression on source location: (64,23-64,31) */
 share* __tac_var44 = ((BooleanCircuit *) ycirc)->PutINVGate(__tac_var43);
-/* Temporary variable for sub-expression on source location: (44,8-44,32) */
+/* Temporary variable for sub-expression on source location: (64,8-64,32) */
 share* __tac_var45 = ycirc->PutANDGate(__tac_var42, __tac_var44);
 return __tac_var45;
 }
@@ -206,33 +206,33 @@ for (uint32_t iter =  (int32_t)0; iter <  (int32_t)32; iter++){
 
 uint32_t i = ( (int32_t)31 - iter);
 divisor = left_shift(ycirc, divisor,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 uint32_t __tac_var46 = ( (uint32_t)1 << i);
-/* Temporary variable for sub-expression on source location: (61,32-61,39) */
+/* Temporary variable for sub-expression on source location: (81,32-81,39) */
 share* __tac_var47 = put_cons32_gate(ycirc, __tac_var46);
-/* Temporary variable for sub-expression on source location: (61,27-61,40) */
+/* Temporary variable for sub-expression on source location: (81,27-81,40) */
 share* __tac_var48 = ycirc->PutANDGate(x, __tac_var47);
-/* Temporary variable for sub-expression on source location: (61,26-61,47) */
+/* Temporary variable for sub-expression on source location: (81,26-81,47) */
 share* __tac_var49 = logical_right_shift(ycirc, __tac_var48, i);
 divisor = ycirc->PutADDGate(divisor, __tac_var49);
 cond = unsignedgeqbl(divisor, y);
-/* Temporary variable for sub-expression on source location: (63,22-63,36) */
+/* Temporary variable for sub-expression on source location: (83,22-83,36) */
 share* __tac_var50 = ycirc->PutSUBGate(divisor, y);
 divisor = ycirc->PutMUXGate(__tac_var50, divisor, cond);
 q = left_shift(ycirc, q,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,19-65,21) */
+/* Temporary variable for sub-expression on source location: (85,19-85,21) */
 share* __tac_var51 = put_cons32_gate(ycirc,  (uint32_t)1);
-/* Temporary variable for sub-expression on source location: (65,15-65,21) */
+/* Temporary variable for sub-expression on source location: (85,15-85,21) */
 share* __tac_var52 = ycirc->PutADDGate(q, __tac_var51);
 q = ycirc->PutMUXGate(__tac_var52, q, cond);
 }
-/* Temporary variable for sub-expression on source location: (68,9-68,34) */
+/* Temporary variable for sub-expression on source location: (88,9-88,34) */
 share* __tac_var53 = getQuotient ? q : divisor;
 return __tac_var53;
 }
 
 share* unsigneddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (71,8-71,32) */
+/* Temporary variable for sub-expression on source location: (91,8-91,32) */
 share* __tac_var54 = longDivision(x, y, 1);
 return __tac_var54;
 }
@@ -242,29 +242,29 @@ share* unsigneddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (76,8-76,13) */
+/* Temporary variable for sub-expression on source location: (96,8-96,13) */
 share* __tac_var55 = unsigneddivbl(bx, by);
 return __tac_var55;
 }
 
 share* signeddivbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (79,23-79,24) */
+/* Temporary variable for sub-expression on source location: (99,23-99,24) */
 share* __tac_var56 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var56);
-/* Temporary variable for sub-expression on source location: (80,23-80,24) */
+/* Temporary variable for sub-expression on source location: (100,23-100,24) */
 share* __tac_var57 = __tac_var56;
 
 share* isYNeg = signedltbl(y, __tac_var56);
-/* Temporary variable for sub-expression on source location: (81,26-81,27) */
+/* Temporary variable for sub-expression on source location: (101,26-101,27) */
 share* __tac_var58 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (81,26-81,31) */
+/* Temporary variable for sub-expression on source location: (101,26-101,31) */
 share* __tac_var59 = ycirc->PutSUBGate(__tac_var56, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var59, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (82,26-82,27) */
+/* Temporary variable for sub-expression on source location: (102,26-102,27) */
 share* __tac_var60 = __tac_var56;
-/* Temporary variable for sub-expression on source location: (82,26-82,31) */
+/* Temporary variable for sub-expression on source location: (102,26-102,31) */
 share* __tac_var61 = ycirc->PutSUBGate(__tac_var56, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
@@ -272,11 +272,11 @@ share* uy = ycirc->PutMUXGate(__tac_var61, y, isYNeg);
 share* ures = unsigneddivbl(ux, uy);
 
 share* isResNeg = ycirc->PutXORGate(isXNeg, isYNeg);
-/* Temporary variable for sub-expression on source location: (85,21-85,23) */
+/* Temporary variable for sub-expression on source location: (105,21-105,23) */
 share* __tac_var62 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (85,21-85,30) */
+/* Temporary variable for sub-expression on source location: (105,21-105,30) */
 share* __tac_var63 = ycirc->PutSUBGate(__tac_var62, ures);
-/* Temporary variable for sub-expression on source location: (85,9-85,38) */
+/* Temporary variable for sub-expression on source location: (105,9-105,38) */
 share* __tac_var64 = ycirc->PutMUXGate(__tac_var63, ures, isResNeg);
 return __tac_var64;
 }
@@ -286,13 +286,13 @@ share* signeddival(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (90,8-90,13) */
+/* Temporary variable for sub-expression on source location: (110,8-110,13) */
 share* __tac_var65 = signeddivbl(bx, by);
 return __tac_var65;
 }
 
 share* unsignedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (98,8-98,33) */
+/* Temporary variable for sub-expression on source location: (118,8-118,33) */
 share* __tac_var66 = longDivision(x, y, 0);
 return __tac_var66;
 }
@@ -302,39 +302,39 @@ share* unsignedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (103,8-103,13) */
+/* Temporary variable for sub-expression on source location: (123,8-123,13) */
 share* __tac_var67 = unsignedmodbl(bx, by);
 return __tac_var67;
 }
 
 share* signedmodbl(share* x, share* y){
-/* Temporary variable for sub-expression on source location: (106,23-106,24) */
+/* Temporary variable for sub-expression on source location: (126,23-126,24) */
 share* __tac_var68 = put_cons32_gate(ycirc,  (int32_t)0);
 
 share* isXNeg = signedltbl(x, __tac_var68);
-/* Temporary variable for sub-expression on source location: (107,23-107,24) */
+/* Temporary variable for sub-expression on source location: (127,23-127,24) */
 share* __tac_var69 = __tac_var68;
 
 share* isYNeg = signedltbl(y, __tac_var68);
-/* Temporary variable for sub-expression on source location: (108,26-108,27) */
+/* Temporary variable for sub-expression on source location: (128,26-128,27) */
 share* __tac_var70 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (108,26-108,31) */
+/* Temporary variable for sub-expression on source location: (128,26-128,31) */
 share* __tac_var71 = ycirc->PutSUBGate(__tac_var68, x);
 
 share* ux = ycirc->PutMUXGate(__tac_var71, x, isXNeg);
-/* Temporary variable for sub-expression on source location: (109,26-109,27) */
+/* Temporary variable for sub-expression on source location: (129,26-129,27) */
 share* __tac_var72 = __tac_var68;
-/* Temporary variable for sub-expression on source location: (109,26-109,31) */
+/* Temporary variable for sub-expression on source location: (129,26-129,31) */
 share* __tac_var73 = ycirc->PutSUBGate(__tac_var68, y);
 
 share* uy = ycirc->PutMUXGate(__tac_var73, y, isYNeg);
 
 share* urem = unsignedmodbl(ux, uy);
-/* Temporary variable for sub-expression on source location: (111,19-111,21) */
+/* Temporary variable for sub-expression on source location: (131,19-131,21) */
 share* __tac_var74 = put_cons32_gate(ycirc,  (uint32_t)0);
-/* Temporary variable for sub-expression on source location: (111,19-111,28) */
+/* Temporary variable for sub-expression on source location: (131,19-131,28) */
 share* __tac_var75 = ycirc->PutSUBGate(__tac_var74, urem);
-/* Temporary variable for sub-expression on source location: (111,9-111,36) */
+/* Temporary variable for sub-expression on source location: (131,9-131,36) */
 share* __tac_var76 = ycirc->PutMUXGate(__tac_var75, urem, isXNeg);
 return __tac_var76;
 }
@@ -344,7 +344,7 @@ share* signedmodal(share* x, share* y){
 share* bx = ycirc->PutA2YGate(x);
 
 share* by = ycirc->PutA2YGate(y);
-/* Temporary variable for sub-expression on source location: (116,8-116,13) */
+/* Temporary variable for sub-expression on source location: (136,8-136,13) */
 share* __tac_var77 = signedmodbl(bx, by);
 return __tac_var77;
 }
@@ -366,17 +366,17 @@ yy[ (int32_t)0] = put_cons32_gate(acirc,  (int32_t)0);
 
 int32_t i =  (int32_t)1;
 while ((i <  (int32_t)10)) {
-/* Temporary variable for sub-expression on source location: (131,13-131,16) */
+/* Temporary variable for sub-expression on source location: (171,13-171,16) */
 int32_t __tac_var78 = (i -  (int32_t)1);
-/* Temporary variable for sub-expression on source location: (131,10-131,17) */
+/* Temporary variable for sub-expression on source location: (171,10-171,17) */
 share* __tac_var79 = yy[__tac_var78];
-/* Temporary variable for sub-expression on source location: (131,20-131,21) */
+/* Temporary variable for sub-expression on source location: (171,20-171,21) */
 share* __tac_var80 = put_cons32_gate(acirc,  (int32_t)1);
 yy[i] = acirc->PutADDGate(__tac_var79, __tac_var80);
 i = (i +  (int32_t)1);
 }
 
-/* Temporary variable for sub-expression on source location: (134,13-134,18) */
+/* Temporary variable for sub-expression on source location: (174,13-174,18) */
 share* __tac_var81 = yy[ (int32_t)9];
 add_print_msg_to_output_queue(out_q, "Value of __tac_var81:", ALL, cout);
 add_to_output_queue(out_q, acirc->PutOUTGate(__tac_var81, ALL), ALL, cout);
diff --git a/EzPC/EzPC/test_suite/while.ezpc b/EzPC/EzPC/test_suite/while.ezpc
index e75d9e4..2059277 100644
--- a/EzPC/EzPC/test_suite/while.ezpc
+++ b/EzPC/EzPC/test_suite/while.ezpc
@@ -1,3 +1,27 @@
+(*
+
+Authors: Nishant Kumar, Aseem Rastogi.
+
+Copyright:
+Copyright (c) 2018 Microsoft Research
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+*)
+
 (*
 	This example shows the usage of while loop.
 *)
-- 
GitLab