#if !defined(DATA_INCLUDED)
 
#  define DATA_INCLUDED
 
extern int scale;
 
extern char version[8];
 
extern int presult;
 
extern PLAYING_MODE mode;
 
extern int batch_mode;
 
extern int swindle_mode;
 
extern int call_flag;
 
extern int crafty_rating;
 
extern int opponent_rating;
 
extern int time_used;
 
extern int time_used_opponent;
 
extern uint64_t total_moves;
 
extern int allow_cores;
 
extern int allow_memory;
 
extern int initialized;
 
extern int early_exit;
 
extern int new_game;
 
extern char *AK_list[128];
 
extern char *GM_list[128];
 
extern char *IM_list[128];
 
extern char *B_list[128];
 
extern char *SP_list[128];
 
extern char *SP_opening_filename[128];
 
extern char *SP_personality_filename[128];
 
extern FILE *input_stream;
 
extern FILE *book_file;
 
extern FILE *books_file;
 
extern FILE *normal_bs_file;
 
extern FILE *computer_bs_file;
 
extern FILE *history_file;
 
extern FILE *log_file;
 
extern int log_id;
 
extern int output_format;
 
#  if !defined(NOEGTB)
 
extern int EGTBlimit;
 
extern int EGTB_use;
 
extern int EGTB_draw;
 
extern int EGTB_depth;
 
extern void *EGTB_cache;
 
extern size_t EGTB_cache_size;
 
extern int EGTB_setup;
 
#  endif
 
extern int last_mate_score;
 
extern int last_opponent_move;
 
extern int check_depth;
 
extern int null_depth;
 
extern int null_divisor;
 
extern int LMR_rdepth;
 
extern int LMR_min;
 
extern int LMR_max;
 
extern double LMR_db;
 
extern double LMR_mb;
 
extern double LMR_s;
 
extern uint8_t LMR[32][64];
 
extern int rep_index;
 
extern int pgn_suggested_percent;
 
extern char pgn_event[128];
 
extern char pgn_date[128];
 
extern char pgn_round[128];
 
extern char pgn_site[128];
 
extern char pgn_white[128];
 
extern char pgn_white_elo[128];
 
extern char pgn_black[128];
 
extern char pgn_black_elo[128];
 
extern char pgn_result[128];
 
extern char log_filename[256];
 
extern char history_filename[256];
 
extern int number_of_solutions;
 
extern int solutions[10];
 
extern int solution_type;
 
extern int abs_draw_score;
 
extern int accept_draws;
 
extern int offer_draws;
 
extern int dynamic_draw_score;
 
extern int adaptive_hash;
 
extern size_t adaptive_hash_min;
 
extern size_t adaptive_hash_max;
 
extern size_t adaptive_hashp_min;
 
extern size_t adaptive_hashp_max;
 
extern int over;
 
extern int xboard;
 
extern int xboard_done;
 
extern int pong;
 
extern char book_path[128];
 
extern char log_path[128];
 
extern char tb_path[128];
 
extern char rc_path[128];
 
extern char cmd_buffer[4096];
 
extern char *args[512];
 
extern char buffer[4096];
 
extern int line_length;
 
extern unsigned char convert_buff[8];
 
extern int nargs;
 
extern int kibitz;
 
extern int game_wtm;
 
extern int last_search_value;
 
extern int pruning_margin[10];
 
extern int pruning_depth;
 
extern int movecnt_pruning[4];
 
extern int movecnt_depth;
 
extern int failhi_delta, faillo_delta;
 
extern int ponder_value;
 
extern int move_actually_played;
 
extern int analyze_mode;
 
extern int annotate_mode;
 
extern int input_status;        /* 0=no input;
 
                                   1=predicted move read;
 
                                   2=unpredicted move read;
 
                                   3=something read, not executed. */
 
extern int resign;
 
extern int resign_counter;
 
extern int resign_count;
 
extern int draw_counter;
 
extern int draw_count;
 
extern int draw_offer_pending;
 
extern int draw_offered;
 
extern char audible_alarm;
 
extern char speech;
 
extern char ponder_text[512];
 
extern char book_hint[512];
 
extern int post;
 
extern int search_depth;
 
extern uint64_t search_nodes;
 
extern uint64_t temp_search_nodes;
 
extern int search_move;
 
extern int ponder;
 
extern int ponder_move;
 
extern int force;
 
extern unsigned ponder_moves[256];
 
extern int num_ponder_moves;
 
extern char initial_position[80];
 
extern int predicted;
 
extern int trace_level;
 
extern int book_move;
 
extern int book_accept_mask;
 
extern int book_reject_mask;
 
extern int book_random;
 
extern float book_weight_freq;
 
extern float book_weight_eval;
 
extern float book_weight_learn;
 
extern int book_search_trigger;
 
