Index: src/Common/PassVisitor.impl.h
===================================================================
--- src/Common/PassVisitor.impl.h	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/Common/PassVisitor.impl.h	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -2013,5 +2013,6 @@
 }
 
-
+//--------------------------------------------------------------------------
+// VoidType
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( VoidType * node ) {
@@ -2032,27 +2033,116 @@
 }
 
+//--------------------------------------------------------------------------
+// BasicType
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( BasicType * node ) {
-	VISIT_BODY( node );
-}
-
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( BasicType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+
+	MUTATE_END( Type, node );
+}
+
+//--------------------------------------------------------------------------
+// PointerType
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( PointerType * node ) {
-	VISIT_BODY( node );
-}
-
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+	// xxx - should PointerType visit/mutate dimension?
+	maybeAccept_impl( node->base, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( PointerType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+	// xxx - should PointerType visit/mutate dimension?
+	maybeMutate_impl( node->base, *this );
+
+	MUTATE_END( Type, node );
+}
+
+//--------------------------------------------------------------------------
+// ArrayType
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( ArrayType * node ) {
-	VISIT_BODY( node );
-}
-
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+	maybeAccept_impl( node->dimension, *this );
+	maybeAccept_impl( node->base, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( ArrayType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+	maybeMutate_impl( node->dimension, *this );
+	maybeMutate_impl( node->base, *this );
+
+	MUTATE_END( Type, node );
+}
+
+//--------------------------------------------------------------------------
+// ReferenceType
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( ReferenceType * node ) {
-	VISIT_BODY( node );
-}
-
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+	maybeAccept_impl( node->base, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( ReferenceType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+	maybeMutate_impl( node->base, *this );
+
+	MUTATE_END( Type, node );
+}
+
+//--------------------------------------------------------------------------
+// FunctionType
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( FunctionType * node ) {
-	VISIT_BODY( node );
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+	maybeAccept_impl( node->returnVals, *this );
+	maybeAccept_impl( node->parameters, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( FunctionType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+	maybeMutate_impl( node->returnVals, *this );
+	maybeMutate_impl( node->parameters, *this );
+
+	MUTATE_END( Type, node );
 }
 
@@ -2125,10 +2215,20 @@
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( EnumInstType * node ) {
-	VISIT_BODY( node );
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall, *this );
+	maybeAccept_impl( node->parameters, *this );
+
+	VISIT_END( node );
 }
 
 template< typename pass_type >
 Type * PassVisitor< pass_type >::mutate( EnumInstType * node ) {
-	MUTATE_BODY( Type, node );
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall, *this );
+	maybeMutate_impl( node->parameters, *this );
+
+	MUTATE_END( Type, node );
 }
 
@@ -2159,6 +2259,22 @@
 template< typename pass_type >
 void PassVisitor< pass_type >::visit( TypeInstType * node ) {
-	VISIT_BODY( node );
-}
+	VISIT_START( node );
+
+	maybeAccept_impl( node->forall    , *this );
+	maybeAccept_impl( node->parameters, *this );
+
+	VISIT_END( node );
+}
+
+template< typename pass_type >
+Type * PassVisitor< pass_type >::mutate( TypeInstType * node ) {
+	MUTATE_START( node );
+
+	maybeMutate_impl( node->forall    , *this );
+	maybeMutate_impl( node->parameters, *this );
+
+	MUTATE_END( Type, node );
+}
+
 
 template< typename pass_type >
@@ -2258,34 +2374,4 @@
 
 template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( BasicType * node ) {
-	MUTATE_BODY( Type, node );
-}
-
-template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( PointerType * node ) {
-	MUTATE_BODY( Type, node );
-}
-
-template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( ArrayType * node ) {
-	MUTATE_BODY( Type, node );
-}
-
-template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( ReferenceType * node ) {
-	MUTATE_BODY( Type, node );
-}
-
-template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( FunctionType * node ) {
-	MUTATE_BODY( Type, node );
-}
-
-template< typename pass_type >
-Type * PassVisitor< pass_type >::mutate( TypeInstType * node ) {
-	MUTATE_BODY( Type, node );
-}
-
-template< typename pass_type >
 Type * PassVisitor< pass_type >::mutate( TupleType * node ) {
 	MUTATE_BODY( Type, node );
Index: src/Concurrency/Keywords.cc
===================================================================
--- src/Concurrency/Keywords.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/Concurrency/Keywords.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -25,5 +25,4 @@
 #include "InitTweak/InitTweak.h"   // for getPointerBase
 #include "Parser/LinkageSpec.h"    // for Cforall
-#include "SymTab/AddVisit.h"       // for acceptAndAdd
 #include "SynTree/Constant.h"      // for Constant
 #include "SynTree/Declaration.h"   // for StructDecl, FunctionDecl, ObjectDecl
Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/InitTweak/InitTweak.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -296,6 +296,5 @@
 		ObjectDecl * objDecl = dynamic_cast< ObjectDecl * >( dwt );
 		if ( ! objDecl ) return false;
-		return ! LinkageSpec::isBuiltin( objDecl->get_linkage() ) &&
-			(objDecl->get_init() == nullptr ||
+		return (objDecl->get_init() == nullptr ||
 				( objDecl->get_init() != nullptr && objDecl->get_init()->get_maybeConstructed() ))
 			&& ! objDecl->get_storageClasses().is_extern
Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -204,8 +204,9 @@
 	} // namespace
 
-	void referenceToRvalueConversion( Expression *& expr ) {
+	void referenceToRvalueConversion( Expression *& expr, Cost & cost ) {
 		if ( dynamic_cast< ReferenceType * >( expr->get_result() ) ) {
 			// cast away reference from expr
 			expr = new CastExpr( expr, expr->get_result()->stripReferences()->clone() );
+			cost.incReference();
 		}
 	}
@@ -435,5 +436,5 @@
 					PRINT( std::cerr << "end of formals with varargs function: inc unsafe: " << convCost << std::endl; ; )
 					// convert reference-typed expressions to value-typed expressions
-					referenceToRvalueConversion( *actualExpr );
+					referenceToRvalueConversion( *actualExpr, convCost );
 					continue;
 				} else {
@@ -565,5 +566,6 @@
 				// DOESN'T WORK: grandchild nodes conflict with their cousins
 				//if ( newNeedParents[ curDecl->get_uniqueId() ][ candDecl->get_uniqueId() ]++ > recursionParentLimit ) continue;
-				Expression *varExpr = data.combine();
+
+				Expression *varExpr = data.combine( newerAlt.cvtCost );
 				delete varExpr->get_result();
 				varExpr->set_result( adjType->clone() );
@@ -1121,5 +1123,5 @@
 					if ( FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() ) ) {
 						Alternative newFunc( *func );
-						referenceToRvalueConversion( newFunc.expr );
+						referenceToRvalueConversion( newFunc.expr, newFunc.cost );
 						makeFunctionAlternatives( newFunc, function, argExpansions,
 							std::back_inserter( candidates ) );
@@ -1130,5 +1132,5 @@
 						if ( FunctionType *function = dynamic_cast< FunctionType* >( eqvClass.type ) ) {
 							Alternative newFunc( *func );
-							referenceToRvalueConversion( newFunc.expr );
+							referenceToRvalueConversion( newFunc.expr, newFunc.cost );
 							makeFunctionAlternatives( newFunc, function, argExpansions,
 								std::back_inserter( candidates ) );
@@ -1160,5 +1162,5 @@
 								dynamic_cast<FunctionType*>( pointer->get_base() ) ) {
 							Alternative newFunc( *funcOp );
-							referenceToRvalueConversion( newFunc.expr );
+							referenceToRvalueConversion( newFunc.expr, newFunc.cost );
 							makeFunctionAlternatives( newFunc, function, argExpansions,
 								std::back_inserter( candidates ) );
@@ -1344,17 +1346,16 @@
 		for ( AltList::const_iterator agg = funcFinder.alternatives.begin(); agg != funcFinder.alternatives.end(); ++agg ) {
 			// it's okay for the aggregate expression to have reference type -- cast it to the base type to treat the aggregate as the referenced value
-			std::unique_ptr<Expression> aggrExpr( agg->expr->clone() );
-			Type * aggrType = aggrExpr->get_result();
-			if ( dynamic_cast< ReferenceType * >( aggrType ) ) {
-				aggrType = aggrType->stripReferences();
-				aggrExpr.reset( new CastExpr( aggrExpr.release(), aggrType->clone() ) );
-			}
+			Cost cost = agg->cost;
+			Expression * aggrExpr = agg->expr->clone();
+			referenceToRvalueConversion( aggrExpr, cost );
+			std::unique_ptr<Expression> guard( aggrExpr );
+
 			// find member of the given type
 			if ( StructInstType *structInst = dynamic_cast< StructInstType* >( aggrExpr->get_result() ) ) {
-				addAggMembers( structInst, aggrExpr.get(), agg->cost, agg->env, memberExpr->get_member() );
+				addAggMembers( structInst, aggrExpr, cost, agg->env, memberExpr->get_member() );
 			} else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( aggrExpr->get_result() ) ) {
-				addAggMembers( unionInst, aggrExpr.get(), agg->cost, agg->env, memberExpr->get_member() );
+				addAggMembers( unionInst, aggrExpr, cost, agg->env, memberExpr->get_member() );
 			} else if ( TupleType * tupleType = dynamic_cast< TupleType * >( aggrExpr->get_result() ) ) {
-				addTupleMembers( tupleType, aggrExpr.get(), agg->cost, agg->env, memberExpr->get_member() );
+				addTupleMembers( tupleType, aggrExpr, cost, agg->env, memberExpr->get_member() );
 			} // if
 		} // for
@@ -1370,7 +1371,7 @@
 		PRINT( std::cerr << "nameExpr is " << nameExpr->name << std::endl; )
 		for ( auto & data : declList ) {
-			Expression * newExpr = data.combine();
-			// xxx - add in extra cost for with-statement exprs?
-			alternatives.push_back( Alternative( newExpr, env, Cost::zero ) );
+			Cost cost = Cost::zero;
+			Expression * newExpr = data.combine( cost );
+			alternatives.push_back( Alternative( newExpr, env, Cost::zero, cost ) );
 			PRINT(
 				std::cerr << "decl is ";
@@ -1412,5 +1413,5 @@
 			// return the lowest cost alternative for the argument
 			Alternative &choice = winners.front();
-			referenceToRvalueConversion( choice.expr );
+			referenceToRvalueConversion( choice.expr, choice.cost );
 			alternatives.push_back( Alternative( new SizeofExpr( choice.expr->clone() ), choice.env, Cost::zero ) );
 		} // if
@@ -1433,5 +1434,5 @@
 			// return the lowest cost alternative for the argument
 			Alternative &choice = winners.front();
-			referenceToRvalueConversion( choice.expr );
+			referenceToRvalueConversion( choice.expr, choice.cost );
 			alternatives.push_back( Alternative( new AlignofExpr( choice.expr->clone() ), choice.env, Cost::zero ) );
 		} // if
@@ -1485,5 +1486,7 @@
 			AltList & alternatives = finder.get_alternatives();
 			if ( typesCompatibleIgnoreQualifiers( argType, function->get_parameters().front()->get_type(), indexer, env ) ) {
-				alternatives.push_back( Alternative( new AttrExpr( data.combine(), argType->clone() ), env, Cost::zero ) );
+				Cost cost = Cost::zero;
+				Expression * newExpr = data.combine( cost );
+				alternatives.push_back( Alternative( new AttrExpr( newExpr, argType->clone() ), env, Cost::zero, cost ) );
 				for ( DeclarationWithType * retVal : function->returnVals ) {
 					alternatives.back().expr->result = retVal->get_type()->clone();
@@ -1522,5 +1525,7 @@
 		} else {
 			for ( auto & data : attrList ) {
-				alternatives.push_back( Alternative( data.combine(), env, Cost::zero ) );
+				Cost cost = Cost::zero;
+				Expression * newExpr = data.combine( cost );
+				alternatives.push_back( Alternative( newExpr, env, Cost::zero, cost ) );
 				renameTypes( alternatives.back().expr );
 			} // for
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/ResolvExpr/ConversionCost.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -170,5 +170,7 @@
 	Cost convertToReferenceCost( Type * src, ReferenceType * dest, const SymTab::Indexer & indexer, const TypeEnvironment & env, PtrsFunction func ) {
 		int sdepth = src->referenceDepth(), ddepth = dest->referenceDepth();
-		return convertToReferenceCost( src, dest, sdepth-ddepth, indexer, env, func );
+		Cost cost = convertToReferenceCost( src, dest, sdepth-ddepth, indexer, env, func );
+		PRINT( std::cerr << "convertToReferenceCost result: " << cost << std::endl; )
+		return cost;
 	}
 
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/ResolvExpr/Resolver.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -526,5 +526,5 @@
 					Alternative newFunc( func );
 					// Strip reference from function
-					referenceToRvalueConversion( newFunc.expr );
+					referenceToRvalueConversion( newFunc.expr, newFunc.cost );
 
 					// For all the set of arguments we have try to match it with the parameter of the current function alternative
Index: src/ResolvExpr/typeops.h
===================================================================
--- src/ResolvExpr/typeops.h	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/ResolvExpr/typeops.h	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -106,5 +106,5 @@
 
 	// in AlternativeFinder.cc
-	void referenceToRvalueConversion( Expression *& expr );
+	void referenceToRvalueConversion( Expression *& expr, Cost & cost );
 
 	// flatten tuple type into list of types
Index: c/SymTab/AddVisit.h
===================================================================
--- src/SymTab/AddVisit.h	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// AddVisit.h --
-//
-// Author           : Richard C. Bilson
-// Created On       : Sun May 17 16:14:32 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  2 16:36:02 2017
-// Update Count     : 14
-//
-
-#include "SynTree/Statement.h"
-
-namespace SymTab {
-	void addDecls( std::list< Declaration* > &declsToAdd, std::list< Statement* > &statements, std::list< Statement* >::iterator i );
-
-	template< typename Visitor >
-	inline void addVisitStatementList( std::list< Statement* > &stmts, Visitor &visitor ) {
-		for ( std::list< Statement* >::iterator stmt = stmts.begin(); ; ++stmt ) {
-			// add any new declarations after the previous statement
-			for ( std::list< Declaration* >::iterator decl = visitor.declsToAddAfter.begin(); decl != visitor.declsToAddAfter.end(); ++decl ) {
-				DeclStmt *declStmt = new DeclStmt( *decl );
-				stmts.insert( stmt, declStmt );
-			}
-			visitor.declsToAddAfter.clear();
-
-			if ( stmt == stmts.end() ) break;
-
-			// run mutator on statement
-			maybeAccept( *stmt, visitor );
-
-			// add any new declarations before the statement
-			for ( std::list< Declaration* >::iterator decl = visitor.declsToAdd.begin(); decl != visitor.declsToAdd.end(); ++decl ) {
-				DeclStmt *declStmt = new DeclStmt( *decl );
-				stmts.insert( stmt, declStmt );
-			}
-			visitor.declsToAdd.clear();
-		}
-	}
-
-	template< typename Visitor >
-	inline void addVisit(CompoundStmt *compoundStmt, Visitor &visitor) {
-		addVisitStatementList( compoundStmt->get_kids(), visitor );
-	}
-
-	template< typename Visitor >
-	inline void addVisit(SwitchStmt *switchStmt, Visitor &visitor) {
-		addVisitStatementList( switchStmt->get_statements(), visitor );
-		maybeAccept( switchStmt->get_condition(), visitor );
-	}
-
-	template< typename Visitor >
-	void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor ) {
-		for ( std::list< Declaration* >::iterator decl = translationUnit.begin(); ; ++decl ) {
-			// splice in new declarations after previous decl
-			translationUnit.splice( decl, visitor.declsToAddAfter );
-
-			if ( decl == translationUnit.end() ) break;
-
-			// run mutator on declaration
-			maybeAccept( *decl, visitor );
-
-			// splice in new declarations before current decl
-			translationUnit.splice( decl, visitor.declsToAdd );
-		}
-	}
-
-} // namespace SymTab
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SymTab/Autogen.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -24,5 +24,4 @@
 #include <vector>                  // for vector
 
-#include "AddVisit.h"              // for addVisit
 #include "CodeGen/OperatorTable.h" // for isCtorDtor, isCtorDtorAssign
 #include "Common/PassVisitor.h"    // for PassVisitor
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SymTab/Indexer.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -603,5 +603,6 @@
 					if ( dynamic_cast< StructInstType * >( t ) || dynamic_cast< UnionInstType * >( t ) ) {
 						Expression * base = expr->clone();
-						ResolvExpr::referenceToRvalueConversion( base );
+						ResolvExpr::Cost cost = ResolvExpr::Cost::zero; // xxx - carry this cost into the indexer as a base cost?
+						ResolvExpr::referenceToRvalueConversion( base, cost );
 						addMembers( t->getAggr(), new MemberExpr( dwt, base ), handleConflicts );
 					}
@@ -705,9 +706,9 @@
 	}
 
-	Expression * Indexer::IdData::combine() const {
+	Expression * Indexer::IdData::combine( ResolvExpr::Cost & cost ) const {
 		Expression * ret = nullptr;
 		if ( baseExpr ) {
 			Expression * base = baseExpr->clone();
-			ResolvExpr::referenceToRvalueConversion( base );
+			ResolvExpr::referenceToRvalueConversion( base, cost );
 			ret = new MemberExpr( id, base );
 			// xxx - this introduces hidden environments, for now remove them.
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SymTab/Indexer.h	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -23,4 +23,8 @@
 #include "SynTree/Visitor.h"  // for Visitor
 #include "SynTree/SynTree.h"  // for AST nodes
+
+namespace ResolvExpr {
+class Cost;
+}
 
 namespace SymTab {
@@ -51,5 +55,5 @@
 			IdData( DeclarationWithType * id, Expression * baseExpr, BaseSyntaxNode * deleteStmt ) : id( id ), baseExpr( baseExpr ), deleteStmt( deleteStmt ) {}
 
-			Expression * combine() const;
+			Expression * combine( ResolvExpr::Cost & cost ) const;
 		};
 
Index: src/SymTab/Validate.cc
===================================================================
--- src/SymTab/Validate.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SymTab/Validate.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -60,5 +60,4 @@
 #include "Parser/LinkageSpec.h"        // for C
 #include "ResolvExpr/typeops.h"        // for typesCompatible
-#include "SymTab/AddVisit.h"           // for addVisit
 #include "SymTab/Autogen.h"            // for SizeType
 #include "SynTree/Attribute.h"         // for noAttributes, Attribute
Index: src/SynTree/Mutator.cc
===================================================================
--- src/SynTree/Mutator.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SynTree/Mutator.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -32,525 +32,4 @@
 
 Mutator::~Mutator() {}
-
-DeclarationWithType * Mutator::mutate( ObjectDecl *objectDecl ) {
-	objectDecl->set_type( maybeMutate( objectDecl->get_type(), *this ) );
-	objectDecl->set_init( maybeMutate( objectDecl->get_init(), *this ) );
-	objectDecl->set_bitfieldWidth( maybeMutate( objectDecl->get_bitfieldWidth(), *this ) );
-	mutateAll( objectDecl->attributes, *this );
-	return objectDecl;
-}
-
-DeclarationWithType * Mutator::mutate( FunctionDecl *functionDecl ) {
-	functionDecl->set_functionType( maybeMutate( functionDecl->get_functionType(), *this ) );
-	functionDecl->set_statements( maybeMutate( functionDecl->get_statements(), *this ) );
-	mutateAll( functionDecl->attributes, *this );
-	return functionDecl;
-}
-
-Declaration * Mutator::handleAggregateDecl( AggregateDecl *aggregateDecl ) {
-	mutateAll( aggregateDecl->get_parameters(), *this );
-	mutateAll( aggregateDecl->get_members(), *this );
-	return aggregateDecl;
-}
-
-Declaration * Mutator::mutate( StructDecl *aggregateDecl ) {
-	handleAggregateDecl( aggregateDecl );
-	return aggregateDecl;
-}
-
-Declaration * Mutator::mutate( UnionDecl *aggregateDecl ) {
-	handleAggregateDecl( aggregateDecl );
-	return aggregateDecl;
-}
-
-Declaration * Mutator::mutate( EnumDecl *aggregateDecl ) {
-	handleAggregateDecl( aggregateDecl );
-	return aggregateDecl;
-}
-
-Declaration * Mutator::mutate( TraitDecl *aggregateDecl ) {
-	handleAggregateDecl( aggregateDecl );
-	return aggregateDecl;
-}
-
-Declaration * Mutator::handleNamedTypeDecl( NamedTypeDecl *typeDecl ) {
-	mutateAll( typeDecl->get_parameters(), *this );
-	mutateAll( typeDecl->get_assertions(), *this );
-	typeDecl->set_base( maybeMutate( typeDecl->get_base(), *this ) );
-	return typeDecl;
-}
-
-Declaration * Mutator::mutate( TypeDecl *typeDecl ) {
-	handleNamedTypeDecl( typeDecl );
-	typeDecl->set_init( maybeMutate( typeDecl->get_init(), *this ) );
-	return typeDecl;
-}
-
-Declaration * Mutator::mutate( TypedefDecl *typeDecl ) {
-	handleNamedTypeDecl( typeDecl );
-	return typeDecl;
-}
-
-AsmDecl * Mutator::mutate( AsmDecl *asmDecl ) {
-	asmDecl->set_stmt( maybeMutate( asmDecl->get_stmt(), *this ) );
-	return asmDecl;
-}
-
-
-CompoundStmt * Mutator::mutate( CompoundStmt *compoundStmt ) {
-	mutateAll( compoundStmt->get_kids(), *this );
-	return compoundStmt;
-}
-
-Statement * Mutator::mutate( ExprStmt *exprStmt ) {
-	exprStmt->set_expr( maybeMutate( exprStmt->get_expr(), *this ) );
-	return exprStmt;
-}
-
-Statement * Mutator::mutate( AsmStmt *asmStmt ) {
-	asmStmt->set_instruction( maybeMutate( asmStmt->get_instruction(), *this ) );
-	mutateAll( asmStmt->get_output(), *this );
-	mutateAll( asmStmt->get_input(), *this );
-	mutateAll( asmStmt->get_clobber(), *this );
-	return asmStmt;
-}
-
-Statement * Mutator::mutate( IfStmt *ifStmt ) {
-	mutateAll( ifStmt->get_initialization(), *this );
-	ifStmt->set_condition( maybeMutate( ifStmt->get_condition(), *this ) );
-	ifStmt->set_thenPart( maybeMutate( ifStmt->get_thenPart(), *this ) );
-	ifStmt->set_elsePart( maybeMutate( ifStmt->get_elsePart(), *this ) );
-	return ifStmt;
-}
-
-Statement * Mutator::mutate( WhileStmt *whileStmt ) {
-	whileStmt->set_condition( maybeMutate( whileStmt->get_condition(), *this ) );
-	whileStmt->set_body( maybeMutate( whileStmt->get_body(), *this ) );
-	return whileStmt;
-}
-
-Statement * Mutator::mutate( ForStmt *forStmt ) {
-	mutateAll( forStmt->get_initialization(), *this );
-	forStmt->set_condition( maybeMutate( forStmt->get_condition(), *this ) );
-	forStmt->set_increment( maybeMutate( forStmt->get_increment(), *this ) );
-	forStmt->set_body( maybeMutate( forStmt->get_body(), *this ) );
-	return forStmt;
-}
-
-Statement * Mutator::mutate( SwitchStmt *switchStmt ) {
-	switchStmt->set_condition( maybeMutate( switchStmt->get_condition(), *this ) );
-	mutateAll( switchStmt->get_statements(), *this );
-	return switchStmt;
-}
-
-Statement * Mutator::mutate( CaseStmt *caseStmt ) {
-	caseStmt->set_condition( maybeMutate( caseStmt->get_condition(), *this ) );
-	mutateAll (caseStmt->get_statements(), *this );
-
-	return caseStmt;
-}
-
-Statement * Mutator::mutate( BranchStmt *branchStmt ) {
-	return branchStmt;
-}
-
-Statement * Mutator::mutate( ReturnStmt *returnStmt ) {
-	returnStmt->set_expr( maybeMutate( returnStmt->get_expr(), *this ) );
-	return returnStmt;
-}
-
-Statement * Mutator::mutate( ThrowStmt *throwStmt ) {
-	throwStmt->set_expr( maybeMutate( throwStmt->get_expr(), *this ) );
-	throwStmt->set_target( maybeMutate( throwStmt->get_target(), *this ) );
-	return throwStmt;
-}
-
-Statement * Mutator::mutate( TryStmt *tryStmt ) {
-	tryStmt->set_block( maybeMutate( tryStmt->get_block(), *this ) );
-	mutateAll( tryStmt->get_catchers(), *this );
-	tryStmt->set_finally( maybeMutate( tryStmt->get_finally(), *this ) );
-	return tryStmt;
-}
-
-Statement * Mutator::mutate( CatchStmt *catchStmt ) {
-	catchStmt->set_decl( maybeMutate( catchStmt->get_decl(), *this ) );
-	catchStmt->set_cond( maybeMutate( catchStmt->get_cond(), *this ) );
-	catchStmt->set_body( maybeMutate( catchStmt->get_body(), *this ) );
-	return catchStmt;
-}
-
-Statement * Mutator::mutate( FinallyStmt *finalStmt ) {
-	finalStmt->set_block( maybeMutate( finalStmt->get_block(), *this ) );
-	return finalStmt;
-}
-
-Statement * Mutator::mutate( WaitForStmt *waitforStmt ) {
-	for( auto & clause : waitforStmt->clauses ) {
-		clause.target.function = maybeMutate( clause.target.function, *this );
-		mutateAll( clause.target.arguments, *this );
-
-		clause.statement = maybeMutate( clause.statement, *this );
-		clause.condition = maybeMutate( clause.condition, *this );
-	}
-
-	waitforStmt->timeout.time      = maybeMutate( waitforStmt->timeout.time, *this );
-	waitforStmt->timeout.statement = maybeMutate( waitforStmt->timeout.statement, *this );
-	waitforStmt->timeout.condition = maybeMutate( waitforStmt->timeout.condition, *this );
-	waitforStmt->orelse.statement  = maybeMutate( waitforStmt->orelse.statement, *this );
-	waitforStmt->orelse.condition  = maybeMutate( waitforStmt->orelse.condition, *this );
-
-	return waitforStmt;
-}
-
-Statement * Mutator::mutate( WithStmt * withStmt ) {
-	mutateAll( withStmt->exprs, *this );
-	withStmt->stmt = maybeMutate( withStmt->stmt, *this );
-	return withStmt;
-}
-
-NullStmt * Mutator::mutate( NullStmt *nullStmt ) {
-	return nullStmt;
-}
-
-Statement * Mutator::mutate( DeclStmt *declStmt ) {
-	declStmt->set_decl( maybeMutate( declStmt->get_decl(), *this ) );
-	return declStmt;
-}
-
-Statement * Mutator::mutate( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
-	impCtorDtorStmt->set_callStmt( maybeMutate( impCtorDtorStmt->get_callStmt(), *this ) );
-	return impCtorDtorStmt;
-}
-
-
-Expression * Mutator::mutate( ApplicationExpr *applicationExpr ) {
-	applicationExpr->set_env( maybeMutate( applicationExpr->get_env(), *this ) );
-	applicationExpr->set_result( maybeMutate( applicationExpr->get_result(), *this ) );
-	applicationExpr->set_function( maybeMutate( applicationExpr->get_function(), *this ) );
-	mutateAll( applicationExpr->get_args(), *this );
-	return applicationExpr;
-}
-
-Expression * Mutator::mutate( UntypedExpr *untypedExpr ) {
-	untypedExpr->set_env( maybeMutate( untypedExpr->get_env(), *this ) );
-	untypedExpr->set_result( maybeMutate( untypedExpr->get_result(), *this ) );
-	mutateAll( untypedExpr->get_args(), *this );
-	return untypedExpr;
-}
-
-Expression * Mutator::mutate( NameExpr *nameExpr ) {
-	nameExpr->set_env( maybeMutate( nameExpr->get_env(), *this ) );
-	nameExpr->set_result( maybeMutate( nameExpr->get_result(), *this ) );
-	return nameExpr;
-}
-
-Expression * Mutator::mutate( AddressExpr *addressExpr ) {
-	addressExpr->set_env( maybeMutate( addressExpr->get_env(), *this ) );
-	addressExpr->set_result( maybeMutate( addressExpr->get_result(), *this ) );
-	addressExpr->set_arg( maybeMutate( addressExpr->get_arg(), *this ) );
-	return addressExpr;
-}
-
-Expression * Mutator::mutate( LabelAddressExpr *labelAddressExpr ) {
-	labelAddressExpr->set_env( maybeMutate( labelAddressExpr->get_env(), *this ) );
-	labelAddressExpr->set_result( maybeMutate( labelAddressExpr->get_result(), *this ) );
-	return labelAddressExpr;
-}
-
-Expression * Mutator::mutate( CastExpr *castExpr ) {
-	castExpr->set_env( maybeMutate( castExpr->get_env(), *this ) );
-	castExpr->set_result( maybeMutate( castExpr->get_result(), *this ) );
-	castExpr->set_arg( maybeMutate( castExpr->get_arg(), *this ) );
-	return castExpr;
-}
-
-Expression * Mutator::mutate( VirtualCastExpr *castExpr ) {
-	castExpr->set_env( maybeMutate( castExpr->get_env(), *this ) );
-	castExpr->set_result( maybeMutate( castExpr->get_result(), *this ) );
-	castExpr->set_arg( maybeMutate( castExpr->get_arg(), *this ) );
-	return castExpr;
-}
-
-Expression * Mutator::mutate( UntypedMemberExpr *memberExpr ) {
-	memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) );
-	memberExpr->set_result( maybeMutate( memberExpr->get_result(), *this ) );
-	memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) );
-	memberExpr->set_member( maybeMutate( memberExpr->get_member(), *this ) );
-	return memberExpr;
-}
-
-Expression * Mutator::mutate( MemberExpr *memberExpr ) {
-	memberExpr->set_env( maybeMutate( memberExpr->get_env(), *this ) );
-	memberExpr->set_result( maybeMutate( memberExpr->get_result(), *this ) );
-	memberExpr->set_aggregate( maybeMutate( memberExpr->get_aggregate(), *this ) );
-	return memberExpr;
-}
-
-Expression * Mutator::mutate( VariableExpr *variableExpr ) {
-	variableExpr->set_env( maybeMutate( variableExpr->get_env(), *this ) );
-	variableExpr->set_result( maybeMutate( variableExpr->get_result(), *this ) );
-	return variableExpr;
-}
-
-Expression * Mutator::mutate( ConstantExpr *constantExpr ) {
-	constantExpr->set_env( maybeMutate( constantExpr->get_env(), *this ) );
-	constantExpr->set_result( maybeMutate( constantExpr->get_result(), *this ) );
-//  maybeMutate( constantExpr->get_constant(), *this )
-	return constantExpr;
-}
-
-Expression * Mutator::mutate( SizeofExpr *sizeofExpr ) {
-	sizeofExpr->set_env( maybeMutate( sizeofExpr->get_env(), *this ) );
-	sizeofExpr->set_result( maybeMutate( sizeofExpr->get_result(), *this ) );
-	if ( sizeofExpr->get_isType() ) {
-		sizeofExpr->set_type( maybeMutate( sizeofExpr->get_type(), *this ) );
-	} else {
-		sizeofExpr->set_expr( maybeMutate( sizeofExpr->get_expr(), *this ) );
-	}
-	return sizeofExpr;
-}
-
-Expression * Mutator::mutate( AlignofExpr *alignofExpr ) {
-	alignofExpr->set_env( maybeMutate( alignofExpr->get_env(), *this ) );
-	alignofExpr->set_result( maybeMutate( alignofExpr->get_result(), *this ) );
-	if ( alignofExpr->get_isType() ) {
-		alignofExpr->set_type( maybeMutate( alignofExpr->get_type(), *this ) );
-	} else {
-		alignofExpr->set_expr( maybeMutate( alignofExpr->get_expr(), *this ) );
-	}
-	return alignofExpr;
-}
-
-Expression * Mutator::mutate( UntypedOffsetofExpr *offsetofExpr ) {
-	offsetofExpr->set_env( maybeMutate( offsetofExpr->get_env(), *this ) );
-	offsetofExpr->set_result( maybeMutate( offsetofExpr->get_result(), *this ) );
-	offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
-	return offsetofExpr;
-}
-
-Expression * Mutator::mutate( OffsetofExpr *offsetofExpr ) {
-	offsetofExpr->set_env( maybeMutate( offsetofExpr->get_env(), *this ) );
-	offsetofExpr->set_result( maybeMutate( offsetofExpr->get_result(), *this ) );
-	offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
-	offsetofExpr->set_member( maybeMutate( offsetofExpr->get_member(), *this ) );
-	return offsetofExpr;
-}
-
-Expression * Mutator::mutate( OffsetPackExpr *offsetPackExpr ) {
-	offsetPackExpr->set_env( maybeMutate( offsetPackExpr->get_env(), *this ) );
-	offsetPackExpr->set_result( maybeMutate( offsetPackExpr->get_result(), *this ) );
-	offsetPackExpr->set_type( maybeMutate( offsetPackExpr->get_type(), *this ) );
-	return offsetPackExpr;
-}
-
-Expression * Mutator::mutate( AttrExpr *attrExpr ) {
-	attrExpr->set_env( maybeMutate( attrExpr->get_env(), *this ) );
-	attrExpr->set_result( maybeMutate( attrExpr->get_result(), *this ) );
-	if ( attrExpr->get_isType() ) {
-		attrExpr->set_type( maybeMutate( attrExpr->get_type(), *this ) );
-	} else {
-		attrExpr->set_expr( maybeMutate( attrExpr->get_expr(), *this ) );
-	}
-	return attrExpr;
-}
-
-Expression * Mutator::mutate( LogicalExpr *logicalExpr ) {
-	logicalExpr->set_env( maybeMutate( logicalExpr->get_env(), *this ) );
-	logicalExpr->set_result( maybeMutate( logicalExpr->get_result(), *this ) );
-	logicalExpr->set_arg1( maybeMutate( logicalExpr->get_arg1(), *this ) );
-	logicalExpr->set_arg2( maybeMutate( logicalExpr->get_arg2(), *this ) );
-	return logicalExpr;
-}
-
-Expression * Mutator::mutate( ConditionalExpr *conditionalExpr ) {
-	conditionalExpr->set_env( maybeMutate( conditionalExpr->get_env(), *this ) );
-	conditionalExpr->set_result( maybeMutate( conditionalExpr->get_result(), *this ) );
-	conditionalExpr->set_arg1( maybeMutate( conditionalExpr->get_arg1(), *this ) );
-	conditionalExpr->set_arg2( maybeMutate( conditionalExpr->get_arg2(), *this ) );
-	conditionalExpr->set_arg3( maybeMutate( conditionalExpr->get_arg3(), *this ) );
-	return conditionalExpr;
-}
-
-Expression * Mutator::mutate( CommaExpr *commaExpr ) {
-	commaExpr->set_env( maybeMutate( commaExpr->get_env(), *this ) );
-	commaExpr->set_result( maybeMutate( commaExpr->get_result(), *this ) );
-	commaExpr->set_arg1( maybeMutate( commaExpr->get_arg1(), *this ) );
-	commaExpr->set_arg2( maybeMutate( commaExpr->get_arg2(), *this ) );
-	return commaExpr;
-}
-
-Expression * Mutator::mutate( TypeExpr *typeExpr ) {
-	typeExpr->set_env( maybeMutate( typeExpr->get_env(), *this ) );
-	typeExpr->set_result( maybeMutate( typeExpr->get_result(), *this ) );
-	typeExpr->set_type( maybeMutate( typeExpr->get_type(), *this ) );
-	return typeExpr;
-}
-
-Expression * Mutator::mutate( AsmExpr *asmExpr ) {
-	asmExpr->set_env( maybeMutate( asmExpr->get_env(), *this ) );
-	asmExpr->set_inout( maybeMutate( asmExpr->get_inout(), *this ) );
-	asmExpr->set_constraint( maybeMutate( asmExpr->get_constraint(), *this ) );
-	asmExpr->set_operand( maybeMutate( asmExpr->get_operand(), *this ) );
-	return asmExpr;
-}
-
-Expression* Mutator::mutate( ImplicitCopyCtorExpr *impCpCtorExpr ) {
-	impCpCtorExpr->set_env( maybeMutate( impCpCtorExpr->get_env(), *this ) );
-	impCpCtorExpr->set_result( maybeMutate( impCpCtorExpr->get_result(), *this ) );
-	impCpCtorExpr->set_callExpr( maybeMutate( impCpCtorExpr->get_callExpr(), *this ) );
-	mutateAll( impCpCtorExpr->get_tempDecls(), *this );
-	mutateAll( impCpCtorExpr->get_returnDecls(), *this );
-	mutateAll( impCpCtorExpr->get_dtors(), *this );
-	return impCpCtorExpr;
-}
-
-Expression* Mutator::mutate( ConstructorExpr *ctorExpr ) {
-	ctorExpr->set_env( maybeMutate( ctorExpr->get_env(), *this ) );
-	ctorExpr->set_result( maybeMutate( ctorExpr->get_result(), *this ) );
-	ctorExpr->set_callExpr( maybeMutate( ctorExpr->get_callExpr(), *this ) );
-	return ctorExpr;
-}
-
-Expression * Mutator::mutate( CompoundLiteralExpr *compLitExpr ) {
-	compLitExpr->set_env( maybeMutate( compLitExpr->get_env(), *this ) );
-	compLitExpr->set_result( maybeMutate( compLitExpr->get_result(), *this ) );
-	compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) );
-	return compLitExpr;
-}
-
-Expression * Mutator::mutate( RangeExpr *rangeExpr ) {
-	rangeExpr->set_env( maybeMutate( rangeExpr->get_env(), *this ) );
-	rangeExpr->set_low( maybeMutate( rangeExpr->get_low(), *this ) );
-	rangeExpr->set_high( maybeMutate( rangeExpr->get_high(), *this ) );
-	return rangeExpr;
-}
-
-Expression * Mutator::mutate( UntypedTupleExpr *tupleExpr ) {
-	tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
-	tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
-	mutateAll( tupleExpr->get_exprs(), *this );
-	return tupleExpr;
-}
-
-Expression * Mutator::mutate( TupleExpr *tupleExpr ) {
-	tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
-	tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
-	mutateAll( tupleExpr->get_exprs(), *this );
-	return tupleExpr;
-}
-
-Expression * Mutator::mutate( TupleIndexExpr *tupleExpr ) {
-	tupleExpr->set_env( maybeMutate( tupleExpr->get_env(), *this ) );
-	tupleExpr->set_result( maybeMutate( tupleExpr->get_result(), *this ) );
-	tupleExpr->set_tuple( maybeMutate( tupleExpr->get_tuple(), *this ) );
-	return tupleExpr;
-}
-
-Expression * Mutator::mutate( TupleAssignExpr *assignExpr ) {
-	assignExpr->set_env( maybeMutate( assignExpr->get_env(), *this ) );
-	assignExpr->set_result( maybeMutate( assignExpr->get_result(), *this ) );
-	assignExpr->set_stmtExpr( maybeMutate( assignExpr->get_stmtExpr(), *this ) );
-	return assignExpr;
-}
-
-Expression * Mutator::mutate( StmtExpr *stmtExpr ) {
-	stmtExpr->set_env( maybeMutate( stmtExpr->get_env(), *this ) );
-	stmtExpr->set_result( maybeMutate( stmtExpr->get_result(), *this ) );
-	stmtExpr->set_statements( maybeMutate( stmtExpr->get_statements(), *this ) );
-	mutateAll( stmtExpr->get_returnDecls(), *this );
-	mutateAll( stmtExpr->get_dtors(), *this );
-	return stmtExpr;
-}
-
-Expression * Mutator::mutate( UniqueExpr *uniqueExpr ) {
-	uniqueExpr->set_env( maybeMutate( uniqueExpr->get_env(), *this ) );
-	uniqueExpr->set_result( maybeMutate( uniqueExpr->get_result(), *this ) );
-	uniqueExpr->set_expr( maybeMutate( uniqueExpr->get_expr(), *this ) );
-	return uniqueExpr;
-}
-
-Expression * Mutator::mutate( UntypedInitExpr * initExpr ) {
-	initExpr->set_env( maybeMutate( initExpr->get_env(), *this ) );
-	initExpr->set_result( maybeMutate( initExpr->get_result(), *this ) );
-	initExpr->set_expr( maybeMutate( initExpr->get_expr(), *this ) );
-	// not currently mutating initAlts, but this doesn't matter since this node is only used in the resolver.
-	return initExpr;
-}
-
-Expression * Mutator::mutate( InitExpr * initExpr ) {
-	initExpr->set_env( maybeMutate( initExpr->get_env(), *this ) );
-	initExpr->set_result( maybeMutate( initExpr->get_result(), *this ) );
-	initExpr->set_expr( maybeMutate( initExpr->get_expr(), *this ) );
-	initExpr->set_designation( maybeMutate( initExpr->get_designation(), *this ) );
-	return initExpr;
-}
-
-
-Type * Mutator::mutate( VoidType *voidType ) {
-	mutateAll( voidType->get_forall(), *this );
-	return voidType;
-}
-
-Type * Mutator::mutate( BasicType *basicType ) {
-	mutateAll( basicType->get_forall(), *this );
-	return basicType;
-}
-
-Type * Mutator::mutate( PointerType *pointerType ) {
-	mutateAll( pointerType->get_forall(), *this );
-	pointerType->set_base( maybeMutate( pointerType->get_base(), *this ) );
-	return pointerType;
-}
-
-Type * Mutator::mutate( ArrayType *arrayType ) {
-	mutateAll( arrayType->get_forall(), *this );
-	arrayType->set_dimension( maybeMutate( arrayType->get_dimension(), *this ) );
-	arrayType->set_base( maybeMutate( arrayType->get_base(), *this ) );
-	return arrayType;
-}
-
-Type * Mutator::mutate( ReferenceType * refType ) {
-	mutateAll( refType->get_forall(), *this );
-	refType->set_base( maybeMutate( refType->get_base(), *this ) );
-	return refType;
-}
-
-Type * Mutator::mutate( FunctionType * functionType ) {
-	mutateAll( functionType->get_forall(), *this );
-	mutateAll( functionType->get_returnVals(), *this );
-	mutateAll( functionType->get_parameters(), *this );
-	return functionType;
-}
-
-Type * Mutator::handleReferenceToType( ReferenceToType *aggregateUseType ) {
-	mutateAll( aggregateUseType->get_forall(), *this );
-	mutateAll( aggregateUseType->get_parameters(), *this );
-	return aggregateUseType;
-}
-
-Type * Mutator::mutate( StructInstType *aggregateUseType ) {
-	handleReferenceToType( aggregateUseType );
-	return aggregateUseType;
-}
-
-Type * Mutator::mutate( UnionInstType *aggregateUseType ) {
-	handleReferenceToType( aggregateUseType );
-	return aggregateUseType;
-}
-
-Type * Mutator::mutate( EnumInstType *aggregateUseType ) {
-	handleReferenceToType( aggregateUseType );
-	return aggregateUseType;
-}
-
-Type * Mutator::mutate( TraitInstType *aggregateUseType ) {
-	handleReferenceToType( aggregateUseType );
-	return aggregateUseType;
-}
-
-Type * Mutator::mutate( TypeInstType *aggregateUseType ) {
-	handleReferenceToType( aggregateUseType );
-	return aggregateUseType;
-}
 
 Type * Mutator::mutate( TupleType *tupleType ) {
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SynTree/Mutator.h	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -25,104 +25,100 @@
 	virtual ~Mutator();
   public:
-	virtual DeclarationWithType * mutate( ObjectDecl * objectDecl );
-	virtual DeclarationWithType * mutate( FunctionDecl * functionDecl );
-	virtual Declaration * mutate( StructDecl * aggregateDecl );
-	virtual Declaration * mutate( UnionDecl * aggregateDecl );
-	virtual Declaration * mutate( EnumDecl * aggregateDecl );
-	virtual Declaration * mutate( TraitDecl * aggregateDecl );
-	virtual Declaration * mutate( TypeDecl * typeDecl );
-	virtual Declaration * mutate( TypedefDecl * typeDecl );
-	virtual AsmDecl * mutate( AsmDecl * asmDecl );
+	virtual DeclarationWithType * mutate( ObjectDecl * objectDecl ) = 0;
+	virtual DeclarationWithType * mutate( FunctionDecl * functionDecl ) = 0;
+	virtual Declaration * mutate( StructDecl * aggregateDecl ) = 0;
+	virtual Declaration * mutate( UnionDecl * aggregateDecl ) = 0;
+	virtual Declaration * mutate( EnumDecl * aggregateDecl ) = 0;
+	virtual Declaration * mutate( TraitDecl * aggregateDecl ) = 0;
+	virtual Declaration * mutate( TypeDecl * typeDecl ) = 0;
+	virtual Declaration * mutate( TypedefDecl * typeDecl ) = 0;
+	virtual AsmDecl * mutate( AsmDecl * asmDecl ) = 0;
 
-	virtual CompoundStmt * mutate( CompoundStmt * compoundStmt );
-	virtual Statement * mutate( ExprStmt * exprStmt );
-	virtual Statement * mutate( AsmStmt * asmStmt );
-	virtual Statement * mutate( IfStmt * ifStmt );
-	virtual Statement * mutate( WhileStmt * whileStmt );
-	virtual Statement * mutate( ForStmt * forStmt );
-	virtual Statement * mutate( SwitchStmt * switchStmt );
-	virtual Statement * mutate( CaseStmt * caseStmt );
-	virtual Statement * mutate( BranchStmt * branchStmt );
-	virtual Statement * mutate( ReturnStmt * returnStmt );
-	virtual Statement * mutate( ThrowStmt * throwStmt );
-	virtual Statement * mutate( TryStmt * tryStmt );
-	virtual Statement * mutate( CatchStmt * catchStmt );
-	virtual Statement * mutate( FinallyStmt * catchStmt );
-	virtual Statement * mutate( WaitForStmt * waitforStmt );
-	virtual Statement * mutate( WithStmt * withStmt );
-	virtual NullStmt * mutate( NullStmt * nullStmt );
-	virtual Statement * mutate( DeclStmt * declStmt );
-	virtual Statement * mutate( ImplicitCtorDtorStmt * impCtorDtorStmt );
+	virtual CompoundStmt * mutate( CompoundStmt * compoundStmt ) = 0;
+	virtual Statement * mutate( ExprStmt * exprStmt ) = 0;
+	virtual Statement * mutate( AsmStmt * asmStmt ) = 0;
+	virtual Statement * mutate( IfStmt * ifStmt ) = 0;
+	virtual Statement * mutate( WhileStmt * whileStmt ) = 0;
+	virtual Statement * mutate( ForStmt * forStmt ) = 0;
+	virtual Statement * mutate( SwitchStmt * switchStmt ) = 0;
+	virtual Statement * mutate( CaseStmt * caseStmt ) = 0;
+	virtual Statement * mutate( BranchStmt * branchStmt ) = 0;
+	virtual Statement * mutate( ReturnStmt * returnStmt ) = 0;
+	virtual Statement * mutate( ThrowStmt * throwStmt ) = 0;
+	virtual Statement * mutate( TryStmt * tryStmt ) = 0;
+	virtual Statement * mutate( CatchStmt * catchStmt ) = 0;
+	virtual Statement * mutate( FinallyStmt * catchStmt ) = 0;
+	virtual Statement * mutate( WaitForStmt * waitforStmt ) = 0;
+	virtual Statement * mutate( WithStmt * withStmt ) = 0;
+	virtual NullStmt * mutate( NullStmt * nullStmt ) = 0;
+	virtual Statement * mutate( DeclStmt * declStmt ) = 0;
+	virtual Statement * mutate( ImplicitCtorDtorStmt * impCtorDtorStmt ) = 0;
 
-	virtual Expression * mutate( ApplicationExpr * applicationExpr );
-	virtual Expression * mutate( UntypedExpr * untypedExpr );
-	virtual Expression * mutate( NameExpr * nameExpr );
-	virtual Expression * mutate( AddressExpr * castExpr );
-	virtual Expression * mutate( LabelAddressExpr * labAddressExpr );
-	virtual Expression * mutate( CastExpr * castExpr );
-	virtual Expression * mutate( VirtualCastExpr * castExpr );
-	virtual Expression * mutate( UntypedMemberExpr * memberExpr );
-	virtual Expression * mutate( MemberExpr * memberExpr );
-	virtual Expression * mutate( VariableExpr * variableExpr );
-	virtual Expression * mutate( ConstantExpr * constantExpr );
-	virtual Expression * mutate( SizeofExpr * sizeofExpr );
-	virtual Expression * mutate( AlignofExpr * alignofExpr );
-	virtual Expression * mutate( UntypedOffsetofExpr * offsetofExpr );
-	virtual Expression * mutate( OffsetofExpr * offsetofExpr );
-	virtual Expression * mutate( OffsetPackExpr * offsetPackExpr );
-	virtual Expression * mutate( AttrExpr * attrExpr );
-	virtual Expression * mutate( LogicalExpr * logicalExpr );
-	virtual Expression * mutate( ConditionalExpr * conditionalExpr );
-	virtual Expression * mutate( CommaExpr * commaExpr );
-	virtual Expression * mutate( TypeExpr * typeExpr );
-	virtual Expression * mutate( AsmExpr * asmExpr );
-	virtual Expression * mutate( ImplicitCopyCtorExpr * impCpCtorExpr );
-	virtual Expression * mutate( ConstructorExpr * ctorExpr );
-	virtual Expression * mutate( CompoundLiteralExpr * compLitExpr );
-	virtual Expression * mutate( RangeExpr * rangeExpr );
-	virtual Expression * mutate( UntypedTupleExpr * tupleExpr );
-	virtual Expression * mutate( TupleExpr * tupleExpr );
-	virtual Expression * mutate( TupleIndexExpr * tupleExpr );
-	virtual Expression * mutate( TupleAssignExpr * assignExpr );
-	virtual Expression * mutate( StmtExpr  * stmtExpr );
-	virtual Expression * mutate( UniqueExpr  * uniqueExpr );
-	virtual Expression * mutate( UntypedInitExpr  * initExpr );
-	virtual Expression * mutate( InitExpr  * initExpr );
+	virtual Expression * mutate( ApplicationExpr * applicationExpr ) = 0;
+	virtual Expression * mutate( UntypedExpr * untypedExpr ) = 0;
+	virtual Expression * mutate( NameExpr * nameExpr ) = 0;
+	virtual Expression * mutate( AddressExpr * castExpr ) = 0;
+	virtual Expression * mutate( LabelAddressExpr * labAddressExpr ) = 0;
+	virtual Expression * mutate( CastExpr * castExpr ) = 0;
+	virtual Expression * mutate( VirtualCastExpr * castExpr ) = 0;
+	virtual Expression * mutate( UntypedMemberExpr * memberExpr ) = 0;
+	virtual Expression * mutate( MemberExpr * memberExpr ) = 0;
+	virtual Expression * mutate( VariableExpr * variableExpr ) = 0;
+	virtual Expression * mutate( ConstantExpr * constantExpr ) = 0;
+	virtual Expression * mutate( SizeofExpr * sizeofExpr ) = 0;
+	virtual Expression * mutate( AlignofExpr * alignofExpr ) = 0;
+	virtual Expression * mutate( UntypedOffsetofExpr * offsetofExpr ) = 0;
+	virtual Expression * mutate( OffsetofExpr * offsetofExpr ) = 0;
+	virtual Expression * mutate( OffsetPackExpr * offsetPackExpr ) = 0;
+	virtual Expression * mutate( AttrExpr * attrExpr ) = 0;
+	virtual Expression * mutate( LogicalExpr * logicalExpr ) = 0;
+	virtual Expression * mutate( ConditionalExpr * conditionalExpr ) = 0;
+	virtual Expression * mutate( CommaExpr * commaExpr ) = 0;
+	virtual Expression * mutate( TypeExpr * typeExpr ) = 0;
+	virtual Expression * mutate( AsmExpr * asmExpr ) = 0;
+	virtual Expression * mutate( ImplicitCopyCtorExpr * impCpCtorExpr ) = 0;
+	virtual Expression * mutate( ConstructorExpr * ctorExpr ) = 0;
+	virtual Expression * mutate( CompoundLiteralExpr * compLitExpr ) = 0;
+	virtual Expression * mutate( RangeExpr * rangeExpr ) = 0;
+	virtual Expression * mutate( UntypedTupleExpr * tupleExpr ) = 0;
+	virtual Expression * mutate( TupleExpr * tupleExpr ) = 0;
+	virtual Expression * mutate( TupleIndexExpr * tupleExpr ) = 0;
+	virtual Expression * mutate( TupleAssignExpr * assignExpr ) = 0;
+	virtual Expression * mutate( StmtExpr  * stmtExpr ) = 0;
+	virtual Expression * mutate( UniqueExpr  * uniqueExpr ) = 0;
+	virtual Expression * mutate( UntypedInitExpr  * initExpr ) = 0;
+	virtual Expression * mutate( InitExpr  * initExpr ) = 0;
 	virtual Expression * mutate( DeletedExpr * delExpr ) = 0;
 
-	virtual Type * mutate( VoidType * basicType );
-	virtual Type * mutate( BasicType * basicType );
-	virtual Type * mutate( PointerType * pointerType );
-	virtual Type * mutate( ArrayType * arrayType );
-	virtual Type * mutate( ReferenceType * refType );
-	virtual Type * mutate( FunctionType * functionType );
-	virtual Type * mutate( StructInstType * aggregateUseType );
-	virtual Type * mutate( UnionInstType * aggregateUseType );
-	virtual Type * mutate( EnumInstType * aggregateUseType );
-	virtual Type * mutate( TraitInstType * aggregateUseType );
-	virtual Type * mutate( TypeInstType * aggregateUseType );
-	virtual Type * mutate( TupleType * tupleType );
-	virtual Type * mutate( TypeofType * typeofType );
-	virtual Type * mutate( AttrType * attrType );
-	virtual Type * mutate( VarArgsType * varArgsType );
-	virtual Type * mutate( ZeroType * zeroType );
-	virtual Type * mutate( OneType * oneType );
+	virtual Type * mutate( VoidType * basicType ) = 0;
+	virtual Type * mutate( BasicType * basicType ) = 0;
+	virtual Type * mutate( PointerType * pointerType ) = 0;
+	virtual Type * mutate( ArrayType * arrayType ) = 0;
+	virtual Type * mutate( ReferenceType * refType ) = 0;
+	virtual Type * mutate( FunctionType * functionType ) = 0;
+	virtual Type * mutate( StructInstType * aggregateUseType ) = 0;
+	virtual Type * mutate( UnionInstType * aggregateUseType ) = 0;
+	virtual Type * mutate( EnumInstType * aggregateUseType ) = 0;
+	virtual Type * mutate( TraitInstType * aggregateUseType ) = 0;
+	virtual Type * mutate( TypeInstType * aggregateUseType ) = 0;
+	virtual Type * mutate( TupleType * tupleType ) = 0;
+	virtual Type * mutate( TypeofType * typeofType ) = 0;
+	virtual Type * mutate( AttrType * attrType ) = 0;
+	virtual Type * mutate( VarArgsType * varArgsType ) = 0;
+	virtual Type * mutate( ZeroType * zeroType ) = 0;
+	virtual Type * mutate( OneType * oneType ) = 0;
 
-	virtual Designation * mutate( Designation * designation );
-	virtual Initializer * mutate( SingleInit * singleInit );
-	virtual Initializer * mutate( ListInit * listInit );
-	virtual Initializer * mutate( ConstructorInit * ctorInit );
+	virtual Designation * mutate( Designation * designation ) = 0 ;
+	virtual Initializer * mutate( SingleInit * singleInit ) = 0 ;
+	virtual Initializer * mutate( ListInit * listInit ) = 0 ;
+	virtual Initializer * mutate( ConstructorInit * ctorInit ) = 0 ;
 
-	virtual Subrange * mutate( Subrange * subrange );
+	virtual Subrange * mutate( Subrange * subrange ) = 0;
 
-	virtual Constant * mutate( Constant * constant );
+	virtual Constant * mutate( Constant * constant ) = 0;
 
-	virtual Attribute * mutate( Attribute * attribute );
+	virtual Attribute * mutate( Attribute * attribute ) = 0;
 
-	virtual TypeSubstitution * mutate( TypeSubstitution * sub );
-  private:
-	virtual Declaration * handleAggregateDecl(AggregateDecl * aggregateDecl );
-	virtual Declaration * handleNamedTypeDecl(NamedTypeDecl * typeDecl );
-	virtual Type * handleReferenceToType(ReferenceToType * aggregateUseType );
+	virtual TypeSubstitution * mutate( TypeSubstitution * sub ) = 0;
 };
 
Index: src/SynTree/Visitor.cc
===================================================================
--- src/SynTree/Visitor.cc	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SynTree/Visitor.cc	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -31,414 +31,4 @@
 
 Visitor::~Visitor() {}
-
-void Visitor::visit( ObjectDecl *objectDecl ) {
-	maybeAccept( objectDecl->get_type(), *this );
-	maybeAccept( objectDecl->get_init(), *this );
-	maybeAccept( objectDecl->get_bitfieldWidth(), *this );
-	acceptAll( objectDecl->attributes, *this );
-}
-
-void Visitor::visit( FunctionDecl *functionDecl ) {
-	maybeAccept( functionDecl->get_functionType(), *this );
-	maybeAccept( functionDecl->get_statements(), *this );
-	acceptAll( functionDecl->attributes, *this );
-}
-
-void Visitor::handleAggregateDecl( AggregateDecl *aggregateDecl ) {
-	acceptAll( aggregateDecl->get_parameters(), *this );
-	acceptAll( aggregateDecl->get_members(), *this );
-}
-
-void Visitor::visit( StructDecl *aggregateDecl ) {
-	handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
-}
-
-void Visitor::visit( UnionDecl *aggregateDecl ) {
-	handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
-}
-
-void Visitor::visit( EnumDecl *aggregateDecl ) {
-	handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
-}
-
-void Visitor::visit( TraitDecl *aggregateDecl ) {
-	handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
-}
-
-void Visitor::handleNamedTypeDecl( NamedTypeDecl *typeDecl ) {
-	acceptAll( typeDecl->get_parameters(), *this );
-	acceptAll( typeDecl->get_assertions(), *this );
-	maybeAccept( typeDecl->get_base(), *this );
-}
-
-void Visitor::visit( TypeDecl *typeDecl ) {
-	handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
-	maybeAccept( typeDecl->get_init(), *this );
-}
-
-void Visitor::visit( TypedefDecl *typeDecl ) {
-	handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
-}
-
-void Visitor::visit( AsmDecl *asmDecl ) {
-	maybeAccept( asmDecl->get_stmt(), *this );
-}
-
-
-void Visitor::visit( CompoundStmt *compoundStmt ) {
-	acceptAll( compoundStmt->get_kids(), *this );
-}
-
-void Visitor::visit( ExprStmt *exprStmt ) {
-	maybeAccept( exprStmt->get_expr(), *this );
-}
-
-void Visitor::visit( AsmStmt *asmStmt ) {
-	maybeAccept( asmStmt->get_instruction(), *this );
-	acceptAll( asmStmt->get_output(), *this );
-	acceptAll( asmStmt->get_input(), *this );
-	acceptAll( asmStmt->get_clobber(), *this );
-}
-
-void Visitor::visit( IfStmt *ifStmt ) {
-	acceptAll( ifStmt->get_initialization(), *this );
-	maybeAccept( ifStmt->get_condition(), *this );
-	maybeAccept( ifStmt->get_thenPart(), *this );
-	maybeAccept( ifStmt->get_elsePart(), *this );
-}
-
-void Visitor::visit( WhileStmt *whileStmt ) {
-	maybeAccept( whileStmt->get_condition(), *this );
-	maybeAccept( whileStmt->get_body(), *this );
-}
-
-void Visitor::visit( ForStmt *forStmt ) {
-	acceptAll( forStmt->get_initialization(), *this );
-	maybeAccept( forStmt->get_condition(), *this );
-	maybeAccept( forStmt->get_increment(), *this );
-	maybeAccept( forStmt->get_body(), *this );
-}
-
-void Visitor::visit( SwitchStmt *switchStmt ) {
-	maybeAccept( switchStmt->get_condition(), *this );
-	acceptAll( switchStmt->get_statements(), *this );
-}
-
-void Visitor::visit( CaseStmt *caseStmt ) {
-	maybeAccept( caseStmt->get_condition(), *this );
-	acceptAll( caseStmt->get_statements(), *this );
-}
-
-void Visitor::visit( __attribute__((unused)) BranchStmt *branchStmt ) {
-}
-
-void Visitor::visit( ReturnStmt *returnStmt ) {
-	maybeAccept( returnStmt->get_expr(), *this );
-}
-
-void Visitor::visit( ThrowStmt * throwStmt ) {
-	maybeAccept( throwStmt->get_expr(), *this );
-	maybeAccept( throwStmt->get_target(), *this );
-}
-
-void Visitor::visit( TryStmt *tryStmt ) {
-	maybeAccept( tryStmt->get_block(), *this );
-	acceptAll( tryStmt->get_catchers(), *this );
-	maybeAccept( tryStmt->get_finally(), *this );
-}
-
-void Visitor::visit( CatchStmt *catchStmt ) {
-	maybeAccept( catchStmt->get_decl(), *this );
-	maybeAccept( catchStmt->get_cond(), *this );
-	maybeAccept( catchStmt->get_body(), *this );
-}
-
-void Visitor::visit( FinallyStmt *finalStmt ) {
-	maybeAccept( finalStmt->get_block(), *this );
-}
-
-void Visitor::visit( WaitForStmt *waitforStmt ) {
-	for( auto & clause : waitforStmt->clauses ) {
-		maybeAccept( clause.target.function, *this );
-		acceptAll( clause.target.arguments, *this );
-
-		maybeAccept( clause.statement, *this );
-		maybeAccept( clause.condition, *this );
-	}
-
-	maybeAccept( waitforStmt->timeout.time, *this );
-	maybeAccept( waitforStmt->timeout.statement, *this );
-	maybeAccept( waitforStmt->timeout.condition, *this );
-	maybeAccept( waitforStmt->orelse.statement, *this );
-	maybeAccept( waitforStmt->orelse.condition, *this );
-}
-
-void Visitor::visit( WithStmt * withStmt ) {
-	acceptAll( withStmt->exprs, *this );
-	maybeAccept( withStmt->stmt, *this );
-}
-
-void Visitor::visit( NullStmt * ) {
-}
-
-void Visitor::visit( DeclStmt *declStmt ) {
-	maybeAccept( declStmt->get_decl(), *this );
-}
-
-void Visitor::visit( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
-	maybeAccept( impCtorDtorStmt->get_callStmt(), *this );
-}
-
-
-void Visitor::visit( ApplicationExpr *applicationExpr ) {
-	maybeAccept( applicationExpr->get_result(), *this );
-	maybeAccept( applicationExpr->get_function(), *this );
-	acceptAll( applicationExpr->get_args(), *this );
-}
-
-void Visitor::visit( UntypedExpr *untypedExpr ) {
-	maybeAccept( untypedExpr->get_result(), *this );
-	acceptAll( untypedExpr->get_args(), *this );
-}
-
-void Visitor::visit( NameExpr *nameExpr ) {
-	maybeAccept( nameExpr->get_result(), *this );
-}
-
-void Visitor::visit( AddressExpr *addressExpr ) {
-	maybeAccept( addressExpr->get_result(), *this );
-	maybeAccept( addressExpr->get_arg(), *this );
-}
-
-void Visitor::visit( LabelAddressExpr *labAddressExpr ) {
-	maybeAccept( labAddressExpr->get_result(), *this );
-}
-
-void Visitor::visit( CastExpr *castExpr ) {
-	maybeAccept( castExpr->get_result(), *this );
-	maybeAccept( castExpr->get_arg(), *this );
-}
-
-void Visitor::visit( VirtualCastExpr *castExpr ) {
-	maybeAccept( castExpr->get_result(), *this );
-	maybeAccept( castExpr->get_arg(), *this );
-}
-
-void Visitor::visit( UntypedMemberExpr *memberExpr ) {
-	maybeAccept( memberExpr->get_result(), *this );
-	maybeAccept( memberExpr->get_aggregate(), *this );
-	maybeAccept( memberExpr->get_member(), *this );
-}
-
-void Visitor::visit( MemberExpr *memberExpr ) {
-	maybeAccept( memberExpr->get_result(), *this );
-	maybeAccept( memberExpr->get_aggregate(), *this );
-}
-
-void Visitor::visit( VariableExpr *variableExpr ) {
-	maybeAccept( variableExpr->get_result(), *this );
-}
-
-void Visitor::visit( ConstantExpr *constantExpr ) {
-	maybeAccept( constantExpr->get_result(), *this );
-	maybeAccept( constantExpr->get_constant(), *this );
-}
-
-void Visitor::visit( SizeofExpr *sizeofExpr ) {
-	maybeAccept( sizeofExpr->get_result(), *this );
-	if ( sizeofExpr->get_isType() ) {
-		maybeAccept( sizeofExpr->get_type(), *this );
-	} else {
-		maybeAccept( sizeofExpr->get_expr(), *this );
-	}
-}
-
-void Visitor::visit( AlignofExpr *alignofExpr ) {
-	maybeAccept( alignofExpr->get_result(), *this );
-	if ( alignofExpr->get_isType() ) {
-		maybeAccept( alignofExpr->get_type(), *this );
-	} else {
-		maybeAccept( alignofExpr->get_expr(), *this );
-	}
-}
-
-void Visitor::visit( UntypedOffsetofExpr *offsetofExpr ) {
-	maybeAccept( offsetofExpr->get_result(), *this );
-	maybeAccept( offsetofExpr->get_type(), *this );
-}
-
-void Visitor::visit( OffsetofExpr *offsetofExpr ) {
-	maybeAccept( offsetofExpr->get_result(), *this );
-	maybeAccept( offsetofExpr->get_type(), *this );
-	maybeAccept( offsetofExpr->get_member(), *this );
-}
-
-void Visitor::visit( OffsetPackExpr *offsetPackExpr ) {
-	maybeAccept( offsetPackExpr->get_result(), *this );
-	maybeAccept( offsetPackExpr->get_type(), *this );
-}
-
-void Visitor::visit( AttrExpr *attrExpr ) {
-	maybeAccept( attrExpr->get_result(), *this );
-	if ( attrExpr->get_isType() ) {
-		maybeAccept( attrExpr->get_type(), *this );
-	} else {
-		maybeAccept( attrExpr->get_expr(), *this );
-	}
-}
-
-void Visitor::visit( LogicalExpr *logicalExpr ) {
-	maybeAccept( logicalExpr->get_result(), *this );
-	maybeAccept( logicalExpr->get_arg1(), *this );
-	maybeAccept( logicalExpr->get_arg2(), *this );
-}
-
-void Visitor::visit( ConditionalExpr *conditionalExpr ) {
-	maybeAccept( conditionalExpr->get_result(), *this );
-	maybeAccept( conditionalExpr->get_arg1(), *this );
-	maybeAccept( conditionalExpr->get_arg2(), *this );
-	maybeAccept( conditionalExpr->get_arg3(), *this );
-}
-
-void Visitor::visit( CommaExpr *commaExpr ) {
-	maybeAccept( commaExpr->get_result(), *this );
-	maybeAccept( commaExpr->get_arg1(), *this );
-	maybeAccept( commaExpr->get_arg2(), *this );
-}
-
-void Visitor::visit( TypeExpr *typeExpr ) {
-	maybeAccept( typeExpr->get_result(), *this );
-	maybeAccept( typeExpr->get_type(), *this );
-}
-
-void Visitor::visit( AsmExpr *asmExpr ) {
-	maybeAccept( asmExpr->get_inout(), *this );
-	maybeAccept( asmExpr->get_constraint(), *this );
-	maybeAccept( asmExpr->get_operand(), *this );
-}
-
-void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
-	maybeAccept( impCpCtorExpr->get_result(), *this );
-	maybeAccept( impCpCtorExpr->get_callExpr(), *this );
-	acceptAll( impCpCtorExpr->get_tempDecls(), *this );
-	acceptAll( impCpCtorExpr->get_returnDecls(), *this );
-	acceptAll( impCpCtorExpr->get_dtors(), *this );
-}
-
-void Visitor::visit( ConstructorExpr * ctorExpr ) {
-	maybeAccept( ctorExpr->get_result(), *this );
-	maybeAccept( ctorExpr->get_callExpr(), *this );
-}
-
-void Visitor::visit( CompoundLiteralExpr *compLitExpr ) {
-	maybeAccept( compLitExpr->get_result(), *this );
-	maybeAccept( compLitExpr->get_initializer(), *this );
-}
-
-void Visitor::visit( RangeExpr *rangeExpr ) {
-	maybeAccept( rangeExpr->get_low(), *this );
-	maybeAccept( rangeExpr->get_high(), *this );
-}
-
-void Visitor::visit( UntypedTupleExpr *tupleExpr ) {
-	maybeAccept( tupleExpr->get_result(), *this );
-	acceptAll( tupleExpr->get_exprs(), *this );
-}
-
-void Visitor::visit( TupleExpr *tupleExpr ) {
-	maybeAccept( tupleExpr->get_result(), *this );
-	acceptAll( tupleExpr->get_exprs(), *this );
-}
-
-void Visitor::visit( TupleIndexExpr *tupleExpr ) {
-	maybeAccept( tupleExpr->get_result(), *this );
-	maybeAccept( tupleExpr->get_tuple(), *this );
-}
-
-void Visitor::visit( TupleAssignExpr *assignExpr ) {
-	maybeAccept( assignExpr->get_result(), *this );
-	maybeAccept( assignExpr->get_stmtExpr(), *this );
-}
-
-void Visitor::visit( StmtExpr *stmtExpr ) {
-	maybeAccept( stmtExpr->get_result(), *this );
-	maybeAccept( stmtExpr->get_statements(), *this );
-	acceptAll( stmtExpr->get_returnDecls(), *this );
-	acceptAll( stmtExpr->get_dtors(), *this );
-}
-
-void Visitor::visit( UniqueExpr *uniqueExpr ) {
-	maybeAccept( uniqueExpr->get_result(), *this );
-	maybeAccept( uniqueExpr->get_expr(), *this );
-}
-
-void Visitor::visit( UntypedInitExpr * initExpr ) {
-	maybeAccept( initExpr->get_result(), *this );
-	maybeAccept( initExpr->get_expr(), *this );
-	// not currently visiting initAlts, but this doesn't matter since this node is only used in the resolver.
-}
-
-void Visitor::visit( InitExpr * initExpr ) {
-	maybeAccept( initExpr->get_result(), *this );
-	maybeAccept( initExpr->get_expr(), *this );
-	maybeAccept( initExpr->get_designation(), *this );
-}
-
-
-void Visitor::visit( VoidType *voidType ) {
-	acceptAll( voidType->get_forall(), *this );
-}
-
-void Visitor::visit( BasicType *basicType ) {
-	acceptAll( basicType->get_forall(), *this );
-}
-
-void Visitor::visit( PointerType *pointerType ) {
-	acceptAll( pointerType->get_forall(), *this );
-	// xxx - should PointerType visit/mutate dimension?
-	maybeAccept( pointerType->get_base(), *this );
-}
-
-void Visitor::visit( ArrayType *arrayType ) {
-	acceptAll( arrayType->get_forall(), *this );
-	maybeAccept( arrayType->get_dimension(), *this );
-	maybeAccept( arrayType->get_base(), *this );
-}
-
-void Visitor::visit( ReferenceType *refType ) {
-	acceptAll( refType->get_forall(), *this );
-	maybeAccept( refType->get_base(), *this );
-}
-
-void Visitor::visit( FunctionType *functionType ) {
-	acceptAll( functionType->get_forall(), *this );
-	acceptAll( functionType->get_returnVals(), *this );
-	acceptAll( functionType->get_parameters(), *this );
-}
-
-void Visitor::handleReferenceToType( ReferenceToType *aggregateUseType ) {
-	acceptAll( aggregateUseType->get_forall(), *this );
-	acceptAll( aggregateUseType->get_parameters(), *this );
-}
-
-void Visitor::visit( StructInstType *aggregateUseType ) {
-	handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
-}
-
-void Visitor::visit( UnionInstType *aggregateUseType ) {
-	handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
-}
-
-void Visitor::visit( EnumInstType *aggregateUseType ) {
-	handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
-}
-
-void Visitor::visit( TraitInstType *aggregateUseType ) {
-	handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
-}
-
-void Visitor::visit( TypeInstType *aggregateUseType ) {
-	handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
-}
 
 void Visitor::visit( TupleType *tupleType ) {
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/SynTree/Visitor.h	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -27,102 +27,98 @@
 	// of the given syntax node, but performs no other action.
 
-	virtual void visit( ObjectDecl * objectDecl );
-	virtual void visit( FunctionDecl * functionDecl );
-	virtual void visit( StructDecl * aggregateDecl );
-	virtual void visit( UnionDecl * aggregateDecl );
-	virtual void visit( EnumDecl * aggregateDecl );
-	virtual void visit( TraitDecl * aggregateDecl );
-	virtual void visit( TypeDecl * typeDecl );
-	virtual void visit( TypedefDecl * typeDecl );
-	virtual void visit( AsmDecl * asmDecl );
+	virtual void visit( ObjectDecl * objectDecl ) = 0;
+	virtual void visit( FunctionDecl * functionDecl ) = 0;
+	virtual void visit( StructDecl * aggregateDecl ) = 0;
+	virtual void visit( UnionDecl * aggregateDecl ) = 0;
+	virtual void visit( EnumDecl * aggregateDecl ) = 0;
+	virtual void visit( TraitDecl * aggregateDecl ) = 0;
+	virtual void visit( TypeDecl * typeDecl ) = 0;
+	virtual void visit( TypedefDecl * typeDecl ) = 0;
+	virtual void visit( AsmDecl * asmDecl ) = 0;
 
-	virtual void visit( CompoundStmt * compoundStmt );
-	virtual void visit( ExprStmt * exprStmt );
-	virtual void visit( AsmStmt * asmStmt );
-	virtual void visit( IfStmt * ifStmt );
-	virtual void visit( WhileStmt * whileStmt );
-	virtual void visit( ForStmt * forStmt );
-	virtual void visit( SwitchStmt * switchStmt );
-	virtual void visit( CaseStmt * caseStmt );
-	virtual void visit( BranchStmt * branchStmt );
-	virtual void visit( ReturnStmt * returnStmt );
-	virtual void visit( ThrowStmt * throwStmt );
-	virtual void visit( TryStmt * tryStmt );
-	virtual void visit( CatchStmt * catchStmt );
-	virtual void visit( FinallyStmt * finallyStmt );
-	virtual void visit( WaitForStmt * waitforStmt );
-	virtual void visit( WithStmt * withStmt );
-	virtual void visit( NullStmt * nullStmt );
-	virtual void visit( DeclStmt * declStmt );
-	virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt );
+	virtual void visit( CompoundStmt * compoundStmt ) = 0;
+	virtual void visit( ExprStmt * exprStmt ) = 0;
+	virtual void visit( AsmStmt * asmStmt ) = 0;
+	virtual void visit( IfStmt * ifStmt ) = 0;
+	virtual void visit( WhileStmt * whileStmt ) = 0;
+	virtual void visit( ForStmt * forStmt ) = 0;
+	virtual void visit( SwitchStmt * switchStmt ) = 0;
+	virtual void visit( CaseStmt * caseStmt ) = 0;
+	virtual void visit( BranchStmt * branchStmt ) = 0;
+	virtual void visit( ReturnStmt * returnStmt ) = 0;
+	virtual void visit( ThrowStmt * throwStmt ) = 0;
+	virtual void visit( TryStmt * tryStmt ) = 0;
+	virtual void visit( CatchStmt * catchStmt ) = 0;
+	virtual void visit( FinallyStmt * finallyStmt ) = 0;
+	virtual void visit( WaitForStmt * waitforStmt ) = 0;
+	virtual void visit( WithStmt * withStmt ) = 0;
+	virtual void visit( NullStmt * nullStmt ) = 0;
+	virtual void visit( DeclStmt * declStmt ) = 0;
+	virtual void visit( ImplicitCtorDtorStmt * impCtorDtorStmt ) = 0;
 
