int main(){
#ifdef _WIN32
  MAIN_LOOP(false);
#else
  main_loop_(false);
#endif
}
static void
mlib_VolumeWindowLevel1(
	mlib_u8 *dst,
	const mlib_s16 *src,
	mlib_s32 window,
	mlib_s32 level,
	mlib_s32 gmax,
	mlib_s32 gmin,
	mlib_s32 len)
{
	INIT_VARS;
	mlib_s32 ia4[1];
	mlib_f32 A;

	while (2 * a < 1 && scale < 7) {
		a *= 2;
		scale++;
	}

	vis_write_gsr((7 - scale) << 3);

	ia = a * 256.0 + 0.5;

	if (ia > MLIB_U8_MAX)
		ia = MLIB_U8_MAX;
	ia4[0] = (ia << 24) | (ia << 16) | (ia << 8) | ia;
	A = *(mlib_f32 *)ia4;

	dgmin = vis_to_double_dup(((gmin << 16) | gmin) << scale);

	if (window >= (1 << 15)) {
		dwin = 0;
		ia = ((gmax + gmin) << scale) * 0.5 - level * a;
		dgmin = vis_to_double_dup((ia << 16) | (ia & 0xFFFF));
	}

	PRE_LOOP(MLIB_CALC1);

#pragma pipeloop(0)
	MAIN_LOOP(MLIB_CALC1);

	END_LOOP(MLIB_CALC1);
}
static void
mlib_VolumeWindowLevel2(
	mlib_u8 *dst,
	const mlib_s16 *src,
	mlib_s32 window,
	mlib_s32 level,
	mlib_s32 gmax,
	mlib_s32 gmin,
	mlib_s32 len)
{
	INIT_VARS;
	mlib_d64 A;

	while (2 * a < (1 << 7) && scale < 7) {
		a *= 2;
		scale++;
	}

	vis_write_gsr((7 - scale) << 3);
	WRITE_BMASK(0x13579BDF);

	ia = a * 256.0 + 0.5;

	if (ia > MLIB_S16_MAX)
		ia = MLIB_S16_MAX;
	A = vis_to_double_dup((ia << 16) | (ia & 0xFFFF));

	dgmin = vis_to_double_dup(((gmin << 16) | gmin) << scale);

	PRE_LOOP(MLIB_CALC2);

#pragma pipeloop(0)
	MAIN_LOOP(MLIB_CALC2);

	END_LOOP(MLIB_CALC2);
}