extern int book_selection_width;
 
extern int show_book;
 
extern int learn;
 
extern int learning;
 
extern int learn_value;
 
extern int abort_search;
 
extern int iteration;
 
extern int root_wtm;
 
extern int last_root_value;
 
extern ROOT_MOVE root_moves[256];
 
extern int n_root_moves;
 
extern int difficulty;
 
extern int time_limit;
 
extern int absolute_time_limit;
 
extern int search_time_limit;
 
extern int burp;
 
extern int quit;
 
extern unsigned opponent_start_time, opponent_end_time;
 
extern unsigned program_start_time, program_end_time;
 
extern unsigned start_time, end_time;
 
extern TREE *block[MAX_BLOCKS + 1];
 
extern THREAD thread[CPUS];
 
#  if (CPUS > 1)
 
extern lock_t lock_smp, lock_io;
 
#    if defined(UNIX)
 
extern pthread_attr_t attributes;
 
#    endif
 
#  endif
 
extern unsigned int smp_max_threads;
 
extern unsigned int smp_split_group;
 
extern unsigned int smp_split_at_root;
 
extern unsigned int smp_min_split_depth;
 
extern unsigned int smp_gratuitous_depth;
 
extern unsigned int smp_gratuitous_limit;
 
extern int smp_affinity;
 
extern int smp_numa;
 
extern int autotune_params;
 
extern struct autotune tune[16];
 
extern unsigned smp_split_nodes;
 
extern unsigned parallel_splits;
 
extern unsigned parallel_splits_wasted;
 
extern unsigned parallel_aborts;
 
extern unsigned parallel_joins;
 
extern unsigned busy_percent;
 
extern uint64_t game_max_blocks;
 
extern volatile int smp_split;
 
extern volatile int smp_threads;
 
extern volatile int initialized_threads;
 
extern int crafty_is_white;
 
extern unsigned nodes_between_time_checks;
 
extern unsigned nodes_per_second;
 
extern int next_time_check;
 
extern int transposition_age;
 
extern int thinking;
 
extern int pondering;
 
extern int puzzling;
 
extern int booking;
 
extern int display_options;
 
extern unsigned noise_level;
 
extern int noise_block;
 
extern int tc_moves;
 
extern int tc_time;
 
extern int tc_time_remaining[2];
 
extern int tc_moves_remaining[2];
 
extern int tc_secondary_moves;
 
extern int tc_secondary_time;
 
extern int tc_increment;
 
extern int tc_sudden_death;
 
extern int tc_safety_margin;
 
extern int draw_score[2];
 
extern char kibitz_text[4096];
 
extern int kibitz_depth;
 
extern int move_number;
 
extern int moves_out_of_book;
 
extern int first_nonbook_factor;
 
extern int first_nonbook_span;
 
extern int smp_nice;
 
#  if defined(SKILL)
 
extern int skill;
 
#  endif
 
extern int book_learn_eval[LEARN_INTERVAL];
 
extern int book_learn_depth[LEARN_INTERVAL];
 
extern int learn_seekto[64];
 
extern uint64_t learn_key[64];
 
extern int learn_nmoves[64];
 
extern uint64_t book_learn_key;
 
extern int learn_positions_count;
 
extern int book_learn_nmoves;
 
extern int book_learn_seekto;
 
extern int usage_level;
 
extern size_t hash_table_size;
 
extern size_t hash_path_size;
 
extern uint64_t hash_mask;
 
extern uint64_t mask_clear_entry;
 
extern uint64_t hash_path_mask;
 
extern size_t pawn_hash_table_size;
 
extern uint64_t pawn_hash_mask;
 
extern size_t eval_hash_table_size;
 
extern uint64_t eval_hash_mask;
 
extern HASH_ENTRY *hash_table;
 
extern HPATH_ENTRY *hash_path;
 
extern PAWN_HASH_ENTRY *pawn_hash_table;
 
extern uint64_t *eval_hash_table;
 
extern void *segments[MAX_BLOCKS + 32][2];
 
extern int nsegments;
 
extern const int pcval[7];
 
extern const int p_vals[7];
 
extern const int MVV_LVA[7][7];
 
extern const int pieces[2][7];
 
extern const int lower_n;
 
extern const int lower_b;
 
extern const int mobility_score_n[4];
 
extern const int mobility_score_b[4];
 
extern const int mobility_score_r[4];
 
extern const int mob_curve_r[48];
 
extern PATH last_pv;
 
extern int last_value;
 
extern const char translate[13];
 
extern const char empty_sqs[9];
 
extern const int mate[64];
 
extern const uint64_t magic_rook[64];
 
extern const uint64_t magic_rook_mask[64];
 
extern const unsigned magic_rook_shift[64];
 
extern const uint64_t mobility_mask_b[4];
 