-	virtual void visit( ApplicationExpr * applicationExpr );
-	virtual void visit( UntypedExpr * untypedExpr );
-	virtual void visit( NameExpr * nameExpr );
-	virtual void visit( CastExpr * castExpr );
-	virtual void visit( VirtualCastExpr * castExpr );
-	virtual void visit( AddressExpr * addressExpr );
-	virtual void visit( LabelAddressExpr * labAddressExpr );
-	virtual void visit( UntypedMemberExpr * memberExpr );
-	virtual void visit( MemberExpr * memberExpr );
-	virtual void visit( VariableExpr * variableExpr );
-	virtual void visit( ConstantExpr * constantExpr );
-	virtual void visit( SizeofExpr * sizeofExpr );
-	virtual void visit( AlignofExpr * alignofExpr );
-	virtual void visit( UntypedOffsetofExpr * offsetofExpr );
-	virtual void visit( OffsetofExpr * offsetofExpr );
-	virtual void visit( OffsetPackExpr * offsetPackExpr );
-	virtual void visit( AttrExpr * attrExpr );
-	virtual void visit( LogicalExpr * logicalExpr );
-	virtual void visit( ConditionalExpr * conditionalExpr );
-	virtual void visit( CommaExpr * commaExpr );
-	virtual void visit( TypeExpr * typeExpr );
-	virtual void visit( AsmExpr * asmExpr );
-	virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
-	virtual void visit( ConstructorExpr *  ctorExpr );
-	virtual void visit( CompoundLiteralExpr * compLitExpr );
-	virtual void visit( RangeExpr * rangeExpr );
-	virtual void visit( UntypedTupleExpr * tupleExpr );
-	virtual void visit( TupleExpr * tupleExpr );
-	virtual void visit( TupleIndexExpr * tupleExpr );
-	virtual void visit( TupleAssignExpr * assignExpr );
-	virtual void visit( StmtExpr *  stmtExpr );
-	virtual void visit( UniqueExpr *  uniqueExpr );
-	virtual void visit( UntypedInitExpr *  initExpr );
-	virtual void visit( InitExpr *  initExpr );
+	virtual void visit( ApplicationExpr * applicationExpr ) = 0;
+	virtual void visit( UntypedExpr * untypedExpr ) = 0;
+	virtual void visit( NameExpr * nameExpr ) = 0;
+	virtual void visit( CastExpr * castExpr ) = 0;
+	virtual void visit( VirtualCastExpr * castExpr ) = 0;
+	virtual void visit( AddressExpr * addressExpr ) = 0;
+	virtual void visit( LabelAddressExpr * labAddressExpr ) = 0;
+	virtual void visit( UntypedMemberExpr * memberExpr ) = 0;
+	virtual void visit( MemberExpr * memberExpr ) = 0;
+	virtual void visit( VariableExpr * variableExpr ) = 0;
+	virtual void visit( ConstantExpr * constantExpr ) = 0;
+	virtual void visit( SizeofExpr * sizeofExpr ) = 0;
+	virtual void visit( AlignofExpr * alignofExpr ) = 0;
+	virtual void visit( UntypedOffsetofExpr * offsetofExpr ) = 0;
+	virtual void visit( OffsetofExpr * offsetofExpr ) = 0;
+	virtual void visit( OffsetPackExpr * offsetPackExpr ) = 0;
+	virtual void visit( AttrExpr * attrExpr ) = 0;
+	virtual void visit( LogicalExpr * logicalExpr ) = 0;
+	virtual void visit( ConditionalExpr * conditionalExpr ) = 0;
+	virtual void visit( CommaExpr * commaExpr ) = 0;
+	virtual void visit( TypeExpr * typeExpr ) = 0;
+	virtual void visit( AsmExpr * asmExpr ) = 0;
+	virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr ) = 0;
+	virtual void visit( ConstructorExpr *  ctorExpr ) = 0;
+	virtual void visit( CompoundLiteralExpr * compLitExpr ) = 0;
+	virtual void visit( RangeExpr * rangeExpr ) = 0;
+	virtual void visit( UntypedTupleExpr * tupleExpr ) = 0;
+	virtual void visit( TupleExpr * tupleExpr ) = 0;
+	virtual void visit( TupleIndexExpr * tupleExpr ) = 0;
+	virtual void visit( TupleAssignExpr * assignExpr ) = 0;
+	virtual void visit( StmtExpr *  stmtExpr ) = 0;
+	virtual void visit( UniqueExpr *  uniqueExpr ) = 0;
+	virtual void visit( UntypedInitExpr *  initExpr ) = 0;
+	virtual void visit( InitExpr *  initExpr ) = 0;
 	virtual void visit( DeletedExpr * delExpr ) = 0;
 
