/* control_flow_assigned_local_variable.c generated by valac, the Vala compiler
 * generated from control_flow_assigned_local_variable.vala, do not modify */

#include <stdlib.h>
#include <string.h>
#include <glib.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

VALA_EXTERN gboolean foo (gchar** s);
VALA_EXTERN gint bar (void);
static void _vala_main (void);

gboolean
foo (gchar** s)
{
	gchar* _vala_s = NULL;
	gchar* _tmp0_;
	gboolean result;
	_tmp0_ = g_strdup ("foo");
	_g_free0 (_vala_s);
	_vala_s = _tmp0_;
	result = TRUE;
	if (s) {
		*s = _vala_s;
	} else {
		_g_free0 (_vala_s);
	}
	return result;
}

gint
bar (void)
{
	gint result;
	result = 42;
	return result;
}

static void
_vala_main (void)
{
	{
		gchar* s = NULL;
		gboolean _tmp0_ = FALSE;
		gchar* _tmp1_ = NULL;
		gboolean _tmp2_;
		_tmp2_ = foo (&_tmp1_);
		_g_free0 (s);
		s = _tmp1_;
		if (!_tmp2_) {
			_tmp0_ = TRUE;
		} else {
			const gchar* _tmp3_;
			_tmp3_ = s;
			_tmp0_ = _tmp3_ == NULL;
		}
		if (_tmp0_) {
			g_assert_not_reached ();
		}
		_g_free0 (s);
	}
	{
		gint i = 0;
		gboolean _tmp4_ = FALSE;
		i = bar ();
		if (i > 42) {
			_tmp4_ = TRUE;
		} else {
			_tmp4_ = i < 23;
		}
		if (_tmp4_) {
			g_assert_not_reached ();
		}
	}
	{
		gint i = 0;
		gboolean _tmp5_ = FALSE;
		i = bar ();
		if (i > 42) {
			_tmp5_ = i < 23;
		} else {
			_tmp5_ = FALSE;
		}
		if (_tmp5_) {
			g_assert_not_reached ();
		}
	}
	{
		gchar* s = NULL;
		while (TRUE) {
			gboolean _tmp6_ = FALSE;
			gchar* _tmp7_ = NULL;
			gboolean _tmp8_;
			_tmp8_ = foo (&_tmp7_);
			_g_free0 (s);
			s = _tmp7_;
			if (!_tmp8_) {
				_tmp6_ = TRUE;
			} else {
				const gchar* _tmp9_;
				_tmp9_ = s;
				_tmp6_ = _tmp9_ == NULL;
			}
			if (!_tmp6_) {
				break;
			}
			g_assert_not_reached ();
		}
		_g_free0 (s);
	}
	{
		gint i = 0;
		while (TRUE) {
			gboolean _tmp10_ = FALSE;
			i = bar ();
			if (i > 42) {
				_tmp10_ = TRUE;
			} else {
				_tmp10_ = i < 23;
			}
			if (!_tmp10_) {
				break;
			}
			g_assert_not_reached ();
		}
	}
	{
		gint i = 0;
		while (TRUE) {
			gboolean _tmp11_ = FALSE;
			i = bar ();
			if (i > 42) {
				_tmp11_ = i < 23;
			} else {
				_tmp11_ = FALSE;
			}
			if (!_tmp11_) {
				break;
			}
			g_assert_not_reached ();
		}
	}
	{
		gchar* s = NULL;
		gboolean _tmp12_ = FALSE;
		gboolean _tmp13_ = FALSE;
		gchar* _tmp14_ = NULL;
		gboolean _tmp15_;
		_tmp15_ = foo (&_tmp14_);
		_g_free0 (s);
		s = _tmp14_;
		if (!_tmp15_) {
			_tmp13_ = TRUE;
		} else {
			const gchar* _tmp16_;
			_tmp16_ = s;
			_tmp13_ = _tmp16_ == NULL;
		}
		if (_tmp13_) {
			_tmp12_ = FALSE;
		} else {
			_tmp12_ = TRUE;
		}
		_vala_assert (_tmp12_, "!foo (out s) || s == null ? false : true");
		_g_free0 (s);
	}
	{
		gchar* s = NULL;
		gboolean _tmp17_ = FALSE;
		gboolean _tmp18_ = FALSE;
		gchar* _tmp19_ = NULL;
		gboolean _tmp20_;
		_tmp20_ = foo (&_tmp19_);
		_g_free0 (s);
		s = _tmp19_;
		if (!_tmp20_) {
			const gchar* _tmp21_;
			_tmp21_ = s;
			_tmp18_ = _tmp21_ == NULL;
		} else {
			_tmp18_ = FALSE;
		}
		if (_tmp18_) {
			_tmp17_ = FALSE;
		} else {
			_tmp17_ = TRUE;
		}
		_vala_assert (_tmp17_, "!foo (out s) && s == null ? false : true");
		_g_free0 (s);
	}
	{
		gint i = 0;
		gboolean _tmp22_ = FALSE;
		gboolean _tmp23_ = FALSE;
		i = bar ();
		if (i > 42) {
			_tmp23_ = TRUE;
		} else {
			_tmp23_ = i < 23;
		}
		if (_tmp23_) {
			_tmp22_ = FALSE;
		} else {
			_tmp22_ = TRUE;
		}
		_vala_assert (_tmp22_, "(i = bar ()) > 42 || i < 23 ? false : true");
	}
	{
		gint i = 0;
		gboolean _tmp24_ = FALSE;
		gboolean _tmp25_ = FALSE;
		i = bar ();
		if (i > 42) {
			_tmp25_ = i < 23;
		} else {
			_tmp25_ = FALSE;
		}
		if (_tmp25_) {
			_tmp24_ = FALSE;
		} else {
			_tmp24_ = TRUE;
		}
		_vala_assert (_tmp24_, "(i = bar ()) > 42 && i < 23 ? false : true");
	}
}

int
main (int argc,
      char ** argv)
{
	_vala_main ();
	return 0;
}