extern const uint64_t mobility_mask_r[4];
 
extern int16_t *magic_bishop_mobility_indices[64];
 
extern int16_t magic_bishop_mobility_table[5248];
 
extern uint64_t *magic_rook_indices[64];
 
extern uint64_t magic_rook_table[102400];
 
extern int16_t *magic_rook_mobility_indices[64];
 
extern int16_t magic_rook_mobility_table[102400];
 
extern const uint64_t magic_bishop[64];
 
extern const uint64_t magic_bishop_mask[64];
 
extern const unsigned magic_bishop_shift[64];
 
extern uint64_t *magic_bishop_indices[64];
 
extern uint64_t magic_bishop_table[5248];
 
extern int16_t *magic_bishop_mobility_indices[64];
 
extern int16_t magic_bishop_mobility_table[5248];
 
extern int8_t directions[64][64];
 
extern uint64_t pawn_attacks[2][64];
 
extern uint64_t knight_attacks[64];
 
extern uint64_t rook_attacks[64];
 
extern uint64_t bishop_attacks[64];
 
extern POSITION display;
 
extern uint64_t king_attacks[64];
 
extern uint64_t intervening[64][64];
 
extern int history[1024];
 
extern KILLER counter_move[4096];
 
extern KILLER move_pair[4096];
 
extern const uint64_t randoms[2][7][64];
 
extern const uint64_t castle_random[2][2];
 
extern const uint64_t enpassant_random[65];
 
extern uint64_t clear_mask[65];
 
extern uint64_t set_mask[65];
 
extern uint64_t file_mask[8];
 
extern uint64_t rank_mask[8];
 
extern const uint64_t OO[2];
 
extern const uint64_t OOO[2];
 
extern const uint64_t mask_efgh, mask_fgh, mask_abc, mask_abcd;
 
extern const uint64_t mask_advance_2_w;
 
extern const uint64_t mask_advance_2_b;
 
extern const uint64_t mask_left_edge;
 
extern const uint64_t mask_right_edge;
 
extern const uint64_t mask_not_edge;
 
extern const uint64_t mask_rook_files;
 
extern const uint64_t dark_squares;
 
extern const uint64_t not_rook_pawns;
 
extern const uint64_t not_rook_files;
 
extern uint64_t plus1dir[65];
 
extern uint64_t plus7dir[65];
 
extern uint64_t plus8dir[65];
 
extern uint64_t plus9dir[65];
 
extern uint64_t minus1dir[65];
 
extern uint64_t minus7dir[65];
 
extern uint64_t minus8dir[65];
 
extern uint64_t minus9dir[65];
 
extern uint64_t mask_eptest[64];
 
#  if !defined(INLINEASM)
 
extern unsigned char msb[65536];
 
extern unsigned char lsb[65536];
 
#  endif
 
extern unsigned char msb_8bit[256];
 
extern unsigned char lsb_8bit[256];
 
extern unsigned char pop_cnt_8bit[256];
 
extern uint64_t mask_pawn_connected[2][64];
 
extern uint64_t mask_pawn_isolated[64];
 
extern uint64_t mask_passed[2][64];
 
extern uint64_t mask_pattacks[2][64];
 
extern uint64_t pawn_race[2][2][64];
 
extern BOOK_POSITION book_buffer[BOOK_CLUSTER_SIZE];
 
extern BOOK_POSITION book_buffer_char[BOOK_CLUSTER_SIZE];
 
extern const int rankflip[2][8];
 
extern const int sqflip[2][64];
 
extern const int rank1[2];
 
extern const int rank2[2];
 
extern const int rank3[2];
 
extern const int rank4[2];
 
extern const int rank5[2];
 
extern const int rank6[2];
 
extern const int rank7[2];
 
extern const int rank8[2];
 
extern const int epdir[2];
 
extern const int csq[2];
 
extern const int dsq[2];
 
extern const int esq[2];
 
extern const int fsq[2];
 
extern const int gsq[2];
 
extern const int sign[2];
 
extern const char square_color[64];
 
extern uint64_t distance_ring[64][8];
 
extern const int OOsqs[2][3];
 
extern const int OOOsqs[2][3];
 
extern const int OOfrom[2];
 
extern const int OOto[2];
 
extern const int OOOto[2];
 
extern const int epsq[2];
 
extern const int rook_A[2];
 
extern const int rook_D[2];
 
extern const int rook_F[2];
 
extern const int rook_G[2];
 
extern const int rook_H[2];
 
extern const int capleft[2];
 
extern const int capright[2];
 
extern const int pawnadv1[2];
 
extern const int pawnadv2[2];
 
#  if !defined(NOEGTB)
 
extern int cbEGTBCompBytes;
 
#  endif
 
extern int piece_values[2][7];
 
extern struct personality_term personality_packet[256];
 
#endif