-	virtual void visit( VoidType * basicType );
-	virtual void visit( BasicType * basicType );
-	virtual void visit( PointerType * pointerType );
-	virtual void visit( ArrayType * arrayType );
-	virtual void visit( ReferenceType * refType );
-	virtual void visit( FunctionType * functionType );
-	virtual void visit( StructInstType * aggregateUseType );
-	virtual void visit( UnionInstType * aggregateUseType );
-	virtual void visit( EnumInstType * aggregateUseType );
-	virtual void visit( TraitInstType * aggregateUseType );
-	virtual void visit( TypeInstType * aggregateUseType );
-	virtual void visit( TupleType * tupleType );
-	virtual void visit( TypeofType * typeofType );
-	virtual void visit( AttrType * attrType );
-	virtual void visit( VarArgsType * varArgsType );
-	virtual void visit( ZeroType * zeroType );
-	virtual void visit( OneType * oneType );
+	virtual void visit( VoidType * basicType ) = 0;
+	virtual void visit( BasicType * basicType ) = 0;
+	virtual void visit( PointerType * pointerType ) = 0;
+	virtual void visit( ArrayType * arrayType ) = 0;
+	virtual void visit( ReferenceType * refType ) = 0;
+	virtual void visit( FunctionType * functionType ) = 0;
+	virtual void visit( StructInstType * aggregateUseType ) = 0;
+	virtual void visit( UnionInstType * aggregateUseType ) = 0;
+	virtual void visit( EnumInstType * aggregateUseType ) = 0;
+	virtual void visit( TraitInstType * aggregateUseType ) = 0;
+	virtual void visit( TypeInstType * aggregateUseType ) = 0;
+	virtual void visit( TupleType * tupleType ) = 0;
+	virtual void visit( TypeofType * typeofType ) = 0;
+	virtual void visit( AttrType * attrType ) = 0;
+	virtual void visit( VarArgsType * varArgsType ) = 0;
+	virtual void visit( ZeroType * zeroType ) = 0;
+	virtual void visit( OneType * oneType ) = 0;
 
