/*******************************************************************
               DCT coefficient table 'B-15' module
 *******************************************************************/

#define B15_C
#include "b15.h"

int read_dct_coefficient_b15(VIDEO_STREAM *in, int *run, int *level);

static int eob(VIDEO_STREAM *in, int *run, int *level);
static int esc(VIDEO_STREAM *in, int *run, int *level);
static int l8b(VIDEO_STREAM *in, int *run, int *level);
static int o8b(VIDEO_STREAM *in, int *run, int *level);

int read_dct_coefficient_b15(VIDEO_STREAM *in, int *run, int *level)
{
	int code;
	
	static const rdc table[] = {
		o8b, esc, l8b, l8b, l8b, l8b, l8b, l8b,
		l8b, l8b, l8b, l8b, l8b, l8b, l8b, l8b,
		l8b, l8b, l8b, l8b, l8b, l8b, l8b, l8b,
		eob, eob, eob, eob, l8b, l8b, l8b, l8b,
		l8b, l8b, l8b, l8b, l8b, l8b, l8b, l8b,
		l8b, l8b, l8b, l8b, l8b, l8b, l8b, l8b,
		l8b, l8b, l8b, l8b, l8b, l8b, l8b, l8b,
		l8b, l8b, l8b, l8b, l8b, l8b, l8b, l8b,
	};

	code = read_bits(in, 6);

	return table[code](in, run, level);
}
		
static int eob(VIDEO_STREAM *in, int *run, int *level)
{
	erase_bits(in, 4);

	*run = -1;
	*level = 0;

	return 0;
}

static int esc(VIDEO_STREAM *in, int *run, int *level)
{
	erase_bits(in, 6);

	read_fixed_length_dct_coefficient(in, run, level);

	return 1;
}

static int l8b(VIDEO_STREAM *in, int *run, int *level)
{
	int code;
#if 0	
	static const int sign[] = {
		1, -1,
	};
#endif
	static const DCT_COEFFICIENT_VLC_ELEMENT table[] = {
		{7,1,7},{7,1,7},{8,1,7},{8,1,7},{6,1,7},{6,1,7},{2,2,7},{2,2,7},
		{0,7,6},{0,7,6},{0,7,6},{0,7,6},{0,6,6},{0,6,6},{0,6,6},{0,6,6},
		{4,1,6},{4,1,6},{4,1,6},{4,1,6},{5,1,6},{5,1,6},{5,1,6},{5,1,6},
		{1,5,8},{11,1,8},{0,11,8},{0,10,8},{13,1,8},{12,1,8},{3,2,8},{1,4,8},
		{2,1,5},{2,1,5},{2,1,5},{2,1,5},{2,1,5},{2,1,5},{2,1,5},{2,1,5},
		{1,2,5},{1,2,5},{1,2,5},{1,2,5},{1,2,5},{1,2,5},{1,2,5},{1,2,5},
		{3,1,5},{3,1,5},{3,1,5},{3,1,5},{3,1,5},{3,1,5},{3,1,5},{3,1,5},
		{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},
		{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},
		{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},
		{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},{1,1,3},
		{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
		{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},{0,0,0},
		{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},
		{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},{0,3,4},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},{0,1,2},
		{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},
		{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},
		{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},
		{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},{0,2,3},
		{0,4,5},{0,4,5},{0,4,5},{0,4,5},{0,4,5},{0,4,5},{0,4,5},{0,4,5},
		{0,5,5},{0,5,5},{0,5,5},{0,5,5},{0,5,5},{0,5,5},{0,5,5},{0,5,5},
		{9,1,7},{9,1,7},{1,3,7},{1,3,7},{10,1,7},{10,1,7},{0,8,7},{0,8,7},
		{0,9,7},{0,9,7},{0,12,8},{0,13,8},{2,3,8},{4,2,8},{0,14,8},{0,15,8},
	};

	code = read_bits(in, 8);
	code -= 8;

	*run = table[code].run;
	*level = table[code].level;

	erase_bits(in, table[code].length);

	if(get_bits(in, 1)){
		*level = 0 - *level;
	}
#if 0
	code = get_bits(in, 1);

	*level *= sign[code];
#endif
	return 1;
}

