private ICodeNode FixBranchingExpression(Expression expression, Instruction branch) { if (branch.get_OpCode().get_Code() == 57) { stackVariable5 = true; } else { V_5 = branch.get_OpCode(); stackVariable5 = V_5.get_Code() == 44; } V_0 = stackVariable5; V_1 = expression.get_ExpressionType(); V_3 = 9; stackVariable10 = new Instruction[1]; stackVariable10[0] = branch; V_4 = stackVariable10; if (V_0) { V_3 = 10; } if (String.op_Equality(V_1.get_Name(), "Boolean") || V_1.get_Name().Contains("Boolean ")) { if (V_0) { V_6 = expression; } else { V_6 = Negator.Negate(expression, this.typeSystem); } if (expression as SafeCastExpression == null) { V_7 = new UnaryExpression(11, V_6, V_4); } else { V_7 = new BinaryExpression(V_3, expression, this.GetLiteralExpression(false, null), this.typeSystem, V_4, false); } return V_7; } if (String.op_Equality(V_1.get_Name(), "Char")) { V_2 = new BinaryExpression(V_3, expression, this.GetLiteralExpression('\0', null), this.typeSystem, V_4, false); V_2.set_ExpressionType(this.typeSystem.get_Boolean()); } if (V_1.get_IsPrimitive()) { V_2 = new BinaryExpression(V_3, expression, this.GetLiteralExpression(0, null), this.typeSystem, V_4, false); V_2.set_ExpressionType(this.typeSystem.get_Boolean()); } else { V_8 = V_1.Resolve(); if (V_8 == null || !V_8.get_IsEnum() || V_1.get_IsArray()) { V_2 = new BinaryExpression(V_3, expression, this.GetLiteralExpression(null, null), this.typeSystem, V_4, false); V_2.set_ExpressionType(this.typeSystem.get_Boolean()); } else { V_9 = null; V_10 = V_8.get_Fields().GetEnumerator(); try { while (V_10.MoveNext()) { V_11 = V_10.get_Current(); if (V_11.get_Constant() == null || V_11.get_Constant().get_Value() == null || !V_11.get_Constant().get_Value().Equals(0)) { continue; } V_9 = V_11; goto Label0; } } finally { V_10.Dispose(); } Label0: if (V_9 != null) { V_2 = new BinaryExpression(V_3, expression, new EnumExpression(V_9, null), this.typeSystem, V_4, false); V_2.set_ExpressionType(this.typeSystem.get_Boolean()); } else { V_2 = new BinaryExpression(V_3, expression, this.GetLiteralExpression(0, null), this.typeSystem, V_4, false); V_2.set_ExpressionType(this.typeSystem.get_Boolean()); } } } return V_2; }