-	virtual void visit( Designation * designation );
-	virtual void visit( SingleInit * singleInit );
-	virtual void visit( ListInit * listInit );
-	virtual void visit( ConstructorInit * ctorInit );
+	virtual void visit( Designation * designation ) = 0;
+	virtual void visit( SingleInit * singleInit ) = 0;
+	virtual void visit( ListInit * listInit ) = 0;
+	virtual void visit( ConstructorInit * ctorInit ) = 0;
 
-	virtual void visit( Subrange * subrange );
+	virtual void visit( Subrange * subrange ) = 0;
 
-	virtual void visit( Constant * constant );
+	virtual void visit( Constant * constant ) = 0;
 
-	virtual void visit( Attribute * attribute );
-  private:
-	virtual void handleAggregateDecl( AggregateDecl *aggregateDecl );
-	virtual void handleNamedTypeDecl( NamedTypeDecl *typeDecl );
-	virtual void handleReferenceToType( ReferenceToType *aggregateUseType );
+	virtual void visit( Attribute * attribute ) = 0;
 };
 
Index: src/prelude/builtins.c
===================================================================
--- src/prelude/builtins.c	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/prelude/builtins.c	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -58,41 +58,39 @@
 static inline long int ?\?( long int ep, unsigned long int y ) { // disallow negative exponent
 	if ( y == 0 ) return 1;								// base case
-    if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
-    typeof( ep ) op = 1;								// accumulate odd product
-    for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
+	if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
+	typeof( ep ) op = 1;								// accumulate odd product
+	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
 		if ( (y & 1) == 1 ) op *= ep;					// odd ?
 		ep *= ep;
 	} // for