static int o8b(VIDEO_STREAM *in, int *run, int *level)
{
	int code;
#if 0
	static const int sign[] = {
		1, -1,
	};
#endif 0
	static const DCT_COEFFICIENT_VLC_ELEMENT table[] = {
		{1,18,16},{1,17,16},{1,16,16},{1,15,16},{6,3,16},{16,2,16},{15,2,16},{14,2,16},
		{13,2,16},{12,2,16},{11,2,16},{31,1,16},{30,1,16},{29,1,16},{28,1,16},{27,1,16},
		{0,40,15},{0,40,15},{0,39,15},{0,39,15},{0,38,15},{0,38,15},{0,37,15},{0,37,15},
		{0,36,15},{0,36,15},{0,35,15},{0,35,15},{0,34,15},{0,34,15},{0,33,15},{0,33,15},
		{0,32,15},{0,32,15},{1,14,15},{1,14,15},{1,13,15},{1,13,15},{1,12,15},{1,12,15},
		{1,11,15},{1,11,15},{1,10,15},{1,10,15},{1,9,15},{1,9,15},{1,8,15},{1,8,15},
		{0,31,14},{0,31,14},{0,31,14},{0,31,14},{0,30,14},{0,30,14},{0,30,14},{0,30,14},
		{0,29,14},{0,29,14},{0,29,14},{0,29,14},{0,28,14},{0,28,14},{0,28,14},{0,28,14},
		{0,27,14},{0,27,14},{0,27,14},{0,27,14},{0,26,14},{0,26,14},{0,26,14},{0,26,14},
		{0,25,14},{0,25,14},{0,25,14},{0,25,14},{0,24,14},{0,24,14},{0,24,14},{0,24,14},
		{0,23,14},{0,23,14},{0,23,14},{0,23,14},{0,22,14},{0,22,14},{0,22,14},{0,22,14},
		{0,21,14},{0,21,14},{0,21,14},{0,21,14},{0,20,14},{0,20,14},{0,20,14},{0,20,14},
		{0,19,14},{0,19,14},{0,19,14},{0,19,14},{0,18,14},{0,18,14},{0,18,14},{0,18,14},
		{0,17,14},{0,17,14},{0,17,14},{0,17,14},{0,16,14},{0,16,14},{0,16,14},{0,16,14},
		{10,2,13},{10,2,13},{10,2,13},{10,2,13},{10,2,13},{10,2,13},{10,2,13},{10,2,13},
		{9,2,13},{9,2,13},{9,2,13},{9,2,13},{9,2,13},{9,2,13},{9,2,13},{9,2,13},
		{5,3,13},{5,3,13},{5,3,13},{5,3,13},{5,3,13},{5,3,13},{5,3,13},{5,3,13},
		{3,4,13},{3,4,13},{3,4,13},{3,4,13},{3,4,13},{3,4,13},{3,4,13},{3,4,13},
		{2,5,13},{2,5,13},{2,5,13},{2,5,13},{2,5,13},{2,5,13},{2,5,13},{2,5,13},
		{1,7,13},{1,7,13},{1,7,13},{1,7,13},{1,7,13},{1,7,13},{1,7,13},{1,7,13},
		{1,6,13},{1,6,13},{1,6,13},{1,6,13},{1,6,13},{1,6,13},{1,6,13},{1,6,13},
		{0,15,13},{0,15,13},{0,15,13},{0,15,13},{0,15,13},{0,15,13},{0,15,13},{0,15,13},
		{0,14,13},{0,14,13},{0,14,13},{0,14,13},{0,14,13},{0,14,13},{0,14,13},{0,14,13},
		{0,13,13},{0,13,13},{0,13,13},{0,13,13},{0,13,13},{0,13,13},{0,13,13},{0,13,13},
		{0,12,13},{0,12,13},{0,12,13},{0,12,13},{0,12,13},{0,12,13},{0,12,13},{0,12,13},
		{26,1,13},{26,1,13},{26,1,13},{26,1,13},{26,1,13},{26,1,13},{26,1,13},{26,1,13},
		{25,1,13},{25,1,13},{25,1,13},{25,1,13},{25,1,13},{25,1,13},{25,1,13},{25,1,13},
		{24,1,13},{24,1,13},{24,1,13},{24,1,13},{24,1,13},{24,1,13},{24,1,13},{24,1,13},
		{23,1,13},{23,1,13},{23,1,13},{23,1,13},{23,1,13},{23,1,13},{23,1,13},{23,1,13},
		{22,1,13},{22,1,13},{22,1,13},{22,1,13},{22,1,13},{22,1,13},{22,1,13},{22,1,13},
		{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},
		{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},{0,11,12},
		{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},
		{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},{8,2,12},
		{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},
		{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},{4,3,12},
		{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},
		{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},{0,10,12},
		{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},
		{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},{2,4,12},
		{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},
		{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},{7,2,12},
		{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},
		{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},{21,1,12},
		{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},
		{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},{20,1,12},
		{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},
		{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},{0,9,12},
		{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},
		{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},{19,1,12},
		{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},
		{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},{18,1,12},
		{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},
		{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},{1,5,12},
		{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},
		{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},{3,3,12},
		{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},
		{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},{0,8,12},
		{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},
		{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},{6,2,12},
		{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},
		{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},{17,1,12},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},{5,2,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},{14,1,9},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},{2,4,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},{16,1,10},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
		{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},{15,1,9},
	};

	code = read_bits(in, 16);
	code -= 16;

	*run = table[code].run;
	*level = table[code].level;

	erase_bits(in, table[code].length);

	if(get_bits(in, 1)){
		*level = 0 - *level;
	}
#if 0
	code = get_bits(in, 1);

	*level *= sign[code];
#endif
	return 1;
}