-    return ep * op;
+	return ep * op;
 } // ?\?
 
-// FIX ME, cannot resolve the "T op = 1".
-
-// static inline forall( otype T | { void ?{}( T * this, one_t ); T ?*?( T, T ); } )
-// T ?\?( T ep, unsigned long int y ) {
-//     if ( y == 0 ) return 1;
-//     T op = 1;
-//     for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
-// 		if ( (y & 1) == 1 ) op = op * ep;				// odd ?
-// 		ep = ep * ep;
-//     } // for
-//     return ep * op;
-// } // ?\?
+static inline forall( otype T | { void ?{}( T & this, one_t ); T ?*?( T, T ); } )
+T ?\?( T ep, unsigned long int y ) {
+	if ( y == 0 ) return 1;
+	T op = 1;
+	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
+		if ( (y & 1) == 1 ) op = op * ep;				// odd ?
+		ep = ep * ep;
+	} // for
+	return ep * op;
+} // ?\?
 
 // unsigned computation may be faster and larger
 static inline unsigned long int ?\?( unsigned long int ep, unsigned long int y ) { // disallow negative exponent
 	if ( y == 0 ) return 1;								// base case
-    if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
-    typeof( ep ) op = 1;								// accumulate odd product
-    for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
+	if ( ep == 2 ) return ep << (y - 1);				// special case, positive shifting only
+	typeof( ep ) op = 1;								// accumulate odd product
+	for ( ; y > 1; y >>= 1 ) {							// squaring exponentiation, O(log2 y)
 		if ( (y & 1) == 1 ) op *= ep;					// odd ?
 		ep *= ep;
 	} // for
-    return ep * op;
+	return ep * op;
 } // ?\?
 
 static inline double ?\?( long int x, signed long int y ) {	// allow negative exponent
-    if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
-    else return 1.0 / x \ (unsigned int)(-y);
+	if ( y >=  0 ) return (double)(x \ (unsigned long int)y);
+	else return 1.0 / x \ (unsigned int)(-y);
 } // ?\?
 
Index: src/tests/.expect/KRfunctions.x64.txt
===================================================================
--- src/tests/.expect/KRfunctions.x64.txt	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/tests/.expect/KRfunctions.x64.txt	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -82,7 +82,7 @@
     signed int __a__i_2;
     signed int __b__i_2;
-    signed int *(*_tmp_cp_ret0)(signed int __x__i_1, signed int __y__i_1);
-    ((void)(__x__PFPi_ii__2=(((void)(_tmp_cp_ret0=__f10__FPFPi_ii__iPiPid__1(3, (&__a__i_2), (&__b__i_2), 3.5))) , _tmp_cp_ret0)));
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    signed int *(*_tmp_cp_ret2)(signed int __x__i_1, signed int __y__i_1);
+    ((void)(__x__PFPi_ii__2=(((void)(_tmp_cp_ret2=__f10__FPFPi_ii__iPiPid__1(3, (&__a__i_2), (&__b__i_2), 3.5))) , _tmp_cp_ret2)));
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
     const signed int __f1__FCi_iPiPi__2(signed int __a__i_2, signed int *__b__Pi_2, signed int *__c__Pi_2){
         __attribute__ ((unused)) const signed int ___retval_f1__Ci_2;
Index: src/tests/.expect/declarationSpecifier.x64.txt
===================================================================
--- src/tests/.expect/declarationSpecifier.x64.txt	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/tests/.expect/declarationSpecifier.x64.txt	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -698,7 +698,7 @@
 signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
     __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret0;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret0=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret0)) /* ?{} */);
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    signed int _tmp_cp_ret2;
+    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
     return ___retval_main__i_1;
 }
Index: src/tests/.expect/extension.x64.txt
===================================================================
--- src/tests/.expect/extension.x64.txt	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/tests/.expect/extension.x64.txt	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -186,7 +186,7 @@
     __extension__ signed int __c__i_2;
     ((void)(__extension__ __a__i_2=(__extension__ __b__i_2+__extension__ __c__i_2)));
-    signed int _tmp_cp_ret0;
-    ((void)(((void)(_tmp_cp_ret0=__extension__ __fred__Fi_i__1(3))) , _tmp_cp_ret0));
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    signed int _tmp_cp_ret2;
+    ((void)(((void)(_tmp_cp_ret2=__extension__ __fred__Fi_i__1(3))) , _tmp_cp_ret2));
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
     __extension__ signed int __mary__Fi_i__2(signed int __p__i_2){
         __attribute__ ((unused)) signed int ___retval_mary__i_2;
Index: src/tests/.expect/gccExtensions.x64.txt
===================================================================
--- src/tests/.expect/gccExtensions.x64.txt	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/tests/.expect/gccExtensions.x64.txt	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -171,7 +171,7 @@
 signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
     __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret0;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret0=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret0)) /* ?{} */);
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    signed int _tmp_cp_ret2;
+    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
     return ___retval_main__i_1;
 }
Index: src/tests/.expect/literals.x64.txt
===================================================================
--- src/tests/.expect/literals.x64.txt	(revision 807d8c37e38b6f2dd66762b634390eff7036e8c4)
+++ src/tests/.expect/literals.x64.txt	(revision 6a8df56b96e7e40ef5c0d1153e55003dad3b57f1)
@@ -467,56 +467,56 @@
 extern struct ifstream *__sin__R9sifstream_1;
 void __f__F_c__1(char __v__c_1){
-    struct ofstream *_tmp_cp_ret0;
-    struct ofstream *_tmp_cp_ret1;
     struct ofstream *_tmp_cp_ret2;
+    struct ofstream *_tmp_cp_ret3;
+    struct ofstream *_tmp_cp_ret4;
     __attribute__ ((unused)) struct ofstream *_thunk0(struct ofstream *_p0){
         return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1379))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1380))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1381, _Bool __anonymous_object1382))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1383))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1384, const char *__anonymous_object1385))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1386))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1387, _Bool __anonymous_object1388))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1389))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1390))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1391))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1392))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1393))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1394, const char *__anonymous_object1395))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1396))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1397, const char *__anonymous_object1398))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1399))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1400))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1401, const char *__anonymous_object1402, unsigned long int __anonymous_object1403))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1404, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
     }
-    ((void)(((void)(_tmp_cp_ret2=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1405))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1406))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1407, _Bool __anonymous_object1408))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1409))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1410, const char *__anonymous_object1411))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1412))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1413, _Bool __anonymous_object1414))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1415))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1416))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1417))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1418))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1419))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1420, const char *__anonymous_object1421))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1422))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1423, const char *__anonymous_object1424))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1425))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1426))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1427, const char *__anonymous_object1428, unsigned long int __anonymous_object1429))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1430, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret1=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0c__1(((_Bool (*)(void *__anonymous_object1431))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1432))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1433, _Bool __anonymous_object1434))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1435))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1436, const char *__anonymous_object1437))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1438))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1439, _Bool __anonymous_object1440))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1441))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1442))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1443))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1444))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1445))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1446, const char *__anonymous_object1447))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1448))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1449, const char *__anonymous_object1450))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1451))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1452))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1453, const char *__anonymous_object1454, unsigned long int __anonymous_object1455))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1456, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret0=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1457))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1458))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1459, _Bool __anonymous_object1460))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1461))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1462, const char *__anonymous_object1463))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1464))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1465, _Bool __anonymous_object1466))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1467))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1468))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1469))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1470))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1471))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1472, const char *__anonymous_object1473))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1474))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1475, const char *__anonymous_object1476))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1477))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1478))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1479, const char *__anonymous_object1480, unsigned long int __anonymous_object1481))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1482, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "char ")))) , _tmp_cp_ret0)), __v__c_1)))) , _tmp_cp_ret1)), ((void *(*)(void *__anonymous_object1483))(&_thunk0)))))) , _tmp_cp_ret2));
+    ((void)(((void)(_tmp_cp_ret4=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1405))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1406))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1407, _Bool __anonymous_object1408))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1409))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1410, const char *__anonymous_object1411))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1412))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1413, _Bool __anonymous_object1414))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1415))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1416))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1417))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1418))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1419))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1420, const char *__anonymous_object1421))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1422))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1423, const char *__anonymous_object1424))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1425))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1426))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1427, const char *__anonymous_object1428, unsigned long int __anonymous_object1429))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1430, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret3=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0c__1(((_Bool (*)(void *__anonymous_object1431))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1432))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1433, _Bool __anonymous_object1434))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1435))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1436, const char *__anonymous_object1437))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1438))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1439, _Bool __anonymous_object1440))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1441))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1442))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1443))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1444))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1445))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1446, const char *__anonymous_object1447))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1448))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1449, const char *__anonymous_object1450))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1451))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1452))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1453, const char *__anonymous_object1454, unsigned long int __anonymous_object1455))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1456, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret2=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1457))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1458))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1459, _Bool __anonymous_object1460))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1461))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1462, const char *__anonymous_object1463))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1464))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1465, _Bool __anonymous_object1466))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1467))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1468))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1469))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1470))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1471))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1472, const char *__anonymous_object1473))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1474))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1475, const char *__anonymous_object1476))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1477))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1478))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1479, const char *__anonymous_object1480, unsigned long int __anonymous_object1481))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1482, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "char ")))) , _tmp_cp_ret2)), __v__c_1)))) , _tmp_cp_ret3)), ((void *(*)(void *__anonymous_object1483))(&_thunk0)))))) , _tmp_cp_ret4));
 }
 void __f__F_Sc__1(signed char __v__Sc_1){
-    struct ofstream *_tmp_cp_ret3;
-    struct ofstream *_tmp_cp_ret4;
     struct ofstream *_tmp_cp_ret5;
+    struct ofstream *_tmp_cp_ret6;
+    struct ofstream *_tmp_cp_ret7;
     __attribute__ ((unused)) struct ofstream *_thunk1(struct ofstream *_p0){
         return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1484))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1485))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1486, _Bool __anonymous_object1487))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1488))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1489, const char *__anonymous_object1490))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1491))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1492, _Bool __anonymous_object1493))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1494))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1495))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1496))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1497))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1498))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1499, const char *__anonymous_object1500))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1501))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1502, const char *__anonymous_object1503))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1504))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1505))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1506, const char *__anonymous_object1507, unsigned long int __anonymous_object1508))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1509, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
     }
-    ((void)(((void)(_tmp_cp_ret5=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1510))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1511))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1512, _Bool __anonymous_object1513))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1514))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1515, const char *__anonymous_object1516))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1517))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1518, _Bool __anonymous_object1519))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1520))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1521))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1522))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1523))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1524))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1525, const char *__anonymous_object1526))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1527))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1528, const char *__anonymous_object1529))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1530))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1531))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1532, const char *__anonymous_object1533, unsigned long int __anonymous_object1534))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1535, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret4=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Sc__1(((_Bool (*)(void *__anonymous_object1536))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1537))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1538, _Bool __anonymous_object1539))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1540))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1541, const char *__anonymous_object1542))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1543))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1544, _Bool __anonymous_object1545))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1546))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1547))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1548))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1549))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1550))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1551, const char *__anonymous_object1552))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1553))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1554, const char *__anonymous_object1555))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1556))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1557))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1558, const char *__anonymous_object1559, unsigned long int __anonymous_object1560))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1561, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret3=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1562))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1563))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1564, _Bool __anonymous_object1565))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1566))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1567, const char *__anonymous_object1568))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1569))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1570, _Bool __anonymous_object1571))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1572))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1573))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1574))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1575))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1576))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1577, const char *__anonymous_object1578))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1579))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1580, const char *__anonymous_object1581))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1582))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1583))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1584, const char *__anonymous_object1585, unsigned long int __anonymous_object1586))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1587, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed char ")))) , _tmp_cp_ret3)), __v__Sc_1)))) , _tmp_cp_ret4)), ((void *(*)(void *__anonymous_object1588))(&_thunk1)))))) , _tmp_cp_ret5));
+    ((void)(((void)(_tmp_cp_ret7=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1510))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1511))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1512, _Bool __anonymous_object1513))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1514))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1515, const char *__anonymous_object1516))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1517))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1518, _Bool __anonymous_object1519))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1520))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1521))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1522))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1523))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1524))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1525, const char *__anonymous_object1526))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1527))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1528, const char *__anonymous_object1529))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1530))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1531))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1532, const char *__anonymous_object1533, unsigned long int __anonymous_object1534))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1535, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret6=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Sc__1(((_Bool (*)(void *__anonymous_object1536))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1537))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1538, _Bool __anonymous_object1539))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1540))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1541, const char *__anonymous_object1542))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1543))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1544, _Bool __anonymous_object1545))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1546))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1547))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1548))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1549))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1550))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1551, const char *__anonymous_object1552))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1553))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1554, const char *__anonymous_object1555))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1556))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1557))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1558, const char *__anonymous_object1559, unsigned long int __anonymous_object1560))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1561, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret5=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1562))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1563))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1564, _Bool __anonymous_object1565))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1566))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1567, const char *__anonymous_object1568))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1569))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1570, _Bool __anonymous_object1571))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1572))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1573))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1574))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1575))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1576))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1577, const char *__anonymous_object1578))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1579))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1580, const char *__anonymous_object1581))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1582))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1583))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1584, const char *__anonymous_object1585, unsigned long int __anonymous_object1586))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1587, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed char ")))) , _tmp_cp_ret5)), __v__Sc_1)))) , _tmp_cp_ret6)), ((void *(*)(void *__anonymous_object1588))(&_thunk1)))))) , _tmp_cp_ret7));
 }
 void __f__F_Uc__1(unsigned char __v__Uc_1){
-    struct ofstream *_tmp_cp_ret6;
-    struct ofstream *_tmp_cp_ret7;
     struct ofstream *_tmp_cp_ret8;
+    struct ofstream *_tmp_cp_ret9;
+    struct ofstream *_tmp_cp_ret10;
     __attribute__ ((unused)) struct ofstream *_thunk2(struct ofstream *_p0){
         return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1589))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1590))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1591, _Bool __anonymous_object1592))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1593))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1594, const char *__anonymous_object1595))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1596))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1597, _Bool __anonymous_object1598))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1599))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1600))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1601))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1602))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1603))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1604, const char *__anonymous_object1605))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1606))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1607, const char *__anonymous_object1608))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1609))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1610))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1611, const char *__anonymous_object1612, unsigned long int __anonymous_object1613))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1614, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
     }
-    ((void)(((void)(_tmp_cp_ret8=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1615))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1616))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1617, _Bool __anonymous_object1618))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1619))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1620, const char *__anonymous_object1621))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1622))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1623, _Bool __anonymous_object1624))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1625))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1626))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1627))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1628))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1629))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1630, const char *__anonymous_object1631))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1632))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1633, const char *__anonymous_object1634))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1635))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1636))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1637, const char *__anonymous_object1638, unsigned long int __anonymous_object1639))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1640, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret7=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Uc__1(((_Bool (*)(void *__anonymous_object1641))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1642))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1643, _Bool __anonymous_object1644))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1645))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1646, const char *__anonymous_object1647))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1648))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1649, _Bool __anonymous_object1650))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1651))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1652))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1653))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1654))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1655))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1656, const char *__anonymous_object1657))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1658))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1659, const char *__anonymous_object1660))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1661))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1662))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1663, const char *__anonymous_object1664, unsigned long int __anonymous_object1665))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1666, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret6=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1667))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1668))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1669, _Bool __anonymous_object1670))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1671))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1672, const char *__anonymous_object1673))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1674))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1675, _Bool __anonymous_object1676))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1677))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1678))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1679))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1680))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1681))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1682, const char *__anonymous_object1683))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1684))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1685, const char *__anonymous_object1686))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1687))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1688))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1689, const char *__anonymous_object1690, unsigned long int __anonymous_object1691))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1692, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned char ")))) , _tmp_cp_ret6)), __v__Uc_1)))) , _tmp_cp_ret7)), ((void *(*)(void *__anonymous_object1693))(&_thunk2)))))) , _tmp_cp_ret8));
+    ((void)(((void)(_tmp_cp_ret10=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1615))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1616))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1617, _Bool __anonymous_object1618))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1619))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1620, const char *__anonymous_object1621))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1622))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1623, _Bool __anonymous_object1624))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1625))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1626))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1627))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1628))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1629))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1630, const char *__anonymous_object1631))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1632))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1633, const char *__anonymous_object1634))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1635))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1636))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1637, const char *__anonymous_object1638, unsigned long int __anonymous_object1639))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1640, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret9=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Uc__1(((_Bool (*)(void *__anonymous_object1641))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1642))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1643, _Bool __anonymous_object1644))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1645))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1646, const char *__anonymous_object1647))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1648))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1649, _Bool __anonymous_object1650))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1651))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1652))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1653))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1654))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1655))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1656, const char *__anonymous_object1657))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1658))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1659, const char *__anonymous_object1660))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1661))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1662))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1663, const char *__anonymous_object1664, unsigned long int __anonymous_object1665))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1666, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret8=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1667))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1668))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1669, _Bool __anonymous_object1670))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1671))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1672, const char *__anonymous_object1673))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1674))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1675, _Bool __anonymous_object1676))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1677))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1678))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1679))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1680))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1681))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1682, const char *__anonymous_object1683))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1684))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1685, const char *__anonymous_object1686))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1687))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1688))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1689, const char *__anonymous_object1690, unsigned long int __anonymous_object1691))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1692, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned char ")))) , _tmp_cp_ret8)), __v__Uc_1)))) , _tmp_cp_ret9)), ((void *(*)(void *__anonymous_object1693))(&_thunk2)))))) , _tmp_cp_ret10));
 }
 void __f__F_s__1(signed short int __v__s_1){
-    struct ofstream *_tmp_cp_ret9;
-    struct ofstream *_tmp_cp_ret10;
     struct ofstream *_tmp_cp_ret11;
+    struct ofstream *_tmp_cp_ret12;
+    struct ofstream *_tmp_cp_ret13;
     __attribute__ ((unused)) struct ofstream *_thunk3(struct ofstream *_p0){
         return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1694))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1695))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1696, _Bool __anonymous_object1697))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1698))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1699, const char *__anonymous_object1700))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1701))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1702, _Bool __anonymous_object1703))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1704))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1705))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1706))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1707))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1708))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1709, const char *__anonymous_object1710))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1711))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1712, const char *__anonymous_object1713))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1714))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1715))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1716, const char *__anonymous_object1717, unsigned long int __anonymous_object1718))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1719, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
     }
-    ((void)(((void)(_tmp_cp_ret11=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1720))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1721))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1722, _Bool __anonymous_object1723))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1724))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1725, const char *__anonymous_object1726))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1727))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1728, _Bool __anonymous_object1729))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1730))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1731))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1732))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1733))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1734))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1735, const char *__anonymous_object1736))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1737))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1738, const char *__anonymous_object1739))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1740))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1741))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1742, const char *__anonymous_object1743, unsigned long int __anonymous_object1744))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1745, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret10=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0s__1(((_Bool (*)(void *__anonymous_object1746))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1747))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1748, _Bool __anonymous_object1749))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1750))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1751, const char *__anonymous_object1752))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1753))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1754, _Bool __anonymous_object1755))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1756))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1757))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1758))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1759))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1760))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1761, const char *__anonymous_object1762))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1763))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1764, const char *__anonymous_object1765))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1766))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1767))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1768, const char *__anonymous_object1769, unsigned long int __anonymous_object1770))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1771, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret9=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1772))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1773))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1774, _Bool __anonymous_object1775))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1776))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1777, const char *__anonymous_object1778))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1779))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1780, _Bool __anonymous_object1781))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1782))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1783))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1784))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1785))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1786))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1787, const char *__anonymous_object1788))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1789))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1790, const char *__anonymous_object1791))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1792))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1793))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1794, const char *__anonymous_object1795, unsigned long int __anonymous_object1796))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1797, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed short int")))) , _tmp_cp_ret9)), __v__s_1)))) , _tmp_cp_ret10)), ((void *(*)(void *__anonymous_object1798))(&_thunk3)))))) , _tmp_cp_ret11));
+    ((void)(((void)(_tmp_cp_ret13=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1720))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1721))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1722, _Bool __anonymous_object1723))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1724))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1725, const char *__anonymous_object1726))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1727))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1728, _Bool __anonymous_object1729))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1730))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1731))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1732))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1733))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1734))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1735, const char *__anonymous_object1736))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1737))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1738, const char *__anonymous_object1739))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1740))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1741))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1742, const char *__anonymous_object1743, unsigned long int __anonymous_object1744))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1745, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret12=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0s__1(((_Bool (*)(void *__anonymous_object1746))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1747))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1748, _Bool __anonymous_object1749))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1750))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1751, const char *__anonymous_object1752))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1753))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1754, _Bool __anonymous_object1755))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1756))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1757))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1758))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1759))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1760))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1761, const char *__anonymous_object1762))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1763))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1764, const char *__anonymous_object1765))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1766))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1767))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1768, const char *__anonymous_object1769, unsigned long int __anonymous_object1770))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1771, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret11=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1772))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1773))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1774, _Bool __anonymous_object1775))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1776))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1777, const char *__anonymous_object1778))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1779))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1780, _Bool __anonymous_object1781))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1782))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1783))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1784))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1785))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1786))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1787, const char *__anonymous_object1788))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1789))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1790, const char *__anonymous_object1791))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1792))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1793))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1794, const char *__anonymous_object1795, unsigned long int __anonymous_object1796))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1797, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "signed short int")))) , _tmp_cp_ret11)), __v__s_1)))) , _tmp_cp_ret12)), ((void *(*)(void *__anonymous_object1798))(&_thunk3)))))) , _tmp_cp_ret13));
 }
 void __f__F_Us__1(unsigned short int __v__Us_1){
-    struct ofstream *_tmp_cp_ret12;
-    struct ofstream *_tmp_cp_ret13;
     struct ofstream *_tmp_cp_ret14;
+    struct ofstream *_tmp_cp_ret15;
+    struct ofstream *_tmp_cp_ret16;
     __attribute__ ((unused)) struct ofstream *_thunk4(struct ofstream *_p0){
         return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1799))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1800))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1801, _Bool __anonymous_object1802))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1803))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1804, const char *__anonymous_object1805))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1806))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1807, _Bool __anonymous_object1808))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1809))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1810))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1811))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1812))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1813))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1814, const char *__anonymous_object1815))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1816))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1817, const char *__anonymous_object1818))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1819))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1820))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1821, const char *__anonymous_object1822, unsigned long int __anonymous_object1823))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1824, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
     }
-    ((void)(((void)(_tmp_cp_ret14=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1825))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1826))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1827, _Bool __anonymous_object1828))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1829))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1830, const char *__anonymous_object1831))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1832))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1833, _Bool __anonymous_object1834))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1835))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1836))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1837))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1838))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1839))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1840, const char *__anonymous_object1841))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1842))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1843, const char *__anonymous_object1844))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1845))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1846))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1847, const char *__anonymous_object1848, unsigned long int __anonymous_object1849))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1850, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret13=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Us__1(((_Bool (*)(void *__anonymous_object1851))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1852))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1853, _Bool __anonymous_object1854))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1855))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1856, const char *__anonymous_object1857))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1858))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1859, _Bool __anonymous_object1860))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1861))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1862))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1863))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1864))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1865))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1866, const char *__anonymous_object1867))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1868))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1869, const char *__anonymous_object1870))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1871))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1872))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1873, const char *__anonymous_object1874, unsigned long int __anonymous_object1875))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1876, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret12=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1877))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1878))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1879, _Bool __anonymous_object1880))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1881))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1882, const char *__anonymous_object1883))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1884))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1885, _Bool __anonymous_object1886))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1887))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1888))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1889))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1890))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1891))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1892, const char *__anonymous_object1893))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1894))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1895, const char *__anonymous_object1896))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1897))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1898))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1899, const char *__anonymous_object1900, unsigned long int __anonymous_object1901))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1902, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned short int")))) , _tmp_cp_ret12)), __v__Us_1)))) , _tmp_cp_ret13)), ((void *(*)(void *__anonymous_object1903))(&_thunk4)))))) , _tmp_cp_ret14));
+    ((void)(((void)(_tmp_cp_ret16=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1825))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1826))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1827, _Bool __anonymous_object1828))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1829))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1830, const char *__anonymous_object1831))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1832))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1833, _Bool __anonymous_object1834))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1835))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1836))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1837))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1838))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1839))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1840, const char *__anonymous_object1841))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1842))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1843, const char *__anonymous_object1844))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1845))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1846))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1847, const char *__anonymous_object1848, unsigned long int __anonymous_object1849))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1850, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret15=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Us__1(((_Bool (*)(void *__anonymous_object1851))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1852))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1853, _Bool __anonymous_object1854))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1855))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1856, const char *__anonymous_object1857))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1858))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1859, _Bool __anonymous_object1860))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1861))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1862))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1863))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1864))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1865))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1866, const char *__anonymous_object1867))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1868))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1869, const char *__anonymous_object1870))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1871))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1872))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1873, const char *__anonymous_object1874, unsigned long int __anonymous_object1875))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1876, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret14=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1877))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1878))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1879, _Bool __anonymous_object1880))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1881))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1882, const char *__anonymous_object1883))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1884))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1885, _Bool __anonymous_object1886))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1887))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1888))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1889))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1890))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1891))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1892, const char *__anonymous_object1893))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1894))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1895, const char *__anonymous_object1896))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1897))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1898))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1899, const char *__anonymous_object1900, unsigned long int __anonymous_object1901))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1902, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "unsigned short int")))) , _tmp_cp_ret14)), __v__Us_1)))) , _tmp_cp_ret15)), ((void *(*)(void *__anonymous_object1903))(&_thunk4)))))) , _tmp_cp_ret16));
 }
 void __f__F_Ul__1(unsigned long int __v__Ul_1){
-    struct ofstream *_tmp_cp_ret15;
-    struct ofstream *_tmp_cp_ret16;
     struct ofstream *_tmp_cp_ret17;
+    struct ofstream *_tmp_cp_ret18;
+    struct ofstream *_tmp_cp_ret19;
     __attribute__ ((unused)) struct ofstream *_thunk5(struct ofstream *_p0){
         return __endl__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0__1(((_Bool (*)(void *__anonymous_object1904))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1905))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1906, _Bool __anonymous_object1907))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1908))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1909, const char *__anonymous_object1910))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1911))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1912, _Bool __anonymous_object1913))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1914))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1915))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1916))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1917))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1918))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1919, const char *__anonymous_object1920))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1921))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1922, const char *__anonymous_object1923))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1924))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1925))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1926, const char *__anonymous_object1927, unsigned long int __anonymous_object1928))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1929, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)_p0));
     }
-    ((void)(((void)(_tmp_cp_ret17=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1930))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1931))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1932, _Bool __anonymous_object1933))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1934))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1935, const char *__anonymous_object1936))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1937))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1938, _Bool __anonymous_object1939))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1940))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1941))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1942))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1943))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1944))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1945, const char *__anonymous_object1946))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1947))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1948, const char *__anonymous_object1949))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1950))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1951))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1952, const char *__anonymous_object1953, unsigned long int __anonymous_object1954))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1955, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret16=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Ul__1(((_Bool (*)(void *__anonymous_object1956))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1957))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1958, _Bool __anonymous_object1959))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1960))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1961, const char *__anonymous_object1962))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1963))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1964, _Bool __anonymous_object1965))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1966))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1967))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1968))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1969))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1970))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1971, const char *__anonymous_object1972))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1973))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1974, const char *__anonymous_object1975))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1976))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1977))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1978, const char *__anonymous_object1979, unsigned long int __anonymous_object1980))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1981, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret15=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1982))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1983))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1984, _Bool __anonymous_object1985))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1986))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1987, const char *__anonymous_object1988))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1989))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1990, _Bool __anonymous_object1991))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1992))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1993))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1994))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1995))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1996))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1997, const char *__anonymous_object1998))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1999))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2000, const char *__anonymous_object2001))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2002))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2003))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2004, const char *__anonymous_object2005, unsigned long int __anonymous_object2006))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2007, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "size_t")))) , _tmp_cp_ret15)), __v__Ul_1)))) , _tmp_cp_ret16)), ((void *(*)(void *__anonymous_object2008))(&_thunk5)))))) , _tmp_cp_ret17));
+    ((void)(((void)(_tmp_cp_ret19=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PFRd0_Rd0___1(((_Bool (*)(void *__anonymous_object1930))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1931))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1932, _Bool __anonymous_object1933))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1934))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1935, const char *__anonymous_object1936))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1937))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1938, _Bool __anonymous_object1939))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1940))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1941))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1942))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1943))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1944))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1945, const char *__anonymous_object1946))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1947))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1948, const char *__anonymous_object1949))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1950))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1951))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1952, const char *__anonymous_object1953, unsigned long int __anonymous_object1954))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1955, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret18=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0Ul__1(((_Bool (*)(void *__anonymous_object1956))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1957))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1958, _Bool __anonymous_object1959))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1960))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1961, const char *__anonymous_object1962))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1963))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1964, _Bool __anonymous_object1965))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1966))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1967))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1968))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1969))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1970))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1971, const char *__anonymous_object1972))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1973))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1974, const char *__anonymous_object1975))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object1976))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object1977))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object1978, const char *__anonymous_object1979, unsigned long int __anonymous_object1980))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object1981, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)(((void)(_tmp_cp_ret17=((struct ofstream *)___operator_bitor__A0_1_0_0___sepPrt__PFb_Rd0___sepReset__PF_Rd0___sepReset__PF_Rd0b___sepGetCur__PFPCc_Rd0___sepSetCur__PF_Rd0PCc___getNL__PFb_Rd0___setNL__PF_Rd0b___sepOn__PF_Rd0___sepOff__PF_Rd0___sepDisable__PFb_Rd0___sepEnable__PFb_Rd0___sepGet__PFPCc_Rd0___sepSet__PF_Rd0PCc___sepGetTuple__PFPCc_Rd0___sepSetTuple__PF_Rd0PCc___fail__PFi_Rd0___flush__PFi_Rd0___open__PF_Rd0PCcPCc___close__PF_Rd0___write__PFRd0_Rd0PCcUl___fmt__PFi_Rd0PCc__FRd0_Rd0PCc__1(((_Bool (*)(void *__anonymous_object1982))__sepPrt__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1983))__sepReset__F_R9sofstream__1), ((void (*)(void *__anonymous_object1984, _Bool __anonymous_object1985))__sepReset__F_R9sofstreamb__1), ((const char *(*)(void *__anonymous_object1986))__sepGetCur__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1987, const char *__anonymous_object1988))__sepSetCur__F_R9sofstreamPCc__1), ((_Bool (*)(void *__anonymous_object1989))__getNL__Fb_R9sofstream__1), ((void (*)(void *__anonymous_object1990, _Bool __anonymous_object1991))__setNL__F_R9sofstreamb__1), ((void (*)(void *__anonymous_object1992))__sepOn__F_R9sofstream__1), ((void (*)(void *__anonymous_object1993))__sepOff__F_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1994))__sepDisable__Fb_R9sofstream__1), ((_Bool (*)(void *__anonymous_object1995))__sepEnable__Fb_R9sofstream__1), ((const char *(*)(void *__anonymous_object1996))__sepGet__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object1997, const char *__anonymous_object1998))__sepSet__F_R9sofstreamPCc__1), ((const char *(*)(void *__anonymous_object1999))__sepGetTuple__FPCc_R9sofstream__1), ((void (*)(void *__anonymous_object2000, const char *__anonymous_object2001))__sepSetTuple__F_R9sofstreamPCc__1), ((signed int (*)(void *__anonymous_object2002))__fail__Fi_R9sofstream__1), ((signed int (*)(void *__anonymous_object2003))__flush__Fi_R9sofstream__1), ((void (*)(void *__os__R7tostype_1, const char *__name__PCc_1, const char *__mode__PCc_1))__open__F_R9sofstreamPCcPCc__1), ((void (*)(void *__os__R7tostype_1))__close__F_R9sofstream__1), ((void *(*)(void *__anonymous_object2004, const char *__anonymous_object2005, unsigned long int __anonymous_object2006))__write__FR9sofstream_R9sofstreamPCcUl__1), ((signed int (*)(void *__anonymous_object2007, const char *__fmt__PCc_1, ...))__fmt__Fi_R9sofstreamPCc__1), ((void *)__sout__R9sofstream_1), "size_t")))) , _tmp_cp_ret17)), __v__Ul_1)))) , _tmp_cp_ret18)), ((void *(*)(void *__anonymous_object2008))(&_thunk5)))))) , _tmp_cp_ret19));
 }
 signed int __main__Fi___1(){
@@ -1367,7 +1367,7 @@
 signed int main(signed int __argc__i_1, char **__argv__PPc_1, char **__envp__PPc_1){
     __attribute__ ((unused)) signed int ___retval_main__i_1;
-    signed int _tmp_cp_ret0;
-    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret0=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret0)) /* ?{} */);
-    ((void)(_tmp_cp_ret0) /* ^?{} */);
+    signed int _tmp_cp_ret2;
+    ((void)(___retval_main__i_1=(((void)(_tmp_cp_ret2=invoke_main(__argc__i_1, __argv__PPc_1, __envp__PPc_1))) , _tmp_cp_ret2)) /* ?{} */);
+    ((void)(_tmp_cp_ret2) /* ^?{} */);
     return ___retval_main__i_1;
 }
