diff options
author | root <root@annapurna.annapurna.fitness> | 2025-07-09 15:50:50 +0200 |
---|---|---|
committer | root <root@annapurna.annapurna.fitness> | 2025-07-09 15:50:50 +0200 |
commit | e07a195bdd87932b9d00d3d680a9a5a747359566 (patch) | |
tree | 002bc641d9a0955eb7689c30398dfe4ed57cdde8 |
-rw-r--r-- | BitB.py | 132 | ||||
-rw-r--r-- | bb.py | 39 | ||||
-rw-r--r-- | bitchess.py | 942 | ||||
-rw-r--r-- | bitmasks.py | 246 | ||||
-rw-r--r-- | bitmasks.txt | 603 | ||||
-rw-r--r-- | chess.py | 1033 | ||||
-rw-r--r-- | chess_manual.txt | 30 | ||||
-rw-r--r-- | chessconf.py | 220 | ||||
-rw-r--r-- | gen_piece_move_tables.py | 285 | ||||
-rw-r--r-- | loading_animation.py | 27 | ||||
-rw-r--r-- | magic_machine.py | 37 | ||||
-rw-r--r-- | piece_move_tables.py | 4120 |
12 files changed, 7714 insertions, 0 deletions
@@ -0,0 +1,132 @@ +import piece_move_tables +import typing + +bb = { + 'P': 0x00FF_0000_0000_0000, + 'R': 0x8100_0000_0000_0000, + 'N': 0x4200_0000_0000_0000, + 'B': 0x2400_0000_0000_0000, + 'Q': 0x0800_0000_0008_0000, + 'K': 0x1000_0000_0000_0000, + + 'p': 0x0000_0000_0000_FF00, + 'r': 0x0000_0000_0000_0081, + 'n': 0x0000_0000_0000_0042, + 'b': 0x0000_0000_0000_0024, + 'q': 0x0000_0000_0000_0008, + 'k': 0x0000_0000_0000_0010, + + 'ep': 0x0000_0000_0000_0000, + } + +def render_hex(hex_val: int) -> None: + if not isinstance(hex_val, int): + raise ValueError('Input must be integer.') + if hex_val > 0xFFFF_FFFF_FFFF_FFFF: + raise ValueError('Input hexadecimal value is too large, must be 64 bits or less.') + binary_value = bin(hex_val)[2:].zfill(64) + print('\n', end = '') + for i in range(0, 64, 8): + print(*['\x1b[47m' + bit + '\x1b[0m' if bit == '1' else bit for bit in binary_value[i:i+8]]) + +def bit_not(bm: int) -> int: + return bm ^ 0xFFFF_FFFF_FFFF_FFFF + +def get_bit(bm: int, idx: int) -> int: + return bm & 1 << idx + +def set_bit(bm: int, idx: int) -> int: + return bm | 1 << idx + +def rm_bit(bm: int, idx: int) -> int: + return bm & bit_not(1 << idx) + +def switch_bit(bm: int, *idxs: int) -> int: + for idx in idxs: + bm ^= 1 << idx + return bm + +def count_trailing_zeros(bm: int) -> int: + return (bm & -bm).bit_length() - 1 + +def w_pcs() -> int: + return bb['P'] | bb['R'] | bb['N'] | bb['B'] | bb['Q'] | bb['Q'] + +def b_pcs() -> int: + return bb['p'] | bb['r'] | bb['n'] | bb['b'] | bb['q'] | bb['k'] + +def all_pcs() -> int: + return w_pcs() ^ b_pcs() + +def R_mvs(idx: int) -> int: + all_pieces = all_pcs() + left = piece_move_tables.L_MASK[idx][all_pieces & piece_move_tables.L_BORDER_MASK[idx]] + right = piece_move_tables.R_MASK[idx][all_pieces & piece_move_tables.R_BORDER_MASK[idx]] + up = piece_move_tables.U_MASK[idx][all_pieces & piece_move_tables.U_BORDER_MASK[idx]] + down = piece_move_tables.D_MASK[idx][all_pieces & piece_move_tables.D_BORDER_MASK[idx]] + return (left | right | up | down) & bit_not(w_pcs()) + +def N_mvs(idx) -> int: + return piece_move_tables.N_MASK[idx] & bit_not(w_pcs()) + +def B_mvs(idx: int) -> int: + all_pieces = all_pcs() + left_up = piece_move_tables.LU_MASK[idx][all_pieces & piece_move_tables.LU_BORDER_MASK[idx]] + left_down = piece_move_tables.LD_MASK[idx][all_pieces & piece_move_tables.LD_BORDER_MASK[idx]] + right_up = piece_move_tables.RU_MASK[idx][all_pieces & piece_move_tables.RU_BORDER_MASK[idx]] + right_down = piece_move_tables.RD_MASK[idx][all_pieces & piece_move_tables.RD_BORDER_MASK[idx]] + return (left_up | left_down | right_up | right_down) & bit_not(w_pcs()) + +def Q_mvs(idx: int) -> int: + return R_mvs(idx) | B_mvs(idx) + +def K_mvs(idx: int) -> int: + return piece_move_tables.K_MASK[idx] & bit_not(w_pcs()) + +def P_mvs(idx: int) -> int: + return piece_move_tables.WP_PUSH_MASK[idx] & bit_not(all_pcs()) | piece_move_tables.WP_LEFT_TAKE_MASK[idx] | piece_move_tables.WP_RIGHT_TAKE_MASK[idx] & b_pcs() + +def r_mvs(idx: int) -> int: + all_pieces = all_pcs() + left = piece_move_tables.L_MASK[idx][all_pieces & piece_move_tables.L_BORDER_MASK[idx]] + right = piece_move_tables.R_MASK[idx][all_pieces & piece_move_tables.R_BORDER_MASK[idx]] + up = piece_move_tables.U_MASK[idx][all_pieces & piece_move_tables.U_BORDER_MASK[idx]] + down = piece_move_tables.D_MASK[idx][all_pieces & piece_move_tables.D_BORDER_MASK[idx]] + return (left | right | up | down) & bit_not(b_pcs()) + +def n_mvs(idx: int) -> int: + return piece_move_tables.N_MASK[idx] & bit_not(b_pcs()) + +def b_mvs(idx: int) -> int: + all_pieces = all_pcs() + left_up = piece_move_tables.LU_MASK[idx][all_pieces & piece_move_tables.LU_BORDER_MASK[idx]] + left_down = piece_move_tables.LD_MASK[idx][all_pieces & piece_move_tables.LD_BORDER_MASK[idx]] + right_up = piece_move_tables.RU_MASK[idx][all_pieces & piece_move_tables.RU_BORDER_MASK[idx]] + right_down = piece_move_tables.RD_MASK[idx][all_pieces & piece_move_tables.RD_BORDER_MASK[idx]] + return (left_up | left_down | right_up | right_down) & bit_not(b_pcs()) + +def q_mvs(idx: int) -> int: + return r_mvs(idx) | b_mvs(idx) + +def k_mvs(idx: int) -> int: + return piece_move_tables.K_MASK[idx] & bit_not(b_pcs()) + +def p_mvs(idx) -> int: + return piece_move_tables.BP_PUSH_MASK[idx] & bit_not(all_pcs()) | piece_move_tables.BP_LEFT_TAKE_MASK[idx] | piece_move_tables.BP_RIGHT_TAKE_MASK[idx] & w_pcs() + +def ver_mirr(bm: int) -> int: + return (bm & 0x8080_8080_8080_8080) >> 7 | (bm & 0x4040_4040_4040_4040) >> 5 | (bm & 0x2020_2020_2020_2020) >> 3 | (bm & 0x1010_1010_1010_1010) >> 1 | (bm & 0x0808_0808_0808_0808) << 1 | (bm & 0x0404_0404_0404_0404) << 3 | (bm & 0x0202_0202_0202_0202) << 5 | (bm & 0x0101_0101_0101_0101) << 7 + +def hor_mirr(bm: int) -> int: + return (bm & 0xFF00_0000_0000_0000) >> 56 | (bm & 0x00FF_0000_0000_0000) >> 40 | (bm & 0x0000_FF00_0000_0000) >> 24 | (bm & 0x0000_00FF_0000_0000) >> 8 | (bm & 0x0000_0000_FF00_0000) << 8 | (bm & 0x0000_0000_00FF_0000) << 24 | (bm & 0x0000_0000_0000_FF00) << 40 | (bm & 0x0000_0000_0000_00FF) << 56 + +def bits(bm: int) -> typing.Generator[int, int, None]: + for idx in range(64): + if bm & 1 << idx: + yield 1 << idx + +render_hex(1 << 33) +render_hex(R_mvs(33)) + +render_hex(1 << 44) +render_hex(Q_mvs(44))
\ No newline at end of file @@ -0,0 +1,39 @@ +SQR_MASK = ( + 0x8000_0000_0000_0000, 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, 0x0100_0000_0000_0000, + 0x0080_0000_0000_0000, 0x0040_0000_0000_0000, 0x0020_0000_0000_0000, 0x0010_0000_0000_0000, 0x0008_0000_0000_0000, 0x0004_0000_0000_0000, 0x0002_0000_0000_0000, 0x0001_0000_0000_0000, + 0x0000_8000_0000_0000, 0x0000_4000_0000_0000, 0x0000_2000_0000_0000, 0x0000_1000_0000_0000, 0x0000_0800_0000_0000, 0x0000_0400_0000_0000, 0x0000_0200_0000_0000, 0x0000_0100_0000_0000, + 0x0000_0080_0000_0000, 0x0000_0040_0000_0000, 0x0000_0020_0000_0000, 0x0000_0010_0000_0000, 0x0000_0008_0000_0000, 0x0000_0004_0000_0000, 0x0000_0002_0000_0000, 0x0000_0001_0000_0000, + 0x0000_0000_8000_0000, 0x0000_0000_4000_0000, 0x0000_0000_2000_0000, 0x0000_0000_1000_0000, 0x0000_0000_0800_0000, 0x0000_0000_0400_0000, 0x0000_0000_0200_0000, 0x0000_0000_0100_0000, + 0x0000_0000_0080_0000, 0x0000_0000_0040_0000, 0x0000_0000_0020_0000, 0x0000_0000_0010_0000, 0x0000_0000_0008_0000, 0x0000_0000_0004_0000, 0x0000_0000_0002_0000, 0x0000_0000_0001_0000, + 0x0000_0000_0000_8000, 0x0000_0000_0000_4000, 0x0000_0000_0000_2000, 0x0000_0000_0000_1000, 0x0000_0000_0000_0800, 0x0000_0000_0000_0400, 0x0000_0000_0000_0200, 0x0000_0000_0000_0100, + 0x0000_0000_0000_0080, 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, 0x0000_0000_0000_0001) + +def render_hex(hex_val: int) -> None: + if not isinstance(hex_val, int): + raise ValueError('Input must be integer.') + if hex_val > 0xFFFF_FFFF_FFFF_FFFF: + raise ValueError('Input hexadecimal value is too large, must be 64 bits or less.') + binary_value = bin(hex_val)[2:].zfill(64) + print('\n', end = '') + for i in range(0, 64, 8): + print(*['\x1b[47m' + bit + '\x1b[0m' if bit == '1' else bit for bit in binary_value[i:i+8]]) + +def switch_bit(bm: int, *idxs: int) -> int: + for idx in idxs: + bm ^= SQR_MASK[idx] + return bm + +bm = 0x8080_8080_8080_8080 +render_hex(bm) + +new_bm = switch_bit(bm) +render_hex(new_bm) + +def turn_90_clockw(bm: int) -> int: + return (bm & 0x0) + +num = 0x110 +render_hex(num) +newnum = num // 0x4 +render_hex(newnum) +print(newnum)
\ No newline at end of file diff --git a/bitchess.py b/bitchess.py new file mode 100644 index 0000000..3f600ad --- /dev/null +++ b/bitchess.py @@ -0,0 +1,942 @@ +import chessconf +from random import choice, choices +from copy import deepcopy +from subprocess import Popen, PIPE + +move_struct = tuple[tuple[int, int, str], tuple[int, int, str]] | tuple[tuple[int, int, str], tuple[int, int, str], tuple[int, int, str]] | tuple[tuple[int, int, str], tuple[int, int, str], tuple[int, int, str], tuple[int, int, str]] +board_struct = tuple[list[str], list[str], list[str], list[str], list[str], list[str], list[str], list[str]] + +ICON = { + 'K': chessconf.WHITECOLOR + chessconf.WHITE_KING_ICON + '\x1b[0m', + 'Q': chessconf.WHITECOLOR + chessconf.WHITE_QUEEN_ICON + '\x1b[0m', + 'R': chessconf.WHITECOLOR + chessconf.WHITE_ROOK_ICON + '\x1b[0m', + 'B': chessconf.WHITECOLOR + chessconf.WHITE_BISHOP_ICON + '\x1b[0m', + 'N': chessconf.WHITECOLOR + chessconf.WHITE_KNIGHT_ICON + '\x1b[0m', + 'P': chessconf.WHITECOLOR + chessconf.WHITE_PAWN_ICON + '\x1b[0m', + '.': chessconf.SPACECOLOR + chessconf.SPACE_ICON + '\x1b[0m', + 'k': chessconf.BLACKCOLOR + chessconf.BLACK_KING_ICON + '\x1b[0m', + 'q': chessconf.BLACKCOLOR + chessconf.BLACK_QUEEN_ICON + '\x1b[0m', + 'r': chessconf.BLACKCOLOR + chessconf.BLACK_ROOK_ICON + '\x1b[0m', + 'b': chessconf.BLACKCOLOR + chessconf.BLACK_BISHOP_ICON + '\x1b[0m', + 'n': chessconf.BLACKCOLOR + chessconf.BLACK_KNIGHT_ICON + '\x1b[0m', + 'p': chessconf.BLACKCOLOR + chessconf.BLACK_PAWN_ICON + '\x1b[0m'} + +INT_TO_ALPH = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h'} +ALPH_TO_INT = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7} +INT_TO_NUM = {0: '8', 1: '7', 2: '6', 3: '5', 4: '4', 5: '3', 6: '2', 7: '1'} +NUM_TO_INT = {'8': 0, '7': 1, '6': 2, '5': 3, '4': 4, '3': 5, '2': 6, '1': 7} + +COLORWHITE = {'R': 'R', 'N': 'N', 'B': 'B', 'K': 'K', 'Q': 'Q', 'P': 'P', 'r': 'R', 'n': 'N', 'b': 'B', 'k': 'K', 'q': 'Q', 'p': 'P'} +COLORBLACK = {'R': 'r', 'N': 'n', 'B': 'b', 'K': 'k', 'Q': 'q', 'P': 'p', 'r': 'r', 'n': 'n', 'b': 'b', 'k': 'k', 'q': 'q', 'p': 'p'} +WHITEPIECES, BLACKPIECES = {'R', 'N', 'B', 'Q', 'K', 'P'}, {'r', 'n', 'b', 'q', 'k', 'p'} + +def render_hex(hex_val: int) -> None: + if not isinstance(hex_val, int): + raise ValueError('Input must be a string or an integer.') + if hex_val > 0xFFFFFFFFFFFFFFFF: + raise ValueError('Input hexadecimal value is too large, must be 64 bits or less.') + binary_value = bin(hex_val)[2:].zfill(64) + print('\n', end = '') + for i in range(0, 64, 8): + print(*['\x1b[47m' + bit + '\x1b[0m' if bit == '1' else bit for bit in binary_value[i:i+8]]) + +def invert(b): + return b ^ 0xFFFFFFFFFFFFFFFF + +class Board(): + def __init__(self, white: bool = True) -> None: + self.pos: board_struct = ( + ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'], + ['p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'], + ['R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R']) + + self.player_color, self.white = True, white + self.hist, self.pos_hist = [], [deepcopy(self.pos)] + self.half_move_ctr, self.fifty_move_ctr = 0, 0 + self.w_short_castling, self.w_long_castling, self.b_short_castling, self.b_long_castling = True, True, True, True + self.ep_sqr = None + self.board_turned = False + self.asked_draw = False + self.bb = { + 'p': 0x00FF000000000000, + 'r': 0x8100000000000000, + 'n': 0x4200000000000000, + 'b': 0x2400000000000000, + 'q': 0x1000000000000000, + 'k': 0x0800000000000000, + 'P': 0x000000000000FF00, + 'R': 0x0000000000000081, + 'N': 0x0000000000000042, + 'B': 0x0000000000000024, + 'Q': 0x0000000000000010, + 'K': 0x0000000000000008} + + def bb_black(self): + return self.bb['p'] | self.bb['r'] | self.bb['n'] | self.bb['b'] | self.bb['q'] | self.bb['k'] + + def bb_white(self): + return self.bb['P'] | self.bb['R'] | self.bb['N'] | self.bb['B'] | self.bb['Q'] | self.bb['K'] + + def bb(self): + return self.bb_white() | self.bb_black() + + def _bb_rook_moves(self, white: bool): + bm, enemypieces = (self.bb_R, self.bb_black()) if white else (self.bb_r, self.bb_white()) + render_hex(bm) + render_hex(bm << 8) + + + + def render(self, white: bool) -> None: + if (white and not self.board_turned) or (not white and self.board_turned): + if self.board_turned: + print('\nBoard turned! Use /turnboard to turn it back.') + print(f''' + ┌───┬───┬───┬───┬───┬───┬───┬───┐ +8 │ {' │ '.join((ICON[self.pos[0][0]], ICON[self.pos[0][1]], ICON[self.pos[0][2]], ICON[self.pos[0][3]], ICON[self.pos[0][4]], ICON[self.pos[0][5]], ICON[self.pos[0][6]], ICON[self.pos[0][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +7 │ {' │ '.join((ICON[self.pos[1][0]], ICON[self.pos[1][1]], ICON[self.pos[1][2]], ICON[self.pos[1][3]], ICON[self.pos[1][4]], ICON[self.pos[1][5]], ICON[self.pos[1][6]], ICON[self.pos[1][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +6 │ {' │ '.join((ICON[self.pos[2][0]], ICON[self.pos[2][1]], ICON[self.pos[2][2]], ICON[self.pos[2][3]], ICON[self.pos[2][4]], ICON[self.pos[2][5]], ICON[self.pos[2][6]], ICON[self.pos[2][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +5 │ {' │ '.join((ICON[self.pos[3][0]], ICON[self.pos[3][1]], ICON[self.pos[3][2]], ICON[self.pos[3][3]], ICON[self.pos[3][4]], ICON[self.pos[3][5]], ICON[self.pos[3][6]], ICON[self.pos[3][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +4 │ {' │ '.join((ICON[self.pos[4][0]], ICON[self.pos[4][1]], ICON[self.pos[4][2]], ICON[self.pos[4][3]], ICON[self.pos[4][4]], ICON[self.pos[4][5]], ICON[self.pos[4][6]], ICON[self.pos[4][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +3 │ {' │ '.join((ICON[self.pos[5][0]], ICON[self.pos[5][1]], ICON[self.pos[5][2]], ICON[self.pos[5][3]], ICON[self.pos[5][4]], ICON[self.pos[5][5]], ICON[self.pos[5][6]], ICON[self.pos[5][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +2 │ {' │ '.join((ICON[self.pos[6][0]], ICON[self.pos[6][1]], ICON[self.pos[6][2]], ICON[self.pos[6][3]], ICON[self.pos[6][4]], ICON[self.pos[6][5]], ICON[self.pos[6][6]], ICON[self.pos[6][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +1 │ {' │ '.join((ICON[self.pos[7][0]], ICON[self.pos[7][1]], ICON[self.pos[7][2]], ICON[self.pos[7][3]], ICON[self.pos[7][4]], ICON[self.pos[7][5]], ICON[self.pos[7][6]], ICON[self.pos[7][7]]))} │ + └───┴───┴───┴───┴───┴───┴───┴───┘ + a b c d e f g h''') + else: + if self.board_turned: + print('\nBoard turned! Use /turnboard to turn it back.') + print(f''' + ┌───┬───┬───┬───┬───┬───┬───┬───┐ +1 │ {' │ '.join((ICON[self.pos[7][7]], ICON[self.pos[7][6]], ICON[self.pos[7][5]], ICON[self.pos[7][4]], ICON[self.pos[7][3]], ICON[self.pos[7][2]], ICON[self.pos[7][1]], ICON[self.pos[7][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +2 │ {' │ '.join((ICON[self.pos[6][7]], ICON[self.pos[6][6]], ICON[self.pos[6][5]], ICON[self.pos[6][4]], ICON[self.pos[6][3]], ICON[self.pos[6][2]], ICON[self.pos[6][1]], ICON[self.pos[6][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +3 │ {' │ '.join((ICON[self.pos[5][7]], ICON[self.pos[5][6]], ICON[self.pos[5][5]], ICON[self.pos[5][4]], ICON[self.pos[5][3]], ICON[self.pos[5][2]], ICON[self.pos[5][1]], ICON[self.pos[5][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +4 │ {' │ '.join((ICON[self.pos[4][7]], ICON[self.pos[4][6]], ICON[self.pos[4][5]], ICON[self.pos[4][4]], ICON[self.pos[4][3]], ICON[self.pos[4][2]], ICON[self.pos[4][1]], ICON[self.pos[4][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +5 │ {' │ '.join((ICON[self.pos[3][7]], ICON[self.pos[3][6]], ICON[self.pos[3][5]], ICON[self.pos[3][4]], ICON[self.pos[3][3]], ICON[self.pos[3][2]], ICON[self.pos[3][1]], ICON[self.pos[3][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +6 │ {' │ '.join((ICON[self.pos[2][7]], ICON[self.pos[2][6]], ICON[self.pos[2][5]], ICON[self.pos[2][4]], ICON[self.pos[2][3]], ICON[self.pos[2][2]], ICON[self.pos[2][1]], ICON[self.pos[2][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +7 │ {' │ '.join((ICON[self.pos[1][7]], ICON[self.pos[1][6]], ICON[self.pos[1][5]], ICON[self.pos[1][4]], ICON[self.pos[1][3]], ICON[self.pos[1][2]], ICON[self.pos[1][1]], ICON[self.pos[1][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +8 │ {' │ '.join((ICON[self.pos[0][7]], ICON[self.pos[0][6]], ICON[self.pos[0][5]], ICON[self.pos[0][4]], ICON[self.pos[0][3]], ICON[self.pos[0][2]], ICON[self.pos[0][1]], ICON[self.pos[0][0]]))} │ + └───┴───┴───┴───┴───┴───┴───┴───┘ + h g f e d c b a''') + + def _rook_moves(self, y: int, x: int, white: bool) -> list: + enemypieces, rook = (BLACKPIECES, 'R') if white else (WHITEPIECES, 'r') + + moves = [] + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newy <= 7 and 0 <= newx <= 7: + if self.pos[newy][newx] == '.': + moves.append(((y, x, '.'), (newy, newx, rook))) + elif self.pos[newy][newx] in enemypieces: + moves.append(((y, x, '.'), (newy, newx, rook))) + break + else: + break + newy, newx = newy + dy, newx + dx + return moves + + def _knight_moves(self, y: int, x: int, white: bool) -> list: + ownpieces, knight = (WHITEPIECES, 'N') if white else (BLACKPIECES, 'n') + + moves = [] + directions = ((1, 2), (1, -2), (2, 1), (2, -1), (-1, 2), (-1, -2), (-2, 1), (-2, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if 0 <= newy <= 7 and 0 <= newx <= 7 and self.pos[newy][newx] not in ownpieces: + moves.append(((y, x, '.'), (newy, newx, knight))) + return moves + + def _bishop_moves(self, y: int, x: int, white: bool) -> list: + enemypieces, bishop = (BLACKPIECES, 'B') if white else (WHITEPIECES, 'b') + + moves = [] + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] == '.': + moves.append(((y, x, '.'), (newy, newx, bishop))) + elif self.pos[newy][newx] in enemypieces: + moves.append(((y, x, '.'), (newy, newx, bishop))) + break + else: + break + newy, newx = newy + dy, newx + dx + return moves + + def _queen_moves(self, y: int, x: int, white: bool) -> list: + enemypieces, queen = (BLACKPIECES, 'Q') if white else (WHITEPIECES, 'q') + + moves = [] + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] == '.': + moves.append(((y, x, '.'), (newy, newx, queen))) + elif self.pos[newy][newx] in enemypieces: + moves.append(((y, x, '.'), (newy, newx, queen))) + break + else: + break + newy, newx = newy + dy, newx + dx + return moves + + def _king_moves(self, y: int, x: int, white: bool) -> list: + ownpieces, king = (WHITEPIECES, 'K') if white else (BLACKPIECES, 'k') + + moves = [] + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if 0 <= newy <= 7 and 0 <= newx <= 7 and self.pos[newy][newx] not in ownpieces: + moves.append(((y, x, '.'), (newy, newx, king))) + return moves + + def _castling_moves(self, white: bool) -> list: + shortcastling, longcastling, colorpiece, castlingrow = (self.w_short_castling, self.w_long_castling, COLORWHITE, 7) if white else (self.b_short_castling, self.b_long_castling, COLORBLACK, 0) + + moves = [] + if shortcastling and self.pos[castlingrow][5] == '.' and self.pos[castlingrow][6] == '.': + moves.append(((castlingrow, 4, '.'), (castlingrow, 5, colorpiece['R']), (castlingrow, 6, colorpiece['K']), (castlingrow, 7, '.'))) + if longcastling and self.pos[castlingrow][1] == '.' and self.pos[castlingrow][2] == '.' and self.pos[castlingrow][3] == '.': + moves.append(((castlingrow, 0, '.'), (castlingrow, 2, colorpiece['K']), (castlingrow, 3, colorpiece['R']), (castlingrow, 4, '.'))) + return moves + + def _pawn_moves(self, y: int, x: int, white: bool) -> list: + startingrow, forwardstep, promotionrow = (6, -1, 1) if white else (1, 1, 6) + colorpiece, enemypieces = (COLORWHITE, BLACKPIECES) if white else (COLORBLACK, WHITEPIECES) + + moves = [] + if 0 <= y + forwardstep <= 7 and self.pos[y + forwardstep][x] == '.': + if y == promotionrow: + for i in (colorpiece['Q'], colorpiece['R'], colorpiece['N'], colorpiece['B']): + moves.append(((y, x, '.'), (y + forwardstep, x, i))) + else: + moves.append(((y, x, '.'), (y + forwardstep, x, colorpiece['P']))) + if y == startingrow and self.pos[y + forwardstep * 2][x] == '.': + moves.append(((y, x, '.'), (y + forwardstep * 2, x, colorpiece['P']))) + for dx in (1, -1): + newx = x + dx + if 0 <= y + forwardstep <= 7 and 0 <= newx <= 7 and self.pos[y + forwardstep][newx] in enemypieces: + if y == promotionrow: + for i in (colorpiece['Q'], colorpiece['R'], colorpiece['N'], colorpiece['B']): + moves.append(((y, x, '.'), (y + forwardstep, newx, i))) + else: # taking enemy piece + moves.append(((y, x, '.'), (y + forwardstep, newx, colorpiece['P']))) + if [y + forwardstep, newx] == self.ep_sqr: # en passant + moves.append(((y, x, '.'), (y + forwardstep, newx, colorpiece['P']), (y, newx, '.'))) + return moves + + def all_moves(self, white: bool) -> tuple: + colorpiece = COLORWHITE if white else COLORBLACK + move_generators = {colorpiece['P']: self._pawn_moves, colorpiece['R']: self._rook_moves, colorpiece['N']: self._knight_moves, colorpiece['B']: self._bishop_moves, colorpiece['Q']: self._queen_moves, colorpiece['K']: self._king_moves} + moves = [] + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + if piece in move_generators: + moves.extend(move_generators[piece](y, x, white)) + moves.extend(self._castling_moves(white)) + return tuple(moves) + + def reach(self, white: bool) -> tuple: + reach = (([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], [])) + colorpiece, forwardstep, startingrow, enemypieces = (COLORWHITE, -1, 6, BLACKPIECES) if white else (COLORBLACK, 1, 1, WHITEPIECES) + shortcastling, longcastling, castlingrow = (self.w_short_castling, self.w_long_castling, 7) if white else (self.b_short_castling, self.b_long_castling, 0) + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + + if piece == colorpiece['R']: + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newy <= 7 and 0 <= newx <= 7: + if self.pos[newy][newx] != '.': + reach[newy][newx].append((y, x, piece)) + break + reach[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == colorpiece['N']: + directions = ((1, 2), (1, -2), (2, 1), (2, -1), (-1, 2), (-1, -2), (-2, 1), (-2, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if 0 <= newy <= 7 and 0 <= newx <= 7: + reach[newy][newx].append((y, x, piece)) + + elif piece == colorpiece['B']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] != '.': + reach[newy][newx].append((y, x, piece)) + break + reach[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == colorpiece['Q']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] != '.': + reach[newy][newx].append((y, x, piece)) + break + reach[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == colorpiece['K']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if 0 <= newy <= 7 and 0 <= newx <= 7: + reach[newy][newx].append((y, x, piece)) + + if shortcastling and self.pos[castlingrow][5] == '.' and self.pos[castlingrow][6] == '.': + reach[castlingrow][6].append((y, x, piece)) + if longcastling and self.pos[castlingrow][2] == '.' and self.pos[castlingrow][3] == '.': + reach[castlingrow][2].append((y, x, piece)) + + elif piece == colorpiece['P']: + if self.pos[y + forwardstep][x] == '.': + reach[y + forwardstep][x].append((y, x, piece)) + if y == startingrow and self.pos[y + (forwardstep * 2)][x] == '.': + reach[y + (forwardstep * 2)][x].append((y, x, piece)) + for dx in (1, -1): + newx = x + dx + if 0 <= y + forwardstep <= 7 and 0 <= newx <= 7 and (self.pos[y + forwardstep][newx] in enemypieces or self.ep_sqr == (y + forwardstep, newx)): + reach[y + forwardstep][newx].append((y, x, piece)) + return reach + + def control(self, white: bool) -> tuple: + control = (([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], [])) + colorpiece, colorenemypiece, forwardstep = (COLORWHITE, COLORBLACK, -1) if white else (COLORBLACK, COLORWHITE, 1) + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + + if piece == colorpiece['R']: + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newy <= 7 and 0 <= newx <= 7: + if self.pos[newy][newx] not in {'.', colorpiece['R'], colorpiece['Q']}: + control[newy][newx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == colorpiece['N']: + directions = ((1, 2), (1, -2), (2, 1), (2, -1), (-1, 2), (-1, -2), (-2, 1), (-2, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if 0 <= newy <= 7 and 0 <= newx <= 7: + control[newy][newx].append((y, x, piece)) + + elif piece == colorpiece['B']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] not in {'.', colorpiece['Q']}: + control[newy][newx].append((y, x, piece)) + if self.pos[newy][newx] == colorpiece['P'] and dy == forwardstep: + control[newy + dy][newx + dx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == colorpiece['Q']: + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] not in {'.', colorpiece['R'], colorpiece['Q']}: + control[newy][newx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while 0 <= newx <= 7 and 0 <= newy <= 7: + if self.pos[newy][newx] not in {'.', colorpiece['B'], colorpiece['Q']}: + control[newy][newx].append((y, x, piece)) + if self.pos[newy][newx] == colorpiece['P'] and dy == forwardstep: + control[newy + dy][newx + dx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == colorpiece['K']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if 0 <= newy <= 7 and 0 <= newx <= 7: + control[newy][newx].append((y, x, piece)) + + elif piece == colorpiece['P']: + for dx in (1, -1): + newx = x + dx + if 0 <= y + forwardstep <= 7 and 0 <= newx <= 7: + control[y + forwardstep][newx].append((y, x, piece)) + if self.ep_sqr == (y + forwardstep, newx) and self.pos[y][newx] == colorenemypiece['P']: + control[y][newx].append((y, x, piece)) + return control + + def legal_moves(self, white: bool) -> tuple: + enemycontrol = self.control(False) if white else self.control(True) + colorpiece = COLORWHITE if white else COLORBLACK + shortcastling, longcastling, arookmoved, kingmoved, hrookmoved = ((self.w_short_castling, self.w_long_castling, self.whitearookmoved, self.whitekingmoved, self.whitehrookmoved) + if white else (self.b_short_castling, self.b_long_castling, self.whitearookmoved, self.whitekingmoved, self.whitehrookmoved)) + + moves = [] + for move in self.all_moves(white): + if move == ((7, 4, '.'), (7, 5, colorpiece['R']), (7, 6, colorpiece['K']), (7, 7, '.')) and (enemycontrol[7][5] or enemycontrol[7][4] or kingmoved or hrookmoved or not shortcastling): + continue + elif move == ((7, 0, '.'), (7, 2, colorpiece['K']), (7, 3, colorpiece['R']), (7, 4, '.')) and (enemycontrol[7][3] or enemycontrol[7][4] or kingmoved or arookmoved or not longcastling): + continue + self.do(move) + if any(self.pos[singlemove[0]][singlemove[1]] == colorpiece['K'] for enemymove in self.all_moves(not white) for singlemove in enemymove): + self.undo(); continue + self.undo(); moves.append(move) + return tuple(moves) + + def _fifty_move_rule(self) -> None: + if self.fifty_move_ctr == 100: + userinput = input('\n50 moves have been played without capture or pawnpush. Do you want to force a draw? [Y/n] > ') + if userinput in {'', 'yes', 'y', 'Y'}: + self.render(self.player_color) + print('\nDraw due to fifty move rule!\n'); raise SystemExit + + def _move_rep(self) -> None: + if self.pos_hist.count(self.pos_hist[-1]) == 3: + self.render(self.player_color) + print('\nDRAW DUE TO MOVEREPITITION!\n'); raise SystemExit + + def check_pos(self) -> None: + for white in {True, False}: + if not len(self.legal_moves(not white)): + self.render(self.player_color) + if self._is_checkmate(white): + print('\nWHITE WON BY CHECKMATE!\n') if white else print('\nBLACK WON BY CHECKMATE!\n'); raise SystemExit + print('\nSTALEMATE!\n'); raise SystemExit + self._fifty_move_rule(); self._move_rep() + + def do(self, move: move_struct) -> None: + save = [] + for singlemove in move: + save.append((self.pos[singlemove[0]][singlemove[1]], singlemove[0], singlemove[1], singlemove[2])) + self.pos[singlemove[0]][singlemove[1]] = singlemove[2] + self.hist.append(tuple(save)) + + def undo(self) -> None: + lastmove = self.hist.pop() + for singlemove in lastmove: + self.pos[singlemove[1]][singlemove[2]] = singlemove[0] + + def make_move(self, move: move_struct, white: bool) -> None: + self.asked_draw, self.ep_sqr = False, None + colorpiece, forwardstep = (COLORWHITE, -1) if white else (COLORBLACK, 1) + + if move[1][2] == colorpiece['P'] and move[1][0] == move[0][0] + (2 * forwardstep): # EP square + self.ep_sqr = (move[0][0] + forwardstep, move[0][1]) + + save = [] + pawn_move, capture = False, 0 + for singlemove in move: + save.append((self.pos[singlemove[0]][singlemove[1]], singlemove[0], singlemove[1], singlemove[2])) + if singlemove[2] == colorpiece['P']: # checks if pawnmove to reset 50-move-rule + pawn_move = True + capture = capture + 1 if singlemove[2] == '.' else capture - 1 # capture if capture not 0 + + if singlemove[0:2] == (7, 0): + self.w_long_castling = False + elif singlemove[0:2] == (7, 4): + self.w_short_castling, self.w_long_castling = False, False + elif singlemove[0:2] == (7, 7): + self.w_short_castling = False + elif singlemove[0:2] == (0, 0): + self.b_long_castling = False + elif singlemove[0:2] == (0, 4): + self.b_short_castling, self.b_long_castling = False, False + elif singlemove[0:2] == (0, 7): + self.b_short_castling = False + + self.pos[singlemove[0]][singlemove[1]] = singlemove[2] + + self.fifty_move_ctr = 0 if pawn_move or capture else self.fifty_move_ctr + 1 + self.half_move_ctr += 1 + self.hist.append(tuple(save)) + self.pos_hist.append(deepcopy(self.pos)) + self.check_pos() + + def _is_check(self, white: bool, move: move_struct = None) -> bool: + colorenemypiece = COLORBLACK if white else COLORWHITE + if not move: + if any(self.pos[singlemove[0]][singlemove[1]] == colorenemypiece['K'] for move in self.all_moves(white) for singlemove in move): + return True + return False + self.do(move) + if any(self.pos[singlemove[0]][singlemove[1]] == colorenemypiece['K'] for move in self.all_moves(white) for singlemove in move): + self.undo(); return True + self.undo(); return False + + def _is_checkmate(self, white: bool, move: move_struct = None) -> bool: + colorenemypiece = COLORBLACK if white else COLORWHITE + if not move: + if not self.legal_moves(not white): + if not any(self.pos[singlemove[0]][singlemove[1]] == colorenemypiece['K'] for move in self.all_moves(white) for singlemove in move): + return False + return True + self.do(move) + if not self.legal_moves(not white): + if not any(self.pos[singlemove[0]][singlemove[1]] == colorenemypiece['K'] for move in self.all_moves(white) for singlemove in move): + self.undo(); return False + self.undo(); return True + + def _is_capture(self, move: move_struct) -> bool: + capture = 0 + for singlemove in move: + capture = capture + 1 if singlemove[2] == '.' else capture - 1 + if not capture: + return True + return False + + def set_fen(self, fen_str: str) -> bool | None: + try: + board_str, color_str, castling_str, ep_str, fifty_move_str, full_move_str = fen_str.strip().split() + except ValueError: + return False + + tmp_pos = [] + board_lst = board_str.split('/') + if len(board_lst) != 8: + return False + for row_str in board_lst: + tmp_row = [] + for char in row_str: + if char == '.' or char in WHITEPIECES or char in BLACKPIECES: + tmp_row.append(char) + elif char in {'1', '2', '3', '4', '5', '6', '7', '8'}: + tmp_row.extend(['.'] * int(char)) + else: + return False + tmp_pos.append(tmp_row) + if len(tmp_pos) != 8: + return False + self.pos = tuple(tmp_pos) + + self.white = color_str == 'w' + if not self.white and color_str != 'b': + return False + + if castling_str != '-' and set(castling_str) <= {'K', 'Q', 'k', 'q'} or sorted(castling_str) != list(castling_str): + return False + self.w_short_castling = 'K' in castling_str + self.w_long_castling = 'Q' in castling_str + self.b_short_castling = 'k' in castling_str + self.b_long_castling = 'q' in castling_str + + if ep_str == '-': + self.ep_sqr = None + elif len(ep_str) == 2 and ep_str[0] in ALPH_TO_INT and ep_str[1] in NUM_TO_INT and NUM_TO_INT[ep_str[1]] in {2, 5}: + self.ep_sqr = (NUM_TO_INT[ep_str[1]], ALPH_TO_INT[ep_str[0]]) + else: + return False + + if fifty_move_str.isdigit(): + self.fifty_move_ctr = int(fifty_move_str) + + if full_move_str.isdigit(): + self.half_move_ctr = int(full_move_str) * 2 + (1 if color_str == 'b' else 0) + + self.check_pos(); self.start_game(self.white) + + def get_fen(self, white: bool) -> str: + + row_strs = [] + for row in self.pos: + row_str = '' + space_ctr = 0 + for piece in row: + if piece == '.': + space_ctr += 1 + elif piece in WHITEPIECES or piece in BLACKPIECES: + if space_ctr: + row_str += str(space_ctr) + row_str += piece + space_ctr = 0 + if space_ctr: + row_str += str(space_ctr) + row_strs.append(row_str) + board_str = '/'.join(row_strs) + + color_str = 'w' if white else 'b' + + castling_str = ('K' if self.w_short_castling else '') + ('Q' if self.w_long_castling else '') + ('k' if self.b_short_castling else '') + ('q' if self.b_long_castling else '') + castling_str = '-' if not castling_str else castling_str + + ep_str = '-' if self.ep_sqr == None else INT_TO_ALPH[self.ep_sqr[1]] + INT_TO_NUM[self.ep_sqr[0]] + + fifty_move_str = str(self.fifty_move_ctr) + + full_move_str = str(self.half_move_ctr // 2) + + fen_str = ' '.join([board_str, color_str, castling_str, ep_str, fifty_move_str, full_move_str]) + return fen_str + + def _game_controls(self, userinput: tuple, white: bool) -> bool | None: + if userinput in {'/m', '/menu', '?', 'h', 'help', '/h', '/help', '-h', '-help', '--help'}: + print((''' +/m, /menu > gamecontrols, opens this menu +/q, /quit > quit game +/s, /save > save game to FEN +/t, /turnboard > turn board position +/p, /printboard > reprint board +/d, /draw > offer draw +/r, /resign > resign game +/f, /forcedraw > force draw if 50 move rule applies +/i, /import > import game from FEN +/m, /manual > how to play''')); return True + + elif userinput in {'/q', '/quit'}: + print(f'\nFEN-notation > {self.get_fen(white)}\n'); raise SystemExit + + elif userinput in {'/s', '/save'}: + print('\nFEN-notation >', self.get_fen(white)); return True + + elif userinput in {'/t', '/turnboard'}: + self.board_turned = not self.board_turned + self.render(self.player_color); return True + + elif userinput in {'/p', '/printboard'}: + self.render(self.player_color); return True + + elif userinput in {'/d', '/draw'}: + if not self.asked_draw: + self.asked_draw = True + if (white and self.eval_pos() < 0) or (not white and self.eval_pos() > 0): + print('\nDRAW\n'); raise SystemExit + elif self.eval_pos() == 0: + if choices([True, False], weights = [1, 5], k = 1)[0]: + print('\nDRAW\n'); raise SystemExit + print('\nNO DRAW'); return True + print('\nNO DRAW'); return True + print('\nAlready asked for draw this move'); return True + + elif userinput in {'/r', '/resign'}: + print('\nBLACK WON BY RESIGNATION\n') if white else print('\nWHITE WON BY RESIGNATION\n'); raise SystemExit + + elif userinput in {'/f', '/forcedraw'}: + if self.fifty_move_ctr > 99: + print('\nWhite forced DRAW\n') if white else print('\nBlack forced DRAW\n'); raise SystemExit + print('\n50-move-rule does not apply'); return True + + elif userinput in {'/i', '/import'}: + if not self.set_fen(input('\nPaste FEN-position here > ')): + print('!INVALID FEN!'); return True + return False + + def find_piece(self, item: str) -> tuple: + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + if piece == item: + return (y, x) + + def parse(self, userinput: str, white: bool) -> tuple: + colorpiece = COLORWHITE if white else COLORBLACK + shortcastling, longcastling, castlingrow = (self.w_short_castling, self.w_long_castling, 7) if white else (self.b_short_castling, self.b_long_castling, 0) + + if self._game_controls(userinput, white): + userinput = input('\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + + userinput = userinput.strip() + check, checkmate, capture, promotion = False, False, False, '' + + if userinput: + for postfix, check_code in chessconf.POSTFIX_MAP.items(): + if userinput.endswith(postfix): + check, checkmate = (False, True) if check_code else (True, False) + userinput = userinput[:-len(postfix)]; break + + if userinput: + if userinput in chessconf.CASTLING_MAP: + if chessconf.CASTLING_MAP[userinput]: + usermove = ((castlingrow, 4, '.'), (castlingrow, 5, 'R'), (castlingrow, 6, 'K'), (castlingrow, 7, '.')) + else: + usermove = ((castlingrow, 0, '.'), (castlingrow, 2, 'K'), (castlingrow, 3, 'R'), (castlingrow, 4, '.')) + if (parsed := self._validate(usermove, white, check, checkmate, capture, promotion)): + return parsed + + promotion = None + + for postfix, promotion_code in chessconf.PROMOTION_MAP.items(): + if userinput.endswith(postfix): + promotion, userinput = colorpiece[promotion_code], userinput[:-len(postfix)]; break + + if len(userinput) >= 2 and userinput[-2] in ALPH_TO_INT and userinput[-1] in NUM_TO_INT: + target, userinput = (NUM_TO_INT[userinput[-1]], ALPH_TO_INT[userinput[-2]]), userinput[:-2] + + y, x, attackingpiece = None, None, colorpiece['P'] + + if userinput: + + abbr_piece = False + for i in WHITEPIECES: + if userinput.startswith(i): + attackingpiece, abbr_piece, userinput = colorpiece[i], True, userinput[1:]; break + + if not abbr_piece: + for prefix, piece_code in chessconf.PIECE_MAP.items(): + if userinput.startswith(prefix): + attackingpiece, userinput = colorpiece[piece_code], userinput[len(prefix):]; break + + if userinput: + for postfix, action_code in chessconf.ACTION_MAP.items(): + if userinput.endswith(postfix): + capture, userinput = True if action_code == 'x' else False, userinput[:-len(postfix)]; break + + if userinput: + att_coords = False + if userinput[-1] in NUM_TO_INT: + y, att_coords, userinput = NUM_TO_INT[userinput[-1]], True, userinput[:-1] + + if userinput: + if userinput[-1] in ALPH_TO_INT: + x, att_coords, userinput = ALPH_TO_INT[userinput[-1]], True, userinput[:-1] + if y: + attackingpiece = self.pos[y][x] + + if att_coords: + if userinput in {' ', ' on '}: + userinput = '' + + if not userinput: + matchingattackers = [attacker for attacker in self.reach(white)[target[0]][target[1]] if attacker[2] == attackingpiece] + if y != None and x != None: + attackers = [attacker for attacker in matchingattackers if attacker[1] == x] + elif y != None: + attackers = [attacker for attacker in matchingattackers if attacker[0] == y] + elif x != None: + attackers = [attacker for attacker in matchingattackers if attacker[1] == x] + else: + attackers = matchingattackers + if len(attackers) == 1: + attacker = attackers[0] + if promotion: + if attackingpiece == colorpiece['P']: + usermove = ((attacker[0], attacker[1], '.'), (target[0], target[1], promotion)) + check = self._validate(usermove, white, check, checkmate, capture, promotion) + if check: + return check + else: + if attacker[2] == colorpiece['K'] and shortcastling and target == (castlingrow, 6): + usermove = ((castlingrow, 4, '.'), (castlingrow, 5, colorpiece['R']), (castlingrow, 6, colorpiece['K']), (castlingrow, 7, '.')) + elif attacker[2] == colorpiece['K'] and longcastling and target == (castlingrow, 2): + usermove = ((castlingrow, 0, '.'), (castlingrow, 2, colorpiece['K']), (castlingrow, 3, colorpiece['R']), (castlingrow, 4, '.')) + elif attacker[2] == colorpiece['P'] and self.ep_sqr == (target[0], target[1]): + usermove = ((attacker[0], attacker[1], '.'), (target[0], target[1], attacker[2]), (attacker[0], target[1], '.')) + else: + usermove = ((attacker[0], attacker[1], '.'), (target[0], target[1], attacker[2])) + if (validation := self._validate(usermove, white, check, checkmate, capture, promotion)): + return validation + elif len(attackers) > 1: + userinput = input('\nPlease specify which piece to move.\n\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + + print(('\n!INVALID INPUT! Read the manual for more information.')) + return self.parse(input('\nEnter your move in algebraic notation > '), white) + + def _validate(self, usermove: move_struct, white: bool, check: bool = False, checkmate: bool = False, capture: bool = False, promotion: str = '') -> tuple | None: + enemycontrol = self.control(not white) + colorpiece = COLORWHITE if white else COLORBLACK + shortcastling, longcastling = (((7, 4, '.'), (7, 5, 'R'), (7, 6, 'K'), (7, 7, '.')), ((7, 0, '.'), (7, 2, 'K'), (7, 3, 'R'), (7, 4, '.'))) if white else (((0, 4, '.'), (0, 5, 'r'), (0, 6, 'k'), (0, 7, '.')), ((0, 0, '.'), (0, 2, 'k'), (0, 3, 'r'), (0, 4, '.'))) + + if usermove in self.legal_moves(white): + notcheck, notcheckmate, notcapture = check and not self._is_check(white, usermove), checkmate and not self._is_checkmate(white, usermove), capture and not self._is_capture(usermove) + if notcheck or notcheckmate or notcapture: + if notcheck and notcapture: + userinput = input('\nMove is neither a check nor a capture. Do you want to proceed? [Y/n] > ') + elif notcheckmate and notcapture: + userinput = input('\nMove is neither a checkmate nor a capture. Do you want to proceed? [Y/n] > ') + elif notcheck: + userinput = input('\nMove is not a check. Do you want to proceed? [Y/n] > ') + elif notcheckmate: + userinput = input('\nMove is not a checkmate. Do you want to proceed? [Y/n] > ') + elif notcapture: + userinput = input('\nMove is not a capture. Do you want to proceed? [Y/n] > ') + if userinput in {'y', 'yes', '1', '', 'Y'}: + return usermove + userinput = input('\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + return usermove + + if usermove in self.all_moves(white): + if any(singlemove[2] == colorpiece['K'] for singlemove in usermove): + if usermove in (shortcastling, longcastling) and enemycontrol[usermove[0][0]][4]: + print(enemycontrol[usermove[0][0]][4]) + print('\nKing cannot castle if in check.') + elif (usermove == shortcastling and not enemycontrol[usermove[0][0]][6]) or (usermove == longcastling and not enemycontrol[usermove[0][0]][2]): + print('\nKing cannot castle through enemy controlled square.') + else: + print('\nSquare controlled by enemy.') + else: + y, x = self.find_piece(colorpiece['K']) + if enemycontrol[y][x]: + print('\nKing is in check.') + else: + print('\nPiece is pinned to king.') + userinput = input('\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + + def eval_pos(self) -> float: + value = 0 + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + if piece != '.': + value += chessconf.PIECEVALUE[piece] + chessconf.POSTABLES[piece][y][x] + return value + + def minimax(self, depth: int, ismax: bool, alpha: float | None = -float('inf'), beta: float | None = float('inf')) -> float: + if depth == 0: + return self.eval_pos() + + if ismax: + bestvalue = float('-inf') + for move in self.all_moves(True): + self.do(move) + minimaxvalue = self.minimax(depth - 1, not ismax, alpha, beta) + self.undo() + if minimaxvalue > bestvalue: + bestvalue = minimaxvalue + alpha = max(alpha, bestvalue) + if alpha >= beta: + break + return bestvalue + else: + bestvalue = float('inf') + for move in self.all_moves(False): + self.do(move) + minimaxvalue = self.minimax(depth - 1, not ismax, alpha, beta) + self.undo() + if minimaxvalue < bestvalue: + bestvalue = minimaxvalue + beta = min(beta, bestvalue) + if alpha >= beta: + break + return bestvalue + + def best_moves(self, white: bool, depth: int | None = chessconf.minimax_depth) -> tuple: + if white: + bestvalue, bestmovelist = float('-inf'), [] + for move in self.legal_moves(True): + self.do(move) + minimaxvalue = self.minimax(depth - 1, not white) + self.undo() + if minimaxvalue == bestvalue: + bestmovelist.append(move) + elif minimaxvalue > bestvalue: + bestvalue, bestmovelist = minimaxvalue, [move] + legalbestmoves = [move for move in bestmovelist if move in self.legal_moves(True)] + return tuple(legalbestmoves) + else: + bestvalue, bestmovelist = float('inf'), [] + for move in self.legal_moves(False): + self.do(move) + minimaxvalue = self.minimax(depth - 1, not white) + self.undo() + if minimaxvalue == bestvalue: + bestmovelist.append(move) + elif minimaxvalue < bestvalue: + bestvalue, bestmovelist = minimaxvalue, [move] + legalbestmoves = [move for move in bestmovelist if move in self.legal_moves(False)] + return tuple(legalbestmoves) + + def stockfish_move(self, white: bool, depth: int | None = chessconf.stockfish_depth) -> str | None: + stockfish = Popen(chessconf.STOCKFISH_PATH, stdin = PIPE, stdout = PIPE, text = True) + stockfish.stdin.write(f'position fen {self.get_fen(white)}\ngo depth {depth}\n'); stockfish.stdin.flush() + while True: + output = stockfish.stdout.readline().strip() + if 'bestmove' in output: + move = output.split(' ')[1]; stockfish.stdin.close(); stockfish.terminate() + return None if move == '(none)' else move + + def start_game(self, white: bool | None = None) -> None: + while True: + userinput = input('\nDo you want to play against stockfish or own minimax algorithm? [M/s] > ') + if userinput in {'', 'm', 'minimax', '1', 'M', 'Minimax', 'MINIMAX'}: + while True: + userinput = input('\nChoose a difficulty level from 1 (easy) to 5 (hard) > ') + if userinput.isdigit() and int(userinput) in range(1, 6): + def enemymove(): + return choice(self.best_moves(not self.player_color, int(userinput))) + if not self._game_controls(userinput, self.player_color): + def enemymove(): + return choice(self.best_moves(not self.player_color)) + break + elif userinput in {'s', 'stockfish', '2', 'S', 'Stockfish', 'STOCKFISH'}: + while True: + userinput = input('\nChoose a difficulty level from 1 (easy) to 10 (hard) > ') + if userinput.isdigit() and int(userinput) in range(1, 11): + def enemymove(): + return self.parse(self.stockfish_move(not self.player_color, int(userinput)), not self.player_color) + if not self._game_controls(userinput, self.player_color): + def enemymove(): + return self.parse(self.stockfish_move(not self.player_color), not self.player_color) + break + if not self._game_controls(userinput, white): + break + if white == None: + while True: + colorchoice = input('\nWould you like to play with white or black? Press ENTER for random color. [w/b] > ') + if colorchoice in {'', 'r', 'random', 'R', 'Random', 'RANDOM'}: + randchoice = choice([True, False]) + self.player_color, self.white = randchoice, randchoice + elif colorchoice in {'w', 'white', '1', 'W', 'White', 'WHITE'}: + self.player_color, self.white = True, True + elif colorchoice in {'b', 'black', '2', 'B', 'Black', 'BLACK'}: + self.player_color, self.white = False, False + if not self._game_controls(colorchoice, white): + break + + if self.white: + self.render(self.player_color) + userinput = input('\nEnter your move in algebraic notation > ') + usermove = self.parse(userinput, self.player_color) + self.make_move(usermove, self.player_color) + + while True: + self.make_move(enemymove(), not self.player_color) + self.render(self.player_color) + userinput = input('\nEnter your move in algebraic notation > ') + usermove = self.parse(userinput, self.player_color) + self.make_move(usermove, self.player_color) + +if __name__ == '__main__': + board: Board = Board() + render_hex(invert(board.bb())) + render_hex(board.bb()) + board.start_game()
\ No newline at end of file diff --git a/bitmasks.py b/bitmasks.py new file mode 100644 index 0000000..34684ab --- /dev/null +++ b/bitmasks.py @@ -0,0 +1,246 @@ +SQR_MASK = ( + 0x8000_0000_0000_0000, 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, 0x0100_0000_0000_0000, + 0x0080_0000_0000_0000, 0x0040_0000_0000_0000, 0x0020_0000_0000_0000, 0x0010_0000_0000_0000, 0x0008_0000_0000_0000, 0x0004_0000_0000_0000, 0x0002_0000_0000_0000, 0x0001_0000_0000_0000, + 0x0000_8000_0000_0000, 0x0000_4000_0000_0000, 0x0000_2000_0000_0000, 0x0000_1000_0000_0000, 0x0000_0800_0000_0000, 0x0000_0400_0000_0000, 0x0000_0200_0000_0000, 0x0000_0100_0000_0000, + 0x0000_0080_0000_0000, 0x0000_0040_0000_0000, 0x0000_0020_0000_0000, 0x0000_0010_0000_0000, 0x0000_0008_0000_0000, 0x0000_0004_0000_0000, 0x0000_0002_0000_0000, 0x0000_0001_0000_0000, + 0x0000_0000_8000_0000, 0x0000_0000_4000_0000, 0x0000_0000_2000_0000, 0x0000_0000_1000_0000, 0x0000_0000_0800_0000, 0x0000_0000_0400_0000, 0x0000_0000_0200_0000, 0x0000_0000_0100_0000, + 0x0000_0000_0080_0000, 0x0000_0000_0040_0000, 0x0000_0000_0020_0000, 0x0000_0000_0010_0000, 0x0000_0000_0008_0000, 0x0000_0000_0004_0000, 0x0000_0000_0002_0000, 0x0000_0000_0001_0000, + 0x0000_0000_0000_8000, 0x0000_0000_0000_4000, 0x0000_0000_0000_2000, 0x0000_0000_0000_1000, 0x0000_0000_0000_0800, 0x0000_0000_0000_0400, 0x0000_0000_0000_0200, 0x0000_0000_0000_0100, + 0x0000_0000_0000_0080, 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, 0x0000_0000_0000_0001, + ) +DIA_MASK = ( + 0x0000_0000_0000_0000, 0x0080_0000_0000_0000, 0x0040_8000_0000_0000, 0x0020_4080_0000_0000, 0x0010_2040_8000_0000, 0x0008_1020_4080_0000, 0x0004_0810_2040_8000, 0x0002_0408_1020_4080, + 0x4000_0000_0000_0000, 0x2000_8000_0000_0000, 0x1000_4080_0000_0000, 0x0800_2040_8000_0000, 0x0400_1020_4080_0000, 0x0200_0810_2040_8000, 0x0100_0408_1020_4080, 0x0000_0204_0810_2040, + 0x2040_0000_0000_0000, 0x1020_0080_0000_0000, 0x0810_0040_8000_0000, 0x0408_0020_4080_0000, 0x0204_0010_2040_8000, 0x0102_0008_1020_4080, 0x0001_0004_0810_2040, 0x0000_0002_0408_1020, + 0x1020_4000_0000_0000, 0x0810_2000_8000_0000, 0x0408_1000_4080_0000, 0x0204_0800_2040_8000, 0x0102_0400_1020_4080, 0x0001_0200_0810_2040, 0x0000_0100_0408_1020, 0x0000_0000_0204_0810, + 0x0810_2040_0000_0000, 0x0408_1020_0080_0000, 0x0204_0810_0040_8000, 0x0102_0408_0020_4080, 0x0001_0204_0010_2040, 0x0000_0102_0008_1020, 0x0000_0001_0004_0810, 0x0000_0000_0002_0408, + 0x0408_1020_4000_0000, 0x0204_0810_2000_8000, 0x0102_0408_1000_4080, 0x0001_0204_0800_2040, 0x0000_0102_0400_1020, 0x0000_0001_0200_0810, 0x0000_0000_0100_0408, 0x0000_0000_0000_0204, + 0x0204_0810_2040_0000, 0x0102_0408_1020_0080, 0x0001_0204_0810_0040, 0x0000_0102_0408_0020, 0x0000_0001_0204_0010, 0x0000_0000_0102_0008, 0x0000_0000_0001_0004, 0x0000_0000_0000_0002, + 0x0102_0408_1020_4000, 0x0001_0204_0810_2000, 0x0000_0102_0408_1000, 0x0000_0001_0204_0800, 0x0000_0000_0102_0400, 0x0000_0000_0001_0200, 0x0000_0000_0000_0100, 0x0000_0000_0000_0000, + ) +ANTIDIA_MASK = ( + 0x0040_2010_0804_0201, 0x0020_1008_0402_0100, 0x0010_0804_0201_0000, 0x0008_0402_0100_0000, 0x0004_0201_0000_0000, 0x0002_0100_0000_0000, 0x0001_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_4020_1008_0402, 0x8000_2010_0804_0201, 0x4000_1008_0402_0100, 0x2000_0804_0201_0000, 0x1000_0402_0100_0000, 0x0800_0201_0000_0000, 0x0400_0100_0000_0000, 0x0200_0000_0000_0000, + 0x0000_0040_2010_0804, 0x0080_0020_1008_0402, 0x8040_0010_0804_0201, 0x4020_0008_0402_0100, 0x2010_0004_0201_0000, 0x1008_0002_0100_0000, 0x0804_0001_0000_0000, 0x0402_0000_0000_0000, + 0x0000_0000_4020_1008, 0x0000_8000_2010_0804, 0x0080_4000_1008_0402, 0x8040_2000_0804_0201, 0x4020_1000_0402_0100, 0x2010_0800_0201_0000, 0x1008_0400_0100_0000, 0x0804_0200_0000_0000, + 0x0000_0000_0040_2010, 0x0000_0080_0020_1008, 0x0000_8040_0010_0804, 0x0080_4020_0008_0402, 0x8040_2010_0004_0201, 0x4020_1008_0002_0100, 0x2010_0804_0001_0000, 0x1008_0402_0000_0000, + 0x0000_0000_0000_4020, 0x0000_0000_8000_2010, 0x0000_0080_4000_1008, 0x0000_8040_2000_0804, 0x0080_4020_1000_0402, 0x8040_2010_0800_0201, 0x4020_1008_0400_0100, 0x2010_0804_0200_0000, + 0x0000_0000_0000_0040, 0x0000_0000_0080_0020, 0x0000_0000_8040_0010, 0x0000_0080_4020_0008, 0x0000_8040_2010_0004, 0x0080_4020_1008_0002, 0x8040_2010_0804_0001, 0x4020_1008_0402_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_8000, 0x0000_0000_0080_4000, 0x0000_0000_8040_2000, 0x0000_0080_4020_1000, 0x0000_8040_2010_0800, 0x0080_4020_1008_0400, 0x8040_2010_0804_0200, + ) +HOR_MASK = ( + 0x7F00_0000_0000_0000, 0xBF00_0000_0000_0000, 0xDF00_0000_0000_0000, 0xEF00_0000_0000_0000, 0xF700_0000_0000_0000, 0xFB00_0000_0000_0000, 0xFD00_0000_0000_0000, 0xFE00_0000_0000_0000, + 0x007F_0000_0000_0000, 0x00BF_0000_0000_0000, 0x00DF_0000_0000_0000, 0x00EF_0000_0000_0000, 0x00F7_0000_0000_0000, 0x00FB_0000_0000_0000, 0x00FD_0000_0000_0000, 0x00FE_0000_0000_0000, + 0x0000_7F00_0000_0000, 0x0000_BF00_0000_0000, 0x0000_DF00_0000_0000, 0x0000_EF00_0000_0000, 0x0000_F700_0000_0000, 0x0000_FB00_0000_0000, 0x0000_FD00_0000_0000, 0x0000_FE00_0000_0000, + 0x0000_007F_0000_0000, 0x0000_00BF_0000_0000, 0x0000_00DF_0000_0000, 0x0000_00EF_0000_0000, 0x0000_00F7_0000_0000, 0x0000_00FB_0000_0000, 0x0000_00FD_0000_0000, 0x0000_00FE_0000_0000, + 0x0000_0000_7F00_0000, 0x0000_0000_BF00_0000, 0x0000_0000_DF00_0000, 0x0000_0000_EF00_0000, 0x0000_0000_F700_0000, 0x0000_0000_FB00_0000, 0x0000_0000_FD00_0000, 0x0000_0000_FE00_0000, + 0x0000_0000_007F_0000, 0x0000_0000_00BF_0000, 0x0000_0000_00DF_0000, 0x0000_0000_00EF_0000, 0x0000_0000_00F7_0000, 0x0000_0000_00FB_0000, 0x0000_0000_00FD_0000, 0x0000_0000_00FE_0000, + 0x0000_0000_0000_7F00, 0x0000_0000_0000_BF00, 0x0000_0000_0000_DF00, 0x0000_0000_0000_EF00, 0x0000_0000_0000_F700, 0x0000_0000_0000_FB00, 0x0000_0000_0000_FD00, 0x0000_0000_0000_FE00, + 0x0000_0000_0000_007F, 0x0000_0000_0000_00BF, 0x0000_0000_0000_00DF, 0x0000_0000_0000_00EF, 0x0000_0000_0000_00F7, 0x0000_0000_0000_00FB, 0x0000_0000_0000_00FD, 0x0000_0000_0000_00FE, + ) +VER_MASK = ( + 0x0080_8080_8080_8080, 0x0040_4040_4040_4040, 0x0020_2020_2020_2020, 0x0010_1010_1010_1010, 0x0008_0808_0808_0808, 0x0004_0404_0404_0404, 0x0002_0202_0202_0202, 0x0001_0101_0101_0101, + 0x8000_8080_8080_8080, 0x4000_4040_4040_4040, 0x2000_2020_2020_2020, 0x1000_1010_1010_1010, 0x0800_0808_0808_0808, 0x0400_0404_0404_0404, 0x0200_0202_0202_0202, 0x0100_0101_0101_0101, + 0x8080_0080_8080_8080, 0x4040_0040_4040_4040, 0x2020_0020_2020_2020, 0x1010_0010_1010_1010, 0x0808_0008_0808_0808, 0x0404_0004_0404_0404, 0x0202_0002_0202_0202, 0x0101_0001_0101_0101, + 0x8080_8000_8080_8080, 0x4040_4000_4040_4040, 0x2020_2000_2020_2020, 0x1010_1000_1010_1010, 0x0808_0800_0808_0808, 0x0404_0400_0404_0404, 0x0202_0200_0202_0202, 0x0101_0100_0101_0101, + 0x8080_8080_0080_8080, 0x4040_4040_0040_4040, 0x2020_2020_0020_2020, 0x1010_1010_0010_1010, 0x0808_0808_0008_0808, 0x0404_0404_0004_0404, 0x0202_0202_0002_0202, 0x0101_0101_0001_0101, + 0x8080_8080_8000_8080, 0x4040_4040_4000_4040, 0x2020_2020_2000_2020, 0x1010_1010_1000_1010, 0x0808_0808_0800_0808, 0x0404_0404_0400_0404, 0x0202_0202_0200_0202, 0x0101_0101_0100_0101, + 0x8080_8080_8080_0080, 0x4040_4040_4040_0040, 0x2020_2020_2020_0020, 0x1010_1010_1010_0010, 0x0808_0808_0808_0008, 0x0404_0404_0404_0004, 0x0202_0202_0202_0002, 0x0101_0101_0101_0001, + 0x8080_8080_8080_8000, 0x4040_4040_4040_4000, 0x2020_2020_2020_2000, 0x1010_1010_1010_1000, 0x0808_0808_0808_0800, 0x0404_0404_0404_0400, 0x0202_0202_0202_0200, 0x0101_0101_0101_0100, + ) +RIGHT_MASK = ( + 0x7F00_0000_0000_0000, 0x3F00_0000_0000_0000, 0x1F00_0000_0000_0000, 0x0F00_0000_0000_0000, 0x0700_0000_0000_0000, 0x0300_0000_0000_0000, 0x0100_0000_0000_0000, 0x0000_0000_0000_0000, + 0x007F_0000_0000_0000, 0x003F_0000_0000_0000, 0x001F_0000_0000_0000, 0x000F_0000_0000_0000, 0x0007_0000_0000_0000, 0x0003_0000_0000_0000, 0x0001_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_7F00_0000_0000, 0x0000_3F00_0000_0000, 0x0000_1F00_0000_0000, 0x0000_0F00_0000_0000, 0x0000_0700_0000_0000, 0x0000_0300_0000_0000, 0x0000_0100_0000_0000, 0x0000_0000_0000_0000, + 0x0000_007F_0000_0000, 0x0000_003F_0000_0000, 0x0000_001F_0000_0000, 0x0000_000F_0000_0000, 0x0000_0007_0000_0000, 0x0000_0003_0000_0000, 0x0000_0001_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_7F00_0000, 0x0000_0000_3F00_0000, 0x0000_0000_1F00_0000, 0x0000_0000_0F00_0000, 0x0000_0000_0700_0000, 0x0000_0000_0300_0000, 0x0000_0000_0100_0000, 0x0000_0000_0000_0000, + 0x0000_0000_007F_0000, 0x0000_0000_003F_0000, 0x0000_0000_001F_0000, 0x0000_0000_000F_0000, 0x0000_0000_0007_0000, 0x0000_0000_0003_0000, 0x0000_0000_0001_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_7F00, 0x0000_0000_0000_3F00, 0x0000_0000_0000_1F00, 0x0000_0000_0000_0F00, 0x0000_0000_0000_0700, 0x0000_0000_0000_0300, 0x0000_0000_0000_0100, 0x0000_0000_0000_0000, + 0x0000_0000_0000_007F, 0x0000_0000_0000_003F, 0x0000_0000_0000_001F, 0x0000_0000_0000_000F, 0x0000_0000_0000_0007, 0x0000_0000_0000_0003, 0x0000_0000_0000_0001, 0x0000_0000_0000_0000, + ) +LEFT_MASK = ( + 0x0000_0000_0000_0000, 0x8000_0000_0000_0000, 0xC000_0000_0000_0000, 0xE000_0000_0000_0000, 0xF000_0000_0000_0000, 0xF800_0000_0000_0000, 0xFC00_0000_0000_0000, 0xFE00_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0080_0000_0000_0000, 0x00C0_0000_0000_0000, 0x00E0_0000_0000_0000, 0x00F0_0000_0000_0000, 0x00F8_0000_0000_0000, 0x00FC_0000_0000_0000, 0x00FE_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_8000_0000_0000, 0x0000_C000_0000_0000, 0x0000_E000_0000_0000, 0x0000_F000_0000_0000, 0x0000_F800_0000_0000, 0x0000_FC00_0000_0000, 0x0000_FE00_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0080_0000_0000, 0x0000_00C0_0000_0000, 0x0000_00E0_0000_0000, 0x0000_00F0_0000_0000, 0x0000_00F8_0000_0000, 0x0000_00FC_0000_0000, 0x0000_00FE_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_8000_0000, 0x0000_0000_C000_0000, 0x0000_0000_E000_0000, 0x0000_0000_F000_0000, 0x0000_0000_F800_0000, 0x0000_0000_FC00_0000, 0x0000_0000_FE00_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0080_0000, 0x0000_0000_00C0_0000, 0x0000_0000_00E0_0000, 0x0000_0000_00F0_0000, 0x0000_0000_00F8_0000, 0x0000_0000_00FC_0000, 0x0000_0000_00FE_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_8000, 0x0000_0000_0000_C000, 0x0000_0000_0000_E000, 0x0000_0000_0000_F000, 0x0000_0000_0000_F800, 0x0000_0000_0000_FC00, 0x0000_0000_0000_FE00, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0080, 0x0000_0000_0000_00C0, 0x0000_0000_0000_00E0, 0x0000_0000_0000_00F0, 0x0000_0000_0000_00F8, 0x0000_0000_0000_00FC, 0x0000_0000_0000_00FE, + ) +UP_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x8000_0000_0000_0000, 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, 0x0100_0000_0000_0000, + 0x8080_0000_0000_0000, 0x4040_0000_0000_0000, 0x2020_0000_0000_0000, 0x1010_0000_0000_0000, 0x0808_0000_0000_0000, 0x0404_0000_0000_0000, 0x0202_0000_0000_0000, 0x0101_0000_0000_0000, + 0x8080_8000_0000_0000, 0x4040_4000_0000_0000, 0x2020_2000_0000_0000, 0x1010_1000_0000_0000, 0x0808_0800_0000_0000, 0x0404_0400_0000_0000, 0x0202_0200_0000_0000, 0x0101_0100_0000_0000, + 0x8080_8080_0000_0000, 0x4040_4040_0000_0000, 0x2020_2020_0000_0000, 0x1010_1010_0000_0000, 0x0808_0808_0000_0000, 0x0404_0404_0000_0000, 0x0202_0202_0000_0000, 0x0101_0101_0000_0000, + 0x8080_8080_8000_0000, 0x4040_4040_4000_0000, 0x2020_2020_2000_0000, 0x1010_1010_1000_0000, 0x0808_0808_0800_0000, 0x0404_0404_0400_0000, 0x0202_0202_0200_0000, 0x0101_0101_0100_0000, + 0x8080_8080_8080_0000, 0x4040_4040_4040_0000, 0x2020_2020_2020_0000, 0x1010_1010_1010_0000, 0x0808_0808_0808_0000, 0x0404_0404_0404_0000, 0x0202_0202_0202_0000, 0x0101_0101_0101_0000, + 0x8080_8080_8080_8000, 0x4040_4040_4040_4000, 0x2020_2020_2020_2000, 0x1010_1010_1010_1000, 0x0808_0808_0808_0800, 0x0404_0404_0404_0400, 0x0202_0202_0202_0200, 0x0101_0101_0101_0100, + ) +DOWN_MASK = ( + 0x0080_8080_8080_8080, 0x0040_4040_4040_4040, 0x0020_2020_2020_2020, 0x0010_1010_1010_1010, 0x0008_0808_0808_0808, 0x0004_0404_0404_0404, 0x0002_0202_0202_0202, 0x0001_0101_0101_0101, + 0x0000_8080_8080_8080, 0x0000_4040_4040_4040, 0x0000_2020_2020_2020, 0x0000_1010_1010_1010, 0x0000_0808_0808_0808, 0x0000_0404_0404_0404, 0x0000_0202_0202_0202, 0x0000_0101_0101_0101, + 0x0000_0080_8080_8080, 0x0000_0040_4040_4040, 0x0000_0020_2020_2020, 0x0000_0010_1010_1010, 0x0000_0008_0808_0808, 0x0000_0004_0404_0404, 0x0000_0002_0202_0202, 0x0000_0001_0101_0101, + 0x0000_0000_8080_8080, 0x0000_0000_4040_4040, 0x0000_0000_2020_2020, 0x0000_0000_1010_1010, 0x0000_0000_0808_0808, 0x0000_0000_0404_0404, 0x0000_0000_0202_0202, 0x0000_0000_0101_0101, + 0x0000_0000_0080_8080, 0x0000_0000_0040_4040, 0x0000_0000_0020_2020, 0x0000_0000_0010_1010, 0x0000_0000_0008_0808, 0x0000_0000_0004_0404, 0x0000_0000_0002_0202, 0x0000_0000_0001_0101, + 0x0000_0000_0000_8080, 0x0000_0000_0000_4040, 0x0000_0000_0000_2020, 0x0000_0000_0000_1010, 0x0000_0000_0000_0808, 0x0000_0000_0000_0404, 0x0000_0000_0000_0202, 0x0000_0000_0000_0101, + 0x0000_0000_0000_0080, 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, 0x0000_0000_0000_0001, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +RIGHT_UP_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, 0x0100_0000_0000_0000, 0x0000_0000_0000_0000, + 0x2040_0000_0000_0000, 0x1020_0000_0000_0000, 0x0810_0000_0000_0000, 0x0408_0000_0000_0000, 0x0204_0000_0000_0000, 0x0102_0000_0000_0000, 0x0001_0000_0000_0000, 0x0000_0000_0000_0000, + 0x1020_4000_0000_0000, 0x0810_2000_0000_0000, 0x0408_1000_0000_0000, 0x0204_0800_0000_0000, 0x0102_0400_0000_0000, 0x0001_0200_0000_0000, 0x0000_0100_0000_0000, 0x0000_0000_0000_0000, + 0x0810_2040_0000_0000, 0x0408_1020_0000_0000, 0x0204_0810_0000_0000, 0x0102_0408_0000_0000, 0x0001_0204_0000_0000, 0x0000_0102_0000_0000, 0x0000_0001_0000_0000, 0x0000_0000_0000_0000, + 0x0408_1020_4000_0000, 0x0204_0810_2000_0000, 0x0102_0408_1000_0000, 0x0001_0204_0800_0000, 0x0000_0102_0400_0000, 0x0000_0001_0200_0000, 0x0000_0000_0100_0000, 0x0000_0000_0000_0000, + 0x0204_0810_2040_0000, 0x0102_0408_1020_0000, 0x0001_0204_0810_0000, 0x0000_0102_0408_0000, 0x0000_0001_0204_0000, 0x0000_0000_0102_0000, 0x0000_0000_0001_0000, 0x0000_0000_0000_0000, + 0x0102_0408_1020_4000, 0x0001_0204_0810_2000, 0x0000_0102_0408_1000, 0x0000_0001_0204_0800, 0x0000_0000_0102_0400, 0x0000_0000_0001_0200, 0x0000_0000_0000_0100, 0x0000_0000_0000_0000, + ) +LEFT_UP_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x8000_0000_0000_0000, 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0080_0000_0000_0000, 0x8040_0000_0000_0000, 0x4020_0000_0000_0000, 0x2010_0000_0000_0000, 0x1008_0000_0000_0000, 0x0804_0000_0000_0000, 0x0402_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_8000_0000_0000, 0x0080_4000_0000_0000, 0x8040_2000_0000_0000, 0x4020_1000_0000_0000, 0x2010_0800_0000_0000, 0x1008_0400_0000_0000, 0x0804_0200_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0080_0000_0000, 0x0000_8040_0000_0000, 0x0080_4020_0000_0000, 0x8040_2010_0000_0000, 0x4020_1008_0000_0000, 0x2010_0804_0000_0000, 0x1008_0402_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_8000_0000, 0x0000_0080_4000_0000, 0x0000_8040_2000_0000, 0x0080_4020_1000_0000, 0x8040_2010_0800_0000, 0x4020_1008_0400_0000, 0x2010_0804_0200_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0080_0000, 0x0000_0000_8040_0000, 0x0000_0080_4020_0000, 0x0000_8040_2010_0000, 0x0080_4020_1008_0000, 0x8040_2010_0804_0000, 0x4020_1008_0402_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_8000, 0x0000_0000_0080_4000, 0x0000_0000_8040_2000, 0x0000_0080_4020_1000, 0x0000_8040_2010_0800, 0x0080_4020_1008_0400, 0x8040_2010_0804_0200, + ) +RIGHT_DOWN_MASK = ( + 0x0040_2010_0804_0201, 0x0020_1008_0402_0100, 0x0010_0804_0201_0000, 0x0008_0402_0100_0000, 0x0004_0201_0000_0000, 0x0002_0100_0000_0000, 0x0001_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_4020_1008_0402, 0x0000_2010_0804_0201, 0x0000_1008_0402_0100, 0x0000_0804_0201_0000, 0x0000_0402_0100_0000, 0x0000_0201_0000_0000, 0x0000_0100_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0040_2010_0804, 0x0000_0020_1008_0402, 0x0000_0010_0804_0201, 0x0000_0008_0402_0100, 0x0000_0004_0201_0000, 0x0000_0002_0100_0000, 0x0000_0001_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_4020_1008, 0x0000_0000_2010_0804, 0x0000_0000_1008_0402, 0x0000_0000_0804_0201, 0x0000_0000_0402_0100, 0x0000_0000_0201_0000, 0x0000_0000_0100_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0040_2010, 0x0000_0000_0020_1008, 0x0000_0000_0010_0804, 0x0000_0000_0008_0402, 0x0000_0000_0004_0201, 0x0000_0000_0002_0100, 0x0000_0000_0001_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_4020, 0x0000_0000_0000_2010, 0x0000_0000_0000_1008, 0x0000_0000_0000_0804, 0x0000_0000_0000_0402, 0x0000_0000_0000_0201, 0x0000_0000_0000_0100, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, 0x0000_0000_0000_0001, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +LEFT_DOWN_MASK = ( + 0x0000_0000_0000_0000, 0x0080_0000_0000_0000, 0x0040_8000_0000_0000, 0x0020_4080_0000_0000, 0x0010_2040_8000_0000, 0x0008_1020_4080_0000, 0x0004_0810_2040_8000, 0x0002_0408_1020_4080, + 0x0000_0000_0000_0000, 0x0000_8000_0000_0000, 0x0000_4080_0000_0000, 0x0000_2040_8000_0000, 0x0000_1020_4080_0000, 0x0000_0810_2040_8000, 0x0000_0408_1020_4080, 0x0000_0204_0810_2040, + 0x0000_0000_0000_0000, 0x0000_0080_0000_0000, 0x0000_0040_8000_0000, 0x0000_0020_4080_0000, 0x0000_0010_2040_8000, 0x0000_0008_1020_4080, 0x0000_0004_0810_2040, 0x0000_0002_0408_1020, + 0x0000_0000_0000_0000, 0x0000_0000_8000_0000, 0x0000_0000_4080_0000, 0x0000_0000_2040_8000, 0x0000_0000_1020_4080, 0x0000_0000_0810_2040, 0x0000_0000_0408_1020, 0x0000_0000_0204_0810, + 0x0000_0000_0000_0000, 0x0000_0000_0080_0000, 0x0000_0000_0040_8000, 0x0000_0000_0020_4080, 0x0000_0000_0010_2040, 0x0000_0000_0008_1020, 0x0000_0000_0004_0810, 0x0000_0000_0002_0408, + 0x0000_0000_0000_0000, 0x0000_0000_0000_8000, 0x0000_0000_0000_4080, 0x0000_0000_0000_2040, 0x0000_0000_0000_1020, 0x0000_0000_0000_0810, 0x0000_0000_0000_0408, 0x0000_0000_0000_0204, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0080, 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) + +# ------------------------------------------------- + +R_MV_MASK = ( + 0x807F_8080_8080_8080, 0xBF40_4040_4040_4040, 0xDF20_2020_2020_2020, 0xEF10_1010_1010_1010, 0xF708_0808_0808_0808, 0xFB04_0404_0404_0404, 0xFD02_0202_0202_0202, 0xFE01_0101_0101_0101, + 0x8080_7F80_8080_8080, 0x40BF_4040_4040_4040, 0x20DF_2020_2020_2020, 0x10EF_1010_1010_1010, 0x08F7_0808_0808_0808, 0x04FB_0404_0404_0404, 0x02FD_0202_0202_0202, 0x01FE_0101_0101_0101, + 0x8080_7F80_8080_8080, 0x4040_BF40_4040_4040, 0x2020_DF20_2020_2020, 0x1010_EF10_1010_1010, 0x0808_F708_0808_0808, 0x0404_FB04_0404_0404, 0x0202_FD02_0202_0202, 0x0101_FE01_0101_0101, + 0x8080_807F_8080_8080, 0x4040_40BF_4040_4040, 0x2020_20DF_2020_2020, 0x1010_10EF_1010_1010, 0x0808_08F7_0808_0808, 0x0404_04FB_0404_0404, 0x0202_02FD_0202_0202, 0x0101_01FE_0101_0101, + 0x8080_8080_7F80_8080, 0x4040_4040_BF40_4040, 0x2020_2020_DF20_2020, 0x1010_1010_EF10_1010, 0x0808_0808_F708_0808, 0x0404_0404_FB04_0404, 0x0202_0202_FD02_0202, 0x0101_0101_FE01_0101, + 0x8080_8080_807F_8080, 0x4040_4040_40BF_4040, 0x2020_2020_20DF_2020, 0x1010_1010_10EF_1010, 0x0808_0808_08F7_0808, 0x0404_0404_04FB_0404, 0x0202_0202_02FD_0202, 0x0101_0101_01FE_0101, + 0x8080_8080_8080_7F80, 0x4040_4040_4040_BF40, 0x2020_2020_2020_DF20, 0x1010_1010_1010_EF10, 0x0808_0808_0808_F708, 0x0404_0404_0404_FB04, 0x0202_0202_0202_FD02, 0x0101_0101_0101_FE01, + 0x8080_8080_8080_807F, 0x4040_4040_4040_40BF, 0x2020_2020_2020_20DF, 0x1010_1010_1010_10EF, 0x0808_0808_0808_08F7, 0x0404_0404_0404_04FB, 0x0202_0202_0202_02FD, 0x0101_0101_0101_01FE, + ) +N_MV_MASK = ( + 0x0020_4000_0000_0000, 0x0010_A000_0000_0000, 0x0088_5000_0000_0000, 0x0044_2800_0000_0000, 0x0022_1400_0000_0000, 0x0011_0A00_0000_0000, 0x0008_0500_0000_0000, 0x0004_0200_0000_0000, + 0x2000_2040_0000_0000, 0x1000_10A0_0000_0000, 0x8800_8850_0000_0000, 0x4400_4428_0000_0000, 0x2200_2214_0000_0000, 0x1100_110A_0000_0000, 0x0800_0805_0000_0000, 0x0400_0402_0000_0000, + 0x4020_0020_4000_0000, 0xA010_0010_A000_0000, 0x5088_0088_5000_0000, 0x2844_0044_2800_0000, 0x1422_0022_1400_0000, 0x0A11_0011_0A00_0000, 0x0508_0008_0500_0000, 0x0204_0004_0200_0000, + 0x0040_2000_2040_0000, 0x00A0_1000_10A0_0000, 0x0050_8800_8850_0000, 0x0028_4400_4428_0000, 0x0014_2200_2214_0000, 0x000A_1100_110A_0000, 0x0005_0800_0805_0000, 0x0002_0400_0402_0000, + 0x0000_4020_0020_4000, 0x0000_A010_0010_A000, 0x0000_5088_0088_5000, 0x0000_2844_0044_2800, 0x0000_1422_0022_1400, 0x0000_0A11_0011_0A00, 0x0000_0508_0008_0500, 0x0000_0204_0004_0200, + 0x0000_0040_2000_2040, 0x0000_00A0_1000_10A0, 0x0000_0050_8800_8850, 0x0000_0028_4400_4428, 0x0000_0014_2200_2214, 0x0000_000A_1100_110A, 0x0000_0005_0800_0805, 0x0000_0002_0400_0402, + 0x0000_0000_4020_0020, 0x0000_0000_A010_0010, 0x0000_0000_5088_0088, 0x0000_0000_2844_0044, 0x0000_0000_1422_0022, 0x0000_0000_0A11_0011, 0x0000_0000_0508_0008, 0x0000_0000_0204_0004, + 0x0000_0000_0040_2000, 0x0000_0000_00A0_1000, 0x0000_0000_0050_8800, 0x0000_0000_0028_4400, 0x0000_0000_0014_2200, 0x0000_0000_000A_1100, 0x0000_0000_0005_0800, 0x0000_0000_0002_0400, + ) +B_MV_MASK = ( + 0x0040_2010_0804_0201, 0x00A0_1008_0402_0100, 0x0050_8804_0201_0000, 0x0028_4482_0100_0000, 0x0014_2241_8000_0000, 0x000A_1120_4080_0000, 0x0005_0810_2040_8000, 0x0002_0408_1020_4080, + 0x4000_4020_1008_0402, 0xA000_A010_0804_0201, 0x5000_5088_0402_0100, 0x2800_2844_8201_0000, 0x1400_1422_4180_0000, 0x0A00_0A11_2040_8000, 0x0500_0508_1020_4080, 0x0200_0204_0810_2040, + 0x2040_0040_2010_0804, 0x10A0_00A0_1008_0402, 0x8850_0050_8804_0201, 0x4428_0028_4482_0100, 0x2214_0014_2241_8000, 0x110A_000A_1120_4080, 0x0805_0005_0810_2040, 0x0402_0002_0408_1020, + 0x1020_4000_4020_1008, 0x0810_A000_A010_0804, 0x0488_5000_5088_0402, 0x8244_2800_2844_8201, 0x4122_1400_1422_4180, 0x2011_0A00_0A11_2040, 0x1008_0500_0508_1020, 0x0804_0200_0204_0810, + 0x0810_2040_0040_2010, 0x0408_10A0_00A0_1008, 0x0204_8850_0050_8804, 0x0182_4428_0028_4482, 0x8041_2214_0014_2241, 0x4020_110A_000A_1120, 0x2010_0805_0005_0810, 0x1008_0402_0002_0408, + 0x0408_1020_4000_4020, 0x0204_0810_A000_A010, 0x0102_0488_5000_5088, 0x0001_8244_2800_2844, 0x0080_4122_1400_1422, 0x8040_2011_0A00_0A11, 0x4020_1008_0500_0508, 0x2010_0804_0200_0204, + 0x0204_0810_2040_0040, 0x0102_0408_10A0_00A0, 0x0001_0204_8850_0050, 0x0000_0182_4428_0028, 0x0000_8041_2214_0014, 0x0080_4020_110A_000A, 0x8040_2010_0805_0005, 0x4020_1008_0402_0102, + 0x0102_0408_1020_4000, 0x0001_0204_0810_A000, 0x0000_0102_0488_5000, 0x0000_0001_8244_2800, 0x0000_0080_4122_1400, 0x0000_8040_2011_0A00, 0x0080_4020_1008_0500, 0x8040_2010_0804_0200, + ) +Q_MV_MASK = ( + 0x807F_A090_8884_8281, 0xBFE0_5048_4442_4140, 0xDF70_A824_2221_2020, 0xEF38_5492_1110_1010, 0xF71C_2A49_8808_0808, 0xFB0E_1524_4484_0404, 0xFD07_0A12_2242_8202, 0xFE03_0509_1121_4181, + 0xC080_7FA0_9088_8482, 0xE0BF_E050_4844_4241, 0x70DF_70A8_2422_2120, 0x38EF_3854_9211_1010, 0x1CF7_1C2A_4988_0808, 0x0EFB_0E15_2444_8404, 0x07FD_070A_1222_4282, 0x03FE_0305_0911_2141, + 0xA0C0_7FC0_A090_8884, 0x50E0_BFE0_5048_4442, 0xA870_DF70_A824_2221, 0x5438_EF38_5492_1110, 0x2A1C_F71C_2A49_8808, 0x150E_FB0E_1524_4484, 0x0A07_FD07_0A12_2242, 0x0503_FE03_0509_1121, + 0x90A0_C07F_C0A0_9088, 0x4850_E0BF_E050_4844, 0x24A8_70DF_70A8_2422, 0x9254_38EF_3854_9211, 0x492A_1CF7_1C2A_4988, 0x2415_0EFB_0E15_2444, 0x120A_07FD_070A_1222, 0x0905_03FE_0305_0911, + 0x8890_A0C0_7FC0_A090, 0x4448_50E0_BFE0_5048, 0x2224_A870_DF70_A824, 0x1192_5438_EF38_5492, 0x8849_2A1C_F71C_2A49, 0x4424_150E_FB0E_1524, 0x2212_0A07_FD07_0A12, 0x1109_0503_FE03_0509, + 0x8488_90A0_C07F_C0A0, 0x4244_4850_E0BF_E050, 0x2122_24A8_70DF_70A8, 0x1011_9254_38EF_3854, 0x0888_492A_1CF7_1C2A, 0x8444_2415_0EFB_0E15, 0x4222_120A_07FD_070A, 0x2111_0905_03FE_0305, + 0x8284_8890_A0C0_7FC0, 0x4142_4448_50E0_BFE0, 0x2021_2224_A870_DF70, 0x1010_1192_5438_EF38, 0x0808_8849_2A1C_F71C, 0x0484_4424_150E_FB0E, 0x8242_2212_0A07_FD07, 0x4121_1109_0503_FF03, + 0x8182_8488_90A0_C07F, 0x4041_4244_4850_E0BF, 0x2020_2122_24A8_70DF, 0x1010_1011_9254_38EF, 0x0808_0888_492A_1CF7, 0x0404_8444_2415_0EFB, 0x0282_4222_120A_07FD, 0x8141_2111_0905_03FE, + ) +K_MV_MASK = ( + 0x40C0_0000_0000_0000, 0xA0E0_0000_0000_0000, 0x5070_0000_0000_0000, 0x2838_0000_0000_0000, 0x141C_0000_0000_0000, 0x0A0E_0000_0000_0000, 0x0507_0000_0000_0000, 0x0203_0000_0000_0000, + 0xC040_C000_0000_0000, 0xE0A0_E000_0000_0000, 0x7050_7000_0000_0000, 0x3828_3800_0000_0000, 0x1C14_1C00_0000_0000, 0x0E0A_0E00_0000_0000, 0x0705_0700_0000_0000, 0x0302_0300_0000_0000, + 0x00C0_40C0_0000_0000, 0x00E0_A0E0_0000_0000, 0x0070_5070_0000_0000, 0x0038_2838_0000_0000, 0x001C_141C_0000_0000, 0x000E_0A0E_0000_0000, 0x0007_0507_0000_0000, 0x0003_0203_0000_0000, + 0x0000_C040_C000_0000, 0x0000_E0A0_E000_0000, 0x0000_7050_7000_0000, 0x0000_3828_3800_0000, 0x0000_1C14_1C00_0000, 0x0000_0E0A_0E00_0000, 0x0000_0705_0700_0000, 0x0000_0302_0300_0000, + 0x0000_00C0_40C0_0000, 0x0000_00E0_A0E0_0000, 0x0000_0070_5070_0000, 0x0000_0038_2838_0000, 0x0000_001C_141C_0000, 0x0000_000E_0A0E_0000, 0x0000_0007_0507_0000, 0x0000_0003_0203_0000, + 0x0000_0000_C040_C000, 0x0000_0000_E0A0_E000, 0x0000_0000_7050_7000, 0x0000_0000_3828_3800, 0x0000_0000_1C14_1C00, 0x0000_0000_0E0A_0E00, 0x0000_0000_0705_0700, 0x0000_0000_0302_0300, + 0x0000_0000_00C0_40C0, 0x0000_0000_00E0_A0E0, 0x0000_0000_0070_5070, 0x0000_0000_0038_2838, 0x0000_0000_001C_141C, 0x0000_0000_000E_0A0E, 0x0000_0000_0007_0507, 0x0000_0000_0003_0203, + 0x0000_0000_0000_C040, 0x0000_0000_0000_E0A0, 0x0000_0000_0000_7050, 0x0000_0000_0000_3828, 0x0000_0000_0000_1C14, 0x0000_0000_0000_0E0A, 0x0000_0000_0000_0705, 0x0000_0000_0000_0302, + ) + +# ------------------------------------------------- + +WP_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x8000_0000_0000_0000, 0x4000_0000_0000_0000, 0x2000_0000_0000_0000, 0x1000_0000_0000_0000, 0x0800_0000_0000_0000, 0x0400_0000_0000_0000, 0x0200_0000_0000_0000, 0x0100_0000_0000_0000, + 0x0080_0000_0000_0000, 0x0040_0000_0000_0000, 0x0020_0000_0000_0000, 0x0010_0000_0000_0000, 0x0008_0000_0000_0000, 0x0004_0000_0000_0000, 0x0002_0000_0000_0000, 0x0001_0000_0000_0000, + 0x0000_8000_0000_0000, 0x0000_4000_0000_0000, 0x0000_2000_0000_0000, 0x0000_1000_0000_0000, 0x0000_0800_0000_0000, 0x0000_0400_0000_0000, 0x0000_0200_0000_0000, 0x0000_0100_0000_0000, + 0x0000_0080_0000_0000, 0x0000_0040_0000_0000, 0x0000_0020_0000_0000, 0x0000_0010_0000_0000, 0x0000_0008_0000_0000, 0x0000_0004_0000_0000, 0x0000_0002_0000_0000, 0x0000_0001_0000_0000, + 0x0000_0000_8000_0000, 0x0000_0000_4000_0000, 0x0000_0000_2000_0000, 0x0000_0000_1000_0000, 0x0000_0000_0800_0000, 0x0000_0000_0400_0000, 0x0000_0000_0200_0000, 0x0000_0000_0100_0000, + 0x0000_0000_0080_0000, 0x0000_0000_0040_0000, 0x0000_0000_0020_0000, 0x0000_0000_0010_0000, 0x0000_0000_0008_0000, 0x0000_0000_0004_0000, 0x0000_0000_0002_0000, 0x0000_0000_0001_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +WP_DOUBLE_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_8000_0000, 0x0000_0000_4000_0000, 0x0000_0000_2000_0000, 0x0000_0000_1000_0000, 0x0000_0000_0800_0000, 0x0000_0000_0400_0000, 0x0000_0000_0200_0000, 0x0000_0000_0100_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +WP_TAKE_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x4000_0000_0000_0000, 0xA000_0000_0000_0000, 0x5000_0000_0000_0000, 0x2800_0000_0000_0000, 0x1400_0000_0000_0000, 0x0A00_0000_0000_0000, 0x0500_0000_0000_0000, 0x0200_0000_0000_0000, + 0x0040_0000_0000_0000, 0x00A0_0000_0000_0000, 0x0050_0000_0000_0000, 0x0028_0000_0000_0000, 0x0014_0000_0000_0000, 0x000A_0000_0000_0000, 0x0005_0000_0000_0000, 0x0002_0000_0000_0000, + 0x0000_4000_0000_0000, 0x0000_A000_0000_0000, 0x0000_5000_0000_0000, 0x0000_2800_0000_0000, 0x0000_1400_0000_0000, 0x0000_0A00_0000_0000, 0x0000_0500_0000_0000, 0x0000_0200_0000_0000, + 0x0000_0040_0000_0000, 0x0000_00A0_0000_0000, 0x0000_0050_0000_0000, 0x0000_0028_0000_0000, 0x0000_0014_0000_0000, 0x0000_000A_0000_0000, 0x0000_0005_0000_0000, 0x0000_0002_0000_0000, + 0x0000_0000_4000_0000, 0x0000_0000_A000_0000, 0x0000_0000_5000_0000, 0x0000_0000_2800_0000, 0x0000_0000_1400_0000, 0x0000_0000_0A00_0000, 0x0000_0000_0500_0000, 0x0000_0000_0200_0000, + 0x0000_0000_0040_0000, 0x0000_0000_00A0_0000, 0x0000_0000_0050_0000, 0x0000_0000_0028_0000, 0x0000_0000_0014_0000, 0x0000_0000_000A_0000, 0x0000_0000_0005_0000, 0x0000_0000_0002_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +BP_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0080_8000_0000_0000, 0x0040_4000_0000_0000, 0x0020_2000_0000_0000, 0x0010_1000_0000_0000, 0x0008_0800_0000_0000, 0x0004_0400_0000_0000, 0x0002_0200_0000_0000, 0x0001_0100_0000_0000, + 0x0000_0080_0000_0000, 0x0000_0040_0000_0000, 0x0000_0020_0000_0000, 0x0000_0010_0000_0000, 0x0000_0008_0000_0000, 0x0000_0004_0000_0000, 0x0000_0002_0000_0000, 0x0000_0001_0000_0000, + 0x0000_0000_8000_0000, 0x0000_0000_4000_0000, 0x0000_0000_2000_0000, 0x0000_0000_1000_0000, 0x0000_0000_0800_0000, 0x0000_0000_0400_0000, 0x0000_0000_0200_0000, 0x0000_0000_0100_0000, + 0x0000_0000_0080_0000, 0x0000_0000_0040_0000, 0x0000_0000_0020_0000, 0x0000_0000_0010_0000, 0x0000_0000_0008_0000, 0x0000_0000_0004_0000, 0x0000_0000_0002_0000, 0x0000_0000_0001_0000, + 0x0000_0000_0000_8000, 0x0000_0000_0000_4000, 0x0000_0000_0000_2000, 0x0000_0000_0000_1000, 0x0000_0000_0000_0800, 0x0000_0000_0000_0400, 0x0000_0000_0000_0200, 0x0000_0000_0000_0100, + 0x0000_0000_0000_0080, 0x0000_0000_0000_0040, 0x0000_0000_0000_0020, 0x0000_0000_0000_0010, 0x0000_0000_0000_0008, 0x0000_0000_0000_0004, 0x0000_0000_0000_0002, 0x0000_0000_0000_0001, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +BP_DOUBLE_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0080_0000_0000_0000, 0x0040_0000_0000_0000, 0x0020_0000_0000_0000, 0x0010_0000_0000_0000, 0x0008_0000_0000_0000, 0x0004_0000_0000_0000, 0x0002_0000_0000_0000, 0x0001_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + ) +BP_TAKE_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_4000_0000_0000, 0x0000_A000_0000_0000, 0x0000_5000_0000_0000, 0x0000_2800_0000_0000, 0x0000_1400_0000_0000, 0x0000_0A00_0000_0000, 0x0000_0500_0000_0000, 0x0000_0200_0000_0000, + 0x0000_0040_0000_0000, 0x0000_00A0_0000_0000, 0x0000_0050_0000_0000, 0x0000_0028_0000_0000, 0x0000_0014_0000_0000, 0x0000_000A_0000_0000, 0x0000_0005_0000_0000, 0x0000_0002_0000_0000, + 0x0000_0000_4000_0000, 0x0000_0000_A000_0000, 0x0000_0000_5000_0000, 0x0000_0000_2800_0000, 0x0000_0000_1400_0000, 0x0000_0000_0A00_0000, 0x0000_0000_0500_0000, 0x0000_0000_0200_0000, + 0x0000_0000_0040_0000, 0x0000_0000_00A0_0000, 0x0000_0000_0050_0000, 0x0000_0000_0028_0000, 0x0000_0000_0014_0000, 0x0000_0000_000A_0000, 0x0000_0000_0005_0000, 0x0000_0000_0002_0000, + 0x0000_0000_0000_4000, 0x0000_0000_0000_A000, 0x0000_0000_0000_5000, 0x0000_0000_0000_2800, 0x0000_0000_0000_1400, 0x0000_0000_0000_0A00, 0x0000_0000_0000_0500, 0x0000_0000_0000_0200, + 0x0000_0000_0000_0040, 0x0000_0000_0000_00A0, 0x0000_0000_0000_0050, 0x0000_0000_0000_0028, 0x0000_0000_0000_0014, 0x0000_0000_0000_000A, 0x0000_0000_0000_0005, 0x0000_0000_0000_0002, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + )
\ No newline at end of file diff --git a/bitmasks.txt b/bitmasks.txt new file mode 100644 index 0000000..d617d12 --- /dev/null +++ b/bitmasks.txt @@ -0,0 +1,603 @@ +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 1 0 + +1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 + +0 0 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 1 +0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 1 0 1 0 + +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 +0 0 1 0 0 0 1 0 +0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 +0 0 0 1 0 1 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 1 +1 0 0 0 0 0 1 0 +0 1 0 0 0 1 0 0 +0 0 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 + +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +1 0 0 0 1 0 0 0 +0 1 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 + +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 + +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 + +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 + +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 1 0 0 0 + +1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 1 +0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 1 0 1 0 +0 0 0 1 0 0 0 1 + +0 0 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 +0 0 1 0 0 0 1 0 +0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 +0 0 0 1 0 1 0 0 +0 0 1 0 0 0 1 0 + +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 1 +1 0 0 0 0 0 1 0 +0 1 0 0 0 1 0 0 +0 0 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 +0 1 0 0 0 1 0 0 + +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +1 0 0 0 1 0 0 0 +0 1 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 + +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 + +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 + +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 + +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 + +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 1 +0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 1 0 1 0 +0 0 0 1 0 0 0 1 +0 0 1 0 0 0 0 0 + +1 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 1 +0 0 1 0 0 0 1 0 +0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 +0 0 0 1 0 1 0 0 +0 0 1 0 0 0 1 0 +0 1 0 0 0 0 0 1 + +0 0 0 0 0 0 0 1 +1 0 0 0 0 0 1 0 +0 1 0 0 0 1 0 0 +0 0 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 +0 1 0 0 0 1 0 0 +1 0 0 0 0 0 1 0 + +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +1 0 0 0 1 0 0 0 +0 1 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 + +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 + +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 + +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 + +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 + +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 1 +0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 1 0 1 0 +0 0 0 1 0 0 0 1 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 + +0 1 0 0 0 0 0 1 +0 0 1 0 0 0 1 0 +0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 +0 0 0 1 0 1 0 0 +0 0 1 0 0 0 1 0 +0 1 0 0 0 0 0 1 +1 0 0 0 0 0 0 0 + +1 0 0 0 0 0 1 0 +0 1 0 0 0 1 0 0 +0 0 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 +0 1 0 0 0 1 0 0 +1 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 + +0 0 0 0 0 1 0 0 +1 0 0 0 1 0 0 0 +0 1 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 + +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 + +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 + +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 + +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 + +0 0 0 1 0 0 0 1 +0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 1 0 1 0 +0 0 0 1 0 0 0 1 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 + +0 0 1 0 0 0 1 0 +0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 +0 0 0 1 0 1 0 0 +0 0 1 0 0 0 1 0 +0 1 0 0 0 0 0 1 +1 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 + +0 1 0 0 0 1 0 0 +0 0 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 +0 1 0 0 0 1 0 0 +1 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 + +1 0 0 0 1 0 0 0 +0 1 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 + +0 0 0 1 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 + +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 + +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 + +0 0 0 0 0 1 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 + +0 0 0 0 1 0 1 0 +0 0 0 0 0 0 0 0 +0 0 0 0 1 0 1 0 +0 0 0 1 0 0 0 1 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 + +0 0 0 1 0 1 0 0 +0 0 0 0 0 0 0 0 +0 0 0 1 0 1 0 0 +0 0 1 0 0 0 1 0 +0 1 0 0 0 0 0 1 +1 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 1 0 1 0 0 0 +0 0 0 0 0 0 0 0 +0 0 1 0 1 0 0 0 +0 1 0 0 0 1 0 0 +1 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 + +0 1 0 1 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 + +1 0 1 0 0 0 0 0 +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 + +0 1 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 + +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 1 0 0 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +1 0 0 0 0 0 0 0 + +0 0 0 0 0 0 0 0 +0 0 0 0 0 1 0 1 +0 0 0 0 1 0 0 0 +0 0 0 1 0 0 0 0 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +1 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 1 0 1 0 +0 0 0 1 0 0 0 1 +0 0 1 0 0 0 0 0 +0 1 0 0 0 0 0 0 +1 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 1 0 1 0 0 +0 0 1 0 0 0 1 0 +0 1 0 0 0 0 0 1 +1 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 1 0 1 0 0 0 +0 1 0 0 0 1 0 0 +1 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +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 1 0 1 0 0 0 0 +1 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 + +0 0 0 0 0 0 0 0 +1 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 +0 0 0 0 0 0 0 0 + +0 0 0 0 0 0 0 0 +0 1 0 0 0 0 0 0 +0 0 1 0 0 0 0 0 +0 0 0 1 0 0 0 0 +0 0 0 0 1 0 0 0 +0 0 0 0 0 1 0 0 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 0 1 + +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 0 0 0 0 0 1 1 +0 0 0 0 0 0 1 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 +0 0 0 0 0 1 1 1 +0 0 0 0 0 1 0 1 + +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 0 0 0 1 1 1 0 +0 0 0 0 1 0 1 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 +0 0 0 1 1 1 0 0 +0 0 0 1 0 1 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 0 +0 0 1 1 1 0 0 0 +0 0 1 0 1 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 0 0 +0 1 1 1 0 0 0 0 +0 1 0 1 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 0 0 0 +1 1 1 0 0 0 0 0 +1 0 1 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 0 0 0 0 +1 1 0 0 0 0 0 0 +0 1 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 0 0 0 1 1 +0 0 0 0 0 0 1 0 +0 0 0 0 0 0 1 1 + +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 1 1 1 +0 0 0 0 0 1 0 1 +0 0 0 0 0 1 1 1 + + + + + + + + + + diff --git a/chess.py b/chess.py new file mode 100644 index 0000000..64ba1af --- /dev/null +++ b/chess.py @@ -0,0 +1,1033 @@ +import chessconf +import random +import copy +import subprocess +import typing +from collections.abc import Generator + +mv_struct = tuple[tuple[int, int, str], tuple[int, int, str]] | tuple[tuple[int, int, str], tuple[int, int, str], tuple[int, int, str]] | tuple[tuple[int, int, str], tuple[int, int, str], tuple[int, int, str], tuple[int, int, str]] +board_struct = tuple[list[str], list[str], list[str], list[str], list[str], list[str], list[str], list[str]] + +ICON: typing.Final[dict[str, str]] = { + 'K': chessconf.WHITECOLOR + chessconf.WHITE_KING_ICON + '\x1b[0m', + 'Q': chessconf.WHITECOLOR + chessconf.WHITE_QUEEN_ICON + '\x1b[0m', + 'R': chessconf.WHITECOLOR + chessconf.WHITE_ROOK_ICON + '\x1b[0m', + 'B': chessconf.WHITECOLOR + chessconf.WHITE_BISHOP_ICON + '\x1b[0m', + 'N': chessconf.WHITECOLOR + chessconf.WHITE_KNIGHT_ICON + '\x1b[0m', + 'P': chessconf.WHITECOLOR + chessconf.WHITE_PAWN_ICON + '\x1b[0m', + '.': chessconf.SPACECOLOR + chessconf.SPACE_ICON + '\x1b[0m', + 'k': chessconf.BLACKCOLOR + chessconf.BLACK_KING_ICON + '\x1b[0m', + 'q': chessconf.BLACKCOLOR + chessconf.BLACK_QUEEN_ICON + '\x1b[0m', + 'r': chessconf.BLACKCOLOR + chessconf.BLACK_ROOK_ICON + '\x1b[0m', + 'b': chessconf.BLACKCOLOR + chessconf.BLACK_BISHOP_ICON + '\x1b[0m', + 'n': chessconf.BLACKCOLOR + chessconf.BLACK_KNIGHT_ICON + '\x1b[0m', + 'p': chessconf.BLACKCOLOR + chessconf.BLACK_PAWN_ICON + '\x1b[0m'} + +INT_TO_ALPH: typing.Final[dict[int, str]] = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h'} +ALPH_TO_INT: typing.Final[dict[str, int]] = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7} +INT_TO_NUM: typing.Final[dict[int, str]] = {0: '8', 1: '7', 2: '6', 3: '5', 4: '4', 5: '3', 6: '2', 7: '1'} +NUM_TO_INT: typing.Final[dict[str, int]] = {'8': 0, '7': 1, '6': 2, '5': 3, '4': 4, '3': 5, '2': 6, '1': 7} + +COLOR_WHITE: typing.Final[dict[str, str]] = {'R': 'R', 'N': 'N', 'B': 'B', 'K': 'K', 'Q': 'Q', 'P': 'P', 'r': 'R', 'n': 'N', 'b': 'B', 'k': 'K', 'q': 'Q', 'p': 'P'} +COLOR_BLACK: typing.Final[dict[str, str]] = {'R': 'r', 'N': 'n', 'B': 'b', 'K': 'k', 'Q': 'q', 'P': 'p', 'r': 'r', 'n': 'n', 'b': 'b', 'k': 'k', 'q': 'q', 'p': 'p'} + +WHITEPIECES: typing.Final[set[str]] = {'R', 'N', 'B', 'Q', 'K', 'P'} +BLACKPIECES: typing.Final[set[str]] = {'r', 'n', 'b', 'q', 'k', 'p'} + +class Board(): + def __init__(self, white: bool = True) -> None: + self.pos: board_struct = ( + ['r', 'n', 'b', 'q', 'k', 'b', 'n', 'r'], + ['p', 'p', 'p', 'p', 'p', 'p', 'p', 'p'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['.', '.', '.', '.', '.', '.', '.', '.'], + ['P', 'P', 'P', 'P', 'P', 'P', 'P', 'P'], + ['R', 'N', 'B', 'Q', 'K', 'B', 'N', 'R']) + + self.white: bool = white + self.bot: bool | None = None + + self.end_game: bool = False + self.last_move_capture: bool = False + + self.log: list = [] + self.pos_log: list = [copy.deepcopy(self.pos)] + + self.half_mv_ctr: int = 0 + self.fifty_mv_ctr: int = 0 + + self.ep_sqr: tuple | None = None + + self.board_turned: bool = False + self.asked_draw: bool = False + + self.w_short_castling: bool = True + self.w_long_castling: bool = True + self.b_short_castling: bool = True + self.b_long_castling: bool = True + + def render(self, white: bool) -> None: + if (white and not self.board_turned) or (not white and self.board_turned): + if self.board_turned: + print('\nBoard turned! Use /turnboard to turn it back.') + print(f''' + ┌───┬───┬───┬───┬───┬───┬───┬───┐ +8 │ {' │ '.join((ICON[self.pos[0][0]], ICON[self.pos[0][1]], ICON[self.pos[0][2]], ICON[self.pos[0][3]], ICON[self.pos[0][4]], ICON[self.pos[0][5]], ICON[self.pos[0][6]], ICON[self.pos[0][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +7 │ {' │ '.join((ICON[self.pos[1][0]], ICON[self.pos[1][1]], ICON[self.pos[1][2]], ICON[self.pos[1][3]], ICON[self.pos[1][4]], ICON[self.pos[1][5]], ICON[self.pos[1][6]], ICON[self.pos[1][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +6 │ {' │ '.join((ICON[self.pos[2][0]], ICON[self.pos[2][1]], ICON[self.pos[2][2]], ICON[self.pos[2][3]], ICON[self.pos[2][4]], ICON[self.pos[2][5]], ICON[self.pos[2][6]], ICON[self.pos[2][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +5 │ {' │ '.join((ICON[self.pos[3][0]], ICON[self.pos[3][1]], ICON[self.pos[3][2]], ICON[self.pos[3][3]], ICON[self.pos[3][4]], ICON[self.pos[3][5]], ICON[self.pos[3][6]], ICON[self.pos[3][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +4 │ {' │ '.join((ICON[self.pos[4][0]], ICON[self.pos[4][1]], ICON[self.pos[4][2]], ICON[self.pos[4][3]], ICON[self.pos[4][4]], ICON[self.pos[4][5]], ICON[self.pos[4][6]], ICON[self.pos[4][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +3 │ {' │ '.join((ICON[self.pos[5][0]], ICON[self.pos[5][1]], ICON[self.pos[5][2]], ICON[self.pos[5][3]], ICON[self.pos[5][4]], ICON[self.pos[5][5]], ICON[self.pos[5][6]], ICON[self.pos[5][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +2 │ {' │ '.join((ICON[self.pos[6][0]], ICON[self.pos[6][1]], ICON[self.pos[6][2]], ICON[self.pos[6][3]], ICON[self.pos[6][4]], ICON[self.pos[6][5]], ICON[self.pos[6][6]], ICON[self.pos[6][7]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +1 │ {' │ '.join((ICON[self.pos[7][0]], ICON[self.pos[7][1]], ICON[self.pos[7][2]], ICON[self.pos[7][3]], ICON[self.pos[7][4]], ICON[self.pos[7][5]], ICON[self.pos[7][6]], ICON[self.pos[7][7]]))} │ + └───┴───┴───┴───┴───┴───┴───┴───┘ + a b c d e f g h''') + else: + if self.board_turned: + print('\nBoard turned! Use /turnboard to turn it back.') + print(f''' + ┌───┬───┬───┬───┬───┬───┬───┬───┐ +1 │ {' │ '.join((ICON[self.pos[7][7]], ICON[self.pos[7][6]], ICON[self.pos[7][5]], ICON[self.pos[7][4]], ICON[self.pos[7][3]], ICON[self.pos[7][2]], ICON[self.pos[7][1]], ICON[self.pos[7][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +2 │ {' │ '.join((ICON[self.pos[6][7]], ICON[self.pos[6][6]], ICON[self.pos[6][5]], ICON[self.pos[6][4]], ICON[self.pos[6][3]], ICON[self.pos[6][2]], ICON[self.pos[6][1]], ICON[self.pos[6][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +3 │ {' │ '.join((ICON[self.pos[5][7]], ICON[self.pos[5][6]], ICON[self.pos[5][5]], ICON[self.pos[5][4]], ICON[self.pos[5][3]], ICON[self.pos[5][2]], ICON[self.pos[5][1]], ICON[self.pos[5][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +4 │ {' │ '.join((ICON[self.pos[4][7]], ICON[self.pos[4][6]], ICON[self.pos[4][5]], ICON[self.pos[4][4]], ICON[self.pos[4][3]], ICON[self.pos[4][2]], ICON[self.pos[4][1]], ICON[self.pos[4][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +5 │ {' │ '.join((ICON[self.pos[3][7]], ICON[self.pos[3][6]], ICON[self.pos[3][5]], ICON[self.pos[3][4]], ICON[self.pos[3][3]], ICON[self.pos[3][2]], ICON[self.pos[3][1]], ICON[self.pos[3][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +6 │ {' │ '.join((ICON[self.pos[2][7]], ICON[self.pos[2][6]], ICON[self.pos[2][5]], ICON[self.pos[2][4]], ICON[self.pos[2][3]], ICON[self.pos[2][2]], ICON[self.pos[2][1]], ICON[self.pos[2][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +7 │ {' │ '.join((ICON[self.pos[1][7]], ICON[self.pos[1][6]], ICON[self.pos[1][5]], ICON[self.pos[1][4]], ICON[self.pos[1][3]], ICON[self.pos[1][2]], ICON[self.pos[1][1]], ICON[self.pos[1][0]]))} │ + ├───┼───┼───┼───┼───┼───┼───┼───┤ +8 │ {' │ '.join((ICON[self.pos[0][7]], ICON[self.pos[0][6]], ICON[self.pos[0][5]], ICON[self.pos[0][4]], ICON[self.pos[0][3]], ICON[self.pos[0][2]], ICON[self.pos[0][1]], ICON[self.pos[0][0]]))} │ + └───┴───┴───┴───┴───┴───┴───┴───┘ + h g f e d c b a''') + + def _rook_mvs(self, y: int, x: int, white: bool) -> Generator[mv_struct]: + enemypieces = BLACKPIECES if white else WHITEPIECES + rook = 'R' if white else 'r' + + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newy in range(8) and newx in range(8): + if self.pos[newy][newx] == '.': + yield ((y, x, '.'), (newy, newx, rook)) + elif self.pos[newy][newx] in enemypieces: + yield ((y, x, '.'), (newy, newx, rook)) + break + else: + break + newy, newx = newy + dy, newx + dx + + def _knight_mvs(self, y: int, x: int, white: bool) -> Generator[mv_struct]: + ownpieces, knight = (WHITEPIECES, 'N') if white else (BLACKPIECES, 'n') + + directions = ((1, 2), (1, -2), (2, 1), (2, -1), (-1, 2), (-1, -2), (-2, 1), (-2, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if newy in range(8) and newx in range(8) and self.pos[newy][newx] not in ownpieces: + yield ((y, x, '.'), (newy, newx, knight)) + + def _bishop_mvs(self, y: int, x: int, white: bool) -> Generator[mv_struct]: + enemypieces, bishop = (BLACKPIECES, 'B') if white else (WHITEPIECES, 'b') + + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + piece = self.pos[newy][newx] + if piece == '.': + yield ((y, x, '.'), (newy, newx, bishop)) + elif piece in enemypieces: + yield ((y, x, '.'), (newy, newx, bishop)) + break + else: + break + newy, newx = newy + dy, newx + dx + + def _queen_mvs(self, y: int, x: int, white: bool) -> Generator[mv_struct]: + enemypieces, queen = (BLACKPIECES, 'Q') if white else (WHITEPIECES, 'q') + + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + piece = self.pos[newy][newx] + if piece == '.': + yield ((y, x, '.'), (newy, newx, queen)) + elif piece in enemypieces: + yield ((y, x, '.'), (newy, newx, queen)) + break + else: + break + newy, newx = newy + dy, newx + dx + + def _king_mvs(self, y: int, x: int, white: bool) -> Generator[mv_struct]: + ownpieces, king = (WHITEPIECES, 'K') if white else (BLACKPIECES, 'k') + + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if newy in range(8) and newx in range(8) and self.pos[newy][newx] not in ownpieces: + yield ((y, x, '.'), (newy, newx, king)) + + def _castling_mvs(self, white: bool) -> Generator[mv_struct]: + short_castling, long_castling, color_piece, castling_row = (self.w_short_castling, self.w_long_castling, COLOR_WHITE, 7) if white else (self.b_short_castling, self.b_long_castling, COLOR_BLACK, 0) + + if short_castling and self.pos[castling_row][5] == '.' and self.pos[castling_row][6] == '.': + yield ((castling_row, 4, '.'), (castling_row, 5, color_piece['R']), (castling_row, 6, color_piece['K']), (castling_row, 7, '.')) + if long_castling and self.pos[castling_row][1] == '.' and self.pos[castling_row][2] == '.' and self.pos[castling_row][3] == '.': + yield ((castling_row, 0, '.'), (castling_row, 2, color_piece['K']), (castling_row, 3, color_piece['R']), (castling_row, 4, '.')) + + def _pawn_mvs(self, y: int, x: int, white: bool) -> Generator[mv_struct]: + + startingrow = 6 if white else 1 + forwardstep = -1 if white else 1 + promotionrow = 1 if white else 6 + + color_piece = COLOR_WHITE if white else COLOR_BLACK + enemypieces = BLACKPIECES if white else WHITEPIECES + + newy = y + forwardstep + + if newy in range(8) and self.pos[newy][x] == '.': + if y == promotionrow: + for promotion in {color_piece['Q'], color_piece['R'], color_piece['N'], color_piece['B']}: + yield ((y, x, '.'), (newy, x, promotion)) + else: + yield ((y, x, '.'), (newy, x, color_piece['P'])) + if y == startingrow and self.pos[newy + forwardstep][x] == '.': + yield ((y, x, '.'), (newy + forwardstep, x, color_piece['P'])) + for dx in (1, -1): + newx = x + dx + if newy in range(8) and newx in range(8) and self.pos[newy][newx] in enemypieces: + if y == promotionrow: + for i in (color_piece['Q'], color_piece['R'], color_piece['N'], color_piece['B']): + yield ((y, x, '.'), (newy, newx, i)) + else: # taking enemy piece + yield ((y, x, '.'), (newy, newx, color_piece['P'])) + if [newy, newx] == self.ep_sqr: # en passant + yield ((y, x, '.'), (newy, newx, color_piece['P']), (y, newx, '.')) + + def all_mvs(self, white: bool) -> Generator[mv_struct]: + color_piece = COLOR_WHITE if white else COLOR_BLACK + mv_generators = {color_piece['P']: self._pawn_mvs, color_piece['R']: self._rook_mvs, color_piece['N']: self._knight_mvs, color_piece['B']: self._bishop_mvs, color_piece['Q']: self._queen_mvs, color_piece['K']: self._king_mvs} + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + if generator := mv_generators.get(piece): + yield from generator(y, x, white) + yield from self._castling_mvs(white) + + def reach(self, white: bool) -> tuple: + reach = (([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], [])) + color_piece, forwardstep, startingrow, enemypieces = (COLOR_WHITE, -1, 6, BLACKPIECES) if white else (COLOR_BLACK, 1, 1, WHITEPIECES) + short_castling, long_castling, castling_row = (self.w_short_castling, self.w_long_castling, 7) if white else (self.b_short_castling, self.b_long_castling, 0) + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + + if piece == color_piece['R']: + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newy in range(8) and newx in range(8): + if self.pos[newy][newx] != '.': + reach[newy][newx].append((y, x, piece)) + break + reach[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == color_piece['N']: + directions = ((1, 2), (1, -2), (2, 1), (2, -1), (-1, 2), (-1, -2), (-2, 1), (-2, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if newy in range(8) and newx in range(8): + reach[newy][newx].append((y, x, piece)) + + elif piece == color_piece['B']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + if self.pos[newy][newx] != '.': + reach[newy][newx].append((y, x, piece)) + break + reach[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == color_piece['Q']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + if self.pos[newy][newx] != '.': + reach[newy][newx].append((y, x, piece)) + break + reach[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == color_piece['K']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if newy in range(8) and newx in range(8): + reach[newy][newx].append((y, x, piece)) + + if short_castling and self.pos[castling_row][5] == '.' and self.pos[castling_row][6] == '.': + reach[castling_row][6].append((castling_row, 4, piece)) + if long_castling and self.pos[castling_row][2] == '.' and self.pos[castling_row][3] == '.': + reach[castling_row][2].append((castling_row, 4, piece)) + + elif piece == color_piece['P']: + if self.pos[y + forwardstep][x] == '.': + reach[y + forwardstep][x].append((y, x, piece)) + if y == startingrow and self.pos[y + (forwardstep * 2)][x] == '.': + reach[y + (forwardstep * 2)][x].append((y, x, piece)) + for dx in (1, -1): + newx = x + dx + if y + forwardstep in range(8) and newx in range(8) and (self.pos[y + forwardstep][newx] in enemypieces or self.ep_sqr == (y + forwardstep, newx)): + reach[y + forwardstep][newx].append((y, x, piece)) + return reach + + def control(self, white: bool) -> tuple: + control = (([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], []), ([], [], [], [], [], [], [], [])) + color_piece, colorenemypiece, forwardstep = (COLOR_WHITE, COLOR_BLACK, -1) if white else (COLOR_BLACK, COLOR_WHITE, 1) + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + + if piece == color_piece['R']: + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newy in range(8) and newx in range(8): + if self.pos[newy][newx] not in {'.', color_piece['R'], color_piece['Q']}: + control[newy][newx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == color_piece['N']: + directions = ((1, 2), (1, -2), (2, 1), (2, -1), (-1, 2), (-1, -2), (-2, 1), (-2, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if newy in range(8) and newx in range(8): + control[newy][newx].append((y, x, piece)) + + elif piece == color_piece['B']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + if self.pos[newy][newx] not in {'.', color_piece['Q']}: + control[newy][newx].append((y, x, piece)) + if self.pos[newy][newx] == color_piece['P'] and dy == forwardstep: + control[newy][newx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == color_piece['Q']: + directions = ((1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + if self.pos[newy][newx] not in {'.', color_piece['R'], color_piece['Q']}: + control[newy][newx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + while newx in range(8) and newy in range(8): + if self.pos[newy][newx] not in {'.', color_piece['B'], color_piece['Q']}: + control[newy][newx].append((y, x, piece)) + if self.pos[newy][newx] == color_piece['P'] and dy == forwardstep: + control[newy + dy][newx + dx].append((y, x, piece)) + break + control[newy][newx].append((y, x, piece)) + newy, newx = newy + dy, newx + dx + + elif piece == color_piece['K']: + directions = ((1, 1), (1, -1), (-1, 1), (-1, -1), (1, 0), (0, 1), (-1, 0), (0, -1)) + for dy, dx in directions: + newy, newx = y + dy, x + dx + if newy in range(8) and newx in range(8): + control[newy][newx].append((y, x, piece)) + + elif piece == color_piece['P']: + for dx in (1, -1): + newx = x + dx + if y + forwardstep in range(8) and newx in range(8): + control[y + forwardstep][newx].append((y, x, piece)) + if self.ep_sqr == (y + forwardstep, newx) and self.pos[y][newx] == colorenemypiece['P']: + control[y][newx].append((y, x, piece)) + return control + + def legal_mvs(self, white: bool) -> Generator[mv_struct]: + enemycontrol = self.control(not white) + color_piece = COLOR_WHITE if white else COLOR_BLACK + short_castling, long_castling = ((self.w_short_castling, self.w_long_castling) if white else (self.b_short_castling, self.b_long_castling)) + + for mv in self.all_mvs(white): + if mv == ((7, 4, '.'), (7, 5, color_piece['R']), (7, 6, color_piece['K']), (7, 7, '.')) and (enemycontrol[7][5] or enemycontrol[7][4] or not short_castling): + continue + elif mv == ((7, 0, '.'), (7, 2, color_piece['K']), (7, 3, color_piece['R']), (7, 4, '.')) and (enemycontrol[7][3] or enemycontrol[7][4] or not long_castling): + continue + self.do(mv) + if any(self.pos[single_mv[0]][single_mv[1]] == color_piece['K'] for enemy_mv in self.all_mvs(not white) for single_mv in enemy_mv): + self.undo() + continue + self.undo() + yield mv + + def _fifty_mv_rule(self) -> None: + if self.fifty_mv_ctr == 100: + userinput = input('\n50 moves have been played without capture or pawnpush. Do you want to force a draw? [Y/n] > ') + if userinput in {'', 'yes', 'y', 'Y'}: + self.render(self.white if self.bot is not None else not self.bot) + print('\nDraw due to fifty move rule!\n') + raise SystemExit + + def _mv_rep(self) -> None: + if self.pos_log.count(self.pos_log[-1]) == 3: + self.render(self.white if self.bot is not None else not self.bot) + print('\nDRAW DUE TO MOVE REPITITION!\n') + raise SystemExit + + def check_pos(self) -> None: + for white in {True, False}: + if not [*self.legal_mvs(not white)]: + self.render(self.white if self.bot is not None else not self.bot) + if self._is_checkmate(white): + print('\nWHITE WON BY CHECKMATE!\n') if white else print('\nBLACK WON BY CHECKMATE!\n') + raise SystemExit + print('\nSTALEMATE!\n') + raise SystemExit + self._fifty_mv_rule(); self._mv_rep() + + def do(self, mv: mv_struct) -> None: + save = [] + for single_mv in mv: + save.append((self.pos[single_mv[0]][single_mv[1]], single_mv[0], single_mv[1], single_mv[2])) + self.pos[single_mv[0]][single_mv[1]] = single_mv[2] + self.log.append(tuple(save)) + + def undo(self) -> None: + lastmv = self.log.pop() + for single_mv in lastmv: + self.pos[single_mv[1]][single_mv[2]] = single_mv[0] + + def make_mv(self, mv: mv_struct, white: bool) -> None: + self.asked_draw, self.ep_sqr = False, None + color_piece, forwardstep = (COLOR_WHITE, -1) if white else (COLOR_BLACK, 1) + self.last_move_capture = self._is_capture(mv) + + if mv[1][2] == color_piece['P'] and mv[1][0] == mv[0][0] + (2 * forwardstep): # EP square + self.ep_sqr = (mv[0][0] + forwardstep, mv[0][1]) + + save = [] + pawn_mv = False + + for single_mv in mv: + save.append((self.pos[single_mv[0]][single_mv[1]], single_mv[0], single_mv[1], single_mv[2])) + if single_mv[2] == color_piece['P']: # checks if pawnmove to reset 50-mv-rule + pawn_mv = True + + match single_mv[:2]: + case (7, 0): + self.w_long_castling = False + case (7, 4): + self.w_short_castling, self.w_long_castling = False, False + case (7, 7): + self.w_short_castling = False + case (0, 0): + self.b_long_castling = False + case (0, 4): + self.b_short_castling, self.b_long_castling = False, False + case (0, 7): + self.b_short_castling = False + + self.pos[single_mv[0]][single_mv[1]] = single_mv[2] + + self.fifty_mv_ctr = 0 if pawn_mv or self.last_move_capture else self.fifty_mv_ctr + 1 + self.half_mv_ctr += 1 + self.log.append(tuple(save)) + self.pos_log.append(copy.deepcopy(self.pos)) + self.end_game = self.is_end_game() + self.check_pos() + + def _is_check(self, white: bool, mv: mv_struct | None = None) -> bool: + colorenemypiece = COLOR_BLACK if white else COLOR_WHITE + if not mv: + if any(self.pos[single_mv[0]][single_mv[1]] == colorenemypiece['K'] for mv in self.all_mvs(white) for single_mv in mv): + return True + return False + self.do(mv) + if any(self.pos[single_mv[0]][single_mv[1]] == colorenemypiece['K'] for mv in self.all_mvs(white) for single_mv in mv): + self.undo() + return True + self.undo() + return False + + def _is_checkmate(self, white: bool, mv: mv_struct | None = None) -> bool: + colorenemypiece = COLOR_BLACK if white else COLOR_WHITE + if not mv: + if not [*self.legal_mvs(not white)]: + if not any(self.pos[single_mv[0]][single_mv[1]] == colorenemypiece['K'] for mv in self.all_mvs(white) for single_mv in mv): + return False + return True + self.do(mv) + if not [*self.legal_mvs(not white)]: + if not any(self.pos[single_mv[0]][single_mv[1]] == colorenemypiece['K'] for mv in self.all_mvs(white) for single_mv in mv): + self.undo() + return False + self.undo() + return True + + def _is_capture(self, mv: mv_struct) -> bool: + capture = 0 + for single_mv in mv: + capture += (1 if single_mv[2] == '.' else capture -1) + if not capture: + return True + return False + + def set_fen(self, fen_str: str) -> bool | None: + try: + board_str, color_str, castling_str, ep_str, fifty_mv_str, full_mv_str = fen_str.strip().split() + except ValueError: + return False + + tmp_pos = [] + board_lst = board_str.split('/') + if len(board_lst) != 8: + return False + for row_str in board_lst: + tmp_row = [] + for char in row_str: + if char == '.' or char in WHITEPIECES | BLACKPIECES: + tmp_row.append(char) + elif char in {'1', '2', '3', '4', '5', '6', '7', '8'}: + tmp_row.extend(['.'] * int(char)) + else: + return False + tmp_pos.append(tmp_row) + if len(tmp_pos) != 8: + return False + self.pos = tuple(tmp_pos) + + self.white = color_str == 'w' + if not self.white and color_str != 'b': + return False + + if castling_str != '-' and set(castling_str) <= {'K', 'Q', 'k', 'q'} or sorted(castling_str) != list(castling_str): + return False + self.w_short_castling = 'K' in castling_str + self.w_long_castling = 'Q' in castling_str + self.b_short_castling = 'k' in castling_str + self.b_long_castling = 'q' in castling_str + + if ep_str == '-': + self.ep_sqr = None + elif len(ep_str) == 2 and ep_str[0] in ALPH_TO_INT and ep_str[1] in NUM_TO_INT and NUM_TO_INT[ep_str[1]] in {2, 5}: + self.ep_sqr = (NUM_TO_INT[ep_str[1]], ALPH_TO_INT[ep_str[0]]) + else: + return False + + if fifty_mv_str.isdigit(): + self.fifty_mv_ctr = int(fifty_mv_str) + + if full_mv_str.isdigit(): + self.half_mv_ctr = int(full_mv_str) * 2 + (1 if color_str == 'b' else 0) + + self.check_pos(); return True + + def get_fen(self, white: bool) -> str: + + row_strs = [] + for row in self.pos: + row_str = '' + space_ctr = 0 + for piece in row: + if piece == '.': + space_ctr += 1 + elif piece in WHITEPIECES or piece in BLACKPIECES: + if space_ctr: + row_str += str(space_ctr) + row_str += piece + space_ctr = 0 + if space_ctr: + row_str += str(space_ctr) + row_strs.append(row_str) + board_str = '/'.join(row_strs) + + color_str = 'w' if white else 'b' + + castling_str = ('K' if self.w_short_castling else '') + ('Q' if self.w_long_castling else '') + ('k' if self.b_short_castling else '') + ('q' if self.b_long_castling else '') + castling_str = '-' if not castling_str else castling_str + + ep_str = '-' if self.ep_sqr == None else (INT_TO_ALPH[self.ep_sqr[1]] + INT_TO_NUM[self.ep_sqr[0]]) + + fifty_mv_str = str(self.fifty_mv_ctr) + + full_mv_str = str(self.half_mv_ctr // 2) + + fen_str = ' '.join([board_str, color_str, castling_str, ep_str, fifty_mv_str, full_mv_str]) + return fen_str + + def _game_controls(self, userinput: tuple, white: bool = None) -> bool | None: + if userinput in {'/m', '/menu', '?', 'h', 'help', '/h', '/help', '-h', '-help', '--help'}: + print((''' +/m, /menu > gamecontrols, opens this menu +/q, /quit > quit game +/s, /save > save game to FEN +/t, /turnboard > turn board position +/p, /printboard > reprint board +/d, /draw > offer draw +/r, /resign > resign game +/f, /forcedraw > force draw if 50 move rule applies +/i, /import > import game from FEN + +Read the manual for more information''')) + return True + + elif userinput in {'/q', '/quit'}: + print(f'\nFEN-notation > {self.get_fen(white)}\n') + raise SystemExit + + elif userinput in {'/s', '/save'}: + print('\nFEN-notation >', self.get_fen(white)) + return True + + elif userinput in {'/t', '/turnboard'}: + self.board_turned = not self.board_turned + self.render(self.white if self.bot is not None else not self.bot) + return True + + elif userinput in {'/p', '/printboard'}: + self.render(self.white if self.bot is not None else not self.bot) + return True + + elif userinput in {'/d', '/draw'}: + if not self.asked_draw: + self.asked_draw = True + if (white and self.eval_pos() < 0) or (not white and self.eval_pos() > 0): + print('\nDRAW\n') + raise SystemExit + elif self.eval_pos() == 0: + if random.choices([True, False], weights = [1, 5], k = 1)[0]: + print('\nDRAW\n') + raise SystemExit + print('\nNO DRAW') + return True + print('\nNO DRAW') + return True + print('\nAlready asked for draw this mv') + return True + + elif userinput in {'/r', '/resign'}: + print('\nBLACK WON BY RESIGNATION\n') if white else print('\nWHITE WON BY RESIGNATION\n') + raise SystemExit + + elif userinput in {'/f', '/forcedraw'}: + if self.fifty_mv_ctr > 99: + print('\nWhite forced DRAW\n') if white else print('\nBlack forced DRAW\n') + raise SystemExit + print('\n50-move-rule does not apply') + return True + + elif userinput in {'/i', '/import'}: + if not self.set_fen(input('\nPaste FEN-position here > ')): + print('!INVALID FEN!') + return True + return False + + def find_piece(self, item: str) -> tuple: + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + if piece == item: + return (y, x) + + def parse(self, userinput: str, white: bool) -> tuple: + color_piece = COLOR_WHITE if white else COLOR_BLACK + short_castling, long_castling, castling_row = (self.w_short_castling, self.w_long_castling, 7) if white else (self.b_short_castling, self.b_long_castling, 0) + + if self._game_controls(userinput, white): + userinput = input('\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + + userinput = userinput.strip() + check_or_checkmate = '' + capture = False + promotion = '' + + if userinput: + for check_or_checkmate_option, check_code in chessconf.CHECK_OR_CHECKMATE_MAP.items(): + if userinput.endswith(check_or_checkmate_option): + check_or_checkmate = check_code + userinput = userinput[:-len(check_or_checkmate_option)] + break + + if userinput: + if userinput in chessconf.CASTLING_MAP: + if chessconf.CASTLING_MAP[userinput]: + user_mv = ((castling_row, 4, '.'), (castling_row, 5, 'R'), (castling_row, 6, 'K'), (castling_row, 7, '.')) + else: + user_mv = ((castling_row, 0, '.'), (castling_row, 2, 'K'), (castling_row, 3, 'R'), (castling_row, 4, '.')) + if (parsed := self._validate(user_mv, white, check_or_checkmate, capture, promotion)): + return parsed + + promotion = None + + for promotion_option, promotion_code in chessconf.PROMOTION_MAP.items(): + if userinput.endswith(promotion_option): + promotion = color_piece[promotion_code] + userinput = userinput[:-len(promotion_option)] + break + + if len(userinput) >= 2 and userinput[-2] in ALPH_TO_INT and userinput[-1] in NUM_TO_INT: + to_y = NUM_TO_INT[userinput[-1]] + to_x = ALPH_TO_INT[userinput[-2]] + userinput = userinput[:-2] + + from_y = None + from_x = None + from_piece = color_piece['P'] + + if userinput: + abbr_piece = False + for abbr in WHITEPIECES: # need capitalized piece abbreviations + if userinput.startswith(abbr): + from_piece = color_piece[abbr] + abbr_piece = True + userinput = userinput[1:] + break + + if not abbr_piece: + for piece_option, piece_code in chessconf.PIECE_MAP.items(): + if userinput.startswith(piece_option): + from_piece = color_piece[piece_code] + userinput = userinput[len(piece_option):] + break + + if userinput: + for action_option, action_code in chessconf.ACTION_MAP.items(): + if userinput.endswith(action_option): + capture = True if action_code == 'x' else False + userinput = userinput[:-len(action_option)] + break + + if userinput: + from_coords = False + if userinput[-1] in NUM_TO_INT: + from_y = NUM_TO_INT[userinput[-1]] + from_coords = True + userinput = userinput[:-1] + + if userinput: + if userinput[-1] in ALPH_TO_INT: + from_x = ALPH_TO_INT[userinput[-1]] + from_coords = True + userinput = userinput[:-1] + if from_y is not None: + from_piece = self.pos[from_y][from_x] + + if from_coords: + if userinput in {' ', ' on '}: + userinput = '' + + if not userinput: + matchingattackers = [attacker for attacker in self.reach(white)[to_y][to_x] if attacker[2] == from_piece] + if from_y is not None and from_x is not None: + attackers = [attacker for attacker in matchingattackers if attacker[0] == from_y and attacker[1] == from_x] + elif from_y is not None: + attackers = [attacker for attacker in matchingattackers if attacker[0] == from_y] + elif from_x is not None: + attackers = [attacker for attacker in matchingattackers if attacker[1] == from_x] + else: + attackers = matchingattackers + + if len(attackers) == 1: + from_y = attackers[0][0] + from_x = attackers[0][1] + + if promotion: + if from_piece == color_piece['P']: + user_mv = ((from_y, from_x, '.'), (to_y, to_x, promotion)) + validation = self._validate(user_mv, white, check_or_checkmate, capture, promotion) + if validation: + return validation + else: + if from_piece == color_piece['K'] and short_castling and to_y == castling_row and to_x == 6: + user_mv = ((castling_row, 4, '.'), (castling_row, 5, color_piece['R']), (castling_row, 6, color_piece['K']), (castling_row, 7, '.')) + elif from_piece == color_piece['K'] and long_castling and to_y == castling_row and to_x == 2: + user_mv = ((castling_row, 0, '.'), (castling_row, 2, color_piece['K']), (castling_row, 3, color_piece['R']), (castling_row, 4, '.')) + elif from_piece == color_piece['P'] and self.ep_sqr == (to_y, to_x): + user_mv = ((from_y, from_x, '.'), (to_y, to_x, from_piece), (from_y, to_x, '.')) + else: + user_mv = ((from_y, from_x, '.'), (to_y, to_x, from_piece)) + if validation := self._validate(user_mv, white, check_or_checkmate, capture, promotion): + return validation + elif len(attackers) > 1: + userinput = input(''' +Please specify which piece to move. + +Enter your move in algebraic notation > ''') + return self.parse(userinput, white) + + print(('\n!INVALID INPUT! Read the manual for more information.')) + return self.parse(input('\nEnter your move in algebraic notation > '), white) + + def _validate(self, user_mv: mv_struct, white: bool, check_or_checkmate: str = '', capture: bool = False, promotion: str = '') -> tuple | None: + enemycontrol = self.control(not white) + color_piece = COLOR_WHITE if white else COLOR_BLACK + short_castling = ((7, 4, '.'), (7, 5, 'R'), (7, 6, 'K'), (7, 7, '.')) if white else ((0, 4, '.'), (0, 5, 'r'), (0, 6, 'k'), (0, 7, '.')) + long_castling = ((7, 0, '.'), (7, 2, 'K'), (7, 3, 'R'), (7, 4, '.')) if white else ((0, 0, '.'), (0, 2, 'k'), (0, 3, 'r'), (0, 4, '.')) + + if user_mv in self.legal_mvs(white): + notcheck = check_or_checkmate == '+' and not self._is_check(white, user_mv) + notcheckmate = check_or_checkmate == '#' and not self._is_checkmate(white, user_mv) + notcapture = capture and not self._is_capture(user_mv) + + if notcheck or notcheckmate or notcapture: + if notcheck and notcapture: + userinput = input('\nmove is neither a check nor a capture. Do you want to proceed? [Y/n] > ') + elif notcheckmate and notcapture: + userinput = input('\nmove is neither a checkmate nor a capture. Do you want to proceed? [Y/n] > ') + elif notcheck: + userinput = input('\nmove is not a check. Do you want to proceed? [Y/n] > ') + elif notcheckmate: + userinput = input('\nmove is not a checkmate. Do you want to proceed? [Y/n] > ') + elif notcapture: + userinput = input('\nmove is not a capture. Do you want to proceed? [Y/n] > ') + if userinput in {'y', 'yes', '1', '', 'Y'}: + return user_mv + userinput = input('\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + return user_mv + + if user_mv in self.all_mvs(white): + if any(single_mv[2] == color_piece['K'] for single_mv in user_mv): + if user_mv in (short_castling, long_castling) and enemycontrol[user_mv[0][0]][4]: + print(enemycontrol[user_mv[0][0]][4]) + print('\nKing cannot castle if in check.') + elif (user_mv == short_castling and not enemycontrol[user_mv[0][0]][6]) or (user_mv == long_castling and not enemycontrol[user_mv[0][0]][2]): + print('\nKing cannot castle through enemy controlled square.') + else: + print('\nSquare controlled by enemy.') + else: + y, x = self.find_piece(color_piece['K']) + if enemycontrol[y][x]: + print('\nKing is in check.') + else: + print('\nPiece is pinned to king.') + userinput = input('\nEnter your move in algebraic notation > ') + return self.parse(userinput, white) + + def is_end_game(self) -> bool: + white_queen_ctr = 0 + white_minor_pieces_ctr = 0 + black_queen_ctr = 0 + black_minor_pieces_ctr = 0 + other_pieces = False + for row in self.pos: + for piece in row: + if piece in {'N', 'B'}: + white_minor_pieces_ctr += 1 + if piece == 'Q': + white_queen_ctr += 1 + else: + other_pieces = True + if piece in {'n', 'b'}: + black_minor_pieces_ctr += 1 + if piece == 'q': + black_queen_ctr += 1 + else: + other_pieces = True + + if not white_queen_ctr and not black_queen_ctr: + return True + if white_queen_ctr == 1 and black_queen_ctr == 1: + if white_minor_pieces_ctr <= 1 and black_minor_pieces_ctr <= 1 and not other_pieces: + return True + return False + + def eval_pos(self) -> float: + value = 0 + for y, row in enumerate(self.pos): + for x, piece in enumerate(row): + if piece != '.': + if piece in {'K', 'k'}: + if self.end_game: + value += chessconf.PIECEVALUE[piece] + chessconf.POSTABLES[piece + '_end'][y][x] + else: + value += chessconf.PIECEVALUE[piece] + chessconf.POSTABLES[piece + '_middle'][y][x] + else: + value += chessconf.PIECEVALUE[piece] + chessconf.POSTABLES[piece][y][x] + return value + + def minimax(self, depth: int, ismax: bool, alpha: float | None = -float('inf'), beta: float | None = float('inf')) -> float: + if depth <= 0 and not self.last_move_capture: + return self.eval_pos() + + if ismax: + bestvalue = float('-inf') + for mv in self.all_mvs(True): + self.do(mv) + minimaxvalue = self.minimax(depth - 1, not ismax, alpha, beta) + self.undo() + if minimaxvalue > bestvalue: + bestvalue = minimaxvalue + if bestvalue > alpha: + alpha = bestvalue + if alpha >= beta: + break + return bestvalue + else: + bestvalue = float('inf') + for mv in self.all_mvs(False): + self.do(mv) + minimaxvalue = self.minimax(depth - 1, not ismax, alpha, beta) + self.undo() + if minimaxvalue < bestvalue: + bestvalue = minimaxvalue + if bestvalue < beta: + beta = bestvalue + if alpha >= beta: + break + return bestvalue + + def best_mvs(self, white: bool, depth: int = chessconf.minimax_depth) -> tuple: + if white: + bestvalue, best_mv_list = float('-inf'), [] + for mv in self.legal_mvs(True): + self.do(mv) + minimaxvalue = self.minimax(depth - 1, not white) + self.undo() + if minimaxvalue == bestvalue: + best_mv_list.append(mv) + elif minimaxvalue > bestvalue: + bestvalue, best_mv_list = minimaxvalue, [mv] + legalbest_mvs = [mv for mv in best_mv_list if mv in self.legal_mvs(True)] + return tuple(legalbest_mvs) + else: + bestvalue, best_mv_list = float('inf'), [] + for mv in self.legal_mvs(False): + self.do(mv) + minimaxvalue = self.minimax(depth - 1, not white) + self.undo() + if minimaxvalue == bestvalue: + best_mv_list.append(mv) + elif minimaxvalue < bestvalue: + bestvalue, best_mv_list = minimaxvalue, [mv] + legalbest_mvs = [mv for mv in best_mv_list if mv in self.legal_mvs(False)] + return tuple(legalbest_mvs) + + def stockfish_mv(self, white: bool, depth: int = chessconf.stockfish_depth) -> str | None: + stockfish = subprocess.Popen(chessconf.STOCKFISH_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True) + stockfish.stdin.write(f'position fen {self.get_fen(white)}\ngo depth {depth}\n') + stockfish.stdin.flush() + while True: + output = stockfish.stdout.readline().strip() + if 'bestmove' in output: + mv = output.split(' ')[1] + stockfish.stdin.close() + stockfish.terminate() + return None if mv == '(none)' else mv + + def select_game(self) -> typing.Callable | typing.Callable | typing.Callable | False: + i = 0 + while i < 3: + userinput = input(''' +(1) > play against minimax +(2) > play against stockfish +(3) > pass the board to a friend + +Choose a game mode > ''') + if userinput in {'1', 'one', '(1)', 'ONE', '', 'm', 'minimax', 'M', 'Minimax', 'MINIMAX'}: + return self.play_minimax + elif userinput in {'2', 'two', '(2)', 'TWO', 's', 'stockfish', 'S', 'Stockfish', 'STOCKFISH'}: + return self.play_stockfish + elif userinput in {'3', 'three', '(3)', 'THREE', 'p', 'pass', 'P', 'Pass', 'PASS', 'f', 'friend', 'F', 'FRIEND'}: + return self.pass_and_play + if not self._game_controls(userinput): + i += 1 + return False + + def select_color(self) -> bool: + i = 0 + while i < 3: + userinput = input(''' +(1) > play white +(2) > play black +(3) > play random color + +Choose a color > ''') + if userinput in {'1', 'one', '(1)', 'ONE', 'w', 'white', 'W', 'White', 'WHITE'}: + return True + elif userinput in {'2', 'two', '(2)', 'TWO', 'b', 'black', 'B', 'Black', 'BLACK'}: + return False + elif userinput in {'3', 'three', '(3)', 'THREE', '', 'r', 'random', 'R', 'Random', 'RANDOM'}: + return random.choice(True, False) + if not self._game_controls(userinput): + i += 1 + return random.choice(True, False) + + def pass_and_play(self, white: bool = True) -> None: + while True: + self.render(white) + userinput = input('\nEnter your move in algebraic notation > ') + user_mv = self.parse(userinput, white) + self.make_mv(user_mv, white) + white = not white + + def play_minimax(self, white: bool = True, depth: int = chessconf.minimax_depth) -> None: + self.bot = True + if white: + self.bot = False + self.render(True) + userinput = input('\nEnter your move in algebraic notation > ') + user_mv = self.parse(userinput, True) + self.make_mv(user_mv, True) + while True: + enemy_mv = random.choice(self.best_mvs(not white, depth)) + self.make_mv(enemy_mv, not white) + self.render(white) + userinput = input('\nEnter your move in algebraic notation > ') + user_mv = self.parse(userinput, white) + self.make_mv(user_mv, white) + + def play_stockfish(self, white: bool = True, depth: int = chessconf.stockfish_depth) -> None: + self.bot = True + if white: + self.bot = False + self.render(True) + userinput = input('\nEnter your move in algebraic notation > ') + user_mv = self.parse(userinput, True) + self.make_mv(user_mv, True) + while True: + enemy_return = self.stockfish_mv(not white, depth) + enemy_mv = self.parse(enemy_return, not white) + self.make_mv(enemy_mv, not white) + self.render(white) + userinput = input('\nEnter your move in algebraic notation > ') + user_mv = self.parse(userinput, white) + self.make_mv(user_mv, white) + +if __name__ == '__main__': + board = Board() + game = board.select_game() + color = board.select_color() + game(color)
\ No newline at end of file diff --git a/chess_manual.txt b/chess_manual.txt new file mode 100644 index 0000000..355094b --- /dev/null +++ b/chess_manual.txt @@ -0,0 +1,30 @@ +_________ .__ _____ .__ +\_ ___ \| |__ ____ ______ ______ / \ _____ ____ __ _______ | | +/ \ \/| | \_/ __ \ / ___// ___// \ / \\__ \ / \| | \__ \ | | +\ \___| Y \ ___/ \___ \ \___ \/ Y \/ __ \| | \ | // __ \| |__ + \______ /___| /\___ >____ >____ >____|__ (____ /___| /____/(____ /____/ + \/ \/ \/ \/ \/ \/ \/ \/ \/ + +Both short algebraic (SAN) and long algebraic (UCI) are valid input methods. +Remember to use uppercase for piece (R, N, B, Q, K, P) and lowercase +to select square (e4, f3, etc.). + +┌─┐┌─┐┌──┐┌──┐┌─┐ ┌─┐┌──┐┌──┐ ┌─┐┌─┐┌─┐┌──┐┌─┐ +│b││x││a8││=q││+│ │Q││c3││e5│ │R││2││-││c1││#│ +└┬┘└┬┘└─┬┘└─┬┘└┬┘ └┬┘└─┬┘└─┬┘ └┬┘└┬┘└┬┘└─┬┘└┬┘ + │ │ │ │ │ └───┼───┼────┴──┼──┼───┼──┼── 1 > attacker + └──┼───┼───┼──┼────────┴───┼───────┴──┼───┼──┼── 2 > attackersquare + └───┼───┼──┼────────────┼──────────┴───┼──┼── 3 > captures/goes to + └───┼──┼────────────┴──────────────┴──┼── 4 > targetsquare + └──┼──────────────────────────────┼── 5 > pawn promotion + └──────────────────────────────┴── 6 > check/checkmate + +1 > R, N, B, Q, K, P - remember to use capital letters! +2 > required if column (a-h), row (1-8) or both (a1-h8) uncertain +3 > (optional) +4 > always required with column (a-h) and row (1-8) coordinates +5 > required if pawn is promoted (Q, R, N, B) +6 > (optional) note '+' to say check and '#' to say checkmate + +Valid inputs > 'rook on 2 goes to c1 with check', 'Nf3', 'e2e4' +'b takes c8 /q CHECKMATE', 'O-O-O', 'castle queenside', 'd4', etc.
\ No newline at end of file diff --git a/chessconf.py b/chessconf.py new file mode 100644 index 0000000..6b1d296 --- /dev/null +++ b/chessconf.py @@ -0,0 +1,220 @@ +# _________ .__ _________ _____.__ +# \_ ___ \| |__ ____ ______ _____\_ ___ \ ____ _____/ ____\__| ____ +# / \ \/| | \_/ __ \ / ___// ___/ \ \/ / _ \ / \ __\| |/ ___\ +# \ \___| Y \ ___/ \___ \ \___ \\ \___( <_> ) | \ | | / /_/ > +# \______ /___| /\___ >____ >____ >\______ /\____/|___| /__| |__\___ / +# \/ \/ \/ \/ \/ \/ \/ /_____/ +''' +cool ascii > http://patorjk.com/software/taag +chess-ICON > https://en.wikipedia.org/wiki/Chess_symbols_in_Unicode +more cool unicode ICON > https://www.unicode.org/charts/ +color codes cheatsheet > https://gist.github.com/ConnerWill/d4b6c776b509add763e17f9f113fd25b''' + +import typing + +# ------------ BOARD ----------------- +''' +black > '\x1b[30m' +red > '\x1b[31m' +green > '\x1b[32m' +yellow > '\x1b[33m' +blue > '\x1b[34m' +magenta > '\x1b[35m' +cyan > '\x1b[36m' +white > '\x1b[37m' ''' + +WHITECOLOR: typing.Final[str] = '\x1b[36m' +BLACKCOLOR: typing.Final[str] = '\x1b[31m' +SPACECOLOR: typing.Final[str] = '' + +WHITE_KING_ICON: typing.Final[str] = '\u265A' +WHITE_QUEEN_ICON: typing.Final[str] = '\u265B' +WHITE_ROOK_ICON: typing.Final[str] = '\u265C' +WHITE_BISHOP_ICON: typing.Final[str] = '\u265D' +WHITE_KNIGHT_ICON: typing.Final[str] = '\u265E' +WHITE_PAWN_ICON: typing.Final[str] = '\u265F' + +SPACE_ICON: str = ' ' + +BLACK_KING_ICON: str = '\u265A' +BLACK_QUEEN_ICON: str = '\u265B' +BLACK_ROOK_ICON: str = '\u265C' +BLACK_BISHOP_ICON: str = '\u265D' +BLACK_KNIGHT_ICON: str = '\u265E' +BLACK_PAWN_ICON: str = '\u265F' + +STOCKFISH_PATH: str = '/opt/homebrew/bin/stockfish' # path to installed stockfish bin +stockfish_depth: int = 10 # default calculation depth for stockfish engine +minimax_depth: int = 4 # default calculation depth for minimax algorithm + +# ------------ PARSING -------------- + +PIECE_MAP: typing.Final[dict[str, str]] = { # add other languages ('Springer': 'N') + 'rook': 'R', 'Rook': 'R', 'ROOK': 'R', 'Turm': 'R', 'T': 'R', + 'knight': 'N', 'Knight': 'N', 'KNIGHT': 'N', 'Springer': 'N', 'S': 'N', + 'bishop': 'B', 'Bishop': 'B', 'BISHOP': 'B', 'L': 'B', 'Läufer': 'B', + 'queen': 'Q', 'Queen': 'Q', 'QUEEN': 'Q', 'Dame': 'Q', 'D': 'Q', + 'king': 'K', 'King': 'K', 'KING': 'K', + 'pawn': 'P', 'Pawn': 'P', 'PAWN': 'P'} + +# value = True if capture else False +ACTION_MAP: typing.Final[dict[str, bool]] = {' captures ': True, ' takes ': True, ' goes to ': False, ' goes ': False, ' to ': False, ' x ': True, ' - ': False, ' / ': False, 'x': True, '-': False, '/': False, '_': False, ' ': False} # put longer strings to the front so they match before ' ' does! + +PROMOTION_MAP: typing.Final[dict[str, str]] = { + ' queen': 'Q', ' = q': 'Q', ' =q': 'Q', ' /q': 'Q', '=q': 'Q', '/q': 'Q', ' q': 'Q', 'q': 'Q', ' QUEEN': 'Q', ' Queen': 'Q', ' = Q': 'Q', ' =Q': 'Q', ' /Q': 'Q', '=Q': 'Q', '/Q': 'Q', ' Q': 'Q', 'Q': 'Q', + ' rook': 'R', ' = r': 'R', ' =r': 'R', ' /r': 'R', '=r': 'R', '/r': 'R', ' r': 'R', 'r': 'R', ' ROOK': 'R', ' Rook': 'R', ' = R': 'R', ' =R': 'R', ' /R': 'R', '=R': 'R', '/R': 'R', ' R': 'R', 'R': 'R', + ' knight': 'N', ' = n': 'N', ' =n': 'N', ' /n': 'N', '=n': 'N', '/n': 'N', ' n': 'N', 'n': 'N', ' KNIGHT': 'N', ' Knight': 'N', ' = N': 'N', ' =N': 'N', ' /N': 'N', '=N': 'N', '/N': 'N', ' N': 'N', 'N': 'N', + ' bishop': 'B', ' = b': 'B', ' =b': 'B', ' /b': 'B', '=b': 'B', '/b': 'B', ' b': 'B', 'b': 'B', ' BISHOP': 'B', ' Bishop': 'B', ' = B': 'B', ' =B': 'B', ' /B': 'B', '=B': 'B', '/B': 'B', ' B': 'B', 'B': 'B'} + +# value = True if short castling else False +CASTLING_MAP: typing.Final[dict[str, bool]] = { + 'short castling': True, 'castle short': True, 'kingside castling': True, 'castle kingside': True, 'O-O': True, '0-0': True, '00': True, 'o-o': True, 'oo': True, 'OO': True, + 'long castling': False, 'castle long': False, 'queenside castling': False, 'castle queenside': False, 'O-O-O': False, '0-0-0': False, '000': False, 'o-o-o': False, 'ooo': False, 'OOO': False} + +# value = True if check else False (checkmate) +CHECK_OR_CHECKMATE_MAP: typing.Final[dict[str, str]] = { + ' with check': '+', ' CHECK': '+', ' check': '+', ' +': '+', '+': '+', + ' with checkmate': '#', ' CHECKMATE': '#', ' checkmate': '#', ' ++': '#', ' #': '#', '++': '#', '#': '#'} + +# ------------ EVAL FUNCTION -------------- + +PIECEVALUE: typing.Final[dict[str, int]] = {'K': 20_000, 'Q': 900, 'R': 500, 'B': 330, 'N': 320, 'P': 100,'k': -20_000, 'q': -900, 'r': -500, 'b': -330, 'n': -320, 'p': -100, '.': 0} + +postables_struct = dict[str, tuple[ + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int], + tuple[int, int, int, int, int, int, int, int]]] + +POSTABLES: typing.Final[postables_struct] = { + + 'R': ((0, 0, 0, 0, 0, 0, 0, 0), + (5, 10, 10, 10, 10, 10, 10, 5), + (-5, 0, 0, 0, 0, 0, 0, -5), + (-5, 0, 0, 0, 0, 0, 0, -5), + (-5, 0, 0, 0, 0, 0, 0, -5), + (-5, 0, 0, 0, 0, 0, 0, -5), + (-5, 0, 0, 0, 0, 0, 0, -5), + (0, 0, 0, 5, 5, 0, 0, 0)), + + 'N': ((-50, -40, -30, -30, -30, -30, -40, -50), + (-40, -20, 0, 0, 0, 0, -20, -40), + (-30, 0, 10, 15, 15, 10, 0, -30), + (-30, 5, 15, 20, 20, 15, 5, -30), + (-30, 0, 15, 20, 20, 15, 0, -30), + (-30, 5, 10, 15, 15, 10, 5, -30), + (-40, -20, 0, 5, 5, 0, -20, -40), + (-50, -40, -30, -30, -30, -30, -40, -50)), + + 'B': ((-20, -10, -10, -10, -10, -10, -10, -20), + (-10, 0, 0, 0, 0, 0, 0, -10), + (-10, 0, 5, 10, 10, 5, 0, -10), + (-10, 5, 5, 10, 10, 5, 5, -10), + (-10, 0, 10, 10, 10, 10, 0, -10), + (-10, 10, 10, 10, 10, 10, 10, -10), + (-10, 5, 0, 0, 0, 0, 5, -10), + (-20, -10, -10, -10, -10, -10, -10, -20)), + + 'Q': ((-20, -10, -10, -5, -5, -10, -10, -20), + (-10, 0, 0, 0, 0, 0, 0, -10), + (-10, 0, 5, 5, 5, 5, 0, -10), + (-5, 0, 5, 5, 5, 5, 0, -5), + (0, 0, 5, 5, 5, 5, 0, -5), + (-10, 5, 5, 5, 5, 5, 0, -10), + (-10, 0, 5, 0, 0, 0, 0, -10), + (-20, -10, -10, -5, -5, -10, -10, -20)), + + 'P': ((0, 0, 0, 0, 0, 0, 0, 0), + (50, 50, 50, 50, 50, 50, 50, 50), + (10, 10, 20, 30, 30, 20, 10, 10), + (5, 5, 10, 25, 25, 10, 5, 5), + (0, 0, 0, 20, 20, 0, 0, 0), + (5, -5, -10, 0, 0, -10, -5, 5), + (5, 10, 10, -20, -20, 10, 10, 5), + (0, 0, 0, 0, 0, 0, 0, 0)), + + 'p': ((0, 0, 0, 0, 0, 0, 0, 0), + (-5, -10, -10, 20, 20, -10, -10, -5), + (-5, 5, 10, 0, 0, 10, 5, -5), + (0, 0, 0, -20, -20, 0, 0, 0), + (-5, -5, -10, -25, -25, -10, -5, -5), + (-10, -10, -20, -30, -30, -20, -10, -10), + (-50, -50, -50, -50, -50, -50, -50, -50), + (0, 0, 0, 0, 0, 0, 0, 0)), + + 'K_end': ((-50, -40, -30, -20, -20, -30, -40, -50), # end game + (-30, -20, -10, 0, 0, -10, -20, -30), + (-30, -10, 20, 30, 30, 20, -10, -30), + (-30, -10, 30, 40, 40, 30, -10, -30), + (-30, -10, 30, 40, 40, 30, -10, -30), + (-30, -10, 20, 30, 30, 20, -10, -30), + (-30, -30, 0, 0, 0, 0, -30, -30), + (-50, -30, -30, -30, -30, -30, -30, -50)), + + 'K_middle': ((-30, -40, -40, -50, -50, -40, -40, -30), # middle game + (-30, -40, -40, -50, -50, -40, -40, -30), + (-30, -40, -40, -50, -50, -40, -40, -30), + (-30, -40, -40, -50, -50, -40, -40, -30), + (-20, -30, -30, -40, -40, -30, -30, -20), + (-10, -20, -20, -20, -20, -20, -20, -10), + (20, 20, 0, 0, 0, 0, 20, 20), + (20, 30, 10, 0, 0, 10, 30, 20), + ), + 'r': ((0, 0, 0, -5, -5, 0, 0, 0), + (5, 0, 0, 0, 0, 0, 0, 5), + (5, 0, 0, 0, 0, 0, 0, 5), + (5, 0, 0, 0, 0, 0, 0, 5), + (5, 0, 0, 0, 0, 0, 0, 5), + (5, 0, 0, 0, 0, 0, 0, 5), + (-5, -10, -10, -10, -10, -10, -10, -5), + (0, 0, 0, 0, 0, 0, 0, 0)), + + 'n': ((50, 40, 30, 30, 30, 30, 40, 50), + (40, 20, 0, -5, -5, 0, 20, 10), + (30, -5, -10, -15, -15, -10, -5, 30), + (30, 0, -15, -20, -20, -15, 0, 30), + (30, -5, -15, -20, -20, -15, -5, 30), + (30, 0, -10, -15, -15, -10, 0, 30), + (40, 20, 0, 0, 0, 0, 20, 40), + (50, 40, 30, 30, 30, 30, 40, 50)), + + 'b': ((20, 10, 10, 10, 10, 10, 10, 20), + (10, -5, 0, 0, 0, 0, 0, 0, -5, 10), + (10, -10, -10, -10, -10, -10, -10, 10), + (10, 0, -10, -10, -10, -10, 0, 10), + (10, -5, -5, -5, -5, -5, -5, 10), + (10, 0, -5, -10, -10, -5, 0, 10), + (10, 0, 0, 0, 0, 0, 0, 10), + (20, 10, 10, 10, 10, 10, 10, 20)), + + 'k_end': ((50, 30, 30, 30, 30, 30, 30, 50), # end game + (30, 30, 0, 0, 0, 0, 30, 30), + (30, 10, -20, -30, -30, -20, 10, 30), + (30, 10, -30, -40, -40, -30, 10, 30), + (30, 10, -30, -40, -40, -30, 10, 30), + (30, 10, -20, -30, -30, -20, 10, 30), + (30, 20, 10, 0, 0, 10, 20, 30), + (50, 40, 30, 20, 20, 30, 40, 50)), + + 'k_middle': ((-20, -30, -10, 0, 0, -10, -30, -20), # middle game + (-20, -20, 0, 0, 0, 0, -20, -20), + (10, 20, 20, 20, 20, 20, 20, 10), + (20, 30, 30, 40, 40, 30, 30, 20), + (30, 40, 40, 50, 50, 40, 40, 30), + (30, 40, 40, 50, 50, 40, 40, 30), + (30, 40, 40, 50, 50, 40, 40, 30), + (30, 40, 40, 50, 50, 40, 40, 30)), + + 'q': ((20, 10, 10, -5, -5, 10, 10, 20), + (10, 0, -5, 0, 0, 0, 0, 10), + (10, -5, -5, -5, -5, -5, 0, 10), + (0, 0, -5, -5, -5, -5, 0, 5), + (5, 0, -5, -5, -5, -5, 0, 5), + (10, 0, -5, -5, -5, -5, 0, 10), + (10, 0, 0, 0, 0, 0, 0, 10), + (20, 10, 10, 5, 5, 10, 10, 20)) + }
\ No newline at end of file diff --git a/gen_piece_move_tables.py b/gen_piece_move_tables.py new file mode 100644 index 0000000..a0efbf7 --- /dev/null +++ b/gen_piece_move_tables.py @@ -0,0 +1,285 @@ +import typing + +def int_to_hexstr(bm: int) -> str: + if bm > 0xFFFF_FFFF_FFFF_FFFF: + return False + return '0x' + '_'.join(f'{bm:016X}'[i : i + 4] for i in range(0, 16, 4)) + +def fill_bm(bm: int, bits: int) -> int: + filled_bm = 0 + for idx in range(64): + if bm & 1 << idx: + if bits & 1: + filled_bm |= 1 << idx + bits >>= 1 + return filled_bm + +def count_ones(bm: int) -> int: + ctr = 0 + for idx in range(64): + ctr += bm >> idx & 1 + return ctr + +def all_bit_combs(bm: int): + for bit_comb in range(2**count_ones(bm)): + yield fill_bm(bm, bit_comb) + +def n_mvs_mask(idx: int) -> int: + bm = 0 + for dir in (-6, -10, -17, -15, 6, 10, 17, 15): + new_idx = idx + dir + if abs(new_idx%8 - idx%8) < 3 and new_idx in range(64): + bm |= 1 << new_idx + return bm + +def k_mvs_mask(idx: int) -> int: + bm = 0 + for dir in (1, -1, -7, -8, -9, 7, 8, 9): + new_idx = idx + dir + if abs(new_idx%8 - idx%8) < 2 and new_idx in range(64): + bm |= 1 << new_idx + return bm + +def wp_double_push_mask(idx: int) -> int: + if idx // 8 == 6: + return 1 << (idx - 16) + return 0 + +def wp_push_mask(idx: int) -> int: + if not idx // 8 == 0: + return 1 << (idx - 8) + return 0 + +def wp_left_take_mask(idx: int) -> int: + if not idx // 8 == 0 and not idx % 8 == 0: + return 1 << (idx - 9) + return 0 + +def wp_right_take_mask(idx: int) -> int: + if not idx // 8 == 0 and not idx % 8 == 7: + return 1 << (idx - 7) + return 0 + +def bp_double_push_mask(idx: int) -> int: + if idx // 8 == 1: + return 1 << (idx + 16) + return 0 + +def bp_push_mask(idx: int) -> int: + if not idx // 8 == 7: + return 1 << (idx + 8) + return 0 + +def bp_left_take_mask(idx: int) -> int: + if not idx // 8 == 7 and not idx % 8 == 0: + return 1 << (idx + 7) + return 0 + +def bp_right_take_mask(idx: int) -> int: + if not idx // 8 == 7 and not idx % 8 == 7: + return 1 << (idx + 9) + return 0 + +def l_border_slide(idx: int) -> int: + slide_bm = 0 + if idx % 8 == 7: + return slide_bm + while True: + idx += 1 + slide_bm |= 1 << idx + if idx % 8 == 7: + return slide_bm + +def l_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx % 8 == 7: + return slide_bm + while True: + idx += 1 + slide_bm |= 1 << idx + if idx % 8 == 7 or bm & 1 << idx: + return slide_bm + +def r_border_slide(idx: int) -> int: + slide_bm = 0 + if idx % 8 == 0: + return slide_bm + while True: + idx -= 1 + slide_bm |= 1 << idx + if idx % 8 == 0: + return slide_bm + +def r_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx % 8 == 0: + return slide_bm + while True: + idx -= 1 + slide_bm |= 1 << idx + if idx % 8 == 0 or bm & 1 << idx: + return slide_bm + +def u_border_slide(idx: int) -> int: + slide_bm = 0 + if idx // 8 == 7: + return slide_bm + while True: + idx += 8 + slide_bm |= 1 << idx + if idx // 8 == 7: + return slide_bm + +def u_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx // 8 == 7: + return slide_bm + while True: + idx += 8 + slide_bm |= 1 << idx + if idx // 8 == 7 or bm & 1 << idx: + return slide_bm + +def d_border_slide(idx: int) -> int: + slide_bm = 0 + if idx // 8 == 0: + return slide_bm + while True: + idx -= 8 + slide_bm |= 1 << idx + if idx // 8 == 0: + return slide_bm + +def d_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx // 8 == 0: + return slide_bm + while True: + idx -= 8 + slide_bm |= 1 << idx + if idx // 8 == 0 or bm & 1 << idx: + return slide_bm + +def lu_border_slide(idx: int) -> int: + slide_bm = 0 + if idx % 8 == 7 or idx // 8 == 7: + return slide_bm + while True: + idx += 9 + slide_bm |= 1 << idx + if idx % 8 == 7 or idx // 8 == 7: + return slide_bm + +def lu_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx % 8 == 7 or idx // 8 == 7: + return slide_bm + while True: + idx += 9 + slide_bm |= 1 << idx + if idx % 8 == 7 or idx // 8 == 7 or bm & 1 << idx: + return slide_bm + +def ld_border_slide(idx: int) -> int: + slide_bm = 0 + if idx % 8 == 7 or idx // 8 == 0: + return slide_bm + while True: + idx -= 7 + slide_bm |= 1 << idx + if idx % 8 == 7 or idx // 8 == 0: + return slide_bm + +def ld_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx % 8 == 7 or idx // 8 == 0: + return slide_bm + while True: + idx -= 7 + slide_bm |= 1 << idx + if idx % 8 == 7 or idx // 8 == 0 or bm & 1 << idx: + return slide_bm + +def ru_border_slide(idx: int) -> int: + slide_bm = 0 + if idx % 8 == 0 or idx // 8 == 7: + return slide_bm + while True: + idx += 7 + slide_bm |= 1 << idx + if idx % 8 == 0 or idx // 8 == 7: + return slide_bm + +def ru_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx % 8 == 0 or idx // 8 == 7: + return slide_bm + while True: + idx += 7 + slide_bm |= 1 << idx + if idx % 8 == 0 or idx // 8 == 7 or bm & 1 << idx: + return slide_bm + +def rd_border_slide(idx: int) -> int: + slide_bm = 0 + if idx % 8 == 0 or idx // 8 == 0: + return slide_bm + while True: + idx -= 9 + slide_bm |= 1 << idx + if idx % 8 == 0 or idx // 8 == 0: + return slide_bm + +def rd_slide(bm: int, idx: int) -> int: + slide_bm = 0 + if idx % 8 == 0 or idx // 8 == 0: + return slide_bm + while True: + idx -= 9 + slide_bm |= 1 << idx + if idx % 8 == 0 or idx // 8 == 0 or bm & 1 << idx: + return slide_bm + +direction_sliding_func = { + 'L': l_slide, 'R': r_slide, 'U': u_slide, 'D': d_slide, + 'LU': lu_slide, 'LD': ld_slide, 'RU': ru_slide, 'RD': rd_slide, +} +direction_border_sliding_func = { + 'L': l_border_slide, 'R': r_border_slide, 'U': u_border_slide, 'D': d_border_slide, + 'LU': lu_border_slide, 'LD': ld_border_slide, 'RU': ru_border_slide, 'RD': rd_border_slide, +} + +def write_8x8_table(function: typing.Callable[[int], int], file_name: str = '8x8_table.py', tuple_name: str = 'TABLE', overwrite: bool = False) -> None: + f = open(file_name, 'w' if overwrite else 'a') + f.write(tuple_name + ' = (') + for idx in range(64): + if idx % 8 == 0: + f.write('\n ') + f.write(int_to_hexstr(function(idx)) + ', ') + f.write('\n)\n') + +def write_comb_dict(border_func: int, sliding_func: typing.Callable[[int, int], int], file_name: str = 'blocker_comb_table.py', tuple_name: str = 'BLOCKER_COMBS', overwrite: bool = False) -> None: + f = open(file_name, 'w' if overwrite else 'a') + f.write(tuple_name + ' = (') + for idx in range(64): + f.write('\n {') + for ctr, bit_comb in enumerate(all_bit_combs(border_func(idx))): + if ctr % 4 == 0: + f.write('\n ') + f.write(int_to_hexstr(bit_comb) + ': ' + int_to_hexstr(sliding_func(bit_comb, idx)) + ', ') + f.write('\n }, ') + f.write('\n)\n') + +def write_piece_move_tables(file_name: str = 'piece_move_tables.py', overwrite: bool = True) -> None: + if overwrite: + open(file_name, 'w') + func_dict = {'N': n_mvs_mask, 'K': k_mvs_mask, 'WP_DOUBLE_PUSH': wp_double_push_mask, 'WP_PUSH': wp_push_mask, 'WP_LEFT_TAKE': wp_left_take_mask, 'WP_RIGHT_TAKE': wp_right_take_mask, 'BP_DOUBLE_PUSH': bp_double_push_mask, 'BP_PUSH': bp_push_mask, 'BP_LEFT_TAKE': bp_left_take_mask, 'BP_RIGHT_TAKE': bp_right_take_mask} + for piece, func in func_dict.items(): + write_8x8_table(func, file_name, piece + '_MASK') + for direction in ('L', 'R', 'U', 'D', 'LU', 'LD', 'RU', 'RD'): + write_8x8_table(direction_border_sliding_func[direction], file_name, direction + '_BORDER_MASK') + for direction in ('L', 'R', 'U', 'D', 'LU', 'LD', 'RU', 'RD'): + write_comb_dict(direction_border_sliding_func[direction], direction_sliding_func[direction], file_name, direction + '_MASK') + +if __name__ == '__main__': + write_piece_move_tables()
\ No newline at end of file diff --git a/loading_animation.py b/loading_animation.py new file mode 100644 index 0000000..fe4d51f --- /dev/null +++ b/loading_animation.py @@ -0,0 +1,27 @@ +from time import sleep + +loadingdelay = 0.1 + +('|', '/', '-', '\\') +('▁', '▂', '▃', '▄', '▅', '▆', '▇', '█', '▇', '▆', '▅', '▄', '▃', '▁') +('▉', '▊', '▋', '▌', '▍', '▎', '▏', '▎', '▍', '▌', '▋', '▊', '▉') +('┤', '┘', '┴', '└', '├', '┌', '┬', '┐') +('←', '↖', '↑', '↗', '→', '↘', '↓', '↙') +('⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷') +('⠁', '⠂', '⠄', '⡀', '⢀', '⠠', '⠐', '⠈') +('◡', '⊙', '◠') +('◢', '◣', '◤', '◥') +('◰', '◳', '◲', '◱') +('◴', '◷', '◶', '◵') +('◐', '◓', '◑', '◒') +('◡◡', '⊙⊙', '◠◠') +('♚ 🔫', '♚ -🔫', '♚ - 🔫', '♚- 🔫', '☠ 🔫') + +animation = ('←', '↖', '↑', '↗', '→', '↘', '↓', '↙') +def animate(): + while True: + for frame in animation: + print('\rloading ' + frame, end = '') + sleep(loadingdelay) + +animate()
\ No newline at end of file diff --git a/magic_machine.py b/magic_machine.py new file mode 100644 index 0000000..7a9658e --- /dev/null +++ b/magic_machine.py @@ -0,0 +1,37 @@ +import piece_move_tables + +def all_pos_rook(idx: int): + for left in piece_move_tables.L_BORDER_MASK[idx]: + for right in piece_move_tables.R_BORDER_MASK[idx]: + for up in piece_move_tables.U_BORDER_MASK[idx]: + for down in piece_move_tables.D_BORDER_MASK[idx]: + yield left | right | up | down + +def all_pos_bishop(idx: int): + for left_up in piece_move_tables.LU_BORDER_MASK[idx]: + for left_down in piece_move_tables.LD_BORDER_MASK[idx]: + for right_up in piece_move_tables.RU_BORDER_MASK[idx]: + for right_down in piece_move_tables.RD_BORDER_MASK[idx]: + yield left_up | left_down | right_up | right_down + +def all_pos_queen(idx: int): + for rook_directions in all_pos_rook(idx): + for bishop_directions in all_pos_bishop(idx): + yield rook_directions | bishop_directions + +def forever_magics(): + yield + +import time +starttime = time.time() + +for _ in range(10): + for pos in all_pos_queen(30): + var = pos + print('yes') + +# 21.63 +# 16.22 + +exectime = round(time.time() - starttime, 2) +print('exectime >', exectime)
\ No newline at end of file diff --git a/piece_move_tables.py b/piece_move_tables.py new file mode 100644 index 0000000..86c2741 --- /dev/null +++ b/piece_move_tables.py @@ -0,0 +1,4120 @@ +N_MASK = ( + 0x0000_0000_0002_0400, 0x0000_0000_0005_0800, 0x0000_0000_000A_1100, 0x0000_0000_0014_2200, 0x0000_0000_0028_4400, 0x0000_0000_0050_8800, 0x0000_0000_00A0_1000, 0x0000_0000_0040_2000, + 0x0000_0000_0204_0004, 0x0000_0000_0508_0008, 0x0000_0000_0A11_0011, 0x0000_0000_1422_0022, 0x0000_0000_2844_0044, 0x0000_0000_5088_0088, 0x0000_0000_A010_0010, 0x0000_0000_4020_0020, + 0x0000_0002_0400_0402, 0x0000_0005_0800_0805, 0x0000_000A_1100_110A, 0x0000_0014_2200_2214, 0x0000_0028_4400_4428, 0x0000_0050_8800_8850, 0x0000_00A0_1000_10A0, 0x0000_0040_2000_2040, + 0x0000_0204_0004_0200, 0x0000_0508_0008_0500, 0x0000_0A11_0011_0A00, 0x0000_1422_0022_1400, 0x0000_2844_0044_2800, 0x0000_5088_0088_5000, 0x0000_A010_0010_A000, 0x0000_4020_0020_4000, + 0x0002_0400_0402_0000, 0x0005_0800_0805_0000, 0x000A_1100_110A_0000, 0x0014_2200_2214_0000, 0x0028_4400_4428_0000, 0x0050_8800_8850_0000, 0x00A0_1000_10A0_0000, 0x0040_2000_2040_0000, + 0x0204_0004_0200_0000, 0x0508_0008_0500_0000, 0x0A11_0011_0A00_0000, 0x1422_0022_1400_0000, 0x2844_0044_2800_0000, 0x5088_0088_5000_0000, 0xA010_0010_A000_0000, 0x4020_0020_4000_0000, + 0x0400_0402_0000_0000, 0x0800_0805_0000_0000, 0x1100_110A_0000_0000, 0x2200_2214_0000_0000, 0x4400_4428_0000_0000, 0x8800_8850_0000_0000, 0x1000_10A0_0000_0000, 0x2000_2040_0000_0000, + 0x0004_0200_0000_0000, 0x0008_0500_0000_0000, 0x0011_0A00_0000_0000, 0x0022_1400_0000_0000, 0x0044_2800_0000_0000, 0x0088_5000_0000_0000, 0x0010_A000_0000_0000, 0x0020_4000_0000_0000, +) +K_MASK = ( + 0x0000_0000_0000_0302, 0x0000_0000_0000_0705, 0x0000_0000_0000_0E0A, 0x0000_0000_0000_1C14, 0x0000_0000_0000_3828, 0x0000_0000_0000_7050, 0x0000_0000_0000_E0A0, 0x0000_0000_0000_C040, + 0x0000_0000_0003_0203, 0x0000_0000_0007_0507, 0x0000_0000_000E_0A0E, 0x0000_0000_001C_141C, 0x0000_0000_0038_2838, 0x0000_0000_0070_5070, 0x0000_0000_00E0_A0E0, 0x0000_0000_00C0_40C0, + 0x0000_0000_0302_0300, 0x0000_0000_0705_0700, 0x0000_0000_0E0A_0E00, 0x0000_0000_1C14_1C00, 0x0000_0000_3828_3800, 0x0000_0000_7050_7000, 0x0000_0000_E0A0_E000, 0x0000_0000_C040_C000, + 0x0000_0003_0203_0000, 0x0000_0007_0507_0000, 0x0000_000E_0A0E_0000, 0x0000_001C_141C_0000, 0x0000_0038_2838_0000, 0x0000_0070_5070_0000, 0x0000_00E0_A0E0_0000, 0x0000_00C0_40C0_0000, + 0x0000_0302_0300_0000, 0x0000_0705_0700_0000, 0x0000_0E0A_0E00_0000, 0x0000_1C14_1C00_0000, 0x0000_3828_3800_0000, 0x0000_7050_7000_0000, 0x0000_E0A0_E000_0000, 0x0000_C040_C000_0000, + 0x0003_0203_0000_0000, 0x0007_0507_0000_0000, 0x000E_0A0E_0000_0000, 0x001C_141C_0000_0000, 0x0038_2838_0000_0000, 0x0070_5070_0000_0000, 0x00E0_A0E0_0000_0000, 0x00C0_40C0_0000_0000, + 0x0302_0300_0000_0000, 0x0705_0700_0000_0000, 0x0E0A_0E00_0000_0000, 0x1C14_1C00_0000_0000, 0x3828_3800_0000_0000, 0x7050_7000_0000_0000, 0xE0A0_E000_0000_0000, 0xC040_C000_0000_0000, + 0x0203_0000_0000_0000, 0x0507_0000_0000_0000, 0x0A0E_0000_0000_0000, 0x141C_0000_0000_0000, 0x2838_0000_0000_0000, 0x5070_0000_0000_0000, 0xA0E0_0000_0000_0000, 0x40C0_0000_0000_0000, +) +WP_DOUBLE_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0001_0000_0000, 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, 0x0000_0080_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +WP_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0001, 0x0000_0000_0000_0002, 0x0000_0000_0000_0004, 0x0000_0000_0000_0008, 0x0000_0000_0000_0010, 0x0000_0000_0000_0020, 0x0000_0000_0000_0040, 0x0000_0000_0000_0080, + 0x0000_0000_0000_0100, 0x0000_0000_0000_0200, 0x0000_0000_0000_0400, 0x0000_0000_0000_0800, 0x0000_0000_0000_1000, 0x0000_0000_0000_2000, 0x0000_0000_0000_4000, 0x0000_0000_0000_8000, + 0x0000_0000_0001_0000, 0x0000_0000_0002_0000, 0x0000_0000_0004_0000, 0x0000_0000_0008_0000, 0x0000_0000_0010_0000, 0x0000_0000_0020_0000, 0x0000_0000_0040_0000, 0x0000_0000_0080_0000, + 0x0000_0000_0100_0000, 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, 0x0000_0000_8000_0000, + 0x0000_0001_0000_0000, 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, 0x0000_0080_0000_0000, + 0x0000_0100_0000_0000, 0x0000_0200_0000_0000, 0x0000_0400_0000_0000, 0x0000_0800_0000_0000, 0x0000_1000_0000_0000, 0x0000_2000_0000_0000, 0x0000_4000_0000_0000, 0x0000_8000_0000_0000, + 0x0001_0000_0000_0000, 0x0002_0000_0000_0000, 0x0004_0000_0000_0000, 0x0008_0000_0000_0000, 0x0010_0000_0000_0000, 0x0020_0000_0000_0000, 0x0040_0000_0000_0000, 0x0080_0000_0000_0000, +) +WP_LEFT_TAKE_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0001, 0x0000_0000_0000_0002, 0x0000_0000_0000_0004, 0x0000_0000_0000_0008, 0x0000_0000_0000_0010, 0x0000_0000_0000_0020, 0x0000_0000_0000_0040, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0100, 0x0000_0000_0000_0200, 0x0000_0000_0000_0400, 0x0000_0000_0000_0800, 0x0000_0000_0000_1000, 0x0000_0000_0000_2000, 0x0000_0000_0000_4000, + 0x0000_0000_0000_0000, 0x0000_0000_0001_0000, 0x0000_0000_0002_0000, 0x0000_0000_0004_0000, 0x0000_0000_0008_0000, 0x0000_0000_0010_0000, 0x0000_0000_0020_0000, 0x0000_0000_0040_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0100_0000, 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, + 0x0000_0000_0000_0000, 0x0000_0001_0000_0000, 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0100_0000_0000, 0x0000_0200_0000_0000, 0x0000_0400_0000_0000, 0x0000_0800_0000_0000, 0x0000_1000_0000_0000, 0x0000_2000_0000_0000, 0x0000_4000_0000_0000, + 0x0000_0000_0000_0000, 0x0001_0000_0000_0000, 0x0002_0000_0000_0000, 0x0004_0000_0000_0000, 0x0008_0000_0000_0000, 0x0010_0000_0000_0000, 0x0020_0000_0000_0000, 0x0040_0000_0000_0000, +) +WP_RIGHT_TAKE_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0002, 0x0000_0000_0000_0004, 0x0000_0000_0000_0008, 0x0000_0000_0000_0010, 0x0000_0000_0000_0020, 0x0000_0000_0000_0040, 0x0000_0000_0000_0080, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0200, 0x0000_0000_0000_0400, 0x0000_0000_0000_0800, 0x0000_0000_0000_1000, 0x0000_0000_0000_2000, 0x0000_0000_0000_4000, 0x0000_0000_0000_8000, 0x0000_0000_0000_0000, + 0x0000_0000_0002_0000, 0x0000_0000_0004_0000, 0x0000_0000_0008_0000, 0x0000_0000_0010_0000, 0x0000_0000_0020_0000, 0x0000_0000_0040_0000, 0x0000_0000_0080_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, 0x0000_0000_8000_0000, 0x0000_0000_0000_0000, + 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, 0x0000_0080_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0200_0000_0000, 0x0000_0400_0000_0000, 0x0000_0800_0000_0000, 0x0000_1000_0000_0000, 0x0000_2000_0000_0000, 0x0000_4000_0000_0000, 0x0000_8000_0000_0000, 0x0000_0000_0000_0000, + 0x0002_0000_0000_0000, 0x0004_0000_0000_0000, 0x0008_0000_0000_0000, 0x0010_0000_0000_0000, 0x0020_0000_0000_0000, 0x0040_0000_0000_0000, 0x0080_0000_0000_0000, 0x0000_0000_0000_0000, +) +BP_DOUBLE_PUSH_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0100_0000, 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, 0x0000_0000_8000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +BP_PUSH_MASK = ( + 0x0000_0000_0000_0100, 0x0000_0000_0000_0200, 0x0000_0000_0000_0400, 0x0000_0000_0000_0800, 0x0000_0000_0000_1000, 0x0000_0000_0000_2000, 0x0000_0000_0000_4000, 0x0000_0000_0000_8000, + 0x0000_0000_0001_0000, 0x0000_0000_0002_0000, 0x0000_0000_0004_0000, 0x0000_0000_0008_0000, 0x0000_0000_0010_0000, 0x0000_0000_0020_0000, 0x0000_0000_0040_0000, 0x0000_0000_0080_0000, + 0x0000_0000_0100_0000, 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, 0x0000_0000_8000_0000, + 0x0000_0001_0000_0000, 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, 0x0000_0080_0000_0000, + 0x0000_0100_0000_0000, 0x0000_0200_0000_0000, 0x0000_0400_0000_0000, 0x0000_0800_0000_0000, 0x0000_1000_0000_0000, 0x0000_2000_0000_0000, 0x0000_4000_0000_0000, 0x0000_8000_0000_0000, + 0x0001_0000_0000_0000, 0x0002_0000_0000_0000, 0x0004_0000_0000_0000, 0x0008_0000_0000_0000, 0x0010_0000_0000_0000, 0x0020_0000_0000_0000, 0x0040_0000_0000_0000, 0x0080_0000_0000_0000, + 0x0100_0000_0000_0000, 0x0200_0000_0000_0000, 0x0400_0000_0000_0000, 0x0800_0000_0000_0000, 0x1000_0000_0000_0000, 0x2000_0000_0000_0000, 0x4000_0000_0000_0000, 0x8000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +BP_LEFT_TAKE_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0100, 0x0000_0000_0000_0200, 0x0000_0000_0000_0400, 0x0000_0000_0000_0800, 0x0000_0000_0000_1000, 0x0000_0000_0000_2000, 0x0000_0000_0000_4000, + 0x0000_0000_0000_0000, 0x0000_0000_0001_0000, 0x0000_0000_0002_0000, 0x0000_0000_0004_0000, 0x0000_0000_0008_0000, 0x0000_0000_0010_0000, 0x0000_0000_0020_0000, 0x0000_0000_0040_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0100_0000, 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, + 0x0000_0000_0000_0000, 0x0000_0001_0000_0000, 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0100_0000_0000, 0x0000_0200_0000_0000, 0x0000_0400_0000_0000, 0x0000_0800_0000_0000, 0x0000_1000_0000_0000, 0x0000_2000_0000_0000, 0x0000_4000_0000_0000, + 0x0000_0000_0000_0000, 0x0001_0000_0000_0000, 0x0002_0000_0000_0000, 0x0004_0000_0000_0000, 0x0008_0000_0000_0000, 0x0010_0000_0000_0000, 0x0020_0000_0000_0000, 0x0040_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0100_0000_0000_0000, 0x0200_0000_0000_0000, 0x0400_0000_0000_0000, 0x0800_0000_0000_0000, 0x1000_0000_0000_0000, 0x2000_0000_0000_0000, 0x4000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +BP_RIGHT_TAKE_MASK = ( + 0x0000_0000_0000_0200, 0x0000_0000_0000_0400, 0x0000_0000_0000_0800, 0x0000_0000_0000_1000, 0x0000_0000_0000_2000, 0x0000_0000_0000_4000, 0x0000_0000_0000_8000, 0x0000_0000_0000_0000, + 0x0000_0000_0002_0000, 0x0000_0000_0004_0000, 0x0000_0000_0008_0000, 0x0000_0000_0010_0000, 0x0000_0000_0020_0000, 0x0000_0000_0040_0000, 0x0000_0000_0080_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0200_0000, 0x0000_0000_0400_0000, 0x0000_0000_0800_0000, 0x0000_0000_1000_0000, 0x0000_0000_2000_0000, 0x0000_0000_4000_0000, 0x0000_0000_8000_0000, 0x0000_0000_0000_0000, + 0x0000_0002_0000_0000, 0x0000_0004_0000_0000, 0x0000_0008_0000_0000, 0x0000_0010_0000_0000, 0x0000_0020_0000_0000, 0x0000_0040_0000_0000, 0x0000_0080_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0200_0000_0000, 0x0000_0400_0000_0000, 0x0000_0800_0000_0000, 0x0000_1000_0000_0000, 0x0000_2000_0000_0000, 0x0000_4000_0000_0000, 0x0000_8000_0000_0000, 0x0000_0000_0000_0000, + 0x0002_0000_0000_0000, 0x0004_0000_0000_0000, 0x0008_0000_0000_0000, 0x0010_0000_0000_0000, 0x0020_0000_0000_0000, 0x0040_0000_0000_0000, 0x0080_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0200_0000_0000_0000, 0x0400_0000_0000_0000, 0x0800_0000_0000_0000, 0x1000_0000_0000_0000, 0x2000_0000_0000_0000, 0x4000_0000_0000_0000, 0x8000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +L_BORDER_MASK = ( + 0x0000_0000_0000_00FE, 0x0000_0000_0000_00FC, 0x0000_0000_0000_00F8, 0x0000_0000_0000_00F0, 0x0000_0000_0000_00E0, 0x0000_0000_0000_00C0, 0x0000_0000_0000_0080, 0x0000_0000_0000_0000, + 0x0000_0000_0000_FE00, 0x0000_0000_0000_FC00, 0x0000_0000_0000_F800, 0x0000_0000_0000_F000, 0x0000_0000_0000_E000, 0x0000_0000_0000_C000, 0x0000_0000_0000_8000, 0x0000_0000_0000_0000, + 0x0000_0000_00FE_0000, 0x0000_0000_00FC_0000, 0x0000_0000_00F8_0000, 0x0000_0000_00F0_0000, 0x0000_0000_00E0_0000, 0x0000_0000_00C0_0000, 0x0000_0000_0080_0000, 0x0000_0000_0000_0000, + 0x0000_0000_FE00_0000, 0x0000_0000_FC00_0000, 0x0000_0000_F800_0000, 0x0000_0000_F000_0000, 0x0000_0000_E000_0000, 0x0000_0000_C000_0000, 0x0000_0000_8000_0000, 0x0000_0000_0000_0000, + 0x0000_00FE_0000_0000, 0x0000_00FC_0000_0000, 0x0000_00F8_0000_0000, 0x0000_00F0_0000_0000, 0x0000_00E0_0000_0000, 0x0000_00C0_0000_0000, 0x0000_0080_0000_0000, 0x0000_0000_0000_0000, + 0x0000_FE00_0000_0000, 0x0000_FC00_0000_0000, 0x0000_F800_0000_0000, 0x0000_F000_0000_0000, 0x0000_E000_0000_0000, 0x0000_C000_0000_0000, 0x0000_8000_0000_0000, 0x0000_0000_0000_0000, + 0x00FE_0000_0000_0000, 0x00FC_0000_0000_0000, 0x00F8_0000_0000_0000, 0x00F0_0000_0000_0000, 0x00E0_0000_0000_0000, 0x00C0_0000_0000_0000, 0x0080_0000_0000_0000, 0x0000_0000_0000_0000, + 0xFE00_0000_0000_0000, 0xFC00_0000_0000_0000, 0xF800_0000_0000_0000, 0xF000_0000_0000_0000, 0xE000_0000_0000_0000, 0xC000_0000_0000_0000, 0x8000_0000_0000_0000, 0x0000_0000_0000_0000, +) +R_BORDER_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0001, 0x0000_0000_0000_0003, 0x0000_0000_0000_0007, 0x0000_0000_0000_000F, 0x0000_0000_0000_001F, 0x0000_0000_0000_003F, 0x0000_0000_0000_007F, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0100, 0x0000_0000_0000_0300, 0x0000_0000_0000_0700, 0x0000_0000_0000_0F00, 0x0000_0000_0000_1F00, 0x0000_0000_0000_3F00, 0x0000_0000_0000_7F00, + 0x0000_0000_0000_0000, 0x0000_0000_0001_0000, 0x0000_0000_0003_0000, 0x0000_0000_0007_0000, 0x0000_0000_000F_0000, 0x0000_0000_001F_0000, 0x0000_0000_003F_0000, 0x0000_0000_007F_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0100_0000, 0x0000_0000_0300_0000, 0x0000_0000_0700_0000, 0x0000_0000_0F00_0000, 0x0000_0000_1F00_0000, 0x0000_0000_3F00_0000, 0x0000_0000_7F00_0000, + 0x0000_0000_0000_0000, 0x0000_0001_0000_0000, 0x0000_0003_0000_0000, 0x0000_0007_0000_0000, 0x0000_000F_0000_0000, 0x0000_001F_0000_0000, 0x0000_003F_0000_0000, 0x0000_007F_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0100_0000_0000, 0x0000_0300_0000_0000, 0x0000_0700_0000_0000, 0x0000_0F00_0000_0000, 0x0000_1F00_0000_0000, 0x0000_3F00_0000_0000, 0x0000_7F00_0000_0000, + 0x0000_0000_0000_0000, 0x0001_0000_0000_0000, 0x0003_0000_0000_0000, 0x0007_0000_0000_0000, 0x000F_0000_0000_0000, 0x001F_0000_0000_0000, 0x003F_0000_0000_0000, 0x007F_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0100_0000_0000_0000, 0x0300_0000_0000_0000, 0x0700_0000_0000_0000, 0x0F00_0000_0000_0000, 0x1F00_0000_0000_0000, 0x3F00_0000_0000_0000, 0x7F00_0000_0000_0000, +) +U_BORDER_MASK = ( + 0x0101_0101_0101_0100, 0x0202_0202_0202_0200, 0x0404_0404_0404_0400, 0x0808_0808_0808_0800, 0x1010_1010_1010_1000, 0x2020_2020_2020_2000, 0x4040_4040_4040_4000, 0x8080_8080_8080_8000, + 0x0101_0101_0101_0000, 0x0202_0202_0202_0000, 0x0404_0404_0404_0000, 0x0808_0808_0808_0000, 0x1010_1010_1010_0000, 0x2020_2020_2020_0000, 0x4040_4040_4040_0000, 0x8080_8080_8080_0000, + 0x0101_0101_0100_0000, 0x0202_0202_0200_0000, 0x0404_0404_0400_0000, 0x0808_0808_0800_0000, 0x1010_1010_1000_0000, 0x2020_2020_2000_0000, 0x4040_4040_4000_0000, 0x8080_8080_8000_0000, + 0x0101_0101_0000_0000, 0x0202_0202_0000_0000, 0x0404_0404_0000_0000, 0x0808_0808_0000_0000, 0x1010_1010_0000_0000, 0x2020_2020_0000_0000, 0x4040_4040_0000_0000, 0x8080_8080_0000_0000, + 0x0101_0100_0000_0000, 0x0202_0200_0000_0000, 0x0404_0400_0000_0000, 0x0808_0800_0000_0000, 0x1010_1000_0000_0000, 0x2020_2000_0000_0000, 0x4040_4000_0000_0000, 0x8080_8000_0000_0000, + 0x0101_0000_0000_0000, 0x0202_0000_0000_0000, 0x0404_0000_0000_0000, 0x0808_0000_0000_0000, 0x1010_0000_0000_0000, 0x2020_0000_0000_0000, 0x4040_0000_0000_0000, 0x8080_0000_0000_0000, + 0x0100_0000_0000_0000, 0x0200_0000_0000_0000, 0x0400_0000_0000_0000, 0x0800_0000_0000_0000, 0x1000_0000_0000_0000, 0x2000_0000_0000_0000, 0x4000_0000_0000_0000, 0x8000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +D_BORDER_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0001, 0x0000_0000_0000_0002, 0x0000_0000_0000_0004, 0x0000_0000_0000_0008, 0x0000_0000_0000_0010, 0x0000_0000_0000_0020, 0x0000_0000_0000_0040, 0x0000_0000_0000_0080, + 0x0000_0000_0000_0101, 0x0000_0000_0000_0202, 0x0000_0000_0000_0404, 0x0000_0000_0000_0808, 0x0000_0000_0000_1010, 0x0000_0000_0000_2020, 0x0000_0000_0000_4040, 0x0000_0000_0000_8080, + 0x0000_0000_0001_0101, 0x0000_0000_0002_0202, 0x0000_0000_0004_0404, 0x0000_0000_0008_0808, 0x0000_0000_0010_1010, 0x0000_0000_0020_2020, 0x0000_0000_0040_4040, 0x0000_0000_0080_8080, + 0x0000_0000_0101_0101, 0x0000_0000_0202_0202, 0x0000_0000_0404_0404, 0x0000_0000_0808_0808, 0x0000_0000_1010_1010, 0x0000_0000_2020_2020, 0x0000_0000_4040_4040, 0x0000_0000_8080_8080, + 0x0000_0001_0101_0101, 0x0000_0002_0202_0202, 0x0000_0004_0404_0404, 0x0000_0008_0808_0808, 0x0000_0010_1010_1010, 0x0000_0020_2020_2020, 0x0000_0040_4040_4040, 0x0000_0080_8080_8080, + 0x0000_0101_0101_0101, 0x0000_0202_0202_0202, 0x0000_0404_0404_0404, 0x0000_0808_0808_0808, 0x0000_1010_1010_1010, 0x0000_2020_2020_2020, 0x0000_4040_4040_4040, 0x0000_8080_8080_8080, + 0x0001_0101_0101_0101, 0x0002_0202_0202_0202, 0x0004_0404_0404_0404, 0x0008_0808_0808_0808, 0x0010_1010_1010_1010, 0x0020_2020_2020_2020, 0x0040_4040_4040_4040, 0x0080_8080_8080_8080, +) +LU_BORDER_MASK = ( + 0x8040_2010_0804_0200, 0x0080_4020_1008_0400, 0x0000_8040_2010_0800, 0x0000_0080_4020_1000, 0x0000_0000_8040_2000, 0x0000_0000_0080_4000, 0x0000_0000_0000_8000, 0x0000_0000_0000_0000, + 0x4020_1008_0402_0000, 0x8040_2010_0804_0000, 0x0080_4020_1008_0000, 0x0000_8040_2010_0000, 0x0000_0080_4020_0000, 0x0000_0000_8040_0000, 0x0000_0000_0080_0000, 0x0000_0000_0000_0000, + 0x2010_0804_0200_0000, 0x4020_1008_0400_0000, 0x8040_2010_0800_0000, 0x0080_4020_1000_0000, 0x0000_8040_2000_0000, 0x0000_0080_4000_0000, 0x0000_0000_8000_0000, 0x0000_0000_0000_0000, + 0x1008_0402_0000_0000, 0x2010_0804_0000_0000, 0x4020_1008_0000_0000, 0x8040_2010_0000_0000, 0x0080_4020_0000_0000, 0x0000_8040_0000_0000, 0x0000_0080_0000_0000, 0x0000_0000_0000_0000, + 0x0804_0200_0000_0000, 0x1008_0400_0000_0000, 0x2010_0800_0000_0000, 0x4020_1000_0000_0000, 0x8040_2000_0000_0000, 0x0080_4000_0000_0000, 0x0000_8000_0000_0000, 0x0000_0000_0000_0000, + 0x0402_0000_0000_0000, 0x0804_0000_0000_0000, 0x1008_0000_0000_0000, 0x2010_0000_0000_0000, 0x4020_0000_0000_0000, 0x8040_0000_0000_0000, 0x0080_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0200_0000_0000_0000, 0x0400_0000_0000_0000, 0x0800_0000_0000_0000, 0x1000_0000_0000_0000, 0x2000_0000_0000_0000, 0x4000_0000_0000_0000, 0x8000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +LD_BORDER_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0002, 0x0000_0000_0000_0004, 0x0000_0000_0000_0008, 0x0000_0000_0000_0010, 0x0000_0000_0000_0020, 0x0000_0000_0000_0040, 0x0000_0000_0000_0080, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0204, 0x0000_0000_0000_0408, 0x0000_0000_0000_0810, 0x0000_0000_0000_1020, 0x0000_0000_0000_2040, 0x0000_0000_0000_4080, 0x0000_0000_0000_8000, 0x0000_0000_0000_0000, + 0x0000_0000_0002_0408, 0x0000_0000_0004_0810, 0x0000_0000_0008_1020, 0x0000_0000_0010_2040, 0x0000_0000_0020_4080, 0x0000_0000_0040_8000, 0x0000_0000_0080_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0204_0810, 0x0000_0000_0408_1020, 0x0000_0000_0810_2040, 0x0000_0000_1020_4080, 0x0000_0000_2040_8000, 0x0000_0000_4080_0000, 0x0000_0000_8000_0000, 0x0000_0000_0000_0000, + 0x0000_0002_0408_1020, 0x0000_0004_0810_2040, 0x0000_0008_1020_4080, 0x0000_0010_2040_8000, 0x0000_0020_4080_0000, 0x0000_0040_8000_0000, 0x0000_0080_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0204_0810_2040, 0x0000_0408_1020_4080, 0x0000_0810_2040_8000, 0x0000_1020_4080_0000, 0x0000_2040_8000_0000, 0x0000_4080_0000_0000, 0x0000_8000_0000_0000, 0x0000_0000_0000_0000, + 0x0002_0408_1020_4080, 0x0004_0810_2040_8000, 0x0008_1020_4080_0000, 0x0010_2040_8000_0000, 0x0020_4080_0000_0000, 0x0040_8000_0000_0000, 0x0080_0000_0000_0000, 0x0000_0000_0000_0000, +) +RU_BORDER_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0100, 0x0000_0000_0001_0200, 0x0000_0000_0102_0400, 0x0000_0001_0204_0800, 0x0000_0102_0408_1000, 0x0001_0204_0810_2000, 0x0102_0408_1020_4000, + 0x0000_0000_0000_0000, 0x0000_0000_0001_0000, 0x0000_0000_0102_0000, 0x0000_0001_0204_0000, 0x0000_0102_0408_0000, 0x0001_0204_0810_0000, 0x0102_0408_1020_0000, 0x0204_0810_2040_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0100_0000, 0x0000_0001_0200_0000, 0x0000_0102_0400_0000, 0x0001_0204_0800_0000, 0x0102_0408_1000_0000, 0x0204_0810_2000_0000, 0x0408_1020_4000_0000, + 0x0000_0000_0000_0000, 0x0000_0001_0000_0000, 0x0000_0102_0000_0000, 0x0001_0204_0000_0000, 0x0102_0408_0000_0000, 0x0204_0810_0000_0000, 0x0408_1020_0000_0000, 0x0810_2040_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0100_0000_0000, 0x0001_0200_0000_0000, 0x0102_0400_0000_0000, 0x0204_0800_0000_0000, 0x0408_1000_0000_0000, 0x0810_2000_0000_0000, 0x1020_4000_0000_0000, + 0x0000_0000_0000_0000, 0x0001_0000_0000_0000, 0x0102_0000_0000_0000, 0x0204_0000_0000_0000, 0x0408_0000_0000_0000, 0x0810_0000_0000_0000, 0x1020_0000_0000_0000, 0x2040_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0100_0000_0000_0000, 0x0200_0000_0000_0000, 0x0400_0000_0000_0000, 0x0800_0000_0000_0000, 0x1000_0000_0000_0000, 0x2000_0000_0000_0000, 0x4000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, +) +RD_BORDER_MASK = ( + 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, 0x0000_0000_0000_0000, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0001, 0x0000_0000_0000_0002, 0x0000_0000_0000_0004, 0x0000_0000_0000_0008, 0x0000_0000_0000_0010, 0x0000_0000_0000_0020, 0x0000_0000_0000_0040, + 0x0000_0000_0000_0000, 0x0000_0000_0000_0100, 0x0000_0000_0000_0201, 0x0000_0000_0000_0402, 0x0000_0000_0000_0804, 0x0000_0000_0000_1008, 0x0000_0000_0000_2010, 0x0000_0000_0000_4020, + 0x0000_0000_0000_0000, 0x0000_0000_0001_0000, 0x0000_0000_0002_0100, 0x0000_0000_0004_0201, 0x0000_0000_0008_0402, 0x0000_0000_0010_0804, 0x0000_0000_0020_1008, 0x0000_0000_0040_2010, + 0x0000_0000_0000_0000, 0x0000_0000_0100_0000, 0x0000_0000_0201_0000, 0x0000_0000_0402_0100, 0x0000_0000_0804_0201, 0x0000_0000_1008_0402, 0x0000_0000_2010_0804, 0x0000_0000_4020_1008, + 0x0000_0000_0000_0000, 0x0000_0001_0000_0000, 0x0000_0002_0100_0000, 0x0000_0004_0201_0000, 0x0000_0008_0402_0100, 0x0000_0010_0804_0201, 0x0000_0020_1008_0402, 0x0000_0040_2010_0804, + 0x0000_0000_0000_0000, 0x0000_0100_0000_0000, 0x0000_0201_0000_0000, 0x0000_0402_0100_0000, 0x0000_0804_0201_0000, 0x0000_1008_0402_0100, 0x0000_2010_0804_0201, 0x0000_4020_1008_0402, + 0x0000_0000_0000_0000, 0x0001_0000_0000_0000, 0x0002_0100_0000_0000, 0x0004_0201_0000_0000, 0x0008_0402_0100_0000, 0x0010_0804_0201_0000, 0x0020_1008_0402_0100, 0x0040_2010_0804_0201, +) +L_MASK = ( + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_00FE, 0x0000_0000_0000_0002: 0x0000_0000_0000_0002, 0x0000_0000_0000_0004: 0x0000_0000_0000_0006, 0x0000_0000_0000_0006: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0008: 0x0000_0000_0000_000E, 0x0000_0000_0000_000A: 0x0000_0000_0000_0002, 0x0000_0000_0000_000C: 0x0000_0000_0000_0006, 0x0000_0000_0000_000E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0010: 0x0000_0000_0000_001E, 0x0000_0000_0000_0012: 0x0000_0000_0000_0002, 0x0000_0000_0000_0014: 0x0000_0000_0000_0006, 0x0000_0000_0000_0016: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0018: 0x0000_0000_0000_000E, 0x0000_0000_0000_001A: 0x0000_0000_0000_0002, 0x0000_0000_0000_001C: 0x0000_0000_0000_0006, 0x0000_0000_0000_001E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0020: 0x0000_0000_0000_003E, 0x0000_0000_0000_0022: 0x0000_0000_0000_0002, 0x0000_0000_0000_0024: 0x0000_0000_0000_0006, 0x0000_0000_0000_0026: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0028: 0x0000_0000_0000_000E, 0x0000_0000_0000_002A: 0x0000_0000_0000_0002, 0x0000_0000_0000_002C: 0x0000_0000_0000_0006, 0x0000_0000_0000_002E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0030: 0x0000_0000_0000_001E, 0x0000_0000_0000_0032: 0x0000_0000_0000_0002, 0x0000_0000_0000_0034: 0x0000_0000_0000_0006, 0x0000_0000_0000_0036: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0038: 0x0000_0000_0000_000E, 0x0000_0000_0000_003A: 0x0000_0000_0000_0002, 0x0000_0000_0000_003C: 0x0000_0000_0000_0006, 0x0000_0000_0000_003E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0040: 0x0000_0000_0000_007E, 0x0000_0000_0000_0042: 0x0000_0000_0000_0002, 0x0000_0000_0000_0044: 0x0000_0000_0000_0006, 0x0000_0000_0000_0046: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0048: 0x0000_0000_0000_000E, 0x0000_0000_0000_004A: 0x0000_0000_0000_0002, 0x0000_0000_0000_004C: 0x0000_0000_0000_0006, 0x0000_0000_0000_004E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0050: 0x0000_0000_0000_001E, 0x0000_0000_0000_0052: 0x0000_0000_0000_0002, 0x0000_0000_0000_0054: 0x0000_0000_0000_0006, 0x0000_0000_0000_0056: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0058: 0x0000_0000_0000_000E, 0x0000_0000_0000_005A: 0x0000_0000_0000_0002, 0x0000_0000_0000_005C: 0x0000_0000_0000_0006, 0x0000_0000_0000_005E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0060: 0x0000_0000_0000_003E, 0x0000_0000_0000_0062: 0x0000_0000_0000_0002, 0x0000_0000_0000_0064: 0x0000_0000_0000_0006, 0x0000_0000_0000_0066: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0068: 0x0000_0000_0000_000E, 0x0000_0000_0000_006A: 0x0000_0000_0000_0002, 0x0000_0000_0000_006C: 0x0000_0000_0000_0006, 0x0000_0000_0000_006E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0070: 0x0000_0000_0000_001E, 0x0000_0000_0000_0072: 0x0000_0000_0000_0002, 0x0000_0000_0000_0074: 0x0000_0000_0000_0006, 0x0000_0000_0000_0076: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0078: 0x0000_0000_0000_000E, 0x0000_0000_0000_007A: 0x0000_0000_0000_0002, 0x0000_0000_0000_007C: 0x0000_0000_0000_0006, 0x0000_0000_0000_007E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0080: 0x0000_0000_0000_00FE, 0x0000_0000_0000_0082: 0x0000_0000_0000_0002, 0x0000_0000_0000_0084: 0x0000_0000_0000_0006, 0x0000_0000_0000_0086: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0088: 0x0000_0000_0000_000E, 0x0000_0000_0000_008A: 0x0000_0000_0000_0002, 0x0000_0000_0000_008C: 0x0000_0000_0000_0006, 0x0000_0000_0000_008E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0090: 0x0000_0000_0000_001E, 0x0000_0000_0000_0092: 0x0000_0000_0000_0002, 0x0000_0000_0000_0094: 0x0000_0000_0000_0006, 0x0000_0000_0000_0096: 0x0000_0000_0000_0002, + 0x0000_0000_0000_0098: 0x0000_0000_0000_000E, 0x0000_0000_0000_009A: 0x0000_0000_0000_0002, 0x0000_0000_0000_009C: 0x0000_0000_0000_0006, 0x0000_0000_0000_009E: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00A0: 0x0000_0000_0000_003E, 0x0000_0000_0000_00A2: 0x0000_0000_0000_0002, 0x0000_0000_0000_00A4: 0x0000_0000_0000_0006, 0x0000_0000_0000_00A6: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00A8: 0x0000_0000_0000_000E, 0x0000_0000_0000_00AA: 0x0000_0000_0000_0002, 0x0000_0000_0000_00AC: 0x0000_0000_0000_0006, 0x0000_0000_0000_00AE: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00B0: 0x0000_0000_0000_001E, 0x0000_0000_0000_00B2: 0x0000_0000_0000_0002, 0x0000_0000_0000_00B4: 0x0000_0000_0000_0006, 0x0000_0000_0000_00B6: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00B8: 0x0000_0000_0000_000E, 0x0000_0000_0000_00BA: 0x0000_0000_0000_0002, 0x0000_0000_0000_00BC: 0x0000_0000_0000_0006, 0x0000_0000_0000_00BE: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00C0: 0x0000_0000_0000_007E, 0x0000_0000_0000_00C2: 0x0000_0000_0000_0002, 0x0000_0000_0000_00C4: 0x0000_0000_0000_0006, 0x0000_0000_0000_00C6: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00C8: 0x0000_0000_0000_000E, 0x0000_0000_0000_00CA: 0x0000_0000_0000_0002, 0x0000_0000_0000_00CC: 0x0000_0000_0000_0006, 0x0000_0000_0000_00CE: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00D0: 0x0000_0000_0000_001E, 0x0000_0000_0000_00D2: 0x0000_0000_0000_0002, 0x0000_0000_0000_00D4: 0x0000_0000_0000_0006, 0x0000_0000_0000_00D6: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00D8: 0x0000_0000_0000_000E, 0x0000_0000_0000_00DA: 0x0000_0000_0000_0002, 0x0000_0000_0000_00DC: 0x0000_0000_0000_0006, 0x0000_0000_0000_00DE: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00E0: 0x0000_0000_0000_003E, 0x0000_0000_0000_00E2: 0x0000_0000_0000_0002, 0x0000_0000_0000_00E4: 0x0000_0000_0000_0006, 0x0000_0000_0000_00E6: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00E8: 0x0000_0000_0000_000E, 0x0000_0000_0000_00EA: 0x0000_0000_0000_0002, 0x0000_0000_0000_00EC: 0x0000_0000_0000_0006, 0x0000_0000_0000_00EE: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00F0: 0x0000_0000_0000_001E, 0x0000_0000_0000_00F2: 0x0000_0000_0000_0002, 0x0000_0000_0000_00F4: 0x0000_0000_0000_0006, 0x0000_0000_0000_00F6: 0x0000_0000_0000_0002, + 0x0000_0000_0000_00F8: 0x0000_0000_0000_000E, 0x0000_0000_0000_00FA: 0x0000_0000_0000_0002, 0x0000_0000_0000_00FC: 0x0000_0000_0000_0006, 0x0000_0000_0000_00FE: 0x0000_0000_0000_0002, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_00FC, 0x0000_0000_0000_0004: 0x0000_0000_0000_0004, 0x0000_0000_0000_0008: 0x0000_0000_0000_000C, 0x0000_0000_0000_000C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0010: 0x0000_0000_0000_001C, 0x0000_0000_0000_0014: 0x0000_0000_0000_0004, 0x0000_0000_0000_0018: 0x0000_0000_0000_000C, 0x0000_0000_0000_001C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0020: 0x0000_0000_0000_003C, 0x0000_0000_0000_0024: 0x0000_0000_0000_0004, 0x0000_0000_0000_0028: 0x0000_0000_0000_000C, 0x0000_0000_0000_002C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0030: 0x0000_0000_0000_001C, 0x0000_0000_0000_0034: 0x0000_0000_0000_0004, 0x0000_0000_0000_0038: 0x0000_0000_0000_000C, 0x0000_0000_0000_003C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0040: 0x0000_0000_0000_007C, 0x0000_0000_0000_0044: 0x0000_0000_0000_0004, 0x0000_0000_0000_0048: 0x0000_0000_0000_000C, 0x0000_0000_0000_004C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0050: 0x0000_0000_0000_001C, 0x0000_0000_0000_0054: 0x0000_0000_0000_0004, 0x0000_0000_0000_0058: 0x0000_0000_0000_000C, 0x0000_0000_0000_005C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0060: 0x0000_0000_0000_003C, 0x0000_0000_0000_0064: 0x0000_0000_0000_0004, 0x0000_0000_0000_0068: 0x0000_0000_0000_000C, 0x0000_0000_0000_006C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0070: 0x0000_0000_0000_001C, 0x0000_0000_0000_0074: 0x0000_0000_0000_0004, 0x0000_0000_0000_0078: 0x0000_0000_0000_000C, 0x0000_0000_0000_007C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0080: 0x0000_0000_0000_00FC, 0x0000_0000_0000_0084: 0x0000_0000_0000_0004, 0x0000_0000_0000_0088: 0x0000_0000_0000_000C, 0x0000_0000_0000_008C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_0090: 0x0000_0000_0000_001C, 0x0000_0000_0000_0094: 0x0000_0000_0000_0004, 0x0000_0000_0000_0098: 0x0000_0000_0000_000C, 0x0000_0000_0000_009C: 0x0000_0000_0000_0004, + 0x0000_0000_0000_00A0: 0x0000_0000_0000_003C, 0x0000_0000_0000_00A4: 0x0000_0000_0000_0004, 0x0000_0000_0000_00A8: 0x0000_0000_0000_000C, 0x0000_0000_0000_00AC: 0x0000_0000_0000_0004, + 0x0000_0000_0000_00B0: 0x0000_0000_0000_001C, 0x0000_0000_0000_00B4: 0x0000_0000_0000_0004, 0x0000_0000_0000_00B8: 0x0000_0000_0000_000C, 0x0000_0000_0000_00BC: 0x0000_0000_0000_0004, + 0x0000_0000_0000_00C0: 0x0000_0000_0000_007C, 0x0000_0000_0000_00C4: 0x0000_0000_0000_0004, 0x0000_0000_0000_00C8: 0x0000_0000_0000_000C, 0x0000_0000_0000_00CC: 0x0000_0000_0000_0004, + 0x0000_0000_0000_00D0: 0x0000_0000_0000_001C, 0x0000_0000_0000_00D4: 0x0000_0000_0000_0004, 0x0000_0000_0000_00D8: 0x0000_0000_0000_000C, 0x0000_0000_0000_00DC: 0x0000_0000_0000_0004, + 0x0000_0000_0000_00E0: 0x0000_0000_0000_003C, 0x0000_0000_0000_00E4: 0x0000_0000_0000_0004, 0x0000_0000_0000_00E8: 0x0000_0000_0000_000C, 0x0000_0000_0000_00EC: 0x0000_0000_0000_0004, + 0x0000_0000_0000_00F0: 0x0000_0000_0000_001C, 0x0000_0000_0000_00F4: 0x0000_0000_0000_0004, 0x0000_0000_0000_00F8: 0x0000_0000_0000_000C, 0x0000_0000_0000_00FC: 0x0000_0000_0000_0004, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_00F8, 0x0000_0000_0000_0008: 0x0000_0000_0000_0008, 0x0000_0000_0000_0010: 0x0000_0000_0000_0018, 0x0000_0000_0000_0018: 0x0000_0000_0000_0008, + 0x0000_0000_0000_0020: 0x0000_0000_0000_0038, 0x0000_0000_0000_0028: 0x0000_0000_0000_0008, 0x0000_0000_0000_0030: 0x0000_0000_0000_0018, 0x0000_0000_0000_0038: 0x0000_0000_0000_0008, + 0x0000_0000_0000_0040: 0x0000_0000_0000_0078, 0x0000_0000_0000_0048: 0x0000_0000_0000_0008, 0x0000_0000_0000_0050: 0x0000_0000_0000_0018, 0x0000_0000_0000_0058: 0x0000_0000_0000_0008, + 0x0000_0000_0000_0060: 0x0000_0000_0000_0038, 0x0000_0000_0000_0068: 0x0000_0000_0000_0008, 0x0000_0000_0000_0070: 0x0000_0000_0000_0018, 0x0000_0000_0000_0078: 0x0000_0000_0000_0008, + 0x0000_0000_0000_0080: 0x0000_0000_0000_00F8, 0x0000_0000_0000_0088: 0x0000_0000_0000_0008, 0x0000_0000_0000_0090: 0x0000_0000_0000_0018, 0x0000_0000_0000_0098: 0x0000_0000_0000_0008, + 0x0000_0000_0000_00A0: 0x0000_0000_0000_0038, 0x0000_0000_0000_00A8: 0x0000_0000_0000_0008, 0x0000_0000_0000_00B0: 0x0000_0000_0000_0018, 0x0000_0000_0000_00B8: 0x0000_0000_0000_0008, + 0x0000_0000_0000_00C0: 0x0000_0000_0000_0078, 0x0000_0000_0000_00C8: 0x0000_0000_0000_0008, 0x0000_0000_0000_00D0: 0x0000_0000_0000_0018, 0x0000_0000_0000_00D8: 0x0000_0000_0000_0008, + 0x0000_0000_0000_00E0: 0x0000_0000_0000_0038, 0x0000_0000_0000_00E8: 0x0000_0000_0000_0008, 0x0000_0000_0000_00F0: 0x0000_0000_0000_0018, 0x0000_0000_0000_00F8: 0x0000_0000_0000_0008, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_00F0, 0x0000_0000_0000_0010: 0x0000_0000_0000_0010, 0x0000_0000_0000_0020: 0x0000_0000_0000_0030, 0x0000_0000_0000_0030: 0x0000_0000_0000_0010, + 0x0000_0000_0000_0040: 0x0000_0000_0000_0070, 0x0000_0000_0000_0050: 0x0000_0000_0000_0010, 0x0000_0000_0000_0060: 0x0000_0000_0000_0030, 0x0000_0000_0000_0070: 0x0000_0000_0000_0010, + 0x0000_0000_0000_0080: 0x0000_0000_0000_00F0, 0x0000_0000_0000_0090: 0x0000_0000_0000_0010, 0x0000_0000_0000_00A0: 0x0000_0000_0000_0030, 0x0000_0000_0000_00B0: 0x0000_0000_0000_0010, + 0x0000_0000_0000_00C0: 0x0000_0000_0000_0070, 0x0000_0000_0000_00D0: 0x0000_0000_0000_0010, 0x0000_0000_0000_00E0: 0x0000_0000_0000_0030, 0x0000_0000_0000_00F0: 0x0000_0000_0000_0010, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_00E0, 0x0000_0000_0000_0020: 0x0000_0000_0000_0020, 0x0000_0000_0000_0040: 0x0000_0000_0000_0060, 0x0000_0000_0000_0060: 0x0000_0000_0000_0020, + 0x0000_0000_0000_0080: 0x0000_0000_0000_00E0, 0x0000_0000_0000_00A0: 0x0000_0000_0000_0020, 0x0000_0000_0000_00C0: 0x0000_0000_0000_0060, 0x0000_0000_0000_00E0: 0x0000_0000_0000_0020, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_00C0, 0x0000_0000_0000_0040: 0x0000_0000_0000_0040, 0x0000_0000_0000_0080: 0x0000_0000_0000_00C0, 0x0000_0000_0000_00C0: 0x0000_0000_0000_0040, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0080, 0x0000_0000_0000_0080: 0x0000_0000_0000_0080, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_FE00, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0000_0400: 0x0000_0000_0000_0600, 0x0000_0000_0000_0600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_0800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_0A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_0C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_0E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_1000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_1200: 0x0000_0000_0000_0200, 0x0000_0000_0000_1400: 0x0000_0000_0000_0600, 0x0000_0000_0000_1600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_1800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_1A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_1C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_1E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_2000: 0x0000_0000_0000_3E00, 0x0000_0000_0000_2200: 0x0000_0000_0000_0200, 0x0000_0000_0000_2400: 0x0000_0000_0000_0600, 0x0000_0000_0000_2600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_2800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_2A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_2C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_2E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_3000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_3200: 0x0000_0000_0000_0200, 0x0000_0000_0000_3400: 0x0000_0000_0000_0600, 0x0000_0000_0000_3600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_3800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_3A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_3C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_3E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_4000: 0x0000_0000_0000_7E00, 0x0000_0000_0000_4200: 0x0000_0000_0000_0200, 0x0000_0000_0000_4400: 0x0000_0000_0000_0600, 0x0000_0000_0000_4600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_4800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_4A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_4C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_4E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_5000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_5200: 0x0000_0000_0000_0200, 0x0000_0000_0000_5400: 0x0000_0000_0000_0600, 0x0000_0000_0000_5600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_5800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_5A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_5C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_5E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_6000: 0x0000_0000_0000_3E00, 0x0000_0000_0000_6200: 0x0000_0000_0000_0200, 0x0000_0000_0000_6400: 0x0000_0000_0000_0600, 0x0000_0000_0000_6600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_6800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_6A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_6C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_6E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_7000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_7200: 0x0000_0000_0000_0200, 0x0000_0000_0000_7400: 0x0000_0000_0000_0600, 0x0000_0000_0000_7600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_7800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_7A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_7C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_7E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_8000: 0x0000_0000_0000_FE00, 0x0000_0000_0000_8200: 0x0000_0000_0000_0200, 0x0000_0000_0000_8400: 0x0000_0000_0000_0600, 0x0000_0000_0000_8600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_8800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_8A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_8C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_8E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_9000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_9200: 0x0000_0000_0000_0200, 0x0000_0000_0000_9400: 0x0000_0000_0000_0600, 0x0000_0000_0000_9600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_9800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_9A00: 0x0000_0000_0000_0200, 0x0000_0000_0000_9C00: 0x0000_0000_0000_0600, 0x0000_0000_0000_9E00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_A000: 0x0000_0000_0000_3E00, 0x0000_0000_0000_A200: 0x0000_0000_0000_0200, 0x0000_0000_0000_A400: 0x0000_0000_0000_0600, 0x0000_0000_0000_A600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_A800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_AA00: 0x0000_0000_0000_0200, 0x0000_0000_0000_AC00: 0x0000_0000_0000_0600, 0x0000_0000_0000_AE00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_B000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_B200: 0x0000_0000_0000_0200, 0x0000_0000_0000_B400: 0x0000_0000_0000_0600, 0x0000_0000_0000_B600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_B800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_BA00: 0x0000_0000_0000_0200, 0x0000_0000_0000_BC00: 0x0000_0000_0000_0600, 0x0000_0000_0000_BE00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_C000: 0x0000_0000_0000_7E00, 0x0000_0000_0000_C200: 0x0000_0000_0000_0200, 0x0000_0000_0000_C400: 0x0000_0000_0000_0600, 0x0000_0000_0000_C600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_C800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_CA00: 0x0000_0000_0000_0200, 0x0000_0000_0000_CC00: 0x0000_0000_0000_0600, 0x0000_0000_0000_CE00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_D000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_D200: 0x0000_0000_0000_0200, 0x0000_0000_0000_D400: 0x0000_0000_0000_0600, 0x0000_0000_0000_D600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_D800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_DA00: 0x0000_0000_0000_0200, 0x0000_0000_0000_DC00: 0x0000_0000_0000_0600, 0x0000_0000_0000_DE00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_E000: 0x0000_0000_0000_3E00, 0x0000_0000_0000_E200: 0x0000_0000_0000_0200, 0x0000_0000_0000_E400: 0x0000_0000_0000_0600, 0x0000_0000_0000_E600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_E800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_EA00: 0x0000_0000_0000_0200, 0x0000_0000_0000_EC00: 0x0000_0000_0000_0600, 0x0000_0000_0000_EE00: 0x0000_0000_0000_0200, + 0x0000_0000_0000_F000: 0x0000_0000_0000_1E00, 0x0000_0000_0000_F200: 0x0000_0000_0000_0200, 0x0000_0000_0000_F400: 0x0000_0000_0000_0600, 0x0000_0000_0000_F600: 0x0000_0000_0000_0200, + 0x0000_0000_0000_F800: 0x0000_0000_0000_0E00, 0x0000_0000_0000_FA00: 0x0000_0000_0000_0200, 0x0000_0000_0000_FC00: 0x0000_0000_0000_0600, 0x0000_0000_0000_FE00: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_FC00, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0000_0800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_0C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_1000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_1400: 0x0000_0000_0000_0400, 0x0000_0000_0000_1800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_1C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_2000: 0x0000_0000_0000_3C00, 0x0000_0000_0000_2400: 0x0000_0000_0000_0400, 0x0000_0000_0000_2800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_2C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_3000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_3400: 0x0000_0000_0000_0400, 0x0000_0000_0000_3800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_3C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_4000: 0x0000_0000_0000_7C00, 0x0000_0000_0000_4400: 0x0000_0000_0000_0400, 0x0000_0000_0000_4800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_4C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_5000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_5400: 0x0000_0000_0000_0400, 0x0000_0000_0000_5800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_5C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_6000: 0x0000_0000_0000_3C00, 0x0000_0000_0000_6400: 0x0000_0000_0000_0400, 0x0000_0000_0000_6800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_6C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_7000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_7400: 0x0000_0000_0000_0400, 0x0000_0000_0000_7800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_7C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_8000: 0x0000_0000_0000_FC00, 0x0000_0000_0000_8400: 0x0000_0000_0000_0400, 0x0000_0000_0000_8800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_8C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_9000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_9400: 0x0000_0000_0000_0400, 0x0000_0000_0000_9800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_9C00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_A000: 0x0000_0000_0000_3C00, 0x0000_0000_0000_A400: 0x0000_0000_0000_0400, 0x0000_0000_0000_A800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_AC00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_B000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_B400: 0x0000_0000_0000_0400, 0x0000_0000_0000_B800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_BC00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_C000: 0x0000_0000_0000_7C00, 0x0000_0000_0000_C400: 0x0000_0000_0000_0400, 0x0000_0000_0000_C800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_CC00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_D000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_D400: 0x0000_0000_0000_0400, 0x0000_0000_0000_D800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_DC00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_E000: 0x0000_0000_0000_3C00, 0x0000_0000_0000_E400: 0x0000_0000_0000_0400, 0x0000_0000_0000_E800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_EC00: 0x0000_0000_0000_0400, + 0x0000_0000_0000_F000: 0x0000_0000_0000_1C00, 0x0000_0000_0000_F400: 0x0000_0000_0000_0400, 0x0000_0000_0000_F800: 0x0000_0000_0000_0C00, 0x0000_0000_0000_FC00: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_F800, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0000_1000: 0x0000_0000_0000_1800, 0x0000_0000_0000_1800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_2000: 0x0000_0000_0000_3800, 0x0000_0000_0000_2800: 0x0000_0000_0000_0800, 0x0000_0000_0000_3000: 0x0000_0000_0000_1800, 0x0000_0000_0000_3800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_4000: 0x0000_0000_0000_7800, 0x0000_0000_0000_4800: 0x0000_0000_0000_0800, 0x0000_0000_0000_5000: 0x0000_0000_0000_1800, 0x0000_0000_0000_5800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_6000: 0x0000_0000_0000_3800, 0x0000_0000_0000_6800: 0x0000_0000_0000_0800, 0x0000_0000_0000_7000: 0x0000_0000_0000_1800, 0x0000_0000_0000_7800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_8000: 0x0000_0000_0000_F800, 0x0000_0000_0000_8800: 0x0000_0000_0000_0800, 0x0000_0000_0000_9000: 0x0000_0000_0000_1800, 0x0000_0000_0000_9800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_A000: 0x0000_0000_0000_3800, 0x0000_0000_0000_A800: 0x0000_0000_0000_0800, 0x0000_0000_0000_B000: 0x0000_0000_0000_1800, 0x0000_0000_0000_B800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_C000: 0x0000_0000_0000_7800, 0x0000_0000_0000_C800: 0x0000_0000_0000_0800, 0x0000_0000_0000_D000: 0x0000_0000_0000_1800, 0x0000_0000_0000_D800: 0x0000_0000_0000_0800, + 0x0000_0000_0000_E000: 0x0000_0000_0000_3800, 0x0000_0000_0000_E800: 0x0000_0000_0000_0800, 0x0000_0000_0000_F000: 0x0000_0000_0000_1800, 0x0000_0000_0000_F800: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_F000, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0000_2000: 0x0000_0000_0000_3000, 0x0000_0000_0000_3000: 0x0000_0000_0000_1000, + 0x0000_0000_0000_4000: 0x0000_0000_0000_7000, 0x0000_0000_0000_5000: 0x0000_0000_0000_1000, 0x0000_0000_0000_6000: 0x0000_0000_0000_3000, 0x0000_0000_0000_7000: 0x0000_0000_0000_1000, + 0x0000_0000_0000_8000: 0x0000_0000_0000_F000, 0x0000_0000_0000_9000: 0x0000_0000_0000_1000, 0x0000_0000_0000_A000: 0x0000_0000_0000_3000, 0x0000_0000_0000_B000: 0x0000_0000_0000_1000, + 0x0000_0000_0000_C000: 0x0000_0000_0000_7000, 0x0000_0000_0000_D000: 0x0000_0000_0000_1000, 0x0000_0000_0000_E000: 0x0000_0000_0000_3000, 0x0000_0000_0000_F000: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_E000, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0000_4000: 0x0000_0000_0000_6000, 0x0000_0000_0000_6000: 0x0000_0000_0000_2000, + 0x0000_0000_0000_8000: 0x0000_0000_0000_E000, 0x0000_0000_0000_A000: 0x0000_0000_0000_2000, 0x0000_0000_0000_C000: 0x0000_0000_0000_6000, 0x0000_0000_0000_E000: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_C000, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0000_8000: 0x0000_0000_0000_C000, 0x0000_0000_0000_C000: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_8000, 0x0000_0000_0000_8000: 0x0000_0000_0000_8000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_00FE_0000, 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0004_0000: 0x0000_0000_0006_0000, 0x0000_0000_0006_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0008_0000: 0x0000_0000_000E_0000, 0x0000_0000_000A_0000: 0x0000_0000_0002_0000, 0x0000_0000_000C_0000: 0x0000_0000_0006_0000, 0x0000_0000_000E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0010_0000: 0x0000_0000_001E_0000, 0x0000_0000_0012_0000: 0x0000_0000_0002_0000, 0x0000_0000_0014_0000: 0x0000_0000_0006_0000, 0x0000_0000_0016_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0018_0000: 0x0000_0000_000E_0000, 0x0000_0000_001A_0000: 0x0000_0000_0002_0000, 0x0000_0000_001C_0000: 0x0000_0000_0006_0000, 0x0000_0000_001E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0020_0000: 0x0000_0000_003E_0000, 0x0000_0000_0022_0000: 0x0000_0000_0002_0000, 0x0000_0000_0024_0000: 0x0000_0000_0006_0000, 0x0000_0000_0026_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0028_0000: 0x0000_0000_000E_0000, 0x0000_0000_002A_0000: 0x0000_0000_0002_0000, 0x0000_0000_002C_0000: 0x0000_0000_0006_0000, 0x0000_0000_002E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0030_0000: 0x0000_0000_001E_0000, 0x0000_0000_0032_0000: 0x0000_0000_0002_0000, 0x0000_0000_0034_0000: 0x0000_0000_0006_0000, 0x0000_0000_0036_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0038_0000: 0x0000_0000_000E_0000, 0x0000_0000_003A_0000: 0x0000_0000_0002_0000, 0x0000_0000_003C_0000: 0x0000_0000_0006_0000, 0x0000_0000_003E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0040_0000: 0x0000_0000_007E_0000, 0x0000_0000_0042_0000: 0x0000_0000_0002_0000, 0x0000_0000_0044_0000: 0x0000_0000_0006_0000, 0x0000_0000_0046_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0048_0000: 0x0000_0000_000E_0000, 0x0000_0000_004A_0000: 0x0000_0000_0002_0000, 0x0000_0000_004C_0000: 0x0000_0000_0006_0000, 0x0000_0000_004E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0050_0000: 0x0000_0000_001E_0000, 0x0000_0000_0052_0000: 0x0000_0000_0002_0000, 0x0000_0000_0054_0000: 0x0000_0000_0006_0000, 0x0000_0000_0056_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0058_0000: 0x0000_0000_000E_0000, 0x0000_0000_005A_0000: 0x0000_0000_0002_0000, 0x0000_0000_005C_0000: 0x0000_0000_0006_0000, 0x0000_0000_005E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0060_0000: 0x0000_0000_003E_0000, 0x0000_0000_0062_0000: 0x0000_0000_0002_0000, 0x0000_0000_0064_0000: 0x0000_0000_0006_0000, 0x0000_0000_0066_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0068_0000: 0x0000_0000_000E_0000, 0x0000_0000_006A_0000: 0x0000_0000_0002_0000, 0x0000_0000_006C_0000: 0x0000_0000_0006_0000, 0x0000_0000_006E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0070_0000: 0x0000_0000_001E_0000, 0x0000_0000_0072_0000: 0x0000_0000_0002_0000, 0x0000_0000_0074_0000: 0x0000_0000_0006_0000, 0x0000_0000_0076_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0078_0000: 0x0000_0000_000E_0000, 0x0000_0000_007A_0000: 0x0000_0000_0002_0000, 0x0000_0000_007C_0000: 0x0000_0000_0006_0000, 0x0000_0000_007E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0080_0000: 0x0000_0000_00FE_0000, 0x0000_0000_0082_0000: 0x0000_0000_0002_0000, 0x0000_0000_0084_0000: 0x0000_0000_0006_0000, 0x0000_0000_0086_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0088_0000: 0x0000_0000_000E_0000, 0x0000_0000_008A_0000: 0x0000_0000_0002_0000, 0x0000_0000_008C_0000: 0x0000_0000_0006_0000, 0x0000_0000_008E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0090_0000: 0x0000_0000_001E_0000, 0x0000_0000_0092_0000: 0x0000_0000_0002_0000, 0x0000_0000_0094_0000: 0x0000_0000_0006_0000, 0x0000_0000_0096_0000: 0x0000_0000_0002_0000, + 0x0000_0000_0098_0000: 0x0000_0000_000E_0000, 0x0000_0000_009A_0000: 0x0000_0000_0002_0000, 0x0000_0000_009C_0000: 0x0000_0000_0006_0000, 0x0000_0000_009E_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00A0_0000: 0x0000_0000_003E_0000, 0x0000_0000_00A2_0000: 0x0000_0000_0002_0000, 0x0000_0000_00A4_0000: 0x0000_0000_0006_0000, 0x0000_0000_00A6_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00A8_0000: 0x0000_0000_000E_0000, 0x0000_0000_00AA_0000: 0x0000_0000_0002_0000, 0x0000_0000_00AC_0000: 0x0000_0000_0006_0000, 0x0000_0000_00AE_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00B0_0000: 0x0000_0000_001E_0000, 0x0000_0000_00B2_0000: 0x0000_0000_0002_0000, 0x0000_0000_00B4_0000: 0x0000_0000_0006_0000, 0x0000_0000_00B6_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00B8_0000: 0x0000_0000_000E_0000, 0x0000_0000_00BA_0000: 0x0000_0000_0002_0000, 0x0000_0000_00BC_0000: 0x0000_0000_0006_0000, 0x0000_0000_00BE_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00C0_0000: 0x0000_0000_007E_0000, 0x0000_0000_00C2_0000: 0x0000_0000_0002_0000, 0x0000_0000_00C4_0000: 0x0000_0000_0006_0000, 0x0000_0000_00C6_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00C8_0000: 0x0000_0000_000E_0000, 0x0000_0000_00CA_0000: 0x0000_0000_0002_0000, 0x0000_0000_00CC_0000: 0x0000_0000_0006_0000, 0x0000_0000_00CE_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00D0_0000: 0x0000_0000_001E_0000, 0x0000_0000_00D2_0000: 0x0000_0000_0002_0000, 0x0000_0000_00D4_0000: 0x0000_0000_0006_0000, 0x0000_0000_00D6_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00D8_0000: 0x0000_0000_000E_0000, 0x0000_0000_00DA_0000: 0x0000_0000_0002_0000, 0x0000_0000_00DC_0000: 0x0000_0000_0006_0000, 0x0000_0000_00DE_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00E0_0000: 0x0000_0000_003E_0000, 0x0000_0000_00E2_0000: 0x0000_0000_0002_0000, 0x0000_0000_00E4_0000: 0x0000_0000_0006_0000, 0x0000_0000_00E6_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00E8_0000: 0x0000_0000_000E_0000, 0x0000_0000_00EA_0000: 0x0000_0000_0002_0000, 0x0000_0000_00EC_0000: 0x0000_0000_0006_0000, 0x0000_0000_00EE_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00F0_0000: 0x0000_0000_001E_0000, 0x0000_0000_00F2_0000: 0x0000_0000_0002_0000, 0x0000_0000_00F4_0000: 0x0000_0000_0006_0000, 0x0000_0000_00F6_0000: 0x0000_0000_0002_0000, + 0x0000_0000_00F8_0000: 0x0000_0000_000E_0000, 0x0000_0000_00FA_0000: 0x0000_0000_0002_0000, 0x0000_0000_00FC_0000: 0x0000_0000_0006_0000, 0x0000_0000_00FE_0000: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_00FC_0000, 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0008_0000: 0x0000_0000_000C_0000, 0x0000_0000_000C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0010_0000: 0x0000_0000_001C_0000, 0x0000_0000_0014_0000: 0x0000_0000_0004_0000, 0x0000_0000_0018_0000: 0x0000_0000_000C_0000, 0x0000_0000_001C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0020_0000: 0x0000_0000_003C_0000, 0x0000_0000_0024_0000: 0x0000_0000_0004_0000, 0x0000_0000_0028_0000: 0x0000_0000_000C_0000, 0x0000_0000_002C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0030_0000: 0x0000_0000_001C_0000, 0x0000_0000_0034_0000: 0x0000_0000_0004_0000, 0x0000_0000_0038_0000: 0x0000_0000_000C_0000, 0x0000_0000_003C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0040_0000: 0x0000_0000_007C_0000, 0x0000_0000_0044_0000: 0x0000_0000_0004_0000, 0x0000_0000_0048_0000: 0x0000_0000_000C_0000, 0x0000_0000_004C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0050_0000: 0x0000_0000_001C_0000, 0x0000_0000_0054_0000: 0x0000_0000_0004_0000, 0x0000_0000_0058_0000: 0x0000_0000_000C_0000, 0x0000_0000_005C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0060_0000: 0x0000_0000_003C_0000, 0x0000_0000_0064_0000: 0x0000_0000_0004_0000, 0x0000_0000_0068_0000: 0x0000_0000_000C_0000, 0x0000_0000_006C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0070_0000: 0x0000_0000_001C_0000, 0x0000_0000_0074_0000: 0x0000_0000_0004_0000, 0x0000_0000_0078_0000: 0x0000_0000_000C_0000, 0x0000_0000_007C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0080_0000: 0x0000_0000_00FC_0000, 0x0000_0000_0084_0000: 0x0000_0000_0004_0000, 0x0000_0000_0088_0000: 0x0000_0000_000C_0000, 0x0000_0000_008C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_0090_0000: 0x0000_0000_001C_0000, 0x0000_0000_0094_0000: 0x0000_0000_0004_0000, 0x0000_0000_0098_0000: 0x0000_0000_000C_0000, 0x0000_0000_009C_0000: 0x0000_0000_0004_0000, + 0x0000_0000_00A0_0000: 0x0000_0000_003C_0000, 0x0000_0000_00A4_0000: 0x0000_0000_0004_0000, 0x0000_0000_00A8_0000: 0x0000_0000_000C_0000, 0x0000_0000_00AC_0000: 0x0000_0000_0004_0000, + 0x0000_0000_00B0_0000: 0x0000_0000_001C_0000, 0x0000_0000_00B4_0000: 0x0000_0000_0004_0000, 0x0000_0000_00B8_0000: 0x0000_0000_000C_0000, 0x0000_0000_00BC_0000: 0x0000_0000_0004_0000, + 0x0000_0000_00C0_0000: 0x0000_0000_007C_0000, 0x0000_0000_00C4_0000: 0x0000_0000_0004_0000, 0x0000_0000_00C8_0000: 0x0000_0000_000C_0000, 0x0000_0000_00CC_0000: 0x0000_0000_0004_0000, + 0x0000_0000_00D0_0000: 0x0000_0000_001C_0000, 0x0000_0000_00D4_0000: 0x0000_0000_0004_0000, 0x0000_0000_00D8_0000: 0x0000_0000_000C_0000, 0x0000_0000_00DC_0000: 0x0000_0000_0004_0000, + 0x0000_0000_00E0_0000: 0x0000_0000_003C_0000, 0x0000_0000_00E4_0000: 0x0000_0000_0004_0000, 0x0000_0000_00E8_0000: 0x0000_0000_000C_0000, 0x0000_0000_00EC_0000: 0x0000_0000_0004_0000, + 0x0000_0000_00F0_0000: 0x0000_0000_001C_0000, 0x0000_0000_00F4_0000: 0x0000_0000_0004_0000, 0x0000_0000_00F8_0000: 0x0000_0000_000C_0000, 0x0000_0000_00FC_0000: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_00F8_0000, 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0010_0000: 0x0000_0000_0018_0000, 0x0000_0000_0018_0000: 0x0000_0000_0008_0000, + 0x0000_0000_0020_0000: 0x0000_0000_0038_0000, 0x0000_0000_0028_0000: 0x0000_0000_0008_0000, 0x0000_0000_0030_0000: 0x0000_0000_0018_0000, 0x0000_0000_0038_0000: 0x0000_0000_0008_0000, + 0x0000_0000_0040_0000: 0x0000_0000_0078_0000, 0x0000_0000_0048_0000: 0x0000_0000_0008_0000, 0x0000_0000_0050_0000: 0x0000_0000_0018_0000, 0x0000_0000_0058_0000: 0x0000_0000_0008_0000, + 0x0000_0000_0060_0000: 0x0000_0000_0038_0000, 0x0000_0000_0068_0000: 0x0000_0000_0008_0000, 0x0000_0000_0070_0000: 0x0000_0000_0018_0000, 0x0000_0000_0078_0000: 0x0000_0000_0008_0000, + 0x0000_0000_0080_0000: 0x0000_0000_00F8_0000, 0x0000_0000_0088_0000: 0x0000_0000_0008_0000, 0x0000_0000_0090_0000: 0x0000_0000_0018_0000, 0x0000_0000_0098_0000: 0x0000_0000_0008_0000, + 0x0000_0000_00A0_0000: 0x0000_0000_0038_0000, 0x0000_0000_00A8_0000: 0x0000_0000_0008_0000, 0x0000_0000_00B0_0000: 0x0000_0000_0018_0000, 0x0000_0000_00B8_0000: 0x0000_0000_0008_0000, + 0x0000_0000_00C0_0000: 0x0000_0000_0078_0000, 0x0000_0000_00C8_0000: 0x0000_0000_0008_0000, 0x0000_0000_00D0_0000: 0x0000_0000_0018_0000, 0x0000_0000_00D8_0000: 0x0000_0000_0008_0000, + 0x0000_0000_00E0_0000: 0x0000_0000_0038_0000, 0x0000_0000_00E8_0000: 0x0000_0000_0008_0000, 0x0000_0000_00F0_0000: 0x0000_0000_0018_0000, 0x0000_0000_00F8_0000: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_00F0_0000, 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_0020_0000: 0x0000_0000_0030_0000, 0x0000_0000_0030_0000: 0x0000_0000_0010_0000, + 0x0000_0000_0040_0000: 0x0000_0000_0070_0000, 0x0000_0000_0050_0000: 0x0000_0000_0010_0000, 0x0000_0000_0060_0000: 0x0000_0000_0030_0000, 0x0000_0000_0070_0000: 0x0000_0000_0010_0000, + 0x0000_0000_0080_0000: 0x0000_0000_00F0_0000, 0x0000_0000_0090_0000: 0x0000_0000_0010_0000, 0x0000_0000_00A0_0000: 0x0000_0000_0030_0000, 0x0000_0000_00B0_0000: 0x0000_0000_0010_0000, + 0x0000_0000_00C0_0000: 0x0000_0000_0070_0000, 0x0000_0000_00D0_0000: 0x0000_0000_0010_0000, 0x0000_0000_00E0_0000: 0x0000_0000_0030_0000, 0x0000_0000_00F0_0000: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_00E0_0000, 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_0040_0000: 0x0000_0000_0060_0000, 0x0000_0000_0060_0000: 0x0000_0000_0020_0000, + 0x0000_0000_0080_0000: 0x0000_0000_00E0_0000, 0x0000_0000_00A0_0000: 0x0000_0000_0020_0000, 0x0000_0000_00C0_0000: 0x0000_0000_0060_0000, 0x0000_0000_00E0_0000: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_00C0_0000, 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_0080_0000: 0x0000_0000_00C0_0000, 0x0000_0000_00C0_0000: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0080_0000, 0x0000_0000_0080_0000: 0x0000_0000_0080_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_FE00_0000, 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0000_0400_0000: 0x0000_0000_0600_0000, 0x0000_0000_0600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_0800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_0A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_0C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_0E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_1000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_1200_0000: 0x0000_0000_0200_0000, 0x0000_0000_1400_0000: 0x0000_0000_0600_0000, 0x0000_0000_1600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_1800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_1A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_1C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_1E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_2000_0000: 0x0000_0000_3E00_0000, 0x0000_0000_2200_0000: 0x0000_0000_0200_0000, 0x0000_0000_2400_0000: 0x0000_0000_0600_0000, 0x0000_0000_2600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_2800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_2A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_2C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_2E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_3000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_3200_0000: 0x0000_0000_0200_0000, 0x0000_0000_3400_0000: 0x0000_0000_0600_0000, 0x0000_0000_3600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_3800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_3A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_3C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_3E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_4000_0000: 0x0000_0000_7E00_0000, 0x0000_0000_4200_0000: 0x0000_0000_0200_0000, 0x0000_0000_4400_0000: 0x0000_0000_0600_0000, 0x0000_0000_4600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_4800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_4A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_4C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_4E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_5000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_5200_0000: 0x0000_0000_0200_0000, 0x0000_0000_5400_0000: 0x0000_0000_0600_0000, 0x0000_0000_5600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_5800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_5A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_5C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_5E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_6000_0000: 0x0000_0000_3E00_0000, 0x0000_0000_6200_0000: 0x0000_0000_0200_0000, 0x0000_0000_6400_0000: 0x0000_0000_0600_0000, 0x0000_0000_6600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_6800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_6A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_6C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_6E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_7000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_7200_0000: 0x0000_0000_0200_0000, 0x0000_0000_7400_0000: 0x0000_0000_0600_0000, 0x0000_0000_7600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_7800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_7A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_7C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_7E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_8000_0000: 0x0000_0000_FE00_0000, 0x0000_0000_8200_0000: 0x0000_0000_0200_0000, 0x0000_0000_8400_0000: 0x0000_0000_0600_0000, 0x0000_0000_8600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_8800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_8A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_8C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_8E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_9000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_9200_0000: 0x0000_0000_0200_0000, 0x0000_0000_9400_0000: 0x0000_0000_0600_0000, 0x0000_0000_9600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_9800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_9A00_0000: 0x0000_0000_0200_0000, 0x0000_0000_9C00_0000: 0x0000_0000_0600_0000, 0x0000_0000_9E00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_A000_0000: 0x0000_0000_3E00_0000, 0x0000_0000_A200_0000: 0x0000_0000_0200_0000, 0x0000_0000_A400_0000: 0x0000_0000_0600_0000, 0x0000_0000_A600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_A800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_AA00_0000: 0x0000_0000_0200_0000, 0x0000_0000_AC00_0000: 0x0000_0000_0600_0000, 0x0000_0000_AE00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_B000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_B200_0000: 0x0000_0000_0200_0000, 0x0000_0000_B400_0000: 0x0000_0000_0600_0000, 0x0000_0000_B600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_B800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_BA00_0000: 0x0000_0000_0200_0000, 0x0000_0000_BC00_0000: 0x0000_0000_0600_0000, 0x0000_0000_BE00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_C000_0000: 0x0000_0000_7E00_0000, 0x0000_0000_C200_0000: 0x0000_0000_0200_0000, 0x0000_0000_C400_0000: 0x0000_0000_0600_0000, 0x0000_0000_C600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_C800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_CA00_0000: 0x0000_0000_0200_0000, 0x0000_0000_CC00_0000: 0x0000_0000_0600_0000, 0x0000_0000_CE00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_D000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_D200_0000: 0x0000_0000_0200_0000, 0x0000_0000_D400_0000: 0x0000_0000_0600_0000, 0x0000_0000_D600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_D800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_DA00_0000: 0x0000_0000_0200_0000, 0x0000_0000_DC00_0000: 0x0000_0000_0600_0000, 0x0000_0000_DE00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_E000_0000: 0x0000_0000_3E00_0000, 0x0000_0000_E200_0000: 0x0000_0000_0200_0000, 0x0000_0000_E400_0000: 0x0000_0000_0600_0000, 0x0000_0000_E600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_E800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_EA00_0000: 0x0000_0000_0200_0000, 0x0000_0000_EC00_0000: 0x0000_0000_0600_0000, 0x0000_0000_EE00_0000: 0x0000_0000_0200_0000, + 0x0000_0000_F000_0000: 0x0000_0000_1E00_0000, 0x0000_0000_F200_0000: 0x0000_0000_0200_0000, 0x0000_0000_F400_0000: 0x0000_0000_0600_0000, 0x0000_0000_F600_0000: 0x0000_0000_0200_0000, + 0x0000_0000_F800_0000: 0x0000_0000_0E00_0000, 0x0000_0000_FA00_0000: 0x0000_0000_0200_0000, 0x0000_0000_FC00_0000: 0x0000_0000_0600_0000, 0x0000_0000_FE00_0000: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_FC00_0000, 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0000_0800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_0C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_1000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_1400_0000: 0x0000_0000_0400_0000, 0x0000_0000_1800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_1C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_2000_0000: 0x0000_0000_3C00_0000, 0x0000_0000_2400_0000: 0x0000_0000_0400_0000, 0x0000_0000_2800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_2C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_3000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_3400_0000: 0x0000_0000_0400_0000, 0x0000_0000_3800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_3C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_4000_0000: 0x0000_0000_7C00_0000, 0x0000_0000_4400_0000: 0x0000_0000_0400_0000, 0x0000_0000_4800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_4C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_5000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_5400_0000: 0x0000_0000_0400_0000, 0x0000_0000_5800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_5C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_6000_0000: 0x0000_0000_3C00_0000, 0x0000_0000_6400_0000: 0x0000_0000_0400_0000, 0x0000_0000_6800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_6C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_7000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_7400_0000: 0x0000_0000_0400_0000, 0x0000_0000_7800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_7C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_8000_0000: 0x0000_0000_FC00_0000, 0x0000_0000_8400_0000: 0x0000_0000_0400_0000, 0x0000_0000_8800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_8C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_9000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_9400_0000: 0x0000_0000_0400_0000, 0x0000_0000_9800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_9C00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_A000_0000: 0x0000_0000_3C00_0000, 0x0000_0000_A400_0000: 0x0000_0000_0400_0000, 0x0000_0000_A800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_AC00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_B000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_B400_0000: 0x0000_0000_0400_0000, 0x0000_0000_B800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_BC00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_C000_0000: 0x0000_0000_7C00_0000, 0x0000_0000_C400_0000: 0x0000_0000_0400_0000, 0x0000_0000_C800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_CC00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_D000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_D400_0000: 0x0000_0000_0400_0000, 0x0000_0000_D800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_DC00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_E000_0000: 0x0000_0000_3C00_0000, 0x0000_0000_E400_0000: 0x0000_0000_0400_0000, 0x0000_0000_E800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_EC00_0000: 0x0000_0000_0400_0000, + 0x0000_0000_F000_0000: 0x0000_0000_1C00_0000, 0x0000_0000_F400_0000: 0x0000_0000_0400_0000, 0x0000_0000_F800_0000: 0x0000_0000_0C00_0000, 0x0000_0000_FC00_0000: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_F800_0000, 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0000_1000_0000: 0x0000_0000_1800_0000, 0x0000_0000_1800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_2000_0000: 0x0000_0000_3800_0000, 0x0000_0000_2800_0000: 0x0000_0000_0800_0000, 0x0000_0000_3000_0000: 0x0000_0000_1800_0000, 0x0000_0000_3800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_4000_0000: 0x0000_0000_7800_0000, 0x0000_0000_4800_0000: 0x0000_0000_0800_0000, 0x0000_0000_5000_0000: 0x0000_0000_1800_0000, 0x0000_0000_5800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_6000_0000: 0x0000_0000_3800_0000, 0x0000_0000_6800_0000: 0x0000_0000_0800_0000, 0x0000_0000_7000_0000: 0x0000_0000_1800_0000, 0x0000_0000_7800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_8000_0000: 0x0000_0000_F800_0000, 0x0000_0000_8800_0000: 0x0000_0000_0800_0000, 0x0000_0000_9000_0000: 0x0000_0000_1800_0000, 0x0000_0000_9800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_A000_0000: 0x0000_0000_3800_0000, 0x0000_0000_A800_0000: 0x0000_0000_0800_0000, 0x0000_0000_B000_0000: 0x0000_0000_1800_0000, 0x0000_0000_B800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_C000_0000: 0x0000_0000_7800_0000, 0x0000_0000_C800_0000: 0x0000_0000_0800_0000, 0x0000_0000_D000_0000: 0x0000_0000_1800_0000, 0x0000_0000_D800_0000: 0x0000_0000_0800_0000, + 0x0000_0000_E000_0000: 0x0000_0000_3800_0000, 0x0000_0000_E800_0000: 0x0000_0000_0800_0000, 0x0000_0000_F000_0000: 0x0000_0000_1800_0000, 0x0000_0000_F800_0000: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_F000_0000, 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0000_2000_0000: 0x0000_0000_3000_0000, 0x0000_0000_3000_0000: 0x0000_0000_1000_0000, + 0x0000_0000_4000_0000: 0x0000_0000_7000_0000, 0x0000_0000_5000_0000: 0x0000_0000_1000_0000, 0x0000_0000_6000_0000: 0x0000_0000_3000_0000, 0x0000_0000_7000_0000: 0x0000_0000_1000_0000, + 0x0000_0000_8000_0000: 0x0000_0000_F000_0000, 0x0000_0000_9000_0000: 0x0000_0000_1000_0000, 0x0000_0000_A000_0000: 0x0000_0000_3000_0000, 0x0000_0000_B000_0000: 0x0000_0000_1000_0000, + 0x0000_0000_C000_0000: 0x0000_0000_7000_0000, 0x0000_0000_D000_0000: 0x0000_0000_1000_0000, 0x0000_0000_E000_0000: 0x0000_0000_3000_0000, 0x0000_0000_F000_0000: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_E000_0000, 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0000_4000_0000: 0x0000_0000_6000_0000, 0x0000_0000_6000_0000: 0x0000_0000_2000_0000, + 0x0000_0000_8000_0000: 0x0000_0000_E000_0000, 0x0000_0000_A000_0000: 0x0000_0000_2000_0000, 0x0000_0000_C000_0000: 0x0000_0000_6000_0000, 0x0000_0000_E000_0000: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_C000_0000, 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0000_8000_0000: 0x0000_0000_C000_0000, 0x0000_0000_C000_0000: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_8000_0000, 0x0000_0000_8000_0000: 0x0000_0000_8000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_00FE_0000_0000, 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0004_0000_0000: 0x0000_0006_0000_0000, 0x0000_0006_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0008_0000_0000: 0x0000_000E_0000_0000, 0x0000_000A_0000_0000: 0x0000_0002_0000_0000, 0x0000_000C_0000_0000: 0x0000_0006_0000_0000, 0x0000_000E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0010_0000_0000: 0x0000_001E_0000_0000, 0x0000_0012_0000_0000: 0x0000_0002_0000_0000, 0x0000_0014_0000_0000: 0x0000_0006_0000_0000, 0x0000_0016_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0018_0000_0000: 0x0000_000E_0000_0000, 0x0000_001A_0000_0000: 0x0000_0002_0000_0000, 0x0000_001C_0000_0000: 0x0000_0006_0000_0000, 0x0000_001E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0020_0000_0000: 0x0000_003E_0000_0000, 0x0000_0022_0000_0000: 0x0000_0002_0000_0000, 0x0000_0024_0000_0000: 0x0000_0006_0000_0000, 0x0000_0026_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0028_0000_0000: 0x0000_000E_0000_0000, 0x0000_002A_0000_0000: 0x0000_0002_0000_0000, 0x0000_002C_0000_0000: 0x0000_0006_0000_0000, 0x0000_002E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0030_0000_0000: 0x0000_001E_0000_0000, 0x0000_0032_0000_0000: 0x0000_0002_0000_0000, 0x0000_0034_0000_0000: 0x0000_0006_0000_0000, 0x0000_0036_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0038_0000_0000: 0x0000_000E_0000_0000, 0x0000_003A_0000_0000: 0x0000_0002_0000_0000, 0x0000_003C_0000_0000: 0x0000_0006_0000_0000, 0x0000_003E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0040_0000_0000: 0x0000_007E_0000_0000, 0x0000_0042_0000_0000: 0x0000_0002_0000_0000, 0x0000_0044_0000_0000: 0x0000_0006_0000_0000, 0x0000_0046_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0048_0000_0000: 0x0000_000E_0000_0000, 0x0000_004A_0000_0000: 0x0000_0002_0000_0000, 0x0000_004C_0000_0000: 0x0000_0006_0000_0000, 0x0000_004E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0050_0000_0000: 0x0000_001E_0000_0000, 0x0000_0052_0000_0000: 0x0000_0002_0000_0000, 0x0000_0054_0000_0000: 0x0000_0006_0000_0000, 0x0000_0056_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0058_0000_0000: 0x0000_000E_0000_0000, 0x0000_005A_0000_0000: 0x0000_0002_0000_0000, 0x0000_005C_0000_0000: 0x0000_0006_0000_0000, 0x0000_005E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0060_0000_0000: 0x0000_003E_0000_0000, 0x0000_0062_0000_0000: 0x0000_0002_0000_0000, 0x0000_0064_0000_0000: 0x0000_0006_0000_0000, 0x0000_0066_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0068_0000_0000: 0x0000_000E_0000_0000, 0x0000_006A_0000_0000: 0x0000_0002_0000_0000, 0x0000_006C_0000_0000: 0x0000_0006_0000_0000, 0x0000_006E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0070_0000_0000: 0x0000_001E_0000_0000, 0x0000_0072_0000_0000: 0x0000_0002_0000_0000, 0x0000_0074_0000_0000: 0x0000_0006_0000_0000, 0x0000_0076_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0078_0000_0000: 0x0000_000E_0000_0000, 0x0000_007A_0000_0000: 0x0000_0002_0000_0000, 0x0000_007C_0000_0000: 0x0000_0006_0000_0000, 0x0000_007E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0080_0000_0000: 0x0000_00FE_0000_0000, 0x0000_0082_0000_0000: 0x0000_0002_0000_0000, 0x0000_0084_0000_0000: 0x0000_0006_0000_0000, 0x0000_0086_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0088_0000_0000: 0x0000_000E_0000_0000, 0x0000_008A_0000_0000: 0x0000_0002_0000_0000, 0x0000_008C_0000_0000: 0x0000_0006_0000_0000, 0x0000_008E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0090_0000_0000: 0x0000_001E_0000_0000, 0x0000_0092_0000_0000: 0x0000_0002_0000_0000, 0x0000_0094_0000_0000: 0x0000_0006_0000_0000, 0x0000_0096_0000_0000: 0x0000_0002_0000_0000, + 0x0000_0098_0000_0000: 0x0000_000E_0000_0000, 0x0000_009A_0000_0000: 0x0000_0002_0000_0000, 0x0000_009C_0000_0000: 0x0000_0006_0000_0000, 0x0000_009E_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00A0_0000_0000: 0x0000_003E_0000_0000, 0x0000_00A2_0000_0000: 0x0000_0002_0000_0000, 0x0000_00A4_0000_0000: 0x0000_0006_0000_0000, 0x0000_00A6_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00A8_0000_0000: 0x0000_000E_0000_0000, 0x0000_00AA_0000_0000: 0x0000_0002_0000_0000, 0x0000_00AC_0000_0000: 0x0000_0006_0000_0000, 0x0000_00AE_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00B0_0000_0000: 0x0000_001E_0000_0000, 0x0000_00B2_0000_0000: 0x0000_0002_0000_0000, 0x0000_00B4_0000_0000: 0x0000_0006_0000_0000, 0x0000_00B6_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00B8_0000_0000: 0x0000_000E_0000_0000, 0x0000_00BA_0000_0000: 0x0000_0002_0000_0000, 0x0000_00BC_0000_0000: 0x0000_0006_0000_0000, 0x0000_00BE_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00C0_0000_0000: 0x0000_007E_0000_0000, 0x0000_00C2_0000_0000: 0x0000_0002_0000_0000, 0x0000_00C4_0000_0000: 0x0000_0006_0000_0000, 0x0000_00C6_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00C8_0000_0000: 0x0000_000E_0000_0000, 0x0000_00CA_0000_0000: 0x0000_0002_0000_0000, 0x0000_00CC_0000_0000: 0x0000_0006_0000_0000, 0x0000_00CE_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00D0_0000_0000: 0x0000_001E_0000_0000, 0x0000_00D2_0000_0000: 0x0000_0002_0000_0000, 0x0000_00D4_0000_0000: 0x0000_0006_0000_0000, 0x0000_00D6_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00D8_0000_0000: 0x0000_000E_0000_0000, 0x0000_00DA_0000_0000: 0x0000_0002_0000_0000, 0x0000_00DC_0000_0000: 0x0000_0006_0000_0000, 0x0000_00DE_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00E0_0000_0000: 0x0000_003E_0000_0000, 0x0000_00E2_0000_0000: 0x0000_0002_0000_0000, 0x0000_00E4_0000_0000: 0x0000_0006_0000_0000, 0x0000_00E6_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00E8_0000_0000: 0x0000_000E_0000_0000, 0x0000_00EA_0000_0000: 0x0000_0002_0000_0000, 0x0000_00EC_0000_0000: 0x0000_0006_0000_0000, 0x0000_00EE_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00F0_0000_0000: 0x0000_001E_0000_0000, 0x0000_00F2_0000_0000: 0x0000_0002_0000_0000, 0x0000_00F4_0000_0000: 0x0000_0006_0000_0000, 0x0000_00F6_0000_0000: 0x0000_0002_0000_0000, + 0x0000_00F8_0000_0000: 0x0000_000E_0000_0000, 0x0000_00FA_0000_0000: 0x0000_0002_0000_0000, 0x0000_00FC_0000_0000: 0x0000_0006_0000_0000, 0x0000_00FE_0000_0000: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_00FC_0000_0000, 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0008_0000_0000: 0x0000_000C_0000_0000, 0x0000_000C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0010_0000_0000: 0x0000_001C_0000_0000, 0x0000_0014_0000_0000: 0x0000_0004_0000_0000, 0x0000_0018_0000_0000: 0x0000_000C_0000_0000, 0x0000_001C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0020_0000_0000: 0x0000_003C_0000_0000, 0x0000_0024_0000_0000: 0x0000_0004_0000_0000, 0x0000_0028_0000_0000: 0x0000_000C_0000_0000, 0x0000_002C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0030_0000_0000: 0x0000_001C_0000_0000, 0x0000_0034_0000_0000: 0x0000_0004_0000_0000, 0x0000_0038_0000_0000: 0x0000_000C_0000_0000, 0x0000_003C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0040_0000_0000: 0x0000_007C_0000_0000, 0x0000_0044_0000_0000: 0x0000_0004_0000_0000, 0x0000_0048_0000_0000: 0x0000_000C_0000_0000, 0x0000_004C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0050_0000_0000: 0x0000_001C_0000_0000, 0x0000_0054_0000_0000: 0x0000_0004_0000_0000, 0x0000_0058_0000_0000: 0x0000_000C_0000_0000, 0x0000_005C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0060_0000_0000: 0x0000_003C_0000_0000, 0x0000_0064_0000_0000: 0x0000_0004_0000_0000, 0x0000_0068_0000_0000: 0x0000_000C_0000_0000, 0x0000_006C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0070_0000_0000: 0x0000_001C_0000_0000, 0x0000_0074_0000_0000: 0x0000_0004_0000_0000, 0x0000_0078_0000_0000: 0x0000_000C_0000_0000, 0x0000_007C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0080_0000_0000: 0x0000_00FC_0000_0000, 0x0000_0084_0000_0000: 0x0000_0004_0000_0000, 0x0000_0088_0000_0000: 0x0000_000C_0000_0000, 0x0000_008C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_0090_0000_0000: 0x0000_001C_0000_0000, 0x0000_0094_0000_0000: 0x0000_0004_0000_0000, 0x0000_0098_0000_0000: 0x0000_000C_0000_0000, 0x0000_009C_0000_0000: 0x0000_0004_0000_0000, + 0x0000_00A0_0000_0000: 0x0000_003C_0000_0000, 0x0000_00A4_0000_0000: 0x0000_0004_0000_0000, 0x0000_00A8_0000_0000: 0x0000_000C_0000_0000, 0x0000_00AC_0000_0000: 0x0000_0004_0000_0000, + 0x0000_00B0_0000_0000: 0x0000_001C_0000_0000, 0x0000_00B4_0000_0000: 0x0000_0004_0000_0000, 0x0000_00B8_0000_0000: 0x0000_000C_0000_0000, 0x0000_00BC_0000_0000: 0x0000_0004_0000_0000, + 0x0000_00C0_0000_0000: 0x0000_007C_0000_0000, 0x0000_00C4_0000_0000: 0x0000_0004_0000_0000, 0x0000_00C8_0000_0000: 0x0000_000C_0000_0000, 0x0000_00CC_0000_0000: 0x0000_0004_0000_0000, + 0x0000_00D0_0000_0000: 0x0000_001C_0000_0000, 0x0000_00D4_0000_0000: 0x0000_0004_0000_0000, 0x0000_00D8_0000_0000: 0x0000_000C_0000_0000, 0x0000_00DC_0000_0000: 0x0000_0004_0000_0000, + 0x0000_00E0_0000_0000: 0x0000_003C_0000_0000, 0x0000_00E4_0000_0000: 0x0000_0004_0000_0000, 0x0000_00E8_0000_0000: 0x0000_000C_0000_0000, 0x0000_00EC_0000_0000: 0x0000_0004_0000_0000, + 0x0000_00F0_0000_0000: 0x0000_001C_0000_0000, 0x0000_00F4_0000_0000: 0x0000_0004_0000_0000, 0x0000_00F8_0000_0000: 0x0000_000C_0000_0000, 0x0000_00FC_0000_0000: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_00F8_0000_0000, 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0010_0000_0000: 0x0000_0018_0000_0000, 0x0000_0018_0000_0000: 0x0000_0008_0000_0000, + 0x0000_0020_0000_0000: 0x0000_0038_0000_0000, 0x0000_0028_0000_0000: 0x0000_0008_0000_0000, 0x0000_0030_0000_0000: 0x0000_0018_0000_0000, 0x0000_0038_0000_0000: 0x0000_0008_0000_0000, + 0x0000_0040_0000_0000: 0x0000_0078_0000_0000, 0x0000_0048_0000_0000: 0x0000_0008_0000_0000, 0x0000_0050_0000_0000: 0x0000_0018_0000_0000, 0x0000_0058_0000_0000: 0x0000_0008_0000_0000, + 0x0000_0060_0000_0000: 0x0000_0038_0000_0000, 0x0000_0068_0000_0000: 0x0000_0008_0000_0000, 0x0000_0070_0000_0000: 0x0000_0018_0000_0000, 0x0000_0078_0000_0000: 0x0000_0008_0000_0000, + 0x0000_0080_0000_0000: 0x0000_00F8_0000_0000, 0x0000_0088_0000_0000: 0x0000_0008_0000_0000, 0x0000_0090_0000_0000: 0x0000_0018_0000_0000, 0x0000_0098_0000_0000: 0x0000_0008_0000_0000, + 0x0000_00A0_0000_0000: 0x0000_0038_0000_0000, 0x0000_00A8_0000_0000: 0x0000_0008_0000_0000, 0x0000_00B0_0000_0000: 0x0000_0018_0000_0000, 0x0000_00B8_0000_0000: 0x0000_0008_0000_0000, + 0x0000_00C0_0000_0000: 0x0000_0078_0000_0000, 0x0000_00C8_0000_0000: 0x0000_0008_0000_0000, 0x0000_00D0_0000_0000: 0x0000_0018_0000_0000, 0x0000_00D8_0000_0000: 0x0000_0008_0000_0000, + 0x0000_00E0_0000_0000: 0x0000_0038_0000_0000, 0x0000_00E8_0000_0000: 0x0000_0008_0000_0000, 0x0000_00F0_0000_0000: 0x0000_0018_0000_0000, 0x0000_00F8_0000_0000: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_00F0_0000_0000, 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_0020_0000_0000: 0x0000_0030_0000_0000, 0x0000_0030_0000_0000: 0x0000_0010_0000_0000, + 0x0000_0040_0000_0000: 0x0000_0070_0000_0000, 0x0000_0050_0000_0000: 0x0000_0010_0000_0000, 0x0000_0060_0000_0000: 0x0000_0030_0000_0000, 0x0000_0070_0000_0000: 0x0000_0010_0000_0000, + 0x0000_0080_0000_0000: 0x0000_00F0_0000_0000, 0x0000_0090_0000_0000: 0x0000_0010_0000_0000, 0x0000_00A0_0000_0000: 0x0000_0030_0000_0000, 0x0000_00B0_0000_0000: 0x0000_0010_0000_0000, + 0x0000_00C0_0000_0000: 0x0000_0070_0000_0000, 0x0000_00D0_0000_0000: 0x0000_0010_0000_0000, 0x0000_00E0_0000_0000: 0x0000_0030_0000_0000, 0x0000_00F0_0000_0000: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_00E0_0000_0000, 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_0040_0000_0000: 0x0000_0060_0000_0000, 0x0000_0060_0000_0000: 0x0000_0020_0000_0000, + 0x0000_0080_0000_0000: 0x0000_00E0_0000_0000, 0x0000_00A0_0000_0000: 0x0000_0020_0000_0000, 0x0000_00C0_0000_0000: 0x0000_0060_0000_0000, 0x0000_00E0_0000_0000: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_00C0_0000_0000, 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_0080_0000_0000: 0x0000_00C0_0000_0000, 0x0000_00C0_0000_0000: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_0000_0000, 0x0000_0080_0000_0000: 0x0000_0080_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_FE00_0000_0000, 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0000_0400_0000_0000: 0x0000_0600_0000_0000, 0x0000_0600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_0800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_0A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_0C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_0E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_1000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_1200_0000_0000: 0x0000_0200_0000_0000, 0x0000_1400_0000_0000: 0x0000_0600_0000_0000, 0x0000_1600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_1800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_1A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_1C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_1E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_2000_0000_0000: 0x0000_3E00_0000_0000, 0x0000_2200_0000_0000: 0x0000_0200_0000_0000, 0x0000_2400_0000_0000: 0x0000_0600_0000_0000, 0x0000_2600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_2800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_2A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_2C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_2E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_3000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_3200_0000_0000: 0x0000_0200_0000_0000, 0x0000_3400_0000_0000: 0x0000_0600_0000_0000, 0x0000_3600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_3800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_3A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_3C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_3E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_4000_0000_0000: 0x0000_7E00_0000_0000, 0x0000_4200_0000_0000: 0x0000_0200_0000_0000, 0x0000_4400_0000_0000: 0x0000_0600_0000_0000, 0x0000_4600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_4800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_4A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_4C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_4E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_5000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_5200_0000_0000: 0x0000_0200_0000_0000, 0x0000_5400_0000_0000: 0x0000_0600_0000_0000, 0x0000_5600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_5800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_5A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_5C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_5E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_6000_0000_0000: 0x0000_3E00_0000_0000, 0x0000_6200_0000_0000: 0x0000_0200_0000_0000, 0x0000_6400_0000_0000: 0x0000_0600_0000_0000, 0x0000_6600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_6800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_6A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_6C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_6E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_7000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_7200_0000_0000: 0x0000_0200_0000_0000, 0x0000_7400_0000_0000: 0x0000_0600_0000_0000, 0x0000_7600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_7800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_7A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_7C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_7E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_8000_0000_0000: 0x0000_FE00_0000_0000, 0x0000_8200_0000_0000: 0x0000_0200_0000_0000, 0x0000_8400_0000_0000: 0x0000_0600_0000_0000, 0x0000_8600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_8800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_8A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_8C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_8E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_9000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_9200_0000_0000: 0x0000_0200_0000_0000, 0x0000_9400_0000_0000: 0x0000_0600_0000_0000, 0x0000_9600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_9800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_9A00_0000_0000: 0x0000_0200_0000_0000, 0x0000_9C00_0000_0000: 0x0000_0600_0000_0000, 0x0000_9E00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_A000_0000_0000: 0x0000_3E00_0000_0000, 0x0000_A200_0000_0000: 0x0000_0200_0000_0000, 0x0000_A400_0000_0000: 0x0000_0600_0000_0000, 0x0000_A600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_A800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_AA00_0000_0000: 0x0000_0200_0000_0000, 0x0000_AC00_0000_0000: 0x0000_0600_0000_0000, 0x0000_AE00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_B000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_B200_0000_0000: 0x0000_0200_0000_0000, 0x0000_B400_0000_0000: 0x0000_0600_0000_0000, 0x0000_B600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_B800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_BA00_0000_0000: 0x0000_0200_0000_0000, 0x0000_BC00_0000_0000: 0x0000_0600_0000_0000, 0x0000_BE00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_C000_0000_0000: 0x0000_7E00_0000_0000, 0x0000_C200_0000_0000: 0x0000_0200_0000_0000, 0x0000_C400_0000_0000: 0x0000_0600_0000_0000, 0x0000_C600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_C800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_CA00_0000_0000: 0x0000_0200_0000_0000, 0x0000_CC00_0000_0000: 0x0000_0600_0000_0000, 0x0000_CE00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_D000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_D200_0000_0000: 0x0000_0200_0000_0000, 0x0000_D400_0000_0000: 0x0000_0600_0000_0000, 0x0000_D600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_D800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_DA00_0000_0000: 0x0000_0200_0000_0000, 0x0000_DC00_0000_0000: 0x0000_0600_0000_0000, 0x0000_DE00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_E000_0000_0000: 0x0000_3E00_0000_0000, 0x0000_E200_0000_0000: 0x0000_0200_0000_0000, 0x0000_E400_0000_0000: 0x0000_0600_0000_0000, 0x0000_E600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_E800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_EA00_0000_0000: 0x0000_0200_0000_0000, 0x0000_EC00_0000_0000: 0x0000_0600_0000_0000, 0x0000_EE00_0000_0000: 0x0000_0200_0000_0000, + 0x0000_F000_0000_0000: 0x0000_1E00_0000_0000, 0x0000_F200_0000_0000: 0x0000_0200_0000_0000, 0x0000_F400_0000_0000: 0x0000_0600_0000_0000, 0x0000_F600_0000_0000: 0x0000_0200_0000_0000, + 0x0000_F800_0000_0000: 0x0000_0E00_0000_0000, 0x0000_FA00_0000_0000: 0x0000_0200_0000_0000, 0x0000_FC00_0000_0000: 0x0000_0600_0000_0000, 0x0000_FE00_0000_0000: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_FC00_0000_0000, 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0000_0800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_0C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_1000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_1400_0000_0000: 0x0000_0400_0000_0000, 0x0000_1800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_1C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_2000_0000_0000: 0x0000_3C00_0000_0000, 0x0000_2400_0000_0000: 0x0000_0400_0000_0000, 0x0000_2800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_2C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_3000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_3400_0000_0000: 0x0000_0400_0000_0000, 0x0000_3800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_3C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_4000_0000_0000: 0x0000_7C00_0000_0000, 0x0000_4400_0000_0000: 0x0000_0400_0000_0000, 0x0000_4800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_4C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_5000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_5400_0000_0000: 0x0000_0400_0000_0000, 0x0000_5800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_5C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_6000_0000_0000: 0x0000_3C00_0000_0000, 0x0000_6400_0000_0000: 0x0000_0400_0000_0000, 0x0000_6800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_6C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_7000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_7400_0000_0000: 0x0000_0400_0000_0000, 0x0000_7800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_7C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_8000_0000_0000: 0x0000_FC00_0000_0000, 0x0000_8400_0000_0000: 0x0000_0400_0000_0000, 0x0000_8800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_8C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_9000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_9400_0000_0000: 0x0000_0400_0000_0000, 0x0000_9800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_9C00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_A000_0000_0000: 0x0000_3C00_0000_0000, 0x0000_A400_0000_0000: 0x0000_0400_0000_0000, 0x0000_A800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_AC00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_B000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_B400_0000_0000: 0x0000_0400_0000_0000, 0x0000_B800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_BC00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_C000_0000_0000: 0x0000_7C00_0000_0000, 0x0000_C400_0000_0000: 0x0000_0400_0000_0000, 0x0000_C800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_CC00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_D000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_D400_0000_0000: 0x0000_0400_0000_0000, 0x0000_D800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_DC00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_E000_0000_0000: 0x0000_3C00_0000_0000, 0x0000_E400_0000_0000: 0x0000_0400_0000_0000, 0x0000_E800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_EC00_0000_0000: 0x0000_0400_0000_0000, + 0x0000_F000_0000_0000: 0x0000_1C00_0000_0000, 0x0000_F400_0000_0000: 0x0000_0400_0000_0000, 0x0000_F800_0000_0000: 0x0000_0C00_0000_0000, 0x0000_FC00_0000_0000: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_F800_0000_0000, 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0000_1000_0000_0000: 0x0000_1800_0000_0000, 0x0000_1800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_2000_0000_0000: 0x0000_3800_0000_0000, 0x0000_2800_0000_0000: 0x0000_0800_0000_0000, 0x0000_3000_0000_0000: 0x0000_1800_0000_0000, 0x0000_3800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_4000_0000_0000: 0x0000_7800_0000_0000, 0x0000_4800_0000_0000: 0x0000_0800_0000_0000, 0x0000_5000_0000_0000: 0x0000_1800_0000_0000, 0x0000_5800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_6000_0000_0000: 0x0000_3800_0000_0000, 0x0000_6800_0000_0000: 0x0000_0800_0000_0000, 0x0000_7000_0000_0000: 0x0000_1800_0000_0000, 0x0000_7800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_8000_0000_0000: 0x0000_F800_0000_0000, 0x0000_8800_0000_0000: 0x0000_0800_0000_0000, 0x0000_9000_0000_0000: 0x0000_1800_0000_0000, 0x0000_9800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_A000_0000_0000: 0x0000_3800_0000_0000, 0x0000_A800_0000_0000: 0x0000_0800_0000_0000, 0x0000_B000_0000_0000: 0x0000_1800_0000_0000, 0x0000_B800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_C000_0000_0000: 0x0000_7800_0000_0000, 0x0000_C800_0000_0000: 0x0000_0800_0000_0000, 0x0000_D000_0000_0000: 0x0000_1800_0000_0000, 0x0000_D800_0000_0000: 0x0000_0800_0000_0000, + 0x0000_E000_0000_0000: 0x0000_3800_0000_0000, 0x0000_E800_0000_0000: 0x0000_0800_0000_0000, 0x0000_F000_0000_0000: 0x0000_1800_0000_0000, 0x0000_F800_0000_0000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_F000_0000_0000, 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0000_2000_0000_0000: 0x0000_3000_0000_0000, 0x0000_3000_0000_0000: 0x0000_1000_0000_0000, + 0x0000_4000_0000_0000: 0x0000_7000_0000_0000, 0x0000_5000_0000_0000: 0x0000_1000_0000_0000, 0x0000_6000_0000_0000: 0x0000_3000_0000_0000, 0x0000_7000_0000_0000: 0x0000_1000_0000_0000, + 0x0000_8000_0000_0000: 0x0000_F000_0000_0000, 0x0000_9000_0000_0000: 0x0000_1000_0000_0000, 0x0000_A000_0000_0000: 0x0000_3000_0000_0000, 0x0000_B000_0000_0000: 0x0000_1000_0000_0000, + 0x0000_C000_0000_0000: 0x0000_7000_0000_0000, 0x0000_D000_0000_0000: 0x0000_1000_0000_0000, 0x0000_E000_0000_0000: 0x0000_3000_0000_0000, 0x0000_F000_0000_0000: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_E000_0000_0000, 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0000_4000_0000_0000: 0x0000_6000_0000_0000, 0x0000_6000_0000_0000: 0x0000_2000_0000_0000, + 0x0000_8000_0000_0000: 0x0000_E000_0000_0000, 0x0000_A000_0000_0000: 0x0000_2000_0000_0000, 0x0000_C000_0000_0000: 0x0000_6000_0000_0000, 0x0000_E000_0000_0000: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_C000_0000_0000, 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0000_8000_0000_0000: 0x0000_C000_0000_0000, 0x0000_C000_0000_0000: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8000_0000_0000, 0x0000_8000_0000_0000: 0x0000_8000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x00FE_0000_0000_0000, 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0004_0000_0000_0000: 0x0006_0000_0000_0000, 0x0006_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0008_0000_0000_0000: 0x000E_0000_0000_0000, 0x000A_0000_0000_0000: 0x0002_0000_0000_0000, 0x000C_0000_0000_0000: 0x0006_0000_0000_0000, 0x000E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0010_0000_0000_0000: 0x001E_0000_0000_0000, 0x0012_0000_0000_0000: 0x0002_0000_0000_0000, 0x0014_0000_0000_0000: 0x0006_0000_0000_0000, 0x0016_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0018_0000_0000_0000: 0x000E_0000_0000_0000, 0x001A_0000_0000_0000: 0x0002_0000_0000_0000, 0x001C_0000_0000_0000: 0x0006_0000_0000_0000, 0x001E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0020_0000_0000_0000: 0x003E_0000_0000_0000, 0x0022_0000_0000_0000: 0x0002_0000_0000_0000, 0x0024_0000_0000_0000: 0x0006_0000_0000_0000, 0x0026_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0028_0000_0000_0000: 0x000E_0000_0000_0000, 0x002A_0000_0000_0000: 0x0002_0000_0000_0000, 0x002C_0000_0000_0000: 0x0006_0000_0000_0000, 0x002E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0030_0000_0000_0000: 0x001E_0000_0000_0000, 0x0032_0000_0000_0000: 0x0002_0000_0000_0000, 0x0034_0000_0000_0000: 0x0006_0000_0000_0000, 0x0036_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0038_0000_0000_0000: 0x000E_0000_0000_0000, 0x003A_0000_0000_0000: 0x0002_0000_0000_0000, 0x003C_0000_0000_0000: 0x0006_0000_0000_0000, 0x003E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0040_0000_0000_0000: 0x007E_0000_0000_0000, 0x0042_0000_0000_0000: 0x0002_0000_0000_0000, 0x0044_0000_0000_0000: 0x0006_0000_0000_0000, 0x0046_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0048_0000_0000_0000: 0x000E_0000_0000_0000, 0x004A_0000_0000_0000: 0x0002_0000_0000_0000, 0x004C_0000_0000_0000: 0x0006_0000_0000_0000, 0x004E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0050_0000_0000_0000: 0x001E_0000_0000_0000, 0x0052_0000_0000_0000: 0x0002_0000_0000_0000, 0x0054_0000_0000_0000: 0x0006_0000_0000_0000, 0x0056_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0058_0000_0000_0000: 0x000E_0000_0000_0000, 0x005A_0000_0000_0000: 0x0002_0000_0000_0000, 0x005C_0000_0000_0000: 0x0006_0000_0000_0000, 0x005E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0060_0000_0000_0000: 0x003E_0000_0000_0000, 0x0062_0000_0000_0000: 0x0002_0000_0000_0000, 0x0064_0000_0000_0000: 0x0006_0000_0000_0000, 0x0066_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0068_0000_0000_0000: 0x000E_0000_0000_0000, 0x006A_0000_0000_0000: 0x0002_0000_0000_0000, 0x006C_0000_0000_0000: 0x0006_0000_0000_0000, 0x006E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0070_0000_0000_0000: 0x001E_0000_0000_0000, 0x0072_0000_0000_0000: 0x0002_0000_0000_0000, 0x0074_0000_0000_0000: 0x0006_0000_0000_0000, 0x0076_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0078_0000_0000_0000: 0x000E_0000_0000_0000, 0x007A_0000_0000_0000: 0x0002_0000_0000_0000, 0x007C_0000_0000_0000: 0x0006_0000_0000_0000, 0x007E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0080_0000_0000_0000: 0x00FE_0000_0000_0000, 0x0082_0000_0000_0000: 0x0002_0000_0000_0000, 0x0084_0000_0000_0000: 0x0006_0000_0000_0000, 0x0086_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0088_0000_0000_0000: 0x000E_0000_0000_0000, 0x008A_0000_0000_0000: 0x0002_0000_0000_0000, 0x008C_0000_0000_0000: 0x0006_0000_0000_0000, 0x008E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0090_0000_0000_0000: 0x001E_0000_0000_0000, 0x0092_0000_0000_0000: 0x0002_0000_0000_0000, 0x0094_0000_0000_0000: 0x0006_0000_0000_0000, 0x0096_0000_0000_0000: 0x0002_0000_0000_0000, + 0x0098_0000_0000_0000: 0x000E_0000_0000_0000, 0x009A_0000_0000_0000: 0x0002_0000_0000_0000, 0x009C_0000_0000_0000: 0x0006_0000_0000_0000, 0x009E_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00A0_0000_0000_0000: 0x003E_0000_0000_0000, 0x00A2_0000_0000_0000: 0x0002_0000_0000_0000, 0x00A4_0000_0000_0000: 0x0006_0000_0000_0000, 0x00A6_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00A8_0000_0000_0000: 0x000E_0000_0000_0000, 0x00AA_0000_0000_0000: 0x0002_0000_0000_0000, 0x00AC_0000_0000_0000: 0x0006_0000_0000_0000, 0x00AE_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00B0_0000_0000_0000: 0x001E_0000_0000_0000, 0x00B2_0000_0000_0000: 0x0002_0000_0000_0000, 0x00B4_0000_0000_0000: 0x0006_0000_0000_0000, 0x00B6_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00B8_0000_0000_0000: 0x000E_0000_0000_0000, 0x00BA_0000_0000_0000: 0x0002_0000_0000_0000, 0x00BC_0000_0000_0000: 0x0006_0000_0000_0000, 0x00BE_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00C0_0000_0000_0000: 0x007E_0000_0000_0000, 0x00C2_0000_0000_0000: 0x0002_0000_0000_0000, 0x00C4_0000_0000_0000: 0x0006_0000_0000_0000, 0x00C6_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00C8_0000_0000_0000: 0x000E_0000_0000_0000, 0x00CA_0000_0000_0000: 0x0002_0000_0000_0000, 0x00CC_0000_0000_0000: 0x0006_0000_0000_0000, 0x00CE_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00D0_0000_0000_0000: 0x001E_0000_0000_0000, 0x00D2_0000_0000_0000: 0x0002_0000_0000_0000, 0x00D4_0000_0000_0000: 0x0006_0000_0000_0000, 0x00D6_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00D8_0000_0000_0000: 0x000E_0000_0000_0000, 0x00DA_0000_0000_0000: 0x0002_0000_0000_0000, 0x00DC_0000_0000_0000: 0x0006_0000_0000_0000, 0x00DE_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00E0_0000_0000_0000: 0x003E_0000_0000_0000, 0x00E2_0000_0000_0000: 0x0002_0000_0000_0000, 0x00E4_0000_0000_0000: 0x0006_0000_0000_0000, 0x00E6_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00E8_0000_0000_0000: 0x000E_0000_0000_0000, 0x00EA_0000_0000_0000: 0x0002_0000_0000_0000, 0x00EC_0000_0000_0000: 0x0006_0000_0000_0000, 0x00EE_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00F0_0000_0000_0000: 0x001E_0000_0000_0000, 0x00F2_0000_0000_0000: 0x0002_0000_0000_0000, 0x00F4_0000_0000_0000: 0x0006_0000_0000_0000, 0x00F6_0000_0000_0000: 0x0002_0000_0000_0000, + 0x00F8_0000_0000_0000: 0x000E_0000_0000_0000, 0x00FA_0000_0000_0000: 0x0002_0000_0000_0000, 0x00FC_0000_0000_0000: 0x0006_0000_0000_0000, 0x00FE_0000_0000_0000: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x00FC_0000_0000_0000, 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0008_0000_0000_0000: 0x000C_0000_0000_0000, 0x000C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0010_0000_0000_0000: 0x001C_0000_0000_0000, 0x0014_0000_0000_0000: 0x0004_0000_0000_0000, 0x0018_0000_0000_0000: 0x000C_0000_0000_0000, 0x001C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0020_0000_0000_0000: 0x003C_0000_0000_0000, 0x0024_0000_0000_0000: 0x0004_0000_0000_0000, 0x0028_0000_0000_0000: 0x000C_0000_0000_0000, 0x002C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0030_0000_0000_0000: 0x001C_0000_0000_0000, 0x0034_0000_0000_0000: 0x0004_0000_0000_0000, 0x0038_0000_0000_0000: 0x000C_0000_0000_0000, 0x003C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0040_0000_0000_0000: 0x007C_0000_0000_0000, 0x0044_0000_0000_0000: 0x0004_0000_0000_0000, 0x0048_0000_0000_0000: 0x000C_0000_0000_0000, 0x004C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0050_0000_0000_0000: 0x001C_0000_0000_0000, 0x0054_0000_0000_0000: 0x0004_0000_0000_0000, 0x0058_0000_0000_0000: 0x000C_0000_0000_0000, 0x005C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0060_0000_0000_0000: 0x003C_0000_0000_0000, 0x0064_0000_0000_0000: 0x0004_0000_0000_0000, 0x0068_0000_0000_0000: 0x000C_0000_0000_0000, 0x006C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0070_0000_0000_0000: 0x001C_0000_0000_0000, 0x0074_0000_0000_0000: 0x0004_0000_0000_0000, 0x0078_0000_0000_0000: 0x000C_0000_0000_0000, 0x007C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0080_0000_0000_0000: 0x00FC_0000_0000_0000, 0x0084_0000_0000_0000: 0x0004_0000_0000_0000, 0x0088_0000_0000_0000: 0x000C_0000_0000_0000, 0x008C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x0090_0000_0000_0000: 0x001C_0000_0000_0000, 0x0094_0000_0000_0000: 0x0004_0000_0000_0000, 0x0098_0000_0000_0000: 0x000C_0000_0000_0000, 0x009C_0000_0000_0000: 0x0004_0000_0000_0000, + 0x00A0_0000_0000_0000: 0x003C_0000_0000_0000, 0x00A4_0000_0000_0000: 0x0004_0000_0000_0000, 0x00A8_0000_0000_0000: 0x000C_0000_0000_0000, 0x00AC_0000_0000_0000: 0x0004_0000_0000_0000, + 0x00B0_0000_0000_0000: 0x001C_0000_0000_0000, 0x00B4_0000_0000_0000: 0x0004_0000_0000_0000, 0x00B8_0000_0000_0000: 0x000C_0000_0000_0000, 0x00BC_0000_0000_0000: 0x0004_0000_0000_0000, + 0x00C0_0000_0000_0000: 0x007C_0000_0000_0000, 0x00C4_0000_0000_0000: 0x0004_0000_0000_0000, 0x00C8_0000_0000_0000: 0x000C_0000_0000_0000, 0x00CC_0000_0000_0000: 0x0004_0000_0000_0000, + 0x00D0_0000_0000_0000: 0x001C_0000_0000_0000, 0x00D4_0000_0000_0000: 0x0004_0000_0000_0000, 0x00D8_0000_0000_0000: 0x000C_0000_0000_0000, 0x00DC_0000_0000_0000: 0x0004_0000_0000_0000, + 0x00E0_0000_0000_0000: 0x003C_0000_0000_0000, 0x00E4_0000_0000_0000: 0x0004_0000_0000_0000, 0x00E8_0000_0000_0000: 0x000C_0000_0000_0000, 0x00EC_0000_0000_0000: 0x0004_0000_0000_0000, + 0x00F0_0000_0000_0000: 0x001C_0000_0000_0000, 0x00F4_0000_0000_0000: 0x0004_0000_0000_0000, 0x00F8_0000_0000_0000: 0x000C_0000_0000_0000, 0x00FC_0000_0000_0000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x00F8_0000_0000_0000, 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0010_0000_0000_0000: 0x0018_0000_0000_0000, 0x0018_0000_0000_0000: 0x0008_0000_0000_0000, + 0x0020_0000_0000_0000: 0x0038_0000_0000_0000, 0x0028_0000_0000_0000: 0x0008_0000_0000_0000, 0x0030_0000_0000_0000: 0x0018_0000_0000_0000, 0x0038_0000_0000_0000: 0x0008_0000_0000_0000, + 0x0040_0000_0000_0000: 0x0078_0000_0000_0000, 0x0048_0000_0000_0000: 0x0008_0000_0000_0000, 0x0050_0000_0000_0000: 0x0018_0000_0000_0000, 0x0058_0000_0000_0000: 0x0008_0000_0000_0000, + 0x0060_0000_0000_0000: 0x0038_0000_0000_0000, 0x0068_0000_0000_0000: 0x0008_0000_0000_0000, 0x0070_0000_0000_0000: 0x0018_0000_0000_0000, 0x0078_0000_0000_0000: 0x0008_0000_0000_0000, + 0x0080_0000_0000_0000: 0x00F8_0000_0000_0000, 0x0088_0000_0000_0000: 0x0008_0000_0000_0000, 0x0090_0000_0000_0000: 0x0018_0000_0000_0000, 0x0098_0000_0000_0000: 0x0008_0000_0000_0000, + 0x00A0_0000_0000_0000: 0x0038_0000_0000_0000, 0x00A8_0000_0000_0000: 0x0008_0000_0000_0000, 0x00B0_0000_0000_0000: 0x0018_0000_0000_0000, 0x00B8_0000_0000_0000: 0x0008_0000_0000_0000, + 0x00C0_0000_0000_0000: 0x0078_0000_0000_0000, 0x00C8_0000_0000_0000: 0x0008_0000_0000_0000, 0x00D0_0000_0000_0000: 0x0018_0000_0000_0000, 0x00D8_0000_0000_0000: 0x0008_0000_0000_0000, + 0x00E0_0000_0000_0000: 0x0038_0000_0000_0000, 0x00E8_0000_0000_0000: 0x0008_0000_0000_0000, 0x00F0_0000_0000_0000: 0x0018_0000_0000_0000, 0x00F8_0000_0000_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x00F0_0000_0000_0000, 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x0020_0000_0000_0000: 0x0030_0000_0000_0000, 0x0030_0000_0000_0000: 0x0010_0000_0000_0000, + 0x0040_0000_0000_0000: 0x0070_0000_0000_0000, 0x0050_0000_0000_0000: 0x0010_0000_0000_0000, 0x0060_0000_0000_0000: 0x0030_0000_0000_0000, 0x0070_0000_0000_0000: 0x0010_0000_0000_0000, + 0x0080_0000_0000_0000: 0x00F0_0000_0000_0000, 0x0090_0000_0000_0000: 0x0010_0000_0000_0000, 0x00A0_0000_0000_0000: 0x0030_0000_0000_0000, 0x00B0_0000_0000_0000: 0x0010_0000_0000_0000, + 0x00C0_0000_0000_0000: 0x0070_0000_0000_0000, 0x00D0_0000_0000_0000: 0x0010_0000_0000_0000, 0x00E0_0000_0000_0000: 0x0030_0000_0000_0000, 0x00F0_0000_0000_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x00E0_0000_0000_0000, 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x0040_0000_0000_0000: 0x0060_0000_0000_0000, 0x0060_0000_0000_0000: 0x0020_0000_0000_0000, + 0x0080_0000_0000_0000: 0x00E0_0000_0000_0000, 0x00A0_0000_0000_0000: 0x0020_0000_0000_0000, 0x00C0_0000_0000_0000: 0x0060_0000_0000_0000, 0x00E0_0000_0000_0000: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x00C0_0000_0000_0000, 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x0080_0000_0000_0000: 0x00C0_0000_0000_0000, 0x00C0_0000_0000_0000: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_0000_0000_0000, 0x0080_0000_0000_0000: 0x0080_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0xFE00_0000_0000_0000, 0x0200_0000_0000_0000: 0x0200_0000_0000_0000, 0x0400_0000_0000_0000: 0x0600_0000_0000_0000, 0x0600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x0800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x0A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x0C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x0E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x1000_0000_0000_0000: 0x1E00_0000_0000_0000, 0x1200_0000_0000_0000: 0x0200_0000_0000_0000, 0x1400_0000_0000_0000: 0x0600_0000_0000_0000, 0x1600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x1800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x1A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x1C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x1E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x2000_0000_0000_0000: 0x3E00_0000_0000_0000, 0x2200_0000_0000_0000: 0x0200_0000_0000_0000, 0x2400_0000_0000_0000: 0x0600_0000_0000_0000, 0x2600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x2800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x2A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x2C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x2E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x3000_0000_0000_0000: 0x1E00_0000_0000_0000, 0x3200_0000_0000_0000: 0x0200_0000_0000_0000, 0x3400_0000_0000_0000: 0x0600_0000_0000_0000, 0x3600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x3800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x3A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x3C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x3E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x4000_0000_0000_0000: 0x7E00_0000_0000_0000, 0x4200_0000_0000_0000: 0x0200_0000_0000_0000, 0x4400_0000_0000_0000: 0x0600_0000_0000_0000, 0x4600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x4800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x4A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x4C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x4E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x5000_0000_0000_0000: 0x1E00_0000_0000_0000, 0x5200_0000_0000_0000: 0x0200_0000_0000_0000, 0x5400_0000_0000_0000: 0x0600_0000_0000_0000, 0x5600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x5800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x5A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x5C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x5E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x6000_0000_0000_0000: 0x3E00_0000_0000_0000, 0x6200_0000_0000_0000: 0x0200_0000_0000_0000, 0x6400_0000_0000_0000: 0x0600_0000_0000_0000, 0x6600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x6800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x6A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x6C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x6E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x7000_0000_0000_0000: 0x1E00_0000_0000_0000, 0x7200_0000_0000_0000: 0x0200_0000_0000_0000, 0x7400_0000_0000_0000: 0x0600_0000_0000_0000, 0x7600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x7800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x7A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x7C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x7E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x8000_0000_0000_0000: 0xFE00_0000_0000_0000, 0x8200_0000_0000_0000: 0x0200_0000_0000_0000, 0x8400_0000_0000_0000: 0x0600_0000_0000_0000, 0x8600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x8800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x8A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x8C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x8E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0x9000_0000_0000_0000: 0x1E00_0000_0000_0000, 0x9200_0000_0000_0000: 0x0200_0000_0000_0000, 0x9400_0000_0000_0000: 0x0600_0000_0000_0000, 0x9600_0000_0000_0000: 0x0200_0000_0000_0000, + 0x9800_0000_0000_0000: 0x0E00_0000_0000_0000, 0x9A00_0000_0000_0000: 0x0200_0000_0000_0000, 0x9C00_0000_0000_0000: 0x0600_0000_0000_0000, 0x9E00_0000_0000_0000: 0x0200_0000_0000_0000, + 0xA000_0000_0000_0000: 0x3E00_0000_0000_0000, 0xA200_0000_0000_0000: 0x0200_0000_0000_0000, 0xA400_0000_0000_0000: 0x0600_0000_0000_0000, 0xA600_0000_0000_0000: 0x0200_0000_0000_0000, + 0xA800_0000_0000_0000: 0x0E00_0000_0000_0000, 0xAA00_0000_0000_0000: 0x0200_0000_0000_0000, 0xAC00_0000_0000_0000: 0x0600_0000_0000_0000, 0xAE00_0000_0000_0000: 0x0200_0000_0000_0000, + 0xB000_0000_0000_0000: 0x1E00_0000_0000_0000, 0xB200_0000_0000_0000: 0x0200_0000_0000_0000, 0xB400_0000_0000_0000: 0x0600_0000_0000_0000, 0xB600_0000_0000_0000: 0x0200_0000_0000_0000, + 0xB800_0000_0000_0000: 0x0E00_0000_0000_0000, 0xBA00_0000_0000_0000: 0x0200_0000_0000_0000, 0xBC00_0000_0000_0000: 0x0600_0000_0000_0000, 0xBE00_0000_0000_0000: 0x0200_0000_0000_0000, + 0xC000_0000_0000_0000: 0x7E00_0000_0000_0000, 0xC200_0000_0000_0000: 0x0200_0000_0000_0000, 0xC400_0000_0000_0000: 0x0600_0000_0000_0000, 0xC600_0000_0000_0000: 0x0200_0000_0000_0000, + 0xC800_0000_0000_0000: 0x0E00_0000_0000_0000, 0xCA00_0000_0000_0000: 0x0200_0000_0000_0000, 0xCC00_0000_0000_0000: 0x0600_0000_0000_0000, 0xCE00_0000_0000_0000: 0x0200_0000_0000_0000, + 0xD000_0000_0000_0000: 0x1E00_0000_0000_0000, 0xD200_0000_0000_0000: 0x0200_0000_0000_0000, 0xD400_0000_0000_0000: 0x0600_0000_0000_0000, 0xD600_0000_0000_0000: 0x0200_0000_0000_0000, + 0xD800_0000_0000_0000: 0x0E00_0000_0000_0000, 0xDA00_0000_0000_0000: 0x0200_0000_0000_0000, 0xDC00_0000_0000_0000: 0x0600_0000_0000_0000, 0xDE00_0000_0000_0000: 0x0200_0000_0000_0000, + 0xE000_0000_0000_0000: 0x3E00_0000_0000_0000, 0xE200_0000_0000_0000: 0x0200_0000_0000_0000, 0xE400_0000_0000_0000: 0x0600_0000_0000_0000, 0xE600_0000_0000_0000: 0x0200_0000_0000_0000, + 0xE800_0000_0000_0000: 0x0E00_0000_0000_0000, 0xEA00_0000_0000_0000: 0x0200_0000_0000_0000, 0xEC00_0000_0000_0000: 0x0600_0000_0000_0000, 0xEE00_0000_0000_0000: 0x0200_0000_0000_0000, + 0xF000_0000_0000_0000: 0x1E00_0000_0000_0000, 0xF200_0000_0000_0000: 0x0200_0000_0000_0000, 0xF400_0000_0000_0000: 0x0600_0000_0000_0000, 0xF600_0000_0000_0000: 0x0200_0000_0000_0000, + 0xF800_0000_0000_0000: 0x0E00_0000_0000_0000, 0xFA00_0000_0000_0000: 0x0200_0000_0000_0000, 0xFC00_0000_0000_0000: 0x0600_0000_0000_0000, 0xFE00_0000_0000_0000: 0x0200_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0xFC00_0000_0000_0000, 0x0400_0000_0000_0000: 0x0400_0000_0000_0000, 0x0800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x0C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x1000_0000_0000_0000: 0x1C00_0000_0000_0000, 0x1400_0000_0000_0000: 0x0400_0000_0000_0000, 0x1800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x1C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x2000_0000_0000_0000: 0x3C00_0000_0000_0000, 0x2400_0000_0000_0000: 0x0400_0000_0000_0000, 0x2800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x2C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x3000_0000_0000_0000: 0x1C00_0000_0000_0000, 0x3400_0000_0000_0000: 0x0400_0000_0000_0000, 0x3800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x3C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x4000_0000_0000_0000: 0x7C00_0000_0000_0000, 0x4400_0000_0000_0000: 0x0400_0000_0000_0000, 0x4800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x4C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x5000_0000_0000_0000: 0x1C00_0000_0000_0000, 0x5400_0000_0000_0000: 0x0400_0000_0000_0000, 0x5800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x5C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x6000_0000_0000_0000: 0x3C00_0000_0000_0000, 0x6400_0000_0000_0000: 0x0400_0000_0000_0000, 0x6800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x6C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x7000_0000_0000_0000: 0x1C00_0000_0000_0000, 0x7400_0000_0000_0000: 0x0400_0000_0000_0000, 0x7800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x7C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x8000_0000_0000_0000: 0xFC00_0000_0000_0000, 0x8400_0000_0000_0000: 0x0400_0000_0000_0000, 0x8800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x8C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0x9000_0000_0000_0000: 0x1C00_0000_0000_0000, 0x9400_0000_0000_0000: 0x0400_0000_0000_0000, 0x9800_0000_0000_0000: 0x0C00_0000_0000_0000, 0x9C00_0000_0000_0000: 0x0400_0000_0000_0000, + 0xA000_0000_0000_0000: 0x3C00_0000_0000_0000, 0xA400_0000_0000_0000: 0x0400_0000_0000_0000, 0xA800_0000_0000_0000: 0x0C00_0000_0000_0000, 0xAC00_0000_0000_0000: 0x0400_0000_0000_0000, + 0xB000_0000_0000_0000: 0x1C00_0000_0000_0000, 0xB400_0000_0000_0000: 0x0400_0000_0000_0000, 0xB800_0000_0000_0000: 0x0C00_0000_0000_0000, 0xBC00_0000_0000_0000: 0x0400_0000_0000_0000, + 0xC000_0000_0000_0000: 0x7C00_0000_0000_0000, 0xC400_0000_0000_0000: 0x0400_0000_0000_0000, 0xC800_0000_0000_0000: 0x0C00_0000_0000_0000, 0xCC00_0000_0000_0000: 0x0400_0000_0000_0000, + 0xD000_0000_0000_0000: 0x1C00_0000_0000_0000, 0xD400_0000_0000_0000: 0x0400_0000_0000_0000, 0xD800_0000_0000_0000: 0x0C00_0000_0000_0000, 0xDC00_0000_0000_0000: 0x0400_0000_0000_0000, + 0xE000_0000_0000_0000: 0x3C00_0000_0000_0000, 0xE400_0000_0000_0000: 0x0400_0000_0000_0000, 0xE800_0000_0000_0000: 0x0C00_0000_0000_0000, 0xEC00_0000_0000_0000: 0x0400_0000_0000_0000, + 0xF000_0000_0000_0000: 0x1C00_0000_0000_0000, 0xF400_0000_0000_0000: 0x0400_0000_0000_0000, 0xF800_0000_0000_0000: 0x0C00_0000_0000_0000, 0xFC00_0000_0000_0000: 0x0400_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0xF800_0000_0000_0000, 0x0800_0000_0000_0000: 0x0800_0000_0000_0000, 0x1000_0000_0000_0000: 0x1800_0000_0000_0000, 0x1800_0000_0000_0000: 0x0800_0000_0000_0000, + 0x2000_0000_0000_0000: 0x3800_0000_0000_0000, 0x2800_0000_0000_0000: 0x0800_0000_0000_0000, 0x3000_0000_0000_0000: 0x1800_0000_0000_0000, 0x3800_0000_0000_0000: 0x0800_0000_0000_0000, + 0x4000_0000_0000_0000: 0x7800_0000_0000_0000, 0x4800_0000_0000_0000: 0x0800_0000_0000_0000, 0x5000_0000_0000_0000: 0x1800_0000_0000_0000, 0x5800_0000_0000_0000: 0x0800_0000_0000_0000, + 0x6000_0000_0000_0000: 0x3800_0000_0000_0000, 0x6800_0000_0000_0000: 0x0800_0000_0000_0000, 0x7000_0000_0000_0000: 0x1800_0000_0000_0000, 0x7800_0000_0000_0000: 0x0800_0000_0000_0000, + 0x8000_0000_0000_0000: 0xF800_0000_0000_0000, 0x8800_0000_0000_0000: 0x0800_0000_0000_0000, 0x9000_0000_0000_0000: 0x1800_0000_0000_0000, 0x9800_0000_0000_0000: 0x0800_0000_0000_0000, + 0xA000_0000_0000_0000: 0x3800_0000_0000_0000, 0xA800_0000_0000_0000: 0x0800_0000_0000_0000, 0xB000_0000_0000_0000: 0x1800_0000_0000_0000, 0xB800_0000_0000_0000: 0x0800_0000_0000_0000, + 0xC000_0000_0000_0000: 0x7800_0000_0000_0000, 0xC800_0000_0000_0000: 0x0800_0000_0000_0000, 0xD000_0000_0000_0000: 0x1800_0000_0000_0000, 0xD800_0000_0000_0000: 0x0800_0000_0000_0000, + 0xE000_0000_0000_0000: 0x3800_0000_0000_0000, 0xE800_0000_0000_0000: 0x0800_0000_0000_0000, 0xF000_0000_0000_0000: 0x1800_0000_0000_0000, 0xF800_0000_0000_0000: 0x0800_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0xF000_0000_0000_0000, 0x1000_0000_0000_0000: 0x1000_0000_0000_0000, 0x2000_0000_0000_0000: 0x3000_0000_0000_0000, 0x3000_0000_0000_0000: 0x1000_0000_0000_0000, + 0x4000_0000_0000_0000: 0x7000_0000_0000_0000, 0x5000_0000_0000_0000: 0x1000_0000_0000_0000, 0x6000_0000_0000_0000: 0x3000_0000_0000_0000, 0x7000_0000_0000_0000: 0x1000_0000_0000_0000, + 0x8000_0000_0000_0000: 0xF000_0000_0000_0000, 0x9000_0000_0000_0000: 0x1000_0000_0000_0000, 0xA000_0000_0000_0000: 0x3000_0000_0000_0000, 0xB000_0000_0000_0000: 0x1000_0000_0000_0000, + 0xC000_0000_0000_0000: 0x7000_0000_0000_0000, 0xD000_0000_0000_0000: 0x1000_0000_0000_0000, 0xE000_0000_0000_0000: 0x3000_0000_0000_0000, 0xF000_0000_0000_0000: 0x1000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0xE000_0000_0000_0000, 0x2000_0000_0000_0000: 0x2000_0000_0000_0000, 0x4000_0000_0000_0000: 0x6000_0000_0000_0000, 0x6000_0000_0000_0000: 0x2000_0000_0000_0000, + 0x8000_0000_0000_0000: 0xE000_0000_0000_0000, 0xA000_0000_0000_0000: 0x2000_0000_0000_0000, 0xC000_0000_0000_0000: 0x6000_0000_0000_0000, 0xE000_0000_0000_0000: 0x2000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0xC000_0000_0000_0000, 0x4000_0000_0000_0000: 0x4000_0000_0000_0000, 0x8000_0000_0000_0000: 0xC000_0000_0000_0000, 0xC000_0000_0000_0000: 0x4000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8000_0000_0000_0000, 0x8000_0000_0000_0000: 0x8000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, +) +R_MASK = ( + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0001, 0x0000_0000_0000_0001: 0x0000_0000_0000_0001, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0003, 0x0000_0000_0000_0001: 0x0000_0000_0000_0003, 0x0000_0000_0000_0002: 0x0000_0000_0000_0002, 0x0000_0000_0000_0003: 0x0000_0000_0000_0002, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0007, 0x0000_0000_0000_0001: 0x0000_0000_0000_0007, 0x0000_0000_0000_0002: 0x0000_0000_0000_0006, 0x0000_0000_0000_0003: 0x0000_0000_0000_0006, + 0x0000_0000_0000_0004: 0x0000_0000_0000_0004, 0x0000_0000_0000_0005: 0x0000_0000_0000_0004, 0x0000_0000_0000_0006: 0x0000_0000_0000_0004, 0x0000_0000_0000_0007: 0x0000_0000_0000_0004, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_000F, 0x0000_0000_0000_0001: 0x0000_0000_0000_000F, 0x0000_0000_0000_0002: 0x0000_0000_0000_000E, 0x0000_0000_0000_0003: 0x0000_0000_0000_000E, + 0x0000_0000_0000_0004: 0x0000_0000_0000_000C, 0x0000_0000_0000_0005: 0x0000_0000_0000_000C, 0x0000_0000_0000_0006: 0x0000_0000_0000_000C, 0x0000_0000_0000_0007: 0x0000_0000_0000_000C, + 0x0000_0000_0000_0008: 0x0000_0000_0000_0008, 0x0000_0000_0000_0009: 0x0000_0000_0000_0008, 0x0000_0000_0000_000A: 0x0000_0000_0000_0008, 0x0000_0000_0000_000B: 0x0000_0000_0000_0008, + 0x0000_0000_0000_000C: 0x0000_0000_0000_0008, 0x0000_0000_0000_000D: 0x0000_0000_0000_0008, 0x0000_0000_0000_000E: 0x0000_0000_0000_0008, 0x0000_0000_0000_000F: 0x0000_0000_0000_0008, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_001F, 0x0000_0000_0000_0001: 0x0000_0000_0000_001F, 0x0000_0000_0000_0002: 0x0000_0000_0000_001E, 0x0000_0000_0000_0003: 0x0000_0000_0000_001E, + 0x0000_0000_0000_0004: 0x0000_0000_0000_001C, 0x0000_0000_0000_0005: 0x0000_0000_0000_001C, 0x0000_0000_0000_0006: 0x0000_0000_0000_001C, 0x0000_0000_0000_0007: 0x0000_0000_0000_001C, + 0x0000_0000_0000_0008: 0x0000_0000_0000_0018, 0x0000_0000_0000_0009: 0x0000_0000_0000_0018, 0x0000_0000_0000_000A: 0x0000_0000_0000_0018, 0x0000_0000_0000_000B: 0x0000_0000_0000_0018, + 0x0000_0000_0000_000C: 0x0000_0000_0000_0018, 0x0000_0000_0000_000D: 0x0000_0000_0000_0018, 0x0000_0000_0000_000E: 0x0000_0000_0000_0018, 0x0000_0000_0000_000F: 0x0000_0000_0000_0018, + 0x0000_0000_0000_0010: 0x0000_0000_0000_0010, 0x0000_0000_0000_0011: 0x0000_0000_0000_0010, 0x0000_0000_0000_0012: 0x0000_0000_0000_0010, 0x0000_0000_0000_0013: 0x0000_0000_0000_0010, + 0x0000_0000_0000_0014: 0x0000_0000_0000_0010, 0x0000_0000_0000_0015: 0x0000_0000_0000_0010, 0x0000_0000_0000_0016: 0x0000_0000_0000_0010, 0x0000_0000_0000_0017: 0x0000_0000_0000_0010, + 0x0000_0000_0000_0018: 0x0000_0000_0000_0010, 0x0000_0000_0000_0019: 0x0000_0000_0000_0010, 0x0000_0000_0000_001A: 0x0000_0000_0000_0010, 0x0000_0000_0000_001B: 0x0000_0000_0000_0010, + 0x0000_0000_0000_001C: 0x0000_0000_0000_0010, 0x0000_0000_0000_001D: 0x0000_0000_0000_0010, 0x0000_0000_0000_001E: 0x0000_0000_0000_0010, 0x0000_0000_0000_001F: 0x0000_0000_0000_0010, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_003F, 0x0000_0000_0000_0001: 0x0000_0000_0000_003F, 0x0000_0000_0000_0002: 0x0000_0000_0000_003E, 0x0000_0000_0000_0003: 0x0000_0000_0000_003E, + 0x0000_0000_0000_0004: 0x0000_0000_0000_003C, 0x0000_0000_0000_0005: 0x0000_0000_0000_003C, 0x0000_0000_0000_0006: 0x0000_0000_0000_003C, 0x0000_0000_0000_0007: 0x0000_0000_0000_003C, + 0x0000_0000_0000_0008: 0x0000_0000_0000_0038, 0x0000_0000_0000_0009: 0x0000_0000_0000_0038, 0x0000_0000_0000_000A: 0x0000_0000_0000_0038, 0x0000_0000_0000_000B: 0x0000_0000_0000_0038, + 0x0000_0000_0000_000C: 0x0000_0000_0000_0038, 0x0000_0000_0000_000D: 0x0000_0000_0000_0038, 0x0000_0000_0000_000E: 0x0000_0000_0000_0038, 0x0000_0000_0000_000F: 0x0000_0000_0000_0038, + 0x0000_0000_0000_0010: 0x0000_0000_0000_0030, 0x0000_0000_0000_0011: 0x0000_0000_0000_0030, 0x0000_0000_0000_0012: 0x0000_0000_0000_0030, 0x0000_0000_0000_0013: 0x0000_0000_0000_0030, + 0x0000_0000_0000_0014: 0x0000_0000_0000_0030, 0x0000_0000_0000_0015: 0x0000_0000_0000_0030, 0x0000_0000_0000_0016: 0x0000_0000_0000_0030, 0x0000_0000_0000_0017: 0x0000_0000_0000_0030, + 0x0000_0000_0000_0018: 0x0000_0000_0000_0030, 0x0000_0000_0000_0019: 0x0000_0000_0000_0030, 0x0000_0000_0000_001A: 0x0000_0000_0000_0030, 0x0000_0000_0000_001B: 0x0000_0000_0000_0030, + 0x0000_0000_0000_001C: 0x0000_0000_0000_0030, 0x0000_0000_0000_001D: 0x0000_0000_0000_0030, 0x0000_0000_0000_001E: 0x0000_0000_0000_0030, 0x0000_0000_0000_001F: 0x0000_0000_0000_0030, + 0x0000_0000_0000_0020: 0x0000_0000_0000_0020, 0x0000_0000_0000_0021: 0x0000_0000_0000_0020, 0x0000_0000_0000_0022: 0x0000_0000_0000_0020, 0x0000_0000_0000_0023: 0x0000_0000_0000_0020, + 0x0000_0000_0000_0024: 0x0000_0000_0000_0020, 0x0000_0000_0000_0025: 0x0000_0000_0000_0020, 0x0000_0000_0000_0026: 0x0000_0000_0000_0020, 0x0000_0000_0000_0027: 0x0000_0000_0000_0020, + 0x0000_0000_0000_0028: 0x0000_0000_0000_0020, 0x0000_0000_0000_0029: 0x0000_0000_0000_0020, 0x0000_0000_0000_002A: 0x0000_0000_0000_0020, 0x0000_0000_0000_002B: 0x0000_0000_0000_0020, + 0x0000_0000_0000_002C: 0x0000_0000_0000_0020, 0x0000_0000_0000_002D: 0x0000_0000_0000_0020, 0x0000_0000_0000_002E: 0x0000_0000_0000_0020, 0x0000_0000_0000_002F: 0x0000_0000_0000_0020, + 0x0000_0000_0000_0030: 0x0000_0000_0000_0020, 0x0000_0000_0000_0031: 0x0000_0000_0000_0020, 0x0000_0000_0000_0032: 0x0000_0000_0000_0020, 0x0000_0000_0000_0033: 0x0000_0000_0000_0020, + 0x0000_0000_0000_0034: 0x0000_0000_0000_0020, 0x0000_0000_0000_0035: 0x0000_0000_0000_0020, 0x0000_0000_0000_0036: 0x0000_0000_0000_0020, 0x0000_0000_0000_0037: 0x0000_0000_0000_0020, + 0x0000_0000_0000_0038: 0x0000_0000_0000_0020, 0x0000_0000_0000_0039: 0x0000_0000_0000_0020, 0x0000_0000_0000_003A: 0x0000_0000_0000_0020, 0x0000_0000_0000_003B: 0x0000_0000_0000_0020, + 0x0000_0000_0000_003C: 0x0000_0000_0000_0020, 0x0000_0000_0000_003D: 0x0000_0000_0000_0020, 0x0000_0000_0000_003E: 0x0000_0000_0000_0020, 0x0000_0000_0000_003F: 0x0000_0000_0000_0020, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_007F, 0x0000_0000_0000_0001: 0x0000_0000_0000_007F, 0x0000_0000_0000_0002: 0x0000_0000_0000_007E, 0x0000_0000_0000_0003: 0x0000_0000_0000_007E, + 0x0000_0000_0000_0004: 0x0000_0000_0000_007C, 0x0000_0000_0000_0005: 0x0000_0000_0000_007C, 0x0000_0000_0000_0006: 0x0000_0000_0000_007C, 0x0000_0000_0000_0007: 0x0000_0000_0000_007C, + 0x0000_0000_0000_0008: 0x0000_0000_0000_0078, 0x0000_0000_0000_0009: 0x0000_0000_0000_0078, 0x0000_0000_0000_000A: 0x0000_0000_0000_0078, 0x0000_0000_0000_000B: 0x0000_0000_0000_0078, + 0x0000_0000_0000_000C: 0x0000_0000_0000_0078, 0x0000_0000_0000_000D: 0x0000_0000_0000_0078, 0x0000_0000_0000_000E: 0x0000_0000_0000_0078, 0x0000_0000_0000_000F: 0x0000_0000_0000_0078, + 0x0000_0000_0000_0010: 0x0000_0000_0000_0070, 0x0000_0000_0000_0011: 0x0000_0000_0000_0070, 0x0000_0000_0000_0012: 0x0000_0000_0000_0070, 0x0000_0000_0000_0013: 0x0000_0000_0000_0070, + 0x0000_0000_0000_0014: 0x0000_0000_0000_0070, 0x0000_0000_0000_0015: 0x0000_0000_0000_0070, 0x0000_0000_0000_0016: 0x0000_0000_0000_0070, 0x0000_0000_0000_0017: 0x0000_0000_0000_0070, + 0x0000_0000_0000_0018: 0x0000_0000_0000_0070, 0x0000_0000_0000_0019: 0x0000_0000_0000_0070, 0x0000_0000_0000_001A: 0x0000_0000_0000_0070, 0x0000_0000_0000_001B: 0x0000_0000_0000_0070, + 0x0000_0000_0000_001C: 0x0000_0000_0000_0070, 0x0000_0000_0000_001D: 0x0000_0000_0000_0070, 0x0000_0000_0000_001E: 0x0000_0000_0000_0070, 0x0000_0000_0000_001F: 0x0000_0000_0000_0070, + 0x0000_0000_0000_0020: 0x0000_0000_0000_0060, 0x0000_0000_0000_0021: 0x0000_0000_0000_0060, 0x0000_0000_0000_0022: 0x0000_0000_0000_0060, 0x0000_0000_0000_0023: 0x0000_0000_0000_0060, + 0x0000_0000_0000_0024: 0x0000_0000_0000_0060, 0x0000_0000_0000_0025: 0x0000_0000_0000_0060, 0x0000_0000_0000_0026: 0x0000_0000_0000_0060, 0x0000_0000_0000_0027: 0x0000_0000_0000_0060, + 0x0000_0000_0000_0028: 0x0000_0000_0000_0060, 0x0000_0000_0000_0029: 0x0000_0000_0000_0060, 0x0000_0000_0000_002A: 0x0000_0000_0000_0060, 0x0000_0000_0000_002B: 0x0000_0000_0000_0060, + 0x0000_0000_0000_002C: 0x0000_0000_0000_0060, 0x0000_0000_0000_002D: 0x0000_0000_0000_0060, 0x0000_0000_0000_002E: 0x0000_0000_0000_0060, 0x0000_0000_0000_002F: 0x0000_0000_0000_0060, + 0x0000_0000_0000_0030: 0x0000_0000_0000_0060, 0x0000_0000_0000_0031: 0x0000_0000_0000_0060, 0x0000_0000_0000_0032: 0x0000_0000_0000_0060, 0x0000_0000_0000_0033: 0x0000_0000_0000_0060, + 0x0000_0000_0000_0034: 0x0000_0000_0000_0060, 0x0000_0000_0000_0035: 0x0000_0000_0000_0060, 0x0000_0000_0000_0036: 0x0000_0000_0000_0060, 0x0000_0000_0000_0037: 0x0000_0000_0000_0060, + 0x0000_0000_0000_0038: 0x0000_0000_0000_0060, 0x0000_0000_0000_0039: 0x0000_0000_0000_0060, 0x0000_0000_0000_003A: 0x0000_0000_0000_0060, 0x0000_0000_0000_003B: 0x0000_0000_0000_0060, + 0x0000_0000_0000_003C: 0x0000_0000_0000_0060, 0x0000_0000_0000_003D: 0x0000_0000_0000_0060, 0x0000_0000_0000_003E: 0x0000_0000_0000_0060, 0x0000_0000_0000_003F: 0x0000_0000_0000_0060, + 0x0000_0000_0000_0040: 0x0000_0000_0000_0040, 0x0000_0000_0000_0041: 0x0000_0000_0000_0040, 0x0000_0000_0000_0042: 0x0000_0000_0000_0040, 0x0000_0000_0000_0043: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0044: 0x0000_0000_0000_0040, 0x0000_0000_0000_0045: 0x0000_0000_0000_0040, 0x0000_0000_0000_0046: 0x0000_0000_0000_0040, 0x0000_0000_0000_0047: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0048: 0x0000_0000_0000_0040, 0x0000_0000_0000_0049: 0x0000_0000_0000_0040, 0x0000_0000_0000_004A: 0x0000_0000_0000_0040, 0x0000_0000_0000_004B: 0x0000_0000_0000_0040, + 0x0000_0000_0000_004C: 0x0000_0000_0000_0040, 0x0000_0000_0000_004D: 0x0000_0000_0000_0040, 0x0000_0000_0000_004E: 0x0000_0000_0000_0040, 0x0000_0000_0000_004F: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0050: 0x0000_0000_0000_0040, 0x0000_0000_0000_0051: 0x0000_0000_0000_0040, 0x0000_0000_0000_0052: 0x0000_0000_0000_0040, 0x0000_0000_0000_0053: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0054: 0x0000_0000_0000_0040, 0x0000_0000_0000_0055: 0x0000_0000_0000_0040, 0x0000_0000_0000_0056: 0x0000_0000_0000_0040, 0x0000_0000_0000_0057: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0058: 0x0000_0000_0000_0040, 0x0000_0000_0000_0059: 0x0000_0000_0000_0040, 0x0000_0000_0000_005A: 0x0000_0000_0000_0040, 0x0000_0000_0000_005B: 0x0000_0000_0000_0040, + 0x0000_0000_0000_005C: 0x0000_0000_0000_0040, 0x0000_0000_0000_005D: 0x0000_0000_0000_0040, 0x0000_0000_0000_005E: 0x0000_0000_0000_0040, 0x0000_0000_0000_005F: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0060: 0x0000_0000_0000_0040, 0x0000_0000_0000_0061: 0x0000_0000_0000_0040, 0x0000_0000_0000_0062: 0x0000_0000_0000_0040, 0x0000_0000_0000_0063: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0064: 0x0000_0000_0000_0040, 0x0000_0000_0000_0065: 0x0000_0000_0000_0040, 0x0000_0000_0000_0066: 0x0000_0000_0000_0040, 0x0000_0000_0000_0067: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0068: 0x0000_0000_0000_0040, 0x0000_0000_0000_0069: 0x0000_0000_0000_0040, 0x0000_0000_0000_006A: 0x0000_0000_0000_0040, 0x0000_0000_0000_006B: 0x0000_0000_0000_0040, + 0x0000_0000_0000_006C: 0x0000_0000_0000_0040, 0x0000_0000_0000_006D: 0x0000_0000_0000_0040, 0x0000_0000_0000_006E: 0x0000_0000_0000_0040, 0x0000_0000_0000_006F: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0070: 0x0000_0000_0000_0040, 0x0000_0000_0000_0071: 0x0000_0000_0000_0040, 0x0000_0000_0000_0072: 0x0000_0000_0000_0040, 0x0000_0000_0000_0073: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0074: 0x0000_0000_0000_0040, 0x0000_0000_0000_0075: 0x0000_0000_0000_0040, 0x0000_0000_0000_0076: 0x0000_0000_0000_0040, 0x0000_0000_0000_0077: 0x0000_0000_0000_0040, + 0x0000_0000_0000_0078: 0x0000_0000_0000_0040, 0x0000_0000_0000_0079: 0x0000_0000_0000_0040, 0x0000_0000_0000_007A: 0x0000_0000_0000_0040, 0x0000_0000_0000_007B: 0x0000_0000_0000_0040, + 0x0000_0000_0000_007C: 0x0000_0000_0000_0040, 0x0000_0000_0000_007D: 0x0000_0000_0000_0040, 0x0000_0000_0000_007E: 0x0000_0000_0000_0040, 0x0000_0000_0000_007F: 0x0000_0000_0000_0040, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0100, 0x0000_0000_0000_0100: 0x0000_0000_0000_0100, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0300, 0x0000_0000_0000_0100: 0x0000_0000_0000_0300, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0000_0300: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0700, 0x0000_0000_0000_0100: 0x0000_0000_0000_0700, 0x0000_0000_0000_0200: 0x0000_0000_0000_0600, 0x0000_0000_0000_0300: 0x0000_0000_0000_0600, + 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0000_0500: 0x0000_0000_0000_0400, 0x0000_0000_0000_0600: 0x0000_0000_0000_0400, 0x0000_0000_0000_0700: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0F00, 0x0000_0000_0000_0100: 0x0000_0000_0000_0F00, 0x0000_0000_0000_0200: 0x0000_0000_0000_0E00, 0x0000_0000_0000_0300: 0x0000_0000_0000_0E00, + 0x0000_0000_0000_0400: 0x0000_0000_0000_0C00, 0x0000_0000_0000_0500: 0x0000_0000_0000_0C00, 0x0000_0000_0000_0600: 0x0000_0000_0000_0C00, 0x0000_0000_0000_0700: 0x0000_0000_0000_0C00, + 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0000_0900: 0x0000_0000_0000_0800, 0x0000_0000_0000_0A00: 0x0000_0000_0000_0800, 0x0000_0000_0000_0B00: 0x0000_0000_0000_0800, + 0x0000_0000_0000_0C00: 0x0000_0000_0000_0800, 0x0000_0000_0000_0D00: 0x0000_0000_0000_0800, 0x0000_0000_0000_0E00: 0x0000_0000_0000_0800, 0x0000_0000_0000_0F00: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_1F00, 0x0000_0000_0000_0100: 0x0000_0000_0000_1F00, 0x0000_0000_0000_0200: 0x0000_0000_0000_1E00, 0x0000_0000_0000_0300: 0x0000_0000_0000_1E00, + 0x0000_0000_0000_0400: 0x0000_0000_0000_1C00, 0x0000_0000_0000_0500: 0x0000_0000_0000_1C00, 0x0000_0000_0000_0600: 0x0000_0000_0000_1C00, 0x0000_0000_0000_0700: 0x0000_0000_0000_1C00, + 0x0000_0000_0000_0800: 0x0000_0000_0000_1800, 0x0000_0000_0000_0900: 0x0000_0000_0000_1800, 0x0000_0000_0000_0A00: 0x0000_0000_0000_1800, 0x0000_0000_0000_0B00: 0x0000_0000_0000_1800, + 0x0000_0000_0000_0C00: 0x0000_0000_0000_1800, 0x0000_0000_0000_0D00: 0x0000_0000_0000_1800, 0x0000_0000_0000_0E00: 0x0000_0000_0000_1800, 0x0000_0000_0000_0F00: 0x0000_0000_0000_1800, + 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0000_1100: 0x0000_0000_0000_1000, 0x0000_0000_0000_1200: 0x0000_0000_0000_1000, 0x0000_0000_0000_1300: 0x0000_0000_0000_1000, + 0x0000_0000_0000_1400: 0x0000_0000_0000_1000, 0x0000_0000_0000_1500: 0x0000_0000_0000_1000, 0x0000_0000_0000_1600: 0x0000_0000_0000_1000, 0x0000_0000_0000_1700: 0x0000_0000_0000_1000, + 0x0000_0000_0000_1800: 0x0000_0000_0000_1000, 0x0000_0000_0000_1900: 0x0000_0000_0000_1000, 0x0000_0000_0000_1A00: 0x0000_0000_0000_1000, 0x0000_0000_0000_1B00: 0x0000_0000_0000_1000, + 0x0000_0000_0000_1C00: 0x0000_0000_0000_1000, 0x0000_0000_0000_1D00: 0x0000_0000_0000_1000, 0x0000_0000_0000_1E00: 0x0000_0000_0000_1000, 0x0000_0000_0000_1F00: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_3F00, 0x0000_0000_0000_0100: 0x0000_0000_0000_3F00, 0x0000_0000_0000_0200: 0x0000_0000_0000_3E00, 0x0000_0000_0000_0300: 0x0000_0000_0000_3E00, + 0x0000_0000_0000_0400: 0x0000_0000_0000_3C00, 0x0000_0000_0000_0500: 0x0000_0000_0000_3C00, 0x0000_0000_0000_0600: 0x0000_0000_0000_3C00, 0x0000_0000_0000_0700: 0x0000_0000_0000_3C00, + 0x0000_0000_0000_0800: 0x0000_0000_0000_3800, 0x0000_0000_0000_0900: 0x0000_0000_0000_3800, 0x0000_0000_0000_0A00: 0x0000_0000_0000_3800, 0x0000_0000_0000_0B00: 0x0000_0000_0000_3800, + 0x0000_0000_0000_0C00: 0x0000_0000_0000_3800, 0x0000_0000_0000_0D00: 0x0000_0000_0000_3800, 0x0000_0000_0000_0E00: 0x0000_0000_0000_3800, 0x0000_0000_0000_0F00: 0x0000_0000_0000_3800, + 0x0000_0000_0000_1000: 0x0000_0000_0000_3000, 0x0000_0000_0000_1100: 0x0000_0000_0000_3000, 0x0000_0000_0000_1200: 0x0000_0000_0000_3000, 0x0000_0000_0000_1300: 0x0000_0000_0000_3000, + 0x0000_0000_0000_1400: 0x0000_0000_0000_3000, 0x0000_0000_0000_1500: 0x0000_0000_0000_3000, 0x0000_0000_0000_1600: 0x0000_0000_0000_3000, 0x0000_0000_0000_1700: 0x0000_0000_0000_3000, + 0x0000_0000_0000_1800: 0x0000_0000_0000_3000, 0x0000_0000_0000_1900: 0x0000_0000_0000_3000, 0x0000_0000_0000_1A00: 0x0000_0000_0000_3000, 0x0000_0000_0000_1B00: 0x0000_0000_0000_3000, + 0x0000_0000_0000_1C00: 0x0000_0000_0000_3000, 0x0000_0000_0000_1D00: 0x0000_0000_0000_3000, 0x0000_0000_0000_1E00: 0x0000_0000_0000_3000, 0x0000_0000_0000_1F00: 0x0000_0000_0000_3000, + 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0000_2100: 0x0000_0000_0000_2000, 0x0000_0000_0000_2200: 0x0000_0000_0000_2000, 0x0000_0000_0000_2300: 0x0000_0000_0000_2000, + 0x0000_0000_0000_2400: 0x0000_0000_0000_2000, 0x0000_0000_0000_2500: 0x0000_0000_0000_2000, 0x0000_0000_0000_2600: 0x0000_0000_0000_2000, 0x0000_0000_0000_2700: 0x0000_0000_0000_2000, + 0x0000_0000_0000_2800: 0x0000_0000_0000_2000, 0x0000_0000_0000_2900: 0x0000_0000_0000_2000, 0x0000_0000_0000_2A00: 0x0000_0000_0000_2000, 0x0000_0000_0000_2B00: 0x0000_0000_0000_2000, + 0x0000_0000_0000_2C00: 0x0000_0000_0000_2000, 0x0000_0000_0000_2D00: 0x0000_0000_0000_2000, 0x0000_0000_0000_2E00: 0x0000_0000_0000_2000, 0x0000_0000_0000_2F00: 0x0000_0000_0000_2000, + 0x0000_0000_0000_3000: 0x0000_0000_0000_2000, 0x0000_0000_0000_3100: 0x0000_0000_0000_2000, 0x0000_0000_0000_3200: 0x0000_0000_0000_2000, 0x0000_0000_0000_3300: 0x0000_0000_0000_2000, + 0x0000_0000_0000_3400: 0x0000_0000_0000_2000, 0x0000_0000_0000_3500: 0x0000_0000_0000_2000, 0x0000_0000_0000_3600: 0x0000_0000_0000_2000, 0x0000_0000_0000_3700: 0x0000_0000_0000_2000, + 0x0000_0000_0000_3800: 0x0000_0000_0000_2000, 0x0000_0000_0000_3900: 0x0000_0000_0000_2000, 0x0000_0000_0000_3A00: 0x0000_0000_0000_2000, 0x0000_0000_0000_3B00: 0x0000_0000_0000_2000, + 0x0000_0000_0000_3C00: 0x0000_0000_0000_2000, 0x0000_0000_0000_3D00: 0x0000_0000_0000_2000, 0x0000_0000_0000_3E00: 0x0000_0000_0000_2000, 0x0000_0000_0000_3F00: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_7F00, 0x0000_0000_0000_0100: 0x0000_0000_0000_7F00, 0x0000_0000_0000_0200: 0x0000_0000_0000_7E00, 0x0000_0000_0000_0300: 0x0000_0000_0000_7E00, + 0x0000_0000_0000_0400: 0x0000_0000_0000_7C00, 0x0000_0000_0000_0500: 0x0000_0000_0000_7C00, 0x0000_0000_0000_0600: 0x0000_0000_0000_7C00, 0x0000_0000_0000_0700: 0x0000_0000_0000_7C00, + 0x0000_0000_0000_0800: 0x0000_0000_0000_7800, 0x0000_0000_0000_0900: 0x0000_0000_0000_7800, 0x0000_0000_0000_0A00: 0x0000_0000_0000_7800, 0x0000_0000_0000_0B00: 0x0000_0000_0000_7800, + 0x0000_0000_0000_0C00: 0x0000_0000_0000_7800, 0x0000_0000_0000_0D00: 0x0000_0000_0000_7800, 0x0000_0000_0000_0E00: 0x0000_0000_0000_7800, 0x0000_0000_0000_0F00: 0x0000_0000_0000_7800, + 0x0000_0000_0000_1000: 0x0000_0000_0000_7000, 0x0000_0000_0000_1100: 0x0000_0000_0000_7000, 0x0000_0000_0000_1200: 0x0000_0000_0000_7000, 0x0000_0000_0000_1300: 0x0000_0000_0000_7000, + 0x0000_0000_0000_1400: 0x0000_0000_0000_7000, 0x0000_0000_0000_1500: 0x0000_0000_0000_7000, 0x0000_0000_0000_1600: 0x0000_0000_0000_7000, 0x0000_0000_0000_1700: 0x0000_0000_0000_7000, + 0x0000_0000_0000_1800: 0x0000_0000_0000_7000, 0x0000_0000_0000_1900: 0x0000_0000_0000_7000, 0x0000_0000_0000_1A00: 0x0000_0000_0000_7000, 0x0000_0000_0000_1B00: 0x0000_0000_0000_7000, + 0x0000_0000_0000_1C00: 0x0000_0000_0000_7000, 0x0000_0000_0000_1D00: 0x0000_0000_0000_7000, 0x0000_0000_0000_1E00: 0x0000_0000_0000_7000, 0x0000_0000_0000_1F00: 0x0000_0000_0000_7000, + 0x0000_0000_0000_2000: 0x0000_0000_0000_6000, 0x0000_0000_0000_2100: 0x0000_0000_0000_6000, 0x0000_0000_0000_2200: 0x0000_0000_0000_6000, 0x0000_0000_0000_2300: 0x0000_0000_0000_6000, + 0x0000_0000_0000_2400: 0x0000_0000_0000_6000, 0x0000_0000_0000_2500: 0x0000_0000_0000_6000, 0x0000_0000_0000_2600: 0x0000_0000_0000_6000, 0x0000_0000_0000_2700: 0x0000_0000_0000_6000, + 0x0000_0000_0000_2800: 0x0000_0000_0000_6000, 0x0000_0000_0000_2900: 0x0000_0000_0000_6000, 0x0000_0000_0000_2A00: 0x0000_0000_0000_6000, 0x0000_0000_0000_2B00: 0x0000_0000_0000_6000, + 0x0000_0000_0000_2C00: 0x0000_0000_0000_6000, 0x0000_0000_0000_2D00: 0x0000_0000_0000_6000, 0x0000_0000_0000_2E00: 0x0000_0000_0000_6000, 0x0000_0000_0000_2F00: 0x0000_0000_0000_6000, + 0x0000_0000_0000_3000: 0x0000_0000_0000_6000, 0x0000_0000_0000_3100: 0x0000_0000_0000_6000, 0x0000_0000_0000_3200: 0x0000_0000_0000_6000, 0x0000_0000_0000_3300: 0x0000_0000_0000_6000, + 0x0000_0000_0000_3400: 0x0000_0000_0000_6000, 0x0000_0000_0000_3500: 0x0000_0000_0000_6000, 0x0000_0000_0000_3600: 0x0000_0000_0000_6000, 0x0000_0000_0000_3700: 0x0000_0000_0000_6000, + 0x0000_0000_0000_3800: 0x0000_0000_0000_6000, 0x0000_0000_0000_3900: 0x0000_0000_0000_6000, 0x0000_0000_0000_3A00: 0x0000_0000_0000_6000, 0x0000_0000_0000_3B00: 0x0000_0000_0000_6000, + 0x0000_0000_0000_3C00: 0x0000_0000_0000_6000, 0x0000_0000_0000_3D00: 0x0000_0000_0000_6000, 0x0000_0000_0000_3E00: 0x0000_0000_0000_6000, 0x0000_0000_0000_3F00: 0x0000_0000_0000_6000, + 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0000_4100: 0x0000_0000_0000_4000, 0x0000_0000_0000_4200: 0x0000_0000_0000_4000, 0x0000_0000_0000_4300: 0x0000_0000_0000_4000, + 0x0000_0000_0000_4400: 0x0000_0000_0000_4000, 0x0000_0000_0000_4500: 0x0000_0000_0000_4000, 0x0000_0000_0000_4600: 0x0000_0000_0000_4000, 0x0000_0000_0000_4700: 0x0000_0000_0000_4000, + 0x0000_0000_0000_4800: 0x0000_0000_0000_4000, 0x0000_0000_0000_4900: 0x0000_0000_0000_4000, 0x0000_0000_0000_4A00: 0x0000_0000_0000_4000, 0x0000_0000_0000_4B00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_4C00: 0x0000_0000_0000_4000, 0x0000_0000_0000_4D00: 0x0000_0000_0000_4000, 0x0000_0000_0000_4E00: 0x0000_0000_0000_4000, 0x0000_0000_0000_4F00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_5000: 0x0000_0000_0000_4000, 0x0000_0000_0000_5100: 0x0000_0000_0000_4000, 0x0000_0000_0000_5200: 0x0000_0000_0000_4000, 0x0000_0000_0000_5300: 0x0000_0000_0000_4000, + 0x0000_0000_0000_5400: 0x0000_0000_0000_4000, 0x0000_0000_0000_5500: 0x0000_0000_0000_4000, 0x0000_0000_0000_5600: 0x0000_0000_0000_4000, 0x0000_0000_0000_5700: 0x0000_0000_0000_4000, + 0x0000_0000_0000_5800: 0x0000_0000_0000_4000, 0x0000_0000_0000_5900: 0x0000_0000_0000_4000, 0x0000_0000_0000_5A00: 0x0000_0000_0000_4000, 0x0000_0000_0000_5B00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_5C00: 0x0000_0000_0000_4000, 0x0000_0000_0000_5D00: 0x0000_0000_0000_4000, 0x0000_0000_0000_5E00: 0x0000_0000_0000_4000, 0x0000_0000_0000_5F00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_6000: 0x0000_0000_0000_4000, 0x0000_0000_0000_6100: 0x0000_0000_0000_4000, 0x0000_0000_0000_6200: 0x0000_0000_0000_4000, 0x0000_0000_0000_6300: 0x0000_0000_0000_4000, + 0x0000_0000_0000_6400: 0x0000_0000_0000_4000, 0x0000_0000_0000_6500: 0x0000_0000_0000_4000, 0x0000_0000_0000_6600: 0x0000_0000_0000_4000, 0x0000_0000_0000_6700: 0x0000_0000_0000_4000, + 0x0000_0000_0000_6800: 0x0000_0000_0000_4000, 0x0000_0000_0000_6900: 0x0000_0000_0000_4000, 0x0000_0000_0000_6A00: 0x0000_0000_0000_4000, 0x0000_0000_0000_6B00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_6C00: 0x0000_0000_0000_4000, 0x0000_0000_0000_6D00: 0x0000_0000_0000_4000, 0x0000_0000_0000_6E00: 0x0000_0000_0000_4000, 0x0000_0000_0000_6F00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_7000: 0x0000_0000_0000_4000, 0x0000_0000_0000_7100: 0x0000_0000_0000_4000, 0x0000_0000_0000_7200: 0x0000_0000_0000_4000, 0x0000_0000_0000_7300: 0x0000_0000_0000_4000, + 0x0000_0000_0000_7400: 0x0000_0000_0000_4000, 0x0000_0000_0000_7500: 0x0000_0000_0000_4000, 0x0000_0000_0000_7600: 0x0000_0000_0000_4000, 0x0000_0000_0000_7700: 0x0000_0000_0000_4000, + 0x0000_0000_0000_7800: 0x0000_0000_0000_4000, 0x0000_0000_0000_7900: 0x0000_0000_0000_4000, 0x0000_0000_0000_7A00: 0x0000_0000_0000_4000, 0x0000_0000_0000_7B00: 0x0000_0000_0000_4000, + 0x0000_0000_0000_7C00: 0x0000_0000_0000_4000, 0x0000_0000_0000_7D00: 0x0000_0000_0000_4000, 0x0000_0000_0000_7E00: 0x0000_0000_0000_4000, 0x0000_0000_0000_7F00: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0001_0000, 0x0000_0000_0001_0000: 0x0000_0000_0001_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0003_0000, 0x0000_0000_0001_0000: 0x0000_0000_0003_0000, 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0003_0000: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0007_0000, 0x0000_0000_0001_0000: 0x0000_0000_0007_0000, 0x0000_0000_0002_0000: 0x0000_0000_0006_0000, 0x0000_0000_0003_0000: 0x0000_0000_0006_0000, + 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0005_0000: 0x0000_0000_0004_0000, 0x0000_0000_0006_0000: 0x0000_0000_0004_0000, 0x0000_0000_0007_0000: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_000F_0000, 0x0000_0000_0001_0000: 0x0000_0000_000F_0000, 0x0000_0000_0002_0000: 0x0000_0000_000E_0000, 0x0000_0000_0003_0000: 0x0000_0000_000E_0000, + 0x0000_0000_0004_0000: 0x0000_0000_000C_0000, 0x0000_0000_0005_0000: 0x0000_0000_000C_0000, 0x0000_0000_0006_0000: 0x0000_0000_000C_0000, 0x0000_0000_0007_0000: 0x0000_0000_000C_0000, + 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0009_0000: 0x0000_0000_0008_0000, 0x0000_0000_000A_0000: 0x0000_0000_0008_0000, 0x0000_0000_000B_0000: 0x0000_0000_0008_0000, + 0x0000_0000_000C_0000: 0x0000_0000_0008_0000, 0x0000_0000_000D_0000: 0x0000_0000_0008_0000, 0x0000_0000_000E_0000: 0x0000_0000_0008_0000, 0x0000_0000_000F_0000: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_001F_0000, 0x0000_0000_0001_0000: 0x0000_0000_001F_0000, 0x0000_0000_0002_0000: 0x0000_0000_001E_0000, 0x0000_0000_0003_0000: 0x0000_0000_001E_0000, + 0x0000_0000_0004_0000: 0x0000_0000_001C_0000, 0x0000_0000_0005_0000: 0x0000_0000_001C_0000, 0x0000_0000_0006_0000: 0x0000_0000_001C_0000, 0x0000_0000_0007_0000: 0x0000_0000_001C_0000, + 0x0000_0000_0008_0000: 0x0000_0000_0018_0000, 0x0000_0000_0009_0000: 0x0000_0000_0018_0000, 0x0000_0000_000A_0000: 0x0000_0000_0018_0000, 0x0000_0000_000B_0000: 0x0000_0000_0018_0000, + 0x0000_0000_000C_0000: 0x0000_0000_0018_0000, 0x0000_0000_000D_0000: 0x0000_0000_0018_0000, 0x0000_0000_000E_0000: 0x0000_0000_0018_0000, 0x0000_0000_000F_0000: 0x0000_0000_0018_0000, + 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_0011_0000: 0x0000_0000_0010_0000, 0x0000_0000_0012_0000: 0x0000_0000_0010_0000, 0x0000_0000_0013_0000: 0x0000_0000_0010_0000, + 0x0000_0000_0014_0000: 0x0000_0000_0010_0000, 0x0000_0000_0015_0000: 0x0000_0000_0010_0000, 0x0000_0000_0016_0000: 0x0000_0000_0010_0000, 0x0000_0000_0017_0000: 0x0000_0000_0010_0000, + 0x0000_0000_0018_0000: 0x0000_0000_0010_0000, 0x0000_0000_0019_0000: 0x0000_0000_0010_0000, 0x0000_0000_001A_0000: 0x0000_0000_0010_0000, 0x0000_0000_001B_0000: 0x0000_0000_0010_0000, + 0x0000_0000_001C_0000: 0x0000_0000_0010_0000, 0x0000_0000_001D_0000: 0x0000_0000_0010_0000, 0x0000_0000_001E_0000: 0x0000_0000_0010_0000, 0x0000_0000_001F_0000: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_003F_0000, 0x0000_0000_0001_0000: 0x0000_0000_003F_0000, 0x0000_0000_0002_0000: 0x0000_0000_003E_0000, 0x0000_0000_0003_0000: 0x0000_0000_003E_0000, + 0x0000_0000_0004_0000: 0x0000_0000_003C_0000, 0x0000_0000_0005_0000: 0x0000_0000_003C_0000, 0x0000_0000_0006_0000: 0x0000_0000_003C_0000, 0x0000_0000_0007_0000: 0x0000_0000_003C_0000, + 0x0000_0000_0008_0000: 0x0000_0000_0038_0000, 0x0000_0000_0009_0000: 0x0000_0000_0038_0000, 0x0000_0000_000A_0000: 0x0000_0000_0038_0000, 0x0000_0000_000B_0000: 0x0000_0000_0038_0000, + 0x0000_0000_000C_0000: 0x0000_0000_0038_0000, 0x0000_0000_000D_0000: 0x0000_0000_0038_0000, 0x0000_0000_000E_0000: 0x0000_0000_0038_0000, 0x0000_0000_000F_0000: 0x0000_0000_0038_0000, + 0x0000_0000_0010_0000: 0x0000_0000_0030_0000, 0x0000_0000_0011_0000: 0x0000_0000_0030_0000, 0x0000_0000_0012_0000: 0x0000_0000_0030_0000, 0x0000_0000_0013_0000: 0x0000_0000_0030_0000, + 0x0000_0000_0014_0000: 0x0000_0000_0030_0000, 0x0000_0000_0015_0000: 0x0000_0000_0030_0000, 0x0000_0000_0016_0000: 0x0000_0000_0030_0000, 0x0000_0000_0017_0000: 0x0000_0000_0030_0000, + 0x0000_0000_0018_0000: 0x0000_0000_0030_0000, 0x0000_0000_0019_0000: 0x0000_0000_0030_0000, 0x0000_0000_001A_0000: 0x0000_0000_0030_0000, 0x0000_0000_001B_0000: 0x0000_0000_0030_0000, + 0x0000_0000_001C_0000: 0x0000_0000_0030_0000, 0x0000_0000_001D_0000: 0x0000_0000_0030_0000, 0x0000_0000_001E_0000: 0x0000_0000_0030_0000, 0x0000_0000_001F_0000: 0x0000_0000_0030_0000, + 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_0021_0000: 0x0000_0000_0020_0000, 0x0000_0000_0022_0000: 0x0000_0000_0020_0000, 0x0000_0000_0023_0000: 0x0000_0000_0020_0000, + 0x0000_0000_0024_0000: 0x0000_0000_0020_0000, 0x0000_0000_0025_0000: 0x0000_0000_0020_0000, 0x0000_0000_0026_0000: 0x0000_0000_0020_0000, 0x0000_0000_0027_0000: 0x0000_0000_0020_0000, + 0x0000_0000_0028_0000: 0x0000_0000_0020_0000, 0x0000_0000_0029_0000: 0x0000_0000_0020_0000, 0x0000_0000_002A_0000: 0x0000_0000_0020_0000, 0x0000_0000_002B_0000: 0x0000_0000_0020_0000, + 0x0000_0000_002C_0000: 0x0000_0000_0020_0000, 0x0000_0000_002D_0000: 0x0000_0000_0020_0000, 0x0000_0000_002E_0000: 0x0000_0000_0020_0000, 0x0000_0000_002F_0000: 0x0000_0000_0020_0000, + 0x0000_0000_0030_0000: 0x0000_0000_0020_0000, 0x0000_0000_0031_0000: 0x0000_0000_0020_0000, 0x0000_0000_0032_0000: 0x0000_0000_0020_0000, 0x0000_0000_0033_0000: 0x0000_0000_0020_0000, + 0x0000_0000_0034_0000: 0x0000_0000_0020_0000, 0x0000_0000_0035_0000: 0x0000_0000_0020_0000, 0x0000_0000_0036_0000: 0x0000_0000_0020_0000, 0x0000_0000_0037_0000: 0x0000_0000_0020_0000, + 0x0000_0000_0038_0000: 0x0000_0000_0020_0000, 0x0000_0000_0039_0000: 0x0000_0000_0020_0000, 0x0000_0000_003A_0000: 0x0000_0000_0020_0000, 0x0000_0000_003B_0000: 0x0000_0000_0020_0000, + 0x0000_0000_003C_0000: 0x0000_0000_0020_0000, 0x0000_0000_003D_0000: 0x0000_0000_0020_0000, 0x0000_0000_003E_0000: 0x0000_0000_0020_0000, 0x0000_0000_003F_0000: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_007F_0000, 0x0000_0000_0001_0000: 0x0000_0000_007F_0000, 0x0000_0000_0002_0000: 0x0000_0000_007E_0000, 0x0000_0000_0003_0000: 0x0000_0000_007E_0000, + 0x0000_0000_0004_0000: 0x0000_0000_007C_0000, 0x0000_0000_0005_0000: 0x0000_0000_007C_0000, 0x0000_0000_0006_0000: 0x0000_0000_007C_0000, 0x0000_0000_0007_0000: 0x0000_0000_007C_0000, + 0x0000_0000_0008_0000: 0x0000_0000_0078_0000, 0x0000_0000_0009_0000: 0x0000_0000_0078_0000, 0x0000_0000_000A_0000: 0x0000_0000_0078_0000, 0x0000_0000_000B_0000: 0x0000_0000_0078_0000, + 0x0000_0000_000C_0000: 0x0000_0000_0078_0000, 0x0000_0000_000D_0000: 0x0000_0000_0078_0000, 0x0000_0000_000E_0000: 0x0000_0000_0078_0000, 0x0000_0000_000F_0000: 0x0000_0000_0078_0000, + 0x0000_0000_0010_0000: 0x0000_0000_0070_0000, 0x0000_0000_0011_0000: 0x0000_0000_0070_0000, 0x0000_0000_0012_0000: 0x0000_0000_0070_0000, 0x0000_0000_0013_0000: 0x0000_0000_0070_0000, + 0x0000_0000_0014_0000: 0x0000_0000_0070_0000, 0x0000_0000_0015_0000: 0x0000_0000_0070_0000, 0x0000_0000_0016_0000: 0x0000_0000_0070_0000, 0x0000_0000_0017_0000: 0x0000_0000_0070_0000, + 0x0000_0000_0018_0000: 0x0000_0000_0070_0000, 0x0000_0000_0019_0000: 0x0000_0000_0070_0000, 0x0000_0000_001A_0000: 0x0000_0000_0070_0000, 0x0000_0000_001B_0000: 0x0000_0000_0070_0000, + 0x0000_0000_001C_0000: 0x0000_0000_0070_0000, 0x0000_0000_001D_0000: 0x0000_0000_0070_0000, 0x0000_0000_001E_0000: 0x0000_0000_0070_0000, 0x0000_0000_001F_0000: 0x0000_0000_0070_0000, + 0x0000_0000_0020_0000: 0x0000_0000_0060_0000, 0x0000_0000_0021_0000: 0x0000_0000_0060_0000, 0x0000_0000_0022_0000: 0x0000_0000_0060_0000, 0x0000_0000_0023_0000: 0x0000_0000_0060_0000, + 0x0000_0000_0024_0000: 0x0000_0000_0060_0000, 0x0000_0000_0025_0000: 0x0000_0000_0060_0000, 0x0000_0000_0026_0000: 0x0000_0000_0060_0000, 0x0000_0000_0027_0000: 0x0000_0000_0060_0000, + 0x0000_0000_0028_0000: 0x0000_0000_0060_0000, 0x0000_0000_0029_0000: 0x0000_0000_0060_0000, 0x0000_0000_002A_0000: 0x0000_0000_0060_0000, 0x0000_0000_002B_0000: 0x0000_0000_0060_0000, + 0x0000_0000_002C_0000: 0x0000_0000_0060_0000, 0x0000_0000_002D_0000: 0x0000_0000_0060_0000, 0x0000_0000_002E_0000: 0x0000_0000_0060_0000, 0x0000_0000_002F_0000: 0x0000_0000_0060_0000, + 0x0000_0000_0030_0000: 0x0000_0000_0060_0000, 0x0000_0000_0031_0000: 0x0000_0000_0060_0000, 0x0000_0000_0032_0000: 0x0000_0000_0060_0000, 0x0000_0000_0033_0000: 0x0000_0000_0060_0000, + 0x0000_0000_0034_0000: 0x0000_0000_0060_0000, 0x0000_0000_0035_0000: 0x0000_0000_0060_0000, 0x0000_0000_0036_0000: 0x0000_0000_0060_0000, 0x0000_0000_0037_0000: 0x0000_0000_0060_0000, + 0x0000_0000_0038_0000: 0x0000_0000_0060_0000, 0x0000_0000_0039_0000: 0x0000_0000_0060_0000, 0x0000_0000_003A_0000: 0x0000_0000_0060_0000, 0x0000_0000_003B_0000: 0x0000_0000_0060_0000, + 0x0000_0000_003C_0000: 0x0000_0000_0060_0000, 0x0000_0000_003D_0000: 0x0000_0000_0060_0000, 0x0000_0000_003E_0000: 0x0000_0000_0060_0000, 0x0000_0000_003F_0000: 0x0000_0000_0060_0000, + 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_0041_0000: 0x0000_0000_0040_0000, 0x0000_0000_0042_0000: 0x0000_0000_0040_0000, 0x0000_0000_0043_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0044_0000: 0x0000_0000_0040_0000, 0x0000_0000_0045_0000: 0x0000_0000_0040_0000, 0x0000_0000_0046_0000: 0x0000_0000_0040_0000, 0x0000_0000_0047_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0048_0000: 0x0000_0000_0040_0000, 0x0000_0000_0049_0000: 0x0000_0000_0040_0000, 0x0000_0000_004A_0000: 0x0000_0000_0040_0000, 0x0000_0000_004B_0000: 0x0000_0000_0040_0000, + 0x0000_0000_004C_0000: 0x0000_0000_0040_0000, 0x0000_0000_004D_0000: 0x0000_0000_0040_0000, 0x0000_0000_004E_0000: 0x0000_0000_0040_0000, 0x0000_0000_004F_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0050_0000: 0x0000_0000_0040_0000, 0x0000_0000_0051_0000: 0x0000_0000_0040_0000, 0x0000_0000_0052_0000: 0x0000_0000_0040_0000, 0x0000_0000_0053_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0054_0000: 0x0000_0000_0040_0000, 0x0000_0000_0055_0000: 0x0000_0000_0040_0000, 0x0000_0000_0056_0000: 0x0000_0000_0040_0000, 0x0000_0000_0057_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0058_0000: 0x0000_0000_0040_0000, 0x0000_0000_0059_0000: 0x0000_0000_0040_0000, 0x0000_0000_005A_0000: 0x0000_0000_0040_0000, 0x0000_0000_005B_0000: 0x0000_0000_0040_0000, + 0x0000_0000_005C_0000: 0x0000_0000_0040_0000, 0x0000_0000_005D_0000: 0x0000_0000_0040_0000, 0x0000_0000_005E_0000: 0x0000_0000_0040_0000, 0x0000_0000_005F_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0060_0000: 0x0000_0000_0040_0000, 0x0000_0000_0061_0000: 0x0000_0000_0040_0000, 0x0000_0000_0062_0000: 0x0000_0000_0040_0000, 0x0000_0000_0063_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0064_0000: 0x0000_0000_0040_0000, 0x0000_0000_0065_0000: 0x0000_0000_0040_0000, 0x0000_0000_0066_0000: 0x0000_0000_0040_0000, 0x0000_0000_0067_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0068_0000: 0x0000_0000_0040_0000, 0x0000_0000_0069_0000: 0x0000_0000_0040_0000, 0x0000_0000_006A_0000: 0x0000_0000_0040_0000, 0x0000_0000_006B_0000: 0x0000_0000_0040_0000, + 0x0000_0000_006C_0000: 0x0000_0000_0040_0000, 0x0000_0000_006D_0000: 0x0000_0000_0040_0000, 0x0000_0000_006E_0000: 0x0000_0000_0040_0000, 0x0000_0000_006F_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0070_0000: 0x0000_0000_0040_0000, 0x0000_0000_0071_0000: 0x0000_0000_0040_0000, 0x0000_0000_0072_0000: 0x0000_0000_0040_0000, 0x0000_0000_0073_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0074_0000: 0x0000_0000_0040_0000, 0x0000_0000_0075_0000: 0x0000_0000_0040_0000, 0x0000_0000_0076_0000: 0x0000_0000_0040_0000, 0x0000_0000_0077_0000: 0x0000_0000_0040_0000, + 0x0000_0000_0078_0000: 0x0000_0000_0040_0000, 0x0000_0000_0079_0000: 0x0000_0000_0040_0000, 0x0000_0000_007A_0000: 0x0000_0000_0040_0000, 0x0000_0000_007B_0000: 0x0000_0000_0040_0000, + 0x0000_0000_007C_0000: 0x0000_0000_0040_0000, 0x0000_0000_007D_0000: 0x0000_0000_0040_0000, 0x0000_0000_007E_0000: 0x0000_0000_0040_0000, 0x0000_0000_007F_0000: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0100_0000, 0x0000_0000_0100_0000: 0x0000_0000_0100_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0300_0000, 0x0000_0000_0100_0000: 0x0000_0000_0300_0000, 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0000_0300_0000: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0700_0000, 0x0000_0000_0100_0000: 0x0000_0000_0700_0000, 0x0000_0000_0200_0000: 0x0000_0000_0600_0000, 0x0000_0000_0300_0000: 0x0000_0000_0600_0000, + 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0000_0500_0000: 0x0000_0000_0400_0000, 0x0000_0000_0600_0000: 0x0000_0000_0400_0000, 0x0000_0000_0700_0000: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0F00_0000, 0x0000_0000_0100_0000: 0x0000_0000_0F00_0000, 0x0000_0000_0200_0000: 0x0000_0000_0E00_0000, 0x0000_0000_0300_0000: 0x0000_0000_0E00_0000, + 0x0000_0000_0400_0000: 0x0000_0000_0C00_0000, 0x0000_0000_0500_0000: 0x0000_0000_0C00_0000, 0x0000_0000_0600_0000: 0x0000_0000_0C00_0000, 0x0000_0000_0700_0000: 0x0000_0000_0C00_0000, + 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0000_0900_0000: 0x0000_0000_0800_0000, 0x0000_0000_0A00_0000: 0x0000_0000_0800_0000, 0x0000_0000_0B00_0000: 0x0000_0000_0800_0000, + 0x0000_0000_0C00_0000: 0x0000_0000_0800_0000, 0x0000_0000_0D00_0000: 0x0000_0000_0800_0000, 0x0000_0000_0E00_0000: 0x0000_0000_0800_0000, 0x0000_0000_0F00_0000: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_1F00_0000, 0x0000_0000_0100_0000: 0x0000_0000_1F00_0000, 0x0000_0000_0200_0000: 0x0000_0000_1E00_0000, 0x0000_0000_0300_0000: 0x0000_0000_1E00_0000, + 0x0000_0000_0400_0000: 0x0000_0000_1C00_0000, 0x0000_0000_0500_0000: 0x0000_0000_1C00_0000, 0x0000_0000_0600_0000: 0x0000_0000_1C00_0000, 0x0000_0000_0700_0000: 0x0000_0000_1C00_0000, + 0x0000_0000_0800_0000: 0x0000_0000_1800_0000, 0x0000_0000_0900_0000: 0x0000_0000_1800_0000, 0x0000_0000_0A00_0000: 0x0000_0000_1800_0000, 0x0000_0000_0B00_0000: 0x0000_0000_1800_0000, + 0x0000_0000_0C00_0000: 0x0000_0000_1800_0000, 0x0000_0000_0D00_0000: 0x0000_0000_1800_0000, 0x0000_0000_0E00_0000: 0x0000_0000_1800_0000, 0x0000_0000_0F00_0000: 0x0000_0000_1800_0000, + 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0000_1100_0000: 0x0000_0000_1000_0000, 0x0000_0000_1200_0000: 0x0000_0000_1000_0000, 0x0000_0000_1300_0000: 0x0000_0000_1000_0000, + 0x0000_0000_1400_0000: 0x0000_0000_1000_0000, 0x0000_0000_1500_0000: 0x0000_0000_1000_0000, 0x0000_0000_1600_0000: 0x0000_0000_1000_0000, 0x0000_0000_1700_0000: 0x0000_0000_1000_0000, + 0x0000_0000_1800_0000: 0x0000_0000_1000_0000, 0x0000_0000_1900_0000: 0x0000_0000_1000_0000, 0x0000_0000_1A00_0000: 0x0000_0000_1000_0000, 0x0000_0000_1B00_0000: 0x0000_0000_1000_0000, + 0x0000_0000_1C00_0000: 0x0000_0000_1000_0000, 0x0000_0000_1D00_0000: 0x0000_0000_1000_0000, 0x0000_0000_1E00_0000: 0x0000_0000_1000_0000, 0x0000_0000_1F00_0000: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_3F00_0000, 0x0000_0000_0100_0000: 0x0000_0000_3F00_0000, 0x0000_0000_0200_0000: 0x0000_0000_3E00_0000, 0x0000_0000_0300_0000: 0x0000_0000_3E00_0000, + 0x0000_0000_0400_0000: 0x0000_0000_3C00_0000, 0x0000_0000_0500_0000: 0x0000_0000_3C00_0000, 0x0000_0000_0600_0000: 0x0000_0000_3C00_0000, 0x0000_0000_0700_0000: 0x0000_0000_3C00_0000, + 0x0000_0000_0800_0000: 0x0000_0000_3800_0000, 0x0000_0000_0900_0000: 0x0000_0000_3800_0000, 0x0000_0000_0A00_0000: 0x0000_0000_3800_0000, 0x0000_0000_0B00_0000: 0x0000_0000_3800_0000, + 0x0000_0000_0C00_0000: 0x0000_0000_3800_0000, 0x0000_0000_0D00_0000: 0x0000_0000_3800_0000, 0x0000_0000_0E00_0000: 0x0000_0000_3800_0000, 0x0000_0000_0F00_0000: 0x0000_0000_3800_0000, + 0x0000_0000_1000_0000: 0x0000_0000_3000_0000, 0x0000_0000_1100_0000: 0x0000_0000_3000_0000, 0x0000_0000_1200_0000: 0x0000_0000_3000_0000, 0x0000_0000_1300_0000: 0x0000_0000_3000_0000, + 0x0000_0000_1400_0000: 0x0000_0000_3000_0000, 0x0000_0000_1500_0000: 0x0000_0000_3000_0000, 0x0000_0000_1600_0000: 0x0000_0000_3000_0000, 0x0000_0000_1700_0000: 0x0000_0000_3000_0000, + 0x0000_0000_1800_0000: 0x0000_0000_3000_0000, 0x0000_0000_1900_0000: 0x0000_0000_3000_0000, 0x0000_0000_1A00_0000: 0x0000_0000_3000_0000, 0x0000_0000_1B00_0000: 0x0000_0000_3000_0000, + 0x0000_0000_1C00_0000: 0x0000_0000_3000_0000, 0x0000_0000_1D00_0000: 0x0000_0000_3000_0000, 0x0000_0000_1E00_0000: 0x0000_0000_3000_0000, 0x0000_0000_1F00_0000: 0x0000_0000_3000_0000, + 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0000_2100_0000: 0x0000_0000_2000_0000, 0x0000_0000_2200_0000: 0x0000_0000_2000_0000, 0x0000_0000_2300_0000: 0x0000_0000_2000_0000, + 0x0000_0000_2400_0000: 0x0000_0000_2000_0000, 0x0000_0000_2500_0000: 0x0000_0000_2000_0000, 0x0000_0000_2600_0000: 0x0000_0000_2000_0000, 0x0000_0000_2700_0000: 0x0000_0000_2000_0000, + 0x0000_0000_2800_0000: 0x0000_0000_2000_0000, 0x0000_0000_2900_0000: 0x0000_0000_2000_0000, 0x0000_0000_2A00_0000: 0x0000_0000_2000_0000, 0x0000_0000_2B00_0000: 0x0000_0000_2000_0000, + 0x0000_0000_2C00_0000: 0x0000_0000_2000_0000, 0x0000_0000_2D00_0000: 0x0000_0000_2000_0000, 0x0000_0000_2E00_0000: 0x0000_0000_2000_0000, 0x0000_0000_2F00_0000: 0x0000_0000_2000_0000, + 0x0000_0000_3000_0000: 0x0000_0000_2000_0000, 0x0000_0000_3100_0000: 0x0000_0000_2000_0000, 0x0000_0000_3200_0000: 0x0000_0000_2000_0000, 0x0000_0000_3300_0000: 0x0000_0000_2000_0000, + 0x0000_0000_3400_0000: 0x0000_0000_2000_0000, 0x0000_0000_3500_0000: 0x0000_0000_2000_0000, 0x0000_0000_3600_0000: 0x0000_0000_2000_0000, 0x0000_0000_3700_0000: 0x0000_0000_2000_0000, + 0x0000_0000_3800_0000: 0x0000_0000_2000_0000, 0x0000_0000_3900_0000: 0x0000_0000_2000_0000, 0x0000_0000_3A00_0000: 0x0000_0000_2000_0000, 0x0000_0000_3B00_0000: 0x0000_0000_2000_0000, + 0x0000_0000_3C00_0000: 0x0000_0000_2000_0000, 0x0000_0000_3D00_0000: 0x0000_0000_2000_0000, 0x0000_0000_3E00_0000: 0x0000_0000_2000_0000, 0x0000_0000_3F00_0000: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_7F00_0000, 0x0000_0000_0100_0000: 0x0000_0000_7F00_0000, 0x0000_0000_0200_0000: 0x0000_0000_7E00_0000, 0x0000_0000_0300_0000: 0x0000_0000_7E00_0000, + 0x0000_0000_0400_0000: 0x0000_0000_7C00_0000, 0x0000_0000_0500_0000: 0x0000_0000_7C00_0000, 0x0000_0000_0600_0000: 0x0000_0000_7C00_0000, 0x0000_0000_0700_0000: 0x0000_0000_7C00_0000, + 0x0000_0000_0800_0000: 0x0000_0000_7800_0000, 0x0000_0000_0900_0000: 0x0000_0000_7800_0000, 0x0000_0000_0A00_0000: 0x0000_0000_7800_0000, 0x0000_0000_0B00_0000: 0x0000_0000_7800_0000, + 0x0000_0000_0C00_0000: 0x0000_0000_7800_0000, 0x0000_0000_0D00_0000: 0x0000_0000_7800_0000, 0x0000_0000_0E00_0000: 0x0000_0000_7800_0000, 0x0000_0000_0F00_0000: 0x0000_0000_7800_0000, + 0x0000_0000_1000_0000: 0x0000_0000_7000_0000, 0x0000_0000_1100_0000: 0x0000_0000_7000_0000, 0x0000_0000_1200_0000: 0x0000_0000_7000_0000, 0x0000_0000_1300_0000: 0x0000_0000_7000_0000, + 0x0000_0000_1400_0000: 0x0000_0000_7000_0000, 0x0000_0000_1500_0000: 0x0000_0000_7000_0000, 0x0000_0000_1600_0000: 0x0000_0000_7000_0000, 0x0000_0000_1700_0000: 0x0000_0000_7000_0000, + 0x0000_0000_1800_0000: 0x0000_0000_7000_0000, 0x0000_0000_1900_0000: 0x0000_0000_7000_0000, 0x0000_0000_1A00_0000: 0x0000_0000_7000_0000, 0x0000_0000_1B00_0000: 0x0000_0000_7000_0000, + 0x0000_0000_1C00_0000: 0x0000_0000_7000_0000, 0x0000_0000_1D00_0000: 0x0000_0000_7000_0000, 0x0000_0000_1E00_0000: 0x0000_0000_7000_0000, 0x0000_0000_1F00_0000: 0x0000_0000_7000_0000, + 0x0000_0000_2000_0000: 0x0000_0000_6000_0000, 0x0000_0000_2100_0000: 0x0000_0000_6000_0000, 0x0000_0000_2200_0000: 0x0000_0000_6000_0000, 0x0000_0000_2300_0000: 0x0000_0000_6000_0000, + 0x0000_0000_2400_0000: 0x0000_0000_6000_0000, 0x0000_0000_2500_0000: 0x0000_0000_6000_0000, 0x0000_0000_2600_0000: 0x0000_0000_6000_0000, 0x0000_0000_2700_0000: 0x0000_0000_6000_0000, + 0x0000_0000_2800_0000: 0x0000_0000_6000_0000, 0x0000_0000_2900_0000: 0x0000_0000_6000_0000, 0x0000_0000_2A00_0000: 0x0000_0000_6000_0000, 0x0000_0000_2B00_0000: 0x0000_0000_6000_0000, + 0x0000_0000_2C00_0000: 0x0000_0000_6000_0000, 0x0000_0000_2D00_0000: 0x0000_0000_6000_0000, 0x0000_0000_2E00_0000: 0x0000_0000_6000_0000, 0x0000_0000_2F00_0000: 0x0000_0000_6000_0000, + 0x0000_0000_3000_0000: 0x0000_0000_6000_0000, 0x0000_0000_3100_0000: 0x0000_0000_6000_0000, 0x0000_0000_3200_0000: 0x0000_0000_6000_0000, 0x0000_0000_3300_0000: 0x0000_0000_6000_0000, + 0x0000_0000_3400_0000: 0x0000_0000_6000_0000, 0x0000_0000_3500_0000: 0x0000_0000_6000_0000, 0x0000_0000_3600_0000: 0x0000_0000_6000_0000, 0x0000_0000_3700_0000: 0x0000_0000_6000_0000, + 0x0000_0000_3800_0000: 0x0000_0000_6000_0000, 0x0000_0000_3900_0000: 0x0000_0000_6000_0000, 0x0000_0000_3A00_0000: 0x0000_0000_6000_0000, 0x0000_0000_3B00_0000: 0x0000_0000_6000_0000, + 0x0000_0000_3C00_0000: 0x0000_0000_6000_0000, 0x0000_0000_3D00_0000: 0x0000_0000_6000_0000, 0x0000_0000_3E00_0000: 0x0000_0000_6000_0000, 0x0000_0000_3F00_0000: 0x0000_0000_6000_0000, + 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0000_4100_0000: 0x0000_0000_4000_0000, 0x0000_0000_4200_0000: 0x0000_0000_4000_0000, 0x0000_0000_4300_0000: 0x0000_0000_4000_0000, + 0x0000_0000_4400_0000: 0x0000_0000_4000_0000, 0x0000_0000_4500_0000: 0x0000_0000_4000_0000, 0x0000_0000_4600_0000: 0x0000_0000_4000_0000, 0x0000_0000_4700_0000: 0x0000_0000_4000_0000, + 0x0000_0000_4800_0000: 0x0000_0000_4000_0000, 0x0000_0000_4900_0000: 0x0000_0000_4000_0000, 0x0000_0000_4A00_0000: 0x0000_0000_4000_0000, 0x0000_0000_4B00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_4C00_0000: 0x0000_0000_4000_0000, 0x0000_0000_4D00_0000: 0x0000_0000_4000_0000, 0x0000_0000_4E00_0000: 0x0000_0000_4000_0000, 0x0000_0000_4F00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_5000_0000: 0x0000_0000_4000_0000, 0x0000_0000_5100_0000: 0x0000_0000_4000_0000, 0x0000_0000_5200_0000: 0x0000_0000_4000_0000, 0x0000_0000_5300_0000: 0x0000_0000_4000_0000, + 0x0000_0000_5400_0000: 0x0000_0000_4000_0000, 0x0000_0000_5500_0000: 0x0000_0000_4000_0000, 0x0000_0000_5600_0000: 0x0000_0000_4000_0000, 0x0000_0000_5700_0000: 0x0000_0000_4000_0000, + 0x0000_0000_5800_0000: 0x0000_0000_4000_0000, 0x0000_0000_5900_0000: 0x0000_0000_4000_0000, 0x0000_0000_5A00_0000: 0x0000_0000_4000_0000, 0x0000_0000_5B00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_5C00_0000: 0x0000_0000_4000_0000, 0x0000_0000_5D00_0000: 0x0000_0000_4000_0000, 0x0000_0000_5E00_0000: 0x0000_0000_4000_0000, 0x0000_0000_5F00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_6000_0000: 0x0000_0000_4000_0000, 0x0000_0000_6100_0000: 0x0000_0000_4000_0000, 0x0000_0000_6200_0000: 0x0000_0000_4000_0000, 0x0000_0000_6300_0000: 0x0000_0000_4000_0000, + 0x0000_0000_6400_0000: 0x0000_0000_4000_0000, 0x0000_0000_6500_0000: 0x0000_0000_4000_0000, 0x0000_0000_6600_0000: 0x0000_0000_4000_0000, 0x0000_0000_6700_0000: 0x0000_0000_4000_0000, + 0x0000_0000_6800_0000: 0x0000_0000_4000_0000, 0x0000_0000_6900_0000: 0x0000_0000_4000_0000, 0x0000_0000_6A00_0000: 0x0000_0000_4000_0000, 0x0000_0000_6B00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_6C00_0000: 0x0000_0000_4000_0000, 0x0000_0000_6D00_0000: 0x0000_0000_4000_0000, 0x0000_0000_6E00_0000: 0x0000_0000_4000_0000, 0x0000_0000_6F00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_7000_0000: 0x0000_0000_4000_0000, 0x0000_0000_7100_0000: 0x0000_0000_4000_0000, 0x0000_0000_7200_0000: 0x0000_0000_4000_0000, 0x0000_0000_7300_0000: 0x0000_0000_4000_0000, + 0x0000_0000_7400_0000: 0x0000_0000_4000_0000, 0x0000_0000_7500_0000: 0x0000_0000_4000_0000, 0x0000_0000_7600_0000: 0x0000_0000_4000_0000, 0x0000_0000_7700_0000: 0x0000_0000_4000_0000, + 0x0000_0000_7800_0000: 0x0000_0000_4000_0000, 0x0000_0000_7900_0000: 0x0000_0000_4000_0000, 0x0000_0000_7A00_0000: 0x0000_0000_4000_0000, 0x0000_0000_7B00_0000: 0x0000_0000_4000_0000, + 0x0000_0000_7C00_0000: 0x0000_0000_4000_0000, 0x0000_0000_7D00_0000: 0x0000_0000_4000_0000, 0x0000_0000_7E00_0000: 0x0000_0000_4000_0000, 0x0000_0000_7F00_0000: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0000_0000, 0x0000_0001_0000_0000: 0x0000_0001_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0003_0000_0000, 0x0000_0001_0000_0000: 0x0000_0003_0000_0000, 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0003_0000_0000: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0007_0000_0000, 0x0000_0001_0000_0000: 0x0000_0007_0000_0000, 0x0000_0002_0000_0000: 0x0000_0006_0000_0000, 0x0000_0003_0000_0000: 0x0000_0006_0000_0000, + 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0005_0000_0000: 0x0000_0004_0000_0000, 0x0000_0006_0000_0000: 0x0000_0004_0000_0000, 0x0000_0007_0000_0000: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_000F_0000_0000, 0x0000_0001_0000_0000: 0x0000_000F_0000_0000, 0x0000_0002_0000_0000: 0x0000_000E_0000_0000, 0x0000_0003_0000_0000: 0x0000_000E_0000_0000, + 0x0000_0004_0000_0000: 0x0000_000C_0000_0000, 0x0000_0005_0000_0000: 0x0000_000C_0000_0000, 0x0000_0006_0000_0000: 0x0000_000C_0000_0000, 0x0000_0007_0000_0000: 0x0000_000C_0000_0000, + 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0009_0000_0000: 0x0000_0008_0000_0000, 0x0000_000A_0000_0000: 0x0000_0008_0000_0000, 0x0000_000B_0000_0000: 0x0000_0008_0000_0000, + 0x0000_000C_0000_0000: 0x0000_0008_0000_0000, 0x0000_000D_0000_0000: 0x0000_0008_0000_0000, 0x0000_000E_0000_0000: 0x0000_0008_0000_0000, 0x0000_000F_0000_0000: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_001F_0000_0000, 0x0000_0001_0000_0000: 0x0000_001F_0000_0000, 0x0000_0002_0000_0000: 0x0000_001E_0000_0000, 0x0000_0003_0000_0000: 0x0000_001E_0000_0000, + 0x0000_0004_0000_0000: 0x0000_001C_0000_0000, 0x0000_0005_0000_0000: 0x0000_001C_0000_0000, 0x0000_0006_0000_0000: 0x0000_001C_0000_0000, 0x0000_0007_0000_0000: 0x0000_001C_0000_0000, + 0x0000_0008_0000_0000: 0x0000_0018_0000_0000, 0x0000_0009_0000_0000: 0x0000_0018_0000_0000, 0x0000_000A_0000_0000: 0x0000_0018_0000_0000, 0x0000_000B_0000_0000: 0x0000_0018_0000_0000, + 0x0000_000C_0000_0000: 0x0000_0018_0000_0000, 0x0000_000D_0000_0000: 0x0000_0018_0000_0000, 0x0000_000E_0000_0000: 0x0000_0018_0000_0000, 0x0000_000F_0000_0000: 0x0000_0018_0000_0000, + 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_0011_0000_0000: 0x0000_0010_0000_0000, 0x0000_0012_0000_0000: 0x0000_0010_0000_0000, 0x0000_0013_0000_0000: 0x0000_0010_0000_0000, + 0x0000_0014_0000_0000: 0x0000_0010_0000_0000, 0x0000_0015_0000_0000: 0x0000_0010_0000_0000, 0x0000_0016_0000_0000: 0x0000_0010_0000_0000, 0x0000_0017_0000_0000: 0x0000_0010_0000_0000, + 0x0000_0018_0000_0000: 0x0000_0010_0000_0000, 0x0000_0019_0000_0000: 0x0000_0010_0000_0000, 0x0000_001A_0000_0000: 0x0000_0010_0000_0000, 0x0000_001B_0000_0000: 0x0000_0010_0000_0000, + 0x0000_001C_0000_0000: 0x0000_0010_0000_0000, 0x0000_001D_0000_0000: 0x0000_0010_0000_0000, 0x0000_001E_0000_0000: 0x0000_0010_0000_0000, 0x0000_001F_0000_0000: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_003F_0000_0000, 0x0000_0001_0000_0000: 0x0000_003F_0000_0000, 0x0000_0002_0000_0000: 0x0000_003E_0000_0000, 0x0000_0003_0000_0000: 0x0000_003E_0000_0000, + 0x0000_0004_0000_0000: 0x0000_003C_0000_0000, 0x0000_0005_0000_0000: 0x0000_003C_0000_0000, 0x0000_0006_0000_0000: 0x0000_003C_0000_0000, 0x0000_0007_0000_0000: 0x0000_003C_0000_0000, + 0x0000_0008_0000_0000: 0x0000_0038_0000_0000, 0x0000_0009_0000_0000: 0x0000_0038_0000_0000, 0x0000_000A_0000_0000: 0x0000_0038_0000_0000, 0x0000_000B_0000_0000: 0x0000_0038_0000_0000, + 0x0000_000C_0000_0000: 0x0000_0038_0000_0000, 0x0000_000D_0000_0000: 0x0000_0038_0000_0000, 0x0000_000E_0000_0000: 0x0000_0038_0000_0000, 0x0000_000F_0000_0000: 0x0000_0038_0000_0000, + 0x0000_0010_0000_0000: 0x0000_0030_0000_0000, 0x0000_0011_0000_0000: 0x0000_0030_0000_0000, 0x0000_0012_0000_0000: 0x0000_0030_0000_0000, 0x0000_0013_0000_0000: 0x0000_0030_0000_0000, + 0x0000_0014_0000_0000: 0x0000_0030_0000_0000, 0x0000_0015_0000_0000: 0x0000_0030_0000_0000, 0x0000_0016_0000_0000: 0x0000_0030_0000_0000, 0x0000_0017_0000_0000: 0x0000_0030_0000_0000, + 0x0000_0018_0000_0000: 0x0000_0030_0000_0000, 0x0000_0019_0000_0000: 0x0000_0030_0000_0000, 0x0000_001A_0000_0000: 0x0000_0030_0000_0000, 0x0000_001B_0000_0000: 0x0000_0030_0000_0000, + 0x0000_001C_0000_0000: 0x0000_0030_0000_0000, 0x0000_001D_0000_0000: 0x0000_0030_0000_0000, 0x0000_001E_0000_0000: 0x0000_0030_0000_0000, 0x0000_001F_0000_0000: 0x0000_0030_0000_0000, + 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_0021_0000_0000: 0x0000_0020_0000_0000, 0x0000_0022_0000_0000: 0x0000_0020_0000_0000, 0x0000_0023_0000_0000: 0x0000_0020_0000_0000, + 0x0000_0024_0000_0000: 0x0000_0020_0000_0000, 0x0000_0025_0000_0000: 0x0000_0020_0000_0000, 0x0000_0026_0000_0000: 0x0000_0020_0000_0000, 0x0000_0027_0000_0000: 0x0000_0020_0000_0000, + 0x0000_0028_0000_0000: 0x0000_0020_0000_0000, 0x0000_0029_0000_0000: 0x0000_0020_0000_0000, 0x0000_002A_0000_0000: 0x0000_0020_0000_0000, 0x0000_002B_0000_0000: 0x0000_0020_0000_0000, + 0x0000_002C_0000_0000: 0x0000_0020_0000_0000, 0x0000_002D_0000_0000: 0x0000_0020_0000_0000, 0x0000_002E_0000_0000: 0x0000_0020_0000_0000, 0x0000_002F_0000_0000: 0x0000_0020_0000_0000, + 0x0000_0030_0000_0000: 0x0000_0020_0000_0000, 0x0000_0031_0000_0000: 0x0000_0020_0000_0000, 0x0000_0032_0000_0000: 0x0000_0020_0000_0000, 0x0000_0033_0000_0000: 0x0000_0020_0000_0000, + 0x0000_0034_0000_0000: 0x0000_0020_0000_0000, 0x0000_0035_0000_0000: 0x0000_0020_0000_0000, 0x0000_0036_0000_0000: 0x0000_0020_0000_0000, 0x0000_0037_0000_0000: 0x0000_0020_0000_0000, + 0x0000_0038_0000_0000: 0x0000_0020_0000_0000, 0x0000_0039_0000_0000: 0x0000_0020_0000_0000, 0x0000_003A_0000_0000: 0x0000_0020_0000_0000, 0x0000_003B_0000_0000: 0x0000_0020_0000_0000, + 0x0000_003C_0000_0000: 0x0000_0020_0000_0000, 0x0000_003D_0000_0000: 0x0000_0020_0000_0000, 0x0000_003E_0000_0000: 0x0000_0020_0000_0000, 0x0000_003F_0000_0000: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_007F_0000_0000, 0x0000_0001_0000_0000: 0x0000_007F_0000_0000, 0x0000_0002_0000_0000: 0x0000_007E_0000_0000, 0x0000_0003_0000_0000: 0x0000_007E_0000_0000, + 0x0000_0004_0000_0000: 0x0000_007C_0000_0000, 0x0000_0005_0000_0000: 0x0000_007C_0000_0000, 0x0000_0006_0000_0000: 0x0000_007C_0000_0000, 0x0000_0007_0000_0000: 0x0000_007C_0000_0000, + 0x0000_0008_0000_0000: 0x0000_0078_0000_0000, 0x0000_0009_0000_0000: 0x0000_0078_0000_0000, 0x0000_000A_0000_0000: 0x0000_0078_0000_0000, 0x0000_000B_0000_0000: 0x0000_0078_0000_0000, + 0x0000_000C_0000_0000: 0x0000_0078_0000_0000, 0x0000_000D_0000_0000: 0x0000_0078_0000_0000, 0x0000_000E_0000_0000: 0x0000_0078_0000_0000, 0x0000_000F_0000_0000: 0x0000_0078_0000_0000, + 0x0000_0010_0000_0000: 0x0000_0070_0000_0000, 0x0000_0011_0000_0000: 0x0000_0070_0000_0000, 0x0000_0012_0000_0000: 0x0000_0070_0000_0000, 0x0000_0013_0000_0000: 0x0000_0070_0000_0000, + 0x0000_0014_0000_0000: 0x0000_0070_0000_0000, 0x0000_0015_0000_0000: 0x0000_0070_0000_0000, 0x0000_0016_0000_0000: 0x0000_0070_0000_0000, 0x0000_0017_0000_0000: 0x0000_0070_0000_0000, + 0x0000_0018_0000_0000: 0x0000_0070_0000_0000, 0x0000_0019_0000_0000: 0x0000_0070_0000_0000, 0x0000_001A_0000_0000: 0x0000_0070_0000_0000, 0x0000_001B_0000_0000: 0x0000_0070_0000_0000, + 0x0000_001C_0000_0000: 0x0000_0070_0000_0000, 0x0000_001D_0000_0000: 0x0000_0070_0000_0000, 0x0000_001E_0000_0000: 0x0000_0070_0000_0000, 0x0000_001F_0000_0000: 0x0000_0070_0000_0000, + 0x0000_0020_0000_0000: 0x0000_0060_0000_0000, 0x0000_0021_0000_0000: 0x0000_0060_0000_0000, 0x0000_0022_0000_0000: 0x0000_0060_0000_0000, 0x0000_0023_0000_0000: 0x0000_0060_0000_0000, + 0x0000_0024_0000_0000: 0x0000_0060_0000_0000, 0x0000_0025_0000_0000: 0x0000_0060_0000_0000, 0x0000_0026_0000_0000: 0x0000_0060_0000_0000, 0x0000_0027_0000_0000: 0x0000_0060_0000_0000, + 0x0000_0028_0000_0000: 0x0000_0060_0000_0000, 0x0000_0029_0000_0000: 0x0000_0060_0000_0000, 0x0000_002A_0000_0000: 0x0000_0060_0000_0000, 0x0000_002B_0000_0000: 0x0000_0060_0000_0000, + 0x0000_002C_0000_0000: 0x0000_0060_0000_0000, 0x0000_002D_0000_0000: 0x0000_0060_0000_0000, 0x0000_002E_0000_0000: 0x0000_0060_0000_0000, 0x0000_002F_0000_0000: 0x0000_0060_0000_0000, + 0x0000_0030_0000_0000: 0x0000_0060_0000_0000, 0x0000_0031_0000_0000: 0x0000_0060_0000_0000, 0x0000_0032_0000_0000: 0x0000_0060_0000_0000, 0x0000_0033_0000_0000: 0x0000_0060_0000_0000, + 0x0000_0034_0000_0000: 0x0000_0060_0000_0000, 0x0000_0035_0000_0000: 0x0000_0060_0000_0000, 0x0000_0036_0000_0000: 0x0000_0060_0000_0000, 0x0000_0037_0000_0000: 0x0000_0060_0000_0000, + 0x0000_0038_0000_0000: 0x0000_0060_0000_0000, 0x0000_0039_0000_0000: 0x0000_0060_0000_0000, 0x0000_003A_0000_0000: 0x0000_0060_0000_0000, 0x0000_003B_0000_0000: 0x0000_0060_0000_0000, + 0x0000_003C_0000_0000: 0x0000_0060_0000_0000, 0x0000_003D_0000_0000: 0x0000_0060_0000_0000, 0x0000_003E_0000_0000: 0x0000_0060_0000_0000, 0x0000_003F_0000_0000: 0x0000_0060_0000_0000, + 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_0041_0000_0000: 0x0000_0040_0000_0000, 0x0000_0042_0000_0000: 0x0000_0040_0000_0000, 0x0000_0043_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0044_0000_0000: 0x0000_0040_0000_0000, 0x0000_0045_0000_0000: 0x0000_0040_0000_0000, 0x0000_0046_0000_0000: 0x0000_0040_0000_0000, 0x0000_0047_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0048_0000_0000: 0x0000_0040_0000_0000, 0x0000_0049_0000_0000: 0x0000_0040_0000_0000, 0x0000_004A_0000_0000: 0x0000_0040_0000_0000, 0x0000_004B_0000_0000: 0x0000_0040_0000_0000, + 0x0000_004C_0000_0000: 0x0000_0040_0000_0000, 0x0000_004D_0000_0000: 0x0000_0040_0000_0000, 0x0000_004E_0000_0000: 0x0000_0040_0000_0000, 0x0000_004F_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0050_0000_0000: 0x0000_0040_0000_0000, 0x0000_0051_0000_0000: 0x0000_0040_0000_0000, 0x0000_0052_0000_0000: 0x0000_0040_0000_0000, 0x0000_0053_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0054_0000_0000: 0x0000_0040_0000_0000, 0x0000_0055_0000_0000: 0x0000_0040_0000_0000, 0x0000_0056_0000_0000: 0x0000_0040_0000_0000, 0x0000_0057_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0058_0000_0000: 0x0000_0040_0000_0000, 0x0000_0059_0000_0000: 0x0000_0040_0000_0000, 0x0000_005A_0000_0000: 0x0000_0040_0000_0000, 0x0000_005B_0000_0000: 0x0000_0040_0000_0000, + 0x0000_005C_0000_0000: 0x0000_0040_0000_0000, 0x0000_005D_0000_0000: 0x0000_0040_0000_0000, 0x0000_005E_0000_0000: 0x0000_0040_0000_0000, 0x0000_005F_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0060_0000_0000: 0x0000_0040_0000_0000, 0x0000_0061_0000_0000: 0x0000_0040_0000_0000, 0x0000_0062_0000_0000: 0x0000_0040_0000_0000, 0x0000_0063_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0064_0000_0000: 0x0000_0040_0000_0000, 0x0000_0065_0000_0000: 0x0000_0040_0000_0000, 0x0000_0066_0000_0000: 0x0000_0040_0000_0000, 0x0000_0067_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0068_0000_0000: 0x0000_0040_0000_0000, 0x0000_0069_0000_0000: 0x0000_0040_0000_0000, 0x0000_006A_0000_0000: 0x0000_0040_0000_0000, 0x0000_006B_0000_0000: 0x0000_0040_0000_0000, + 0x0000_006C_0000_0000: 0x0000_0040_0000_0000, 0x0000_006D_0000_0000: 0x0000_0040_0000_0000, 0x0000_006E_0000_0000: 0x0000_0040_0000_0000, 0x0000_006F_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0070_0000_0000: 0x0000_0040_0000_0000, 0x0000_0071_0000_0000: 0x0000_0040_0000_0000, 0x0000_0072_0000_0000: 0x0000_0040_0000_0000, 0x0000_0073_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0074_0000_0000: 0x0000_0040_0000_0000, 0x0000_0075_0000_0000: 0x0000_0040_0000_0000, 0x0000_0076_0000_0000: 0x0000_0040_0000_0000, 0x0000_0077_0000_0000: 0x0000_0040_0000_0000, + 0x0000_0078_0000_0000: 0x0000_0040_0000_0000, 0x0000_0079_0000_0000: 0x0000_0040_0000_0000, 0x0000_007A_0000_0000: 0x0000_0040_0000_0000, 0x0000_007B_0000_0000: 0x0000_0040_0000_0000, + 0x0000_007C_0000_0000: 0x0000_0040_0000_0000, 0x0000_007D_0000_0000: 0x0000_0040_0000_0000, 0x0000_007E_0000_0000: 0x0000_0040_0000_0000, 0x0000_007F_0000_0000: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0100_0000_0000, 0x0000_0100_0000_0000: 0x0000_0100_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0300_0000_0000, 0x0000_0100_0000_0000: 0x0000_0300_0000_0000, 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0000_0300_0000_0000: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0700_0000_0000, 0x0000_0100_0000_0000: 0x0000_0700_0000_0000, 0x0000_0200_0000_0000: 0x0000_0600_0000_0000, 0x0000_0300_0000_0000: 0x0000_0600_0000_0000, + 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0000_0500_0000_0000: 0x0000_0400_0000_0000, 0x0000_0600_0000_0000: 0x0000_0400_0000_0000, 0x0000_0700_0000_0000: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0F00_0000_0000, 0x0000_0100_0000_0000: 0x0000_0F00_0000_0000, 0x0000_0200_0000_0000: 0x0000_0E00_0000_0000, 0x0000_0300_0000_0000: 0x0000_0E00_0000_0000, + 0x0000_0400_0000_0000: 0x0000_0C00_0000_0000, 0x0000_0500_0000_0000: 0x0000_0C00_0000_0000, 0x0000_0600_0000_0000: 0x0000_0C00_0000_0000, 0x0000_0700_0000_0000: 0x0000_0C00_0000_0000, + 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0000_0900_0000_0000: 0x0000_0800_0000_0000, 0x0000_0A00_0000_0000: 0x0000_0800_0000_0000, 0x0000_0B00_0000_0000: 0x0000_0800_0000_0000, + 0x0000_0C00_0000_0000: 0x0000_0800_0000_0000, 0x0000_0D00_0000_0000: 0x0000_0800_0000_0000, 0x0000_0E00_0000_0000: 0x0000_0800_0000_0000, 0x0000_0F00_0000_0000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_1F00_0000_0000, 0x0000_0100_0000_0000: 0x0000_1F00_0000_0000, 0x0000_0200_0000_0000: 0x0000_1E00_0000_0000, 0x0000_0300_0000_0000: 0x0000_1E00_0000_0000, + 0x0000_0400_0000_0000: 0x0000_1C00_0000_0000, 0x0000_0500_0000_0000: 0x0000_1C00_0000_0000, 0x0000_0600_0000_0000: 0x0000_1C00_0000_0000, 0x0000_0700_0000_0000: 0x0000_1C00_0000_0000, + 0x0000_0800_0000_0000: 0x0000_1800_0000_0000, 0x0000_0900_0000_0000: 0x0000_1800_0000_0000, 0x0000_0A00_0000_0000: 0x0000_1800_0000_0000, 0x0000_0B00_0000_0000: 0x0000_1800_0000_0000, + 0x0000_0C00_0000_0000: 0x0000_1800_0000_0000, 0x0000_0D00_0000_0000: 0x0000_1800_0000_0000, 0x0000_0E00_0000_0000: 0x0000_1800_0000_0000, 0x0000_0F00_0000_0000: 0x0000_1800_0000_0000, + 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0000_1100_0000_0000: 0x0000_1000_0000_0000, 0x0000_1200_0000_0000: 0x0000_1000_0000_0000, 0x0000_1300_0000_0000: 0x0000_1000_0000_0000, + 0x0000_1400_0000_0000: 0x0000_1000_0000_0000, 0x0000_1500_0000_0000: 0x0000_1000_0000_0000, 0x0000_1600_0000_0000: 0x0000_1000_0000_0000, 0x0000_1700_0000_0000: 0x0000_1000_0000_0000, + 0x0000_1800_0000_0000: 0x0000_1000_0000_0000, 0x0000_1900_0000_0000: 0x0000_1000_0000_0000, 0x0000_1A00_0000_0000: 0x0000_1000_0000_0000, 0x0000_1B00_0000_0000: 0x0000_1000_0000_0000, + 0x0000_1C00_0000_0000: 0x0000_1000_0000_0000, 0x0000_1D00_0000_0000: 0x0000_1000_0000_0000, 0x0000_1E00_0000_0000: 0x0000_1000_0000_0000, 0x0000_1F00_0000_0000: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_3F00_0000_0000, 0x0000_0100_0000_0000: 0x0000_3F00_0000_0000, 0x0000_0200_0000_0000: 0x0000_3E00_0000_0000, 0x0000_0300_0000_0000: 0x0000_3E00_0000_0000, + 0x0000_0400_0000_0000: 0x0000_3C00_0000_0000, 0x0000_0500_0000_0000: 0x0000_3C00_0000_0000, 0x0000_0600_0000_0000: 0x0000_3C00_0000_0000, 0x0000_0700_0000_0000: 0x0000_3C00_0000_0000, + 0x0000_0800_0000_0000: 0x0000_3800_0000_0000, 0x0000_0900_0000_0000: 0x0000_3800_0000_0000, 0x0000_0A00_0000_0000: 0x0000_3800_0000_0000, 0x0000_0B00_0000_0000: 0x0000_3800_0000_0000, + 0x0000_0C00_0000_0000: 0x0000_3800_0000_0000, 0x0000_0D00_0000_0000: 0x0000_3800_0000_0000, 0x0000_0E00_0000_0000: 0x0000_3800_0000_0000, 0x0000_0F00_0000_0000: 0x0000_3800_0000_0000, + 0x0000_1000_0000_0000: 0x0000_3000_0000_0000, 0x0000_1100_0000_0000: 0x0000_3000_0000_0000, 0x0000_1200_0000_0000: 0x0000_3000_0000_0000, 0x0000_1300_0000_0000: 0x0000_3000_0000_0000, + 0x0000_1400_0000_0000: 0x0000_3000_0000_0000, 0x0000_1500_0000_0000: 0x0000_3000_0000_0000, 0x0000_1600_0000_0000: 0x0000_3000_0000_0000, 0x0000_1700_0000_0000: 0x0000_3000_0000_0000, + 0x0000_1800_0000_0000: 0x0000_3000_0000_0000, 0x0000_1900_0000_0000: 0x0000_3000_0000_0000, 0x0000_1A00_0000_0000: 0x0000_3000_0000_0000, 0x0000_1B00_0000_0000: 0x0000_3000_0000_0000, + 0x0000_1C00_0000_0000: 0x0000_3000_0000_0000, 0x0000_1D00_0000_0000: 0x0000_3000_0000_0000, 0x0000_1E00_0000_0000: 0x0000_3000_0000_0000, 0x0000_1F00_0000_0000: 0x0000_3000_0000_0000, + 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0000_2100_0000_0000: 0x0000_2000_0000_0000, 0x0000_2200_0000_0000: 0x0000_2000_0000_0000, 0x0000_2300_0000_0000: 0x0000_2000_0000_0000, + 0x0000_2400_0000_0000: 0x0000_2000_0000_0000, 0x0000_2500_0000_0000: 0x0000_2000_0000_0000, 0x0000_2600_0000_0000: 0x0000_2000_0000_0000, 0x0000_2700_0000_0000: 0x0000_2000_0000_0000, + 0x0000_2800_0000_0000: 0x0000_2000_0000_0000, 0x0000_2900_0000_0000: 0x0000_2000_0000_0000, 0x0000_2A00_0000_0000: 0x0000_2000_0000_0000, 0x0000_2B00_0000_0000: 0x0000_2000_0000_0000, + 0x0000_2C00_0000_0000: 0x0000_2000_0000_0000, 0x0000_2D00_0000_0000: 0x0000_2000_0000_0000, 0x0000_2E00_0000_0000: 0x0000_2000_0000_0000, 0x0000_2F00_0000_0000: 0x0000_2000_0000_0000, + 0x0000_3000_0000_0000: 0x0000_2000_0000_0000, 0x0000_3100_0000_0000: 0x0000_2000_0000_0000, 0x0000_3200_0000_0000: 0x0000_2000_0000_0000, 0x0000_3300_0000_0000: 0x0000_2000_0000_0000, + 0x0000_3400_0000_0000: 0x0000_2000_0000_0000, 0x0000_3500_0000_0000: 0x0000_2000_0000_0000, 0x0000_3600_0000_0000: 0x0000_2000_0000_0000, 0x0000_3700_0000_0000: 0x0000_2000_0000_0000, + 0x0000_3800_0000_0000: 0x0000_2000_0000_0000, 0x0000_3900_0000_0000: 0x0000_2000_0000_0000, 0x0000_3A00_0000_0000: 0x0000_2000_0000_0000, 0x0000_3B00_0000_0000: 0x0000_2000_0000_0000, + 0x0000_3C00_0000_0000: 0x0000_2000_0000_0000, 0x0000_3D00_0000_0000: 0x0000_2000_0000_0000, 0x0000_3E00_0000_0000: 0x0000_2000_0000_0000, 0x0000_3F00_0000_0000: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_7F00_0000_0000, 0x0000_0100_0000_0000: 0x0000_7F00_0000_0000, 0x0000_0200_0000_0000: 0x0000_7E00_0000_0000, 0x0000_0300_0000_0000: 0x0000_7E00_0000_0000, + 0x0000_0400_0000_0000: 0x0000_7C00_0000_0000, 0x0000_0500_0000_0000: 0x0000_7C00_0000_0000, 0x0000_0600_0000_0000: 0x0000_7C00_0000_0000, 0x0000_0700_0000_0000: 0x0000_7C00_0000_0000, + 0x0000_0800_0000_0000: 0x0000_7800_0000_0000, 0x0000_0900_0000_0000: 0x0000_7800_0000_0000, 0x0000_0A00_0000_0000: 0x0000_7800_0000_0000, 0x0000_0B00_0000_0000: 0x0000_7800_0000_0000, + 0x0000_0C00_0000_0000: 0x0000_7800_0000_0000, 0x0000_0D00_0000_0000: 0x0000_7800_0000_0000, 0x0000_0E00_0000_0000: 0x0000_7800_0000_0000, 0x0000_0F00_0000_0000: 0x0000_7800_0000_0000, + 0x0000_1000_0000_0000: 0x0000_7000_0000_0000, 0x0000_1100_0000_0000: 0x0000_7000_0000_0000, 0x0000_1200_0000_0000: 0x0000_7000_0000_0000, 0x0000_1300_0000_0000: 0x0000_7000_0000_0000, + 0x0000_1400_0000_0000: 0x0000_7000_0000_0000, 0x0000_1500_0000_0000: 0x0000_7000_0000_0000, 0x0000_1600_0000_0000: 0x0000_7000_0000_0000, 0x0000_1700_0000_0000: 0x0000_7000_0000_0000, + 0x0000_1800_0000_0000: 0x0000_7000_0000_0000, 0x0000_1900_0000_0000: 0x0000_7000_0000_0000, 0x0000_1A00_0000_0000: 0x0000_7000_0000_0000, 0x0000_1B00_0000_0000: 0x0000_7000_0000_0000, + 0x0000_1C00_0000_0000: 0x0000_7000_0000_0000, 0x0000_1D00_0000_0000: 0x0000_7000_0000_0000, 0x0000_1E00_0000_0000: 0x0000_7000_0000_0000, 0x0000_1F00_0000_0000: 0x0000_7000_0000_0000, + 0x0000_2000_0000_0000: 0x0000_6000_0000_0000, 0x0000_2100_0000_0000: 0x0000_6000_0000_0000, 0x0000_2200_0000_0000: 0x0000_6000_0000_0000, 0x0000_2300_0000_0000: 0x0000_6000_0000_0000, + 0x0000_2400_0000_0000: 0x0000_6000_0000_0000, 0x0000_2500_0000_0000: 0x0000_6000_0000_0000, 0x0000_2600_0000_0000: 0x0000_6000_0000_0000, 0x0000_2700_0000_0000: 0x0000_6000_0000_0000, + 0x0000_2800_0000_0000: 0x0000_6000_0000_0000, 0x0000_2900_0000_0000: 0x0000_6000_0000_0000, 0x0000_2A00_0000_0000: 0x0000_6000_0000_0000, 0x0000_2B00_0000_0000: 0x0000_6000_0000_0000, + 0x0000_2C00_0000_0000: 0x0000_6000_0000_0000, 0x0000_2D00_0000_0000: 0x0000_6000_0000_0000, 0x0000_2E00_0000_0000: 0x0000_6000_0000_0000, 0x0000_2F00_0000_0000: 0x0000_6000_0000_0000, + 0x0000_3000_0000_0000: 0x0000_6000_0000_0000, 0x0000_3100_0000_0000: 0x0000_6000_0000_0000, 0x0000_3200_0000_0000: 0x0000_6000_0000_0000, 0x0000_3300_0000_0000: 0x0000_6000_0000_0000, + 0x0000_3400_0000_0000: 0x0000_6000_0000_0000, 0x0000_3500_0000_0000: 0x0000_6000_0000_0000, 0x0000_3600_0000_0000: 0x0000_6000_0000_0000, 0x0000_3700_0000_0000: 0x0000_6000_0000_0000, + 0x0000_3800_0000_0000: 0x0000_6000_0000_0000, 0x0000_3900_0000_0000: 0x0000_6000_0000_0000, 0x0000_3A00_0000_0000: 0x0000_6000_0000_0000, 0x0000_3B00_0000_0000: 0x0000_6000_0000_0000, + 0x0000_3C00_0000_0000: 0x0000_6000_0000_0000, 0x0000_3D00_0000_0000: 0x0000_6000_0000_0000, 0x0000_3E00_0000_0000: 0x0000_6000_0000_0000, 0x0000_3F00_0000_0000: 0x0000_6000_0000_0000, + 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0000_4100_0000_0000: 0x0000_4000_0000_0000, 0x0000_4200_0000_0000: 0x0000_4000_0000_0000, 0x0000_4300_0000_0000: 0x0000_4000_0000_0000, + 0x0000_4400_0000_0000: 0x0000_4000_0000_0000, 0x0000_4500_0000_0000: 0x0000_4000_0000_0000, 0x0000_4600_0000_0000: 0x0000_4000_0000_0000, 0x0000_4700_0000_0000: 0x0000_4000_0000_0000, + 0x0000_4800_0000_0000: 0x0000_4000_0000_0000, 0x0000_4900_0000_0000: 0x0000_4000_0000_0000, 0x0000_4A00_0000_0000: 0x0000_4000_0000_0000, 0x0000_4B00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_4C00_0000_0000: 0x0000_4000_0000_0000, 0x0000_4D00_0000_0000: 0x0000_4000_0000_0000, 0x0000_4E00_0000_0000: 0x0000_4000_0000_0000, 0x0000_4F00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_5000_0000_0000: 0x0000_4000_0000_0000, 0x0000_5100_0000_0000: 0x0000_4000_0000_0000, 0x0000_5200_0000_0000: 0x0000_4000_0000_0000, 0x0000_5300_0000_0000: 0x0000_4000_0000_0000, + 0x0000_5400_0000_0000: 0x0000_4000_0000_0000, 0x0000_5500_0000_0000: 0x0000_4000_0000_0000, 0x0000_5600_0000_0000: 0x0000_4000_0000_0000, 0x0000_5700_0000_0000: 0x0000_4000_0000_0000, + 0x0000_5800_0000_0000: 0x0000_4000_0000_0000, 0x0000_5900_0000_0000: 0x0000_4000_0000_0000, 0x0000_5A00_0000_0000: 0x0000_4000_0000_0000, 0x0000_5B00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_5C00_0000_0000: 0x0000_4000_0000_0000, 0x0000_5D00_0000_0000: 0x0000_4000_0000_0000, 0x0000_5E00_0000_0000: 0x0000_4000_0000_0000, 0x0000_5F00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_6000_0000_0000: 0x0000_4000_0000_0000, 0x0000_6100_0000_0000: 0x0000_4000_0000_0000, 0x0000_6200_0000_0000: 0x0000_4000_0000_0000, 0x0000_6300_0000_0000: 0x0000_4000_0000_0000, + 0x0000_6400_0000_0000: 0x0000_4000_0000_0000, 0x0000_6500_0000_0000: 0x0000_4000_0000_0000, 0x0000_6600_0000_0000: 0x0000_4000_0000_0000, 0x0000_6700_0000_0000: 0x0000_4000_0000_0000, + 0x0000_6800_0000_0000: 0x0000_4000_0000_0000, 0x0000_6900_0000_0000: 0x0000_4000_0000_0000, 0x0000_6A00_0000_0000: 0x0000_4000_0000_0000, 0x0000_6B00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_6C00_0000_0000: 0x0000_4000_0000_0000, 0x0000_6D00_0000_0000: 0x0000_4000_0000_0000, 0x0000_6E00_0000_0000: 0x0000_4000_0000_0000, 0x0000_6F00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_7000_0000_0000: 0x0000_4000_0000_0000, 0x0000_7100_0000_0000: 0x0000_4000_0000_0000, 0x0000_7200_0000_0000: 0x0000_4000_0000_0000, 0x0000_7300_0000_0000: 0x0000_4000_0000_0000, + 0x0000_7400_0000_0000: 0x0000_4000_0000_0000, 0x0000_7500_0000_0000: 0x0000_4000_0000_0000, 0x0000_7600_0000_0000: 0x0000_4000_0000_0000, 0x0000_7700_0000_0000: 0x0000_4000_0000_0000, + 0x0000_7800_0000_0000: 0x0000_4000_0000_0000, 0x0000_7900_0000_0000: 0x0000_4000_0000_0000, 0x0000_7A00_0000_0000: 0x0000_4000_0000_0000, 0x0000_7B00_0000_0000: 0x0000_4000_0000_0000, + 0x0000_7C00_0000_0000: 0x0000_4000_0000_0000, 0x0000_7D00_0000_0000: 0x0000_4000_0000_0000, 0x0000_7E00_0000_0000: 0x0000_4000_0000_0000, 0x0000_7F00_0000_0000: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0000_0000_0000, 0x0001_0000_0000_0000: 0x0001_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0003_0000_0000_0000, 0x0001_0000_0000_0000: 0x0003_0000_0000_0000, 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0003_0000_0000_0000: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0007_0000_0000_0000, 0x0001_0000_0000_0000: 0x0007_0000_0000_0000, 0x0002_0000_0000_0000: 0x0006_0000_0000_0000, 0x0003_0000_0000_0000: 0x0006_0000_0000_0000, + 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0005_0000_0000_0000: 0x0004_0000_0000_0000, 0x0006_0000_0000_0000: 0x0004_0000_0000_0000, 0x0007_0000_0000_0000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x000F_0000_0000_0000, 0x0001_0000_0000_0000: 0x000F_0000_0000_0000, 0x0002_0000_0000_0000: 0x000E_0000_0000_0000, 0x0003_0000_0000_0000: 0x000E_0000_0000_0000, + 0x0004_0000_0000_0000: 0x000C_0000_0000_0000, 0x0005_0000_0000_0000: 0x000C_0000_0000_0000, 0x0006_0000_0000_0000: 0x000C_0000_0000_0000, 0x0007_0000_0000_0000: 0x000C_0000_0000_0000, + 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0009_0000_0000_0000: 0x0008_0000_0000_0000, 0x000A_0000_0000_0000: 0x0008_0000_0000_0000, 0x000B_0000_0000_0000: 0x0008_0000_0000_0000, + 0x000C_0000_0000_0000: 0x0008_0000_0000_0000, 0x000D_0000_0000_0000: 0x0008_0000_0000_0000, 0x000E_0000_0000_0000: 0x0008_0000_0000_0000, 0x000F_0000_0000_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x001F_0000_0000_0000, 0x0001_0000_0000_0000: 0x001F_0000_0000_0000, 0x0002_0000_0000_0000: 0x001E_0000_0000_0000, 0x0003_0000_0000_0000: 0x001E_0000_0000_0000, + 0x0004_0000_0000_0000: 0x001C_0000_0000_0000, 0x0005_0000_0000_0000: 0x001C_0000_0000_0000, 0x0006_0000_0000_0000: 0x001C_0000_0000_0000, 0x0007_0000_0000_0000: 0x001C_0000_0000_0000, + 0x0008_0000_0000_0000: 0x0018_0000_0000_0000, 0x0009_0000_0000_0000: 0x0018_0000_0000_0000, 0x000A_0000_0000_0000: 0x0018_0000_0000_0000, 0x000B_0000_0000_0000: 0x0018_0000_0000_0000, + 0x000C_0000_0000_0000: 0x0018_0000_0000_0000, 0x000D_0000_0000_0000: 0x0018_0000_0000_0000, 0x000E_0000_0000_0000: 0x0018_0000_0000_0000, 0x000F_0000_0000_0000: 0x0018_0000_0000_0000, + 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x0011_0000_0000_0000: 0x0010_0000_0000_0000, 0x0012_0000_0000_0000: 0x0010_0000_0000_0000, 0x0013_0000_0000_0000: 0x0010_0000_0000_0000, + 0x0014_0000_0000_0000: 0x0010_0000_0000_0000, 0x0015_0000_0000_0000: 0x0010_0000_0000_0000, 0x0016_0000_0000_0000: 0x0010_0000_0000_0000, 0x0017_0000_0000_0000: 0x0010_0000_0000_0000, + 0x0018_0000_0000_0000: 0x0010_0000_0000_0000, 0x0019_0000_0000_0000: 0x0010_0000_0000_0000, 0x001A_0000_0000_0000: 0x0010_0000_0000_0000, 0x001B_0000_0000_0000: 0x0010_0000_0000_0000, + 0x001C_0000_0000_0000: 0x0010_0000_0000_0000, 0x001D_0000_0000_0000: 0x0010_0000_0000_0000, 0x001E_0000_0000_0000: 0x0010_0000_0000_0000, 0x001F_0000_0000_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x003F_0000_0000_0000, 0x0001_0000_0000_0000: 0x003F_0000_0000_0000, 0x0002_0000_0000_0000: 0x003E_0000_0000_0000, 0x0003_0000_0000_0000: 0x003E_0000_0000_0000, + 0x0004_0000_0000_0000: 0x003C_0000_0000_0000, 0x0005_0000_0000_0000: 0x003C_0000_0000_0000, 0x0006_0000_0000_0000: 0x003C_0000_0000_0000, 0x0007_0000_0000_0000: 0x003C_0000_0000_0000, + 0x0008_0000_0000_0000: 0x0038_0000_0000_0000, 0x0009_0000_0000_0000: 0x0038_0000_0000_0000, 0x000A_0000_0000_0000: 0x0038_0000_0000_0000, 0x000B_0000_0000_0000: 0x0038_0000_0000_0000, + 0x000C_0000_0000_0000: 0x0038_0000_0000_0000, 0x000D_0000_0000_0000: 0x0038_0000_0000_0000, 0x000E_0000_0000_0000: 0x0038_0000_0000_0000, 0x000F_0000_0000_0000: 0x0038_0000_0000_0000, + 0x0010_0000_0000_0000: 0x0030_0000_0000_0000, 0x0011_0000_0000_0000: 0x0030_0000_0000_0000, 0x0012_0000_0000_0000: 0x0030_0000_0000_0000, 0x0013_0000_0000_0000: 0x0030_0000_0000_0000, + 0x0014_0000_0000_0000: 0x0030_0000_0000_0000, 0x0015_0000_0000_0000: 0x0030_0000_0000_0000, 0x0016_0000_0000_0000: 0x0030_0000_0000_0000, 0x0017_0000_0000_0000: 0x0030_0000_0000_0000, + 0x0018_0000_0000_0000: 0x0030_0000_0000_0000, 0x0019_0000_0000_0000: 0x0030_0000_0000_0000, 0x001A_0000_0000_0000: 0x0030_0000_0000_0000, 0x001B_0000_0000_0000: 0x0030_0000_0000_0000, + 0x001C_0000_0000_0000: 0x0030_0000_0000_0000, 0x001D_0000_0000_0000: 0x0030_0000_0000_0000, 0x001E_0000_0000_0000: 0x0030_0000_0000_0000, 0x001F_0000_0000_0000: 0x0030_0000_0000_0000, + 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x0021_0000_0000_0000: 0x0020_0000_0000_0000, 0x0022_0000_0000_0000: 0x0020_0000_0000_0000, 0x0023_0000_0000_0000: 0x0020_0000_0000_0000, + 0x0024_0000_0000_0000: 0x0020_0000_0000_0000, 0x0025_0000_0000_0000: 0x0020_0000_0000_0000, 0x0026_0000_0000_0000: 0x0020_0000_0000_0000, 0x0027_0000_0000_0000: 0x0020_0000_0000_0000, + 0x0028_0000_0000_0000: 0x0020_0000_0000_0000, 0x0029_0000_0000_0000: 0x0020_0000_0000_0000, 0x002A_0000_0000_0000: 0x0020_0000_0000_0000, 0x002B_0000_0000_0000: 0x0020_0000_0000_0000, + 0x002C_0000_0000_0000: 0x0020_0000_0000_0000, 0x002D_0000_0000_0000: 0x0020_0000_0000_0000, 0x002E_0000_0000_0000: 0x0020_0000_0000_0000, 0x002F_0000_0000_0000: 0x0020_0000_0000_0000, + 0x0030_0000_0000_0000: 0x0020_0000_0000_0000, 0x0031_0000_0000_0000: 0x0020_0000_0000_0000, 0x0032_0000_0000_0000: 0x0020_0000_0000_0000, 0x0033_0000_0000_0000: 0x0020_0000_0000_0000, + 0x0034_0000_0000_0000: 0x0020_0000_0000_0000, 0x0035_0000_0000_0000: 0x0020_0000_0000_0000, 0x0036_0000_0000_0000: 0x0020_0000_0000_0000, 0x0037_0000_0000_0000: 0x0020_0000_0000_0000, + 0x0038_0000_0000_0000: 0x0020_0000_0000_0000, 0x0039_0000_0000_0000: 0x0020_0000_0000_0000, 0x003A_0000_0000_0000: 0x0020_0000_0000_0000, 0x003B_0000_0000_0000: 0x0020_0000_0000_0000, + 0x003C_0000_0000_0000: 0x0020_0000_0000_0000, 0x003D_0000_0000_0000: 0x0020_0000_0000_0000, 0x003E_0000_0000_0000: 0x0020_0000_0000_0000, 0x003F_0000_0000_0000: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x007F_0000_0000_0000, 0x0001_0000_0000_0000: 0x007F_0000_0000_0000, 0x0002_0000_0000_0000: 0x007E_0000_0000_0000, 0x0003_0000_0000_0000: 0x007E_0000_0000_0000, + 0x0004_0000_0000_0000: 0x007C_0000_0000_0000, 0x0005_0000_0000_0000: 0x007C_0000_0000_0000, 0x0006_0000_0000_0000: 0x007C_0000_0000_0000, 0x0007_0000_0000_0000: 0x007C_0000_0000_0000, + 0x0008_0000_0000_0000: 0x0078_0000_0000_0000, 0x0009_0000_0000_0000: 0x0078_0000_0000_0000, 0x000A_0000_0000_0000: 0x0078_0000_0000_0000, 0x000B_0000_0000_0000: 0x0078_0000_0000_0000, + 0x000C_0000_0000_0000: 0x0078_0000_0000_0000, 0x000D_0000_0000_0000: 0x0078_0000_0000_0000, 0x000E_0000_0000_0000: 0x0078_0000_0000_0000, 0x000F_0000_0000_0000: 0x0078_0000_0000_0000, + 0x0010_0000_0000_0000: 0x0070_0000_0000_0000, 0x0011_0000_0000_0000: 0x0070_0000_0000_0000, 0x0012_0000_0000_0000: 0x0070_0000_0000_0000, 0x0013_0000_0000_0000: 0x0070_0000_0000_0000, + 0x0014_0000_0000_0000: 0x0070_0000_0000_0000, 0x0015_0000_0000_0000: 0x0070_0000_0000_0000, 0x0016_0000_0000_0000: 0x0070_0000_0000_0000, 0x0017_0000_0000_0000: 0x0070_0000_0000_0000, + 0x0018_0000_0000_0000: 0x0070_0000_0000_0000, 0x0019_0000_0000_0000: 0x0070_0000_0000_0000, 0x001A_0000_0000_0000: 0x0070_0000_0000_0000, 0x001B_0000_0000_0000: 0x0070_0000_0000_0000, + 0x001C_0000_0000_0000: 0x0070_0000_0000_0000, 0x001D_0000_0000_0000: 0x0070_0000_0000_0000, 0x001E_0000_0000_0000: 0x0070_0000_0000_0000, 0x001F_0000_0000_0000: 0x0070_0000_0000_0000, + 0x0020_0000_0000_0000: 0x0060_0000_0000_0000, 0x0021_0000_0000_0000: 0x0060_0000_0000_0000, 0x0022_0000_0000_0000: 0x0060_0000_0000_0000, 0x0023_0000_0000_0000: 0x0060_0000_0000_0000, + 0x0024_0000_0000_0000: 0x0060_0000_0000_0000, 0x0025_0000_0000_0000: 0x0060_0000_0000_0000, 0x0026_0000_0000_0000: 0x0060_0000_0000_0000, 0x0027_0000_0000_0000: 0x0060_0000_0000_0000, + 0x0028_0000_0000_0000: 0x0060_0000_0000_0000, 0x0029_0000_0000_0000: 0x0060_0000_0000_0000, 0x002A_0000_0000_0000: 0x0060_0000_0000_0000, 0x002B_0000_0000_0000: 0x0060_0000_0000_0000, + 0x002C_0000_0000_0000: 0x0060_0000_0000_0000, 0x002D_0000_0000_0000: 0x0060_0000_0000_0000, 0x002E_0000_0000_0000: 0x0060_0000_0000_0000, 0x002F_0000_0000_0000: 0x0060_0000_0000_0000, + 0x0030_0000_0000_0000: 0x0060_0000_0000_0000, 0x0031_0000_0000_0000: 0x0060_0000_0000_0000, 0x0032_0000_0000_0000: 0x0060_0000_0000_0000, 0x0033_0000_0000_0000: 0x0060_0000_0000_0000, + 0x0034_0000_0000_0000: 0x0060_0000_0000_0000, 0x0035_0000_0000_0000: 0x0060_0000_0000_0000, 0x0036_0000_0000_0000: 0x0060_0000_0000_0000, 0x0037_0000_0000_0000: 0x0060_0000_0000_0000, + 0x0038_0000_0000_0000: 0x0060_0000_0000_0000, 0x0039_0000_0000_0000: 0x0060_0000_0000_0000, 0x003A_0000_0000_0000: 0x0060_0000_0000_0000, 0x003B_0000_0000_0000: 0x0060_0000_0000_0000, + 0x003C_0000_0000_0000: 0x0060_0000_0000_0000, 0x003D_0000_0000_0000: 0x0060_0000_0000_0000, 0x003E_0000_0000_0000: 0x0060_0000_0000_0000, 0x003F_0000_0000_0000: 0x0060_0000_0000_0000, + 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x0041_0000_0000_0000: 0x0040_0000_0000_0000, 0x0042_0000_0000_0000: 0x0040_0000_0000_0000, 0x0043_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0044_0000_0000_0000: 0x0040_0000_0000_0000, 0x0045_0000_0000_0000: 0x0040_0000_0000_0000, 0x0046_0000_0000_0000: 0x0040_0000_0000_0000, 0x0047_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0048_0000_0000_0000: 0x0040_0000_0000_0000, 0x0049_0000_0000_0000: 0x0040_0000_0000_0000, 0x004A_0000_0000_0000: 0x0040_0000_0000_0000, 0x004B_0000_0000_0000: 0x0040_0000_0000_0000, + 0x004C_0000_0000_0000: 0x0040_0000_0000_0000, 0x004D_0000_0000_0000: 0x0040_0000_0000_0000, 0x004E_0000_0000_0000: 0x0040_0000_0000_0000, 0x004F_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0050_0000_0000_0000: 0x0040_0000_0000_0000, 0x0051_0000_0000_0000: 0x0040_0000_0000_0000, 0x0052_0000_0000_0000: 0x0040_0000_0000_0000, 0x0053_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0054_0000_0000_0000: 0x0040_0000_0000_0000, 0x0055_0000_0000_0000: 0x0040_0000_0000_0000, 0x0056_0000_0000_0000: 0x0040_0000_0000_0000, 0x0057_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0058_0000_0000_0000: 0x0040_0000_0000_0000, 0x0059_0000_0000_0000: 0x0040_0000_0000_0000, 0x005A_0000_0000_0000: 0x0040_0000_0000_0000, 0x005B_0000_0000_0000: 0x0040_0000_0000_0000, + 0x005C_0000_0000_0000: 0x0040_0000_0000_0000, 0x005D_0000_0000_0000: 0x0040_0000_0000_0000, 0x005E_0000_0000_0000: 0x0040_0000_0000_0000, 0x005F_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0060_0000_0000_0000: 0x0040_0000_0000_0000, 0x0061_0000_0000_0000: 0x0040_0000_0000_0000, 0x0062_0000_0000_0000: 0x0040_0000_0000_0000, 0x0063_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0064_0000_0000_0000: 0x0040_0000_0000_0000, 0x0065_0000_0000_0000: 0x0040_0000_0000_0000, 0x0066_0000_0000_0000: 0x0040_0000_0000_0000, 0x0067_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0068_0000_0000_0000: 0x0040_0000_0000_0000, 0x0069_0000_0000_0000: 0x0040_0000_0000_0000, 0x006A_0000_0000_0000: 0x0040_0000_0000_0000, 0x006B_0000_0000_0000: 0x0040_0000_0000_0000, + 0x006C_0000_0000_0000: 0x0040_0000_0000_0000, 0x006D_0000_0000_0000: 0x0040_0000_0000_0000, 0x006E_0000_0000_0000: 0x0040_0000_0000_0000, 0x006F_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0070_0000_0000_0000: 0x0040_0000_0000_0000, 0x0071_0000_0000_0000: 0x0040_0000_0000_0000, 0x0072_0000_0000_0000: 0x0040_0000_0000_0000, 0x0073_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0074_0000_0000_0000: 0x0040_0000_0000_0000, 0x0075_0000_0000_0000: 0x0040_0000_0000_0000, 0x0076_0000_0000_0000: 0x0040_0000_0000_0000, 0x0077_0000_0000_0000: 0x0040_0000_0000_0000, + 0x0078_0000_0000_0000: 0x0040_0000_0000_0000, 0x0079_0000_0000_0000: 0x0040_0000_0000_0000, 0x007A_0000_0000_0000: 0x0040_0000_0000_0000, 0x007B_0000_0000_0000: 0x0040_0000_0000_0000, + 0x007C_0000_0000_0000: 0x0040_0000_0000_0000, 0x007D_0000_0000_0000: 0x0040_0000_0000_0000, 0x007E_0000_0000_0000: 0x0040_0000_0000_0000, 0x007F_0000_0000_0000: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0100_0000_0000_0000, 0x0100_0000_0000_0000: 0x0100_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0300_0000_0000_0000, 0x0100_0000_0000_0000: 0x0300_0000_0000_0000, 0x0200_0000_0000_0000: 0x0200_0000_0000_0000, 0x0300_0000_0000_0000: 0x0200_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0700_0000_0000_0000, 0x0100_0000_0000_0000: 0x0700_0000_0000_0000, 0x0200_0000_0000_0000: 0x0600_0000_0000_0000, 0x0300_0000_0000_0000: 0x0600_0000_0000_0000, + 0x0400_0000_0000_0000: 0x0400_0000_0000_0000, 0x0500_0000_0000_0000: 0x0400_0000_0000_0000, 0x0600_0000_0000_0000: 0x0400_0000_0000_0000, 0x0700_0000_0000_0000: 0x0400_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0F00_0000_0000_0000, 0x0100_0000_0000_0000: 0x0F00_0000_0000_0000, 0x0200_0000_0000_0000: 0x0E00_0000_0000_0000, 0x0300_0000_0000_0000: 0x0E00_0000_0000_0000, + 0x0400_0000_0000_0000: 0x0C00_0000_0000_0000, 0x0500_0000_0000_0000: 0x0C00_0000_0000_0000, 0x0600_0000_0000_0000: 0x0C00_0000_0000_0000, 0x0700_0000_0000_0000: 0x0C00_0000_0000_0000, + 0x0800_0000_0000_0000: 0x0800_0000_0000_0000, 0x0900_0000_0000_0000: 0x0800_0000_0000_0000, 0x0A00_0000_0000_0000: 0x0800_0000_0000_0000, 0x0B00_0000_0000_0000: 0x0800_0000_0000_0000, + 0x0C00_0000_0000_0000: 0x0800_0000_0000_0000, 0x0D00_0000_0000_0000: 0x0800_0000_0000_0000, 0x0E00_0000_0000_0000: 0x0800_0000_0000_0000, 0x0F00_0000_0000_0000: 0x0800_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1F00_0000_0000_0000, 0x0100_0000_0000_0000: 0x1F00_0000_0000_0000, 0x0200_0000_0000_0000: 0x1E00_0000_0000_0000, 0x0300_0000_0000_0000: 0x1E00_0000_0000_0000, + 0x0400_0000_0000_0000: 0x1C00_0000_0000_0000, 0x0500_0000_0000_0000: 0x1C00_0000_0000_0000, 0x0600_0000_0000_0000: 0x1C00_0000_0000_0000, 0x0700_0000_0000_0000: 0x1C00_0000_0000_0000, + 0x0800_0000_0000_0000: 0x1800_0000_0000_0000, 0x0900_0000_0000_0000: 0x1800_0000_0000_0000, 0x0A00_0000_0000_0000: 0x1800_0000_0000_0000, 0x0B00_0000_0000_0000: 0x1800_0000_0000_0000, + 0x0C00_0000_0000_0000: 0x1800_0000_0000_0000, 0x0D00_0000_0000_0000: 0x1800_0000_0000_0000, 0x0E00_0000_0000_0000: 0x1800_0000_0000_0000, 0x0F00_0000_0000_0000: 0x1800_0000_0000_0000, + 0x1000_0000_0000_0000: 0x1000_0000_0000_0000, 0x1100_0000_0000_0000: 0x1000_0000_0000_0000, 0x1200_0000_0000_0000: 0x1000_0000_0000_0000, 0x1300_0000_0000_0000: 0x1000_0000_0000_0000, + 0x1400_0000_0000_0000: 0x1000_0000_0000_0000, 0x1500_0000_0000_0000: 0x1000_0000_0000_0000, 0x1600_0000_0000_0000: 0x1000_0000_0000_0000, 0x1700_0000_0000_0000: 0x1000_0000_0000_0000, + 0x1800_0000_0000_0000: 0x1000_0000_0000_0000, 0x1900_0000_0000_0000: 0x1000_0000_0000_0000, 0x1A00_0000_0000_0000: 0x1000_0000_0000_0000, 0x1B00_0000_0000_0000: 0x1000_0000_0000_0000, + 0x1C00_0000_0000_0000: 0x1000_0000_0000_0000, 0x1D00_0000_0000_0000: 0x1000_0000_0000_0000, 0x1E00_0000_0000_0000: 0x1000_0000_0000_0000, 0x1F00_0000_0000_0000: 0x1000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x3F00_0000_0000_0000, 0x0100_0000_0000_0000: 0x3F00_0000_0000_0000, 0x0200_0000_0000_0000: 0x3E00_0000_0000_0000, 0x0300_0000_0000_0000: 0x3E00_0000_0000_0000, + 0x0400_0000_0000_0000: 0x3C00_0000_0000_0000, 0x0500_0000_0000_0000: 0x3C00_0000_0000_0000, 0x0600_0000_0000_0000: 0x3C00_0000_0000_0000, 0x0700_0000_0000_0000: 0x3C00_0000_0000_0000, + 0x0800_0000_0000_0000: 0x3800_0000_0000_0000, 0x0900_0000_0000_0000: 0x3800_0000_0000_0000, 0x0A00_0000_0000_0000: 0x3800_0000_0000_0000, 0x0B00_0000_0000_0000: 0x3800_0000_0000_0000, + 0x0C00_0000_0000_0000: 0x3800_0000_0000_0000, 0x0D00_0000_0000_0000: 0x3800_0000_0000_0000, 0x0E00_0000_0000_0000: 0x3800_0000_0000_0000, 0x0F00_0000_0000_0000: 0x3800_0000_0000_0000, + 0x1000_0000_0000_0000: 0x3000_0000_0000_0000, 0x1100_0000_0000_0000: 0x3000_0000_0000_0000, 0x1200_0000_0000_0000: 0x3000_0000_0000_0000, 0x1300_0000_0000_0000: 0x3000_0000_0000_0000, + 0x1400_0000_0000_0000: 0x3000_0000_0000_0000, 0x1500_0000_0000_0000: 0x3000_0000_0000_0000, 0x1600_0000_0000_0000: 0x3000_0000_0000_0000, 0x1700_0000_0000_0000: 0x3000_0000_0000_0000, + 0x1800_0000_0000_0000: 0x3000_0000_0000_0000, 0x1900_0000_0000_0000: 0x3000_0000_0000_0000, 0x1A00_0000_0000_0000: 0x3000_0000_0000_0000, 0x1B00_0000_0000_0000: 0x3000_0000_0000_0000, + 0x1C00_0000_0000_0000: 0x3000_0000_0000_0000, 0x1D00_0000_0000_0000: 0x3000_0000_0000_0000, 0x1E00_0000_0000_0000: 0x3000_0000_0000_0000, 0x1F00_0000_0000_0000: 0x3000_0000_0000_0000, + 0x2000_0000_0000_0000: 0x2000_0000_0000_0000, 0x2100_0000_0000_0000: 0x2000_0000_0000_0000, 0x2200_0000_0000_0000: 0x2000_0000_0000_0000, 0x2300_0000_0000_0000: 0x2000_0000_0000_0000, + 0x2400_0000_0000_0000: 0x2000_0000_0000_0000, 0x2500_0000_0000_0000: 0x2000_0000_0000_0000, 0x2600_0000_0000_0000: 0x2000_0000_0000_0000, 0x2700_0000_0000_0000: 0x2000_0000_0000_0000, + 0x2800_0000_0000_0000: 0x2000_0000_0000_0000, 0x2900_0000_0000_0000: 0x2000_0000_0000_0000, 0x2A00_0000_0000_0000: 0x2000_0000_0000_0000, 0x2B00_0000_0000_0000: 0x2000_0000_0000_0000, + 0x2C00_0000_0000_0000: 0x2000_0000_0000_0000, 0x2D00_0000_0000_0000: 0x2000_0000_0000_0000, 0x2E00_0000_0000_0000: 0x2000_0000_0000_0000, 0x2F00_0000_0000_0000: 0x2000_0000_0000_0000, + 0x3000_0000_0000_0000: 0x2000_0000_0000_0000, 0x3100_0000_0000_0000: 0x2000_0000_0000_0000, 0x3200_0000_0000_0000: 0x2000_0000_0000_0000, 0x3300_0000_0000_0000: 0x2000_0000_0000_0000, + 0x3400_0000_0000_0000: 0x2000_0000_0000_0000, 0x3500_0000_0000_0000: 0x2000_0000_0000_0000, 0x3600_0000_0000_0000: 0x2000_0000_0000_0000, 0x3700_0000_0000_0000: 0x2000_0000_0000_0000, + 0x3800_0000_0000_0000: 0x2000_0000_0000_0000, 0x3900_0000_0000_0000: 0x2000_0000_0000_0000, 0x3A00_0000_0000_0000: 0x2000_0000_0000_0000, 0x3B00_0000_0000_0000: 0x2000_0000_0000_0000, + 0x3C00_0000_0000_0000: 0x2000_0000_0000_0000, 0x3D00_0000_0000_0000: 0x2000_0000_0000_0000, 0x3E00_0000_0000_0000: 0x2000_0000_0000_0000, 0x3F00_0000_0000_0000: 0x2000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x7F00_0000_0000_0000, 0x0100_0000_0000_0000: 0x7F00_0000_0000_0000, 0x0200_0000_0000_0000: 0x7E00_0000_0000_0000, 0x0300_0000_0000_0000: 0x7E00_0000_0000_0000, + 0x0400_0000_0000_0000: 0x7C00_0000_0000_0000, 0x0500_0000_0000_0000: 0x7C00_0000_0000_0000, 0x0600_0000_0000_0000: 0x7C00_0000_0000_0000, 0x0700_0000_0000_0000: 0x7C00_0000_0000_0000, + 0x0800_0000_0000_0000: 0x7800_0000_0000_0000, 0x0900_0000_0000_0000: 0x7800_0000_0000_0000, 0x0A00_0000_0000_0000: 0x7800_0000_0000_0000, 0x0B00_0000_0000_0000: 0x7800_0000_0000_0000, + 0x0C00_0000_0000_0000: 0x7800_0000_0000_0000, 0x0D00_0000_0000_0000: 0x7800_0000_0000_0000, 0x0E00_0000_0000_0000: 0x7800_0000_0000_0000, 0x0F00_0000_0000_0000: 0x7800_0000_0000_0000, + 0x1000_0000_0000_0000: 0x7000_0000_0000_0000, 0x1100_0000_0000_0000: 0x7000_0000_0000_0000, 0x1200_0000_0000_0000: 0x7000_0000_0000_0000, 0x1300_0000_0000_0000: 0x7000_0000_0000_0000, + 0x1400_0000_0000_0000: 0x7000_0000_0000_0000, 0x1500_0000_0000_0000: 0x7000_0000_0000_0000, 0x1600_0000_0000_0000: 0x7000_0000_0000_0000, 0x1700_0000_0000_0000: 0x7000_0000_0000_0000, + 0x1800_0000_0000_0000: 0x7000_0000_0000_0000, 0x1900_0000_0000_0000: 0x7000_0000_0000_0000, 0x1A00_0000_0000_0000: 0x7000_0000_0000_0000, 0x1B00_0000_0000_0000: 0x7000_0000_0000_0000, + 0x1C00_0000_0000_0000: 0x7000_0000_0000_0000, 0x1D00_0000_0000_0000: 0x7000_0000_0000_0000, 0x1E00_0000_0000_0000: 0x7000_0000_0000_0000, 0x1F00_0000_0000_0000: 0x7000_0000_0000_0000, + 0x2000_0000_0000_0000: 0x6000_0000_0000_0000, 0x2100_0000_0000_0000: 0x6000_0000_0000_0000, 0x2200_0000_0000_0000: 0x6000_0000_0000_0000, 0x2300_0000_0000_0000: 0x6000_0000_0000_0000, + 0x2400_0000_0000_0000: 0x6000_0000_0000_0000, 0x2500_0000_0000_0000: 0x6000_0000_0000_0000, 0x2600_0000_0000_0000: 0x6000_0000_0000_0000, 0x2700_0000_0000_0000: 0x6000_0000_0000_0000, + 0x2800_0000_0000_0000: 0x6000_0000_0000_0000, 0x2900_0000_0000_0000: 0x6000_0000_0000_0000, 0x2A00_0000_0000_0000: 0x6000_0000_0000_0000, 0x2B00_0000_0000_0000: 0x6000_0000_0000_0000, + 0x2C00_0000_0000_0000: 0x6000_0000_0000_0000, 0x2D00_0000_0000_0000: 0x6000_0000_0000_0000, 0x2E00_0000_0000_0000: 0x6000_0000_0000_0000, 0x2F00_0000_0000_0000: 0x6000_0000_0000_0000, + 0x3000_0000_0000_0000: 0x6000_0000_0000_0000, 0x3100_0000_0000_0000: 0x6000_0000_0000_0000, 0x3200_0000_0000_0000: 0x6000_0000_0000_0000, 0x3300_0000_0000_0000: 0x6000_0000_0000_0000, + 0x3400_0000_0000_0000: 0x6000_0000_0000_0000, 0x3500_0000_0000_0000: 0x6000_0000_0000_0000, 0x3600_0000_0000_0000: 0x6000_0000_0000_0000, 0x3700_0000_0000_0000: 0x6000_0000_0000_0000, + 0x3800_0000_0000_0000: 0x6000_0000_0000_0000, 0x3900_0000_0000_0000: 0x6000_0000_0000_0000, 0x3A00_0000_0000_0000: 0x6000_0000_0000_0000, 0x3B00_0000_0000_0000: 0x6000_0000_0000_0000, + 0x3C00_0000_0000_0000: 0x6000_0000_0000_0000, 0x3D00_0000_0000_0000: 0x6000_0000_0000_0000, 0x3E00_0000_0000_0000: 0x6000_0000_0000_0000, 0x3F00_0000_0000_0000: 0x6000_0000_0000_0000, + 0x4000_0000_0000_0000: 0x4000_0000_0000_0000, 0x4100_0000_0000_0000: 0x4000_0000_0000_0000, 0x4200_0000_0000_0000: 0x4000_0000_0000_0000, 0x4300_0000_0000_0000: 0x4000_0000_0000_0000, + 0x4400_0000_0000_0000: 0x4000_0000_0000_0000, 0x4500_0000_0000_0000: 0x4000_0000_0000_0000, 0x4600_0000_0000_0000: 0x4000_0000_0000_0000, 0x4700_0000_0000_0000: 0x4000_0000_0000_0000, + 0x4800_0000_0000_0000: 0x4000_0000_0000_0000, 0x4900_0000_0000_0000: 0x4000_0000_0000_0000, 0x4A00_0000_0000_0000: 0x4000_0000_0000_0000, 0x4B00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x4C00_0000_0000_0000: 0x4000_0000_0000_0000, 0x4D00_0000_0000_0000: 0x4000_0000_0000_0000, 0x4E00_0000_0000_0000: 0x4000_0000_0000_0000, 0x4F00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x5000_0000_0000_0000: 0x4000_0000_0000_0000, 0x5100_0000_0000_0000: 0x4000_0000_0000_0000, 0x5200_0000_0000_0000: 0x4000_0000_0000_0000, 0x5300_0000_0000_0000: 0x4000_0000_0000_0000, + 0x5400_0000_0000_0000: 0x4000_0000_0000_0000, 0x5500_0000_0000_0000: 0x4000_0000_0000_0000, 0x5600_0000_0000_0000: 0x4000_0000_0000_0000, 0x5700_0000_0000_0000: 0x4000_0000_0000_0000, + 0x5800_0000_0000_0000: 0x4000_0000_0000_0000, 0x5900_0000_0000_0000: 0x4000_0000_0000_0000, 0x5A00_0000_0000_0000: 0x4000_0000_0000_0000, 0x5B00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x5C00_0000_0000_0000: 0x4000_0000_0000_0000, 0x5D00_0000_0000_0000: 0x4000_0000_0000_0000, 0x5E00_0000_0000_0000: 0x4000_0000_0000_0000, 0x5F00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x6000_0000_0000_0000: 0x4000_0000_0000_0000, 0x6100_0000_0000_0000: 0x4000_0000_0000_0000, 0x6200_0000_0000_0000: 0x4000_0000_0000_0000, 0x6300_0000_0000_0000: 0x4000_0000_0000_0000, + 0x6400_0000_0000_0000: 0x4000_0000_0000_0000, 0x6500_0000_0000_0000: 0x4000_0000_0000_0000, 0x6600_0000_0000_0000: 0x4000_0000_0000_0000, 0x6700_0000_0000_0000: 0x4000_0000_0000_0000, + 0x6800_0000_0000_0000: 0x4000_0000_0000_0000, 0x6900_0000_0000_0000: 0x4000_0000_0000_0000, 0x6A00_0000_0000_0000: 0x4000_0000_0000_0000, 0x6B00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x6C00_0000_0000_0000: 0x4000_0000_0000_0000, 0x6D00_0000_0000_0000: 0x4000_0000_0000_0000, 0x6E00_0000_0000_0000: 0x4000_0000_0000_0000, 0x6F00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x7000_0000_0000_0000: 0x4000_0000_0000_0000, 0x7100_0000_0000_0000: 0x4000_0000_0000_0000, 0x7200_0000_0000_0000: 0x4000_0000_0000_0000, 0x7300_0000_0000_0000: 0x4000_0000_0000_0000, + 0x7400_0000_0000_0000: 0x4000_0000_0000_0000, 0x7500_0000_0000_0000: 0x4000_0000_0000_0000, 0x7600_0000_0000_0000: 0x4000_0000_0000_0000, 0x7700_0000_0000_0000: 0x4000_0000_0000_0000, + 0x7800_0000_0000_0000: 0x4000_0000_0000_0000, 0x7900_0000_0000_0000: 0x4000_0000_0000_0000, 0x7A00_0000_0000_0000: 0x4000_0000_0000_0000, 0x7B00_0000_0000_0000: 0x4000_0000_0000_0000, + 0x7C00_0000_0000_0000: 0x4000_0000_0000_0000, 0x7D00_0000_0000_0000: 0x4000_0000_0000_0000, 0x7E00_0000_0000_0000: 0x4000_0000_0000_0000, 0x7F00_0000_0000_0000: 0x4000_0000_0000_0000, + }, +) +U_MASK = ( + { + 0x0000_0000_0000_0000: 0x0101_0101_0101_0100, 0x0000_0000_0000_0100: 0x0000_0000_0000_0100, 0x0000_0000_0001_0000: 0x0000_0000_0001_0100, 0x0000_0000_0001_0100: 0x0000_0000_0000_0100, + 0x0000_0000_0100_0000: 0x0000_0000_0101_0100, 0x0000_0000_0100_0100: 0x0000_0000_0000_0100, 0x0000_0000_0101_0000: 0x0000_0000_0001_0100, 0x0000_0000_0101_0100: 0x0000_0000_0000_0100, + 0x0000_0001_0000_0000: 0x0000_0001_0101_0100, 0x0000_0001_0000_0100: 0x0000_0000_0000_0100, 0x0000_0001_0001_0000: 0x0000_0000_0001_0100, 0x0000_0001_0001_0100: 0x0000_0000_0000_0100, + 0x0000_0001_0100_0000: 0x0000_0000_0101_0100, 0x0000_0001_0100_0100: 0x0000_0000_0000_0100, 0x0000_0001_0101_0000: 0x0000_0000_0001_0100, 0x0000_0001_0101_0100: 0x0000_0000_0000_0100, + 0x0000_0100_0000_0000: 0x0000_0101_0101_0100, 0x0000_0100_0000_0100: 0x0000_0000_0000_0100, 0x0000_0100_0001_0000: 0x0000_0000_0001_0100, 0x0000_0100_0001_0100: 0x0000_0000_0000_0100, + 0x0000_0100_0100_0000: 0x0000_0000_0101_0100, 0x0000_0100_0100_0100: 0x0000_0000_0000_0100, 0x0000_0100_0101_0000: 0x0000_0000_0001_0100, 0x0000_0100_0101_0100: 0x0000_0000_0000_0100, + 0x0000_0101_0000_0000: 0x0000_0001_0101_0100, 0x0000_0101_0000_0100: 0x0000_0000_0000_0100, 0x0000_0101_0001_0000: 0x0000_0000_0001_0100, 0x0000_0101_0001_0100: 0x0000_0000_0000_0100, + 0x0000_0101_0100_0000: 0x0000_0000_0101_0100, 0x0000_0101_0100_0100: 0x0000_0000_0000_0100, 0x0000_0101_0101_0000: 0x0000_0000_0001_0100, 0x0000_0101_0101_0100: 0x0000_0000_0000_0100, + 0x0001_0000_0000_0000: 0x0001_0101_0101_0100, 0x0001_0000_0000_0100: 0x0000_0000_0000_0100, 0x0001_0000_0001_0000: 0x0000_0000_0001_0100, 0x0001_0000_0001_0100: 0x0000_0000_0000_0100, + 0x0001_0000_0100_0000: 0x0000_0000_0101_0100, 0x0001_0000_0100_0100: 0x0000_0000_0000_0100, 0x0001_0000_0101_0000: 0x0000_0000_0001_0100, 0x0001_0000_0101_0100: 0x0000_0000_0000_0100, + 0x0001_0001_0000_0000: 0x0000_0001_0101_0100, 0x0001_0001_0000_0100: 0x0000_0000_0000_0100, 0x0001_0001_0001_0000: 0x0000_0000_0001_0100, 0x0001_0001_0001_0100: 0x0000_0000_0000_0100, + 0x0001_0001_0100_0000: 0x0000_0000_0101_0100, 0x0001_0001_0100_0100: 0x0000_0000_0000_0100, 0x0001_0001_0101_0000: 0x0000_0000_0001_0100, 0x0001_0001_0101_0100: 0x0000_0000_0000_0100, + 0x0001_0100_0000_0000: 0x0000_0101_0101_0100, 0x0001_0100_0000_0100: 0x0000_0000_0000_0100, 0x0001_0100_0001_0000: 0x0000_0000_0001_0100, 0x0001_0100_0001_0100: 0x0000_0000_0000_0100, + 0x0001_0100_0100_0000: 0x0000_0000_0101_0100, 0x0001_0100_0100_0100: 0x0000_0000_0000_0100, 0x0001_0100_0101_0000: 0x0000_0000_0001_0100, 0x0001_0100_0101_0100: 0x0000_0000_0000_0100, + 0x0001_0101_0000_0000: 0x0000_0001_0101_0100, 0x0001_0101_0000_0100: 0x0000_0000_0000_0100, 0x0001_0101_0001_0000: 0x0000_0000_0001_0100, 0x0001_0101_0001_0100: 0x0000_0000_0000_0100, + 0x0001_0101_0100_0000: 0x0000_0000_0101_0100, 0x0001_0101_0100_0100: 0x0000_0000_0000_0100, 0x0001_0101_0101_0000: 0x0000_0000_0001_0100, 0x0001_0101_0101_0100: 0x0000_0000_0000_0100, + 0x0100_0000_0000_0000: 0x0101_0101_0101_0100, 0x0100_0000_0000_0100: 0x0000_0000_0000_0100, 0x0100_0000_0001_0000: 0x0000_0000_0001_0100, 0x0100_0000_0001_0100: 0x0000_0000_0000_0100, + 0x0100_0000_0100_0000: 0x0000_0000_0101_0100, 0x0100_0000_0100_0100: 0x0000_0000_0000_0100, 0x0100_0000_0101_0000: 0x0000_0000_0001_0100, 0x0100_0000_0101_0100: 0x0000_0000_0000_0100, + 0x0100_0001_0000_0000: 0x0000_0001_0101_0100, 0x0100_0001_0000_0100: 0x0000_0000_0000_0100, 0x0100_0001_0001_0000: 0x0000_0000_0001_0100, 0x0100_0001_0001_0100: 0x0000_0000_0000_0100, + 0x0100_0001_0100_0000: 0x0000_0000_0101_0100, 0x0100_0001_0100_0100: 0x0000_0000_0000_0100, 0x0100_0001_0101_0000: 0x0000_0000_0001_0100, 0x0100_0001_0101_0100: 0x0000_0000_0000_0100, + 0x0100_0100_0000_0000: 0x0000_0101_0101_0100, 0x0100_0100_0000_0100: 0x0000_0000_0000_0100, 0x0100_0100_0001_0000: 0x0000_0000_0001_0100, 0x0100_0100_0001_0100: 0x0000_0000_0000_0100, + 0x0100_0100_0100_0000: 0x0000_0000_0101_0100, 0x0100_0100_0100_0100: 0x0000_0000_0000_0100, 0x0100_0100_0101_0000: 0x0000_0000_0001_0100, 0x0100_0100_0101_0100: 0x0000_0000_0000_0100, + 0x0100_0101_0000_0000: 0x0000_0001_0101_0100, 0x0100_0101_0000_0100: 0x0000_0000_0000_0100, 0x0100_0101_0001_0000: 0x0000_0000_0001_0100, 0x0100_0101_0001_0100: 0x0000_0000_0000_0100, + 0x0100_0101_0100_0000: 0x0000_0000_0101_0100, 0x0100_0101_0100_0100: 0x0000_0000_0000_0100, 0x0100_0101_0101_0000: 0x0000_0000_0001_0100, 0x0100_0101_0101_0100: 0x0000_0000_0000_0100, + 0x0101_0000_0000_0000: 0x0001_0101_0101_0100, 0x0101_0000_0000_0100: 0x0000_0000_0000_0100, 0x0101_0000_0001_0000: 0x0000_0000_0001_0100, 0x0101_0000_0001_0100: 0x0000_0000_0000_0100, + 0x0101_0000_0100_0000: 0x0000_0000_0101_0100, 0x0101_0000_0100_0100: 0x0000_0000_0000_0100, 0x0101_0000_0101_0000: 0x0000_0000_0001_0100, 0x0101_0000_0101_0100: 0x0000_0000_0000_0100, + 0x0101_0001_0000_0000: 0x0000_0001_0101_0100, 0x0101_0001_0000_0100: 0x0000_0000_0000_0100, 0x0101_0001_0001_0000: 0x0000_0000_0001_0100, 0x0101_0001_0001_0100: 0x0000_0000_0000_0100, + 0x0101_0001_0100_0000: 0x0000_0000_0101_0100, 0x0101_0001_0100_0100: 0x0000_0000_0000_0100, 0x0101_0001_0101_0000: 0x0000_0000_0001_0100, 0x0101_0001_0101_0100: 0x0000_0000_0000_0100, + 0x0101_0100_0000_0000: 0x0000_0101_0101_0100, 0x0101_0100_0000_0100: 0x0000_0000_0000_0100, 0x0101_0100_0001_0000: 0x0000_0000_0001_0100, 0x0101_0100_0001_0100: 0x0000_0000_0000_0100, + 0x0101_0100_0100_0000: 0x0000_0000_0101_0100, 0x0101_0100_0100_0100: 0x0000_0000_0000_0100, 0x0101_0100_0101_0000: 0x0000_0000_0001_0100, 0x0101_0100_0101_0100: 0x0000_0000_0000_0100, + 0x0101_0101_0000_0000: 0x0000_0001_0101_0100, 0x0101_0101_0000_0100: 0x0000_0000_0000_0100, 0x0101_0101_0001_0000: 0x0000_0000_0001_0100, 0x0101_0101_0001_0100: 0x0000_0000_0000_0100, + 0x0101_0101_0100_0000: 0x0000_0000_0101_0100, 0x0101_0101_0100_0100: 0x0000_0000_0000_0100, 0x0101_0101_0101_0000: 0x0000_0000_0001_0100, 0x0101_0101_0101_0100: 0x0000_0000_0000_0100, + }, + { + 0x0000_0000_0000_0000: 0x0202_0202_0202_0200, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0002_0000: 0x0000_0000_0002_0200, 0x0000_0000_0002_0200: 0x0000_0000_0000_0200, + 0x0000_0000_0200_0000: 0x0000_0000_0202_0200, 0x0000_0000_0200_0200: 0x0000_0000_0000_0200, 0x0000_0000_0202_0000: 0x0000_0000_0002_0200, 0x0000_0000_0202_0200: 0x0000_0000_0000_0200, + 0x0000_0002_0000_0000: 0x0000_0002_0202_0200, 0x0000_0002_0000_0200: 0x0000_0000_0000_0200, 0x0000_0002_0002_0000: 0x0000_0000_0002_0200, 0x0000_0002_0002_0200: 0x0000_0000_0000_0200, + 0x0000_0002_0200_0000: 0x0000_0000_0202_0200, 0x0000_0002_0200_0200: 0x0000_0000_0000_0200, 0x0000_0002_0202_0000: 0x0000_0000_0002_0200, 0x0000_0002_0202_0200: 0x0000_0000_0000_0200, + 0x0000_0200_0000_0000: 0x0000_0202_0202_0200, 0x0000_0200_0000_0200: 0x0000_0000_0000_0200, 0x0000_0200_0002_0000: 0x0000_0000_0002_0200, 0x0000_0200_0002_0200: 0x0000_0000_0000_0200, + 0x0000_0200_0200_0000: 0x0000_0000_0202_0200, 0x0000_0200_0200_0200: 0x0000_0000_0000_0200, 0x0000_0200_0202_0000: 0x0000_0000_0002_0200, 0x0000_0200_0202_0200: 0x0000_0000_0000_0200, + 0x0000_0202_0000_0000: 0x0000_0002_0202_0200, 0x0000_0202_0000_0200: 0x0000_0000_0000_0200, 0x0000_0202_0002_0000: 0x0000_0000_0002_0200, 0x0000_0202_0002_0200: 0x0000_0000_0000_0200, + 0x0000_0202_0200_0000: 0x0000_0000_0202_0200, 0x0000_0202_0200_0200: 0x0000_0000_0000_0200, 0x0000_0202_0202_0000: 0x0000_0000_0002_0200, 0x0000_0202_0202_0200: 0x0000_0000_0000_0200, + 0x0002_0000_0000_0000: 0x0002_0202_0202_0200, 0x0002_0000_0000_0200: 0x0000_0000_0000_0200, 0x0002_0000_0002_0000: 0x0000_0000_0002_0200, 0x0002_0000_0002_0200: 0x0000_0000_0000_0200, + 0x0002_0000_0200_0000: 0x0000_0000_0202_0200, 0x0002_0000_0200_0200: 0x0000_0000_0000_0200, 0x0002_0000_0202_0000: 0x0000_0000_0002_0200, 0x0002_0000_0202_0200: 0x0000_0000_0000_0200, + 0x0002_0002_0000_0000: 0x0000_0002_0202_0200, 0x0002_0002_0000_0200: 0x0000_0000_0000_0200, 0x0002_0002_0002_0000: 0x0000_0000_0002_0200, 0x0002_0002_0002_0200: 0x0000_0000_0000_0200, + 0x0002_0002_0200_0000: 0x0000_0000_0202_0200, 0x0002_0002_0200_0200: 0x0000_0000_0000_0200, 0x0002_0002_0202_0000: 0x0000_0000_0002_0200, 0x0002_0002_0202_0200: 0x0000_0000_0000_0200, + 0x0002_0200_0000_0000: 0x0000_0202_0202_0200, 0x0002_0200_0000_0200: 0x0000_0000_0000_0200, 0x0002_0200_0002_0000: 0x0000_0000_0002_0200, 0x0002_0200_0002_0200: 0x0000_0000_0000_0200, + 0x0002_0200_0200_0000: 0x0000_0000_0202_0200, 0x0002_0200_0200_0200: 0x0000_0000_0000_0200, 0x0002_0200_0202_0000: 0x0000_0000_0002_0200, 0x0002_0200_0202_0200: 0x0000_0000_0000_0200, + 0x0002_0202_0000_0000: 0x0000_0002_0202_0200, 0x0002_0202_0000_0200: 0x0000_0000_0000_0200, 0x0002_0202_0002_0000: 0x0000_0000_0002_0200, 0x0002_0202_0002_0200: 0x0000_0000_0000_0200, + 0x0002_0202_0200_0000: 0x0000_0000_0202_0200, 0x0002_0202_0200_0200: 0x0000_0000_0000_0200, 0x0002_0202_0202_0000: 0x0000_0000_0002_0200, 0x0002_0202_0202_0200: 0x0000_0000_0000_0200, + 0x0200_0000_0000_0000: 0x0202_0202_0202_0200, 0x0200_0000_0000_0200: 0x0000_0000_0000_0200, 0x0200_0000_0002_0000: 0x0000_0000_0002_0200, 0x0200_0000_0002_0200: 0x0000_0000_0000_0200, + 0x0200_0000_0200_0000: 0x0000_0000_0202_0200, 0x0200_0000_0200_0200: 0x0000_0000_0000_0200, 0x0200_0000_0202_0000: 0x0000_0000_0002_0200, 0x0200_0000_0202_0200: 0x0000_0000_0000_0200, + 0x0200_0002_0000_0000: 0x0000_0002_0202_0200, 0x0200_0002_0000_0200: 0x0000_0000_0000_0200, 0x0200_0002_0002_0000: 0x0000_0000_0002_0200, 0x0200_0002_0002_0200: 0x0000_0000_0000_0200, + 0x0200_0002_0200_0000: 0x0000_0000_0202_0200, 0x0200_0002_0200_0200: 0x0000_0000_0000_0200, 0x0200_0002_0202_0000: 0x0000_0000_0002_0200, 0x0200_0002_0202_0200: 0x0000_0000_0000_0200, + 0x0200_0200_0000_0000: 0x0000_0202_0202_0200, 0x0200_0200_0000_0200: 0x0000_0000_0000_0200, 0x0200_0200_0002_0000: 0x0000_0000_0002_0200, 0x0200_0200_0002_0200: 0x0000_0000_0000_0200, + 0x0200_0200_0200_0000: 0x0000_0000_0202_0200, 0x0200_0200_0200_0200: 0x0000_0000_0000_0200, 0x0200_0200_0202_0000: 0x0000_0000_0002_0200, 0x0200_0200_0202_0200: 0x0000_0000_0000_0200, + 0x0200_0202_0000_0000: 0x0000_0002_0202_0200, 0x0200_0202_0000_0200: 0x0000_0000_0000_0200, 0x0200_0202_0002_0000: 0x0000_0000_0002_0200, 0x0200_0202_0002_0200: 0x0000_0000_0000_0200, + 0x0200_0202_0200_0000: 0x0000_0000_0202_0200, 0x0200_0202_0200_0200: 0x0000_0000_0000_0200, 0x0200_0202_0202_0000: 0x0000_0000_0002_0200, 0x0200_0202_0202_0200: 0x0000_0000_0000_0200, + 0x0202_0000_0000_0000: 0x0002_0202_0202_0200, 0x0202_0000_0000_0200: 0x0000_0000_0000_0200, 0x0202_0000_0002_0000: 0x0000_0000_0002_0200, 0x0202_0000_0002_0200: 0x0000_0000_0000_0200, + 0x0202_0000_0200_0000: 0x0000_0000_0202_0200, 0x0202_0000_0200_0200: 0x0000_0000_0000_0200, 0x0202_0000_0202_0000: 0x0000_0000_0002_0200, 0x0202_0000_0202_0200: 0x0000_0000_0000_0200, + 0x0202_0002_0000_0000: 0x0000_0002_0202_0200, 0x0202_0002_0000_0200: 0x0000_0000_0000_0200, 0x0202_0002_0002_0000: 0x0000_0000_0002_0200, 0x0202_0002_0002_0200: 0x0000_0000_0000_0200, + 0x0202_0002_0200_0000: 0x0000_0000_0202_0200, 0x0202_0002_0200_0200: 0x0000_0000_0000_0200, 0x0202_0002_0202_0000: 0x0000_0000_0002_0200, 0x0202_0002_0202_0200: 0x0000_0000_0000_0200, + 0x0202_0200_0000_0000: 0x0000_0202_0202_0200, 0x0202_0200_0000_0200: 0x0000_0000_0000_0200, 0x0202_0200_0002_0000: 0x0000_0000_0002_0200, 0x0202_0200_0002_0200: 0x0000_0000_0000_0200, + 0x0202_0200_0200_0000: 0x0000_0000_0202_0200, 0x0202_0200_0200_0200: 0x0000_0000_0000_0200, 0x0202_0200_0202_0000: 0x0000_0000_0002_0200, 0x0202_0200_0202_0200: 0x0000_0000_0000_0200, + 0x0202_0202_0000_0000: 0x0000_0002_0202_0200, 0x0202_0202_0000_0200: 0x0000_0000_0000_0200, 0x0202_0202_0002_0000: 0x0000_0000_0002_0200, 0x0202_0202_0002_0200: 0x0000_0000_0000_0200, + 0x0202_0202_0200_0000: 0x0000_0000_0202_0200, 0x0202_0202_0200_0200: 0x0000_0000_0000_0200, 0x0202_0202_0202_0000: 0x0000_0000_0002_0200, 0x0202_0202_0202_0200: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0404_0404_0404_0400, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0004_0000: 0x0000_0000_0004_0400, 0x0000_0000_0004_0400: 0x0000_0000_0000_0400, + 0x0000_0000_0400_0000: 0x0000_0000_0404_0400, 0x0000_0000_0400_0400: 0x0000_0000_0000_0400, 0x0000_0000_0404_0000: 0x0000_0000_0004_0400, 0x0000_0000_0404_0400: 0x0000_0000_0000_0400, + 0x0000_0004_0000_0000: 0x0000_0004_0404_0400, 0x0000_0004_0000_0400: 0x0000_0000_0000_0400, 0x0000_0004_0004_0000: 0x0000_0000_0004_0400, 0x0000_0004_0004_0400: 0x0000_0000_0000_0400, + 0x0000_0004_0400_0000: 0x0000_0000_0404_0400, 0x0000_0004_0400_0400: 0x0000_0000_0000_0400, 0x0000_0004_0404_0000: 0x0000_0000_0004_0400, 0x0000_0004_0404_0400: 0x0000_0000_0000_0400, + 0x0000_0400_0000_0000: 0x0000_0404_0404_0400, 0x0000_0400_0000_0400: 0x0000_0000_0000_0400, 0x0000_0400_0004_0000: 0x0000_0000_0004_0400, 0x0000_0400_0004_0400: 0x0000_0000_0000_0400, + 0x0000_0400_0400_0000: 0x0000_0000_0404_0400, 0x0000_0400_0400_0400: 0x0000_0000_0000_0400, 0x0000_0400_0404_0000: 0x0000_0000_0004_0400, 0x0000_0400_0404_0400: 0x0000_0000_0000_0400, + 0x0000_0404_0000_0000: 0x0000_0004_0404_0400, 0x0000_0404_0000_0400: 0x0000_0000_0000_0400, 0x0000_0404_0004_0000: 0x0000_0000_0004_0400, 0x0000_0404_0004_0400: 0x0000_0000_0000_0400, + 0x0000_0404_0400_0000: 0x0000_0000_0404_0400, 0x0000_0404_0400_0400: 0x0000_0000_0000_0400, 0x0000_0404_0404_0000: 0x0000_0000_0004_0400, 0x0000_0404_0404_0400: 0x0000_0000_0000_0400, + 0x0004_0000_0000_0000: 0x0004_0404_0404_0400, 0x0004_0000_0000_0400: 0x0000_0000_0000_0400, 0x0004_0000_0004_0000: 0x0000_0000_0004_0400, 0x0004_0000_0004_0400: 0x0000_0000_0000_0400, + 0x0004_0000_0400_0000: 0x0000_0000_0404_0400, 0x0004_0000_0400_0400: 0x0000_0000_0000_0400, 0x0004_0000_0404_0000: 0x0000_0000_0004_0400, 0x0004_0000_0404_0400: 0x0000_0000_0000_0400, + 0x0004_0004_0000_0000: 0x0000_0004_0404_0400, 0x0004_0004_0000_0400: 0x0000_0000_0000_0400, 0x0004_0004_0004_0000: 0x0000_0000_0004_0400, 0x0004_0004_0004_0400: 0x0000_0000_0000_0400, + 0x0004_0004_0400_0000: 0x0000_0000_0404_0400, 0x0004_0004_0400_0400: 0x0000_0000_0000_0400, 0x0004_0004_0404_0000: 0x0000_0000_0004_0400, 0x0004_0004_0404_0400: 0x0000_0000_0000_0400, + 0x0004_0400_0000_0000: 0x0000_0404_0404_0400, 0x0004_0400_0000_0400: 0x0000_0000_0000_0400, 0x0004_0400_0004_0000: 0x0000_0000_0004_0400, 0x0004_0400_0004_0400: 0x0000_0000_0000_0400, + 0x0004_0400_0400_0000: 0x0000_0000_0404_0400, 0x0004_0400_0400_0400: 0x0000_0000_0000_0400, 0x0004_0400_0404_0000: 0x0000_0000_0004_0400, 0x0004_0400_0404_0400: 0x0000_0000_0000_0400, + 0x0004_0404_0000_0000: 0x0000_0004_0404_0400, 0x0004_0404_0000_0400: 0x0000_0000_0000_0400, 0x0004_0404_0004_0000: 0x0000_0000_0004_0400, 0x0004_0404_0004_0400: 0x0000_0000_0000_0400, + 0x0004_0404_0400_0000: 0x0000_0000_0404_0400, 0x0004_0404_0400_0400: 0x0000_0000_0000_0400, 0x0004_0404_0404_0000: 0x0000_0000_0004_0400, 0x0004_0404_0404_0400: 0x0000_0000_0000_0400, + 0x0400_0000_0000_0000: 0x0404_0404_0404_0400, 0x0400_0000_0000_0400: 0x0000_0000_0000_0400, 0x0400_0000_0004_0000: 0x0000_0000_0004_0400, 0x0400_0000_0004_0400: 0x0000_0000_0000_0400, + 0x0400_0000_0400_0000: 0x0000_0000_0404_0400, 0x0400_0000_0400_0400: 0x0000_0000_0000_0400, 0x0400_0000_0404_0000: 0x0000_0000_0004_0400, 0x0400_0000_0404_0400: 0x0000_0000_0000_0400, + 0x0400_0004_0000_0000: 0x0000_0004_0404_0400, 0x0400_0004_0000_0400: 0x0000_0000_0000_0400, 0x0400_0004_0004_0000: 0x0000_0000_0004_0400, 0x0400_0004_0004_0400: 0x0000_0000_0000_0400, + 0x0400_0004_0400_0000: 0x0000_0000_0404_0400, 0x0400_0004_0400_0400: 0x0000_0000_0000_0400, 0x0400_0004_0404_0000: 0x0000_0000_0004_0400, 0x0400_0004_0404_0400: 0x0000_0000_0000_0400, + 0x0400_0400_0000_0000: 0x0000_0404_0404_0400, 0x0400_0400_0000_0400: 0x0000_0000_0000_0400, 0x0400_0400_0004_0000: 0x0000_0000_0004_0400, 0x0400_0400_0004_0400: 0x0000_0000_0000_0400, + 0x0400_0400_0400_0000: 0x0000_0000_0404_0400, 0x0400_0400_0400_0400: 0x0000_0000_0000_0400, 0x0400_0400_0404_0000: 0x0000_0000_0004_0400, 0x0400_0400_0404_0400: 0x0000_0000_0000_0400, + 0x0400_0404_0000_0000: 0x0000_0004_0404_0400, 0x0400_0404_0000_0400: 0x0000_0000_0000_0400, 0x0400_0404_0004_0000: 0x0000_0000_0004_0400, 0x0400_0404_0004_0400: 0x0000_0000_0000_0400, + 0x0400_0404_0400_0000: 0x0000_0000_0404_0400, 0x0400_0404_0400_0400: 0x0000_0000_0000_0400, 0x0400_0404_0404_0000: 0x0000_0000_0004_0400, 0x0400_0404_0404_0400: 0x0000_0000_0000_0400, + 0x0404_0000_0000_0000: 0x0004_0404_0404_0400, 0x0404_0000_0000_0400: 0x0000_0000_0000_0400, 0x0404_0000_0004_0000: 0x0000_0000_0004_0400, 0x0404_0000_0004_0400: 0x0000_0000_0000_0400, + 0x0404_0000_0400_0000: 0x0000_0000_0404_0400, 0x0404_0000_0400_0400: 0x0000_0000_0000_0400, 0x0404_0000_0404_0000: 0x0000_0000_0004_0400, 0x0404_0000_0404_0400: 0x0000_0000_0000_0400, + 0x0404_0004_0000_0000: 0x0000_0004_0404_0400, 0x0404_0004_0000_0400: 0x0000_0000_0000_0400, 0x0404_0004_0004_0000: 0x0000_0000_0004_0400, 0x0404_0004_0004_0400: 0x0000_0000_0000_0400, + 0x0404_0004_0400_0000: 0x0000_0000_0404_0400, 0x0404_0004_0400_0400: 0x0000_0000_0000_0400, 0x0404_0004_0404_0000: 0x0000_0000_0004_0400, 0x0404_0004_0404_0400: 0x0000_0000_0000_0400, + 0x0404_0400_0000_0000: 0x0000_0404_0404_0400, 0x0404_0400_0000_0400: 0x0000_0000_0000_0400, 0x0404_0400_0004_0000: 0x0000_0000_0004_0400, 0x0404_0400_0004_0400: 0x0000_0000_0000_0400, + 0x0404_0400_0400_0000: 0x0000_0000_0404_0400, 0x0404_0400_0400_0400: 0x0000_0000_0000_0400, 0x0404_0400_0404_0000: 0x0000_0000_0004_0400, 0x0404_0400_0404_0400: 0x0000_0000_0000_0400, + 0x0404_0404_0000_0000: 0x0000_0004_0404_0400, 0x0404_0404_0000_0400: 0x0000_0000_0000_0400, 0x0404_0404_0004_0000: 0x0000_0000_0004_0400, 0x0404_0404_0004_0400: 0x0000_0000_0000_0400, + 0x0404_0404_0400_0000: 0x0000_0000_0404_0400, 0x0404_0404_0400_0400: 0x0000_0000_0000_0400, 0x0404_0404_0404_0000: 0x0000_0000_0004_0400, 0x0404_0404_0404_0400: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0808_0808_0808_0800, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0008_0000: 0x0000_0000_0008_0800, 0x0000_0000_0008_0800: 0x0000_0000_0000_0800, + 0x0000_0000_0800_0000: 0x0000_0000_0808_0800, 0x0000_0000_0800_0800: 0x0000_0000_0000_0800, 0x0000_0000_0808_0000: 0x0000_0000_0008_0800, 0x0000_0000_0808_0800: 0x0000_0000_0000_0800, + 0x0000_0008_0000_0000: 0x0000_0008_0808_0800, 0x0000_0008_0000_0800: 0x0000_0000_0000_0800, 0x0000_0008_0008_0000: 0x0000_0000_0008_0800, 0x0000_0008_0008_0800: 0x0000_0000_0000_0800, + 0x0000_0008_0800_0000: 0x0000_0000_0808_0800, 0x0000_0008_0800_0800: 0x0000_0000_0000_0800, 0x0000_0008_0808_0000: 0x0000_0000_0008_0800, 0x0000_0008_0808_0800: 0x0000_0000_0000_0800, + 0x0000_0800_0000_0000: 0x0000_0808_0808_0800, 0x0000_0800_0000_0800: 0x0000_0000_0000_0800, 0x0000_0800_0008_0000: 0x0000_0000_0008_0800, 0x0000_0800_0008_0800: 0x0000_0000_0000_0800, + 0x0000_0800_0800_0000: 0x0000_0000_0808_0800, 0x0000_0800_0800_0800: 0x0000_0000_0000_0800, 0x0000_0800_0808_0000: 0x0000_0000_0008_0800, 0x0000_0800_0808_0800: 0x0000_0000_0000_0800, + 0x0000_0808_0000_0000: 0x0000_0008_0808_0800, 0x0000_0808_0000_0800: 0x0000_0000_0000_0800, 0x0000_0808_0008_0000: 0x0000_0000_0008_0800, 0x0000_0808_0008_0800: 0x0000_0000_0000_0800, + 0x0000_0808_0800_0000: 0x0000_0000_0808_0800, 0x0000_0808_0800_0800: 0x0000_0000_0000_0800, 0x0000_0808_0808_0000: 0x0000_0000_0008_0800, 0x0000_0808_0808_0800: 0x0000_0000_0000_0800, + 0x0008_0000_0000_0000: 0x0008_0808_0808_0800, 0x0008_0000_0000_0800: 0x0000_0000_0000_0800, 0x0008_0000_0008_0000: 0x0000_0000_0008_0800, 0x0008_0000_0008_0800: 0x0000_0000_0000_0800, + 0x0008_0000_0800_0000: 0x0000_0000_0808_0800, 0x0008_0000_0800_0800: 0x0000_0000_0000_0800, 0x0008_0000_0808_0000: 0x0000_0000_0008_0800, 0x0008_0000_0808_0800: 0x0000_0000_0000_0800, + 0x0008_0008_0000_0000: 0x0000_0008_0808_0800, 0x0008_0008_0000_0800: 0x0000_0000_0000_0800, 0x0008_0008_0008_0000: 0x0000_0000_0008_0800, 0x0008_0008_0008_0800: 0x0000_0000_0000_0800, + 0x0008_0008_0800_0000: 0x0000_0000_0808_0800, 0x0008_0008_0800_0800: 0x0000_0000_0000_0800, 0x0008_0008_0808_0000: 0x0000_0000_0008_0800, 0x0008_0008_0808_0800: 0x0000_0000_0000_0800, + 0x0008_0800_0000_0000: 0x0000_0808_0808_0800, 0x0008_0800_0000_0800: 0x0000_0000_0000_0800, 0x0008_0800_0008_0000: 0x0000_0000_0008_0800, 0x0008_0800_0008_0800: 0x0000_0000_0000_0800, + 0x0008_0800_0800_0000: 0x0000_0000_0808_0800, 0x0008_0800_0800_0800: 0x0000_0000_0000_0800, 0x0008_0800_0808_0000: 0x0000_0000_0008_0800, 0x0008_0800_0808_0800: 0x0000_0000_0000_0800, + 0x0008_0808_0000_0000: 0x0000_0008_0808_0800, 0x0008_0808_0000_0800: 0x0000_0000_0000_0800, 0x0008_0808_0008_0000: 0x0000_0000_0008_0800, 0x0008_0808_0008_0800: 0x0000_0000_0000_0800, + 0x0008_0808_0800_0000: 0x0000_0000_0808_0800, 0x0008_0808_0800_0800: 0x0000_0000_0000_0800, 0x0008_0808_0808_0000: 0x0000_0000_0008_0800, 0x0008_0808_0808_0800: 0x0000_0000_0000_0800, + 0x0800_0000_0000_0000: 0x0808_0808_0808_0800, 0x0800_0000_0000_0800: 0x0000_0000_0000_0800, 0x0800_0000_0008_0000: 0x0000_0000_0008_0800, 0x0800_0000_0008_0800: 0x0000_0000_0000_0800, + 0x0800_0000_0800_0000: 0x0000_0000_0808_0800, 0x0800_0000_0800_0800: 0x0000_0000_0000_0800, 0x0800_0000_0808_0000: 0x0000_0000_0008_0800, 0x0800_0000_0808_0800: 0x0000_0000_0000_0800, + 0x0800_0008_0000_0000: 0x0000_0008_0808_0800, 0x0800_0008_0000_0800: 0x0000_0000_0000_0800, 0x0800_0008_0008_0000: 0x0000_0000_0008_0800, 0x0800_0008_0008_0800: 0x0000_0000_0000_0800, + 0x0800_0008_0800_0000: 0x0000_0000_0808_0800, 0x0800_0008_0800_0800: 0x0000_0000_0000_0800, 0x0800_0008_0808_0000: 0x0000_0000_0008_0800, 0x0800_0008_0808_0800: 0x0000_0000_0000_0800, + 0x0800_0800_0000_0000: 0x0000_0808_0808_0800, 0x0800_0800_0000_0800: 0x0000_0000_0000_0800, 0x0800_0800_0008_0000: 0x0000_0000_0008_0800, 0x0800_0800_0008_0800: 0x0000_0000_0000_0800, + 0x0800_0800_0800_0000: 0x0000_0000_0808_0800, 0x0800_0800_0800_0800: 0x0000_0000_0000_0800, 0x0800_0800_0808_0000: 0x0000_0000_0008_0800, 0x0800_0800_0808_0800: 0x0000_0000_0000_0800, + 0x0800_0808_0000_0000: 0x0000_0008_0808_0800, 0x0800_0808_0000_0800: 0x0000_0000_0000_0800, 0x0800_0808_0008_0000: 0x0000_0000_0008_0800, 0x0800_0808_0008_0800: 0x0000_0000_0000_0800, + 0x0800_0808_0800_0000: 0x0000_0000_0808_0800, 0x0800_0808_0800_0800: 0x0000_0000_0000_0800, 0x0800_0808_0808_0000: 0x0000_0000_0008_0800, 0x0800_0808_0808_0800: 0x0000_0000_0000_0800, + 0x0808_0000_0000_0000: 0x0008_0808_0808_0800, 0x0808_0000_0000_0800: 0x0000_0000_0000_0800, 0x0808_0000_0008_0000: 0x0000_0000_0008_0800, 0x0808_0000_0008_0800: 0x0000_0000_0000_0800, + 0x0808_0000_0800_0000: 0x0000_0000_0808_0800, 0x0808_0000_0800_0800: 0x0000_0000_0000_0800, 0x0808_0000_0808_0000: 0x0000_0000_0008_0800, 0x0808_0000_0808_0800: 0x0000_0000_0000_0800, + 0x0808_0008_0000_0000: 0x0000_0008_0808_0800, 0x0808_0008_0000_0800: 0x0000_0000_0000_0800, 0x0808_0008_0008_0000: 0x0000_0000_0008_0800, 0x0808_0008_0008_0800: 0x0000_0000_0000_0800, + 0x0808_0008_0800_0000: 0x0000_0000_0808_0800, 0x0808_0008_0800_0800: 0x0000_0000_0000_0800, 0x0808_0008_0808_0000: 0x0000_0000_0008_0800, 0x0808_0008_0808_0800: 0x0000_0000_0000_0800, + 0x0808_0800_0000_0000: 0x0000_0808_0808_0800, 0x0808_0800_0000_0800: 0x0000_0000_0000_0800, 0x0808_0800_0008_0000: 0x0000_0000_0008_0800, 0x0808_0800_0008_0800: 0x0000_0000_0000_0800, + 0x0808_0800_0800_0000: 0x0000_0000_0808_0800, 0x0808_0800_0800_0800: 0x0000_0000_0000_0800, 0x0808_0800_0808_0000: 0x0000_0000_0008_0800, 0x0808_0800_0808_0800: 0x0000_0000_0000_0800, + 0x0808_0808_0000_0000: 0x0000_0008_0808_0800, 0x0808_0808_0000_0800: 0x0000_0000_0000_0800, 0x0808_0808_0008_0000: 0x0000_0000_0008_0800, 0x0808_0808_0008_0800: 0x0000_0000_0000_0800, + 0x0808_0808_0800_0000: 0x0000_0000_0808_0800, 0x0808_0808_0800_0800: 0x0000_0000_0000_0800, 0x0808_0808_0808_0000: 0x0000_0000_0008_0800, 0x0808_0808_0808_0800: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x1010_1010_1010_1000, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0010_0000: 0x0000_0000_0010_1000, 0x0000_0000_0010_1000: 0x0000_0000_0000_1000, + 0x0000_0000_1000_0000: 0x0000_0000_1010_1000, 0x0000_0000_1000_1000: 0x0000_0000_0000_1000, 0x0000_0000_1010_0000: 0x0000_0000_0010_1000, 0x0000_0000_1010_1000: 0x0000_0000_0000_1000, + 0x0000_0010_0000_0000: 0x0000_0010_1010_1000, 0x0000_0010_0000_1000: 0x0000_0000_0000_1000, 0x0000_0010_0010_0000: 0x0000_0000_0010_1000, 0x0000_0010_0010_1000: 0x0000_0000_0000_1000, + 0x0000_0010_1000_0000: 0x0000_0000_1010_1000, 0x0000_0010_1000_1000: 0x0000_0000_0000_1000, 0x0000_0010_1010_0000: 0x0000_0000_0010_1000, 0x0000_0010_1010_1000: 0x0000_0000_0000_1000, + 0x0000_1000_0000_0000: 0x0000_1010_1010_1000, 0x0000_1000_0000_1000: 0x0000_0000_0000_1000, 0x0000_1000_0010_0000: 0x0000_0000_0010_1000, 0x0000_1000_0010_1000: 0x0000_0000_0000_1000, + 0x0000_1000_1000_0000: 0x0000_0000_1010_1000, 0x0000_1000_1000_1000: 0x0000_0000_0000_1000, 0x0000_1000_1010_0000: 0x0000_0000_0010_1000, 0x0000_1000_1010_1000: 0x0000_0000_0000_1000, + 0x0000_1010_0000_0000: 0x0000_0010_1010_1000, 0x0000_1010_0000_1000: 0x0000_0000_0000_1000, 0x0000_1010_0010_0000: 0x0000_0000_0010_1000, 0x0000_1010_0010_1000: 0x0000_0000_0000_1000, + 0x0000_1010_1000_0000: 0x0000_0000_1010_1000, 0x0000_1010_1000_1000: 0x0000_0000_0000_1000, 0x0000_1010_1010_0000: 0x0000_0000_0010_1000, 0x0000_1010_1010_1000: 0x0000_0000_0000_1000, + 0x0010_0000_0000_0000: 0x0010_1010_1010_1000, 0x0010_0000_0000_1000: 0x0000_0000_0000_1000, 0x0010_0000_0010_0000: 0x0000_0000_0010_1000, 0x0010_0000_0010_1000: 0x0000_0000_0000_1000, + 0x0010_0000_1000_0000: 0x0000_0000_1010_1000, 0x0010_0000_1000_1000: 0x0000_0000_0000_1000, 0x0010_0000_1010_0000: 0x0000_0000_0010_1000, 0x0010_0000_1010_1000: 0x0000_0000_0000_1000, + 0x0010_0010_0000_0000: 0x0000_0010_1010_1000, 0x0010_0010_0000_1000: 0x0000_0000_0000_1000, 0x0010_0010_0010_0000: 0x0000_0000_0010_1000, 0x0010_0010_0010_1000: 0x0000_0000_0000_1000, + 0x0010_0010_1000_0000: 0x0000_0000_1010_1000, 0x0010_0010_1000_1000: 0x0000_0000_0000_1000, 0x0010_0010_1010_0000: 0x0000_0000_0010_1000, 0x0010_0010_1010_1000: 0x0000_0000_0000_1000, + 0x0010_1000_0000_0000: 0x0000_1010_1010_1000, 0x0010_1000_0000_1000: 0x0000_0000_0000_1000, 0x0010_1000_0010_0000: 0x0000_0000_0010_1000, 0x0010_1000_0010_1000: 0x0000_0000_0000_1000, + 0x0010_1000_1000_0000: 0x0000_0000_1010_1000, 0x0010_1000_1000_1000: 0x0000_0000_0000_1000, 0x0010_1000_1010_0000: 0x0000_0000_0010_1000, 0x0010_1000_1010_1000: 0x0000_0000_0000_1000, + 0x0010_1010_0000_0000: 0x0000_0010_1010_1000, 0x0010_1010_0000_1000: 0x0000_0000_0000_1000, 0x0010_1010_0010_0000: 0x0000_0000_0010_1000, 0x0010_1010_0010_1000: 0x0000_0000_0000_1000, + 0x0010_1010_1000_0000: 0x0000_0000_1010_1000, 0x0010_1010_1000_1000: 0x0000_0000_0000_1000, 0x0010_1010_1010_0000: 0x0000_0000_0010_1000, 0x0010_1010_1010_1000: 0x0000_0000_0000_1000, + 0x1000_0000_0000_0000: 0x1010_1010_1010_1000, 0x1000_0000_0000_1000: 0x0000_0000_0000_1000, 0x1000_0000_0010_0000: 0x0000_0000_0010_1000, 0x1000_0000_0010_1000: 0x0000_0000_0000_1000, + 0x1000_0000_1000_0000: 0x0000_0000_1010_1000, 0x1000_0000_1000_1000: 0x0000_0000_0000_1000, 0x1000_0000_1010_0000: 0x0000_0000_0010_1000, 0x1000_0000_1010_1000: 0x0000_0000_0000_1000, + 0x1000_0010_0000_0000: 0x0000_0010_1010_1000, 0x1000_0010_0000_1000: 0x0000_0000_0000_1000, 0x1000_0010_0010_0000: 0x0000_0000_0010_1000, 0x1000_0010_0010_1000: 0x0000_0000_0000_1000, + 0x1000_0010_1000_0000: 0x0000_0000_1010_1000, 0x1000_0010_1000_1000: 0x0000_0000_0000_1000, 0x1000_0010_1010_0000: 0x0000_0000_0010_1000, 0x1000_0010_1010_1000: 0x0000_0000_0000_1000, + 0x1000_1000_0000_0000: 0x0000_1010_1010_1000, 0x1000_1000_0000_1000: 0x0000_0000_0000_1000, 0x1000_1000_0010_0000: 0x0000_0000_0010_1000, 0x1000_1000_0010_1000: 0x0000_0000_0000_1000, + 0x1000_1000_1000_0000: 0x0000_0000_1010_1000, 0x1000_1000_1000_1000: 0x0000_0000_0000_1000, 0x1000_1000_1010_0000: 0x0000_0000_0010_1000, 0x1000_1000_1010_1000: 0x0000_0000_0000_1000, + 0x1000_1010_0000_0000: 0x0000_0010_1010_1000, 0x1000_1010_0000_1000: 0x0000_0000_0000_1000, 0x1000_1010_0010_0000: 0x0000_0000_0010_1000, 0x1000_1010_0010_1000: 0x0000_0000_0000_1000, + 0x1000_1010_1000_0000: 0x0000_0000_1010_1000, 0x1000_1010_1000_1000: 0x0000_0000_0000_1000, 0x1000_1010_1010_0000: 0x0000_0000_0010_1000, 0x1000_1010_1010_1000: 0x0000_0000_0000_1000, + 0x1010_0000_0000_0000: 0x0010_1010_1010_1000, 0x1010_0000_0000_1000: 0x0000_0000_0000_1000, 0x1010_0000_0010_0000: 0x0000_0000_0010_1000, 0x1010_0000_0010_1000: 0x0000_0000_0000_1000, + 0x1010_0000_1000_0000: 0x0000_0000_1010_1000, 0x1010_0000_1000_1000: 0x0000_0000_0000_1000, 0x1010_0000_1010_0000: 0x0000_0000_0010_1000, 0x1010_0000_1010_1000: 0x0000_0000_0000_1000, + 0x1010_0010_0000_0000: 0x0000_0010_1010_1000, 0x1010_0010_0000_1000: 0x0000_0000_0000_1000, 0x1010_0010_0010_0000: 0x0000_0000_0010_1000, 0x1010_0010_0010_1000: 0x0000_0000_0000_1000, + 0x1010_0010_1000_0000: 0x0000_0000_1010_1000, 0x1010_0010_1000_1000: 0x0000_0000_0000_1000, 0x1010_0010_1010_0000: 0x0000_0000_0010_1000, 0x1010_0010_1010_1000: 0x0000_0000_0000_1000, + 0x1010_1000_0000_0000: 0x0000_1010_1010_1000, 0x1010_1000_0000_1000: 0x0000_0000_0000_1000, 0x1010_1000_0010_0000: 0x0000_0000_0010_1000, 0x1010_1000_0010_1000: 0x0000_0000_0000_1000, + 0x1010_1000_1000_0000: 0x0000_0000_1010_1000, 0x1010_1000_1000_1000: 0x0000_0000_0000_1000, 0x1010_1000_1010_0000: 0x0000_0000_0010_1000, 0x1010_1000_1010_1000: 0x0000_0000_0000_1000, + 0x1010_1010_0000_0000: 0x0000_0010_1010_1000, 0x1010_1010_0000_1000: 0x0000_0000_0000_1000, 0x1010_1010_0010_0000: 0x0000_0000_0010_1000, 0x1010_1010_0010_1000: 0x0000_0000_0000_1000, + 0x1010_1010_1000_0000: 0x0000_0000_1010_1000, 0x1010_1010_1000_1000: 0x0000_0000_0000_1000, 0x1010_1010_1010_0000: 0x0000_0000_0010_1000, 0x1010_1010_1010_1000: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x2020_2020_2020_2000, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0020_0000: 0x0000_0000_0020_2000, 0x0000_0000_0020_2000: 0x0000_0000_0000_2000, + 0x0000_0000_2000_0000: 0x0000_0000_2020_2000, 0x0000_0000_2000_2000: 0x0000_0000_0000_2000, 0x0000_0000_2020_0000: 0x0000_0000_0020_2000, 0x0000_0000_2020_2000: 0x0000_0000_0000_2000, + 0x0000_0020_0000_0000: 0x0000_0020_2020_2000, 0x0000_0020_0000_2000: 0x0000_0000_0000_2000, 0x0000_0020_0020_0000: 0x0000_0000_0020_2000, 0x0000_0020_0020_2000: 0x0000_0000_0000_2000, + 0x0000_0020_2000_0000: 0x0000_0000_2020_2000, 0x0000_0020_2000_2000: 0x0000_0000_0000_2000, 0x0000_0020_2020_0000: 0x0000_0000_0020_2000, 0x0000_0020_2020_2000: 0x0000_0000_0000_2000, + 0x0000_2000_0000_0000: 0x0000_2020_2020_2000, 0x0000_2000_0000_2000: 0x0000_0000_0000_2000, 0x0000_2000_0020_0000: 0x0000_0000_0020_2000, 0x0000_2000_0020_2000: 0x0000_0000_0000_2000, + 0x0000_2000_2000_0000: 0x0000_0000_2020_2000, 0x0000_2000_2000_2000: 0x0000_0000_0000_2000, 0x0000_2000_2020_0000: 0x0000_0000_0020_2000, 0x0000_2000_2020_2000: 0x0000_0000_0000_2000, + 0x0000_2020_0000_0000: 0x0000_0020_2020_2000, 0x0000_2020_0000_2000: 0x0000_0000_0000_2000, 0x0000_2020_0020_0000: 0x0000_0000_0020_2000, 0x0000_2020_0020_2000: 0x0000_0000_0000_2000, + 0x0000_2020_2000_0000: 0x0000_0000_2020_2000, 0x0000_2020_2000_2000: 0x0000_0000_0000_2000, 0x0000_2020_2020_0000: 0x0000_0000_0020_2000, 0x0000_2020_2020_2000: 0x0000_0000_0000_2000, + 0x0020_0000_0000_0000: 0x0020_2020_2020_2000, 0x0020_0000_0000_2000: 0x0000_0000_0000_2000, 0x0020_0000_0020_0000: 0x0000_0000_0020_2000, 0x0020_0000_0020_2000: 0x0000_0000_0000_2000, + 0x0020_0000_2000_0000: 0x0000_0000_2020_2000, 0x0020_0000_2000_2000: 0x0000_0000_0000_2000, 0x0020_0000_2020_0000: 0x0000_0000_0020_2000, 0x0020_0000_2020_2000: 0x0000_0000_0000_2000, + 0x0020_0020_0000_0000: 0x0000_0020_2020_2000, 0x0020_0020_0000_2000: 0x0000_0000_0000_2000, 0x0020_0020_0020_0000: 0x0000_0000_0020_2000, 0x0020_0020_0020_2000: 0x0000_0000_0000_2000, + 0x0020_0020_2000_0000: 0x0000_0000_2020_2000, 0x0020_0020_2000_2000: 0x0000_0000_0000_2000, 0x0020_0020_2020_0000: 0x0000_0000_0020_2000, 0x0020_0020_2020_2000: 0x0000_0000_0000_2000, + 0x0020_2000_0000_0000: 0x0000_2020_2020_2000, 0x0020_2000_0000_2000: 0x0000_0000_0000_2000, 0x0020_2000_0020_0000: 0x0000_0000_0020_2000, 0x0020_2000_0020_2000: 0x0000_0000_0000_2000, + 0x0020_2000_2000_0000: 0x0000_0000_2020_2000, 0x0020_2000_2000_2000: 0x0000_0000_0000_2000, 0x0020_2000_2020_0000: 0x0000_0000_0020_2000, 0x0020_2000_2020_2000: 0x0000_0000_0000_2000, + 0x0020_2020_0000_0000: 0x0000_0020_2020_2000, 0x0020_2020_0000_2000: 0x0000_0000_0000_2000, 0x0020_2020_0020_0000: 0x0000_0000_0020_2000, 0x0020_2020_0020_2000: 0x0000_0000_0000_2000, + 0x0020_2020_2000_0000: 0x0000_0000_2020_2000, 0x0020_2020_2000_2000: 0x0000_0000_0000_2000, 0x0020_2020_2020_0000: 0x0000_0000_0020_2000, 0x0020_2020_2020_2000: 0x0000_0000_0000_2000, + 0x2000_0000_0000_0000: 0x2020_2020_2020_2000, 0x2000_0000_0000_2000: 0x0000_0000_0000_2000, 0x2000_0000_0020_0000: 0x0000_0000_0020_2000, 0x2000_0000_0020_2000: 0x0000_0000_0000_2000, + 0x2000_0000_2000_0000: 0x0000_0000_2020_2000, 0x2000_0000_2000_2000: 0x0000_0000_0000_2000, 0x2000_0000_2020_0000: 0x0000_0000_0020_2000, 0x2000_0000_2020_2000: 0x0000_0000_0000_2000, + 0x2000_0020_0000_0000: 0x0000_0020_2020_2000, 0x2000_0020_0000_2000: 0x0000_0000_0000_2000, 0x2000_0020_0020_0000: 0x0000_0000_0020_2000, 0x2000_0020_0020_2000: 0x0000_0000_0000_2000, + 0x2000_0020_2000_0000: 0x0000_0000_2020_2000, 0x2000_0020_2000_2000: 0x0000_0000_0000_2000, 0x2000_0020_2020_0000: 0x0000_0000_0020_2000, 0x2000_0020_2020_2000: 0x0000_0000_0000_2000, + 0x2000_2000_0000_0000: 0x0000_2020_2020_2000, 0x2000_2000_0000_2000: 0x0000_0000_0000_2000, 0x2000_2000_0020_0000: 0x0000_0000_0020_2000, 0x2000_2000_0020_2000: 0x0000_0000_0000_2000, + 0x2000_2000_2000_0000: 0x0000_0000_2020_2000, 0x2000_2000_2000_2000: 0x0000_0000_0000_2000, 0x2000_2000_2020_0000: 0x0000_0000_0020_2000, 0x2000_2000_2020_2000: 0x0000_0000_0000_2000, + 0x2000_2020_0000_0000: 0x0000_0020_2020_2000, 0x2000_2020_0000_2000: 0x0000_0000_0000_2000, 0x2000_2020_0020_0000: 0x0000_0000_0020_2000, 0x2000_2020_0020_2000: 0x0000_0000_0000_2000, + 0x2000_2020_2000_0000: 0x0000_0000_2020_2000, 0x2000_2020_2000_2000: 0x0000_0000_0000_2000, 0x2000_2020_2020_0000: 0x0000_0000_0020_2000, 0x2000_2020_2020_2000: 0x0000_0000_0000_2000, + 0x2020_0000_0000_0000: 0x0020_2020_2020_2000, 0x2020_0000_0000_2000: 0x0000_0000_0000_2000, 0x2020_0000_0020_0000: 0x0000_0000_0020_2000, 0x2020_0000_0020_2000: 0x0000_0000_0000_2000, + 0x2020_0000_2000_0000: 0x0000_0000_2020_2000, 0x2020_0000_2000_2000: 0x0000_0000_0000_2000, 0x2020_0000_2020_0000: 0x0000_0000_0020_2000, 0x2020_0000_2020_2000: 0x0000_0000_0000_2000, + 0x2020_0020_0000_0000: 0x0000_0020_2020_2000, 0x2020_0020_0000_2000: 0x0000_0000_0000_2000, 0x2020_0020_0020_0000: 0x0000_0000_0020_2000, 0x2020_0020_0020_2000: 0x0000_0000_0000_2000, + 0x2020_0020_2000_0000: 0x0000_0000_2020_2000, 0x2020_0020_2000_2000: 0x0000_0000_0000_2000, 0x2020_0020_2020_0000: 0x0000_0000_0020_2000, 0x2020_0020_2020_2000: 0x0000_0000_0000_2000, + 0x2020_2000_0000_0000: 0x0000_2020_2020_2000, 0x2020_2000_0000_2000: 0x0000_0000_0000_2000, 0x2020_2000_0020_0000: 0x0000_0000_0020_2000, 0x2020_2000_0020_2000: 0x0000_0000_0000_2000, + 0x2020_2000_2000_0000: 0x0000_0000_2020_2000, 0x2020_2000_2000_2000: 0x0000_0000_0000_2000, 0x2020_2000_2020_0000: 0x0000_0000_0020_2000, 0x2020_2000_2020_2000: 0x0000_0000_0000_2000, + 0x2020_2020_0000_0000: 0x0000_0020_2020_2000, 0x2020_2020_0000_2000: 0x0000_0000_0000_2000, 0x2020_2020_0020_0000: 0x0000_0000_0020_2000, 0x2020_2020_0020_2000: 0x0000_0000_0000_2000, + 0x2020_2020_2000_0000: 0x0000_0000_2020_2000, 0x2020_2020_2000_2000: 0x0000_0000_0000_2000, 0x2020_2020_2020_0000: 0x0000_0000_0020_2000, 0x2020_2020_2020_2000: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x4040_4040_4040_4000, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0040_0000: 0x0000_0000_0040_4000, 0x0000_0000_0040_4000: 0x0000_0000_0000_4000, + 0x0000_0000_4000_0000: 0x0000_0000_4040_4000, 0x0000_0000_4000_4000: 0x0000_0000_0000_4000, 0x0000_0000_4040_0000: 0x0000_0000_0040_4000, 0x0000_0000_4040_4000: 0x0000_0000_0000_4000, + 0x0000_0040_0000_0000: 0x0000_0040_4040_4000, 0x0000_0040_0000_4000: 0x0000_0000_0000_4000, 0x0000_0040_0040_0000: 0x0000_0000_0040_4000, 0x0000_0040_0040_4000: 0x0000_0000_0000_4000, + 0x0000_0040_4000_0000: 0x0000_0000_4040_4000, 0x0000_0040_4000_4000: 0x0000_0000_0000_4000, 0x0000_0040_4040_0000: 0x0000_0000_0040_4000, 0x0000_0040_4040_4000: 0x0000_0000_0000_4000, + 0x0000_4000_0000_0000: 0x0000_4040_4040_4000, 0x0000_4000_0000_4000: 0x0000_0000_0000_4000, 0x0000_4000_0040_0000: 0x0000_0000_0040_4000, 0x0000_4000_0040_4000: 0x0000_0000_0000_4000, + 0x0000_4000_4000_0000: 0x0000_0000_4040_4000, 0x0000_4000_4000_4000: 0x0000_0000_0000_4000, 0x0000_4000_4040_0000: 0x0000_0000_0040_4000, 0x0000_4000_4040_4000: 0x0000_0000_0000_4000, + 0x0000_4040_0000_0000: 0x0000_0040_4040_4000, 0x0000_4040_0000_4000: 0x0000_0000_0000_4000, 0x0000_4040_0040_0000: 0x0000_0000_0040_4000, 0x0000_4040_0040_4000: 0x0000_0000_0000_4000, + 0x0000_4040_4000_0000: 0x0000_0000_4040_4000, 0x0000_4040_4000_4000: 0x0000_0000_0000_4000, 0x0000_4040_4040_0000: 0x0000_0000_0040_4000, 0x0000_4040_4040_4000: 0x0000_0000_0000_4000, + 0x0040_0000_0000_0000: 0x0040_4040_4040_4000, 0x0040_0000_0000_4000: 0x0000_0000_0000_4000, 0x0040_0000_0040_0000: 0x0000_0000_0040_4000, 0x0040_0000_0040_4000: 0x0000_0000_0000_4000, + 0x0040_0000_4000_0000: 0x0000_0000_4040_4000, 0x0040_0000_4000_4000: 0x0000_0000_0000_4000, 0x0040_0000_4040_0000: 0x0000_0000_0040_4000, 0x0040_0000_4040_4000: 0x0000_0000_0000_4000, + 0x0040_0040_0000_0000: 0x0000_0040_4040_4000, 0x0040_0040_0000_4000: 0x0000_0000_0000_4000, 0x0040_0040_0040_0000: 0x0000_0000_0040_4000, 0x0040_0040_0040_4000: 0x0000_0000_0000_4000, + 0x0040_0040_4000_0000: 0x0000_0000_4040_4000, 0x0040_0040_4000_4000: 0x0000_0000_0000_4000, 0x0040_0040_4040_0000: 0x0000_0000_0040_4000, 0x0040_0040_4040_4000: 0x0000_0000_0000_4000, + 0x0040_4000_0000_0000: 0x0000_4040_4040_4000, 0x0040_4000_0000_4000: 0x0000_0000_0000_4000, 0x0040_4000_0040_0000: 0x0000_0000_0040_4000, 0x0040_4000_0040_4000: 0x0000_0000_0000_4000, + 0x0040_4000_4000_0000: 0x0000_0000_4040_4000, 0x0040_4000_4000_4000: 0x0000_0000_0000_4000, 0x0040_4000_4040_0000: 0x0000_0000_0040_4000, 0x0040_4000_4040_4000: 0x0000_0000_0000_4000, + 0x0040_4040_0000_0000: 0x0000_0040_4040_4000, 0x0040_4040_0000_4000: 0x0000_0000_0000_4000, 0x0040_4040_0040_0000: 0x0000_0000_0040_4000, 0x0040_4040_0040_4000: 0x0000_0000_0000_4000, + 0x0040_4040_4000_0000: 0x0000_0000_4040_4000, 0x0040_4040_4000_4000: 0x0000_0000_0000_4000, 0x0040_4040_4040_0000: 0x0000_0000_0040_4000, 0x0040_4040_4040_4000: 0x0000_0000_0000_4000, + 0x4000_0000_0000_0000: 0x4040_4040_4040_4000, 0x4000_0000_0000_4000: 0x0000_0000_0000_4000, 0x4000_0000_0040_0000: 0x0000_0000_0040_4000, 0x4000_0000_0040_4000: 0x0000_0000_0000_4000, + 0x4000_0000_4000_0000: 0x0000_0000_4040_4000, 0x4000_0000_4000_4000: 0x0000_0000_0000_4000, 0x4000_0000_4040_0000: 0x0000_0000_0040_4000, 0x4000_0000_4040_4000: 0x0000_0000_0000_4000, + 0x4000_0040_0000_0000: 0x0000_0040_4040_4000, 0x4000_0040_0000_4000: 0x0000_0000_0000_4000, 0x4000_0040_0040_0000: 0x0000_0000_0040_4000, 0x4000_0040_0040_4000: 0x0000_0000_0000_4000, + 0x4000_0040_4000_0000: 0x0000_0000_4040_4000, 0x4000_0040_4000_4000: 0x0000_0000_0000_4000, 0x4000_0040_4040_0000: 0x0000_0000_0040_4000, 0x4000_0040_4040_4000: 0x0000_0000_0000_4000, + 0x4000_4000_0000_0000: 0x0000_4040_4040_4000, 0x4000_4000_0000_4000: 0x0000_0000_0000_4000, 0x4000_4000_0040_0000: 0x0000_0000_0040_4000, 0x4000_4000_0040_4000: 0x0000_0000_0000_4000, + 0x4000_4000_4000_0000: 0x0000_0000_4040_4000, 0x4000_4000_4000_4000: 0x0000_0000_0000_4000, 0x4000_4000_4040_0000: 0x0000_0000_0040_4000, 0x4000_4000_4040_4000: 0x0000_0000_0000_4000, + 0x4000_4040_0000_0000: 0x0000_0040_4040_4000, 0x4000_4040_0000_4000: 0x0000_0000_0000_4000, 0x4000_4040_0040_0000: 0x0000_0000_0040_4000, 0x4000_4040_0040_4000: 0x0000_0000_0000_4000, + 0x4000_4040_4000_0000: 0x0000_0000_4040_4000, 0x4000_4040_4000_4000: 0x0000_0000_0000_4000, 0x4000_4040_4040_0000: 0x0000_0000_0040_4000, 0x4000_4040_4040_4000: 0x0000_0000_0000_4000, + 0x4040_0000_0000_0000: 0x0040_4040_4040_4000, 0x4040_0000_0000_4000: 0x0000_0000_0000_4000, 0x4040_0000_0040_0000: 0x0000_0000_0040_4000, 0x4040_0000_0040_4000: 0x0000_0000_0000_4000, + 0x4040_0000_4000_0000: 0x0000_0000_4040_4000, 0x4040_0000_4000_4000: 0x0000_0000_0000_4000, 0x4040_0000_4040_0000: 0x0000_0000_0040_4000, 0x4040_0000_4040_4000: 0x0000_0000_0000_4000, + 0x4040_0040_0000_0000: 0x0000_0040_4040_4000, 0x4040_0040_0000_4000: 0x0000_0000_0000_4000, 0x4040_0040_0040_0000: 0x0000_0000_0040_4000, 0x4040_0040_0040_4000: 0x0000_0000_0000_4000, + 0x4040_0040_4000_0000: 0x0000_0000_4040_4000, 0x4040_0040_4000_4000: 0x0000_0000_0000_4000, 0x4040_0040_4040_0000: 0x0000_0000_0040_4000, 0x4040_0040_4040_4000: 0x0000_0000_0000_4000, + 0x4040_4000_0000_0000: 0x0000_4040_4040_4000, 0x4040_4000_0000_4000: 0x0000_0000_0000_4000, 0x4040_4000_0040_0000: 0x0000_0000_0040_4000, 0x4040_4000_0040_4000: 0x0000_0000_0000_4000, + 0x4040_4000_4000_0000: 0x0000_0000_4040_4000, 0x4040_4000_4000_4000: 0x0000_0000_0000_4000, 0x4040_4000_4040_0000: 0x0000_0000_0040_4000, 0x4040_4000_4040_4000: 0x0000_0000_0000_4000, + 0x4040_4040_0000_0000: 0x0000_0040_4040_4000, 0x4040_4040_0000_4000: 0x0000_0000_0000_4000, 0x4040_4040_0040_0000: 0x0000_0000_0040_4000, 0x4040_4040_0040_4000: 0x0000_0000_0000_4000, + 0x4040_4040_4000_0000: 0x0000_0000_4040_4000, 0x4040_4040_4000_4000: 0x0000_0000_0000_4000, 0x4040_4040_4040_0000: 0x0000_0000_0040_4000, 0x4040_4040_4040_4000: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x8080_8080_8080_8000, 0x0000_0000_0000_8000: 0x0000_0000_0000_8000, 0x0000_0000_0080_0000: 0x0000_0000_0080_8000, 0x0000_0000_0080_8000: 0x0000_0000_0000_8000, + 0x0000_0000_8000_0000: 0x0000_0000_8080_8000, 0x0000_0000_8000_8000: 0x0000_0000_0000_8000, 0x0000_0000_8080_0000: 0x0000_0000_0080_8000, 0x0000_0000_8080_8000: 0x0000_0000_0000_8000, + 0x0000_0080_0000_0000: 0x0000_0080_8080_8000, 0x0000_0080_0000_8000: 0x0000_0000_0000_8000, 0x0000_0080_0080_0000: 0x0000_0000_0080_8000, 0x0000_0080_0080_8000: 0x0000_0000_0000_8000, + 0x0000_0080_8000_0000: 0x0000_0000_8080_8000, 0x0000_0080_8000_8000: 0x0000_0000_0000_8000, 0x0000_0080_8080_0000: 0x0000_0000_0080_8000, 0x0000_0080_8080_8000: 0x0000_0000_0000_8000, + 0x0000_8000_0000_0000: 0x0000_8080_8080_8000, 0x0000_8000_0000_8000: 0x0000_0000_0000_8000, 0x0000_8000_0080_0000: 0x0000_0000_0080_8000, 0x0000_8000_0080_8000: 0x0000_0000_0000_8000, + 0x0000_8000_8000_0000: 0x0000_0000_8080_8000, 0x0000_8000_8000_8000: 0x0000_0000_0000_8000, 0x0000_8000_8080_0000: 0x0000_0000_0080_8000, 0x0000_8000_8080_8000: 0x0000_0000_0000_8000, + 0x0000_8080_0000_0000: 0x0000_0080_8080_8000, 0x0000_8080_0000_8000: 0x0000_0000_0000_8000, 0x0000_8080_0080_0000: 0x0000_0000_0080_8000, 0x0000_8080_0080_8000: 0x0000_0000_0000_8000, + 0x0000_8080_8000_0000: 0x0000_0000_8080_8000, 0x0000_8080_8000_8000: 0x0000_0000_0000_8000, 0x0000_8080_8080_0000: 0x0000_0000_0080_8000, 0x0000_8080_8080_8000: 0x0000_0000_0000_8000, + 0x0080_0000_0000_0000: 0x0080_8080_8080_8000, 0x0080_0000_0000_8000: 0x0000_0000_0000_8000, 0x0080_0000_0080_0000: 0x0000_0000_0080_8000, 0x0080_0000_0080_8000: 0x0000_0000_0000_8000, + 0x0080_0000_8000_0000: 0x0000_0000_8080_8000, 0x0080_0000_8000_8000: 0x0000_0000_0000_8000, 0x0080_0000_8080_0000: 0x0000_0000_0080_8000, 0x0080_0000_8080_8000: 0x0000_0000_0000_8000, + 0x0080_0080_0000_0000: 0x0000_0080_8080_8000, 0x0080_0080_0000_8000: 0x0000_0000_0000_8000, 0x0080_0080_0080_0000: 0x0000_0000_0080_8000, 0x0080_0080_0080_8000: 0x0000_0000_0000_8000, + 0x0080_0080_8000_0000: 0x0000_0000_8080_8000, 0x0080_0080_8000_8000: 0x0000_0000_0000_8000, 0x0080_0080_8080_0000: 0x0000_0000_0080_8000, 0x0080_0080_8080_8000: 0x0000_0000_0000_8000, + 0x0080_8000_0000_0000: 0x0000_8080_8080_8000, 0x0080_8000_0000_8000: 0x0000_0000_0000_8000, 0x0080_8000_0080_0000: 0x0000_0000_0080_8000, 0x0080_8000_0080_8000: 0x0000_0000_0000_8000, + 0x0080_8000_8000_0000: 0x0000_0000_8080_8000, 0x0080_8000_8000_8000: 0x0000_0000_0000_8000, 0x0080_8000_8080_0000: 0x0000_0000_0080_8000, 0x0080_8000_8080_8000: 0x0000_0000_0000_8000, + 0x0080_8080_0000_0000: 0x0000_0080_8080_8000, 0x0080_8080_0000_8000: 0x0000_0000_0000_8000, 0x0080_8080_0080_0000: 0x0000_0000_0080_8000, 0x0080_8080_0080_8000: 0x0000_0000_0000_8000, + 0x0080_8080_8000_0000: 0x0000_0000_8080_8000, 0x0080_8080_8000_8000: 0x0000_0000_0000_8000, 0x0080_8080_8080_0000: 0x0000_0000_0080_8000, 0x0080_8080_8080_8000: 0x0000_0000_0000_8000, + 0x8000_0000_0000_0000: 0x8080_8080_8080_8000, 0x8000_0000_0000_8000: 0x0000_0000_0000_8000, 0x8000_0000_0080_0000: 0x0000_0000_0080_8000, 0x8000_0000_0080_8000: 0x0000_0000_0000_8000, + 0x8000_0000_8000_0000: 0x0000_0000_8080_8000, 0x8000_0000_8000_8000: 0x0000_0000_0000_8000, 0x8000_0000_8080_0000: 0x0000_0000_0080_8000, 0x8000_0000_8080_8000: 0x0000_0000_0000_8000, + 0x8000_0080_0000_0000: 0x0000_0080_8080_8000, 0x8000_0080_0000_8000: 0x0000_0000_0000_8000, 0x8000_0080_0080_0000: 0x0000_0000_0080_8000, 0x8000_0080_0080_8000: 0x0000_0000_0000_8000, + 0x8000_0080_8000_0000: 0x0000_0000_8080_8000, 0x8000_0080_8000_8000: 0x0000_0000_0000_8000, 0x8000_0080_8080_0000: 0x0000_0000_0080_8000, 0x8000_0080_8080_8000: 0x0000_0000_0000_8000, + 0x8000_8000_0000_0000: 0x0000_8080_8080_8000, 0x8000_8000_0000_8000: 0x0000_0000_0000_8000, 0x8000_8000_0080_0000: 0x0000_0000_0080_8000, 0x8000_8000_0080_8000: 0x0000_0000_0000_8000, + 0x8000_8000_8000_0000: 0x0000_0000_8080_8000, 0x8000_8000_8000_8000: 0x0000_0000_0000_8000, 0x8000_8000_8080_0000: 0x0000_0000_0080_8000, 0x8000_8000_8080_8000: 0x0000_0000_0000_8000, + 0x8000_8080_0000_0000: 0x0000_0080_8080_8000, 0x8000_8080_0000_8000: 0x0000_0000_0000_8000, 0x8000_8080_0080_0000: 0x0000_0000_0080_8000, 0x8000_8080_0080_8000: 0x0000_0000_0000_8000, + 0x8000_8080_8000_0000: 0x0000_0000_8080_8000, 0x8000_8080_8000_8000: 0x0000_0000_0000_8000, 0x8000_8080_8080_0000: 0x0000_0000_0080_8000, 0x8000_8080_8080_8000: 0x0000_0000_0000_8000, + 0x8080_0000_0000_0000: 0x0080_8080_8080_8000, 0x8080_0000_0000_8000: 0x0000_0000_0000_8000, 0x8080_0000_0080_0000: 0x0000_0000_0080_8000, 0x8080_0000_0080_8000: 0x0000_0000_0000_8000, + 0x8080_0000_8000_0000: 0x0000_0000_8080_8000, 0x8080_0000_8000_8000: 0x0000_0000_0000_8000, 0x8080_0000_8080_0000: 0x0000_0000_0080_8000, 0x8080_0000_8080_8000: 0x0000_0000_0000_8000, + 0x8080_0080_0000_0000: 0x0000_0080_8080_8000, 0x8080_0080_0000_8000: 0x0000_0000_0000_8000, 0x8080_0080_0080_0000: 0x0000_0000_0080_8000, 0x8080_0080_0080_8000: 0x0000_0000_0000_8000, + 0x8080_0080_8000_0000: 0x0000_0000_8080_8000, 0x8080_0080_8000_8000: 0x0000_0000_0000_8000, 0x8080_0080_8080_0000: 0x0000_0000_0080_8000, 0x8080_0080_8080_8000: 0x0000_0000_0000_8000, + 0x8080_8000_0000_0000: 0x0000_8080_8080_8000, 0x8080_8000_0000_8000: 0x0000_0000_0000_8000, 0x8080_8000_0080_0000: 0x0000_0000_0080_8000, 0x8080_8000_0080_8000: 0x0000_0000_0000_8000, + 0x8080_8000_8000_0000: 0x0000_0000_8080_8000, 0x8080_8000_8000_8000: 0x0000_0000_0000_8000, 0x8080_8000_8080_0000: 0x0000_0000_0080_8000, 0x8080_8000_8080_8000: 0x0000_0000_0000_8000, + 0x8080_8080_0000_0000: 0x0000_0080_8080_8000, 0x8080_8080_0000_8000: 0x0000_0000_0000_8000, 0x8080_8080_0080_0000: 0x0000_0000_0080_8000, 0x8080_8080_0080_8000: 0x0000_0000_0000_8000, + 0x8080_8080_8000_0000: 0x0000_0000_8080_8000, 0x8080_8080_8000_8000: 0x0000_0000_0000_8000, 0x8080_8080_8080_0000: 0x0000_0000_0080_8000, 0x8080_8080_8080_8000: 0x0000_0000_0000_8000, + }, + { + 0x0000_0000_0000_0000: 0x0101_0101_0101_0000, 0x0000_0000_0001_0000: 0x0000_0000_0001_0000, 0x0000_0000_0100_0000: 0x0000_0000_0101_0000, 0x0000_0000_0101_0000: 0x0000_0000_0001_0000, + 0x0000_0001_0000_0000: 0x0000_0001_0101_0000, 0x0000_0001_0001_0000: 0x0000_0000_0001_0000, 0x0000_0001_0100_0000: 0x0000_0000_0101_0000, 0x0000_0001_0101_0000: 0x0000_0000_0001_0000, + 0x0000_0100_0000_0000: 0x0000_0101_0101_0000, 0x0000_0100_0001_0000: 0x0000_0000_0001_0000, 0x0000_0100_0100_0000: 0x0000_0000_0101_0000, 0x0000_0100_0101_0000: 0x0000_0000_0001_0000, + 0x0000_0101_0000_0000: 0x0000_0001_0101_0000, 0x0000_0101_0001_0000: 0x0000_0000_0001_0000, 0x0000_0101_0100_0000: 0x0000_0000_0101_0000, 0x0000_0101_0101_0000: 0x0000_0000_0001_0000, + 0x0001_0000_0000_0000: 0x0001_0101_0101_0000, 0x0001_0000_0001_0000: 0x0000_0000_0001_0000, 0x0001_0000_0100_0000: 0x0000_0000_0101_0000, 0x0001_0000_0101_0000: 0x0000_0000_0001_0000, + 0x0001_0001_0000_0000: 0x0000_0001_0101_0000, 0x0001_0001_0001_0000: 0x0000_0000_0001_0000, 0x0001_0001_0100_0000: 0x0000_0000_0101_0000, 0x0001_0001_0101_0000: 0x0000_0000_0001_0000, + 0x0001_0100_0000_0000: 0x0000_0101_0101_0000, 0x0001_0100_0001_0000: 0x0000_0000_0001_0000, 0x0001_0100_0100_0000: 0x0000_0000_0101_0000, 0x0001_0100_0101_0000: 0x0000_0000_0001_0000, + 0x0001_0101_0000_0000: 0x0000_0001_0101_0000, 0x0001_0101_0001_0000: 0x0000_0000_0001_0000, 0x0001_0101_0100_0000: 0x0000_0000_0101_0000, 0x0001_0101_0101_0000: 0x0000_0000_0001_0000, + 0x0100_0000_0000_0000: 0x0101_0101_0101_0000, 0x0100_0000_0001_0000: 0x0000_0000_0001_0000, 0x0100_0000_0100_0000: 0x0000_0000_0101_0000, 0x0100_0000_0101_0000: 0x0000_0000_0001_0000, + 0x0100_0001_0000_0000: 0x0000_0001_0101_0000, 0x0100_0001_0001_0000: 0x0000_0000_0001_0000, 0x0100_0001_0100_0000: 0x0000_0000_0101_0000, 0x0100_0001_0101_0000: 0x0000_0000_0001_0000, + 0x0100_0100_0000_0000: 0x0000_0101_0101_0000, 0x0100_0100_0001_0000: 0x0000_0000_0001_0000, 0x0100_0100_0100_0000: 0x0000_0000_0101_0000, 0x0100_0100_0101_0000: 0x0000_0000_0001_0000, + 0x0100_0101_0000_0000: 0x0000_0001_0101_0000, 0x0100_0101_0001_0000: 0x0000_0000_0001_0000, 0x0100_0101_0100_0000: 0x0000_0000_0101_0000, 0x0100_0101_0101_0000: 0x0000_0000_0001_0000, + 0x0101_0000_0000_0000: 0x0001_0101_0101_0000, 0x0101_0000_0001_0000: 0x0000_0000_0001_0000, 0x0101_0000_0100_0000: 0x0000_0000_0101_0000, 0x0101_0000_0101_0000: 0x0000_0000_0001_0000, + 0x0101_0001_0000_0000: 0x0000_0001_0101_0000, 0x0101_0001_0001_0000: 0x0000_0000_0001_0000, 0x0101_0001_0100_0000: 0x0000_0000_0101_0000, 0x0101_0001_0101_0000: 0x0000_0000_0001_0000, + 0x0101_0100_0000_0000: 0x0000_0101_0101_0000, 0x0101_0100_0001_0000: 0x0000_0000_0001_0000, 0x0101_0100_0100_0000: 0x0000_0000_0101_0000, 0x0101_0100_0101_0000: 0x0000_0000_0001_0000, + 0x0101_0101_0000_0000: 0x0000_0001_0101_0000, 0x0101_0101_0001_0000: 0x0000_0000_0001_0000, 0x0101_0101_0100_0000: 0x0000_0000_0101_0000, 0x0101_0101_0101_0000: 0x0000_0000_0001_0000, + }, + { + 0x0000_0000_0000_0000: 0x0202_0202_0202_0000, 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0200_0000: 0x0000_0000_0202_0000, 0x0000_0000_0202_0000: 0x0000_0000_0002_0000, + 0x0000_0002_0000_0000: 0x0000_0002_0202_0000, 0x0000_0002_0002_0000: 0x0000_0000_0002_0000, 0x0000_0002_0200_0000: 0x0000_0000_0202_0000, 0x0000_0002_0202_0000: 0x0000_0000_0002_0000, + 0x0000_0200_0000_0000: 0x0000_0202_0202_0000, 0x0000_0200_0002_0000: 0x0000_0000_0002_0000, 0x0000_0200_0200_0000: 0x0000_0000_0202_0000, 0x0000_0200_0202_0000: 0x0000_0000_0002_0000, + 0x0000_0202_0000_0000: 0x0000_0002_0202_0000, 0x0000_0202_0002_0000: 0x0000_0000_0002_0000, 0x0000_0202_0200_0000: 0x0000_0000_0202_0000, 0x0000_0202_0202_0000: 0x0000_0000_0002_0000, + 0x0002_0000_0000_0000: 0x0002_0202_0202_0000, 0x0002_0000_0002_0000: 0x0000_0000_0002_0000, 0x0002_0000_0200_0000: 0x0000_0000_0202_0000, 0x0002_0000_0202_0000: 0x0000_0000_0002_0000, + 0x0002_0002_0000_0000: 0x0000_0002_0202_0000, 0x0002_0002_0002_0000: 0x0000_0000_0002_0000, 0x0002_0002_0200_0000: 0x0000_0000_0202_0000, 0x0002_0002_0202_0000: 0x0000_0000_0002_0000, + 0x0002_0200_0000_0000: 0x0000_0202_0202_0000, 0x0002_0200_0002_0000: 0x0000_0000_0002_0000, 0x0002_0200_0200_0000: 0x0000_0000_0202_0000, 0x0002_0200_0202_0000: 0x0000_0000_0002_0000, + 0x0002_0202_0000_0000: 0x0000_0002_0202_0000, 0x0002_0202_0002_0000: 0x0000_0000_0002_0000, 0x0002_0202_0200_0000: 0x0000_0000_0202_0000, 0x0002_0202_0202_0000: 0x0000_0000_0002_0000, + 0x0200_0000_0000_0000: 0x0202_0202_0202_0000, 0x0200_0000_0002_0000: 0x0000_0000_0002_0000, 0x0200_0000_0200_0000: 0x0000_0000_0202_0000, 0x0200_0000_0202_0000: 0x0000_0000_0002_0000, + 0x0200_0002_0000_0000: 0x0000_0002_0202_0000, 0x0200_0002_0002_0000: 0x0000_0000_0002_0000, 0x0200_0002_0200_0000: 0x0000_0000_0202_0000, 0x0200_0002_0202_0000: 0x0000_0000_0002_0000, + 0x0200_0200_0000_0000: 0x0000_0202_0202_0000, 0x0200_0200_0002_0000: 0x0000_0000_0002_0000, 0x0200_0200_0200_0000: 0x0000_0000_0202_0000, 0x0200_0200_0202_0000: 0x0000_0000_0002_0000, + 0x0200_0202_0000_0000: 0x0000_0002_0202_0000, 0x0200_0202_0002_0000: 0x0000_0000_0002_0000, 0x0200_0202_0200_0000: 0x0000_0000_0202_0000, 0x0200_0202_0202_0000: 0x0000_0000_0002_0000, + 0x0202_0000_0000_0000: 0x0002_0202_0202_0000, 0x0202_0000_0002_0000: 0x0000_0000_0002_0000, 0x0202_0000_0200_0000: 0x0000_0000_0202_0000, 0x0202_0000_0202_0000: 0x0000_0000_0002_0000, + 0x0202_0002_0000_0000: 0x0000_0002_0202_0000, 0x0202_0002_0002_0000: 0x0000_0000_0002_0000, 0x0202_0002_0200_0000: 0x0000_0000_0202_0000, 0x0202_0002_0202_0000: 0x0000_0000_0002_0000, + 0x0202_0200_0000_0000: 0x0000_0202_0202_0000, 0x0202_0200_0002_0000: 0x0000_0000_0002_0000, 0x0202_0200_0200_0000: 0x0000_0000_0202_0000, 0x0202_0200_0202_0000: 0x0000_0000_0002_0000, + 0x0202_0202_0000_0000: 0x0000_0002_0202_0000, 0x0202_0202_0002_0000: 0x0000_0000_0002_0000, 0x0202_0202_0200_0000: 0x0000_0000_0202_0000, 0x0202_0202_0202_0000: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0404_0404_0404_0000, 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0400_0000: 0x0000_0000_0404_0000, 0x0000_0000_0404_0000: 0x0000_0000_0004_0000, + 0x0000_0004_0000_0000: 0x0000_0004_0404_0000, 0x0000_0004_0004_0000: 0x0000_0000_0004_0000, 0x0000_0004_0400_0000: 0x0000_0000_0404_0000, 0x0000_0004_0404_0000: 0x0000_0000_0004_0000, + 0x0000_0400_0000_0000: 0x0000_0404_0404_0000, 0x0000_0400_0004_0000: 0x0000_0000_0004_0000, 0x0000_0400_0400_0000: 0x0000_0000_0404_0000, 0x0000_0400_0404_0000: 0x0000_0000_0004_0000, + 0x0000_0404_0000_0000: 0x0000_0004_0404_0000, 0x0000_0404_0004_0000: 0x0000_0000_0004_0000, 0x0000_0404_0400_0000: 0x0000_0000_0404_0000, 0x0000_0404_0404_0000: 0x0000_0000_0004_0000, + 0x0004_0000_0000_0000: 0x0004_0404_0404_0000, 0x0004_0000_0004_0000: 0x0000_0000_0004_0000, 0x0004_0000_0400_0000: 0x0000_0000_0404_0000, 0x0004_0000_0404_0000: 0x0000_0000_0004_0000, + 0x0004_0004_0000_0000: 0x0000_0004_0404_0000, 0x0004_0004_0004_0000: 0x0000_0000_0004_0000, 0x0004_0004_0400_0000: 0x0000_0000_0404_0000, 0x0004_0004_0404_0000: 0x0000_0000_0004_0000, + 0x0004_0400_0000_0000: 0x0000_0404_0404_0000, 0x0004_0400_0004_0000: 0x0000_0000_0004_0000, 0x0004_0400_0400_0000: 0x0000_0000_0404_0000, 0x0004_0400_0404_0000: 0x0000_0000_0004_0000, + 0x0004_0404_0000_0000: 0x0000_0004_0404_0000, 0x0004_0404_0004_0000: 0x0000_0000_0004_0000, 0x0004_0404_0400_0000: 0x0000_0000_0404_0000, 0x0004_0404_0404_0000: 0x0000_0000_0004_0000, + 0x0400_0000_0000_0000: 0x0404_0404_0404_0000, 0x0400_0000_0004_0000: 0x0000_0000_0004_0000, 0x0400_0000_0400_0000: 0x0000_0000_0404_0000, 0x0400_0000_0404_0000: 0x0000_0000_0004_0000, + 0x0400_0004_0000_0000: 0x0000_0004_0404_0000, 0x0400_0004_0004_0000: 0x0000_0000_0004_0000, 0x0400_0004_0400_0000: 0x0000_0000_0404_0000, 0x0400_0004_0404_0000: 0x0000_0000_0004_0000, + 0x0400_0400_0000_0000: 0x0000_0404_0404_0000, 0x0400_0400_0004_0000: 0x0000_0000_0004_0000, 0x0400_0400_0400_0000: 0x0000_0000_0404_0000, 0x0400_0400_0404_0000: 0x0000_0000_0004_0000, + 0x0400_0404_0000_0000: 0x0000_0004_0404_0000, 0x0400_0404_0004_0000: 0x0000_0000_0004_0000, 0x0400_0404_0400_0000: 0x0000_0000_0404_0000, 0x0400_0404_0404_0000: 0x0000_0000_0004_0000, + 0x0404_0000_0000_0000: 0x0004_0404_0404_0000, 0x0404_0000_0004_0000: 0x0000_0000_0004_0000, 0x0404_0000_0400_0000: 0x0000_0000_0404_0000, 0x0404_0000_0404_0000: 0x0000_0000_0004_0000, + 0x0404_0004_0000_0000: 0x0000_0004_0404_0000, 0x0404_0004_0004_0000: 0x0000_0000_0004_0000, 0x0404_0004_0400_0000: 0x0000_0000_0404_0000, 0x0404_0004_0404_0000: 0x0000_0000_0004_0000, + 0x0404_0400_0000_0000: 0x0000_0404_0404_0000, 0x0404_0400_0004_0000: 0x0000_0000_0004_0000, 0x0404_0400_0400_0000: 0x0000_0000_0404_0000, 0x0404_0400_0404_0000: 0x0000_0000_0004_0000, + 0x0404_0404_0000_0000: 0x0000_0004_0404_0000, 0x0404_0404_0004_0000: 0x0000_0000_0004_0000, 0x0404_0404_0400_0000: 0x0000_0000_0404_0000, 0x0404_0404_0404_0000: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0808_0808_0808_0000, 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0800_0000: 0x0000_0000_0808_0000, 0x0000_0000_0808_0000: 0x0000_0000_0008_0000, + 0x0000_0008_0000_0000: 0x0000_0008_0808_0000, 0x0000_0008_0008_0000: 0x0000_0000_0008_0000, 0x0000_0008_0800_0000: 0x0000_0000_0808_0000, 0x0000_0008_0808_0000: 0x0000_0000_0008_0000, + 0x0000_0800_0000_0000: 0x0000_0808_0808_0000, 0x0000_0800_0008_0000: 0x0000_0000_0008_0000, 0x0000_0800_0800_0000: 0x0000_0000_0808_0000, 0x0000_0800_0808_0000: 0x0000_0000_0008_0000, + 0x0000_0808_0000_0000: 0x0000_0008_0808_0000, 0x0000_0808_0008_0000: 0x0000_0000_0008_0000, 0x0000_0808_0800_0000: 0x0000_0000_0808_0000, 0x0000_0808_0808_0000: 0x0000_0000_0008_0000, + 0x0008_0000_0000_0000: 0x0008_0808_0808_0000, 0x0008_0000_0008_0000: 0x0000_0000_0008_0000, 0x0008_0000_0800_0000: 0x0000_0000_0808_0000, 0x0008_0000_0808_0000: 0x0000_0000_0008_0000, + 0x0008_0008_0000_0000: 0x0000_0008_0808_0000, 0x0008_0008_0008_0000: 0x0000_0000_0008_0000, 0x0008_0008_0800_0000: 0x0000_0000_0808_0000, 0x0008_0008_0808_0000: 0x0000_0000_0008_0000, + 0x0008_0800_0000_0000: 0x0000_0808_0808_0000, 0x0008_0800_0008_0000: 0x0000_0000_0008_0000, 0x0008_0800_0800_0000: 0x0000_0000_0808_0000, 0x0008_0800_0808_0000: 0x0000_0000_0008_0000, + 0x0008_0808_0000_0000: 0x0000_0008_0808_0000, 0x0008_0808_0008_0000: 0x0000_0000_0008_0000, 0x0008_0808_0800_0000: 0x0000_0000_0808_0000, 0x0008_0808_0808_0000: 0x0000_0000_0008_0000, + 0x0800_0000_0000_0000: 0x0808_0808_0808_0000, 0x0800_0000_0008_0000: 0x0000_0000_0008_0000, 0x0800_0000_0800_0000: 0x0000_0000_0808_0000, 0x0800_0000_0808_0000: 0x0000_0000_0008_0000, + 0x0800_0008_0000_0000: 0x0000_0008_0808_0000, 0x0800_0008_0008_0000: 0x0000_0000_0008_0000, 0x0800_0008_0800_0000: 0x0000_0000_0808_0000, 0x0800_0008_0808_0000: 0x0000_0000_0008_0000, + 0x0800_0800_0000_0000: 0x0000_0808_0808_0000, 0x0800_0800_0008_0000: 0x0000_0000_0008_0000, 0x0800_0800_0800_0000: 0x0000_0000_0808_0000, 0x0800_0800_0808_0000: 0x0000_0000_0008_0000, + 0x0800_0808_0000_0000: 0x0000_0008_0808_0000, 0x0800_0808_0008_0000: 0x0000_0000_0008_0000, 0x0800_0808_0800_0000: 0x0000_0000_0808_0000, 0x0800_0808_0808_0000: 0x0000_0000_0008_0000, + 0x0808_0000_0000_0000: 0x0008_0808_0808_0000, 0x0808_0000_0008_0000: 0x0000_0000_0008_0000, 0x0808_0000_0800_0000: 0x0000_0000_0808_0000, 0x0808_0000_0808_0000: 0x0000_0000_0008_0000, + 0x0808_0008_0000_0000: 0x0000_0008_0808_0000, 0x0808_0008_0008_0000: 0x0000_0000_0008_0000, 0x0808_0008_0800_0000: 0x0000_0000_0808_0000, 0x0808_0008_0808_0000: 0x0000_0000_0008_0000, + 0x0808_0800_0000_0000: 0x0000_0808_0808_0000, 0x0808_0800_0008_0000: 0x0000_0000_0008_0000, 0x0808_0800_0800_0000: 0x0000_0000_0808_0000, 0x0808_0800_0808_0000: 0x0000_0000_0008_0000, + 0x0808_0808_0000_0000: 0x0000_0008_0808_0000, 0x0808_0808_0008_0000: 0x0000_0000_0008_0000, 0x0808_0808_0800_0000: 0x0000_0000_0808_0000, 0x0808_0808_0808_0000: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x1010_1010_1010_0000, 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_1000_0000: 0x0000_0000_1010_0000, 0x0000_0000_1010_0000: 0x0000_0000_0010_0000, + 0x0000_0010_0000_0000: 0x0000_0010_1010_0000, 0x0000_0010_0010_0000: 0x0000_0000_0010_0000, 0x0000_0010_1000_0000: 0x0000_0000_1010_0000, 0x0000_0010_1010_0000: 0x0000_0000_0010_0000, + 0x0000_1000_0000_0000: 0x0000_1010_1010_0000, 0x0000_1000_0010_0000: 0x0000_0000_0010_0000, 0x0000_1000_1000_0000: 0x0000_0000_1010_0000, 0x0000_1000_1010_0000: 0x0000_0000_0010_0000, + 0x0000_1010_0000_0000: 0x0000_0010_1010_0000, 0x0000_1010_0010_0000: 0x0000_0000_0010_0000, 0x0000_1010_1000_0000: 0x0000_0000_1010_0000, 0x0000_1010_1010_0000: 0x0000_0000_0010_0000, + 0x0010_0000_0000_0000: 0x0010_1010_1010_0000, 0x0010_0000_0010_0000: 0x0000_0000_0010_0000, 0x0010_0000_1000_0000: 0x0000_0000_1010_0000, 0x0010_0000_1010_0000: 0x0000_0000_0010_0000, + 0x0010_0010_0000_0000: 0x0000_0010_1010_0000, 0x0010_0010_0010_0000: 0x0000_0000_0010_0000, 0x0010_0010_1000_0000: 0x0000_0000_1010_0000, 0x0010_0010_1010_0000: 0x0000_0000_0010_0000, + 0x0010_1000_0000_0000: 0x0000_1010_1010_0000, 0x0010_1000_0010_0000: 0x0000_0000_0010_0000, 0x0010_1000_1000_0000: 0x0000_0000_1010_0000, 0x0010_1000_1010_0000: 0x0000_0000_0010_0000, + 0x0010_1010_0000_0000: 0x0000_0010_1010_0000, 0x0010_1010_0010_0000: 0x0000_0000_0010_0000, 0x0010_1010_1000_0000: 0x0000_0000_1010_0000, 0x0010_1010_1010_0000: 0x0000_0000_0010_0000, + 0x1000_0000_0000_0000: 0x1010_1010_1010_0000, 0x1000_0000_0010_0000: 0x0000_0000_0010_0000, 0x1000_0000_1000_0000: 0x0000_0000_1010_0000, 0x1000_0000_1010_0000: 0x0000_0000_0010_0000, + 0x1000_0010_0000_0000: 0x0000_0010_1010_0000, 0x1000_0010_0010_0000: 0x0000_0000_0010_0000, 0x1000_0010_1000_0000: 0x0000_0000_1010_0000, 0x1000_0010_1010_0000: 0x0000_0000_0010_0000, + 0x1000_1000_0000_0000: 0x0000_1010_1010_0000, 0x1000_1000_0010_0000: 0x0000_0000_0010_0000, 0x1000_1000_1000_0000: 0x0000_0000_1010_0000, 0x1000_1000_1010_0000: 0x0000_0000_0010_0000, + 0x1000_1010_0000_0000: 0x0000_0010_1010_0000, 0x1000_1010_0010_0000: 0x0000_0000_0010_0000, 0x1000_1010_1000_0000: 0x0000_0000_1010_0000, 0x1000_1010_1010_0000: 0x0000_0000_0010_0000, + 0x1010_0000_0000_0000: 0x0010_1010_1010_0000, 0x1010_0000_0010_0000: 0x0000_0000_0010_0000, 0x1010_0000_1000_0000: 0x0000_0000_1010_0000, 0x1010_0000_1010_0000: 0x0000_0000_0010_0000, + 0x1010_0010_0000_0000: 0x0000_0010_1010_0000, 0x1010_0010_0010_0000: 0x0000_0000_0010_0000, 0x1010_0010_1000_0000: 0x0000_0000_1010_0000, 0x1010_0010_1010_0000: 0x0000_0000_0010_0000, + 0x1010_1000_0000_0000: 0x0000_1010_1010_0000, 0x1010_1000_0010_0000: 0x0000_0000_0010_0000, 0x1010_1000_1000_0000: 0x0000_0000_1010_0000, 0x1010_1000_1010_0000: 0x0000_0000_0010_0000, + 0x1010_1010_0000_0000: 0x0000_0010_1010_0000, 0x1010_1010_0010_0000: 0x0000_0000_0010_0000, 0x1010_1010_1000_0000: 0x0000_0000_1010_0000, 0x1010_1010_1010_0000: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x2020_2020_2020_0000, 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_2000_0000: 0x0000_0000_2020_0000, 0x0000_0000_2020_0000: 0x0000_0000_0020_0000, + 0x0000_0020_0000_0000: 0x0000_0020_2020_0000, 0x0000_0020_0020_0000: 0x0000_0000_0020_0000, 0x0000_0020_2000_0000: 0x0000_0000_2020_0000, 0x0000_0020_2020_0000: 0x0000_0000_0020_0000, + 0x0000_2000_0000_0000: 0x0000_2020_2020_0000, 0x0000_2000_0020_0000: 0x0000_0000_0020_0000, 0x0000_2000_2000_0000: 0x0000_0000_2020_0000, 0x0000_2000_2020_0000: 0x0000_0000_0020_0000, + 0x0000_2020_0000_0000: 0x0000_0020_2020_0000, 0x0000_2020_0020_0000: 0x0000_0000_0020_0000, 0x0000_2020_2000_0000: 0x0000_0000_2020_0000, 0x0000_2020_2020_0000: 0x0000_0000_0020_0000, + 0x0020_0000_0000_0000: 0x0020_2020_2020_0000, 0x0020_0000_0020_0000: 0x0000_0000_0020_0000, 0x0020_0000_2000_0000: 0x0000_0000_2020_0000, 0x0020_0000_2020_0000: 0x0000_0000_0020_0000, + 0x0020_0020_0000_0000: 0x0000_0020_2020_0000, 0x0020_0020_0020_0000: 0x0000_0000_0020_0000, 0x0020_0020_2000_0000: 0x0000_0000_2020_0000, 0x0020_0020_2020_0000: 0x0000_0000_0020_0000, + 0x0020_2000_0000_0000: 0x0000_2020_2020_0000, 0x0020_2000_0020_0000: 0x0000_0000_0020_0000, 0x0020_2000_2000_0000: 0x0000_0000_2020_0000, 0x0020_2000_2020_0000: 0x0000_0000_0020_0000, + 0x0020_2020_0000_0000: 0x0000_0020_2020_0000, 0x0020_2020_0020_0000: 0x0000_0000_0020_0000, 0x0020_2020_2000_0000: 0x0000_0000_2020_0000, 0x0020_2020_2020_0000: 0x0000_0000_0020_0000, + 0x2000_0000_0000_0000: 0x2020_2020_2020_0000, 0x2000_0000_0020_0000: 0x0000_0000_0020_0000, 0x2000_0000_2000_0000: 0x0000_0000_2020_0000, 0x2000_0000_2020_0000: 0x0000_0000_0020_0000, + 0x2000_0020_0000_0000: 0x0000_0020_2020_0000, 0x2000_0020_0020_0000: 0x0000_0000_0020_0000, 0x2000_0020_2000_0000: 0x0000_0000_2020_0000, 0x2000_0020_2020_0000: 0x0000_0000_0020_0000, + 0x2000_2000_0000_0000: 0x0000_2020_2020_0000, 0x2000_2000_0020_0000: 0x0000_0000_0020_0000, 0x2000_2000_2000_0000: 0x0000_0000_2020_0000, 0x2000_2000_2020_0000: 0x0000_0000_0020_0000, + 0x2000_2020_0000_0000: 0x0000_0020_2020_0000, 0x2000_2020_0020_0000: 0x0000_0000_0020_0000, 0x2000_2020_2000_0000: 0x0000_0000_2020_0000, 0x2000_2020_2020_0000: 0x0000_0000_0020_0000, + 0x2020_0000_0000_0000: 0x0020_2020_2020_0000, 0x2020_0000_0020_0000: 0x0000_0000_0020_0000, 0x2020_0000_2000_0000: 0x0000_0000_2020_0000, 0x2020_0000_2020_0000: 0x0000_0000_0020_0000, + 0x2020_0020_0000_0000: 0x0000_0020_2020_0000, 0x2020_0020_0020_0000: 0x0000_0000_0020_0000, 0x2020_0020_2000_0000: 0x0000_0000_2020_0000, 0x2020_0020_2020_0000: 0x0000_0000_0020_0000, + 0x2020_2000_0000_0000: 0x0000_2020_2020_0000, 0x2020_2000_0020_0000: 0x0000_0000_0020_0000, 0x2020_2000_2000_0000: 0x0000_0000_2020_0000, 0x2020_2000_2020_0000: 0x0000_0000_0020_0000, + 0x2020_2020_0000_0000: 0x0000_0020_2020_0000, 0x2020_2020_0020_0000: 0x0000_0000_0020_0000, 0x2020_2020_2000_0000: 0x0000_0000_2020_0000, 0x2020_2020_2020_0000: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x4040_4040_4040_0000, 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_4000_0000: 0x0000_0000_4040_0000, 0x0000_0000_4040_0000: 0x0000_0000_0040_0000, + 0x0000_0040_0000_0000: 0x0000_0040_4040_0000, 0x0000_0040_0040_0000: 0x0000_0000_0040_0000, 0x0000_0040_4000_0000: 0x0000_0000_4040_0000, 0x0000_0040_4040_0000: 0x0000_0000_0040_0000, + 0x0000_4000_0000_0000: 0x0000_4040_4040_0000, 0x0000_4000_0040_0000: 0x0000_0000_0040_0000, 0x0000_4000_4000_0000: 0x0000_0000_4040_0000, 0x0000_4000_4040_0000: 0x0000_0000_0040_0000, + 0x0000_4040_0000_0000: 0x0000_0040_4040_0000, 0x0000_4040_0040_0000: 0x0000_0000_0040_0000, 0x0000_4040_4000_0000: 0x0000_0000_4040_0000, 0x0000_4040_4040_0000: 0x0000_0000_0040_0000, + 0x0040_0000_0000_0000: 0x0040_4040_4040_0000, 0x0040_0000_0040_0000: 0x0000_0000_0040_0000, 0x0040_0000_4000_0000: 0x0000_0000_4040_0000, 0x0040_0000_4040_0000: 0x0000_0000_0040_0000, + 0x0040_0040_0000_0000: 0x0000_0040_4040_0000, 0x0040_0040_0040_0000: 0x0000_0000_0040_0000, 0x0040_0040_4000_0000: 0x0000_0000_4040_0000, 0x0040_0040_4040_0000: 0x0000_0000_0040_0000, + 0x0040_4000_0000_0000: 0x0000_4040_4040_0000, 0x0040_4000_0040_0000: 0x0000_0000_0040_0000, 0x0040_4000_4000_0000: 0x0000_0000_4040_0000, 0x0040_4000_4040_0000: 0x0000_0000_0040_0000, + 0x0040_4040_0000_0000: 0x0000_0040_4040_0000, 0x0040_4040_0040_0000: 0x0000_0000_0040_0000, 0x0040_4040_4000_0000: 0x0000_0000_4040_0000, 0x0040_4040_4040_0000: 0x0000_0000_0040_0000, + 0x4000_0000_0000_0000: 0x4040_4040_4040_0000, 0x4000_0000_0040_0000: 0x0000_0000_0040_0000, 0x4000_0000_4000_0000: 0x0000_0000_4040_0000, 0x4000_0000_4040_0000: 0x0000_0000_0040_0000, + 0x4000_0040_0000_0000: 0x0000_0040_4040_0000, 0x4000_0040_0040_0000: 0x0000_0000_0040_0000, 0x4000_0040_4000_0000: 0x0000_0000_4040_0000, 0x4000_0040_4040_0000: 0x0000_0000_0040_0000, + 0x4000_4000_0000_0000: 0x0000_4040_4040_0000, 0x4000_4000_0040_0000: 0x0000_0000_0040_0000, 0x4000_4000_4000_0000: 0x0000_0000_4040_0000, 0x4000_4000_4040_0000: 0x0000_0000_0040_0000, + 0x4000_4040_0000_0000: 0x0000_0040_4040_0000, 0x4000_4040_0040_0000: 0x0000_0000_0040_0000, 0x4000_4040_4000_0000: 0x0000_0000_4040_0000, 0x4000_4040_4040_0000: 0x0000_0000_0040_0000, + 0x4040_0000_0000_0000: 0x0040_4040_4040_0000, 0x4040_0000_0040_0000: 0x0000_0000_0040_0000, 0x4040_0000_4000_0000: 0x0000_0000_4040_0000, 0x4040_0000_4040_0000: 0x0000_0000_0040_0000, + 0x4040_0040_0000_0000: 0x0000_0040_4040_0000, 0x4040_0040_0040_0000: 0x0000_0000_0040_0000, 0x4040_0040_4000_0000: 0x0000_0000_4040_0000, 0x4040_0040_4040_0000: 0x0000_0000_0040_0000, + 0x4040_4000_0000_0000: 0x0000_4040_4040_0000, 0x4040_4000_0040_0000: 0x0000_0000_0040_0000, 0x4040_4000_4000_0000: 0x0000_0000_4040_0000, 0x4040_4000_4040_0000: 0x0000_0000_0040_0000, + 0x4040_4040_0000_0000: 0x0000_0040_4040_0000, 0x4040_4040_0040_0000: 0x0000_0000_0040_0000, 0x4040_4040_4000_0000: 0x0000_0000_4040_0000, 0x4040_4040_4040_0000: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x8080_8080_8080_0000, 0x0000_0000_0080_0000: 0x0000_0000_0080_0000, 0x0000_0000_8000_0000: 0x0000_0000_8080_0000, 0x0000_0000_8080_0000: 0x0000_0000_0080_0000, + 0x0000_0080_0000_0000: 0x0000_0080_8080_0000, 0x0000_0080_0080_0000: 0x0000_0000_0080_0000, 0x0000_0080_8000_0000: 0x0000_0000_8080_0000, 0x0000_0080_8080_0000: 0x0000_0000_0080_0000, + 0x0000_8000_0000_0000: 0x0000_8080_8080_0000, 0x0000_8000_0080_0000: 0x0000_0000_0080_0000, 0x0000_8000_8000_0000: 0x0000_0000_8080_0000, 0x0000_8000_8080_0000: 0x0000_0000_0080_0000, + 0x0000_8080_0000_0000: 0x0000_0080_8080_0000, 0x0000_8080_0080_0000: 0x0000_0000_0080_0000, 0x0000_8080_8000_0000: 0x0000_0000_8080_0000, 0x0000_8080_8080_0000: 0x0000_0000_0080_0000, + 0x0080_0000_0000_0000: 0x0080_8080_8080_0000, 0x0080_0000_0080_0000: 0x0000_0000_0080_0000, 0x0080_0000_8000_0000: 0x0000_0000_8080_0000, 0x0080_0000_8080_0000: 0x0000_0000_0080_0000, + 0x0080_0080_0000_0000: 0x0000_0080_8080_0000, 0x0080_0080_0080_0000: 0x0000_0000_0080_0000, 0x0080_0080_8000_0000: 0x0000_0000_8080_0000, 0x0080_0080_8080_0000: 0x0000_0000_0080_0000, + 0x0080_8000_0000_0000: 0x0000_8080_8080_0000, 0x0080_8000_0080_0000: 0x0000_0000_0080_0000, 0x0080_8000_8000_0000: 0x0000_0000_8080_0000, 0x0080_8000_8080_0000: 0x0000_0000_0080_0000, + 0x0080_8080_0000_0000: 0x0000_0080_8080_0000, 0x0080_8080_0080_0000: 0x0000_0000_0080_0000, 0x0080_8080_8000_0000: 0x0000_0000_8080_0000, 0x0080_8080_8080_0000: 0x0000_0000_0080_0000, + 0x8000_0000_0000_0000: 0x8080_8080_8080_0000, 0x8000_0000_0080_0000: 0x0000_0000_0080_0000, 0x8000_0000_8000_0000: 0x0000_0000_8080_0000, 0x8000_0000_8080_0000: 0x0000_0000_0080_0000, + 0x8000_0080_0000_0000: 0x0000_0080_8080_0000, 0x8000_0080_0080_0000: 0x0000_0000_0080_0000, 0x8000_0080_8000_0000: 0x0000_0000_8080_0000, 0x8000_0080_8080_0000: 0x0000_0000_0080_0000, + 0x8000_8000_0000_0000: 0x0000_8080_8080_0000, 0x8000_8000_0080_0000: 0x0000_0000_0080_0000, 0x8000_8000_8000_0000: 0x0000_0000_8080_0000, 0x8000_8000_8080_0000: 0x0000_0000_0080_0000, + 0x8000_8080_0000_0000: 0x0000_0080_8080_0000, 0x8000_8080_0080_0000: 0x0000_0000_0080_0000, 0x8000_8080_8000_0000: 0x0000_0000_8080_0000, 0x8000_8080_8080_0000: 0x0000_0000_0080_0000, + 0x8080_0000_0000_0000: 0x0080_8080_8080_0000, 0x8080_0000_0080_0000: 0x0000_0000_0080_0000, 0x8080_0000_8000_0000: 0x0000_0000_8080_0000, 0x8080_0000_8080_0000: 0x0000_0000_0080_0000, + 0x8080_0080_0000_0000: 0x0000_0080_8080_0000, 0x8080_0080_0080_0000: 0x0000_0000_0080_0000, 0x8080_0080_8000_0000: 0x0000_0000_8080_0000, 0x8080_0080_8080_0000: 0x0000_0000_0080_0000, + 0x8080_8000_0000_0000: 0x0000_8080_8080_0000, 0x8080_8000_0080_0000: 0x0000_0000_0080_0000, 0x8080_8000_8000_0000: 0x0000_0000_8080_0000, 0x8080_8000_8080_0000: 0x0000_0000_0080_0000, + 0x8080_8080_0000_0000: 0x0000_0080_8080_0000, 0x8080_8080_0080_0000: 0x0000_0000_0080_0000, 0x8080_8080_8000_0000: 0x0000_0000_8080_0000, 0x8080_8080_8080_0000: 0x0000_0000_0080_0000, + }, + { + 0x0000_0000_0000_0000: 0x0101_0101_0100_0000, 0x0000_0000_0100_0000: 0x0000_0000_0100_0000, 0x0000_0001_0000_0000: 0x0000_0001_0100_0000, 0x0000_0001_0100_0000: 0x0000_0000_0100_0000, + 0x0000_0100_0000_0000: 0x0000_0101_0100_0000, 0x0000_0100_0100_0000: 0x0000_0000_0100_0000, 0x0000_0101_0000_0000: 0x0000_0001_0100_0000, 0x0000_0101_0100_0000: 0x0000_0000_0100_0000, + 0x0001_0000_0000_0000: 0x0001_0101_0100_0000, 0x0001_0000_0100_0000: 0x0000_0000_0100_0000, 0x0001_0001_0000_0000: 0x0000_0001_0100_0000, 0x0001_0001_0100_0000: 0x0000_0000_0100_0000, + 0x0001_0100_0000_0000: 0x0000_0101_0100_0000, 0x0001_0100_0100_0000: 0x0000_0000_0100_0000, 0x0001_0101_0000_0000: 0x0000_0001_0100_0000, 0x0001_0101_0100_0000: 0x0000_0000_0100_0000, + 0x0100_0000_0000_0000: 0x0101_0101_0100_0000, 0x0100_0000_0100_0000: 0x0000_0000_0100_0000, 0x0100_0001_0000_0000: 0x0000_0001_0100_0000, 0x0100_0001_0100_0000: 0x0000_0000_0100_0000, + 0x0100_0100_0000_0000: 0x0000_0101_0100_0000, 0x0100_0100_0100_0000: 0x0000_0000_0100_0000, 0x0100_0101_0000_0000: 0x0000_0001_0100_0000, 0x0100_0101_0100_0000: 0x0000_0000_0100_0000, + 0x0101_0000_0000_0000: 0x0001_0101_0100_0000, 0x0101_0000_0100_0000: 0x0000_0000_0100_0000, 0x0101_0001_0000_0000: 0x0000_0001_0100_0000, 0x0101_0001_0100_0000: 0x0000_0000_0100_0000, + 0x0101_0100_0000_0000: 0x0000_0101_0100_0000, 0x0101_0100_0100_0000: 0x0000_0000_0100_0000, 0x0101_0101_0000_0000: 0x0000_0001_0100_0000, 0x0101_0101_0100_0000: 0x0000_0000_0100_0000, + }, + { + 0x0000_0000_0000_0000: 0x0202_0202_0200_0000, 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0002_0000_0000: 0x0000_0002_0200_0000, 0x0000_0002_0200_0000: 0x0000_0000_0200_0000, + 0x0000_0200_0000_0000: 0x0000_0202_0200_0000, 0x0000_0200_0200_0000: 0x0000_0000_0200_0000, 0x0000_0202_0000_0000: 0x0000_0002_0200_0000, 0x0000_0202_0200_0000: 0x0000_0000_0200_0000, + 0x0002_0000_0000_0000: 0x0002_0202_0200_0000, 0x0002_0000_0200_0000: 0x0000_0000_0200_0000, 0x0002_0002_0000_0000: 0x0000_0002_0200_0000, 0x0002_0002_0200_0000: 0x0000_0000_0200_0000, + 0x0002_0200_0000_0000: 0x0000_0202_0200_0000, 0x0002_0200_0200_0000: 0x0000_0000_0200_0000, 0x0002_0202_0000_0000: 0x0000_0002_0200_0000, 0x0002_0202_0200_0000: 0x0000_0000_0200_0000, + 0x0200_0000_0000_0000: 0x0202_0202_0200_0000, 0x0200_0000_0200_0000: 0x0000_0000_0200_0000, 0x0200_0002_0000_0000: 0x0000_0002_0200_0000, 0x0200_0002_0200_0000: 0x0000_0000_0200_0000, + 0x0200_0200_0000_0000: 0x0000_0202_0200_0000, 0x0200_0200_0200_0000: 0x0000_0000_0200_0000, 0x0200_0202_0000_0000: 0x0000_0002_0200_0000, 0x0200_0202_0200_0000: 0x0000_0000_0200_0000, + 0x0202_0000_0000_0000: 0x0002_0202_0200_0000, 0x0202_0000_0200_0000: 0x0000_0000_0200_0000, 0x0202_0002_0000_0000: 0x0000_0002_0200_0000, 0x0202_0002_0200_0000: 0x0000_0000_0200_0000, + 0x0202_0200_0000_0000: 0x0000_0202_0200_0000, 0x0202_0200_0200_0000: 0x0000_0000_0200_0000, 0x0202_0202_0000_0000: 0x0000_0002_0200_0000, 0x0202_0202_0200_0000: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0404_0404_0400_0000, 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0004_0000_0000: 0x0000_0004_0400_0000, 0x0000_0004_0400_0000: 0x0000_0000_0400_0000, + 0x0000_0400_0000_0000: 0x0000_0404_0400_0000, 0x0000_0400_0400_0000: 0x0000_0000_0400_0000, 0x0000_0404_0000_0000: 0x0000_0004_0400_0000, 0x0000_0404_0400_0000: 0x0000_0000_0400_0000, + 0x0004_0000_0000_0000: 0x0004_0404_0400_0000, 0x0004_0000_0400_0000: 0x0000_0000_0400_0000, 0x0004_0004_0000_0000: 0x0000_0004_0400_0000, 0x0004_0004_0400_0000: 0x0000_0000_0400_0000, + 0x0004_0400_0000_0000: 0x0000_0404_0400_0000, 0x0004_0400_0400_0000: 0x0000_0000_0400_0000, 0x0004_0404_0000_0000: 0x0000_0004_0400_0000, 0x0004_0404_0400_0000: 0x0000_0000_0400_0000, + 0x0400_0000_0000_0000: 0x0404_0404_0400_0000, 0x0400_0000_0400_0000: 0x0000_0000_0400_0000, 0x0400_0004_0000_0000: 0x0000_0004_0400_0000, 0x0400_0004_0400_0000: 0x0000_0000_0400_0000, + 0x0400_0400_0000_0000: 0x0000_0404_0400_0000, 0x0400_0400_0400_0000: 0x0000_0000_0400_0000, 0x0400_0404_0000_0000: 0x0000_0004_0400_0000, 0x0400_0404_0400_0000: 0x0000_0000_0400_0000, + 0x0404_0000_0000_0000: 0x0004_0404_0400_0000, 0x0404_0000_0400_0000: 0x0000_0000_0400_0000, 0x0404_0004_0000_0000: 0x0000_0004_0400_0000, 0x0404_0004_0400_0000: 0x0000_0000_0400_0000, + 0x0404_0400_0000_0000: 0x0000_0404_0400_0000, 0x0404_0400_0400_0000: 0x0000_0000_0400_0000, 0x0404_0404_0000_0000: 0x0000_0004_0400_0000, 0x0404_0404_0400_0000: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0808_0808_0800_0000, 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0008_0000_0000: 0x0000_0008_0800_0000, 0x0000_0008_0800_0000: 0x0000_0000_0800_0000, + 0x0000_0800_0000_0000: 0x0000_0808_0800_0000, 0x0000_0800_0800_0000: 0x0000_0000_0800_0000, 0x0000_0808_0000_0000: 0x0000_0008_0800_0000, 0x0000_0808_0800_0000: 0x0000_0000_0800_0000, + 0x0008_0000_0000_0000: 0x0008_0808_0800_0000, 0x0008_0000_0800_0000: 0x0000_0000_0800_0000, 0x0008_0008_0000_0000: 0x0000_0008_0800_0000, 0x0008_0008_0800_0000: 0x0000_0000_0800_0000, + 0x0008_0800_0000_0000: 0x0000_0808_0800_0000, 0x0008_0800_0800_0000: 0x0000_0000_0800_0000, 0x0008_0808_0000_0000: 0x0000_0008_0800_0000, 0x0008_0808_0800_0000: 0x0000_0000_0800_0000, + 0x0800_0000_0000_0000: 0x0808_0808_0800_0000, 0x0800_0000_0800_0000: 0x0000_0000_0800_0000, 0x0800_0008_0000_0000: 0x0000_0008_0800_0000, 0x0800_0008_0800_0000: 0x0000_0000_0800_0000, + 0x0800_0800_0000_0000: 0x0000_0808_0800_0000, 0x0800_0800_0800_0000: 0x0000_0000_0800_0000, 0x0800_0808_0000_0000: 0x0000_0008_0800_0000, 0x0800_0808_0800_0000: 0x0000_0000_0800_0000, + 0x0808_0000_0000_0000: 0x0008_0808_0800_0000, 0x0808_0000_0800_0000: 0x0000_0000_0800_0000, 0x0808_0008_0000_0000: 0x0000_0008_0800_0000, 0x0808_0008_0800_0000: 0x0000_0000_0800_0000, + 0x0808_0800_0000_0000: 0x0000_0808_0800_0000, 0x0808_0800_0800_0000: 0x0000_0000_0800_0000, 0x0808_0808_0000_0000: 0x0000_0008_0800_0000, 0x0808_0808_0800_0000: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x1010_1010_1000_0000, 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0010_0000_0000: 0x0000_0010_1000_0000, 0x0000_0010_1000_0000: 0x0000_0000_1000_0000, + 0x0000_1000_0000_0000: 0x0000_1010_1000_0000, 0x0000_1000_1000_0000: 0x0000_0000_1000_0000, 0x0000_1010_0000_0000: 0x0000_0010_1000_0000, 0x0000_1010_1000_0000: 0x0000_0000_1000_0000, + 0x0010_0000_0000_0000: 0x0010_1010_1000_0000, 0x0010_0000_1000_0000: 0x0000_0000_1000_0000, 0x0010_0010_0000_0000: 0x0000_0010_1000_0000, 0x0010_0010_1000_0000: 0x0000_0000_1000_0000, + 0x0010_1000_0000_0000: 0x0000_1010_1000_0000, 0x0010_1000_1000_0000: 0x0000_0000_1000_0000, 0x0010_1010_0000_0000: 0x0000_0010_1000_0000, 0x0010_1010_1000_0000: 0x0000_0000_1000_0000, + 0x1000_0000_0000_0000: 0x1010_1010_1000_0000, 0x1000_0000_1000_0000: 0x0000_0000_1000_0000, 0x1000_0010_0000_0000: 0x0000_0010_1000_0000, 0x1000_0010_1000_0000: 0x0000_0000_1000_0000, + 0x1000_1000_0000_0000: 0x0000_1010_1000_0000, 0x1000_1000_1000_0000: 0x0000_0000_1000_0000, 0x1000_1010_0000_0000: 0x0000_0010_1000_0000, 0x1000_1010_1000_0000: 0x0000_0000_1000_0000, + 0x1010_0000_0000_0000: 0x0010_1010_1000_0000, 0x1010_0000_1000_0000: 0x0000_0000_1000_0000, 0x1010_0010_0000_0000: 0x0000_0010_1000_0000, 0x1010_0010_1000_0000: 0x0000_0000_1000_0000, + 0x1010_1000_0000_0000: 0x0000_1010_1000_0000, 0x1010_1000_1000_0000: 0x0000_0000_1000_0000, 0x1010_1010_0000_0000: 0x0000_0010_1000_0000, 0x1010_1010_1000_0000: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2020_2020_2000_0000, 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0020_0000_0000: 0x0000_0020_2000_0000, 0x0000_0020_2000_0000: 0x0000_0000_2000_0000, + 0x0000_2000_0000_0000: 0x0000_2020_2000_0000, 0x0000_2000_2000_0000: 0x0000_0000_2000_0000, 0x0000_2020_0000_0000: 0x0000_0020_2000_0000, 0x0000_2020_2000_0000: 0x0000_0000_2000_0000, + 0x0020_0000_0000_0000: 0x0020_2020_2000_0000, 0x0020_0000_2000_0000: 0x0000_0000_2000_0000, 0x0020_0020_0000_0000: 0x0000_0020_2000_0000, 0x0020_0020_2000_0000: 0x0000_0000_2000_0000, + 0x0020_2000_0000_0000: 0x0000_2020_2000_0000, 0x0020_2000_2000_0000: 0x0000_0000_2000_0000, 0x0020_2020_0000_0000: 0x0000_0020_2000_0000, 0x0020_2020_2000_0000: 0x0000_0000_2000_0000, + 0x2000_0000_0000_0000: 0x2020_2020_2000_0000, 0x2000_0000_2000_0000: 0x0000_0000_2000_0000, 0x2000_0020_0000_0000: 0x0000_0020_2000_0000, 0x2000_0020_2000_0000: 0x0000_0000_2000_0000, + 0x2000_2000_0000_0000: 0x0000_2020_2000_0000, 0x2000_2000_2000_0000: 0x0000_0000_2000_0000, 0x2000_2020_0000_0000: 0x0000_0020_2000_0000, 0x2000_2020_2000_0000: 0x0000_0000_2000_0000, + 0x2020_0000_0000_0000: 0x0020_2020_2000_0000, 0x2020_0000_2000_0000: 0x0000_0000_2000_0000, 0x2020_0020_0000_0000: 0x0000_0020_2000_0000, 0x2020_0020_2000_0000: 0x0000_0000_2000_0000, + 0x2020_2000_0000_0000: 0x0000_2020_2000_0000, 0x2020_2000_2000_0000: 0x0000_0000_2000_0000, 0x2020_2020_0000_0000: 0x0000_0020_2000_0000, 0x2020_2020_2000_0000: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4040_4040_4000_0000, 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0040_0000_0000: 0x0000_0040_4000_0000, 0x0000_0040_4000_0000: 0x0000_0000_4000_0000, + 0x0000_4000_0000_0000: 0x0000_4040_4000_0000, 0x0000_4000_4000_0000: 0x0000_0000_4000_0000, 0x0000_4040_0000_0000: 0x0000_0040_4000_0000, 0x0000_4040_4000_0000: 0x0000_0000_4000_0000, + 0x0040_0000_0000_0000: 0x0040_4040_4000_0000, 0x0040_0000_4000_0000: 0x0000_0000_4000_0000, 0x0040_0040_0000_0000: 0x0000_0040_4000_0000, 0x0040_0040_4000_0000: 0x0000_0000_4000_0000, + 0x0040_4000_0000_0000: 0x0000_4040_4000_0000, 0x0040_4000_4000_0000: 0x0000_0000_4000_0000, 0x0040_4040_0000_0000: 0x0000_0040_4000_0000, 0x0040_4040_4000_0000: 0x0000_0000_4000_0000, + 0x4000_0000_0000_0000: 0x4040_4040_4000_0000, 0x4000_0000_4000_0000: 0x0000_0000_4000_0000, 0x4000_0040_0000_0000: 0x0000_0040_4000_0000, 0x4000_0040_4000_0000: 0x0000_0000_4000_0000, + 0x4000_4000_0000_0000: 0x0000_4040_4000_0000, 0x4000_4000_4000_0000: 0x0000_0000_4000_0000, 0x4000_4040_0000_0000: 0x0000_0040_4000_0000, 0x4000_4040_4000_0000: 0x0000_0000_4000_0000, + 0x4040_0000_0000_0000: 0x0040_4040_4000_0000, 0x4040_0000_4000_0000: 0x0000_0000_4000_0000, 0x4040_0040_0000_0000: 0x0000_0040_4000_0000, 0x4040_0040_4000_0000: 0x0000_0000_4000_0000, + 0x4040_4000_0000_0000: 0x0000_4040_4000_0000, 0x4040_4000_4000_0000: 0x0000_0000_4000_0000, 0x4040_4040_0000_0000: 0x0000_0040_4000_0000, 0x4040_4040_4000_0000: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8080_8080_8000_0000, 0x0000_0000_8000_0000: 0x0000_0000_8000_0000, 0x0000_0080_0000_0000: 0x0000_0080_8000_0000, 0x0000_0080_8000_0000: 0x0000_0000_8000_0000, + 0x0000_8000_0000_0000: 0x0000_8080_8000_0000, 0x0000_8000_8000_0000: 0x0000_0000_8000_0000, 0x0000_8080_0000_0000: 0x0000_0080_8000_0000, 0x0000_8080_8000_0000: 0x0000_0000_8000_0000, + 0x0080_0000_0000_0000: 0x0080_8080_8000_0000, 0x0080_0000_8000_0000: 0x0000_0000_8000_0000, 0x0080_0080_0000_0000: 0x0000_0080_8000_0000, 0x0080_0080_8000_0000: 0x0000_0000_8000_0000, + 0x0080_8000_0000_0000: 0x0000_8080_8000_0000, 0x0080_8000_8000_0000: 0x0000_0000_8000_0000, 0x0080_8080_0000_0000: 0x0000_0080_8000_0000, 0x0080_8080_8000_0000: 0x0000_0000_8000_0000, + 0x8000_0000_0000_0000: 0x8080_8080_8000_0000, 0x8000_0000_8000_0000: 0x0000_0000_8000_0000, 0x8000_0080_0000_0000: 0x0000_0080_8000_0000, 0x8000_0080_8000_0000: 0x0000_0000_8000_0000, + 0x8000_8000_0000_0000: 0x0000_8080_8000_0000, 0x8000_8000_8000_0000: 0x0000_0000_8000_0000, 0x8000_8080_0000_0000: 0x0000_0080_8000_0000, 0x8000_8080_8000_0000: 0x0000_0000_8000_0000, + 0x8080_0000_0000_0000: 0x0080_8080_8000_0000, 0x8080_0000_8000_0000: 0x0000_0000_8000_0000, 0x8080_0080_0000_0000: 0x0000_0080_8000_0000, 0x8080_0080_8000_0000: 0x0000_0000_8000_0000, + 0x8080_8000_0000_0000: 0x0000_8080_8000_0000, 0x8080_8000_8000_0000: 0x0000_0000_8000_0000, 0x8080_8080_0000_0000: 0x0000_0080_8000_0000, 0x8080_8080_8000_0000: 0x0000_0000_8000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0101_0101_0000_0000, 0x0000_0001_0000_0000: 0x0000_0001_0000_0000, 0x0000_0100_0000_0000: 0x0000_0101_0000_0000, 0x0000_0101_0000_0000: 0x0000_0001_0000_0000, + 0x0001_0000_0000_0000: 0x0001_0101_0000_0000, 0x0001_0001_0000_0000: 0x0000_0001_0000_0000, 0x0001_0100_0000_0000: 0x0000_0101_0000_0000, 0x0001_0101_0000_0000: 0x0000_0001_0000_0000, + 0x0100_0000_0000_0000: 0x0101_0101_0000_0000, 0x0100_0001_0000_0000: 0x0000_0001_0000_0000, 0x0100_0100_0000_0000: 0x0000_0101_0000_0000, 0x0100_0101_0000_0000: 0x0000_0001_0000_0000, + 0x0101_0000_0000_0000: 0x0001_0101_0000_0000, 0x0101_0001_0000_0000: 0x0000_0001_0000_0000, 0x0101_0100_0000_0000: 0x0000_0101_0000_0000, 0x0101_0101_0000_0000: 0x0000_0001_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0202_0202_0000_0000, 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0200_0000_0000: 0x0000_0202_0000_0000, 0x0000_0202_0000_0000: 0x0000_0002_0000_0000, + 0x0002_0000_0000_0000: 0x0002_0202_0000_0000, 0x0002_0002_0000_0000: 0x0000_0002_0000_0000, 0x0002_0200_0000_0000: 0x0000_0202_0000_0000, 0x0002_0202_0000_0000: 0x0000_0002_0000_0000, + 0x0200_0000_0000_0000: 0x0202_0202_0000_0000, 0x0200_0002_0000_0000: 0x0000_0002_0000_0000, 0x0200_0200_0000_0000: 0x0000_0202_0000_0000, 0x0200_0202_0000_0000: 0x0000_0002_0000_0000, + 0x0202_0000_0000_0000: 0x0002_0202_0000_0000, 0x0202_0002_0000_0000: 0x0000_0002_0000_0000, 0x0202_0200_0000_0000: 0x0000_0202_0000_0000, 0x0202_0202_0000_0000: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0404_0404_0000_0000, 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0400_0000_0000: 0x0000_0404_0000_0000, 0x0000_0404_0000_0000: 0x0000_0004_0000_0000, + 0x0004_0000_0000_0000: 0x0004_0404_0000_0000, 0x0004_0004_0000_0000: 0x0000_0004_0000_0000, 0x0004_0400_0000_0000: 0x0000_0404_0000_0000, 0x0004_0404_0000_0000: 0x0000_0004_0000_0000, + 0x0400_0000_0000_0000: 0x0404_0404_0000_0000, 0x0400_0004_0000_0000: 0x0000_0004_0000_0000, 0x0400_0400_0000_0000: 0x0000_0404_0000_0000, 0x0400_0404_0000_0000: 0x0000_0004_0000_0000, + 0x0404_0000_0000_0000: 0x0004_0404_0000_0000, 0x0404_0004_0000_0000: 0x0000_0004_0000_0000, 0x0404_0400_0000_0000: 0x0000_0404_0000_0000, 0x0404_0404_0000_0000: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0808_0808_0000_0000, 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0800_0000_0000: 0x0000_0808_0000_0000, 0x0000_0808_0000_0000: 0x0000_0008_0000_0000, + 0x0008_0000_0000_0000: 0x0008_0808_0000_0000, 0x0008_0008_0000_0000: 0x0000_0008_0000_0000, 0x0008_0800_0000_0000: 0x0000_0808_0000_0000, 0x0008_0808_0000_0000: 0x0000_0008_0000_0000, + 0x0800_0000_0000_0000: 0x0808_0808_0000_0000, 0x0800_0008_0000_0000: 0x0000_0008_0000_0000, 0x0800_0800_0000_0000: 0x0000_0808_0000_0000, 0x0800_0808_0000_0000: 0x0000_0008_0000_0000, + 0x0808_0000_0000_0000: 0x0008_0808_0000_0000, 0x0808_0008_0000_0000: 0x0000_0008_0000_0000, 0x0808_0800_0000_0000: 0x0000_0808_0000_0000, 0x0808_0808_0000_0000: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1010_1010_0000_0000, 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_1000_0000_0000: 0x0000_1010_0000_0000, 0x0000_1010_0000_0000: 0x0000_0010_0000_0000, + 0x0010_0000_0000_0000: 0x0010_1010_0000_0000, 0x0010_0010_0000_0000: 0x0000_0010_0000_0000, 0x0010_1000_0000_0000: 0x0000_1010_0000_0000, 0x0010_1010_0000_0000: 0x0000_0010_0000_0000, + 0x1000_0000_0000_0000: 0x1010_1010_0000_0000, 0x1000_0010_0000_0000: 0x0000_0010_0000_0000, 0x1000_1000_0000_0000: 0x0000_1010_0000_0000, 0x1000_1010_0000_0000: 0x0000_0010_0000_0000, + 0x1010_0000_0000_0000: 0x0010_1010_0000_0000, 0x1010_0010_0000_0000: 0x0000_0010_0000_0000, 0x1010_1000_0000_0000: 0x0000_1010_0000_0000, 0x1010_1010_0000_0000: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2020_2020_0000_0000, 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_2000_0000_0000: 0x0000_2020_0000_0000, 0x0000_2020_0000_0000: 0x0000_0020_0000_0000, + 0x0020_0000_0000_0000: 0x0020_2020_0000_0000, 0x0020_0020_0000_0000: 0x0000_0020_0000_0000, 0x0020_2000_0000_0000: 0x0000_2020_0000_0000, 0x0020_2020_0000_0000: 0x0000_0020_0000_0000, + 0x2000_0000_0000_0000: 0x2020_2020_0000_0000, 0x2000_0020_0000_0000: 0x0000_0020_0000_0000, 0x2000_2000_0000_0000: 0x0000_2020_0000_0000, 0x2000_2020_0000_0000: 0x0000_0020_0000_0000, + 0x2020_0000_0000_0000: 0x0020_2020_0000_0000, 0x2020_0020_0000_0000: 0x0000_0020_0000_0000, 0x2020_2000_0000_0000: 0x0000_2020_0000_0000, 0x2020_2020_0000_0000: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4040_4040_0000_0000, 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_4000_0000_0000: 0x0000_4040_0000_0000, 0x0000_4040_0000_0000: 0x0000_0040_0000_0000, + 0x0040_0000_0000_0000: 0x0040_4040_0000_0000, 0x0040_0040_0000_0000: 0x0000_0040_0000_0000, 0x0040_4000_0000_0000: 0x0000_4040_0000_0000, 0x0040_4040_0000_0000: 0x0000_0040_0000_0000, + 0x4000_0000_0000_0000: 0x4040_4040_0000_0000, 0x4000_0040_0000_0000: 0x0000_0040_0000_0000, 0x4000_4000_0000_0000: 0x0000_4040_0000_0000, 0x4000_4040_0000_0000: 0x0000_0040_0000_0000, + 0x4040_0000_0000_0000: 0x0040_4040_0000_0000, 0x4040_0040_0000_0000: 0x0000_0040_0000_0000, 0x4040_4000_0000_0000: 0x0000_4040_0000_0000, 0x4040_4040_0000_0000: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8080_8080_0000_0000, 0x0000_0080_0000_0000: 0x0000_0080_0000_0000, 0x0000_8000_0000_0000: 0x0000_8080_0000_0000, 0x0000_8080_0000_0000: 0x0000_0080_0000_0000, + 0x0080_0000_0000_0000: 0x0080_8080_0000_0000, 0x0080_0080_0000_0000: 0x0000_0080_0000_0000, 0x0080_8000_0000_0000: 0x0000_8080_0000_0000, 0x0080_8080_0000_0000: 0x0000_0080_0000_0000, + 0x8000_0000_0000_0000: 0x8080_8080_0000_0000, 0x8000_0080_0000_0000: 0x0000_0080_0000_0000, 0x8000_8000_0000_0000: 0x0000_8080_0000_0000, 0x8000_8080_0000_0000: 0x0000_0080_0000_0000, + 0x8080_0000_0000_0000: 0x0080_8080_0000_0000, 0x8080_0080_0000_0000: 0x0000_0080_0000_0000, 0x8080_8000_0000_0000: 0x0000_8080_0000_0000, 0x8080_8080_0000_0000: 0x0000_0080_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0101_0100_0000_0000, 0x0000_0100_0000_0000: 0x0000_0100_0000_0000, 0x0001_0000_0000_0000: 0x0001_0100_0000_0000, 0x0001_0100_0000_0000: 0x0000_0100_0000_0000, + 0x0100_0000_0000_0000: 0x0101_0100_0000_0000, 0x0100_0100_0000_0000: 0x0000_0100_0000_0000, 0x0101_0000_0000_0000: 0x0001_0100_0000_0000, 0x0101_0100_0000_0000: 0x0000_0100_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0202_0200_0000_0000, 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0002_0000_0000_0000: 0x0002_0200_0000_0000, 0x0002_0200_0000_0000: 0x0000_0200_0000_0000, + 0x0200_0000_0000_0000: 0x0202_0200_0000_0000, 0x0200_0200_0000_0000: 0x0000_0200_0000_0000, 0x0202_0000_0000_0000: 0x0002_0200_0000_0000, 0x0202_0200_0000_0000: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0404_0400_0000_0000, 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0004_0000_0000_0000: 0x0004_0400_0000_0000, 0x0004_0400_0000_0000: 0x0000_0400_0000_0000, + 0x0400_0000_0000_0000: 0x0404_0400_0000_0000, 0x0400_0400_0000_0000: 0x0000_0400_0000_0000, 0x0404_0000_0000_0000: 0x0004_0400_0000_0000, 0x0404_0400_0000_0000: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0808_0800_0000_0000, 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0008_0000_0000_0000: 0x0008_0800_0000_0000, 0x0008_0800_0000_0000: 0x0000_0800_0000_0000, + 0x0800_0000_0000_0000: 0x0808_0800_0000_0000, 0x0800_0800_0000_0000: 0x0000_0800_0000_0000, 0x0808_0000_0000_0000: 0x0008_0800_0000_0000, 0x0808_0800_0000_0000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1010_1000_0000_0000, 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0010_0000_0000_0000: 0x0010_1000_0000_0000, 0x0010_1000_0000_0000: 0x0000_1000_0000_0000, + 0x1000_0000_0000_0000: 0x1010_1000_0000_0000, 0x1000_1000_0000_0000: 0x0000_1000_0000_0000, 0x1010_0000_0000_0000: 0x0010_1000_0000_0000, 0x1010_1000_0000_0000: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2020_2000_0000_0000, 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0020_0000_0000_0000: 0x0020_2000_0000_0000, 0x0020_2000_0000_0000: 0x0000_2000_0000_0000, + 0x2000_0000_0000_0000: 0x2020_2000_0000_0000, 0x2000_2000_0000_0000: 0x0000_2000_0000_0000, 0x2020_0000_0000_0000: 0x0020_2000_0000_0000, 0x2020_2000_0000_0000: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4040_4000_0000_0000, 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0040_0000_0000_0000: 0x0040_4000_0000_0000, 0x0040_4000_0000_0000: 0x0000_4000_0000_0000, + 0x4000_0000_0000_0000: 0x4040_4000_0000_0000, 0x4000_4000_0000_0000: 0x0000_4000_0000_0000, 0x4040_0000_0000_0000: 0x0040_4000_0000_0000, 0x4040_4000_0000_0000: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8080_8000_0000_0000, 0x0000_8000_0000_0000: 0x0000_8000_0000_0000, 0x0080_0000_0000_0000: 0x0080_8000_0000_0000, 0x0080_8000_0000_0000: 0x0000_8000_0000_0000, + 0x8000_0000_0000_0000: 0x8080_8000_0000_0000, 0x8000_8000_0000_0000: 0x0000_8000_0000_0000, 0x8080_0000_0000_0000: 0x0080_8000_0000_0000, 0x8080_8000_0000_0000: 0x0000_8000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0101_0000_0000_0000, 0x0001_0000_0000_0000: 0x0001_0000_0000_0000, 0x0100_0000_0000_0000: 0x0101_0000_0000_0000, 0x0101_0000_0000_0000: 0x0001_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0202_0000_0000_0000, 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0200_0000_0000_0000: 0x0202_0000_0000_0000, 0x0202_0000_0000_0000: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0404_0000_0000_0000, 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0400_0000_0000_0000: 0x0404_0000_0000_0000, 0x0404_0000_0000_0000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0808_0000_0000_0000, 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0800_0000_0000_0000: 0x0808_0000_0000_0000, 0x0808_0000_0000_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1010_0000_0000_0000, 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x1000_0000_0000_0000: 0x1010_0000_0000_0000, 0x1010_0000_0000_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2020_0000_0000_0000, 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x2000_0000_0000_0000: 0x2020_0000_0000_0000, 0x2020_0000_0000_0000: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4040_0000_0000_0000, 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x4000_0000_0000_0000: 0x4040_0000_0000_0000, 0x4040_0000_0000_0000: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8080_0000_0000_0000, 0x0080_0000_0000_0000: 0x0080_0000_0000_0000, 0x8000_0000_0000_0000: 0x8080_0000_0000_0000, 0x8080_0000_0000_0000: 0x0080_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0100_0000_0000_0000, 0x0100_0000_0000_0000: 0x0100_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0200_0000_0000_0000, 0x0200_0000_0000_0000: 0x0200_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0400_0000_0000_0000, 0x0400_0000_0000_0000: 0x0400_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0800_0000_0000_0000, 0x0800_0000_0000_0000: 0x0800_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1000_0000_0000_0000, 0x1000_0000_0000_0000: 0x1000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2000_0000_0000_0000, 0x2000_0000_0000_0000: 0x2000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4000_0000_0000_0000, 0x4000_0000_0000_0000: 0x4000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8000_0000_0000_0000, 0x8000_0000_0000_0000: 0x8000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, +) +D_MASK = ( + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0001, 0x0000_0000_0000_0001: 0x0000_0000_0000_0001, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0002, 0x0000_0000_0000_0002: 0x0000_0000_0000_0002, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0004, 0x0000_0000_0000_0004: 0x0000_0000_0000_0004, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0008, 0x0000_0000_0000_0008: 0x0000_0000_0000_0008, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0010, 0x0000_0000_0000_0010: 0x0000_0000_0000_0010, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0020, 0x0000_0000_0000_0020: 0x0000_0000_0000_0020, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0040, 0x0000_0000_0000_0040: 0x0000_0000_0000_0040, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0080, 0x0000_0000_0000_0080: 0x0000_0000_0000_0080, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0101, 0x0000_0000_0000_0001: 0x0000_0000_0000_0101, 0x0000_0000_0000_0100: 0x0000_0000_0000_0100, 0x0000_0000_0000_0101: 0x0000_0000_0000_0100, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0202, 0x0000_0000_0000_0002: 0x0000_0000_0000_0202, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0000_0202: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0404, 0x0000_0000_0000_0004: 0x0000_0000_0000_0404, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0000_0404: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0808, 0x0000_0000_0000_0008: 0x0000_0000_0000_0808, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0000_0808: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_1010, 0x0000_0000_0000_0010: 0x0000_0000_0000_1010, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0000_1010: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_2020, 0x0000_0000_0000_0020: 0x0000_0000_0000_2020, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0000_2020: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_4040, 0x0000_0000_0000_0040: 0x0000_0000_0000_4040, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0000_4040: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_8080, 0x0000_0000_0000_0080: 0x0000_0000_0000_8080, 0x0000_0000_0000_8000: 0x0000_0000_0000_8000, 0x0000_0000_0000_8080: 0x0000_0000_0000_8000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0001_0101, 0x0000_0000_0000_0001: 0x0000_0000_0001_0101, 0x0000_0000_0000_0100: 0x0000_0000_0001_0100, 0x0000_0000_0000_0101: 0x0000_0000_0001_0100, + 0x0000_0000_0001_0000: 0x0000_0000_0001_0000, 0x0000_0000_0001_0001: 0x0000_0000_0001_0000, 0x0000_0000_0001_0100: 0x0000_0000_0001_0000, 0x0000_0000_0001_0101: 0x0000_0000_0001_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0002_0202, 0x0000_0000_0000_0002: 0x0000_0000_0002_0202, 0x0000_0000_0000_0200: 0x0000_0000_0002_0200, 0x0000_0000_0000_0202: 0x0000_0000_0002_0200, + 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0002_0002: 0x0000_0000_0002_0000, 0x0000_0000_0002_0200: 0x0000_0000_0002_0000, 0x0000_0000_0002_0202: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0004_0404, 0x0000_0000_0000_0004: 0x0000_0000_0004_0404, 0x0000_0000_0000_0400: 0x0000_0000_0004_0400, 0x0000_0000_0000_0404: 0x0000_0000_0004_0400, + 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0004_0004: 0x0000_0000_0004_0000, 0x0000_0000_0004_0400: 0x0000_0000_0004_0000, 0x0000_0000_0004_0404: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0008_0808, 0x0000_0000_0000_0008: 0x0000_0000_0008_0808, 0x0000_0000_0000_0800: 0x0000_0000_0008_0800, 0x0000_0000_0000_0808: 0x0000_0000_0008_0800, + 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0008_0008: 0x0000_0000_0008_0000, 0x0000_0000_0008_0800: 0x0000_0000_0008_0000, 0x0000_0000_0008_0808: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0010_1010, 0x0000_0000_0000_0010: 0x0000_0000_0010_1010, 0x0000_0000_0000_1000: 0x0000_0000_0010_1000, 0x0000_0000_0000_1010: 0x0000_0000_0010_1000, + 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_0010_0010: 0x0000_0000_0010_0000, 0x0000_0000_0010_1000: 0x0000_0000_0010_0000, 0x0000_0000_0010_1010: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0020_2020, 0x0000_0000_0000_0020: 0x0000_0000_0020_2020, 0x0000_0000_0000_2000: 0x0000_0000_0020_2000, 0x0000_0000_0000_2020: 0x0000_0000_0020_2000, + 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_0020_0020: 0x0000_0000_0020_0000, 0x0000_0000_0020_2000: 0x0000_0000_0020_0000, 0x0000_0000_0020_2020: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0040_4040, 0x0000_0000_0000_0040: 0x0000_0000_0040_4040, 0x0000_0000_0000_4000: 0x0000_0000_0040_4000, 0x0000_0000_0000_4040: 0x0000_0000_0040_4000, + 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_0040_0040: 0x0000_0000_0040_0000, 0x0000_0000_0040_4000: 0x0000_0000_0040_0000, 0x0000_0000_0040_4040: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0080_8080, 0x0000_0000_0000_0080: 0x0000_0000_0080_8080, 0x0000_0000_0000_8000: 0x0000_0000_0080_8000, 0x0000_0000_0000_8080: 0x0000_0000_0080_8000, + 0x0000_0000_0080_0000: 0x0000_0000_0080_0000, 0x0000_0000_0080_0080: 0x0000_0000_0080_0000, 0x0000_0000_0080_8000: 0x0000_0000_0080_0000, 0x0000_0000_0080_8080: 0x0000_0000_0080_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0101_0101, 0x0000_0000_0000_0001: 0x0000_0000_0101_0101, 0x0000_0000_0000_0100: 0x0000_0000_0101_0100, 0x0000_0000_0000_0101: 0x0000_0000_0101_0100, + 0x0000_0000_0001_0000: 0x0000_0000_0101_0000, 0x0000_0000_0001_0001: 0x0000_0000_0101_0000, 0x0000_0000_0001_0100: 0x0000_0000_0101_0000, 0x0000_0000_0001_0101: 0x0000_0000_0101_0000, + 0x0000_0000_0100_0000: 0x0000_0000_0100_0000, 0x0000_0000_0100_0001: 0x0000_0000_0100_0000, 0x0000_0000_0100_0100: 0x0000_0000_0100_0000, 0x0000_0000_0100_0101: 0x0000_0000_0100_0000, + 0x0000_0000_0101_0000: 0x0000_0000_0100_0000, 0x0000_0000_0101_0001: 0x0000_0000_0100_0000, 0x0000_0000_0101_0100: 0x0000_0000_0100_0000, 0x0000_0000_0101_0101: 0x0000_0000_0100_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0202_0202, 0x0000_0000_0000_0002: 0x0000_0000_0202_0202, 0x0000_0000_0000_0200: 0x0000_0000_0202_0200, 0x0000_0000_0000_0202: 0x0000_0000_0202_0200, + 0x0000_0000_0002_0000: 0x0000_0000_0202_0000, 0x0000_0000_0002_0002: 0x0000_0000_0202_0000, 0x0000_0000_0002_0200: 0x0000_0000_0202_0000, 0x0000_0000_0002_0202: 0x0000_0000_0202_0000, + 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0000_0200_0002: 0x0000_0000_0200_0000, 0x0000_0000_0200_0200: 0x0000_0000_0200_0000, 0x0000_0000_0200_0202: 0x0000_0000_0200_0000, + 0x0000_0000_0202_0000: 0x0000_0000_0200_0000, 0x0000_0000_0202_0002: 0x0000_0000_0200_0000, 0x0000_0000_0202_0200: 0x0000_0000_0200_0000, 0x0000_0000_0202_0202: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0404_0404, 0x0000_0000_0000_0004: 0x0000_0000_0404_0404, 0x0000_0000_0000_0400: 0x0000_0000_0404_0400, 0x0000_0000_0000_0404: 0x0000_0000_0404_0400, + 0x0000_0000_0004_0000: 0x0000_0000_0404_0000, 0x0000_0000_0004_0004: 0x0000_0000_0404_0000, 0x0000_0000_0004_0400: 0x0000_0000_0404_0000, 0x0000_0000_0004_0404: 0x0000_0000_0404_0000, + 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0000_0400_0004: 0x0000_0000_0400_0000, 0x0000_0000_0400_0400: 0x0000_0000_0400_0000, 0x0000_0000_0400_0404: 0x0000_0000_0400_0000, + 0x0000_0000_0404_0000: 0x0000_0000_0400_0000, 0x0000_0000_0404_0004: 0x0000_0000_0400_0000, 0x0000_0000_0404_0400: 0x0000_0000_0400_0000, 0x0000_0000_0404_0404: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0808_0808, 0x0000_0000_0000_0008: 0x0000_0000_0808_0808, 0x0000_0000_0000_0800: 0x0000_0000_0808_0800, 0x0000_0000_0000_0808: 0x0000_0000_0808_0800, + 0x0000_0000_0008_0000: 0x0000_0000_0808_0000, 0x0000_0000_0008_0008: 0x0000_0000_0808_0000, 0x0000_0000_0008_0800: 0x0000_0000_0808_0000, 0x0000_0000_0008_0808: 0x0000_0000_0808_0000, + 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0000_0800_0008: 0x0000_0000_0800_0000, 0x0000_0000_0800_0800: 0x0000_0000_0800_0000, 0x0000_0000_0800_0808: 0x0000_0000_0800_0000, + 0x0000_0000_0808_0000: 0x0000_0000_0800_0000, 0x0000_0000_0808_0008: 0x0000_0000_0800_0000, 0x0000_0000_0808_0800: 0x0000_0000_0800_0000, 0x0000_0000_0808_0808: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_1010_1010, 0x0000_0000_0000_0010: 0x0000_0000_1010_1010, 0x0000_0000_0000_1000: 0x0000_0000_1010_1000, 0x0000_0000_0000_1010: 0x0000_0000_1010_1000, + 0x0000_0000_0010_0000: 0x0000_0000_1010_0000, 0x0000_0000_0010_0010: 0x0000_0000_1010_0000, 0x0000_0000_0010_1000: 0x0000_0000_1010_0000, 0x0000_0000_0010_1010: 0x0000_0000_1010_0000, + 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0000_1000_0010: 0x0000_0000_1000_0000, 0x0000_0000_1000_1000: 0x0000_0000_1000_0000, 0x0000_0000_1000_1010: 0x0000_0000_1000_0000, + 0x0000_0000_1010_0000: 0x0000_0000_1000_0000, 0x0000_0000_1010_0010: 0x0000_0000_1000_0000, 0x0000_0000_1010_1000: 0x0000_0000_1000_0000, 0x0000_0000_1010_1010: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_2020_2020, 0x0000_0000_0000_0020: 0x0000_0000_2020_2020, 0x0000_0000_0000_2000: 0x0000_0000_2020_2000, 0x0000_0000_0000_2020: 0x0000_0000_2020_2000, + 0x0000_0000_0020_0000: 0x0000_0000_2020_0000, 0x0000_0000_0020_0020: 0x0000_0000_2020_0000, 0x0000_0000_0020_2000: 0x0000_0000_2020_0000, 0x0000_0000_0020_2020: 0x0000_0000_2020_0000, + 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0000_2000_0020: 0x0000_0000_2000_0000, 0x0000_0000_2000_2000: 0x0000_0000_2000_0000, 0x0000_0000_2000_2020: 0x0000_0000_2000_0000, + 0x0000_0000_2020_0000: 0x0000_0000_2000_0000, 0x0000_0000_2020_0020: 0x0000_0000_2000_0000, 0x0000_0000_2020_2000: 0x0000_0000_2000_0000, 0x0000_0000_2020_2020: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_4040_4040, 0x0000_0000_0000_0040: 0x0000_0000_4040_4040, 0x0000_0000_0000_4000: 0x0000_0000_4040_4000, 0x0000_0000_0000_4040: 0x0000_0000_4040_4000, + 0x0000_0000_0040_0000: 0x0000_0000_4040_0000, 0x0000_0000_0040_0040: 0x0000_0000_4040_0000, 0x0000_0000_0040_4000: 0x0000_0000_4040_0000, 0x0000_0000_0040_4040: 0x0000_0000_4040_0000, + 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0000_4000_0040: 0x0000_0000_4000_0000, 0x0000_0000_4000_4000: 0x0000_0000_4000_0000, 0x0000_0000_4000_4040: 0x0000_0000_4000_0000, + 0x0000_0000_4040_0000: 0x0000_0000_4000_0000, 0x0000_0000_4040_0040: 0x0000_0000_4000_0000, 0x0000_0000_4040_4000: 0x0000_0000_4000_0000, 0x0000_0000_4040_4040: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_8080_8080, 0x0000_0000_0000_0080: 0x0000_0000_8080_8080, 0x0000_0000_0000_8000: 0x0000_0000_8080_8000, 0x0000_0000_0000_8080: 0x0000_0000_8080_8000, + 0x0000_0000_0080_0000: 0x0000_0000_8080_0000, 0x0000_0000_0080_0080: 0x0000_0000_8080_0000, 0x0000_0000_0080_8000: 0x0000_0000_8080_0000, 0x0000_0000_0080_8080: 0x0000_0000_8080_0000, + 0x0000_0000_8000_0000: 0x0000_0000_8000_0000, 0x0000_0000_8000_0080: 0x0000_0000_8000_0000, 0x0000_0000_8000_8000: 0x0000_0000_8000_0000, 0x0000_0000_8000_8080: 0x0000_0000_8000_0000, + 0x0000_0000_8080_0000: 0x0000_0000_8000_0000, 0x0000_0000_8080_0080: 0x0000_0000_8000_0000, 0x0000_0000_8080_8000: 0x0000_0000_8000_0000, 0x0000_0000_8080_8080: 0x0000_0000_8000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0101_0101, 0x0000_0000_0000_0001: 0x0000_0001_0101_0101, 0x0000_0000_0000_0100: 0x0000_0001_0101_0100, 0x0000_0000_0000_0101: 0x0000_0001_0101_0100, + 0x0000_0000_0001_0000: 0x0000_0001_0101_0000, 0x0000_0000_0001_0001: 0x0000_0001_0101_0000, 0x0000_0000_0001_0100: 0x0000_0001_0101_0000, 0x0000_0000_0001_0101: 0x0000_0001_0101_0000, + 0x0000_0000_0100_0000: 0x0000_0001_0100_0000, 0x0000_0000_0100_0001: 0x0000_0001_0100_0000, 0x0000_0000_0100_0100: 0x0000_0001_0100_0000, 0x0000_0000_0100_0101: 0x0000_0001_0100_0000, + 0x0000_0000_0101_0000: 0x0000_0001_0100_0000, 0x0000_0000_0101_0001: 0x0000_0001_0100_0000, 0x0000_0000_0101_0100: 0x0000_0001_0100_0000, 0x0000_0000_0101_0101: 0x0000_0001_0100_0000, + 0x0000_0001_0000_0000: 0x0000_0001_0000_0000, 0x0000_0001_0000_0001: 0x0000_0001_0000_0000, 0x0000_0001_0000_0100: 0x0000_0001_0000_0000, 0x0000_0001_0000_0101: 0x0000_0001_0000_0000, + 0x0000_0001_0001_0000: 0x0000_0001_0000_0000, 0x0000_0001_0001_0001: 0x0000_0001_0000_0000, 0x0000_0001_0001_0100: 0x0000_0001_0000_0000, 0x0000_0001_0001_0101: 0x0000_0001_0000_0000, + 0x0000_0001_0100_0000: 0x0000_0001_0000_0000, 0x0000_0001_0100_0001: 0x0000_0001_0000_0000, 0x0000_0001_0100_0100: 0x0000_0001_0000_0000, 0x0000_0001_0100_0101: 0x0000_0001_0000_0000, + 0x0000_0001_0101_0000: 0x0000_0001_0000_0000, 0x0000_0001_0101_0001: 0x0000_0001_0000_0000, 0x0000_0001_0101_0100: 0x0000_0001_0000_0000, 0x0000_0001_0101_0101: 0x0000_0001_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0002_0202_0202, 0x0000_0000_0000_0002: 0x0000_0002_0202_0202, 0x0000_0000_0000_0200: 0x0000_0002_0202_0200, 0x0000_0000_0000_0202: 0x0000_0002_0202_0200, + 0x0000_0000_0002_0000: 0x0000_0002_0202_0000, 0x0000_0000_0002_0002: 0x0000_0002_0202_0000, 0x0000_0000_0002_0200: 0x0000_0002_0202_0000, 0x0000_0000_0002_0202: 0x0000_0002_0202_0000, + 0x0000_0000_0200_0000: 0x0000_0002_0200_0000, 0x0000_0000_0200_0002: 0x0000_0002_0200_0000, 0x0000_0000_0200_0200: 0x0000_0002_0200_0000, 0x0000_0000_0200_0202: 0x0000_0002_0200_0000, + 0x0000_0000_0202_0000: 0x0000_0002_0200_0000, 0x0000_0000_0202_0002: 0x0000_0002_0200_0000, 0x0000_0000_0202_0200: 0x0000_0002_0200_0000, 0x0000_0000_0202_0202: 0x0000_0002_0200_0000, + 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0002_0000_0002: 0x0000_0002_0000_0000, 0x0000_0002_0000_0200: 0x0000_0002_0000_0000, 0x0000_0002_0000_0202: 0x0000_0002_0000_0000, + 0x0000_0002_0002_0000: 0x0000_0002_0000_0000, 0x0000_0002_0002_0002: 0x0000_0002_0000_0000, 0x0000_0002_0002_0200: 0x0000_0002_0000_0000, 0x0000_0002_0002_0202: 0x0000_0002_0000_0000, + 0x0000_0002_0200_0000: 0x0000_0002_0000_0000, 0x0000_0002_0200_0002: 0x0000_0002_0000_0000, 0x0000_0002_0200_0200: 0x0000_0002_0000_0000, 0x0000_0002_0200_0202: 0x0000_0002_0000_0000, + 0x0000_0002_0202_0000: 0x0000_0002_0000_0000, 0x0000_0002_0202_0002: 0x0000_0002_0000_0000, 0x0000_0002_0202_0200: 0x0000_0002_0000_0000, 0x0000_0002_0202_0202: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0004_0404_0404, 0x0000_0000_0000_0004: 0x0000_0004_0404_0404, 0x0000_0000_0000_0400: 0x0000_0004_0404_0400, 0x0000_0000_0000_0404: 0x0000_0004_0404_0400, + 0x0000_0000_0004_0000: 0x0000_0004_0404_0000, 0x0000_0000_0004_0004: 0x0000_0004_0404_0000, 0x0000_0000_0004_0400: 0x0000_0004_0404_0000, 0x0000_0000_0004_0404: 0x0000_0004_0404_0000, + 0x0000_0000_0400_0000: 0x0000_0004_0400_0000, 0x0000_0000_0400_0004: 0x0000_0004_0400_0000, 0x0000_0000_0400_0400: 0x0000_0004_0400_0000, 0x0000_0000_0400_0404: 0x0000_0004_0400_0000, + 0x0000_0000_0404_0000: 0x0000_0004_0400_0000, 0x0000_0000_0404_0004: 0x0000_0004_0400_0000, 0x0000_0000_0404_0400: 0x0000_0004_0400_0000, 0x0000_0000_0404_0404: 0x0000_0004_0400_0000, + 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0004_0000_0004: 0x0000_0004_0000_0000, 0x0000_0004_0000_0400: 0x0000_0004_0000_0000, 0x0000_0004_0000_0404: 0x0000_0004_0000_0000, + 0x0000_0004_0004_0000: 0x0000_0004_0000_0000, 0x0000_0004_0004_0004: 0x0000_0004_0000_0000, 0x0000_0004_0004_0400: 0x0000_0004_0000_0000, 0x0000_0004_0004_0404: 0x0000_0004_0000_0000, + 0x0000_0004_0400_0000: 0x0000_0004_0000_0000, 0x0000_0004_0400_0004: 0x0000_0004_0000_0000, 0x0000_0004_0400_0400: 0x0000_0004_0000_0000, 0x0000_0004_0400_0404: 0x0000_0004_0000_0000, + 0x0000_0004_0404_0000: 0x0000_0004_0000_0000, 0x0000_0004_0404_0004: 0x0000_0004_0000_0000, 0x0000_0004_0404_0400: 0x0000_0004_0000_0000, 0x0000_0004_0404_0404: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0008_0808_0808, 0x0000_0000_0000_0008: 0x0000_0008_0808_0808, 0x0000_0000_0000_0800: 0x0000_0008_0808_0800, 0x0000_0000_0000_0808: 0x0000_0008_0808_0800, + 0x0000_0000_0008_0000: 0x0000_0008_0808_0000, 0x0000_0000_0008_0008: 0x0000_0008_0808_0000, 0x0000_0000_0008_0800: 0x0000_0008_0808_0000, 0x0000_0000_0008_0808: 0x0000_0008_0808_0000, + 0x0000_0000_0800_0000: 0x0000_0008_0800_0000, 0x0000_0000_0800_0008: 0x0000_0008_0800_0000, 0x0000_0000_0800_0800: 0x0000_0008_0800_0000, 0x0000_0000_0800_0808: 0x0000_0008_0800_0000, + 0x0000_0000_0808_0000: 0x0000_0008_0800_0000, 0x0000_0000_0808_0008: 0x0000_0008_0800_0000, 0x0000_0000_0808_0800: 0x0000_0008_0800_0000, 0x0000_0000_0808_0808: 0x0000_0008_0800_0000, + 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0008_0000_0008: 0x0000_0008_0000_0000, 0x0000_0008_0000_0800: 0x0000_0008_0000_0000, 0x0000_0008_0000_0808: 0x0000_0008_0000_0000, + 0x0000_0008_0008_0000: 0x0000_0008_0000_0000, 0x0000_0008_0008_0008: 0x0000_0008_0000_0000, 0x0000_0008_0008_0800: 0x0000_0008_0000_0000, 0x0000_0008_0008_0808: 0x0000_0008_0000_0000, + 0x0000_0008_0800_0000: 0x0000_0008_0000_0000, 0x0000_0008_0800_0008: 0x0000_0008_0000_0000, 0x0000_0008_0800_0800: 0x0000_0008_0000_0000, 0x0000_0008_0800_0808: 0x0000_0008_0000_0000, + 0x0000_0008_0808_0000: 0x0000_0008_0000_0000, 0x0000_0008_0808_0008: 0x0000_0008_0000_0000, 0x0000_0008_0808_0800: 0x0000_0008_0000_0000, 0x0000_0008_0808_0808: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0010_1010_1010, 0x0000_0000_0000_0010: 0x0000_0010_1010_1010, 0x0000_0000_0000_1000: 0x0000_0010_1010_1000, 0x0000_0000_0000_1010: 0x0000_0010_1010_1000, + 0x0000_0000_0010_0000: 0x0000_0010_1010_0000, 0x0000_0000_0010_0010: 0x0000_0010_1010_0000, 0x0000_0000_0010_1000: 0x0000_0010_1010_0000, 0x0000_0000_0010_1010: 0x0000_0010_1010_0000, + 0x0000_0000_1000_0000: 0x0000_0010_1000_0000, 0x0000_0000_1000_0010: 0x0000_0010_1000_0000, 0x0000_0000_1000_1000: 0x0000_0010_1000_0000, 0x0000_0000_1000_1010: 0x0000_0010_1000_0000, + 0x0000_0000_1010_0000: 0x0000_0010_1000_0000, 0x0000_0000_1010_0010: 0x0000_0010_1000_0000, 0x0000_0000_1010_1000: 0x0000_0010_1000_0000, 0x0000_0000_1010_1010: 0x0000_0010_1000_0000, + 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_0010_0000_0010: 0x0000_0010_0000_0000, 0x0000_0010_0000_1000: 0x0000_0010_0000_0000, 0x0000_0010_0000_1010: 0x0000_0010_0000_0000, + 0x0000_0010_0010_0000: 0x0000_0010_0000_0000, 0x0000_0010_0010_0010: 0x0000_0010_0000_0000, 0x0000_0010_0010_1000: 0x0000_0010_0000_0000, 0x0000_0010_0010_1010: 0x0000_0010_0000_0000, + 0x0000_0010_1000_0000: 0x0000_0010_0000_0000, 0x0000_0010_1000_0010: 0x0000_0010_0000_0000, 0x0000_0010_1000_1000: 0x0000_0010_0000_0000, 0x0000_0010_1000_1010: 0x0000_0010_0000_0000, + 0x0000_0010_1010_0000: 0x0000_0010_0000_0000, 0x0000_0010_1010_0010: 0x0000_0010_0000_0000, 0x0000_0010_1010_1000: 0x0000_0010_0000_0000, 0x0000_0010_1010_1010: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0020_2020_2020, 0x0000_0000_0000_0020: 0x0000_0020_2020_2020, 0x0000_0000_0000_2000: 0x0000_0020_2020_2000, 0x0000_0000_0000_2020: 0x0000_0020_2020_2000, + 0x0000_0000_0020_0000: 0x0000_0020_2020_0000, 0x0000_0000_0020_0020: 0x0000_0020_2020_0000, 0x0000_0000_0020_2000: 0x0000_0020_2020_0000, 0x0000_0000_0020_2020: 0x0000_0020_2020_0000, + 0x0000_0000_2000_0000: 0x0000_0020_2000_0000, 0x0000_0000_2000_0020: 0x0000_0020_2000_0000, 0x0000_0000_2000_2000: 0x0000_0020_2000_0000, 0x0000_0000_2000_2020: 0x0000_0020_2000_0000, + 0x0000_0000_2020_0000: 0x0000_0020_2000_0000, 0x0000_0000_2020_0020: 0x0000_0020_2000_0000, 0x0000_0000_2020_2000: 0x0000_0020_2000_0000, 0x0000_0000_2020_2020: 0x0000_0020_2000_0000, + 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_0020_0000_0020: 0x0000_0020_0000_0000, 0x0000_0020_0000_2000: 0x0000_0020_0000_0000, 0x0000_0020_0000_2020: 0x0000_0020_0000_0000, + 0x0000_0020_0020_0000: 0x0000_0020_0000_0000, 0x0000_0020_0020_0020: 0x0000_0020_0000_0000, 0x0000_0020_0020_2000: 0x0000_0020_0000_0000, 0x0000_0020_0020_2020: 0x0000_0020_0000_0000, + 0x0000_0020_2000_0000: 0x0000_0020_0000_0000, 0x0000_0020_2000_0020: 0x0000_0020_0000_0000, 0x0000_0020_2000_2000: 0x0000_0020_0000_0000, 0x0000_0020_2000_2020: 0x0000_0020_0000_0000, + 0x0000_0020_2020_0000: 0x0000_0020_0000_0000, 0x0000_0020_2020_0020: 0x0000_0020_0000_0000, 0x0000_0020_2020_2000: 0x0000_0020_0000_0000, 0x0000_0020_2020_2020: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0040_4040_4040, 0x0000_0000_0000_0040: 0x0000_0040_4040_4040, 0x0000_0000_0000_4000: 0x0000_0040_4040_4000, 0x0000_0000_0000_4040: 0x0000_0040_4040_4000, + 0x0000_0000_0040_0000: 0x0000_0040_4040_0000, 0x0000_0000_0040_0040: 0x0000_0040_4040_0000, 0x0000_0000_0040_4000: 0x0000_0040_4040_0000, 0x0000_0000_0040_4040: 0x0000_0040_4040_0000, + 0x0000_0000_4000_0000: 0x0000_0040_4000_0000, 0x0000_0000_4000_0040: 0x0000_0040_4000_0000, 0x0000_0000_4000_4000: 0x0000_0040_4000_0000, 0x0000_0000_4000_4040: 0x0000_0040_4000_0000, + 0x0000_0000_4040_0000: 0x0000_0040_4000_0000, 0x0000_0000_4040_0040: 0x0000_0040_4000_0000, 0x0000_0000_4040_4000: 0x0000_0040_4000_0000, 0x0000_0000_4040_4040: 0x0000_0040_4000_0000, + 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_0040_0000_0040: 0x0000_0040_0000_0000, 0x0000_0040_0000_4000: 0x0000_0040_0000_0000, 0x0000_0040_0000_4040: 0x0000_0040_0000_0000, + 0x0000_0040_0040_0000: 0x0000_0040_0000_0000, 0x0000_0040_0040_0040: 0x0000_0040_0000_0000, 0x0000_0040_0040_4000: 0x0000_0040_0000_0000, 0x0000_0040_0040_4040: 0x0000_0040_0000_0000, + 0x0000_0040_4000_0000: 0x0000_0040_0000_0000, 0x0000_0040_4000_0040: 0x0000_0040_0000_0000, 0x0000_0040_4000_4000: 0x0000_0040_0000_0000, 0x0000_0040_4000_4040: 0x0000_0040_0000_0000, + 0x0000_0040_4040_0000: 0x0000_0040_0000_0000, 0x0000_0040_4040_0040: 0x0000_0040_0000_0000, 0x0000_0040_4040_4000: 0x0000_0040_0000_0000, 0x0000_0040_4040_4040: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_8080_8080, 0x0000_0000_0000_0080: 0x0000_0080_8080_8080, 0x0000_0000_0000_8000: 0x0000_0080_8080_8000, 0x0000_0000_0000_8080: 0x0000_0080_8080_8000, + 0x0000_0000_0080_0000: 0x0000_0080_8080_0000, 0x0000_0000_0080_0080: 0x0000_0080_8080_0000, 0x0000_0000_0080_8000: 0x0000_0080_8080_0000, 0x0000_0000_0080_8080: 0x0000_0080_8080_0000, + 0x0000_0000_8000_0000: 0x0000_0080_8000_0000, 0x0000_0000_8000_0080: 0x0000_0080_8000_0000, 0x0000_0000_8000_8000: 0x0000_0080_8000_0000, 0x0000_0000_8000_8080: 0x0000_0080_8000_0000, + 0x0000_0000_8080_0000: 0x0000_0080_8000_0000, 0x0000_0000_8080_0080: 0x0000_0080_8000_0000, 0x0000_0000_8080_8000: 0x0000_0080_8000_0000, 0x0000_0000_8080_8080: 0x0000_0080_8000_0000, + 0x0000_0080_0000_0000: 0x0000_0080_0000_0000, 0x0000_0080_0000_0080: 0x0000_0080_0000_0000, 0x0000_0080_0000_8000: 0x0000_0080_0000_0000, 0x0000_0080_0000_8080: 0x0000_0080_0000_0000, + 0x0000_0080_0080_0000: 0x0000_0080_0000_0000, 0x0000_0080_0080_0080: 0x0000_0080_0000_0000, 0x0000_0080_0080_8000: 0x0000_0080_0000_0000, 0x0000_0080_0080_8080: 0x0000_0080_0000_0000, + 0x0000_0080_8000_0000: 0x0000_0080_0000_0000, 0x0000_0080_8000_0080: 0x0000_0080_0000_0000, 0x0000_0080_8000_8000: 0x0000_0080_0000_0000, 0x0000_0080_8000_8080: 0x0000_0080_0000_0000, + 0x0000_0080_8080_0000: 0x0000_0080_0000_0000, 0x0000_0080_8080_0080: 0x0000_0080_0000_0000, 0x0000_0080_8080_8000: 0x0000_0080_0000_0000, 0x0000_0080_8080_8080: 0x0000_0080_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0101_0101_0101, 0x0000_0000_0000_0001: 0x0000_0101_0101_0101, 0x0000_0000_0000_0100: 0x0000_0101_0101_0100, 0x0000_0000_0000_0101: 0x0000_0101_0101_0100, + 0x0000_0000_0001_0000: 0x0000_0101_0101_0000, 0x0000_0000_0001_0001: 0x0000_0101_0101_0000, 0x0000_0000_0001_0100: 0x0000_0101_0101_0000, 0x0000_0000_0001_0101: 0x0000_0101_0101_0000, + 0x0000_0000_0100_0000: 0x0000_0101_0100_0000, 0x0000_0000_0100_0001: 0x0000_0101_0100_0000, 0x0000_0000_0100_0100: 0x0000_0101_0100_0000, 0x0000_0000_0100_0101: 0x0000_0101_0100_0000, + 0x0000_0000_0101_0000: 0x0000_0101_0100_0000, 0x0000_0000_0101_0001: 0x0000_0101_0100_0000, 0x0000_0000_0101_0100: 0x0000_0101_0100_0000, 0x0000_0000_0101_0101: 0x0000_0101_0100_0000, + 0x0000_0001_0000_0000: 0x0000_0101_0000_0000, 0x0000_0001_0000_0001: 0x0000_0101_0000_0000, 0x0000_0001_0000_0100: 0x0000_0101_0000_0000, 0x0000_0001_0000_0101: 0x0000_0101_0000_0000, + 0x0000_0001_0001_0000: 0x0000_0101_0000_0000, 0x0000_0001_0001_0001: 0x0000_0101_0000_0000, 0x0000_0001_0001_0100: 0x0000_0101_0000_0000, 0x0000_0001_0001_0101: 0x0000_0101_0000_0000, + 0x0000_0001_0100_0000: 0x0000_0101_0000_0000, 0x0000_0001_0100_0001: 0x0000_0101_0000_0000, 0x0000_0001_0100_0100: 0x0000_0101_0000_0000, 0x0000_0001_0100_0101: 0x0000_0101_0000_0000, + 0x0000_0001_0101_0000: 0x0000_0101_0000_0000, 0x0000_0001_0101_0001: 0x0000_0101_0000_0000, 0x0000_0001_0101_0100: 0x0000_0101_0000_0000, 0x0000_0001_0101_0101: 0x0000_0101_0000_0000, + 0x0000_0100_0000_0000: 0x0000_0100_0000_0000, 0x0000_0100_0000_0001: 0x0000_0100_0000_0000, 0x0000_0100_0000_0100: 0x0000_0100_0000_0000, 0x0000_0100_0000_0101: 0x0000_0100_0000_0000, + 0x0000_0100_0001_0000: 0x0000_0100_0000_0000, 0x0000_0100_0001_0001: 0x0000_0100_0000_0000, 0x0000_0100_0001_0100: 0x0000_0100_0000_0000, 0x0000_0100_0001_0101: 0x0000_0100_0000_0000, + 0x0000_0100_0100_0000: 0x0000_0100_0000_0000, 0x0000_0100_0100_0001: 0x0000_0100_0000_0000, 0x0000_0100_0100_0100: 0x0000_0100_0000_0000, 0x0000_0100_0100_0101: 0x0000_0100_0000_0000, + 0x0000_0100_0101_0000: 0x0000_0100_0000_0000, 0x0000_0100_0101_0001: 0x0000_0100_0000_0000, 0x0000_0100_0101_0100: 0x0000_0100_0000_0000, 0x0000_0100_0101_0101: 0x0000_0100_0000_0000, + 0x0000_0101_0000_0000: 0x0000_0100_0000_0000, 0x0000_0101_0000_0001: 0x0000_0100_0000_0000, 0x0000_0101_0000_0100: 0x0000_0100_0000_0000, 0x0000_0101_0000_0101: 0x0000_0100_0000_0000, + 0x0000_0101_0001_0000: 0x0000_0100_0000_0000, 0x0000_0101_0001_0001: 0x0000_0100_0000_0000, 0x0000_0101_0001_0100: 0x0000_0100_0000_0000, 0x0000_0101_0001_0101: 0x0000_0100_0000_0000, + 0x0000_0101_0100_0000: 0x0000_0100_0000_0000, 0x0000_0101_0100_0001: 0x0000_0100_0000_0000, 0x0000_0101_0100_0100: 0x0000_0100_0000_0000, 0x0000_0101_0100_0101: 0x0000_0100_0000_0000, + 0x0000_0101_0101_0000: 0x0000_0100_0000_0000, 0x0000_0101_0101_0001: 0x0000_0100_0000_0000, 0x0000_0101_0101_0100: 0x0000_0100_0000_0000, 0x0000_0101_0101_0101: 0x0000_0100_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0202_0202_0202, 0x0000_0000_0000_0002: 0x0000_0202_0202_0202, 0x0000_0000_0000_0200: 0x0000_0202_0202_0200, 0x0000_0000_0000_0202: 0x0000_0202_0202_0200, + 0x0000_0000_0002_0000: 0x0000_0202_0202_0000, 0x0000_0000_0002_0002: 0x0000_0202_0202_0000, 0x0000_0000_0002_0200: 0x0000_0202_0202_0000, 0x0000_0000_0002_0202: 0x0000_0202_0202_0000, + 0x0000_0000_0200_0000: 0x0000_0202_0200_0000, 0x0000_0000_0200_0002: 0x0000_0202_0200_0000, 0x0000_0000_0200_0200: 0x0000_0202_0200_0000, 0x0000_0000_0200_0202: 0x0000_0202_0200_0000, + 0x0000_0000_0202_0000: 0x0000_0202_0200_0000, 0x0000_0000_0202_0002: 0x0000_0202_0200_0000, 0x0000_0000_0202_0200: 0x0000_0202_0200_0000, 0x0000_0000_0202_0202: 0x0000_0202_0200_0000, + 0x0000_0002_0000_0000: 0x0000_0202_0000_0000, 0x0000_0002_0000_0002: 0x0000_0202_0000_0000, 0x0000_0002_0000_0200: 0x0000_0202_0000_0000, 0x0000_0002_0000_0202: 0x0000_0202_0000_0000, + 0x0000_0002_0002_0000: 0x0000_0202_0000_0000, 0x0000_0002_0002_0002: 0x0000_0202_0000_0000, 0x0000_0002_0002_0200: 0x0000_0202_0000_0000, 0x0000_0002_0002_0202: 0x0000_0202_0000_0000, + 0x0000_0002_0200_0000: 0x0000_0202_0000_0000, 0x0000_0002_0200_0002: 0x0000_0202_0000_0000, 0x0000_0002_0200_0200: 0x0000_0202_0000_0000, 0x0000_0002_0200_0202: 0x0000_0202_0000_0000, + 0x0000_0002_0202_0000: 0x0000_0202_0000_0000, 0x0000_0002_0202_0002: 0x0000_0202_0000_0000, 0x0000_0002_0202_0200: 0x0000_0202_0000_0000, 0x0000_0002_0202_0202: 0x0000_0202_0000_0000, + 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0000_0200_0000_0002: 0x0000_0200_0000_0000, 0x0000_0200_0000_0200: 0x0000_0200_0000_0000, 0x0000_0200_0000_0202: 0x0000_0200_0000_0000, + 0x0000_0200_0002_0000: 0x0000_0200_0000_0000, 0x0000_0200_0002_0002: 0x0000_0200_0000_0000, 0x0000_0200_0002_0200: 0x0000_0200_0000_0000, 0x0000_0200_0002_0202: 0x0000_0200_0000_0000, + 0x0000_0200_0200_0000: 0x0000_0200_0000_0000, 0x0000_0200_0200_0002: 0x0000_0200_0000_0000, 0x0000_0200_0200_0200: 0x0000_0200_0000_0000, 0x0000_0200_0200_0202: 0x0000_0200_0000_0000, + 0x0000_0200_0202_0000: 0x0000_0200_0000_0000, 0x0000_0200_0202_0002: 0x0000_0200_0000_0000, 0x0000_0200_0202_0200: 0x0000_0200_0000_0000, 0x0000_0200_0202_0202: 0x0000_0200_0000_0000, + 0x0000_0202_0000_0000: 0x0000_0200_0000_0000, 0x0000_0202_0000_0002: 0x0000_0200_0000_0000, 0x0000_0202_0000_0200: 0x0000_0200_0000_0000, 0x0000_0202_0000_0202: 0x0000_0200_0000_0000, + 0x0000_0202_0002_0000: 0x0000_0200_0000_0000, 0x0000_0202_0002_0002: 0x0000_0200_0000_0000, 0x0000_0202_0002_0200: 0x0000_0200_0000_0000, 0x0000_0202_0002_0202: 0x0000_0200_0000_0000, + 0x0000_0202_0200_0000: 0x0000_0200_0000_0000, 0x0000_0202_0200_0002: 0x0000_0200_0000_0000, 0x0000_0202_0200_0200: 0x0000_0200_0000_0000, 0x0000_0202_0200_0202: 0x0000_0200_0000_0000, + 0x0000_0202_0202_0000: 0x0000_0200_0000_0000, 0x0000_0202_0202_0002: 0x0000_0200_0000_0000, 0x0000_0202_0202_0200: 0x0000_0200_0000_0000, 0x0000_0202_0202_0202: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0404_0404_0404, 0x0000_0000_0000_0004: 0x0000_0404_0404_0404, 0x0000_0000_0000_0400: 0x0000_0404_0404_0400, 0x0000_0000_0000_0404: 0x0000_0404_0404_0400, + 0x0000_0000_0004_0000: 0x0000_0404_0404_0000, 0x0000_0000_0004_0004: 0x0000_0404_0404_0000, 0x0000_0000_0004_0400: 0x0000_0404_0404_0000, 0x0000_0000_0004_0404: 0x0000_0404_0404_0000, + 0x0000_0000_0400_0000: 0x0000_0404_0400_0000, 0x0000_0000_0400_0004: 0x0000_0404_0400_0000, 0x0000_0000_0400_0400: 0x0000_0404_0400_0000, 0x0000_0000_0400_0404: 0x0000_0404_0400_0000, + 0x0000_0000_0404_0000: 0x0000_0404_0400_0000, 0x0000_0000_0404_0004: 0x0000_0404_0400_0000, 0x0000_0000_0404_0400: 0x0000_0404_0400_0000, 0x0000_0000_0404_0404: 0x0000_0404_0400_0000, + 0x0000_0004_0000_0000: 0x0000_0404_0000_0000, 0x0000_0004_0000_0004: 0x0000_0404_0000_0000, 0x0000_0004_0000_0400: 0x0000_0404_0000_0000, 0x0000_0004_0000_0404: 0x0000_0404_0000_0000, + 0x0000_0004_0004_0000: 0x0000_0404_0000_0000, 0x0000_0004_0004_0004: 0x0000_0404_0000_0000, 0x0000_0004_0004_0400: 0x0000_0404_0000_0000, 0x0000_0004_0004_0404: 0x0000_0404_0000_0000, + 0x0000_0004_0400_0000: 0x0000_0404_0000_0000, 0x0000_0004_0400_0004: 0x0000_0404_0000_0000, 0x0000_0004_0400_0400: 0x0000_0404_0000_0000, 0x0000_0004_0400_0404: 0x0000_0404_0000_0000, + 0x0000_0004_0404_0000: 0x0000_0404_0000_0000, 0x0000_0004_0404_0004: 0x0000_0404_0000_0000, 0x0000_0004_0404_0400: 0x0000_0404_0000_0000, 0x0000_0004_0404_0404: 0x0000_0404_0000_0000, + 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0000_0400_0000_0004: 0x0000_0400_0000_0000, 0x0000_0400_0000_0400: 0x0000_0400_0000_0000, 0x0000_0400_0000_0404: 0x0000_0400_0000_0000, + 0x0000_0400_0004_0000: 0x0000_0400_0000_0000, 0x0000_0400_0004_0004: 0x0000_0400_0000_0000, 0x0000_0400_0004_0400: 0x0000_0400_0000_0000, 0x0000_0400_0004_0404: 0x0000_0400_0000_0000, + 0x0000_0400_0400_0000: 0x0000_0400_0000_0000, 0x0000_0400_0400_0004: 0x0000_0400_0000_0000, 0x0000_0400_0400_0400: 0x0000_0400_0000_0000, 0x0000_0400_0400_0404: 0x0000_0400_0000_0000, + 0x0000_0400_0404_0000: 0x0000_0400_0000_0000, 0x0000_0400_0404_0004: 0x0000_0400_0000_0000, 0x0000_0400_0404_0400: 0x0000_0400_0000_0000, 0x0000_0400_0404_0404: 0x0000_0400_0000_0000, + 0x0000_0404_0000_0000: 0x0000_0400_0000_0000, 0x0000_0404_0000_0004: 0x0000_0400_0000_0000, 0x0000_0404_0000_0400: 0x0000_0400_0000_0000, 0x0000_0404_0000_0404: 0x0000_0400_0000_0000, + 0x0000_0404_0004_0000: 0x0000_0400_0000_0000, 0x0000_0404_0004_0004: 0x0000_0400_0000_0000, 0x0000_0404_0004_0400: 0x0000_0400_0000_0000, 0x0000_0404_0004_0404: 0x0000_0400_0000_0000, + 0x0000_0404_0400_0000: 0x0000_0400_0000_0000, 0x0000_0404_0400_0004: 0x0000_0400_0000_0000, 0x0000_0404_0400_0400: 0x0000_0400_0000_0000, 0x0000_0404_0400_0404: 0x0000_0400_0000_0000, + 0x0000_0404_0404_0000: 0x0000_0400_0000_0000, 0x0000_0404_0404_0004: 0x0000_0400_0000_0000, 0x0000_0404_0404_0400: 0x0000_0400_0000_0000, 0x0000_0404_0404_0404: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0808_0808_0808, 0x0000_0000_0000_0008: 0x0000_0808_0808_0808, 0x0000_0000_0000_0800: 0x0000_0808_0808_0800, 0x0000_0000_0000_0808: 0x0000_0808_0808_0800, + 0x0000_0000_0008_0000: 0x0000_0808_0808_0000, 0x0000_0000_0008_0008: 0x0000_0808_0808_0000, 0x0000_0000_0008_0800: 0x0000_0808_0808_0000, 0x0000_0000_0008_0808: 0x0000_0808_0808_0000, + 0x0000_0000_0800_0000: 0x0000_0808_0800_0000, 0x0000_0000_0800_0008: 0x0000_0808_0800_0000, 0x0000_0000_0800_0800: 0x0000_0808_0800_0000, 0x0000_0000_0800_0808: 0x0000_0808_0800_0000, + 0x0000_0000_0808_0000: 0x0000_0808_0800_0000, 0x0000_0000_0808_0008: 0x0000_0808_0800_0000, 0x0000_0000_0808_0800: 0x0000_0808_0800_0000, 0x0000_0000_0808_0808: 0x0000_0808_0800_0000, + 0x0000_0008_0000_0000: 0x0000_0808_0000_0000, 0x0000_0008_0000_0008: 0x0000_0808_0000_0000, 0x0000_0008_0000_0800: 0x0000_0808_0000_0000, 0x0000_0008_0000_0808: 0x0000_0808_0000_0000, + 0x0000_0008_0008_0000: 0x0000_0808_0000_0000, 0x0000_0008_0008_0008: 0x0000_0808_0000_0000, 0x0000_0008_0008_0800: 0x0000_0808_0000_0000, 0x0000_0008_0008_0808: 0x0000_0808_0000_0000, + 0x0000_0008_0800_0000: 0x0000_0808_0000_0000, 0x0000_0008_0800_0008: 0x0000_0808_0000_0000, 0x0000_0008_0800_0800: 0x0000_0808_0000_0000, 0x0000_0008_0800_0808: 0x0000_0808_0000_0000, + 0x0000_0008_0808_0000: 0x0000_0808_0000_0000, 0x0000_0008_0808_0008: 0x0000_0808_0000_0000, 0x0000_0008_0808_0800: 0x0000_0808_0000_0000, 0x0000_0008_0808_0808: 0x0000_0808_0000_0000, + 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0000_0800_0000_0008: 0x0000_0800_0000_0000, 0x0000_0800_0000_0800: 0x0000_0800_0000_0000, 0x0000_0800_0000_0808: 0x0000_0800_0000_0000, + 0x0000_0800_0008_0000: 0x0000_0800_0000_0000, 0x0000_0800_0008_0008: 0x0000_0800_0000_0000, 0x0000_0800_0008_0800: 0x0000_0800_0000_0000, 0x0000_0800_0008_0808: 0x0000_0800_0000_0000, + 0x0000_0800_0800_0000: 0x0000_0800_0000_0000, 0x0000_0800_0800_0008: 0x0000_0800_0000_0000, 0x0000_0800_0800_0800: 0x0000_0800_0000_0000, 0x0000_0800_0800_0808: 0x0000_0800_0000_0000, + 0x0000_0800_0808_0000: 0x0000_0800_0000_0000, 0x0000_0800_0808_0008: 0x0000_0800_0000_0000, 0x0000_0800_0808_0800: 0x0000_0800_0000_0000, 0x0000_0800_0808_0808: 0x0000_0800_0000_0000, + 0x0000_0808_0000_0000: 0x0000_0800_0000_0000, 0x0000_0808_0000_0008: 0x0000_0800_0000_0000, 0x0000_0808_0000_0800: 0x0000_0800_0000_0000, 0x0000_0808_0000_0808: 0x0000_0800_0000_0000, + 0x0000_0808_0008_0000: 0x0000_0800_0000_0000, 0x0000_0808_0008_0008: 0x0000_0800_0000_0000, 0x0000_0808_0008_0800: 0x0000_0800_0000_0000, 0x0000_0808_0008_0808: 0x0000_0800_0000_0000, + 0x0000_0808_0800_0000: 0x0000_0800_0000_0000, 0x0000_0808_0800_0008: 0x0000_0800_0000_0000, 0x0000_0808_0800_0800: 0x0000_0800_0000_0000, 0x0000_0808_0800_0808: 0x0000_0800_0000_0000, + 0x0000_0808_0808_0000: 0x0000_0800_0000_0000, 0x0000_0808_0808_0008: 0x0000_0800_0000_0000, 0x0000_0808_0808_0800: 0x0000_0800_0000_0000, 0x0000_0808_0808_0808: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_1010_1010_1010, 0x0000_0000_0000_0010: 0x0000_1010_1010_1010, 0x0000_0000_0000_1000: 0x0000_1010_1010_1000, 0x0000_0000_0000_1010: 0x0000_1010_1010_1000, + 0x0000_0000_0010_0000: 0x0000_1010_1010_0000, 0x0000_0000_0010_0010: 0x0000_1010_1010_0000, 0x0000_0000_0010_1000: 0x0000_1010_1010_0000, 0x0000_0000_0010_1010: 0x0000_1010_1010_0000, + 0x0000_0000_1000_0000: 0x0000_1010_1000_0000, 0x0000_0000_1000_0010: 0x0000_1010_1000_0000, 0x0000_0000_1000_1000: 0x0000_1010_1000_0000, 0x0000_0000_1000_1010: 0x0000_1010_1000_0000, + 0x0000_0000_1010_0000: 0x0000_1010_1000_0000, 0x0000_0000_1010_0010: 0x0000_1010_1000_0000, 0x0000_0000_1010_1000: 0x0000_1010_1000_0000, 0x0000_0000_1010_1010: 0x0000_1010_1000_0000, + 0x0000_0010_0000_0000: 0x0000_1010_0000_0000, 0x0000_0010_0000_0010: 0x0000_1010_0000_0000, 0x0000_0010_0000_1000: 0x0000_1010_0000_0000, 0x0000_0010_0000_1010: 0x0000_1010_0000_0000, + 0x0000_0010_0010_0000: 0x0000_1010_0000_0000, 0x0000_0010_0010_0010: 0x0000_1010_0000_0000, 0x0000_0010_0010_1000: 0x0000_1010_0000_0000, 0x0000_0010_0010_1010: 0x0000_1010_0000_0000, + 0x0000_0010_1000_0000: 0x0000_1010_0000_0000, 0x0000_0010_1000_0010: 0x0000_1010_0000_0000, 0x0000_0010_1000_1000: 0x0000_1010_0000_0000, 0x0000_0010_1000_1010: 0x0000_1010_0000_0000, + 0x0000_0010_1010_0000: 0x0000_1010_0000_0000, 0x0000_0010_1010_0010: 0x0000_1010_0000_0000, 0x0000_0010_1010_1000: 0x0000_1010_0000_0000, 0x0000_0010_1010_1010: 0x0000_1010_0000_0000, + 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0000_1000_0000_0010: 0x0000_1000_0000_0000, 0x0000_1000_0000_1000: 0x0000_1000_0000_0000, 0x0000_1000_0000_1010: 0x0000_1000_0000_0000, + 0x0000_1000_0010_0000: 0x0000_1000_0000_0000, 0x0000_1000_0010_0010: 0x0000_1000_0000_0000, 0x0000_1000_0010_1000: 0x0000_1000_0000_0000, 0x0000_1000_0010_1010: 0x0000_1000_0000_0000, + 0x0000_1000_1000_0000: 0x0000_1000_0000_0000, 0x0000_1000_1000_0010: 0x0000_1000_0000_0000, 0x0000_1000_1000_1000: 0x0000_1000_0000_0000, 0x0000_1000_1000_1010: 0x0000_1000_0000_0000, + 0x0000_1000_1010_0000: 0x0000_1000_0000_0000, 0x0000_1000_1010_0010: 0x0000_1000_0000_0000, 0x0000_1000_1010_1000: 0x0000_1000_0000_0000, 0x0000_1000_1010_1010: 0x0000_1000_0000_0000, + 0x0000_1010_0000_0000: 0x0000_1000_0000_0000, 0x0000_1010_0000_0010: 0x0000_1000_0000_0000, 0x0000_1010_0000_1000: 0x0000_1000_0000_0000, 0x0000_1010_0000_1010: 0x0000_1000_0000_0000, + 0x0000_1010_0010_0000: 0x0000_1000_0000_0000, 0x0000_1010_0010_0010: 0x0000_1000_0000_0000, 0x0000_1010_0010_1000: 0x0000_1000_0000_0000, 0x0000_1010_0010_1010: 0x0000_1000_0000_0000, + 0x0000_1010_1000_0000: 0x0000_1000_0000_0000, 0x0000_1010_1000_0010: 0x0000_1000_0000_0000, 0x0000_1010_1000_1000: 0x0000_1000_0000_0000, 0x0000_1010_1000_1010: 0x0000_1000_0000_0000, + 0x0000_1010_1010_0000: 0x0000_1000_0000_0000, 0x0000_1010_1010_0010: 0x0000_1000_0000_0000, 0x0000_1010_1010_1000: 0x0000_1000_0000_0000, 0x0000_1010_1010_1010: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_2020_2020_2020, 0x0000_0000_0000_0020: 0x0000_2020_2020_2020, 0x0000_0000_0000_2000: 0x0000_2020_2020_2000, 0x0000_0000_0000_2020: 0x0000_2020_2020_2000, + 0x0000_0000_0020_0000: 0x0000_2020_2020_0000, 0x0000_0000_0020_0020: 0x0000_2020_2020_0000, 0x0000_0000_0020_2000: 0x0000_2020_2020_0000, 0x0000_0000_0020_2020: 0x0000_2020_2020_0000, + 0x0000_0000_2000_0000: 0x0000_2020_2000_0000, 0x0000_0000_2000_0020: 0x0000_2020_2000_0000, 0x0000_0000_2000_2000: 0x0000_2020_2000_0000, 0x0000_0000_2000_2020: 0x0000_2020_2000_0000, + 0x0000_0000_2020_0000: 0x0000_2020_2000_0000, 0x0000_0000_2020_0020: 0x0000_2020_2000_0000, 0x0000_0000_2020_2000: 0x0000_2020_2000_0000, 0x0000_0000_2020_2020: 0x0000_2020_2000_0000, + 0x0000_0020_0000_0000: 0x0000_2020_0000_0000, 0x0000_0020_0000_0020: 0x0000_2020_0000_0000, 0x0000_0020_0000_2000: 0x0000_2020_0000_0000, 0x0000_0020_0000_2020: 0x0000_2020_0000_0000, + 0x0000_0020_0020_0000: 0x0000_2020_0000_0000, 0x0000_0020_0020_0020: 0x0000_2020_0000_0000, 0x0000_0020_0020_2000: 0x0000_2020_0000_0000, 0x0000_0020_0020_2020: 0x0000_2020_0000_0000, + 0x0000_0020_2000_0000: 0x0000_2020_0000_0000, 0x0000_0020_2000_0020: 0x0000_2020_0000_0000, 0x0000_0020_2000_2000: 0x0000_2020_0000_0000, 0x0000_0020_2000_2020: 0x0000_2020_0000_0000, + 0x0000_0020_2020_0000: 0x0000_2020_0000_0000, 0x0000_0020_2020_0020: 0x0000_2020_0000_0000, 0x0000_0020_2020_2000: 0x0000_2020_0000_0000, 0x0000_0020_2020_2020: 0x0000_2020_0000_0000, + 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0000_2000_0000_0020: 0x0000_2000_0000_0000, 0x0000_2000_0000_2000: 0x0000_2000_0000_0000, 0x0000_2000_0000_2020: 0x0000_2000_0000_0000, + 0x0000_2000_0020_0000: 0x0000_2000_0000_0000, 0x0000_2000_0020_0020: 0x0000_2000_0000_0000, 0x0000_2000_0020_2000: 0x0000_2000_0000_0000, 0x0000_2000_0020_2020: 0x0000_2000_0000_0000, + 0x0000_2000_2000_0000: 0x0000_2000_0000_0000, 0x0000_2000_2000_0020: 0x0000_2000_0000_0000, 0x0000_2000_2000_2000: 0x0000_2000_0000_0000, 0x0000_2000_2000_2020: 0x0000_2000_0000_0000, + 0x0000_2000_2020_0000: 0x0000_2000_0000_0000, 0x0000_2000_2020_0020: 0x0000_2000_0000_0000, 0x0000_2000_2020_2000: 0x0000_2000_0000_0000, 0x0000_2000_2020_2020: 0x0000_2000_0000_0000, + 0x0000_2020_0000_0000: 0x0000_2000_0000_0000, 0x0000_2020_0000_0020: 0x0000_2000_0000_0000, 0x0000_2020_0000_2000: 0x0000_2000_0000_0000, 0x0000_2020_0000_2020: 0x0000_2000_0000_0000, + 0x0000_2020_0020_0000: 0x0000_2000_0000_0000, 0x0000_2020_0020_0020: 0x0000_2000_0000_0000, 0x0000_2020_0020_2000: 0x0000_2000_0000_0000, 0x0000_2020_0020_2020: 0x0000_2000_0000_0000, + 0x0000_2020_2000_0000: 0x0000_2000_0000_0000, 0x0000_2020_2000_0020: 0x0000_2000_0000_0000, 0x0000_2020_2000_2000: 0x0000_2000_0000_0000, 0x0000_2020_2000_2020: 0x0000_2000_0000_0000, + 0x0000_2020_2020_0000: 0x0000_2000_0000_0000, 0x0000_2020_2020_0020: 0x0000_2000_0000_0000, 0x0000_2020_2020_2000: 0x0000_2000_0000_0000, 0x0000_2020_2020_2020: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_4040_4040_4040, 0x0000_0000_0000_0040: 0x0000_4040_4040_4040, 0x0000_0000_0000_4000: 0x0000_4040_4040_4000, 0x0000_0000_0000_4040: 0x0000_4040_4040_4000, + 0x0000_0000_0040_0000: 0x0000_4040_4040_0000, 0x0000_0000_0040_0040: 0x0000_4040_4040_0000, 0x0000_0000_0040_4000: 0x0000_4040_4040_0000, 0x0000_0000_0040_4040: 0x0000_4040_4040_0000, + 0x0000_0000_4000_0000: 0x0000_4040_4000_0000, 0x0000_0000_4000_0040: 0x0000_4040_4000_0000, 0x0000_0000_4000_4000: 0x0000_4040_4000_0000, 0x0000_0000_4000_4040: 0x0000_4040_4000_0000, + 0x0000_0000_4040_0000: 0x0000_4040_4000_0000, 0x0000_0000_4040_0040: 0x0000_4040_4000_0000, 0x0000_0000_4040_4000: 0x0000_4040_4000_0000, 0x0000_0000_4040_4040: 0x0000_4040_4000_0000, + 0x0000_0040_0000_0000: 0x0000_4040_0000_0000, 0x0000_0040_0000_0040: 0x0000_4040_0000_0000, 0x0000_0040_0000_4000: 0x0000_4040_0000_0000, 0x0000_0040_0000_4040: 0x0000_4040_0000_0000, + 0x0000_0040_0040_0000: 0x0000_4040_0000_0000, 0x0000_0040_0040_0040: 0x0000_4040_0000_0000, 0x0000_0040_0040_4000: 0x0000_4040_0000_0000, 0x0000_0040_0040_4040: 0x0000_4040_0000_0000, + 0x0000_0040_4000_0000: 0x0000_4040_0000_0000, 0x0000_0040_4000_0040: 0x0000_4040_0000_0000, 0x0000_0040_4000_4000: 0x0000_4040_0000_0000, 0x0000_0040_4000_4040: 0x0000_4040_0000_0000, + 0x0000_0040_4040_0000: 0x0000_4040_0000_0000, 0x0000_0040_4040_0040: 0x0000_4040_0000_0000, 0x0000_0040_4040_4000: 0x0000_4040_0000_0000, 0x0000_0040_4040_4040: 0x0000_4040_0000_0000, + 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0000_4000_0000_0040: 0x0000_4000_0000_0000, 0x0000_4000_0000_4000: 0x0000_4000_0000_0000, 0x0000_4000_0000_4040: 0x0000_4000_0000_0000, + 0x0000_4000_0040_0000: 0x0000_4000_0000_0000, 0x0000_4000_0040_0040: 0x0000_4000_0000_0000, 0x0000_4000_0040_4000: 0x0000_4000_0000_0000, 0x0000_4000_0040_4040: 0x0000_4000_0000_0000, + 0x0000_4000_4000_0000: 0x0000_4000_0000_0000, 0x0000_4000_4000_0040: 0x0000_4000_0000_0000, 0x0000_4000_4000_4000: 0x0000_4000_0000_0000, 0x0000_4000_4000_4040: 0x0000_4000_0000_0000, + 0x0000_4000_4040_0000: 0x0000_4000_0000_0000, 0x0000_4000_4040_0040: 0x0000_4000_0000_0000, 0x0000_4000_4040_4000: 0x0000_4000_0000_0000, 0x0000_4000_4040_4040: 0x0000_4000_0000_0000, + 0x0000_4040_0000_0000: 0x0000_4000_0000_0000, 0x0000_4040_0000_0040: 0x0000_4000_0000_0000, 0x0000_4040_0000_4000: 0x0000_4000_0000_0000, 0x0000_4040_0000_4040: 0x0000_4000_0000_0000, + 0x0000_4040_0040_0000: 0x0000_4000_0000_0000, 0x0000_4040_0040_0040: 0x0000_4000_0000_0000, 0x0000_4040_0040_4000: 0x0000_4000_0000_0000, 0x0000_4040_0040_4040: 0x0000_4000_0000_0000, + 0x0000_4040_4000_0000: 0x0000_4000_0000_0000, 0x0000_4040_4000_0040: 0x0000_4000_0000_0000, 0x0000_4040_4000_4000: 0x0000_4000_0000_0000, 0x0000_4040_4000_4040: 0x0000_4000_0000_0000, + 0x0000_4040_4040_0000: 0x0000_4000_0000_0000, 0x0000_4040_4040_0040: 0x0000_4000_0000_0000, 0x0000_4040_4040_4000: 0x0000_4000_0000_0000, 0x0000_4040_4040_4040: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8080_8080_8080, 0x0000_0000_0000_0080: 0x0000_8080_8080_8080, 0x0000_0000_0000_8000: 0x0000_8080_8080_8000, 0x0000_0000_0000_8080: 0x0000_8080_8080_8000, + 0x0000_0000_0080_0000: 0x0000_8080_8080_0000, 0x0000_0000_0080_0080: 0x0000_8080_8080_0000, 0x0000_0000_0080_8000: 0x0000_8080_8080_0000, 0x0000_0000_0080_8080: 0x0000_8080_8080_0000, + 0x0000_0000_8000_0000: 0x0000_8080_8000_0000, 0x0000_0000_8000_0080: 0x0000_8080_8000_0000, 0x0000_0000_8000_8000: 0x0000_8080_8000_0000, 0x0000_0000_8000_8080: 0x0000_8080_8000_0000, + 0x0000_0000_8080_0000: 0x0000_8080_8000_0000, 0x0000_0000_8080_0080: 0x0000_8080_8000_0000, 0x0000_0000_8080_8000: 0x0000_8080_8000_0000, 0x0000_0000_8080_8080: 0x0000_8080_8000_0000, + 0x0000_0080_0000_0000: 0x0000_8080_0000_0000, 0x0000_0080_0000_0080: 0x0000_8080_0000_0000, 0x0000_0080_0000_8000: 0x0000_8080_0000_0000, 0x0000_0080_0000_8080: 0x0000_8080_0000_0000, + 0x0000_0080_0080_0000: 0x0000_8080_0000_0000, 0x0000_0080_0080_0080: 0x0000_8080_0000_0000, 0x0000_0080_0080_8000: 0x0000_8080_0000_0000, 0x0000_0080_0080_8080: 0x0000_8080_0000_0000, + 0x0000_0080_8000_0000: 0x0000_8080_0000_0000, 0x0000_0080_8000_0080: 0x0000_8080_0000_0000, 0x0000_0080_8000_8000: 0x0000_8080_0000_0000, 0x0000_0080_8000_8080: 0x0000_8080_0000_0000, + 0x0000_0080_8080_0000: 0x0000_8080_0000_0000, 0x0000_0080_8080_0080: 0x0000_8080_0000_0000, 0x0000_0080_8080_8000: 0x0000_8080_0000_0000, 0x0000_0080_8080_8080: 0x0000_8080_0000_0000, + 0x0000_8000_0000_0000: 0x0000_8000_0000_0000, 0x0000_8000_0000_0080: 0x0000_8000_0000_0000, 0x0000_8000_0000_8000: 0x0000_8000_0000_0000, 0x0000_8000_0000_8080: 0x0000_8000_0000_0000, + 0x0000_8000_0080_0000: 0x0000_8000_0000_0000, 0x0000_8000_0080_0080: 0x0000_8000_0000_0000, 0x0000_8000_0080_8000: 0x0000_8000_0000_0000, 0x0000_8000_0080_8080: 0x0000_8000_0000_0000, + 0x0000_8000_8000_0000: 0x0000_8000_0000_0000, 0x0000_8000_8000_0080: 0x0000_8000_0000_0000, 0x0000_8000_8000_8000: 0x0000_8000_0000_0000, 0x0000_8000_8000_8080: 0x0000_8000_0000_0000, + 0x0000_8000_8080_0000: 0x0000_8000_0000_0000, 0x0000_8000_8080_0080: 0x0000_8000_0000_0000, 0x0000_8000_8080_8000: 0x0000_8000_0000_0000, 0x0000_8000_8080_8080: 0x0000_8000_0000_0000, + 0x0000_8080_0000_0000: 0x0000_8000_0000_0000, 0x0000_8080_0000_0080: 0x0000_8000_0000_0000, 0x0000_8080_0000_8000: 0x0000_8000_0000_0000, 0x0000_8080_0000_8080: 0x0000_8000_0000_0000, + 0x0000_8080_0080_0000: 0x0000_8000_0000_0000, 0x0000_8080_0080_0080: 0x0000_8000_0000_0000, 0x0000_8080_0080_8000: 0x0000_8000_0000_0000, 0x0000_8080_0080_8080: 0x0000_8000_0000_0000, + 0x0000_8080_8000_0000: 0x0000_8000_0000_0000, 0x0000_8080_8000_0080: 0x0000_8000_0000_0000, 0x0000_8080_8000_8000: 0x0000_8000_0000_0000, 0x0000_8080_8000_8080: 0x0000_8000_0000_0000, + 0x0000_8080_8080_0000: 0x0000_8000_0000_0000, 0x0000_8080_8080_0080: 0x0000_8000_0000_0000, 0x0000_8080_8080_8000: 0x0000_8000_0000_0000, 0x0000_8080_8080_8080: 0x0000_8000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0101_0101_0101, 0x0000_0000_0000_0001: 0x0001_0101_0101_0101, 0x0000_0000_0000_0100: 0x0001_0101_0101_0100, 0x0000_0000_0000_0101: 0x0001_0101_0101_0100, + 0x0000_0000_0001_0000: 0x0001_0101_0101_0000, 0x0000_0000_0001_0001: 0x0001_0101_0101_0000, 0x0000_0000_0001_0100: 0x0001_0101_0101_0000, 0x0000_0000_0001_0101: 0x0001_0101_0101_0000, + 0x0000_0000_0100_0000: 0x0001_0101_0100_0000, 0x0000_0000_0100_0001: 0x0001_0101_0100_0000, 0x0000_0000_0100_0100: 0x0001_0101_0100_0000, 0x0000_0000_0100_0101: 0x0001_0101_0100_0000, + 0x0000_0000_0101_0000: 0x0001_0101_0100_0000, 0x0000_0000_0101_0001: 0x0001_0101_0100_0000, 0x0000_0000_0101_0100: 0x0001_0101_0100_0000, 0x0000_0000_0101_0101: 0x0001_0101_0100_0000, + 0x0000_0001_0000_0000: 0x0001_0101_0000_0000, 0x0000_0001_0000_0001: 0x0001_0101_0000_0000, 0x0000_0001_0000_0100: 0x0001_0101_0000_0000, 0x0000_0001_0000_0101: 0x0001_0101_0000_0000, + 0x0000_0001_0001_0000: 0x0001_0101_0000_0000, 0x0000_0001_0001_0001: 0x0001_0101_0000_0000, 0x0000_0001_0001_0100: 0x0001_0101_0000_0000, 0x0000_0001_0001_0101: 0x0001_0101_0000_0000, + 0x0000_0001_0100_0000: 0x0001_0101_0000_0000, 0x0000_0001_0100_0001: 0x0001_0101_0000_0000, 0x0000_0001_0100_0100: 0x0001_0101_0000_0000, 0x0000_0001_0100_0101: 0x0001_0101_0000_0000, + 0x0000_0001_0101_0000: 0x0001_0101_0000_0000, 0x0000_0001_0101_0001: 0x0001_0101_0000_0000, 0x0000_0001_0101_0100: 0x0001_0101_0000_0000, 0x0000_0001_0101_0101: 0x0001_0101_0000_0000, + 0x0000_0100_0000_0000: 0x0001_0100_0000_0000, 0x0000_0100_0000_0001: 0x0001_0100_0000_0000, 0x0000_0100_0000_0100: 0x0001_0100_0000_0000, 0x0000_0100_0000_0101: 0x0001_0100_0000_0000, + 0x0000_0100_0001_0000: 0x0001_0100_0000_0000, 0x0000_0100_0001_0001: 0x0001_0100_0000_0000, 0x0000_0100_0001_0100: 0x0001_0100_0000_0000, 0x0000_0100_0001_0101: 0x0001_0100_0000_0000, + 0x0000_0100_0100_0000: 0x0001_0100_0000_0000, 0x0000_0100_0100_0001: 0x0001_0100_0000_0000, 0x0000_0100_0100_0100: 0x0001_0100_0000_0000, 0x0000_0100_0100_0101: 0x0001_0100_0000_0000, + 0x0000_0100_0101_0000: 0x0001_0100_0000_0000, 0x0000_0100_0101_0001: 0x0001_0100_0000_0000, 0x0000_0100_0101_0100: 0x0001_0100_0000_0000, 0x0000_0100_0101_0101: 0x0001_0100_0000_0000, + 0x0000_0101_0000_0000: 0x0001_0100_0000_0000, 0x0000_0101_0000_0001: 0x0001_0100_0000_0000, 0x0000_0101_0000_0100: 0x0001_0100_0000_0000, 0x0000_0101_0000_0101: 0x0001_0100_0000_0000, + 0x0000_0101_0001_0000: 0x0001_0100_0000_0000, 0x0000_0101_0001_0001: 0x0001_0100_0000_0000, 0x0000_0101_0001_0100: 0x0001_0100_0000_0000, 0x0000_0101_0001_0101: 0x0001_0100_0000_0000, + 0x0000_0101_0100_0000: 0x0001_0100_0000_0000, 0x0000_0101_0100_0001: 0x0001_0100_0000_0000, 0x0000_0101_0100_0100: 0x0001_0100_0000_0000, 0x0000_0101_0100_0101: 0x0001_0100_0000_0000, + 0x0000_0101_0101_0000: 0x0001_0100_0000_0000, 0x0000_0101_0101_0001: 0x0001_0100_0000_0000, 0x0000_0101_0101_0100: 0x0001_0100_0000_0000, 0x0000_0101_0101_0101: 0x0001_0100_0000_0000, + 0x0001_0000_0000_0000: 0x0001_0000_0000_0000, 0x0001_0000_0000_0001: 0x0001_0000_0000_0000, 0x0001_0000_0000_0100: 0x0001_0000_0000_0000, 0x0001_0000_0000_0101: 0x0001_0000_0000_0000, + 0x0001_0000_0001_0000: 0x0001_0000_0000_0000, 0x0001_0000_0001_0001: 0x0001_0000_0000_0000, 0x0001_0000_0001_0100: 0x0001_0000_0000_0000, 0x0001_0000_0001_0101: 0x0001_0000_0000_0000, + 0x0001_0000_0100_0000: 0x0001_0000_0000_0000, 0x0001_0000_0100_0001: 0x0001_0000_0000_0000, 0x0001_0000_0100_0100: 0x0001_0000_0000_0000, 0x0001_0000_0100_0101: 0x0001_0000_0000_0000, + 0x0001_0000_0101_0000: 0x0001_0000_0000_0000, 0x0001_0000_0101_0001: 0x0001_0000_0000_0000, 0x0001_0000_0101_0100: 0x0001_0000_0000_0000, 0x0001_0000_0101_0101: 0x0001_0000_0000_0000, + 0x0001_0001_0000_0000: 0x0001_0000_0000_0000, 0x0001_0001_0000_0001: 0x0001_0000_0000_0000, 0x0001_0001_0000_0100: 0x0001_0000_0000_0000, 0x0001_0001_0000_0101: 0x0001_0000_0000_0000, + 0x0001_0001_0001_0000: 0x0001_0000_0000_0000, 0x0001_0001_0001_0001: 0x0001_0000_0000_0000, 0x0001_0001_0001_0100: 0x0001_0000_0000_0000, 0x0001_0001_0001_0101: 0x0001_0000_0000_0000, + 0x0001_0001_0100_0000: 0x0001_0000_0000_0000, 0x0001_0001_0100_0001: 0x0001_0000_0000_0000, 0x0001_0001_0100_0100: 0x0001_0000_0000_0000, 0x0001_0001_0100_0101: 0x0001_0000_0000_0000, + 0x0001_0001_0101_0000: 0x0001_0000_0000_0000, 0x0001_0001_0101_0001: 0x0001_0000_0000_0000, 0x0001_0001_0101_0100: 0x0001_0000_0000_0000, 0x0001_0001_0101_0101: 0x0001_0000_0000_0000, + 0x0001_0100_0000_0000: 0x0001_0000_0000_0000, 0x0001_0100_0000_0001: 0x0001_0000_0000_0000, 0x0001_0100_0000_0100: 0x0001_0000_0000_0000, 0x0001_0100_0000_0101: 0x0001_0000_0000_0000, + 0x0001_0100_0001_0000: 0x0001_0000_0000_0000, 0x0001_0100_0001_0001: 0x0001_0000_0000_0000, 0x0001_0100_0001_0100: 0x0001_0000_0000_0000, 0x0001_0100_0001_0101: 0x0001_0000_0000_0000, + 0x0001_0100_0100_0000: 0x0001_0000_0000_0000, 0x0001_0100_0100_0001: 0x0001_0000_0000_0000, 0x0001_0100_0100_0100: 0x0001_0000_0000_0000, 0x0001_0100_0100_0101: 0x0001_0000_0000_0000, + 0x0001_0100_0101_0000: 0x0001_0000_0000_0000, 0x0001_0100_0101_0001: 0x0001_0000_0000_0000, 0x0001_0100_0101_0100: 0x0001_0000_0000_0000, 0x0001_0100_0101_0101: 0x0001_0000_0000_0000, + 0x0001_0101_0000_0000: 0x0001_0000_0000_0000, 0x0001_0101_0000_0001: 0x0001_0000_0000_0000, 0x0001_0101_0000_0100: 0x0001_0000_0000_0000, 0x0001_0101_0000_0101: 0x0001_0000_0000_0000, + 0x0001_0101_0001_0000: 0x0001_0000_0000_0000, 0x0001_0101_0001_0001: 0x0001_0000_0000_0000, 0x0001_0101_0001_0100: 0x0001_0000_0000_0000, 0x0001_0101_0001_0101: 0x0001_0000_0000_0000, + 0x0001_0101_0100_0000: 0x0001_0000_0000_0000, 0x0001_0101_0100_0001: 0x0001_0000_0000_0000, 0x0001_0101_0100_0100: 0x0001_0000_0000_0000, 0x0001_0101_0100_0101: 0x0001_0000_0000_0000, + 0x0001_0101_0101_0000: 0x0001_0000_0000_0000, 0x0001_0101_0101_0001: 0x0001_0000_0000_0000, 0x0001_0101_0101_0100: 0x0001_0000_0000_0000, 0x0001_0101_0101_0101: 0x0001_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0002_0202_0202_0202, 0x0000_0000_0000_0002: 0x0002_0202_0202_0202, 0x0000_0000_0000_0200: 0x0002_0202_0202_0200, 0x0000_0000_0000_0202: 0x0002_0202_0202_0200, + 0x0000_0000_0002_0000: 0x0002_0202_0202_0000, 0x0000_0000_0002_0002: 0x0002_0202_0202_0000, 0x0000_0000_0002_0200: 0x0002_0202_0202_0000, 0x0000_0000_0002_0202: 0x0002_0202_0202_0000, + 0x0000_0000_0200_0000: 0x0002_0202_0200_0000, 0x0000_0000_0200_0002: 0x0002_0202_0200_0000, 0x0000_0000_0200_0200: 0x0002_0202_0200_0000, 0x0000_0000_0200_0202: 0x0002_0202_0200_0000, + 0x0000_0000_0202_0000: 0x0002_0202_0200_0000, 0x0000_0000_0202_0002: 0x0002_0202_0200_0000, 0x0000_0000_0202_0200: 0x0002_0202_0200_0000, 0x0000_0000_0202_0202: 0x0002_0202_0200_0000, + 0x0000_0002_0000_0000: 0x0002_0202_0000_0000, 0x0000_0002_0000_0002: 0x0002_0202_0000_0000, 0x0000_0002_0000_0200: 0x0002_0202_0000_0000, 0x0000_0002_0000_0202: 0x0002_0202_0000_0000, + 0x0000_0002_0002_0000: 0x0002_0202_0000_0000, 0x0000_0002_0002_0002: 0x0002_0202_0000_0000, 0x0000_0002_0002_0200: 0x0002_0202_0000_0000, 0x0000_0002_0002_0202: 0x0002_0202_0000_0000, + 0x0000_0002_0200_0000: 0x0002_0202_0000_0000, 0x0000_0002_0200_0002: 0x0002_0202_0000_0000, 0x0000_0002_0200_0200: 0x0002_0202_0000_0000, 0x0000_0002_0200_0202: 0x0002_0202_0000_0000, + 0x0000_0002_0202_0000: 0x0002_0202_0000_0000, 0x0000_0002_0202_0002: 0x0002_0202_0000_0000, 0x0000_0002_0202_0200: 0x0002_0202_0000_0000, 0x0000_0002_0202_0202: 0x0002_0202_0000_0000, + 0x0000_0200_0000_0000: 0x0002_0200_0000_0000, 0x0000_0200_0000_0002: 0x0002_0200_0000_0000, 0x0000_0200_0000_0200: 0x0002_0200_0000_0000, 0x0000_0200_0000_0202: 0x0002_0200_0000_0000, + 0x0000_0200_0002_0000: 0x0002_0200_0000_0000, 0x0000_0200_0002_0002: 0x0002_0200_0000_0000, 0x0000_0200_0002_0200: 0x0002_0200_0000_0000, 0x0000_0200_0002_0202: 0x0002_0200_0000_0000, + 0x0000_0200_0200_0000: 0x0002_0200_0000_0000, 0x0000_0200_0200_0002: 0x0002_0200_0000_0000, 0x0000_0200_0200_0200: 0x0002_0200_0000_0000, 0x0000_0200_0200_0202: 0x0002_0200_0000_0000, + 0x0000_0200_0202_0000: 0x0002_0200_0000_0000, 0x0000_0200_0202_0002: 0x0002_0200_0000_0000, 0x0000_0200_0202_0200: 0x0002_0200_0000_0000, 0x0000_0200_0202_0202: 0x0002_0200_0000_0000, + 0x0000_0202_0000_0000: 0x0002_0200_0000_0000, 0x0000_0202_0000_0002: 0x0002_0200_0000_0000, 0x0000_0202_0000_0200: 0x0002_0200_0000_0000, 0x0000_0202_0000_0202: 0x0002_0200_0000_0000, + 0x0000_0202_0002_0000: 0x0002_0200_0000_0000, 0x0000_0202_0002_0002: 0x0002_0200_0000_0000, 0x0000_0202_0002_0200: 0x0002_0200_0000_0000, 0x0000_0202_0002_0202: 0x0002_0200_0000_0000, + 0x0000_0202_0200_0000: 0x0002_0200_0000_0000, 0x0000_0202_0200_0002: 0x0002_0200_0000_0000, 0x0000_0202_0200_0200: 0x0002_0200_0000_0000, 0x0000_0202_0200_0202: 0x0002_0200_0000_0000, + 0x0000_0202_0202_0000: 0x0002_0200_0000_0000, 0x0000_0202_0202_0002: 0x0002_0200_0000_0000, 0x0000_0202_0202_0200: 0x0002_0200_0000_0000, 0x0000_0202_0202_0202: 0x0002_0200_0000_0000, + 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0002_0000_0000_0002: 0x0002_0000_0000_0000, 0x0002_0000_0000_0200: 0x0002_0000_0000_0000, 0x0002_0000_0000_0202: 0x0002_0000_0000_0000, + 0x0002_0000_0002_0000: 0x0002_0000_0000_0000, 0x0002_0000_0002_0002: 0x0002_0000_0000_0000, 0x0002_0000_0002_0200: 0x0002_0000_0000_0000, 0x0002_0000_0002_0202: 0x0002_0000_0000_0000, + 0x0002_0000_0200_0000: 0x0002_0000_0000_0000, 0x0002_0000_0200_0002: 0x0002_0000_0000_0000, 0x0002_0000_0200_0200: 0x0002_0000_0000_0000, 0x0002_0000_0200_0202: 0x0002_0000_0000_0000, + 0x0002_0000_0202_0000: 0x0002_0000_0000_0000, 0x0002_0000_0202_0002: 0x0002_0000_0000_0000, 0x0002_0000_0202_0200: 0x0002_0000_0000_0000, 0x0002_0000_0202_0202: 0x0002_0000_0000_0000, + 0x0002_0002_0000_0000: 0x0002_0000_0000_0000, 0x0002_0002_0000_0002: 0x0002_0000_0000_0000, 0x0002_0002_0000_0200: 0x0002_0000_0000_0000, 0x0002_0002_0000_0202: 0x0002_0000_0000_0000, + 0x0002_0002_0002_0000: 0x0002_0000_0000_0000, 0x0002_0002_0002_0002: 0x0002_0000_0000_0000, 0x0002_0002_0002_0200: 0x0002_0000_0000_0000, 0x0002_0002_0002_0202: 0x0002_0000_0000_0000, + 0x0002_0002_0200_0000: 0x0002_0000_0000_0000, 0x0002_0002_0200_0002: 0x0002_0000_0000_0000, 0x0002_0002_0200_0200: 0x0002_0000_0000_0000, 0x0002_0002_0200_0202: 0x0002_0000_0000_0000, + 0x0002_0002_0202_0000: 0x0002_0000_0000_0000, 0x0002_0002_0202_0002: 0x0002_0000_0000_0000, 0x0002_0002_0202_0200: 0x0002_0000_0000_0000, 0x0002_0002_0202_0202: 0x0002_0000_0000_0000, + 0x0002_0200_0000_0000: 0x0002_0000_0000_0000, 0x0002_0200_0000_0002: 0x0002_0000_0000_0000, 0x0002_0200_0000_0200: 0x0002_0000_0000_0000, 0x0002_0200_0000_0202: 0x0002_0000_0000_0000, + 0x0002_0200_0002_0000: 0x0002_0000_0000_0000, 0x0002_0200_0002_0002: 0x0002_0000_0000_0000, 0x0002_0200_0002_0200: 0x0002_0000_0000_0000, 0x0002_0200_0002_0202: 0x0002_0000_0000_0000, + 0x0002_0200_0200_0000: 0x0002_0000_0000_0000, 0x0002_0200_0200_0002: 0x0002_0000_0000_0000, 0x0002_0200_0200_0200: 0x0002_0000_0000_0000, 0x0002_0200_0200_0202: 0x0002_0000_0000_0000, + 0x0002_0200_0202_0000: 0x0002_0000_0000_0000, 0x0002_0200_0202_0002: 0x0002_0000_0000_0000, 0x0002_0200_0202_0200: 0x0002_0000_0000_0000, 0x0002_0200_0202_0202: 0x0002_0000_0000_0000, + 0x0002_0202_0000_0000: 0x0002_0000_0000_0000, 0x0002_0202_0000_0002: 0x0002_0000_0000_0000, 0x0002_0202_0000_0200: 0x0002_0000_0000_0000, 0x0002_0202_0000_0202: 0x0002_0000_0000_0000, + 0x0002_0202_0002_0000: 0x0002_0000_0000_0000, 0x0002_0202_0002_0002: 0x0002_0000_0000_0000, 0x0002_0202_0002_0200: 0x0002_0000_0000_0000, 0x0002_0202_0002_0202: 0x0002_0000_0000_0000, + 0x0002_0202_0200_0000: 0x0002_0000_0000_0000, 0x0002_0202_0200_0002: 0x0002_0000_0000_0000, 0x0002_0202_0200_0200: 0x0002_0000_0000_0000, 0x0002_0202_0200_0202: 0x0002_0000_0000_0000, + 0x0002_0202_0202_0000: 0x0002_0000_0000_0000, 0x0002_0202_0202_0002: 0x0002_0000_0000_0000, 0x0002_0202_0202_0200: 0x0002_0000_0000_0000, 0x0002_0202_0202_0202: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0004_0404_0404_0404, 0x0000_0000_0000_0004: 0x0004_0404_0404_0404, 0x0000_0000_0000_0400: 0x0004_0404_0404_0400, 0x0000_0000_0000_0404: 0x0004_0404_0404_0400, + 0x0000_0000_0004_0000: 0x0004_0404_0404_0000, 0x0000_0000_0004_0004: 0x0004_0404_0404_0000, 0x0000_0000_0004_0400: 0x0004_0404_0404_0000, 0x0000_0000_0004_0404: 0x0004_0404_0404_0000, + 0x0000_0000_0400_0000: 0x0004_0404_0400_0000, 0x0000_0000_0400_0004: 0x0004_0404_0400_0000, 0x0000_0000_0400_0400: 0x0004_0404_0400_0000, 0x0000_0000_0400_0404: 0x0004_0404_0400_0000, + 0x0000_0000_0404_0000: 0x0004_0404_0400_0000, 0x0000_0000_0404_0004: 0x0004_0404_0400_0000, 0x0000_0000_0404_0400: 0x0004_0404_0400_0000, 0x0000_0000_0404_0404: 0x0004_0404_0400_0000, + 0x0000_0004_0000_0000: 0x0004_0404_0000_0000, 0x0000_0004_0000_0004: 0x0004_0404_0000_0000, 0x0000_0004_0000_0400: 0x0004_0404_0000_0000, 0x0000_0004_0000_0404: 0x0004_0404_0000_0000, + 0x0000_0004_0004_0000: 0x0004_0404_0000_0000, 0x0000_0004_0004_0004: 0x0004_0404_0000_0000, 0x0000_0004_0004_0400: 0x0004_0404_0000_0000, 0x0000_0004_0004_0404: 0x0004_0404_0000_0000, + 0x0000_0004_0400_0000: 0x0004_0404_0000_0000, 0x0000_0004_0400_0004: 0x0004_0404_0000_0000, 0x0000_0004_0400_0400: 0x0004_0404_0000_0000, 0x0000_0004_0400_0404: 0x0004_0404_0000_0000, + 0x0000_0004_0404_0000: 0x0004_0404_0000_0000, 0x0000_0004_0404_0004: 0x0004_0404_0000_0000, 0x0000_0004_0404_0400: 0x0004_0404_0000_0000, 0x0000_0004_0404_0404: 0x0004_0404_0000_0000, + 0x0000_0400_0000_0000: 0x0004_0400_0000_0000, 0x0000_0400_0000_0004: 0x0004_0400_0000_0000, 0x0000_0400_0000_0400: 0x0004_0400_0000_0000, 0x0000_0400_0000_0404: 0x0004_0400_0000_0000, + 0x0000_0400_0004_0000: 0x0004_0400_0000_0000, 0x0000_0400_0004_0004: 0x0004_0400_0000_0000, 0x0000_0400_0004_0400: 0x0004_0400_0000_0000, 0x0000_0400_0004_0404: 0x0004_0400_0000_0000, + 0x0000_0400_0400_0000: 0x0004_0400_0000_0000, 0x0000_0400_0400_0004: 0x0004_0400_0000_0000, 0x0000_0400_0400_0400: 0x0004_0400_0000_0000, 0x0000_0400_0400_0404: 0x0004_0400_0000_0000, + 0x0000_0400_0404_0000: 0x0004_0400_0000_0000, 0x0000_0400_0404_0004: 0x0004_0400_0000_0000, 0x0000_0400_0404_0400: 0x0004_0400_0000_0000, 0x0000_0400_0404_0404: 0x0004_0400_0000_0000, + 0x0000_0404_0000_0000: 0x0004_0400_0000_0000, 0x0000_0404_0000_0004: 0x0004_0400_0000_0000, 0x0000_0404_0000_0400: 0x0004_0400_0000_0000, 0x0000_0404_0000_0404: 0x0004_0400_0000_0000, + 0x0000_0404_0004_0000: 0x0004_0400_0000_0000, 0x0000_0404_0004_0004: 0x0004_0400_0000_0000, 0x0000_0404_0004_0400: 0x0004_0400_0000_0000, 0x0000_0404_0004_0404: 0x0004_0400_0000_0000, + 0x0000_0404_0400_0000: 0x0004_0400_0000_0000, 0x0000_0404_0400_0004: 0x0004_0400_0000_0000, 0x0000_0404_0400_0400: 0x0004_0400_0000_0000, 0x0000_0404_0400_0404: 0x0004_0400_0000_0000, + 0x0000_0404_0404_0000: 0x0004_0400_0000_0000, 0x0000_0404_0404_0004: 0x0004_0400_0000_0000, 0x0000_0404_0404_0400: 0x0004_0400_0000_0000, 0x0000_0404_0404_0404: 0x0004_0400_0000_0000, + 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0004_0000_0000_0004: 0x0004_0000_0000_0000, 0x0004_0000_0000_0400: 0x0004_0000_0000_0000, 0x0004_0000_0000_0404: 0x0004_0000_0000_0000, + 0x0004_0000_0004_0000: 0x0004_0000_0000_0000, 0x0004_0000_0004_0004: 0x0004_0000_0000_0000, 0x0004_0000_0004_0400: 0x0004_0000_0000_0000, 0x0004_0000_0004_0404: 0x0004_0000_0000_0000, + 0x0004_0000_0400_0000: 0x0004_0000_0000_0000, 0x0004_0000_0400_0004: 0x0004_0000_0000_0000, 0x0004_0000_0400_0400: 0x0004_0000_0000_0000, 0x0004_0000_0400_0404: 0x0004_0000_0000_0000, + 0x0004_0000_0404_0000: 0x0004_0000_0000_0000, 0x0004_0000_0404_0004: 0x0004_0000_0000_0000, 0x0004_0000_0404_0400: 0x0004_0000_0000_0000, 0x0004_0000_0404_0404: 0x0004_0000_0000_0000, + 0x0004_0004_0000_0000: 0x0004_0000_0000_0000, 0x0004_0004_0000_0004: 0x0004_0000_0000_0000, 0x0004_0004_0000_0400: 0x0004_0000_0000_0000, 0x0004_0004_0000_0404: 0x0004_0000_0000_0000, + 0x0004_0004_0004_0000: 0x0004_0000_0000_0000, 0x0004_0004_0004_0004: 0x0004_0000_0000_0000, 0x0004_0004_0004_0400: 0x0004_0000_0000_0000, 0x0004_0004_0004_0404: 0x0004_0000_0000_0000, + 0x0004_0004_0400_0000: 0x0004_0000_0000_0000, 0x0004_0004_0400_0004: 0x0004_0000_0000_0000, 0x0004_0004_0400_0400: 0x0004_0000_0000_0000, 0x0004_0004_0400_0404: 0x0004_0000_0000_0000, + 0x0004_0004_0404_0000: 0x0004_0000_0000_0000, 0x0004_0004_0404_0004: 0x0004_0000_0000_0000, 0x0004_0004_0404_0400: 0x0004_0000_0000_0000, 0x0004_0004_0404_0404: 0x0004_0000_0000_0000, + 0x0004_0400_0000_0000: 0x0004_0000_0000_0000, 0x0004_0400_0000_0004: 0x0004_0000_0000_0000, 0x0004_0400_0000_0400: 0x0004_0000_0000_0000, 0x0004_0400_0000_0404: 0x0004_0000_0000_0000, + 0x0004_0400_0004_0000: 0x0004_0000_0000_0000, 0x0004_0400_0004_0004: 0x0004_0000_0000_0000, 0x0004_0400_0004_0400: 0x0004_0000_0000_0000, 0x0004_0400_0004_0404: 0x0004_0000_0000_0000, + 0x0004_0400_0400_0000: 0x0004_0000_0000_0000, 0x0004_0400_0400_0004: 0x0004_0000_0000_0000, 0x0004_0400_0400_0400: 0x0004_0000_0000_0000, 0x0004_0400_0400_0404: 0x0004_0000_0000_0000, + 0x0004_0400_0404_0000: 0x0004_0000_0000_0000, 0x0004_0400_0404_0004: 0x0004_0000_0000_0000, 0x0004_0400_0404_0400: 0x0004_0000_0000_0000, 0x0004_0400_0404_0404: 0x0004_0000_0000_0000, + 0x0004_0404_0000_0000: 0x0004_0000_0000_0000, 0x0004_0404_0000_0004: 0x0004_0000_0000_0000, 0x0004_0404_0000_0400: 0x0004_0000_0000_0000, 0x0004_0404_0000_0404: 0x0004_0000_0000_0000, + 0x0004_0404_0004_0000: 0x0004_0000_0000_0000, 0x0004_0404_0004_0004: 0x0004_0000_0000_0000, 0x0004_0404_0004_0400: 0x0004_0000_0000_0000, 0x0004_0404_0004_0404: 0x0004_0000_0000_0000, + 0x0004_0404_0400_0000: 0x0004_0000_0000_0000, 0x0004_0404_0400_0004: 0x0004_0000_0000_0000, 0x0004_0404_0400_0400: 0x0004_0000_0000_0000, 0x0004_0404_0400_0404: 0x0004_0000_0000_0000, + 0x0004_0404_0404_0000: 0x0004_0000_0000_0000, 0x0004_0404_0404_0004: 0x0004_0000_0000_0000, 0x0004_0404_0404_0400: 0x0004_0000_0000_0000, 0x0004_0404_0404_0404: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0008_0808_0808_0808, 0x0000_0000_0000_0008: 0x0008_0808_0808_0808, 0x0000_0000_0000_0800: 0x0008_0808_0808_0800, 0x0000_0000_0000_0808: 0x0008_0808_0808_0800, + 0x0000_0000_0008_0000: 0x0008_0808_0808_0000, 0x0000_0000_0008_0008: 0x0008_0808_0808_0000, 0x0000_0000_0008_0800: 0x0008_0808_0808_0000, 0x0000_0000_0008_0808: 0x0008_0808_0808_0000, + 0x0000_0000_0800_0000: 0x0008_0808_0800_0000, 0x0000_0000_0800_0008: 0x0008_0808_0800_0000, 0x0000_0000_0800_0800: 0x0008_0808_0800_0000, 0x0000_0000_0800_0808: 0x0008_0808_0800_0000, + 0x0000_0000_0808_0000: 0x0008_0808_0800_0000, 0x0000_0000_0808_0008: 0x0008_0808_0800_0000, 0x0000_0000_0808_0800: 0x0008_0808_0800_0000, 0x0000_0000_0808_0808: 0x0008_0808_0800_0000, + 0x0000_0008_0000_0000: 0x0008_0808_0000_0000, 0x0000_0008_0000_0008: 0x0008_0808_0000_0000, 0x0000_0008_0000_0800: 0x0008_0808_0000_0000, 0x0000_0008_0000_0808: 0x0008_0808_0000_0000, + 0x0000_0008_0008_0000: 0x0008_0808_0000_0000, 0x0000_0008_0008_0008: 0x0008_0808_0000_0000, 0x0000_0008_0008_0800: 0x0008_0808_0000_0000, 0x0000_0008_0008_0808: 0x0008_0808_0000_0000, + 0x0000_0008_0800_0000: 0x0008_0808_0000_0000, 0x0000_0008_0800_0008: 0x0008_0808_0000_0000, 0x0000_0008_0800_0800: 0x0008_0808_0000_0000, 0x0000_0008_0800_0808: 0x0008_0808_0000_0000, + 0x0000_0008_0808_0000: 0x0008_0808_0000_0000, 0x0000_0008_0808_0008: 0x0008_0808_0000_0000, 0x0000_0008_0808_0800: 0x0008_0808_0000_0000, 0x0000_0008_0808_0808: 0x0008_0808_0000_0000, + 0x0000_0800_0000_0000: 0x0008_0800_0000_0000, 0x0000_0800_0000_0008: 0x0008_0800_0000_0000, 0x0000_0800_0000_0800: 0x0008_0800_0000_0000, 0x0000_0800_0000_0808: 0x0008_0800_0000_0000, + 0x0000_0800_0008_0000: 0x0008_0800_0000_0000, 0x0000_0800_0008_0008: 0x0008_0800_0000_0000, 0x0000_0800_0008_0800: 0x0008_0800_0000_0000, 0x0000_0800_0008_0808: 0x0008_0800_0000_0000, + 0x0000_0800_0800_0000: 0x0008_0800_0000_0000, 0x0000_0800_0800_0008: 0x0008_0800_0000_0000, 0x0000_0800_0800_0800: 0x0008_0800_0000_0000, 0x0000_0800_0800_0808: 0x0008_0800_0000_0000, + 0x0000_0800_0808_0000: 0x0008_0800_0000_0000, 0x0000_0800_0808_0008: 0x0008_0800_0000_0000, 0x0000_0800_0808_0800: 0x0008_0800_0000_0000, 0x0000_0800_0808_0808: 0x0008_0800_0000_0000, + 0x0000_0808_0000_0000: 0x0008_0800_0000_0000, 0x0000_0808_0000_0008: 0x0008_0800_0000_0000, 0x0000_0808_0000_0800: 0x0008_0800_0000_0000, 0x0000_0808_0000_0808: 0x0008_0800_0000_0000, + 0x0000_0808_0008_0000: 0x0008_0800_0000_0000, 0x0000_0808_0008_0008: 0x0008_0800_0000_0000, 0x0000_0808_0008_0800: 0x0008_0800_0000_0000, 0x0000_0808_0008_0808: 0x0008_0800_0000_0000, + 0x0000_0808_0800_0000: 0x0008_0800_0000_0000, 0x0000_0808_0800_0008: 0x0008_0800_0000_0000, 0x0000_0808_0800_0800: 0x0008_0800_0000_0000, 0x0000_0808_0800_0808: 0x0008_0800_0000_0000, + 0x0000_0808_0808_0000: 0x0008_0800_0000_0000, 0x0000_0808_0808_0008: 0x0008_0800_0000_0000, 0x0000_0808_0808_0800: 0x0008_0800_0000_0000, 0x0000_0808_0808_0808: 0x0008_0800_0000_0000, + 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0008_0000_0000_0008: 0x0008_0000_0000_0000, 0x0008_0000_0000_0800: 0x0008_0000_0000_0000, 0x0008_0000_0000_0808: 0x0008_0000_0000_0000, + 0x0008_0000_0008_0000: 0x0008_0000_0000_0000, 0x0008_0000_0008_0008: 0x0008_0000_0000_0000, 0x0008_0000_0008_0800: 0x0008_0000_0000_0000, 0x0008_0000_0008_0808: 0x0008_0000_0000_0000, + 0x0008_0000_0800_0000: 0x0008_0000_0000_0000, 0x0008_0000_0800_0008: 0x0008_0000_0000_0000, 0x0008_0000_0800_0800: 0x0008_0000_0000_0000, 0x0008_0000_0800_0808: 0x0008_0000_0000_0000, + 0x0008_0000_0808_0000: 0x0008_0000_0000_0000, 0x0008_0000_0808_0008: 0x0008_0000_0000_0000, 0x0008_0000_0808_0800: 0x0008_0000_0000_0000, 0x0008_0000_0808_0808: 0x0008_0000_0000_0000, + 0x0008_0008_0000_0000: 0x0008_0000_0000_0000, 0x0008_0008_0000_0008: 0x0008_0000_0000_0000, 0x0008_0008_0000_0800: 0x0008_0000_0000_0000, 0x0008_0008_0000_0808: 0x0008_0000_0000_0000, + 0x0008_0008_0008_0000: 0x0008_0000_0000_0000, 0x0008_0008_0008_0008: 0x0008_0000_0000_0000, 0x0008_0008_0008_0800: 0x0008_0000_0000_0000, 0x0008_0008_0008_0808: 0x0008_0000_0000_0000, + 0x0008_0008_0800_0000: 0x0008_0000_0000_0000, 0x0008_0008_0800_0008: 0x0008_0000_0000_0000, 0x0008_0008_0800_0800: 0x0008_0000_0000_0000, 0x0008_0008_0800_0808: 0x0008_0000_0000_0000, + 0x0008_0008_0808_0000: 0x0008_0000_0000_0000, 0x0008_0008_0808_0008: 0x0008_0000_0000_0000, 0x0008_0008_0808_0800: 0x0008_0000_0000_0000, 0x0008_0008_0808_0808: 0x0008_0000_0000_0000, + 0x0008_0800_0000_0000: 0x0008_0000_0000_0000, 0x0008_0800_0000_0008: 0x0008_0000_0000_0000, 0x0008_0800_0000_0800: 0x0008_0000_0000_0000, 0x0008_0800_0000_0808: 0x0008_0000_0000_0000, + 0x0008_0800_0008_0000: 0x0008_0000_0000_0000, 0x0008_0800_0008_0008: 0x0008_0000_0000_0000, 0x0008_0800_0008_0800: 0x0008_0000_0000_0000, 0x0008_0800_0008_0808: 0x0008_0000_0000_0000, + 0x0008_0800_0800_0000: 0x0008_0000_0000_0000, 0x0008_0800_0800_0008: 0x0008_0000_0000_0000, 0x0008_0800_0800_0800: 0x0008_0000_0000_0000, 0x0008_0800_0800_0808: 0x0008_0000_0000_0000, + 0x0008_0800_0808_0000: 0x0008_0000_0000_0000, 0x0008_0800_0808_0008: 0x0008_0000_0000_0000, 0x0008_0800_0808_0800: 0x0008_0000_0000_0000, 0x0008_0800_0808_0808: 0x0008_0000_0000_0000, + 0x0008_0808_0000_0000: 0x0008_0000_0000_0000, 0x0008_0808_0000_0008: 0x0008_0000_0000_0000, 0x0008_0808_0000_0800: 0x0008_0000_0000_0000, 0x0008_0808_0000_0808: 0x0008_0000_0000_0000, + 0x0008_0808_0008_0000: 0x0008_0000_0000_0000, 0x0008_0808_0008_0008: 0x0008_0000_0000_0000, 0x0008_0808_0008_0800: 0x0008_0000_0000_0000, 0x0008_0808_0008_0808: 0x0008_0000_0000_0000, + 0x0008_0808_0800_0000: 0x0008_0000_0000_0000, 0x0008_0808_0800_0008: 0x0008_0000_0000_0000, 0x0008_0808_0800_0800: 0x0008_0000_0000_0000, 0x0008_0808_0800_0808: 0x0008_0000_0000_0000, + 0x0008_0808_0808_0000: 0x0008_0000_0000_0000, 0x0008_0808_0808_0008: 0x0008_0000_0000_0000, 0x0008_0808_0808_0800: 0x0008_0000_0000_0000, 0x0008_0808_0808_0808: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0010_1010_1010_1010, 0x0000_0000_0000_0010: 0x0010_1010_1010_1010, 0x0000_0000_0000_1000: 0x0010_1010_1010_1000, 0x0000_0000_0000_1010: 0x0010_1010_1010_1000, + 0x0000_0000_0010_0000: 0x0010_1010_1010_0000, 0x0000_0000_0010_0010: 0x0010_1010_1010_0000, 0x0000_0000_0010_1000: 0x0010_1010_1010_0000, 0x0000_0000_0010_1010: 0x0010_1010_1010_0000, + 0x0000_0000_1000_0000: 0x0010_1010_1000_0000, 0x0000_0000_1000_0010: 0x0010_1010_1000_0000, 0x0000_0000_1000_1000: 0x0010_1010_1000_0000, 0x0000_0000_1000_1010: 0x0010_1010_1000_0000, + 0x0000_0000_1010_0000: 0x0010_1010_1000_0000, 0x0000_0000_1010_0010: 0x0010_1010_1000_0000, 0x0000_0000_1010_1000: 0x0010_1010_1000_0000, 0x0000_0000_1010_1010: 0x0010_1010_1000_0000, + 0x0000_0010_0000_0000: 0x0010_1010_0000_0000, 0x0000_0010_0000_0010: 0x0010_1010_0000_0000, 0x0000_0010_0000_1000: 0x0010_1010_0000_0000, 0x0000_0010_0000_1010: 0x0010_1010_0000_0000, + 0x0000_0010_0010_0000: 0x0010_1010_0000_0000, 0x0000_0010_0010_0010: 0x0010_1010_0000_0000, 0x0000_0010_0010_1000: 0x0010_1010_0000_0000, 0x0000_0010_0010_1010: 0x0010_1010_0000_0000, + 0x0000_0010_1000_0000: 0x0010_1010_0000_0000, 0x0000_0010_1000_0010: 0x0010_1010_0000_0000, 0x0000_0010_1000_1000: 0x0010_1010_0000_0000, 0x0000_0010_1000_1010: 0x0010_1010_0000_0000, + 0x0000_0010_1010_0000: 0x0010_1010_0000_0000, 0x0000_0010_1010_0010: 0x0010_1010_0000_0000, 0x0000_0010_1010_1000: 0x0010_1010_0000_0000, 0x0000_0010_1010_1010: 0x0010_1010_0000_0000, + 0x0000_1000_0000_0000: 0x0010_1000_0000_0000, 0x0000_1000_0000_0010: 0x0010_1000_0000_0000, 0x0000_1000_0000_1000: 0x0010_1000_0000_0000, 0x0000_1000_0000_1010: 0x0010_1000_0000_0000, + 0x0000_1000_0010_0000: 0x0010_1000_0000_0000, 0x0000_1000_0010_0010: 0x0010_1000_0000_0000, 0x0000_1000_0010_1000: 0x0010_1000_0000_0000, 0x0000_1000_0010_1010: 0x0010_1000_0000_0000, + 0x0000_1000_1000_0000: 0x0010_1000_0000_0000, 0x0000_1000_1000_0010: 0x0010_1000_0000_0000, 0x0000_1000_1000_1000: 0x0010_1000_0000_0000, 0x0000_1000_1000_1010: 0x0010_1000_0000_0000, + 0x0000_1000_1010_0000: 0x0010_1000_0000_0000, 0x0000_1000_1010_0010: 0x0010_1000_0000_0000, 0x0000_1000_1010_1000: 0x0010_1000_0000_0000, 0x0000_1000_1010_1010: 0x0010_1000_0000_0000, + 0x0000_1010_0000_0000: 0x0010_1000_0000_0000, 0x0000_1010_0000_0010: 0x0010_1000_0000_0000, 0x0000_1010_0000_1000: 0x0010_1000_0000_0000, 0x0000_1010_0000_1010: 0x0010_1000_0000_0000, + 0x0000_1010_0010_0000: 0x0010_1000_0000_0000, 0x0000_1010_0010_0010: 0x0010_1000_0000_0000, 0x0000_1010_0010_1000: 0x0010_1000_0000_0000, 0x0000_1010_0010_1010: 0x0010_1000_0000_0000, + 0x0000_1010_1000_0000: 0x0010_1000_0000_0000, 0x0000_1010_1000_0010: 0x0010_1000_0000_0000, 0x0000_1010_1000_1000: 0x0010_1000_0000_0000, 0x0000_1010_1000_1010: 0x0010_1000_0000_0000, + 0x0000_1010_1010_0000: 0x0010_1000_0000_0000, 0x0000_1010_1010_0010: 0x0010_1000_0000_0000, 0x0000_1010_1010_1000: 0x0010_1000_0000_0000, 0x0000_1010_1010_1010: 0x0010_1000_0000_0000, + 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x0010_0000_0000_0010: 0x0010_0000_0000_0000, 0x0010_0000_0000_1000: 0x0010_0000_0000_0000, 0x0010_0000_0000_1010: 0x0010_0000_0000_0000, + 0x0010_0000_0010_0000: 0x0010_0000_0000_0000, 0x0010_0000_0010_0010: 0x0010_0000_0000_0000, 0x0010_0000_0010_1000: 0x0010_0000_0000_0000, 0x0010_0000_0010_1010: 0x0010_0000_0000_0000, + 0x0010_0000_1000_0000: 0x0010_0000_0000_0000, 0x0010_0000_1000_0010: 0x0010_0000_0000_0000, 0x0010_0000_1000_1000: 0x0010_0000_0000_0000, 0x0010_0000_1000_1010: 0x0010_0000_0000_0000, + 0x0010_0000_1010_0000: 0x0010_0000_0000_0000, 0x0010_0000_1010_0010: 0x0010_0000_0000_0000, 0x0010_0000_1010_1000: 0x0010_0000_0000_0000, 0x0010_0000_1010_1010: 0x0010_0000_0000_0000, + 0x0010_0010_0000_0000: 0x0010_0000_0000_0000, 0x0010_0010_0000_0010: 0x0010_0000_0000_0000, 0x0010_0010_0000_1000: 0x0010_0000_0000_0000, 0x0010_0010_0000_1010: 0x0010_0000_0000_0000, + 0x0010_0010_0010_0000: 0x0010_0000_0000_0000, 0x0010_0010_0010_0010: 0x0010_0000_0000_0000, 0x0010_0010_0010_1000: 0x0010_0000_0000_0000, 0x0010_0010_0010_1010: 0x0010_0000_0000_0000, + 0x0010_0010_1000_0000: 0x0010_0000_0000_0000, 0x0010_0010_1000_0010: 0x0010_0000_0000_0000, 0x0010_0010_1000_1000: 0x0010_0000_0000_0000, 0x0010_0010_1000_1010: 0x0010_0000_0000_0000, + 0x0010_0010_1010_0000: 0x0010_0000_0000_0000, 0x0010_0010_1010_0010: 0x0010_0000_0000_0000, 0x0010_0010_1010_1000: 0x0010_0000_0000_0000, 0x0010_0010_1010_1010: 0x0010_0000_0000_0000, + 0x0010_1000_0000_0000: 0x0010_0000_0000_0000, 0x0010_1000_0000_0010: 0x0010_0000_0000_0000, 0x0010_1000_0000_1000: 0x0010_0000_0000_0000, 0x0010_1000_0000_1010: 0x0010_0000_0000_0000, + 0x0010_1000_0010_0000: 0x0010_0000_0000_0000, 0x0010_1000_0010_0010: 0x0010_0000_0000_0000, 0x0010_1000_0010_1000: 0x0010_0000_0000_0000, 0x0010_1000_0010_1010: 0x0010_0000_0000_0000, + 0x0010_1000_1000_0000: 0x0010_0000_0000_0000, 0x0010_1000_1000_0010: 0x0010_0000_0000_0000, 0x0010_1000_1000_1000: 0x0010_0000_0000_0000, 0x0010_1000_1000_1010: 0x0010_0000_0000_0000, + 0x0010_1000_1010_0000: 0x0010_0000_0000_0000, 0x0010_1000_1010_0010: 0x0010_0000_0000_0000, 0x0010_1000_1010_1000: 0x0010_0000_0000_0000, 0x0010_1000_1010_1010: 0x0010_0000_0000_0000, + 0x0010_1010_0000_0000: 0x0010_0000_0000_0000, 0x0010_1010_0000_0010: 0x0010_0000_0000_0000, 0x0010_1010_0000_1000: 0x0010_0000_0000_0000, 0x0010_1010_0000_1010: 0x0010_0000_0000_0000, + 0x0010_1010_0010_0000: 0x0010_0000_0000_0000, 0x0010_1010_0010_0010: 0x0010_0000_0000_0000, 0x0010_1010_0010_1000: 0x0010_0000_0000_0000, 0x0010_1010_0010_1010: 0x0010_0000_0000_0000, + 0x0010_1010_1000_0000: 0x0010_0000_0000_0000, 0x0010_1010_1000_0010: 0x0010_0000_0000_0000, 0x0010_1010_1000_1000: 0x0010_0000_0000_0000, 0x0010_1010_1000_1010: 0x0010_0000_0000_0000, + 0x0010_1010_1010_0000: 0x0010_0000_0000_0000, 0x0010_1010_1010_0010: 0x0010_0000_0000_0000, 0x0010_1010_1010_1000: 0x0010_0000_0000_0000, 0x0010_1010_1010_1010: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0020_2020_2020_2020, 0x0000_0000_0000_0020: 0x0020_2020_2020_2020, 0x0000_0000_0000_2000: 0x0020_2020_2020_2000, 0x0000_0000_0000_2020: 0x0020_2020_2020_2000, + 0x0000_0000_0020_0000: 0x0020_2020_2020_0000, 0x0000_0000_0020_0020: 0x0020_2020_2020_0000, 0x0000_0000_0020_2000: 0x0020_2020_2020_0000, 0x0000_0000_0020_2020: 0x0020_2020_2020_0000, + 0x0000_0000_2000_0000: 0x0020_2020_2000_0000, 0x0000_0000_2000_0020: 0x0020_2020_2000_0000, 0x0000_0000_2000_2000: 0x0020_2020_2000_0000, 0x0000_0000_2000_2020: 0x0020_2020_2000_0000, + 0x0000_0000_2020_0000: 0x0020_2020_2000_0000, 0x0000_0000_2020_0020: 0x0020_2020_2000_0000, 0x0000_0000_2020_2000: 0x0020_2020_2000_0000, 0x0000_0000_2020_2020: 0x0020_2020_2000_0000, + 0x0000_0020_0000_0000: 0x0020_2020_0000_0000, 0x0000_0020_0000_0020: 0x0020_2020_0000_0000, 0x0000_0020_0000_2000: 0x0020_2020_0000_0000, 0x0000_0020_0000_2020: 0x0020_2020_0000_0000, + 0x0000_0020_0020_0000: 0x0020_2020_0000_0000, 0x0000_0020_0020_0020: 0x0020_2020_0000_0000, 0x0000_0020_0020_2000: 0x0020_2020_0000_0000, 0x0000_0020_0020_2020: 0x0020_2020_0000_0000, + 0x0000_0020_2000_0000: 0x0020_2020_0000_0000, 0x0000_0020_2000_0020: 0x0020_2020_0000_0000, 0x0000_0020_2000_2000: 0x0020_2020_0000_0000, 0x0000_0020_2000_2020: 0x0020_2020_0000_0000, + 0x0000_0020_2020_0000: 0x0020_2020_0000_0000, 0x0000_0020_2020_0020: 0x0020_2020_0000_0000, 0x0000_0020_2020_2000: 0x0020_2020_0000_0000, 0x0000_0020_2020_2020: 0x0020_2020_0000_0000, + 0x0000_2000_0000_0000: 0x0020_2000_0000_0000, 0x0000_2000_0000_0020: 0x0020_2000_0000_0000, 0x0000_2000_0000_2000: 0x0020_2000_0000_0000, 0x0000_2000_0000_2020: 0x0020_2000_0000_0000, + 0x0000_2000_0020_0000: 0x0020_2000_0000_0000, 0x0000_2000_0020_0020: 0x0020_2000_0000_0000, 0x0000_2000_0020_2000: 0x0020_2000_0000_0000, 0x0000_2000_0020_2020: 0x0020_2000_0000_0000, + 0x0000_2000_2000_0000: 0x0020_2000_0000_0000, 0x0000_2000_2000_0020: 0x0020_2000_0000_0000, 0x0000_2000_2000_2000: 0x0020_2000_0000_0000, 0x0000_2000_2000_2020: 0x0020_2000_0000_0000, + 0x0000_2000_2020_0000: 0x0020_2000_0000_0000, 0x0000_2000_2020_0020: 0x0020_2000_0000_0000, 0x0000_2000_2020_2000: 0x0020_2000_0000_0000, 0x0000_2000_2020_2020: 0x0020_2000_0000_0000, + 0x0000_2020_0000_0000: 0x0020_2000_0000_0000, 0x0000_2020_0000_0020: 0x0020_2000_0000_0000, 0x0000_2020_0000_2000: 0x0020_2000_0000_0000, 0x0000_2020_0000_2020: 0x0020_2000_0000_0000, + 0x0000_2020_0020_0000: 0x0020_2000_0000_0000, 0x0000_2020_0020_0020: 0x0020_2000_0000_0000, 0x0000_2020_0020_2000: 0x0020_2000_0000_0000, 0x0000_2020_0020_2020: 0x0020_2000_0000_0000, + 0x0000_2020_2000_0000: 0x0020_2000_0000_0000, 0x0000_2020_2000_0020: 0x0020_2000_0000_0000, 0x0000_2020_2000_2000: 0x0020_2000_0000_0000, 0x0000_2020_2000_2020: 0x0020_2000_0000_0000, + 0x0000_2020_2020_0000: 0x0020_2000_0000_0000, 0x0000_2020_2020_0020: 0x0020_2000_0000_0000, 0x0000_2020_2020_2000: 0x0020_2000_0000_0000, 0x0000_2020_2020_2020: 0x0020_2000_0000_0000, + 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x0020_0000_0000_0020: 0x0020_0000_0000_0000, 0x0020_0000_0000_2000: 0x0020_0000_0000_0000, 0x0020_0000_0000_2020: 0x0020_0000_0000_0000, + 0x0020_0000_0020_0000: 0x0020_0000_0000_0000, 0x0020_0000_0020_0020: 0x0020_0000_0000_0000, 0x0020_0000_0020_2000: 0x0020_0000_0000_0000, 0x0020_0000_0020_2020: 0x0020_0000_0000_0000, + 0x0020_0000_2000_0000: 0x0020_0000_0000_0000, 0x0020_0000_2000_0020: 0x0020_0000_0000_0000, 0x0020_0000_2000_2000: 0x0020_0000_0000_0000, 0x0020_0000_2000_2020: 0x0020_0000_0000_0000, + 0x0020_0000_2020_0000: 0x0020_0000_0000_0000, 0x0020_0000_2020_0020: 0x0020_0000_0000_0000, 0x0020_0000_2020_2000: 0x0020_0000_0000_0000, 0x0020_0000_2020_2020: 0x0020_0000_0000_0000, + 0x0020_0020_0000_0000: 0x0020_0000_0000_0000, 0x0020_0020_0000_0020: 0x0020_0000_0000_0000, 0x0020_0020_0000_2000: 0x0020_0000_0000_0000, 0x0020_0020_0000_2020: 0x0020_0000_0000_0000, + 0x0020_0020_0020_0000: 0x0020_0000_0000_0000, 0x0020_0020_0020_0020: 0x0020_0000_0000_0000, 0x0020_0020_0020_2000: 0x0020_0000_0000_0000, 0x0020_0020_0020_2020: 0x0020_0000_0000_0000, + 0x0020_0020_2000_0000: 0x0020_0000_0000_0000, 0x0020_0020_2000_0020: 0x0020_0000_0000_0000, 0x0020_0020_2000_2000: 0x0020_0000_0000_0000, 0x0020_0020_2000_2020: 0x0020_0000_0000_0000, + 0x0020_0020_2020_0000: 0x0020_0000_0000_0000, 0x0020_0020_2020_0020: 0x0020_0000_0000_0000, 0x0020_0020_2020_2000: 0x0020_0000_0000_0000, 0x0020_0020_2020_2020: 0x0020_0000_0000_0000, + 0x0020_2000_0000_0000: 0x0020_0000_0000_0000, 0x0020_2000_0000_0020: 0x0020_0000_0000_0000, 0x0020_2000_0000_2000: 0x0020_0000_0000_0000, 0x0020_2000_0000_2020: 0x0020_0000_0000_0000, + 0x0020_2000_0020_0000: 0x0020_0000_0000_0000, 0x0020_2000_0020_0020: 0x0020_0000_0000_0000, 0x0020_2000_0020_2000: 0x0020_0000_0000_0000, 0x0020_2000_0020_2020: 0x0020_0000_0000_0000, + 0x0020_2000_2000_0000: 0x0020_0000_0000_0000, 0x0020_2000_2000_0020: 0x0020_0000_0000_0000, 0x0020_2000_2000_2000: 0x0020_0000_0000_0000, 0x0020_2000_2000_2020: 0x0020_0000_0000_0000, + 0x0020_2000_2020_0000: 0x0020_0000_0000_0000, 0x0020_2000_2020_0020: 0x0020_0000_0000_0000, 0x0020_2000_2020_2000: 0x0020_0000_0000_0000, 0x0020_2000_2020_2020: 0x0020_0000_0000_0000, + 0x0020_2020_0000_0000: 0x0020_0000_0000_0000, 0x0020_2020_0000_0020: 0x0020_0000_0000_0000, 0x0020_2020_0000_2000: 0x0020_0000_0000_0000, 0x0020_2020_0000_2020: 0x0020_0000_0000_0000, + 0x0020_2020_0020_0000: 0x0020_0000_0000_0000, 0x0020_2020_0020_0020: 0x0020_0000_0000_0000, 0x0020_2020_0020_2000: 0x0020_0000_0000_0000, 0x0020_2020_0020_2020: 0x0020_0000_0000_0000, + 0x0020_2020_2000_0000: 0x0020_0000_0000_0000, 0x0020_2020_2000_0020: 0x0020_0000_0000_0000, 0x0020_2020_2000_2000: 0x0020_0000_0000_0000, 0x0020_2020_2000_2020: 0x0020_0000_0000_0000, + 0x0020_2020_2020_0000: 0x0020_0000_0000_0000, 0x0020_2020_2020_0020: 0x0020_0000_0000_0000, 0x0020_2020_2020_2000: 0x0020_0000_0000_0000, 0x0020_2020_2020_2020: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0040_4040_4040_4040, 0x0000_0000_0000_0040: 0x0040_4040_4040_4040, 0x0000_0000_0000_4000: 0x0040_4040_4040_4000, 0x0000_0000_0000_4040: 0x0040_4040_4040_4000, + 0x0000_0000_0040_0000: 0x0040_4040_4040_0000, 0x0000_0000_0040_0040: 0x0040_4040_4040_0000, 0x0000_0000_0040_4000: 0x0040_4040_4040_0000, 0x0000_0000_0040_4040: 0x0040_4040_4040_0000, + 0x0000_0000_4000_0000: 0x0040_4040_4000_0000, 0x0000_0000_4000_0040: 0x0040_4040_4000_0000, 0x0000_0000_4000_4000: 0x0040_4040_4000_0000, 0x0000_0000_4000_4040: 0x0040_4040_4000_0000, + 0x0000_0000_4040_0000: 0x0040_4040_4000_0000, 0x0000_0000_4040_0040: 0x0040_4040_4000_0000, 0x0000_0000_4040_4000: 0x0040_4040_4000_0000, 0x0000_0000_4040_4040: 0x0040_4040_4000_0000, + 0x0000_0040_0000_0000: 0x0040_4040_0000_0000, 0x0000_0040_0000_0040: 0x0040_4040_0000_0000, 0x0000_0040_0000_4000: 0x0040_4040_0000_0000, 0x0000_0040_0000_4040: 0x0040_4040_0000_0000, + 0x0000_0040_0040_0000: 0x0040_4040_0000_0000, 0x0000_0040_0040_0040: 0x0040_4040_0000_0000, 0x0000_0040_0040_4000: 0x0040_4040_0000_0000, 0x0000_0040_0040_4040: 0x0040_4040_0000_0000, + 0x0000_0040_4000_0000: 0x0040_4040_0000_0000, 0x0000_0040_4000_0040: 0x0040_4040_0000_0000, 0x0000_0040_4000_4000: 0x0040_4040_0000_0000, 0x0000_0040_4000_4040: 0x0040_4040_0000_0000, + 0x0000_0040_4040_0000: 0x0040_4040_0000_0000, 0x0000_0040_4040_0040: 0x0040_4040_0000_0000, 0x0000_0040_4040_4000: 0x0040_4040_0000_0000, 0x0000_0040_4040_4040: 0x0040_4040_0000_0000, + 0x0000_4000_0000_0000: 0x0040_4000_0000_0000, 0x0000_4000_0000_0040: 0x0040_4000_0000_0000, 0x0000_4000_0000_4000: 0x0040_4000_0000_0000, 0x0000_4000_0000_4040: 0x0040_4000_0000_0000, + 0x0000_4000_0040_0000: 0x0040_4000_0000_0000, 0x0000_4000_0040_0040: 0x0040_4000_0000_0000, 0x0000_4000_0040_4000: 0x0040_4000_0000_0000, 0x0000_4000_0040_4040: 0x0040_4000_0000_0000, + 0x0000_4000_4000_0000: 0x0040_4000_0000_0000, 0x0000_4000_4000_0040: 0x0040_4000_0000_0000, 0x0000_4000_4000_4000: 0x0040_4000_0000_0000, 0x0000_4000_4000_4040: 0x0040_4000_0000_0000, + 0x0000_4000_4040_0000: 0x0040_4000_0000_0000, 0x0000_4000_4040_0040: 0x0040_4000_0000_0000, 0x0000_4000_4040_4000: 0x0040_4000_0000_0000, 0x0000_4000_4040_4040: 0x0040_4000_0000_0000, + 0x0000_4040_0000_0000: 0x0040_4000_0000_0000, 0x0000_4040_0000_0040: 0x0040_4000_0000_0000, 0x0000_4040_0000_4000: 0x0040_4000_0000_0000, 0x0000_4040_0000_4040: 0x0040_4000_0000_0000, + 0x0000_4040_0040_0000: 0x0040_4000_0000_0000, 0x0000_4040_0040_0040: 0x0040_4000_0000_0000, 0x0000_4040_0040_4000: 0x0040_4000_0000_0000, 0x0000_4040_0040_4040: 0x0040_4000_0000_0000, + 0x0000_4040_4000_0000: 0x0040_4000_0000_0000, 0x0000_4040_4000_0040: 0x0040_4000_0000_0000, 0x0000_4040_4000_4000: 0x0040_4000_0000_0000, 0x0000_4040_4000_4040: 0x0040_4000_0000_0000, + 0x0000_4040_4040_0000: 0x0040_4000_0000_0000, 0x0000_4040_4040_0040: 0x0040_4000_0000_0000, 0x0000_4040_4040_4000: 0x0040_4000_0000_0000, 0x0000_4040_4040_4040: 0x0040_4000_0000_0000, + 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x0040_0000_0000_0040: 0x0040_0000_0000_0000, 0x0040_0000_0000_4000: 0x0040_0000_0000_0000, 0x0040_0000_0000_4040: 0x0040_0000_0000_0000, + 0x0040_0000_0040_0000: 0x0040_0000_0000_0000, 0x0040_0000_0040_0040: 0x0040_0000_0000_0000, 0x0040_0000_0040_4000: 0x0040_0000_0000_0000, 0x0040_0000_0040_4040: 0x0040_0000_0000_0000, + 0x0040_0000_4000_0000: 0x0040_0000_0000_0000, 0x0040_0000_4000_0040: 0x0040_0000_0000_0000, 0x0040_0000_4000_4000: 0x0040_0000_0000_0000, 0x0040_0000_4000_4040: 0x0040_0000_0000_0000, + 0x0040_0000_4040_0000: 0x0040_0000_0000_0000, 0x0040_0000_4040_0040: 0x0040_0000_0000_0000, 0x0040_0000_4040_4000: 0x0040_0000_0000_0000, 0x0040_0000_4040_4040: 0x0040_0000_0000_0000, + 0x0040_0040_0000_0000: 0x0040_0000_0000_0000, 0x0040_0040_0000_0040: 0x0040_0000_0000_0000, 0x0040_0040_0000_4000: 0x0040_0000_0000_0000, 0x0040_0040_0000_4040: 0x0040_0000_0000_0000, + 0x0040_0040_0040_0000: 0x0040_0000_0000_0000, 0x0040_0040_0040_0040: 0x0040_0000_0000_0000, 0x0040_0040_0040_4000: 0x0040_0000_0000_0000, 0x0040_0040_0040_4040: 0x0040_0000_0000_0000, + 0x0040_0040_4000_0000: 0x0040_0000_0000_0000, 0x0040_0040_4000_0040: 0x0040_0000_0000_0000, 0x0040_0040_4000_4000: 0x0040_0000_0000_0000, 0x0040_0040_4000_4040: 0x0040_0000_0000_0000, + 0x0040_0040_4040_0000: 0x0040_0000_0000_0000, 0x0040_0040_4040_0040: 0x0040_0000_0000_0000, 0x0040_0040_4040_4000: 0x0040_0000_0000_0000, 0x0040_0040_4040_4040: 0x0040_0000_0000_0000, + 0x0040_4000_0000_0000: 0x0040_0000_0000_0000, 0x0040_4000_0000_0040: 0x0040_0000_0000_0000, 0x0040_4000_0000_4000: 0x0040_0000_0000_0000, 0x0040_4000_0000_4040: 0x0040_0000_0000_0000, + 0x0040_4000_0040_0000: 0x0040_0000_0000_0000, 0x0040_4000_0040_0040: 0x0040_0000_0000_0000, 0x0040_4000_0040_4000: 0x0040_0000_0000_0000, 0x0040_4000_0040_4040: 0x0040_0000_0000_0000, + 0x0040_4000_4000_0000: 0x0040_0000_0000_0000, 0x0040_4000_4000_0040: 0x0040_0000_0000_0000, 0x0040_4000_4000_4000: 0x0040_0000_0000_0000, 0x0040_4000_4000_4040: 0x0040_0000_0000_0000, + 0x0040_4000_4040_0000: 0x0040_0000_0000_0000, 0x0040_4000_4040_0040: 0x0040_0000_0000_0000, 0x0040_4000_4040_4000: 0x0040_0000_0000_0000, 0x0040_4000_4040_4040: 0x0040_0000_0000_0000, + 0x0040_4040_0000_0000: 0x0040_0000_0000_0000, 0x0040_4040_0000_0040: 0x0040_0000_0000_0000, 0x0040_4040_0000_4000: 0x0040_0000_0000_0000, 0x0040_4040_0000_4040: 0x0040_0000_0000_0000, + 0x0040_4040_0040_0000: 0x0040_0000_0000_0000, 0x0040_4040_0040_0040: 0x0040_0000_0000_0000, 0x0040_4040_0040_4000: 0x0040_0000_0000_0000, 0x0040_4040_0040_4040: 0x0040_0000_0000_0000, + 0x0040_4040_4000_0000: 0x0040_0000_0000_0000, 0x0040_4040_4000_0040: 0x0040_0000_0000_0000, 0x0040_4040_4000_4000: 0x0040_0000_0000_0000, 0x0040_4040_4000_4040: 0x0040_0000_0000_0000, + 0x0040_4040_4040_0000: 0x0040_0000_0000_0000, 0x0040_4040_4040_0040: 0x0040_0000_0000_0000, 0x0040_4040_4040_4000: 0x0040_0000_0000_0000, 0x0040_4040_4040_4040: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_8080_8080_8080, 0x0000_0000_0000_0080: 0x0080_8080_8080_8080, 0x0000_0000_0000_8000: 0x0080_8080_8080_8000, 0x0000_0000_0000_8080: 0x0080_8080_8080_8000, + 0x0000_0000_0080_0000: 0x0080_8080_8080_0000, 0x0000_0000_0080_0080: 0x0080_8080_8080_0000, 0x0000_0000_0080_8000: 0x0080_8080_8080_0000, 0x0000_0000_0080_8080: 0x0080_8080_8080_0000, + 0x0000_0000_8000_0000: 0x0080_8080_8000_0000, 0x0000_0000_8000_0080: 0x0080_8080_8000_0000, 0x0000_0000_8000_8000: 0x0080_8080_8000_0000, 0x0000_0000_8000_8080: 0x0080_8080_8000_0000, + 0x0000_0000_8080_0000: 0x0080_8080_8000_0000, 0x0000_0000_8080_0080: 0x0080_8080_8000_0000, 0x0000_0000_8080_8000: 0x0080_8080_8000_0000, 0x0000_0000_8080_8080: 0x0080_8080_8000_0000, + 0x0000_0080_0000_0000: 0x0080_8080_0000_0000, 0x0000_0080_0000_0080: 0x0080_8080_0000_0000, 0x0000_0080_0000_8000: 0x0080_8080_0000_0000, 0x0000_0080_0000_8080: 0x0080_8080_0000_0000, + 0x0000_0080_0080_0000: 0x0080_8080_0000_0000, 0x0000_0080_0080_0080: 0x0080_8080_0000_0000, 0x0000_0080_0080_8000: 0x0080_8080_0000_0000, 0x0000_0080_0080_8080: 0x0080_8080_0000_0000, + 0x0000_0080_8000_0000: 0x0080_8080_0000_0000, 0x0000_0080_8000_0080: 0x0080_8080_0000_0000, 0x0000_0080_8000_8000: 0x0080_8080_0000_0000, 0x0000_0080_8000_8080: 0x0080_8080_0000_0000, + 0x0000_0080_8080_0000: 0x0080_8080_0000_0000, 0x0000_0080_8080_0080: 0x0080_8080_0000_0000, 0x0000_0080_8080_8000: 0x0080_8080_0000_0000, 0x0000_0080_8080_8080: 0x0080_8080_0000_0000, + 0x0000_8000_0000_0000: 0x0080_8000_0000_0000, 0x0000_8000_0000_0080: 0x0080_8000_0000_0000, 0x0000_8000_0000_8000: 0x0080_8000_0000_0000, 0x0000_8000_0000_8080: 0x0080_8000_0000_0000, + 0x0000_8000_0080_0000: 0x0080_8000_0000_0000, 0x0000_8000_0080_0080: 0x0080_8000_0000_0000, 0x0000_8000_0080_8000: 0x0080_8000_0000_0000, 0x0000_8000_0080_8080: 0x0080_8000_0000_0000, + 0x0000_8000_8000_0000: 0x0080_8000_0000_0000, 0x0000_8000_8000_0080: 0x0080_8000_0000_0000, 0x0000_8000_8000_8000: 0x0080_8000_0000_0000, 0x0000_8000_8000_8080: 0x0080_8000_0000_0000, + 0x0000_8000_8080_0000: 0x0080_8000_0000_0000, 0x0000_8000_8080_0080: 0x0080_8000_0000_0000, 0x0000_8000_8080_8000: 0x0080_8000_0000_0000, 0x0000_8000_8080_8080: 0x0080_8000_0000_0000, + 0x0000_8080_0000_0000: 0x0080_8000_0000_0000, 0x0000_8080_0000_0080: 0x0080_8000_0000_0000, 0x0000_8080_0000_8000: 0x0080_8000_0000_0000, 0x0000_8080_0000_8080: 0x0080_8000_0000_0000, + 0x0000_8080_0080_0000: 0x0080_8000_0000_0000, 0x0000_8080_0080_0080: 0x0080_8000_0000_0000, 0x0000_8080_0080_8000: 0x0080_8000_0000_0000, 0x0000_8080_0080_8080: 0x0080_8000_0000_0000, + 0x0000_8080_8000_0000: 0x0080_8000_0000_0000, 0x0000_8080_8000_0080: 0x0080_8000_0000_0000, 0x0000_8080_8000_8000: 0x0080_8000_0000_0000, 0x0000_8080_8000_8080: 0x0080_8000_0000_0000, + 0x0000_8080_8080_0000: 0x0080_8000_0000_0000, 0x0000_8080_8080_0080: 0x0080_8000_0000_0000, 0x0000_8080_8080_8000: 0x0080_8000_0000_0000, 0x0000_8080_8080_8080: 0x0080_8000_0000_0000, + 0x0080_0000_0000_0000: 0x0080_0000_0000_0000, 0x0080_0000_0000_0080: 0x0080_0000_0000_0000, 0x0080_0000_0000_8000: 0x0080_0000_0000_0000, 0x0080_0000_0000_8080: 0x0080_0000_0000_0000, + 0x0080_0000_0080_0000: 0x0080_0000_0000_0000, 0x0080_0000_0080_0080: 0x0080_0000_0000_0000, 0x0080_0000_0080_8000: 0x0080_0000_0000_0000, 0x0080_0000_0080_8080: 0x0080_0000_0000_0000, + 0x0080_0000_8000_0000: 0x0080_0000_0000_0000, 0x0080_0000_8000_0080: 0x0080_0000_0000_0000, 0x0080_0000_8000_8000: 0x0080_0000_0000_0000, 0x0080_0000_8000_8080: 0x0080_0000_0000_0000, + 0x0080_0000_8080_0000: 0x0080_0000_0000_0000, 0x0080_0000_8080_0080: 0x0080_0000_0000_0000, 0x0080_0000_8080_8000: 0x0080_0000_0000_0000, 0x0080_0000_8080_8080: 0x0080_0000_0000_0000, + 0x0080_0080_0000_0000: 0x0080_0000_0000_0000, 0x0080_0080_0000_0080: 0x0080_0000_0000_0000, 0x0080_0080_0000_8000: 0x0080_0000_0000_0000, 0x0080_0080_0000_8080: 0x0080_0000_0000_0000, + 0x0080_0080_0080_0000: 0x0080_0000_0000_0000, 0x0080_0080_0080_0080: 0x0080_0000_0000_0000, 0x0080_0080_0080_8000: 0x0080_0000_0000_0000, 0x0080_0080_0080_8080: 0x0080_0000_0000_0000, + 0x0080_0080_8000_0000: 0x0080_0000_0000_0000, 0x0080_0080_8000_0080: 0x0080_0000_0000_0000, 0x0080_0080_8000_8000: 0x0080_0000_0000_0000, 0x0080_0080_8000_8080: 0x0080_0000_0000_0000, + 0x0080_0080_8080_0000: 0x0080_0000_0000_0000, 0x0080_0080_8080_0080: 0x0080_0000_0000_0000, 0x0080_0080_8080_8000: 0x0080_0000_0000_0000, 0x0080_0080_8080_8080: 0x0080_0000_0000_0000, + 0x0080_8000_0000_0000: 0x0080_0000_0000_0000, 0x0080_8000_0000_0080: 0x0080_0000_0000_0000, 0x0080_8000_0000_8000: 0x0080_0000_0000_0000, 0x0080_8000_0000_8080: 0x0080_0000_0000_0000, + 0x0080_8000_0080_0000: 0x0080_0000_0000_0000, 0x0080_8000_0080_0080: 0x0080_0000_0000_0000, 0x0080_8000_0080_8000: 0x0080_0000_0000_0000, 0x0080_8000_0080_8080: 0x0080_0000_0000_0000, + 0x0080_8000_8000_0000: 0x0080_0000_0000_0000, 0x0080_8000_8000_0080: 0x0080_0000_0000_0000, 0x0080_8000_8000_8000: 0x0080_0000_0000_0000, 0x0080_8000_8000_8080: 0x0080_0000_0000_0000, + 0x0080_8000_8080_0000: 0x0080_0000_0000_0000, 0x0080_8000_8080_0080: 0x0080_0000_0000_0000, 0x0080_8000_8080_8000: 0x0080_0000_0000_0000, 0x0080_8000_8080_8080: 0x0080_0000_0000_0000, + 0x0080_8080_0000_0000: 0x0080_0000_0000_0000, 0x0080_8080_0000_0080: 0x0080_0000_0000_0000, 0x0080_8080_0000_8000: 0x0080_0000_0000_0000, 0x0080_8080_0000_8080: 0x0080_0000_0000_0000, + 0x0080_8080_0080_0000: 0x0080_0000_0000_0000, 0x0080_8080_0080_0080: 0x0080_0000_0000_0000, 0x0080_8080_0080_8000: 0x0080_0000_0000_0000, 0x0080_8080_0080_8080: 0x0080_0000_0000_0000, + 0x0080_8080_8000_0000: 0x0080_0000_0000_0000, 0x0080_8080_8000_0080: 0x0080_0000_0000_0000, 0x0080_8080_8000_8000: 0x0080_0000_0000_0000, 0x0080_8080_8000_8080: 0x0080_0000_0000_0000, + 0x0080_8080_8080_0000: 0x0080_0000_0000_0000, 0x0080_8080_8080_0080: 0x0080_0000_0000_0000, 0x0080_8080_8080_8000: 0x0080_0000_0000_0000, 0x0080_8080_8080_8080: 0x0080_0000_0000_0000, + }, +) +LU_MASK = ( + { + 0x0000_0000_0000_0000: 0x8040_2010_0804_0200, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0004_0000: 0x0000_0000_0004_0200, 0x0000_0000_0004_0200: 0x0000_0000_0000_0200, + 0x0000_0000_0800_0000: 0x0000_0000_0804_0200, 0x0000_0000_0800_0200: 0x0000_0000_0000_0200, 0x0000_0000_0804_0000: 0x0000_0000_0004_0200, 0x0000_0000_0804_0200: 0x0000_0000_0000_0200, + 0x0000_0010_0000_0000: 0x0000_0010_0804_0200, 0x0000_0010_0000_0200: 0x0000_0000_0000_0200, 0x0000_0010_0004_0000: 0x0000_0000_0004_0200, 0x0000_0010_0004_0200: 0x0000_0000_0000_0200, + 0x0000_0010_0800_0000: 0x0000_0000_0804_0200, 0x0000_0010_0800_0200: 0x0000_0000_0000_0200, 0x0000_0010_0804_0000: 0x0000_0000_0004_0200, 0x0000_0010_0804_0200: 0x0000_0000_0000_0200, + 0x0000_2000_0000_0000: 0x0000_2010_0804_0200, 0x0000_2000_0000_0200: 0x0000_0000_0000_0200, 0x0000_2000_0004_0000: 0x0000_0000_0004_0200, 0x0000_2000_0004_0200: 0x0000_0000_0000_0200, + 0x0000_2000_0800_0000: 0x0000_0000_0804_0200, 0x0000_2000_0800_0200: 0x0000_0000_0000_0200, 0x0000_2000_0804_0000: 0x0000_0000_0004_0200, 0x0000_2000_0804_0200: 0x0000_0000_0000_0200, + 0x0000_2010_0000_0000: 0x0000_0010_0804_0200, 0x0000_2010_0000_0200: 0x0000_0000_0000_0200, 0x0000_2010_0004_0000: 0x0000_0000_0004_0200, 0x0000_2010_0004_0200: 0x0000_0000_0000_0200, + 0x0000_2010_0800_0000: 0x0000_0000_0804_0200, 0x0000_2010_0800_0200: 0x0000_0000_0000_0200, 0x0000_2010_0804_0000: 0x0000_0000_0004_0200, 0x0000_2010_0804_0200: 0x0000_0000_0000_0200, + 0x0040_0000_0000_0000: 0x0040_2010_0804_0200, 0x0040_0000_0000_0200: 0x0000_0000_0000_0200, 0x0040_0000_0004_0000: 0x0000_0000_0004_0200, 0x0040_0000_0004_0200: 0x0000_0000_0000_0200, + 0x0040_0000_0800_0000: 0x0000_0000_0804_0200, 0x0040_0000_0800_0200: 0x0000_0000_0000_0200, 0x0040_0000_0804_0000: 0x0000_0000_0004_0200, 0x0040_0000_0804_0200: 0x0000_0000_0000_0200, + 0x0040_0010_0000_0000: 0x0000_0010_0804_0200, 0x0040_0010_0000_0200: 0x0000_0000_0000_0200, 0x0040_0010_0004_0000: 0x0000_0000_0004_0200, 0x0040_0010_0004_0200: 0x0000_0000_0000_0200, + 0x0040_0010_0800_0000: 0x0000_0000_0804_0200, 0x0040_0010_0800_0200: 0x0000_0000_0000_0200, 0x0040_0010_0804_0000: 0x0000_0000_0004_0200, 0x0040_0010_0804_0200: 0x0000_0000_0000_0200, + 0x0040_2000_0000_0000: 0x0000_2010_0804_0200, 0x0040_2000_0000_0200: 0x0000_0000_0000_0200, 0x0040_2000_0004_0000: 0x0000_0000_0004_0200, 0x0040_2000_0004_0200: 0x0000_0000_0000_0200, + 0x0040_2000_0800_0000: 0x0000_0000_0804_0200, 0x0040_2000_0800_0200: 0x0000_0000_0000_0200, 0x0040_2000_0804_0000: 0x0000_0000_0004_0200, 0x0040_2000_0804_0200: 0x0000_0000_0000_0200, + 0x0040_2010_0000_0000: 0x0000_0010_0804_0200, 0x0040_2010_0000_0200: 0x0000_0000_0000_0200, 0x0040_2010_0004_0000: 0x0000_0000_0004_0200, 0x0040_2010_0004_0200: 0x0000_0000_0000_0200, + 0x0040_2010_0800_0000: 0x0000_0000_0804_0200, 0x0040_2010_0800_0200: 0x0000_0000_0000_0200, 0x0040_2010_0804_0000: 0x0000_0000_0004_0200, 0x0040_2010_0804_0200: 0x0000_0000_0000_0200, + 0x8000_0000_0000_0000: 0x8040_2010_0804_0200, 0x8000_0000_0000_0200: 0x0000_0000_0000_0200, 0x8000_0000_0004_0000: 0x0000_0000_0004_0200, 0x8000_0000_0004_0200: 0x0000_0000_0000_0200, + 0x8000_0000_0800_0000: 0x0000_0000_0804_0200, 0x8000_0000_0800_0200: 0x0000_0000_0000_0200, 0x8000_0000_0804_0000: 0x0000_0000_0004_0200, 0x8000_0000_0804_0200: 0x0000_0000_0000_0200, + 0x8000_0010_0000_0000: 0x0000_0010_0804_0200, 0x8000_0010_0000_0200: 0x0000_0000_0000_0200, 0x8000_0010_0004_0000: 0x0000_0000_0004_0200, 0x8000_0010_0004_0200: 0x0000_0000_0000_0200, + 0x8000_0010_0800_0000: 0x0000_0000_0804_0200, 0x8000_0010_0800_0200: 0x0000_0000_0000_0200, 0x8000_0010_0804_0000: 0x0000_0000_0004_0200, 0x8000_0010_0804_0200: 0x0000_0000_0000_0200, + 0x8000_2000_0000_0000: 0x0000_2010_0804_0200, 0x8000_2000_0000_0200: 0x0000_0000_0000_0200, 0x8000_2000_0004_0000: 0x0000_0000_0004_0200, 0x8000_2000_0004_0200: 0x0000_0000_0000_0200, + 0x8000_2000_0800_0000: 0x0000_0000_0804_0200, 0x8000_2000_0800_0200: 0x0000_0000_0000_0200, 0x8000_2000_0804_0000: 0x0000_0000_0004_0200, 0x8000_2000_0804_0200: 0x0000_0000_0000_0200, + 0x8000_2010_0000_0000: 0x0000_0010_0804_0200, 0x8000_2010_0000_0200: 0x0000_0000_0000_0200, 0x8000_2010_0004_0000: 0x0000_0000_0004_0200, 0x8000_2010_0004_0200: 0x0000_0000_0000_0200, + 0x8000_2010_0800_0000: 0x0000_0000_0804_0200, 0x8000_2010_0800_0200: 0x0000_0000_0000_0200, 0x8000_2010_0804_0000: 0x0000_0000_0004_0200, 0x8000_2010_0804_0200: 0x0000_0000_0000_0200, + 0x8040_0000_0000_0000: 0x0040_2010_0804_0200, 0x8040_0000_0000_0200: 0x0000_0000_0000_0200, 0x8040_0000_0004_0000: 0x0000_0000_0004_0200, 0x8040_0000_0004_0200: 0x0000_0000_0000_0200, + 0x8040_0000_0800_0000: 0x0000_0000_0804_0200, 0x8040_0000_0800_0200: 0x0000_0000_0000_0200, 0x8040_0000_0804_0000: 0x0000_0000_0004_0200, 0x8040_0000_0804_0200: 0x0000_0000_0000_0200, + 0x8040_0010_0000_0000: 0x0000_0010_0804_0200, 0x8040_0010_0000_0200: 0x0000_0000_0000_0200, 0x8040_0010_0004_0000: 0x0000_0000_0004_0200, 0x8040_0010_0004_0200: 0x0000_0000_0000_0200, + 0x8040_0010_0800_0000: 0x0000_0000_0804_0200, 0x8040_0010_0800_0200: 0x0000_0000_0000_0200, 0x8040_0010_0804_0000: 0x0000_0000_0004_0200, 0x8040_0010_0804_0200: 0x0000_0000_0000_0200, + 0x8040_2000_0000_0000: 0x0000_2010_0804_0200, 0x8040_2000_0000_0200: 0x0000_0000_0000_0200, 0x8040_2000_0004_0000: 0x0000_0000_0004_0200, 0x8040_2000_0004_0200: 0x0000_0000_0000_0200, + 0x8040_2000_0800_0000: 0x0000_0000_0804_0200, 0x8040_2000_0800_0200: 0x0000_0000_0000_0200, 0x8040_2000_0804_0000: 0x0000_0000_0004_0200, 0x8040_2000_0804_0200: 0x0000_0000_0000_0200, + 0x8040_2010_0000_0000: 0x0000_0010_0804_0200, 0x8040_2010_0000_0200: 0x0000_0000_0000_0200, 0x8040_2010_0004_0000: 0x0000_0000_0004_0200, 0x8040_2010_0004_0200: 0x0000_0000_0000_0200, + 0x8040_2010_0800_0000: 0x0000_0000_0804_0200, 0x8040_2010_0800_0200: 0x0000_0000_0000_0200, 0x8040_2010_0804_0000: 0x0000_0000_0004_0200, 0x8040_2010_0804_0200: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0080_4020_1008_0400, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0008_0000: 0x0000_0000_0008_0400, 0x0000_0000_0008_0400: 0x0000_0000_0000_0400, + 0x0000_0000_1000_0000: 0x0000_0000_1008_0400, 0x0000_0000_1000_0400: 0x0000_0000_0000_0400, 0x0000_0000_1008_0000: 0x0000_0000_0008_0400, 0x0000_0000_1008_0400: 0x0000_0000_0000_0400, + 0x0000_0020_0000_0000: 0x0000_0020_1008_0400, 0x0000_0020_0000_0400: 0x0000_0000_0000_0400, 0x0000_0020_0008_0000: 0x0000_0000_0008_0400, 0x0000_0020_0008_0400: 0x0000_0000_0000_0400, + 0x0000_0020_1000_0000: 0x0000_0000_1008_0400, 0x0000_0020_1000_0400: 0x0000_0000_0000_0400, 0x0000_0020_1008_0000: 0x0000_0000_0008_0400, 0x0000_0020_1008_0400: 0x0000_0000_0000_0400, + 0x0000_4000_0000_0000: 0x0000_4020_1008_0400, 0x0000_4000_0000_0400: 0x0000_0000_0000_0400, 0x0000_4000_0008_0000: 0x0000_0000_0008_0400, 0x0000_4000_0008_0400: 0x0000_0000_0000_0400, + 0x0000_4000_1000_0000: 0x0000_0000_1008_0400, 0x0000_4000_1000_0400: 0x0000_0000_0000_0400, 0x0000_4000_1008_0000: 0x0000_0000_0008_0400, 0x0000_4000_1008_0400: 0x0000_0000_0000_0400, + 0x0000_4020_0000_0000: 0x0000_0020_1008_0400, 0x0000_4020_0000_0400: 0x0000_0000_0000_0400, 0x0000_4020_0008_0000: 0x0000_0000_0008_0400, 0x0000_4020_0008_0400: 0x0000_0000_0000_0400, + 0x0000_4020_1000_0000: 0x0000_0000_1008_0400, 0x0000_4020_1000_0400: 0x0000_0000_0000_0400, 0x0000_4020_1008_0000: 0x0000_0000_0008_0400, 0x0000_4020_1008_0400: 0x0000_0000_0000_0400, + 0x0080_0000_0000_0000: 0x0080_4020_1008_0400, 0x0080_0000_0000_0400: 0x0000_0000_0000_0400, 0x0080_0000_0008_0000: 0x0000_0000_0008_0400, 0x0080_0000_0008_0400: 0x0000_0000_0000_0400, + 0x0080_0000_1000_0000: 0x0000_0000_1008_0400, 0x0080_0000_1000_0400: 0x0000_0000_0000_0400, 0x0080_0000_1008_0000: 0x0000_0000_0008_0400, 0x0080_0000_1008_0400: 0x0000_0000_0000_0400, + 0x0080_0020_0000_0000: 0x0000_0020_1008_0400, 0x0080_0020_0000_0400: 0x0000_0000_0000_0400, 0x0080_0020_0008_0000: 0x0000_0000_0008_0400, 0x0080_0020_0008_0400: 0x0000_0000_0000_0400, + 0x0080_0020_1000_0000: 0x0000_0000_1008_0400, 0x0080_0020_1000_0400: 0x0000_0000_0000_0400, 0x0080_0020_1008_0000: 0x0000_0000_0008_0400, 0x0080_0020_1008_0400: 0x0000_0000_0000_0400, + 0x0080_4000_0000_0000: 0x0000_4020_1008_0400, 0x0080_4000_0000_0400: 0x0000_0000_0000_0400, 0x0080_4000_0008_0000: 0x0000_0000_0008_0400, 0x0080_4000_0008_0400: 0x0000_0000_0000_0400, + 0x0080_4000_1000_0000: 0x0000_0000_1008_0400, 0x0080_4000_1000_0400: 0x0000_0000_0000_0400, 0x0080_4000_1008_0000: 0x0000_0000_0008_0400, 0x0080_4000_1008_0400: 0x0000_0000_0000_0400, + 0x0080_4020_0000_0000: 0x0000_0020_1008_0400, 0x0080_4020_0000_0400: 0x0000_0000_0000_0400, 0x0080_4020_0008_0000: 0x0000_0000_0008_0400, 0x0080_4020_0008_0400: 0x0000_0000_0000_0400, + 0x0080_4020_1000_0000: 0x0000_0000_1008_0400, 0x0080_4020_1000_0400: 0x0000_0000_0000_0400, 0x0080_4020_1008_0000: 0x0000_0000_0008_0400, 0x0080_4020_1008_0400: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_8040_2010_0800, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0010_0000: 0x0000_0000_0010_0800, 0x0000_0000_0010_0800: 0x0000_0000_0000_0800, + 0x0000_0000_2000_0000: 0x0000_0000_2010_0800, 0x0000_0000_2000_0800: 0x0000_0000_0000_0800, 0x0000_0000_2010_0000: 0x0000_0000_0010_0800, 0x0000_0000_2010_0800: 0x0000_0000_0000_0800, + 0x0000_0040_0000_0000: 0x0000_0040_2010_0800, 0x0000_0040_0000_0800: 0x0000_0000_0000_0800, 0x0000_0040_0010_0000: 0x0000_0000_0010_0800, 0x0000_0040_0010_0800: 0x0000_0000_0000_0800, + 0x0000_0040_2000_0000: 0x0000_0000_2010_0800, 0x0000_0040_2000_0800: 0x0000_0000_0000_0800, 0x0000_0040_2010_0000: 0x0000_0000_0010_0800, 0x0000_0040_2010_0800: 0x0000_0000_0000_0800, + 0x0000_8000_0000_0000: 0x0000_8040_2010_0800, 0x0000_8000_0000_0800: 0x0000_0000_0000_0800, 0x0000_8000_0010_0000: 0x0000_0000_0010_0800, 0x0000_8000_0010_0800: 0x0000_0000_0000_0800, + 0x0000_8000_2000_0000: 0x0000_0000_2010_0800, 0x0000_8000_2000_0800: 0x0000_0000_0000_0800, 0x0000_8000_2010_0000: 0x0000_0000_0010_0800, 0x0000_8000_2010_0800: 0x0000_0000_0000_0800, + 0x0000_8040_0000_0000: 0x0000_0040_2010_0800, 0x0000_8040_0000_0800: 0x0000_0000_0000_0800, 0x0000_8040_0010_0000: 0x0000_0000_0010_0800, 0x0000_8040_0010_0800: 0x0000_0000_0000_0800, + 0x0000_8040_2000_0000: 0x0000_0000_2010_0800, 0x0000_8040_2000_0800: 0x0000_0000_0000_0800, 0x0000_8040_2010_0000: 0x0000_0000_0010_0800, 0x0000_8040_2010_0800: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_4020_1000, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0020_0000: 0x0000_0000_0020_1000, 0x0000_0000_0020_1000: 0x0000_0000_0000_1000, + 0x0000_0000_4000_0000: 0x0000_0000_4020_1000, 0x0000_0000_4000_1000: 0x0000_0000_0000_1000, 0x0000_0000_4020_0000: 0x0000_0000_0020_1000, 0x0000_0000_4020_1000: 0x0000_0000_0000_1000, + 0x0000_0080_0000_0000: 0x0000_0080_4020_1000, 0x0000_0080_0000_1000: 0x0000_0000_0000_1000, 0x0000_0080_0020_0000: 0x0000_0000_0020_1000, 0x0000_0080_0020_1000: 0x0000_0000_0000_1000, + 0x0000_0080_4000_0000: 0x0000_0000_4020_1000, 0x0000_0080_4000_1000: 0x0000_0000_0000_1000, 0x0000_0080_4020_0000: 0x0000_0000_0020_1000, 0x0000_0080_4020_1000: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_8040_2000, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0040_0000: 0x0000_0000_0040_2000, 0x0000_0000_0040_2000: 0x0000_0000_0000_2000, + 0x0000_0000_8000_0000: 0x0000_0000_8040_2000, 0x0000_0000_8000_2000: 0x0000_0000_0000_2000, 0x0000_0000_8040_0000: 0x0000_0000_0040_2000, 0x0000_0000_8040_2000: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0080_4000, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0080_0000: 0x0000_0000_0080_4000, 0x0000_0000_0080_4000: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_8000, 0x0000_0000_0000_8000: 0x0000_0000_0000_8000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4020_1008_0402_0000, 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0400_0000: 0x0000_0000_0402_0000, 0x0000_0000_0402_0000: 0x0000_0000_0002_0000, + 0x0000_0008_0000_0000: 0x0000_0008_0402_0000, 0x0000_0008_0002_0000: 0x0000_0000_0002_0000, 0x0000_0008_0400_0000: 0x0000_0000_0402_0000, 0x0000_0008_0402_0000: 0x0000_0000_0002_0000, + 0x0000_1000_0000_0000: 0x0000_1008_0402_0000, 0x0000_1000_0002_0000: 0x0000_0000_0002_0000, 0x0000_1000_0400_0000: 0x0000_0000_0402_0000, 0x0000_1000_0402_0000: 0x0000_0000_0002_0000, + 0x0000_1008_0000_0000: 0x0000_0008_0402_0000, 0x0000_1008_0002_0000: 0x0000_0000_0002_0000, 0x0000_1008_0400_0000: 0x0000_0000_0402_0000, 0x0000_1008_0402_0000: 0x0000_0000_0002_0000, + 0x0020_0000_0000_0000: 0x0020_1008_0402_0000, 0x0020_0000_0002_0000: 0x0000_0000_0002_0000, 0x0020_0000_0400_0000: 0x0000_0000_0402_0000, 0x0020_0000_0402_0000: 0x0000_0000_0002_0000, + 0x0020_0008_0000_0000: 0x0000_0008_0402_0000, 0x0020_0008_0002_0000: 0x0000_0000_0002_0000, 0x0020_0008_0400_0000: 0x0000_0000_0402_0000, 0x0020_0008_0402_0000: 0x0000_0000_0002_0000, + 0x0020_1000_0000_0000: 0x0000_1008_0402_0000, 0x0020_1000_0002_0000: 0x0000_0000_0002_0000, 0x0020_1000_0400_0000: 0x0000_0000_0402_0000, 0x0020_1000_0402_0000: 0x0000_0000_0002_0000, + 0x0020_1008_0000_0000: 0x0000_0008_0402_0000, 0x0020_1008_0002_0000: 0x0000_0000_0002_0000, 0x0020_1008_0400_0000: 0x0000_0000_0402_0000, 0x0020_1008_0402_0000: 0x0000_0000_0002_0000, + 0x4000_0000_0000_0000: 0x4020_1008_0402_0000, 0x4000_0000_0002_0000: 0x0000_0000_0002_0000, 0x4000_0000_0400_0000: 0x0000_0000_0402_0000, 0x4000_0000_0402_0000: 0x0000_0000_0002_0000, + 0x4000_0008_0000_0000: 0x0000_0008_0402_0000, 0x4000_0008_0002_0000: 0x0000_0000_0002_0000, 0x4000_0008_0400_0000: 0x0000_0000_0402_0000, 0x4000_0008_0402_0000: 0x0000_0000_0002_0000, + 0x4000_1000_0000_0000: 0x0000_1008_0402_0000, 0x4000_1000_0002_0000: 0x0000_0000_0002_0000, 0x4000_1000_0400_0000: 0x0000_0000_0402_0000, 0x4000_1000_0402_0000: 0x0000_0000_0002_0000, + 0x4000_1008_0000_0000: 0x0000_0008_0402_0000, 0x4000_1008_0002_0000: 0x0000_0000_0002_0000, 0x4000_1008_0400_0000: 0x0000_0000_0402_0000, 0x4000_1008_0402_0000: 0x0000_0000_0002_0000, + 0x4020_0000_0000_0000: 0x0020_1008_0402_0000, 0x4020_0000_0002_0000: 0x0000_0000_0002_0000, 0x4020_0000_0400_0000: 0x0000_0000_0402_0000, 0x4020_0000_0402_0000: 0x0000_0000_0002_0000, + 0x4020_0008_0000_0000: 0x0000_0008_0402_0000, 0x4020_0008_0002_0000: 0x0000_0000_0002_0000, 0x4020_0008_0400_0000: 0x0000_0000_0402_0000, 0x4020_0008_0402_0000: 0x0000_0000_0002_0000, + 0x4020_1000_0000_0000: 0x0000_1008_0402_0000, 0x4020_1000_0002_0000: 0x0000_0000_0002_0000, 0x4020_1000_0400_0000: 0x0000_0000_0402_0000, 0x4020_1000_0402_0000: 0x0000_0000_0002_0000, + 0x4020_1008_0000_0000: 0x0000_0008_0402_0000, 0x4020_1008_0002_0000: 0x0000_0000_0002_0000, 0x4020_1008_0400_0000: 0x0000_0000_0402_0000, 0x4020_1008_0402_0000: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x8040_2010_0804_0000, 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0800_0000: 0x0000_0000_0804_0000, 0x0000_0000_0804_0000: 0x0000_0000_0004_0000, + 0x0000_0010_0000_0000: 0x0000_0010_0804_0000, 0x0000_0010_0004_0000: 0x0000_0000_0004_0000, 0x0000_0010_0800_0000: 0x0000_0000_0804_0000, 0x0000_0010_0804_0000: 0x0000_0000_0004_0000, + 0x0000_2000_0000_0000: 0x0000_2010_0804_0000, 0x0000_2000_0004_0000: 0x0000_0000_0004_0000, 0x0000_2000_0800_0000: 0x0000_0000_0804_0000, 0x0000_2000_0804_0000: 0x0000_0000_0004_0000, + 0x0000_2010_0000_0000: 0x0000_0010_0804_0000, 0x0000_2010_0004_0000: 0x0000_0000_0004_0000, 0x0000_2010_0800_0000: 0x0000_0000_0804_0000, 0x0000_2010_0804_0000: 0x0000_0000_0004_0000, + 0x0040_0000_0000_0000: 0x0040_2010_0804_0000, 0x0040_0000_0004_0000: 0x0000_0000_0004_0000, 0x0040_0000_0800_0000: 0x0000_0000_0804_0000, 0x0040_0000_0804_0000: 0x0000_0000_0004_0000, + 0x0040_0010_0000_0000: 0x0000_0010_0804_0000, 0x0040_0010_0004_0000: 0x0000_0000_0004_0000, 0x0040_0010_0800_0000: 0x0000_0000_0804_0000, 0x0040_0010_0804_0000: 0x0000_0000_0004_0000, + 0x0040_2000_0000_0000: 0x0000_2010_0804_0000, 0x0040_2000_0004_0000: 0x0000_0000_0004_0000, 0x0040_2000_0800_0000: 0x0000_0000_0804_0000, 0x0040_2000_0804_0000: 0x0000_0000_0004_0000, + 0x0040_2010_0000_0000: 0x0000_0010_0804_0000, 0x0040_2010_0004_0000: 0x0000_0000_0004_0000, 0x0040_2010_0800_0000: 0x0000_0000_0804_0000, 0x0040_2010_0804_0000: 0x0000_0000_0004_0000, + 0x8000_0000_0000_0000: 0x8040_2010_0804_0000, 0x8000_0000_0004_0000: 0x0000_0000_0004_0000, 0x8000_0000_0800_0000: 0x0000_0000_0804_0000, 0x8000_0000_0804_0000: 0x0000_0000_0004_0000, + 0x8000_0010_0000_0000: 0x0000_0010_0804_0000, 0x8000_0010_0004_0000: 0x0000_0000_0004_0000, 0x8000_0010_0800_0000: 0x0000_0000_0804_0000, 0x8000_0010_0804_0000: 0x0000_0000_0004_0000, + 0x8000_2000_0000_0000: 0x0000_2010_0804_0000, 0x8000_2000_0004_0000: 0x0000_0000_0004_0000, 0x8000_2000_0800_0000: 0x0000_0000_0804_0000, 0x8000_2000_0804_0000: 0x0000_0000_0004_0000, + 0x8000_2010_0000_0000: 0x0000_0010_0804_0000, 0x8000_2010_0004_0000: 0x0000_0000_0004_0000, 0x8000_2010_0800_0000: 0x0000_0000_0804_0000, 0x8000_2010_0804_0000: 0x0000_0000_0004_0000, + 0x8040_0000_0000_0000: 0x0040_2010_0804_0000, 0x8040_0000_0004_0000: 0x0000_0000_0004_0000, 0x8040_0000_0800_0000: 0x0000_0000_0804_0000, 0x8040_0000_0804_0000: 0x0000_0000_0004_0000, + 0x8040_0010_0000_0000: 0x0000_0010_0804_0000, 0x8040_0010_0004_0000: 0x0000_0000_0004_0000, 0x8040_0010_0800_0000: 0x0000_0000_0804_0000, 0x8040_0010_0804_0000: 0x0000_0000_0004_0000, + 0x8040_2000_0000_0000: 0x0000_2010_0804_0000, 0x8040_2000_0004_0000: 0x0000_0000_0004_0000, 0x8040_2000_0800_0000: 0x0000_0000_0804_0000, 0x8040_2000_0804_0000: 0x0000_0000_0004_0000, + 0x8040_2010_0000_0000: 0x0000_0010_0804_0000, 0x8040_2010_0004_0000: 0x0000_0000_0004_0000, 0x8040_2010_0800_0000: 0x0000_0000_0804_0000, 0x8040_2010_0804_0000: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_4020_1008_0000, 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_1000_0000: 0x0000_0000_1008_0000, 0x0000_0000_1008_0000: 0x0000_0000_0008_0000, + 0x0000_0020_0000_0000: 0x0000_0020_1008_0000, 0x0000_0020_0008_0000: 0x0000_0000_0008_0000, 0x0000_0020_1000_0000: 0x0000_0000_1008_0000, 0x0000_0020_1008_0000: 0x0000_0000_0008_0000, + 0x0000_4000_0000_0000: 0x0000_4020_1008_0000, 0x0000_4000_0008_0000: 0x0000_0000_0008_0000, 0x0000_4000_1000_0000: 0x0000_0000_1008_0000, 0x0000_4000_1008_0000: 0x0000_0000_0008_0000, + 0x0000_4020_0000_0000: 0x0000_0020_1008_0000, 0x0000_4020_0008_0000: 0x0000_0000_0008_0000, 0x0000_4020_1000_0000: 0x0000_0000_1008_0000, 0x0000_4020_1008_0000: 0x0000_0000_0008_0000, + 0x0080_0000_0000_0000: 0x0080_4020_1008_0000, 0x0080_0000_0008_0000: 0x0000_0000_0008_0000, 0x0080_0000_1000_0000: 0x0000_0000_1008_0000, 0x0080_0000_1008_0000: 0x0000_0000_0008_0000, + 0x0080_0020_0000_0000: 0x0000_0020_1008_0000, 0x0080_0020_0008_0000: 0x0000_0000_0008_0000, 0x0080_0020_1000_0000: 0x0000_0000_1008_0000, 0x0080_0020_1008_0000: 0x0000_0000_0008_0000, + 0x0080_4000_0000_0000: 0x0000_4020_1008_0000, 0x0080_4000_0008_0000: 0x0000_0000_0008_0000, 0x0080_4000_1000_0000: 0x0000_0000_1008_0000, 0x0080_4000_1008_0000: 0x0000_0000_0008_0000, + 0x0080_4020_0000_0000: 0x0000_0020_1008_0000, 0x0080_4020_0008_0000: 0x0000_0000_0008_0000, 0x0080_4020_1000_0000: 0x0000_0000_1008_0000, 0x0080_4020_1008_0000: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8040_2010_0000, 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_2000_0000: 0x0000_0000_2010_0000, 0x0000_0000_2010_0000: 0x0000_0000_0010_0000, + 0x0000_0040_0000_0000: 0x0000_0040_2010_0000, 0x0000_0040_0010_0000: 0x0000_0000_0010_0000, 0x0000_0040_2000_0000: 0x0000_0000_2010_0000, 0x0000_0040_2010_0000: 0x0000_0000_0010_0000, + 0x0000_8000_0000_0000: 0x0000_8040_2010_0000, 0x0000_8000_0010_0000: 0x0000_0000_0010_0000, 0x0000_8000_2000_0000: 0x0000_0000_2010_0000, 0x0000_8000_2010_0000: 0x0000_0000_0010_0000, + 0x0000_8040_0000_0000: 0x0000_0040_2010_0000, 0x0000_8040_0010_0000: 0x0000_0000_0010_0000, 0x0000_8040_2000_0000: 0x0000_0000_2010_0000, 0x0000_8040_2010_0000: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_4020_0000, 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_4000_0000: 0x0000_0000_4020_0000, 0x0000_0000_4020_0000: 0x0000_0000_0020_0000, + 0x0000_0080_0000_0000: 0x0000_0080_4020_0000, 0x0000_0080_0020_0000: 0x0000_0000_0020_0000, 0x0000_0080_4000_0000: 0x0000_0000_4020_0000, 0x0000_0080_4020_0000: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_8040_0000, 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_8000_0000: 0x0000_0000_8040_0000, 0x0000_0000_8040_0000: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0080_0000, 0x0000_0000_0080_0000: 0x0000_0000_0080_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2010_0804_0200_0000, 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0004_0000_0000: 0x0000_0004_0200_0000, 0x0000_0004_0200_0000: 0x0000_0000_0200_0000, + 0x0000_0800_0000_0000: 0x0000_0804_0200_0000, 0x0000_0800_0200_0000: 0x0000_0000_0200_0000, 0x0000_0804_0000_0000: 0x0000_0004_0200_0000, 0x0000_0804_0200_0000: 0x0000_0000_0200_0000, + 0x0010_0000_0000_0000: 0x0010_0804_0200_0000, 0x0010_0000_0200_0000: 0x0000_0000_0200_0000, 0x0010_0004_0000_0000: 0x0000_0004_0200_0000, 0x0010_0004_0200_0000: 0x0000_0000_0200_0000, + 0x0010_0800_0000_0000: 0x0000_0804_0200_0000, 0x0010_0800_0200_0000: 0x0000_0000_0200_0000, 0x0010_0804_0000_0000: 0x0000_0004_0200_0000, 0x0010_0804_0200_0000: 0x0000_0000_0200_0000, + 0x2000_0000_0000_0000: 0x2010_0804_0200_0000, 0x2000_0000_0200_0000: 0x0000_0000_0200_0000, 0x2000_0004_0000_0000: 0x0000_0004_0200_0000, 0x2000_0004_0200_0000: 0x0000_0000_0200_0000, + 0x2000_0800_0000_0000: 0x0000_0804_0200_0000, 0x2000_0800_0200_0000: 0x0000_0000_0200_0000, 0x2000_0804_0000_0000: 0x0000_0004_0200_0000, 0x2000_0804_0200_0000: 0x0000_0000_0200_0000, + 0x2010_0000_0000_0000: 0x0010_0804_0200_0000, 0x2010_0000_0200_0000: 0x0000_0000_0200_0000, 0x2010_0004_0000_0000: 0x0000_0004_0200_0000, 0x2010_0004_0200_0000: 0x0000_0000_0200_0000, + 0x2010_0800_0000_0000: 0x0000_0804_0200_0000, 0x2010_0800_0200_0000: 0x0000_0000_0200_0000, 0x2010_0804_0000_0000: 0x0000_0004_0200_0000, 0x2010_0804_0200_0000: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x4020_1008_0400_0000, 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0008_0000_0000: 0x0000_0008_0400_0000, 0x0000_0008_0400_0000: 0x0000_0000_0400_0000, + 0x0000_1000_0000_0000: 0x0000_1008_0400_0000, 0x0000_1000_0400_0000: 0x0000_0000_0400_0000, 0x0000_1008_0000_0000: 0x0000_0008_0400_0000, 0x0000_1008_0400_0000: 0x0000_0000_0400_0000, + 0x0020_0000_0000_0000: 0x0020_1008_0400_0000, 0x0020_0000_0400_0000: 0x0000_0000_0400_0000, 0x0020_0008_0000_0000: 0x0000_0008_0400_0000, 0x0020_0008_0400_0000: 0x0000_0000_0400_0000, + 0x0020_1000_0000_0000: 0x0000_1008_0400_0000, 0x0020_1000_0400_0000: 0x0000_0000_0400_0000, 0x0020_1008_0000_0000: 0x0000_0008_0400_0000, 0x0020_1008_0400_0000: 0x0000_0000_0400_0000, + 0x4000_0000_0000_0000: 0x4020_1008_0400_0000, 0x4000_0000_0400_0000: 0x0000_0000_0400_0000, 0x4000_0008_0000_0000: 0x0000_0008_0400_0000, 0x4000_0008_0400_0000: 0x0000_0000_0400_0000, + 0x4000_1000_0000_0000: 0x0000_1008_0400_0000, 0x4000_1000_0400_0000: 0x0000_0000_0400_0000, 0x4000_1008_0000_0000: 0x0000_0008_0400_0000, 0x4000_1008_0400_0000: 0x0000_0000_0400_0000, + 0x4020_0000_0000_0000: 0x0020_1008_0400_0000, 0x4020_0000_0400_0000: 0x0000_0000_0400_0000, 0x4020_0008_0000_0000: 0x0000_0008_0400_0000, 0x4020_0008_0400_0000: 0x0000_0000_0400_0000, + 0x4020_1000_0000_0000: 0x0000_1008_0400_0000, 0x4020_1000_0400_0000: 0x0000_0000_0400_0000, 0x4020_1008_0000_0000: 0x0000_0008_0400_0000, 0x4020_1008_0400_0000: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x8040_2010_0800_0000, 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0010_0000_0000: 0x0000_0010_0800_0000, 0x0000_0010_0800_0000: 0x0000_0000_0800_0000, + 0x0000_2000_0000_0000: 0x0000_2010_0800_0000, 0x0000_2000_0800_0000: 0x0000_0000_0800_0000, 0x0000_2010_0000_0000: 0x0000_0010_0800_0000, 0x0000_2010_0800_0000: 0x0000_0000_0800_0000, + 0x0040_0000_0000_0000: 0x0040_2010_0800_0000, 0x0040_0000_0800_0000: 0x0000_0000_0800_0000, 0x0040_0010_0000_0000: 0x0000_0010_0800_0000, 0x0040_0010_0800_0000: 0x0000_0000_0800_0000, + 0x0040_2000_0000_0000: 0x0000_2010_0800_0000, 0x0040_2000_0800_0000: 0x0000_0000_0800_0000, 0x0040_2010_0000_0000: 0x0000_0010_0800_0000, 0x0040_2010_0800_0000: 0x0000_0000_0800_0000, + 0x8000_0000_0000_0000: 0x8040_2010_0800_0000, 0x8000_0000_0800_0000: 0x0000_0000_0800_0000, 0x8000_0010_0000_0000: 0x0000_0010_0800_0000, 0x8000_0010_0800_0000: 0x0000_0000_0800_0000, + 0x8000_2000_0000_0000: 0x0000_2010_0800_0000, 0x8000_2000_0800_0000: 0x0000_0000_0800_0000, 0x8000_2010_0000_0000: 0x0000_0010_0800_0000, 0x8000_2010_0800_0000: 0x0000_0000_0800_0000, + 0x8040_0000_0000_0000: 0x0040_2010_0800_0000, 0x8040_0000_0800_0000: 0x0000_0000_0800_0000, 0x8040_0010_0000_0000: 0x0000_0010_0800_0000, 0x8040_0010_0800_0000: 0x0000_0000_0800_0000, + 0x8040_2000_0000_0000: 0x0000_2010_0800_0000, 0x8040_2000_0800_0000: 0x0000_0000_0800_0000, 0x8040_2010_0000_0000: 0x0000_0010_0800_0000, 0x8040_2010_0800_0000: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_4020_1000_0000, 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0020_0000_0000: 0x0000_0020_1000_0000, 0x0000_0020_1000_0000: 0x0000_0000_1000_0000, + 0x0000_4000_0000_0000: 0x0000_4020_1000_0000, 0x0000_4000_1000_0000: 0x0000_0000_1000_0000, 0x0000_4020_0000_0000: 0x0000_0020_1000_0000, 0x0000_4020_1000_0000: 0x0000_0000_1000_0000, + 0x0080_0000_0000_0000: 0x0080_4020_1000_0000, 0x0080_0000_1000_0000: 0x0000_0000_1000_0000, 0x0080_0020_0000_0000: 0x0000_0020_1000_0000, 0x0080_0020_1000_0000: 0x0000_0000_1000_0000, + 0x0080_4000_0000_0000: 0x0000_4020_1000_0000, 0x0080_4000_1000_0000: 0x0000_0000_1000_0000, 0x0080_4020_0000_0000: 0x0000_0020_1000_0000, 0x0080_4020_1000_0000: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8040_2000_0000, 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0040_0000_0000: 0x0000_0040_2000_0000, 0x0000_0040_2000_0000: 0x0000_0000_2000_0000, + 0x0000_8000_0000_0000: 0x0000_8040_2000_0000, 0x0000_8000_2000_0000: 0x0000_0000_2000_0000, 0x0000_8040_0000_0000: 0x0000_0040_2000_0000, 0x0000_8040_2000_0000: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_4000_0000, 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0080_0000_0000: 0x0000_0080_4000_0000, 0x0000_0080_4000_0000: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_8000_0000, 0x0000_0000_8000_0000: 0x0000_0000_8000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1008_0402_0000_0000, 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0400_0000_0000: 0x0000_0402_0000_0000, 0x0000_0402_0000_0000: 0x0000_0002_0000_0000, + 0x0008_0000_0000_0000: 0x0008_0402_0000_0000, 0x0008_0002_0000_0000: 0x0000_0002_0000_0000, 0x0008_0400_0000_0000: 0x0000_0402_0000_0000, 0x0008_0402_0000_0000: 0x0000_0002_0000_0000, + 0x1000_0000_0000_0000: 0x1008_0402_0000_0000, 0x1000_0002_0000_0000: 0x0000_0002_0000_0000, 0x1000_0400_0000_0000: 0x0000_0402_0000_0000, 0x1000_0402_0000_0000: 0x0000_0002_0000_0000, + 0x1008_0000_0000_0000: 0x0008_0402_0000_0000, 0x1008_0002_0000_0000: 0x0000_0002_0000_0000, 0x1008_0400_0000_0000: 0x0000_0402_0000_0000, 0x1008_0402_0000_0000: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2010_0804_0000_0000, 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0800_0000_0000: 0x0000_0804_0000_0000, 0x0000_0804_0000_0000: 0x0000_0004_0000_0000, + 0x0010_0000_0000_0000: 0x0010_0804_0000_0000, 0x0010_0004_0000_0000: 0x0000_0004_0000_0000, 0x0010_0800_0000_0000: 0x0000_0804_0000_0000, 0x0010_0804_0000_0000: 0x0000_0004_0000_0000, + 0x2000_0000_0000_0000: 0x2010_0804_0000_0000, 0x2000_0004_0000_0000: 0x0000_0004_0000_0000, 0x2000_0800_0000_0000: 0x0000_0804_0000_0000, 0x2000_0804_0000_0000: 0x0000_0004_0000_0000, + 0x2010_0000_0000_0000: 0x0010_0804_0000_0000, 0x2010_0004_0000_0000: 0x0000_0004_0000_0000, 0x2010_0800_0000_0000: 0x0000_0804_0000_0000, 0x2010_0804_0000_0000: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4020_1008_0000_0000, 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_1000_0000_0000: 0x0000_1008_0000_0000, 0x0000_1008_0000_0000: 0x0000_0008_0000_0000, + 0x0020_0000_0000_0000: 0x0020_1008_0000_0000, 0x0020_0008_0000_0000: 0x0000_0008_0000_0000, 0x0020_1000_0000_0000: 0x0000_1008_0000_0000, 0x0020_1008_0000_0000: 0x0000_0008_0000_0000, + 0x4000_0000_0000_0000: 0x4020_1008_0000_0000, 0x4000_0008_0000_0000: 0x0000_0008_0000_0000, 0x4000_1000_0000_0000: 0x0000_1008_0000_0000, 0x4000_1008_0000_0000: 0x0000_0008_0000_0000, + 0x4020_0000_0000_0000: 0x0020_1008_0000_0000, 0x4020_0008_0000_0000: 0x0000_0008_0000_0000, 0x4020_1000_0000_0000: 0x0000_1008_0000_0000, 0x4020_1008_0000_0000: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8040_2010_0000_0000, 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_2000_0000_0000: 0x0000_2010_0000_0000, 0x0000_2010_0000_0000: 0x0000_0010_0000_0000, + 0x0040_0000_0000_0000: 0x0040_2010_0000_0000, 0x0040_0010_0000_0000: 0x0000_0010_0000_0000, 0x0040_2000_0000_0000: 0x0000_2010_0000_0000, 0x0040_2010_0000_0000: 0x0000_0010_0000_0000, + 0x8000_0000_0000_0000: 0x8040_2010_0000_0000, 0x8000_0010_0000_0000: 0x0000_0010_0000_0000, 0x8000_2000_0000_0000: 0x0000_2010_0000_0000, 0x8000_2010_0000_0000: 0x0000_0010_0000_0000, + 0x8040_0000_0000_0000: 0x0040_2010_0000_0000, 0x8040_0010_0000_0000: 0x0000_0010_0000_0000, 0x8040_2000_0000_0000: 0x0000_2010_0000_0000, 0x8040_2010_0000_0000: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_4020_0000_0000, 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_4000_0000_0000: 0x0000_4020_0000_0000, 0x0000_4020_0000_0000: 0x0000_0020_0000_0000, + 0x0080_0000_0000_0000: 0x0080_4020_0000_0000, 0x0080_0020_0000_0000: 0x0000_0020_0000_0000, 0x0080_4000_0000_0000: 0x0000_4020_0000_0000, 0x0080_4020_0000_0000: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8040_0000_0000, 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_8000_0000_0000: 0x0000_8040_0000_0000, 0x0000_8040_0000_0000: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_0000_0000, 0x0000_0080_0000_0000: 0x0000_0080_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0804_0200_0000_0000, 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0004_0000_0000_0000: 0x0004_0200_0000_0000, 0x0004_0200_0000_0000: 0x0000_0200_0000_0000, + 0x0800_0000_0000_0000: 0x0804_0200_0000_0000, 0x0800_0200_0000_0000: 0x0000_0200_0000_0000, 0x0804_0000_0000_0000: 0x0004_0200_0000_0000, 0x0804_0200_0000_0000: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1008_0400_0000_0000, 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0008_0000_0000_0000: 0x0008_0400_0000_0000, 0x0008_0400_0000_0000: 0x0000_0400_0000_0000, + 0x1000_0000_0000_0000: 0x1008_0400_0000_0000, 0x1000_0400_0000_0000: 0x0000_0400_0000_0000, 0x1008_0000_0000_0000: 0x0008_0400_0000_0000, 0x1008_0400_0000_0000: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2010_0800_0000_0000, 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0010_0000_0000_0000: 0x0010_0800_0000_0000, 0x0010_0800_0000_0000: 0x0000_0800_0000_0000, + 0x2000_0000_0000_0000: 0x2010_0800_0000_0000, 0x2000_0800_0000_0000: 0x0000_0800_0000_0000, 0x2010_0000_0000_0000: 0x0010_0800_0000_0000, 0x2010_0800_0000_0000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4020_1000_0000_0000, 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0020_0000_0000_0000: 0x0020_1000_0000_0000, 0x0020_1000_0000_0000: 0x0000_1000_0000_0000, + 0x4000_0000_0000_0000: 0x4020_1000_0000_0000, 0x4000_1000_0000_0000: 0x0000_1000_0000_0000, 0x4020_0000_0000_0000: 0x0020_1000_0000_0000, 0x4020_1000_0000_0000: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8040_2000_0000_0000, 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0040_0000_0000_0000: 0x0040_2000_0000_0000, 0x0040_2000_0000_0000: 0x0000_2000_0000_0000, + 0x8000_0000_0000_0000: 0x8040_2000_0000_0000, 0x8000_2000_0000_0000: 0x0000_2000_0000_0000, 0x8040_0000_0000_0000: 0x0040_2000_0000_0000, 0x8040_2000_0000_0000: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_4000_0000_0000, 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0080_0000_0000_0000: 0x0080_4000_0000_0000, 0x0080_4000_0000_0000: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8000_0000_0000, 0x0000_8000_0000_0000: 0x0000_8000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0402_0000_0000_0000, 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0400_0000_0000_0000: 0x0402_0000_0000_0000, 0x0402_0000_0000_0000: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0804_0000_0000_0000, 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0800_0000_0000_0000: 0x0804_0000_0000_0000, 0x0804_0000_0000_0000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1008_0000_0000_0000, 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x1000_0000_0000_0000: 0x1008_0000_0000_0000, 0x1008_0000_0000_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2010_0000_0000_0000, 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x2000_0000_0000_0000: 0x2010_0000_0000_0000, 0x2010_0000_0000_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4020_0000_0000_0000, 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x4000_0000_0000_0000: 0x4020_0000_0000_0000, 0x4020_0000_0000_0000: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8040_0000_0000_0000, 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x8000_0000_0000_0000: 0x8040_0000_0000_0000, 0x8040_0000_0000_0000: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_0000_0000_0000, 0x0080_0000_0000_0000: 0x0080_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0200_0000_0000_0000, 0x0200_0000_0000_0000: 0x0200_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0400_0000_0000_0000, 0x0400_0000_0000_0000: 0x0400_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0800_0000_0000_0000, 0x0800_0000_0000_0000: 0x0800_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1000_0000_0000_0000, 0x1000_0000_0000_0000: 0x1000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2000_0000_0000_0000, 0x2000_0000_0000_0000: 0x2000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4000_0000_0000_0000, 0x4000_0000_0000_0000: 0x4000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x8000_0000_0000_0000, 0x8000_0000_0000_0000: 0x8000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, +) +LD_MASK = ( + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0002, 0x0000_0000_0000_0002: 0x0000_0000_0000_0002, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0004, 0x0000_0000_0000_0004: 0x0000_0000_0000_0004, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0008, 0x0000_0000_0000_0008: 0x0000_0000_0000_0008, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0010, 0x0000_0000_0000_0010: 0x0000_0000_0000_0010, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0020, 0x0000_0000_0000_0020: 0x0000_0000_0000_0020, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0040, 0x0000_0000_0000_0040: 0x0000_0000_0000_0040, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0080, 0x0000_0000_0000_0080: 0x0000_0000_0000_0080, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0204, 0x0000_0000_0000_0004: 0x0000_0000_0000_0204, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0000_0204: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0408, 0x0000_0000_0000_0008: 0x0000_0000_0000_0408, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0000_0408: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0810, 0x0000_0000_0000_0010: 0x0000_0000_0000_0810, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0000_0810: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_1020, 0x0000_0000_0000_0020: 0x0000_0000_0000_1020, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0000_1020: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_2040, 0x0000_0000_0000_0040: 0x0000_0000_0000_2040, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0000_2040: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_4080, 0x0000_0000_0000_0080: 0x0000_0000_0000_4080, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0000_4080: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_8000, 0x0000_0000_0000_8000: 0x0000_0000_0000_8000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0002_0408, 0x0000_0000_0000_0008: 0x0000_0000_0002_0408, 0x0000_0000_0000_0400: 0x0000_0000_0002_0400, 0x0000_0000_0000_0408: 0x0000_0000_0002_0400, + 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0002_0008: 0x0000_0000_0002_0000, 0x0000_0000_0002_0400: 0x0000_0000_0002_0000, 0x0000_0000_0002_0408: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0004_0810, 0x0000_0000_0000_0010: 0x0000_0000_0004_0810, 0x0000_0000_0000_0800: 0x0000_0000_0004_0800, 0x0000_0000_0000_0810: 0x0000_0000_0004_0800, + 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0004_0010: 0x0000_0000_0004_0000, 0x0000_0000_0004_0800: 0x0000_0000_0004_0000, 0x0000_0000_0004_0810: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0008_1020, 0x0000_0000_0000_0020: 0x0000_0000_0008_1020, 0x0000_0000_0000_1000: 0x0000_0000_0008_1000, 0x0000_0000_0000_1020: 0x0000_0000_0008_1000, + 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0008_0020: 0x0000_0000_0008_0000, 0x0000_0000_0008_1000: 0x0000_0000_0008_0000, 0x0000_0000_0008_1020: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0010_2040, 0x0000_0000_0000_0040: 0x0000_0000_0010_2040, 0x0000_0000_0000_2000: 0x0000_0000_0010_2000, 0x0000_0000_0000_2040: 0x0000_0000_0010_2000, + 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_0010_0040: 0x0000_0000_0010_0000, 0x0000_0000_0010_2000: 0x0000_0000_0010_0000, 0x0000_0000_0010_2040: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0020_4080, 0x0000_0000_0000_0080: 0x0000_0000_0020_4080, 0x0000_0000_0000_4000: 0x0000_0000_0020_4000, 0x0000_0000_0000_4080: 0x0000_0000_0020_4000, + 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_0020_0080: 0x0000_0000_0020_0000, 0x0000_0000_0020_4000: 0x0000_0000_0020_0000, 0x0000_0000_0020_4080: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0040_8000, 0x0000_0000_0000_8000: 0x0000_0000_0040_8000, 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_0040_8000: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0080_0000, 0x0000_0000_0080_0000: 0x0000_0000_0080_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0204_0810, 0x0000_0000_0000_0010: 0x0000_0000_0204_0810, 0x0000_0000_0000_0800: 0x0000_0000_0204_0800, 0x0000_0000_0000_0810: 0x0000_0000_0204_0800, + 0x0000_0000_0004_0000: 0x0000_0000_0204_0000, 0x0000_0000_0004_0010: 0x0000_0000_0204_0000, 0x0000_0000_0004_0800: 0x0000_0000_0204_0000, 0x0000_0000_0004_0810: 0x0000_0000_0204_0000, + 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0000_0200_0010: 0x0000_0000_0200_0000, 0x0000_0000_0200_0800: 0x0000_0000_0200_0000, 0x0000_0000_0200_0810: 0x0000_0000_0200_0000, + 0x0000_0000_0204_0000: 0x0000_0000_0200_0000, 0x0000_0000_0204_0010: 0x0000_0000_0200_0000, 0x0000_0000_0204_0800: 0x0000_0000_0200_0000, 0x0000_0000_0204_0810: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0408_1020, 0x0000_0000_0000_0020: 0x0000_0000_0408_1020, 0x0000_0000_0000_1000: 0x0000_0000_0408_1000, 0x0000_0000_0000_1020: 0x0000_0000_0408_1000, + 0x0000_0000_0008_0000: 0x0000_0000_0408_0000, 0x0000_0000_0008_0020: 0x0000_0000_0408_0000, 0x0000_0000_0008_1000: 0x0000_0000_0408_0000, 0x0000_0000_0008_1020: 0x0000_0000_0408_0000, + 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0000_0400_0020: 0x0000_0000_0400_0000, 0x0000_0000_0400_1000: 0x0000_0000_0400_0000, 0x0000_0000_0400_1020: 0x0000_0000_0400_0000, + 0x0000_0000_0408_0000: 0x0000_0000_0400_0000, 0x0000_0000_0408_0020: 0x0000_0000_0400_0000, 0x0000_0000_0408_1000: 0x0000_0000_0400_0000, 0x0000_0000_0408_1020: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0810_2040, 0x0000_0000_0000_0040: 0x0000_0000_0810_2040, 0x0000_0000_0000_2000: 0x0000_0000_0810_2000, 0x0000_0000_0000_2040: 0x0000_0000_0810_2000, + 0x0000_0000_0010_0000: 0x0000_0000_0810_0000, 0x0000_0000_0010_0040: 0x0000_0000_0810_0000, 0x0000_0000_0010_2000: 0x0000_0000_0810_0000, 0x0000_0000_0010_2040: 0x0000_0000_0810_0000, + 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0000_0800_0040: 0x0000_0000_0800_0000, 0x0000_0000_0800_2000: 0x0000_0000_0800_0000, 0x0000_0000_0800_2040: 0x0000_0000_0800_0000, + 0x0000_0000_0810_0000: 0x0000_0000_0800_0000, 0x0000_0000_0810_0040: 0x0000_0000_0800_0000, 0x0000_0000_0810_2000: 0x0000_0000_0800_0000, 0x0000_0000_0810_2040: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_1020_4080, 0x0000_0000_0000_0080: 0x0000_0000_1020_4080, 0x0000_0000_0000_4000: 0x0000_0000_1020_4000, 0x0000_0000_0000_4080: 0x0000_0000_1020_4000, + 0x0000_0000_0020_0000: 0x0000_0000_1020_0000, 0x0000_0000_0020_0080: 0x0000_0000_1020_0000, 0x0000_0000_0020_4000: 0x0000_0000_1020_0000, 0x0000_0000_0020_4080: 0x0000_0000_1020_0000, + 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0000_1000_0080: 0x0000_0000_1000_0000, 0x0000_0000_1000_4000: 0x0000_0000_1000_0000, 0x0000_0000_1000_4080: 0x0000_0000_1000_0000, + 0x0000_0000_1020_0000: 0x0000_0000_1000_0000, 0x0000_0000_1020_0080: 0x0000_0000_1000_0000, 0x0000_0000_1020_4000: 0x0000_0000_1000_0000, 0x0000_0000_1020_4080: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_2040_8000, 0x0000_0000_0000_8000: 0x0000_0000_2040_8000, 0x0000_0000_0040_0000: 0x0000_0000_2040_0000, 0x0000_0000_0040_8000: 0x0000_0000_2040_0000, + 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0000_2000_8000: 0x0000_0000_2000_0000, 0x0000_0000_2040_0000: 0x0000_0000_2000_0000, 0x0000_0000_2040_8000: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_4080_0000, 0x0000_0000_0080_0000: 0x0000_0000_4080_0000, 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0000_4080_0000: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_8000_0000, 0x0000_0000_8000_0000: 0x0000_0000_8000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0002_0408_1020, 0x0000_0000_0000_0020: 0x0000_0002_0408_1020, 0x0000_0000_0000_1000: 0x0000_0002_0408_1000, 0x0000_0000_0000_1020: 0x0000_0002_0408_1000, + 0x0000_0000_0008_0000: 0x0000_0002_0408_0000, 0x0000_0000_0008_0020: 0x0000_0002_0408_0000, 0x0000_0000_0008_1000: 0x0000_0002_0408_0000, 0x0000_0000_0008_1020: 0x0000_0002_0408_0000, + 0x0000_0000_0400_0000: 0x0000_0002_0400_0000, 0x0000_0000_0400_0020: 0x0000_0002_0400_0000, 0x0000_0000_0400_1000: 0x0000_0002_0400_0000, 0x0000_0000_0400_1020: 0x0000_0002_0400_0000, + 0x0000_0000_0408_0000: 0x0000_0002_0400_0000, 0x0000_0000_0408_0020: 0x0000_0002_0400_0000, 0x0000_0000_0408_1000: 0x0000_0002_0400_0000, 0x0000_0000_0408_1020: 0x0000_0002_0400_0000, + 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0002_0000_0020: 0x0000_0002_0000_0000, 0x0000_0002_0000_1000: 0x0000_0002_0000_0000, 0x0000_0002_0000_1020: 0x0000_0002_0000_0000, + 0x0000_0002_0008_0000: 0x0000_0002_0000_0000, 0x0000_0002_0008_0020: 0x0000_0002_0000_0000, 0x0000_0002_0008_1000: 0x0000_0002_0000_0000, 0x0000_0002_0008_1020: 0x0000_0002_0000_0000, + 0x0000_0002_0400_0000: 0x0000_0002_0000_0000, 0x0000_0002_0400_0020: 0x0000_0002_0000_0000, 0x0000_0002_0400_1000: 0x0000_0002_0000_0000, 0x0000_0002_0400_1020: 0x0000_0002_0000_0000, + 0x0000_0002_0408_0000: 0x0000_0002_0000_0000, 0x0000_0002_0408_0020: 0x0000_0002_0000_0000, 0x0000_0002_0408_1000: 0x0000_0002_0000_0000, 0x0000_0002_0408_1020: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0004_0810_2040, 0x0000_0000_0000_0040: 0x0000_0004_0810_2040, 0x0000_0000_0000_2000: 0x0000_0004_0810_2000, 0x0000_0000_0000_2040: 0x0000_0004_0810_2000, + 0x0000_0000_0010_0000: 0x0000_0004_0810_0000, 0x0000_0000_0010_0040: 0x0000_0004_0810_0000, 0x0000_0000_0010_2000: 0x0000_0004_0810_0000, 0x0000_0000_0010_2040: 0x0000_0004_0810_0000, + 0x0000_0000_0800_0000: 0x0000_0004_0800_0000, 0x0000_0000_0800_0040: 0x0000_0004_0800_0000, 0x0000_0000_0800_2000: 0x0000_0004_0800_0000, 0x0000_0000_0800_2040: 0x0000_0004_0800_0000, + 0x0000_0000_0810_0000: 0x0000_0004_0800_0000, 0x0000_0000_0810_0040: 0x0000_0004_0800_0000, 0x0000_0000_0810_2000: 0x0000_0004_0800_0000, 0x0000_0000_0810_2040: 0x0000_0004_0800_0000, + 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0004_0000_0040: 0x0000_0004_0000_0000, 0x0000_0004_0000_2000: 0x0000_0004_0000_0000, 0x0000_0004_0000_2040: 0x0000_0004_0000_0000, + 0x0000_0004_0010_0000: 0x0000_0004_0000_0000, 0x0000_0004_0010_0040: 0x0000_0004_0000_0000, 0x0000_0004_0010_2000: 0x0000_0004_0000_0000, 0x0000_0004_0010_2040: 0x0000_0004_0000_0000, + 0x0000_0004_0800_0000: 0x0000_0004_0000_0000, 0x0000_0004_0800_0040: 0x0000_0004_0000_0000, 0x0000_0004_0800_2000: 0x0000_0004_0000_0000, 0x0000_0004_0800_2040: 0x0000_0004_0000_0000, + 0x0000_0004_0810_0000: 0x0000_0004_0000_0000, 0x0000_0004_0810_0040: 0x0000_0004_0000_0000, 0x0000_0004_0810_2000: 0x0000_0004_0000_0000, 0x0000_0004_0810_2040: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0008_1020_4080, 0x0000_0000_0000_0080: 0x0000_0008_1020_4080, 0x0000_0000_0000_4000: 0x0000_0008_1020_4000, 0x0000_0000_0000_4080: 0x0000_0008_1020_4000, + 0x0000_0000_0020_0000: 0x0000_0008_1020_0000, 0x0000_0000_0020_0080: 0x0000_0008_1020_0000, 0x0000_0000_0020_4000: 0x0000_0008_1020_0000, 0x0000_0000_0020_4080: 0x0000_0008_1020_0000, + 0x0000_0000_1000_0000: 0x0000_0008_1000_0000, 0x0000_0000_1000_0080: 0x0000_0008_1000_0000, 0x0000_0000_1000_4000: 0x0000_0008_1000_0000, 0x0000_0000_1000_4080: 0x0000_0008_1000_0000, + 0x0000_0000_1020_0000: 0x0000_0008_1000_0000, 0x0000_0000_1020_0080: 0x0000_0008_1000_0000, 0x0000_0000_1020_4000: 0x0000_0008_1000_0000, 0x0000_0000_1020_4080: 0x0000_0008_1000_0000, + 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0008_0000_0080: 0x0000_0008_0000_0000, 0x0000_0008_0000_4000: 0x0000_0008_0000_0000, 0x0000_0008_0000_4080: 0x0000_0008_0000_0000, + 0x0000_0008_0020_0000: 0x0000_0008_0000_0000, 0x0000_0008_0020_0080: 0x0000_0008_0000_0000, 0x0000_0008_0020_4000: 0x0000_0008_0000_0000, 0x0000_0008_0020_4080: 0x0000_0008_0000_0000, + 0x0000_0008_1000_0000: 0x0000_0008_0000_0000, 0x0000_0008_1000_0080: 0x0000_0008_0000_0000, 0x0000_0008_1000_4000: 0x0000_0008_0000_0000, 0x0000_0008_1000_4080: 0x0000_0008_0000_0000, + 0x0000_0008_1020_0000: 0x0000_0008_0000_0000, 0x0000_0008_1020_0080: 0x0000_0008_0000_0000, 0x0000_0008_1020_4000: 0x0000_0008_0000_0000, 0x0000_0008_1020_4080: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0010_2040_8000, 0x0000_0000_0000_8000: 0x0000_0010_2040_8000, 0x0000_0000_0040_0000: 0x0000_0010_2040_0000, 0x0000_0000_0040_8000: 0x0000_0010_2040_0000, + 0x0000_0000_2000_0000: 0x0000_0010_2000_0000, 0x0000_0000_2000_8000: 0x0000_0010_2000_0000, 0x0000_0000_2040_0000: 0x0000_0010_2000_0000, 0x0000_0000_2040_8000: 0x0000_0010_2000_0000, + 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_0010_0000_8000: 0x0000_0010_0000_0000, 0x0000_0010_0040_0000: 0x0000_0010_0000_0000, 0x0000_0010_0040_8000: 0x0000_0010_0000_0000, + 0x0000_0010_2000_0000: 0x0000_0010_0000_0000, 0x0000_0010_2000_8000: 0x0000_0010_0000_0000, 0x0000_0010_2040_0000: 0x0000_0010_0000_0000, 0x0000_0010_2040_8000: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0020_4080_0000, 0x0000_0000_0080_0000: 0x0000_0020_4080_0000, 0x0000_0000_4000_0000: 0x0000_0020_4000_0000, 0x0000_0000_4080_0000: 0x0000_0020_4000_0000, + 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_0020_0080_0000: 0x0000_0020_0000_0000, 0x0000_0020_4000_0000: 0x0000_0020_0000_0000, 0x0000_0020_4080_0000: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0040_8000_0000, 0x0000_0000_8000_0000: 0x0000_0040_8000_0000, 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_0040_8000_0000: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0080_0000_0000, 0x0000_0080_0000_0000: 0x0000_0080_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0204_0810_2040, 0x0000_0000_0000_0040: 0x0000_0204_0810_2040, 0x0000_0000_0000_2000: 0x0000_0204_0810_2000, 0x0000_0000_0000_2040: 0x0000_0204_0810_2000, + 0x0000_0000_0010_0000: 0x0000_0204_0810_0000, 0x0000_0000_0010_0040: 0x0000_0204_0810_0000, 0x0000_0000_0010_2000: 0x0000_0204_0810_0000, 0x0000_0000_0010_2040: 0x0000_0204_0810_0000, + 0x0000_0000_0800_0000: 0x0000_0204_0800_0000, 0x0000_0000_0800_0040: 0x0000_0204_0800_0000, 0x0000_0000_0800_2000: 0x0000_0204_0800_0000, 0x0000_0000_0800_2040: 0x0000_0204_0800_0000, + 0x0000_0000_0810_0000: 0x0000_0204_0800_0000, 0x0000_0000_0810_0040: 0x0000_0204_0800_0000, 0x0000_0000_0810_2000: 0x0000_0204_0800_0000, 0x0000_0000_0810_2040: 0x0000_0204_0800_0000, + 0x0000_0004_0000_0000: 0x0000_0204_0000_0000, 0x0000_0004_0000_0040: 0x0000_0204_0000_0000, 0x0000_0004_0000_2000: 0x0000_0204_0000_0000, 0x0000_0004_0000_2040: 0x0000_0204_0000_0000, + 0x0000_0004_0010_0000: 0x0000_0204_0000_0000, 0x0000_0004_0010_0040: 0x0000_0204_0000_0000, 0x0000_0004_0010_2000: 0x0000_0204_0000_0000, 0x0000_0004_0010_2040: 0x0000_0204_0000_0000, + 0x0000_0004_0800_0000: 0x0000_0204_0000_0000, 0x0000_0004_0800_0040: 0x0000_0204_0000_0000, 0x0000_0004_0800_2000: 0x0000_0204_0000_0000, 0x0000_0004_0800_2040: 0x0000_0204_0000_0000, + 0x0000_0004_0810_0000: 0x0000_0204_0000_0000, 0x0000_0004_0810_0040: 0x0000_0204_0000_0000, 0x0000_0004_0810_2000: 0x0000_0204_0000_0000, 0x0000_0004_0810_2040: 0x0000_0204_0000_0000, + 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0000_0200_0000_0040: 0x0000_0200_0000_0000, 0x0000_0200_0000_2000: 0x0000_0200_0000_0000, 0x0000_0200_0000_2040: 0x0000_0200_0000_0000, + 0x0000_0200_0010_0000: 0x0000_0200_0000_0000, 0x0000_0200_0010_0040: 0x0000_0200_0000_0000, 0x0000_0200_0010_2000: 0x0000_0200_0000_0000, 0x0000_0200_0010_2040: 0x0000_0200_0000_0000, + 0x0000_0200_0800_0000: 0x0000_0200_0000_0000, 0x0000_0200_0800_0040: 0x0000_0200_0000_0000, 0x0000_0200_0800_2000: 0x0000_0200_0000_0000, 0x0000_0200_0800_2040: 0x0000_0200_0000_0000, + 0x0000_0200_0810_0000: 0x0000_0200_0000_0000, 0x0000_0200_0810_0040: 0x0000_0200_0000_0000, 0x0000_0200_0810_2000: 0x0000_0200_0000_0000, 0x0000_0200_0810_2040: 0x0000_0200_0000_0000, + 0x0000_0204_0000_0000: 0x0000_0200_0000_0000, 0x0000_0204_0000_0040: 0x0000_0200_0000_0000, 0x0000_0204_0000_2000: 0x0000_0200_0000_0000, 0x0000_0204_0000_2040: 0x0000_0200_0000_0000, + 0x0000_0204_0010_0000: 0x0000_0200_0000_0000, 0x0000_0204_0010_0040: 0x0000_0200_0000_0000, 0x0000_0204_0010_2000: 0x0000_0200_0000_0000, 0x0000_0204_0010_2040: 0x0000_0200_0000_0000, + 0x0000_0204_0800_0000: 0x0000_0200_0000_0000, 0x0000_0204_0800_0040: 0x0000_0200_0000_0000, 0x0000_0204_0800_2000: 0x0000_0200_0000_0000, 0x0000_0204_0800_2040: 0x0000_0200_0000_0000, + 0x0000_0204_0810_0000: 0x0000_0200_0000_0000, 0x0000_0204_0810_0040: 0x0000_0200_0000_0000, 0x0000_0204_0810_2000: 0x0000_0200_0000_0000, 0x0000_0204_0810_2040: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0408_1020_4080, 0x0000_0000_0000_0080: 0x0000_0408_1020_4080, 0x0000_0000_0000_4000: 0x0000_0408_1020_4000, 0x0000_0000_0000_4080: 0x0000_0408_1020_4000, + 0x0000_0000_0020_0000: 0x0000_0408_1020_0000, 0x0000_0000_0020_0080: 0x0000_0408_1020_0000, 0x0000_0000_0020_4000: 0x0000_0408_1020_0000, 0x0000_0000_0020_4080: 0x0000_0408_1020_0000, + 0x0000_0000_1000_0000: 0x0000_0408_1000_0000, 0x0000_0000_1000_0080: 0x0000_0408_1000_0000, 0x0000_0000_1000_4000: 0x0000_0408_1000_0000, 0x0000_0000_1000_4080: 0x0000_0408_1000_0000, + 0x0000_0000_1020_0000: 0x0000_0408_1000_0000, 0x0000_0000_1020_0080: 0x0000_0408_1000_0000, 0x0000_0000_1020_4000: 0x0000_0408_1000_0000, 0x0000_0000_1020_4080: 0x0000_0408_1000_0000, + 0x0000_0008_0000_0000: 0x0000_0408_0000_0000, 0x0000_0008_0000_0080: 0x0000_0408_0000_0000, 0x0000_0008_0000_4000: 0x0000_0408_0000_0000, 0x0000_0008_0000_4080: 0x0000_0408_0000_0000, + 0x0000_0008_0020_0000: 0x0000_0408_0000_0000, 0x0000_0008_0020_0080: 0x0000_0408_0000_0000, 0x0000_0008_0020_4000: 0x0000_0408_0000_0000, 0x0000_0008_0020_4080: 0x0000_0408_0000_0000, + 0x0000_0008_1000_0000: 0x0000_0408_0000_0000, 0x0000_0008_1000_0080: 0x0000_0408_0000_0000, 0x0000_0008_1000_4000: 0x0000_0408_0000_0000, 0x0000_0008_1000_4080: 0x0000_0408_0000_0000, + 0x0000_0008_1020_0000: 0x0000_0408_0000_0000, 0x0000_0008_1020_0080: 0x0000_0408_0000_0000, 0x0000_0008_1020_4000: 0x0000_0408_0000_0000, 0x0000_0008_1020_4080: 0x0000_0408_0000_0000, + 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0000_0400_0000_0080: 0x0000_0400_0000_0000, 0x0000_0400_0000_4000: 0x0000_0400_0000_0000, 0x0000_0400_0000_4080: 0x0000_0400_0000_0000, + 0x0000_0400_0020_0000: 0x0000_0400_0000_0000, 0x0000_0400_0020_0080: 0x0000_0400_0000_0000, 0x0000_0400_0020_4000: 0x0000_0400_0000_0000, 0x0000_0400_0020_4080: 0x0000_0400_0000_0000, + 0x0000_0400_1000_0000: 0x0000_0400_0000_0000, 0x0000_0400_1000_0080: 0x0000_0400_0000_0000, 0x0000_0400_1000_4000: 0x0000_0400_0000_0000, 0x0000_0400_1000_4080: 0x0000_0400_0000_0000, + 0x0000_0400_1020_0000: 0x0000_0400_0000_0000, 0x0000_0400_1020_0080: 0x0000_0400_0000_0000, 0x0000_0400_1020_4000: 0x0000_0400_0000_0000, 0x0000_0400_1020_4080: 0x0000_0400_0000_0000, + 0x0000_0408_0000_0000: 0x0000_0400_0000_0000, 0x0000_0408_0000_0080: 0x0000_0400_0000_0000, 0x0000_0408_0000_4000: 0x0000_0400_0000_0000, 0x0000_0408_0000_4080: 0x0000_0400_0000_0000, + 0x0000_0408_0020_0000: 0x0000_0400_0000_0000, 0x0000_0408_0020_0080: 0x0000_0400_0000_0000, 0x0000_0408_0020_4000: 0x0000_0400_0000_0000, 0x0000_0408_0020_4080: 0x0000_0400_0000_0000, + 0x0000_0408_1000_0000: 0x0000_0400_0000_0000, 0x0000_0408_1000_0080: 0x0000_0400_0000_0000, 0x0000_0408_1000_4000: 0x0000_0400_0000_0000, 0x0000_0408_1000_4080: 0x0000_0400_0000_0000, + 0x0000_0408_1020_0000: 0x0000_0400_0000_0000, 0x0000_0408_1020_0080: 0x0000_0400_0000_0000, 0x0000_0408_1020_4000: 0x0000_0400_0000_0000, 0x0000_0408_1020_4080: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0810_2040_8000, 0x0000_0000_0000_8000: 0x0000_0810_2040_8000, 0x0000_0000_0040_0000: 0x0000_0810_2040_0000, 0x0000_0000_0040_8000: 0x0000_0810_2040_0000, + 0x0000_0000_2000_0000: 0x0000_0810_2000_0000, 0x0000_0000_2000_8000: 0x0000_0810_2000_0000, 0x0000_0000_2040_0000: 0x0000_0810_2000_0000, 0x0000_0000_2040_8000: 0x0000_0810_2000_0000, + 0x0000_0010_0000_0000: 0x0000_0810_0000_0000, 0x0000_0010_0000_8000: 0x0000_0810_0000_0000, 0x0000_0010_0040_0000: 0x0000_0810_0000_0000, 0x0000_0010_0040_8000: 0x0000_0810_0000_0000, + 0x0000_0010_2000_0000: 0x0000_0810_0000_0000, 0x0000_0010_2000_8000: 0x0000_0810_0000_0000, 0x0000_0010_2040_0000: 0x0000_0810_0000_0000, 0x0000_0010_2040_8000: 0x0000_0810_0000_0000, + 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0000_0800_0000_8000: 0x0000_0800_0000_0000, 0x0000_0800_0040_0000: 0x0000_0800_0000_0000, 0x0000_0800_0040_8000: 0x0000_0800_0000_0000, + 0x0000_0800_2000_0000: 0x0000_0800_0000_0000, 0x0000_0800_2000_8000: 0x0000_0800_0000_0000, 0x0000_0800_2040_0000: 0x0000_0800_0000_0000, 0x0000_0800_2040_8000: 0x0000_0800_0000_0000, + 0x0000_0810_0000_0000: 0x0000_0800_0000_0000, 0x0000_0810_0000_8000: 0x0000_0800_0000_0000, 0x0000_0810_0040_0000: 0x0000_0800_0000_0000, 0x0000_0810_0040_8000: 0x0000_0800_0000_0000, + 0x0000_0810_2000_0000: 0x0000_0800_0000_0000, 0x0000_0810_2000_8000: 0x0000_0800_0000_0000, 0x0000_0810_2040_0000: 0x0000_0800_0000_0000, 0x0000_0810_2040_8000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_1020_4080_0000, 0x0000_0000_0080_0000: 0x0000_1020_4080_0000, 0x0000_0000_4000_0000: 0x0000_1020_4000_0000, 0x0000_0000_4080_0000: 0x0000_1020_4000_0000, + 0x0000_0020_0000_0000: 0x0000_1020_0000_0000, 0x0000_0020_0080_0000: 0x0000_1020_0000_0000, 0x0000_0020_4000_0000: 0x0000_1020_0000_0000, 0x0000_0020_4080_0000: 0x0000_1020_0000_0000, + 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0000_1000_0080_0000: 0x0000_1000_0000_0000, 0x0000_1000_4000_0000: 0x0000_1000_0000_0000, 0x0000_1000_4080_0000: 0x0000_1000_0000_0000, + 0x0000_1020_0000_0000: 0x0000_1000_0000_0000, 0x0000_1020_0080_0000: 0x0000_1000_0000_0000, 0x0000_1020_4000_0000: 0x0000_1000_0000_0000, 0x0000_1020_4080_0000: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_2040_8000_0000, 0x0000_0000_8000_0000: 0x0000_2040_8000_0000, 0x0000_0040_0000_0000: 0x0000_2040_0000_0000, 0x0000_0040_8000_0000: 0x0000_2040_0000_0000, + 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0000_2000_8000_0000: 0x0000_2000_0000_0000, 0x0000_2040_0000_0000: 0x0000_2000_0000_0000, 0x0000_2040_8000_0000: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_4080_0000_0000, 0x0000_0080_0000_0000: 0x0000_4080_0000_0000, 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0000_4080_0000_0000: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_8000_0000_0000, 0x0000_8000_0000_0000: 0x0000_8000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0002_0408_1020_4080, 0x0000_0000_0000_0080: 0x0002_0408_1020_4080, 0x0000_0000_0000_4000: 0x0002_0408_1020_4000, 0x0000_0000_0000_4080: 0x0002_0408_1020_4000, + 0x0000_0000_0020_0000: 0x0002_0408_1020_0000, 0x0000_0000_0020_0080: 0x0002_0408_1020_0000, 0x0000_0000_0020_4000: 0x0002_0408_1020_0000, 0x0000_0000_0020_4080: 0x0002_0408_1020_0000, + 0x0000_0000_1000_0000: 0x0002_0408_1000_0000, 0x0000_0000_1000_0080: 0x0002_0408_1000_0000, 0x0000_0000_1000_4000: 0x0002_0408_1000_0000, 0x0000_0000_1000_4080: 0x0002_0408_1000_0000, + 0x0000_0000_1020_0000: 0x0002_0408_1000_0000, 0x0000_0000_1020_0080: 0x0002_0408_1000_0000, 0x0000_0000_1020_4000: 0x0002_0408_1000_0000, 0x0000_0000_1020_4080: 0x0002_0408_1000_0000, + 0x0000_0008_0000_0000: 0x0002_0408_0000_0000, 0x0000_0008_0000_0080: 0x0002_0408_0000_0000, 0x0000_0008_0000_4000: 0x0002_0408_0000_0000, 0x0000_0008_0000_4080: 0x0002_0408_0000_0000, + 0x0000_0008_0020_0000: 0x0002_0408_0000_0000, 0x0000_0008_0020_0080: 0x0002_0408_0000_0000, 0x0000_0008_0020_4000: 0x0002_0408_0000_0000, 0x0000_0008_0020_4080: 0x0002_0408_0000_0000, + 0x0000_0008_1000_0000: 0x0002_0408_0000_0000, 0x0000_0008_1000_0080: 0x0002_0408_0000_0000, 0x0000_0008_1000_4000: 0x0002_0408_0000_0000, 0x0000_0008_1000_4080: 0x0002_0408_0000_0000, + 0x0000_0008_1020_0000: 0x0002_0408_0000_0000, 0x0000_0008_1020_0080: 0x0002_0408_0000_0000, 0x0000_0008_1020_4000: 0x0002_0408_0000_0000, 0x0000_0008_1020_4080: 0x0002_0408_0000_0000, + 0x0000_0400_0000_0000: 0x0002_0400_0000_0000, 0x0000_0400_0000_0080: 0x0002_0400_0000_0000, 0x0000_0400_0000_4000: 0x0002_0400_0000_0000, 0x0000_0400_0000_4080: 0x0002_0400_0000_0000, + 0x0000_0400_0020_0000: 0x0002_0400_0000_0000, 0x0000_0400_0020_0080: 0x0002_0400_0000_0000, 0x0000_0400_0020_4000: 0x0002_0400_0000_0000, 0x0000_0400_0020_4080: 0x0002_0400_0000_0000, + 0x0000_0400_1000_0000: 0x0002_0400_0000_0000, 0x0000_0400_1000_0080: 0x0002_0400_0000_0000, 0x0000_0400_1000_4000: 0x0002_0400_0000_0000, 0x0000_0400_1000_4080: 0x0002_0400_0000_0000, + 0x0000_0400_1020_0000: 0x0002_0400_0000_0000, 0x0000_0400_1020_0080: 0x0002_0400_0000_0000, 0x0000_0400_1020_4000: 0x0002_0400_0000_0000, 0x0000_0400_1020_4080: 0x0002_0400_0000_0000, + 0x0000_0408_0000_0000: 0x0002_0400_0000_0000, 0x0000_0408_0000_0080: 0x0002_0400_0000_0000, 0x0000_0408_0000_4000: 0x0002_0400_0000_0000, 0x0000_0408_0000_4080: 0x0002_0400_0000_0000, + 0x0000_0408_0020_0000: 0x0002_0400_0000_0000, 0x0000_0408_0020_0080: 0x0002_0400_0000_0000, 0x0000_0408_0020_4000: 0x0002_0400_0000_0000, 0x0000_0408_0020_4080: 0x0002_0400_0000_0000, + 0x0000_0408_1000_0000: 0x0002_0400_0000_0000, 0x0000_0408_1000_0080: 0x0002_0400_0000_0000, 0x0000_0408_1000_4000: 0x0002_0400_0000_0000, 0x0000_0408_1000_4080: 0x0002_0400_0000_0000, + 0x0000_0408_1020_0000: 0x0002_0400_0000_0000, 0x0000_0408_1020_0080: 0x0002_0400_0000_0000, 0x0000_0408_1020_4000: 0x0002_0400_0000_0000, 0x0000_0408_1020_4080: 0x0002_0400_0000_0000, + 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0002_0000_0000_0080: 0x0002_0000_0000_0000, 0x0002_0000_0000_4000: 0x0002_0000_0000_0000, 0x0002_0000_0000_4080: 0x0002_0000_0000_0000, + 0x0002_0000_0020_0000: 0x0002_0000_0000_0000, 0x0002_0000_0020_0080: 0x0002_0000_0000_0000, 0x0002_0000_0020_4000: 0x0002_0000_0000_0000, 0x0002_0000_0020_4080: 0x0002_0000_0000_0000, + 0x0002_0000_1000_0000: 0x0002_0000_0000_0000, 0x0002_0000_1000_0080: 0x0002_0000_0000_0000, 0x0002_0000_1000_4000: 0x0002_0000_0000_0000, 0x0002_0000_1000_4080: 0x0002_0000_0000_0000, + 0x0002_0000_1020_0000: 0x0002_0000_0000_0000, 0x0002_0000_1020_0080: 0x0002_0000_0000_0000, 0x0002_0000_1020_4000: 0x0002_0000_0000_0000, 0x0002_0000_1020_4080: 0x0002_0000_0000_0000, + 0x0002_0008_0000_0000: 0x0002_0000_0000_0000, 0x0002_0008_0000_0080: 0x0002_0000_0000_0000, 0x0002_0008_0000_4000: 0x0002_0000_0000_0000, 0x0002_0008_0000_4080: 0x0002_0000_0000_0000, + 0x0002_0008_0020_0000: 0x0002_0000_0000_0000, 0x0002_0008_0020_0080: 0x0002_0000_0000_0000, 0x0002_0008_0020_4000: 0x0002_0000_0000_0000, 0x0002_0008_0020_4080: 0x0002_0000_0000_0000, + 0x0002_0008_1000_0000: 0x0002_0000_0000_0000, 0x0002_0008_1000_0080: 0x0002_0000_0000_0000, 0x0002_0008_1000_4000: 0x0002_0000_0000_0000, 0x0002_0008_1000_4080: 0x0002_0000_0000_0000, + 0x0002_0008_1020_0000: 0x0002_0000_0000_0000, 0x0002_0008_1020_0080: 0x0002_0000_0000_0000, 0x0002_0008_1020_4000: 0x0002_0000_0000_0000, 0x0002_0008_1020_4080: 0x0002_0000_0000_0000, + 0x0002_0400_0000_0000: 0x0002_0000_0000_0000, 0x0002_0400_0000_0080: 0x0002_0000_0000_0000, 0x0002_0400_0000_4000: 0x0002_0000_0000_0000, 0x0002_0400_0000_4080: 0x0002_0000_0000_0000, + 0x0002_0400_0020_0000: 0x0002_0000_0000_0000, 0x0002_0400_0020_0080: 0x0002_0000_0000_0000, 0x0002_0400_0020_4000: 0x0002_0000_0000_0000, 0x0002_0400_0020_4080: 0x0002_0000_0000_0000, + 0x0002_0400_1000_0000: 0x0002_0000_0000_0000, 0x0002_0400_1000_0080: 0x0002_0000_0000_0000, 0x0002_0400_1000_4000: 0x0002_0000_0000_0000, 0x0002_0400_1000_4080: 0x0002_0000_0000_0000, + 0x0002_0400_1020_0000: 0x0002_0000_0000_0000, 0x0002_0400_1020_0080: 0x0002_0000_0000_0000, 0x0002_0400_1020_4000: 0x0002_0000_0000_0000, 0x0002_0400_1020_4080: 0x0002_0000_0000_0000, + 0x0002_0408_0000_0000: 0x0002_0000_0000_0000, 0x0002_0408_0000_0080: 0x0002_0000_0000_0000, 0x0002_0408_0000_4000: 0x0002_0000_0000_0000, 0x0002_0408_0000_4080: 0x0002_0000_0000_0000, + 0x0002_0408_0020_0000: 0x0002_0000_0000_0000, 0x0002_0408_0020_0080: 0x0002_0000_0000_0000, 0x0002_0408_0020_4000: 0x0002_0000_0000_0000, 0x0002_0408_0020_4080: 0x0002_0000_0000_0000, + 0x0002_0408_1000_0000: 0x0002_0000_0000_0000, 0x0002_0408_1000_0080: 0x0002_0000_0000_0000, 0x0002_0408_1000_4000: 0x0002_0000_0000_0000, 0x0002_0408_1000_4080: 0x0002_0000_0000_0000, + 0x0002_0408_1020_0000: 0x0002_0000_0000_0000, 0x0002_0408_1020_0080: 0x0002_0000_0000_0000, 0x0002_0408_1020_4000: 0x0002_0000_0000_0000, 0x0002_0408_1020_4080: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0004_0810_2040_8000, 0x0000_0000_0000_8000: 0x0004_0810_2040_8000, 0x0000_0000_0040_0000: 0x0004_0810_2040_0000, 0x0000_0000_0040_8000: 0x0004_0810_2040_0000, + 0x0000_0000_2000_0000: 0x0004_0810_2000_0000, 0x0000_0000_2000_8000: 0x0004_0810_2000_0000, 0x0000_0000_2040_0000: 0x0004_0810_2000_0000, 0x0000_0000_2040_8000: 0x0004_0810_2000_0000, + 0x0000_0010_0000_0000: 0x0004_0810_0000_0000, 0x0000_0010_0000_8000: 0x0004_0810_0000_0000, 0x0000_0010_0040_0000: 0x0004_0810_0000_0000, 0x0000_0010_0040_8000: 0x0004_0810_0000_0000, + 0x0000_0010_2000_0000: 0x0004_0810_0000_0000, 0x0000_0010_2000_8000: 0x0004_0810_0000_0000, 0x0000_0010_2040_0000: 0x0004_0810_0000_0000, 0x0000_0010_2040_8000: 0x0004_0810_0000_0000, + 0x0000_0800_0000_0000: 0x0004_0800_0000_0000, 0x0000_0800_0000_8000: 0x0004_0800_0000_0000, 0x0000_0800_0040_0000: 0x0004_0800_0000_0000, 0x0000_0800_0040_8000: 0x0004_0800_0000_0000, + 0x0000_0800_2000_0000: 0x0004_0800_0000_0000, 0x0000_0800_2000_8000: 0x0004_0800_0000_0000, 0x0000_0800_2040_0000: 0x0004_0800_0000_0000, 0x0000_0800_2040_8000: 0x0004_0800_0000_0000, + 0x0000_0810_0000_0000: 0x0004_0800_0000_0000, 0x0000_0810_0000_8000: 0x0004_0800_0000_0000, 0x0000_0810_0040_0000: 0x0004_0800_0000_0000, 0x0000_0810_0040_8000: 0x0004_0800_0000_0000, + 0x0000_0810_2000_0000: 0x0004_0800_0000_0000, 0x0000_0810_2000_8000: 0x0004_0800_0000_0000, 0x0000_0810_2040_0000: 0x0004_0800_0000_0000, 0x0000_0810_2040_8000: 0x0004_0800_0000_0000, + 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0004_0000_0000_8000: 0x0004_0000_0000_0000, 0x0004_0000_0040_0000: 0x0004_0000_0000_0000, 0x0004_0000_0040_8000: 0x0004_0000_0000_0000, + 0x0004_0000_2000_0000: 0x0004_0000_0000_0000, 0x0004_0000_2000_8000: 0x0004_0000_0000_0000, 0x0004_0000_2040_0000: 0x0004_0000_0000_0000, 0x0004_0000_2040_8000: 0x0004_0000_0000_0000, + 0x0004_0010_0000_0000: 0x0004_0000_0000_0000, 0x0004_0010_0000_8000: 0x0004_0000_0000_0000, 0x0004_0010_0040_0000: 0x0004_0000_0000_0000, 0x0004_0010_0040_8000: 0x0004_0000_0000_0000, + 0x0004_0010_2000_0000: 0x0004_0000_0000_0000, 0x0004_0010_2000_8000: 0x0004_0000_0000_0000, 0x0004_0010_2040_0000: 0x0004_0000_0000_0000, 0x0004_0010_2040_8000: 0x0004_0000_0000_0000, + 0x0004_0800_0000_0000: 0x0004_0000_0000_0000, 0x0004_0800_0000_8000: 0x0004_0000_0000_0000, 0x0004_0800_0040_0000: 0x0004_0000_0000_0000, 0x0004_0800_0040_8000: 0x0004_0000_0000_0000, + 0x0004_0800_2000_0000: 0x0004_0000_0000_0000, 0x0004_0800_2000_8000: 0x0004_0000_0000_0000, 0x0004_0800_2040_0000: 0x0004_0000_0000_0000, 0x0004_0800_2040_8000: 0x0004_0000_0000_0000, + 0x0004_0810_0000_0000: 0x0004_0000_0000_0000, 0x0004_0810_0000_8000: 0x0004_0000_0000_0000, 0x0004_0810_0040_0000: 0x0004_0000_0000_0000, 0x0004_0810_0040_8000: 0x0004_0000_0000_0000, + 0x0004_0810_2000_0000: 0x0004_0000_0000_0000, 0x0004_0810_2000_8000: 0x0004_0000_0000_0000, 0x0004_0810_2040_0000: 0x0004_0000_0000_0000, 0x0004_0810_2040_8000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0008_1020_4080_0000, 0x0000_0000_0080_0000: 0x0008_1020_4080_0000, 0x0000_0000_4000_0000: 0x0008_1020_4000_0000, 0x0000_0000_4080_0000: 0x0008_1020_4000_0000, + 0x0000_0020_0000_0000: 0x0008_1020_0000_0000, 0x0000_0020_0080_0000: 0x0008_1020_0000_0000, 0x0000_0020_4000_0000: 0x0008_1020_0000_0000, 0x0000_0020_4080_0000: 0x0008_1020_0000_0000, + 0x0000_1000_0000_0000: 0x0008_1000_0000_0000, 0x0000_1000_0080_0000: 0x0008_1000_0000_0000, 0x0000_1000_4000_0000: 0x0008_1000_0000_0000, 0x0000_1000_4080_0000: 0x0008_1000_0000_0000, + 0x0000_1020_0000_0000: 0x0008_1000_0000_0000, 0x0000_1020_0080_0000: 0x0008_1000_0000_0000, 0x0000_1020_4000_0000: 0x0008_1000_0000_0000, 0x0000_1020_4080_0000: 0x0008_1000_0000_0000, + 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0008_0000_0080_0000: 0x0008_0000_0000_0000, 0x0008_0000_4000_0000: 0x0008_0000_0000_0000, 0x0008_0000_4080_0000: 0x0008_0000_0000_0000, + 0x0008_0020_0000_0000: 0x0008_0000_0000_0000, 0x0008_0020_0080_0000: 0x0008_0000_0000_0000, 0x0008_0020_4000_0000: 0x0008_0000_0000_0000, 0x0008_0020_4080_0000: 0x0008_0000_0000_0000, + 0x0008_1000_0000_0000: 0x0008_0000_0000_0000, 0x0008_1000_0080_0000: 0x0008_0000_0000_0000, 0x0008_1000_4000_0000: 0x0008_0000_0000_0000, 0x0008_1000_4080_0000: 0x0008_0000_0000_0000, + 0x0008_1020_0000_0000: 0x0008_0000_0000_0000, 0x0008_1020_0080_0000: 0x0008_0000_0000_0000, 0x0008_1020_4000_0000: 0x0008_0000_0000_0000, 0x0008_1020_4080_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0010_2040_8000_0000, 0x0000_0000_8000_0000: 0x0010_2040_8000_0000, 0x0000_0040_0000_0000: 0x0010_2040_0000_0000, 0x0000_0040_8000_0000: 0x0010_2040_0000_0000, + 0x0000_2000_0000_0000: 0x0010_2000_0000_0000, 0x0000_2000_8000_0000: 0x0010_2000_0000_0000, 0x0000_2040_0000_0000: 0x0010_2000_0000_0000, 0x0000_2040_8000_0000: 0x0010_2000_0000_0000, + 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x0010_0000_8000_0000: 0x0010_0000_0000_0000, 0x0010_0040_0000_0000: 0x0010_0000_0000_0000, 0x0010_0040_8000_0000: 0x0010_0000_0000_0000, + 0x0010_2000_0000_0000: 0x0010_0000_0000_0000, 0x0010_2000_8000_0000: 0x0010_0000_0000_0000, 0x0010_2040_0000_0000: 0x0010_0000_0000_0000, 0x0010_2040_8000_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0020_4080_0000_0000, 0x0000_0080_0000_0000: 0x0020_4080_0000_0000, 0x0000_4000_0000_0000: 0x0020_4000_0000_0000, 0x0000_4080_0000_0000: 0x0020_4000_0000_0000, + 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x0020_0080_0000_0000: 0x0020_0000_0000_0000, 0x0020_4000_0000_0000: 0x0020_0000_0000_0000, 0x0020_4080_0000_0000: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0040_8000_0000_0000, 0x0000_8000_0000_0000: 0x0040_8000_0000_0000, 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x0040_8000_0000_0000: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0080_0000_0000_0000, 0x0080_0000_0000_0000: 0x0080_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, +) +RU_MASK = ( + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0100, 0x0000_0000_0000_0100: 0x0000_0000_0000_0100, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0001_0200, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0001_0000: 0x0000_0000_0001_0200, 0x0000_0000_0001_0200: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0102_0400, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0002_0000: 0x0000_0000_0002_0400, 0x0000_0000_0002_0400: 0x0000_0000_0000_0400, + 0x0000_0000_0100_0000: 0x0000_0000_0102_0400, 0x0000_0000_0100_0400: 0x0000_0000_0000_0400, 0x0000_0000_0102_0000: 0x0000_0000_0002_0400, 0x0000_0000_0102_0400: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0204_0800, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0004_0000: 0x0000_0000_0004_0800, 0x0000_0000_0004_0800: 0x0000_0000_0000_0800, + 0x0000_0000_0200_0000: 0x0000_0000_0204_0800, 0x0000_0000_0200_0800: 0x0000_0000_0000_0800, 0x0000_0000_0204_0000: 0x0000_0000_0004_0800, 0x0000_0000_0204_0800: 0x0000_0000_0000_0800, + 0x0000_0001_0000_0000: 0x0000_0001_0204_0800, 0x0000_0001_0000_0800: 0x0000_0000_0000_0800, 0x0000_0001_0004_0000: 0x0000_0000_0004_0800, 0x0000_0001_0004_0800: 0x0000_0000_0000_0800, + 0x0000_0001_0200_0000: 0x0000_0000_0204_0800, 0x0000_0001_0200_0800: 0x0000_0000_0000_0800, 0x0000_0001_0204_0000: 0x0000_0000_0004_0800, 0x0000_0001_0204_0800: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0102_0408_1000, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0008_0000: 0x0000_0000_0008_1000, 0x0000_0000_0008_1000: 0x0000_0000_0000_1000, + 0x0000_0000_0400_0000: 0x0000_0000_0408_1000, 0x0000_0000_0400_1000: 0x0000_0000_0000_1000, 0x0000_0000_0408_0000: 0x0000_0000_0008_1000, 0x0000_0000_0408_1000: 0x0000_0000_0000_1000, + 0x0000_0002_0000_0000: 0x0000_0002_0408_1000, 0x0000_0002_0000_1000: 0x0000_0000_0000_1000, 0x0000_0002_0008_0000: 0x0000_0000_0008_1000, 0x0000_0002_0008_1000: 0x0000_0000_0000_1000, + 0x0000_0002_0400_0000: 0x0000_0000_0408_1000, 0x0000_0002_0400_1000: 0x0000_0000_0000_1000, 0x0000_0002_0408_0000: 0x0000_0000_0008_1000, 0x0000_0002_0408_1000: 0x0000_0000_0000_1000, + 0x0000_0100_0000_0000: 0x0000_0102_0408_1000, 0x0000_0100_0000_1000: 0x0000_0000_0000_1000, 0x0000_0100_0008_0000: 0x0000_0000_0008_1000, 0x0000_0100_0008_1000: 0x0000_0000_0000_1000, + 0x0000_0100_0400_0000: 0x0000_0000_0408_1000, 0x0000_0100_0400_1000: 0x0000_0000_0000_1000, 0x0000_0100_0408_0000: 0x0000_0000_0008_1000, 0x0000_0100_0408_1000: 0x0000_0000_0000_1000, + 0x0000_0102_0000_0000: 0x0000_0002_0408_1000, 0x0000_0102_0000_1000: 0x0000_0000_0000_1000, 0x0000_0102_0008_0000: 0x0000_0000_0008_1000, 0x0000_0102_0008_1000: 0x0000_0000_0000_1000, + 0x0000_0102_0400_0000: 0x0000_0000_0408_1000, 0x0000_0102_0400_1000: 0x0000_0000_0000_1000, 0x0000_0102_0408_0000: 0x0000_0000_0008_1000, 0x0000_0102_0408_1000: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0204_0810_2000, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0010_0000: 0x0000_0000_0010_2000, 0x0000_0000_0010_2000: 0x0000_0000_0000_2000, + 0x0000_0000_0800_0000: 0x0000_0000_0810_2000, 0x0000_0000_0800_2000: 0x0000_0000_0000_2000, 0x0000_0000_0810_0000: 0x0000_0000_0010_2000, 0x0000_0000_0810_2000: 0x0000_0000_0000_2000, + 0x0000_0004_0000_0000: 0x0000_0004_0810_2000, 0x0000_0004_0000_2000: 0x0000_0000_0000_2000, 0x0000_0004_0010_0000: 0x0000_0000_0010_2000, 0x0000_0004_0010_2000: 0x0000_0000_0000_2000, + 0x0000_0004_0800_0000: 0x0000_0000_0810_2000, 0x0000_0004_0800_2000: 0x0000_0000_0000_2000, 0x0000_0004_0810_0000: 0x0000_0000_0010_2000, 0x0000_0004_0810_2000: 0x0000_0000_0000_2000, + 0x0000_0200_0000_0000: 0x0000_0204_0810_2000, 0x0000_0200_0000_2000: 0x0000_0000_0000_2000, 0x0000_0200_0010_0000: 0x0000_0000_0010_2000, 0x0000_0200_0010_2000: 0x0000_0000_0000_2000, + 0x0000_0200_0800_0000: 0x0000_0000_0810_2000, 0x0000_0200_0800_2000: 0x0000_0000_0000_2000, 0x0000_0200_0810_0000: 0x0000_0000_0010_2000, 0x0000_0200_0810_2000: 0x0000_0000_0000_2000, + 0x0000_0204_0000_0000: 0x0000_0004_0810_2000, 0x0000_0204_0000_2000: 0x0000_0000_0000_2000, 0x0000_0204_0010_0000: 0x0000_0000_0010_2000, 0x0000_0204_0010_2000: 0x0000_0000_0000_2000, + 0x0000_0204_0800_0000: 0x0000_0000_0810_2000, 0x0000_0204_0800_2000: 0x0000_0000_0000_2000, 0x0000_0204_0810_0000: 0x0000_0000_0010_2000, 0x0000_0204_0810_2000: 0x0000_0000_0000_2000, + 0x0001_0000_0000_0000: 0x0001_0204_0810_2000, 0x0001_0000_0000_2000: 0x0000_0000_0000_2000, 0x0001_0000_0010_0000: 0x0000_0000_0010_2000, 0x0001_0000_0010_2000: 0x0000_0000_0000_2000, + 0x0001_0000_0800_0000: 0x0000_0000_0810_2000, 0x0001_0000_0800_2000: 0x0000_0000_0000_2000, 0x0001_0000_0810_0000: 0x0000_0000_0010_2000, 0x0001_0000_0810_2000: 0x0000_0000_0000_2000, + 0x0001_0004_0000_0000: 0x0000_0004_0810_2000, 0x0001_0004_0000_2000: 0x0000_0000_0000_2000, 0x0001_0004_0010_0000: 0x0000_0000_0010_2000, 0x0001_0004_0010_2000: 0x0000_0000_0000_2000, + 0x0001_0004_0800_0000: 0x0000_0000_0810_2000, 0x0001_0004_0800_2000: 0x0000_0000_0000_2000, 0x0001_0004_0810_0000: 0x0000_0000_0010_2000, 0x0001_0004_0810_2000: 0x0000_0000_0000_2000, + 0x0001_0200_0000_0000: 0x0000_0204_0810_2000, 0x0001_0200_0000_2000: 0x0000_0000_0000_2000, 0x0001_0200_0010_0000: 0x0000_0000_0010_2000, 0x0001_0200_0010_2000: 0x0000_0000_0000_2000, + 0x0001_0200_0800_0000: 0x0000_0000_0810_2000, 0x0001_0200_0800_2000: 0x0000_0000_0000_2000, 0x0001_0200_0810_0000: 0x0000_0000_0010_2000, 0x0001_0200_0810_2000: 0x0000_0000_0000_2000, + 0x0001_0204_0000_0000: 0x0000_0004_0810_2000, 0x0001_0204_0000_2000: 0x0000_0000_0000_2000, 0x0001_0204_0010_0000: 0x0000_0000_0010_2000, 0x0001_0204_0010_2000: 0x0000_0000_0000_2000, + 0x0001_0204_0800_0000: 0x0000_0000_0810_2000, 0x0001_0204_0800_2000: 0x0000_0000_0000_2000, 0x0001_0204_0810_0000: 0x0000_0000_0010_2000, 0x0001_0204_0810_2000: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0102_0408_1020_4000, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0020_0000: 0x0000_0000_0020_4000, 0x0000_0000_0020_4000: 0x0000_0000_0000_4000, + 0x0000_0000_1000_0000: 0x0000_0000_1020_4000, 0x0000_0000_1000_4000: 0x0000_0000_0000_4000, 0x0000_0000_1020_0000: 0x0000_0000_0020_4000, 0x0000_0000_1020_4000: 0x0000_0000_0000_4000, + 0x0000_0008_0000_0000: 0x0000_0008_1020_4000, 0x0000_0008_0000_4000: 0x0000_0000_0000_4000, 0x0000_0008_0020_0000: 0x0000_0000_0020_4000, 0x0000_0008_0020_4000: 0x0000_0000_0000_4000, + 0x0000_0008_1000_0000: 0x0000_0000_1020_4000, 0x0000_0008_1000_4000: 0x0000_0000_0000_4000, 0x0000_0008_1020_0000: 0x0000_0000_0020_4000, 0x0000_0008_1020_4000: 0x0000_0000_0000_4000, + 0x0000_0400_0000_0000: 0x0000_0408_1020_4000, 0x0000_0400_0000_4000: 0x0000_0000_0000_4000, 0x0000_0400_0020_0000: 0x0000_0000_0020_4000, 0x0000_0400_0020_4000: 0x0000_0000_0000_4000, + 0x0000_0400_1000_0000: 0x0000_0000_1020_4000, 0x0000_0400_1000_4000: 0x0000_0000_0000_4000, 0x0000_0400_1020_0000: 0x0000_0000_0020_4000, 0x0000_0400_1020_4000: 0x0000_0000_0000_4000, + 0x0000_0408_0000_0000: 0x0000_0008_1020_4000, 0x0000_0408_0000_4000: 0x0000_0000_0000_4000, 0x0000_0408_0020_0000: 0x0000_0000_0020_4000, 0x0000_0408_0020_4000: 0x0000_0000_0000_4000, + 0x0000_0408_1000_0000: 0x0000_0000_1020_4000, 0x0000_0408_1000_4000: 0x0000_0000_0000_4000, 0x0000_0408_1020_0000: 0x0000_0000_0020_4000, 0x0000_0408_1020_4000: 0x0000_0000_0000_4000, + 0x0002_0000_0000_0000: 0x0002_0408_1020_4000, 0x0002_0000_0000_4000: 0x0000_0000_0000_4000, 0x0002_0000_0020_0000: 0x0000_0000_0020_4000, 0x0002_0000_0020_4000: 0x0000_0000_0000_4000, + 0x0002_0000_1000_0000: 0x0000_0000_1020_4000, 0x0002_0000_1000_4000: 0x0000_0000_0000_4000, 0x0002_0000_1020_0000: 0x0000_0000_0020_4000, 0x0002_0000_1020_4000: 0x0000_0000_0000_4000, + 0x0002_0008_0000_0000: 0x0000_0008_1020_4000, 0x0002_0008_0000_4000: 0x0000_0000_0000_4000, 0x0002_0008_0020_0000: 0x0000_0000_0020_4000, 0x0002_0008_0020_4000: 0x0000_0000_0000_4000, + 0x0002_0008_1000_0000: 0x0000_0000_1020_4000, 0x0002_0008_1000_4000: 0x0000_0000_0000_4000, 0x0002_0008_1020_0000: 0x0000_0000_0020_4000, 0x0002_0008_1020_4000: 0x0000_0000_0000_4000, + 0x0002_0400_0000_0000: 0x0000_0408_1020_4000, 0x0002_0400_0000_4000: 0x0000_0000_0000_4000, 0x0002_0400_0020_0000: 0x0000_0000_0020_4000, 0x0002_0400_0020_4000: 0x0000_0000_0000_4000, + 0x0002_0400_1000_0000: 0x0000_0000_1020_4000, 0x0002_0400_1000_4000: 0x0000_0000_0000_4000, 0x0002_0400_1020_0000: 0x0000_0000_0020_4000, 0x0002_0400_1020_4000: 0x0000_0000_0000_4000, + 0x0002_0408_0000_0000: 0x0000_0008_1020_4000, 0x0002_0408_0000_4000: 0x0000_0000_0000_4000, 0x0002_0408_0020_0000: 0x0000_0000_0020_4000, 0x0002_0408_0020_4000: 0x0000_0000_0000_4000, + 0x0002_0408_1000_0000: 0x0000_0000_1020_4000, 0x0002_0408_1000_4000: 0x0000_0000_0000_4000, 0x0002_0408_1020_0000: 0x0000_0000_0020_4000, 0x0002_0408_1020_4000: 0x0000_0000_0000_4000, + 0x0100_0000_0000_0000: 0x0102_0408_1020_4000, 0x0100_0000_0000_4000: 0x0000_0000_0000_4000, 0x0100_0000_0020_0000: 0x0000_0000_0020_4000, 0x0100_0000_0020_4000: 0x0000_0000_0000_4000, + 0x0100_0000_1000_0000: 0x0000_0000_1020_4000, 0x0100_0000_1000_4000: 0x0000_0000_0000_4000, 0x0100_0000_1020_0000: 0x0000_0000_0020_4000, 0x0100_0000_1020_4000: 0x0000_0000_0000_4000, + 0x0100_0008_0000_0000: 0x0000_0008_1020_4000, 0x0100_0008_0000_4000: 0x0000_0000_0000_4000, 0x0100_0008_0020_0000: 0x0000_0000_0020_4000, 0x0100_0008_0020_4000: 0x0000_0000_0000_4000, + 0x0100_0008_1000_0000: 0x0000_0000_1020_4000, 0x0100_0008_1000_4000: 0x0000_0000_0000_4000, 0x0100_0008_1020_0000: 0x0000_0000_0020_4000, 0x0100_0008_1020_4000: 0x0000_0000_0000_4000, + 0x0100_0400_0000_0000: 0x0000_0408_1020_4000, 0x0100_0400_0000_4000: 0x0000_0000_0000_4000, 0x0100_0400_0020_0000: 0x0000_0000_0020_4000, 0x0100_0400_0020_4000: 0x0000_0000_0000_4000, + 0x0100_0400_1000_0000: 0x0000_0000_1020_4000, 0x0100_0400_1000_4000: 0x0000_0000_0000_4000, 0x0100_0400_1020_0000: 0x0000_0000_0020_4000, 0x0100_0400_1020_4000: 0x0000_0000_0000_4000, + 0x0100_0408_0000_0000: 0x0000_0008_1020_4000, 0x0100_0408_0000_4000: 0x0000_0000_0000_4000, 0x0100_0408_0020_0000: 0x0000_0000_0020_4000, 0x0100_0408_0020_4000: 0x0000_0000_0000_4000, + 0x0100_0408_1000_0000: 0x0000_0000_1020_4000, 0x0100_0408_1000_4000: 0x0000_0000_0000_4000, 0x0100_0408_1020_0000: 0x0000_0000_0020_4000, 0x0100_0408_1020_4000: 0x0000_0000_0000_4000, + 0x0102_0000_0000_0000: 0x0002_0408_1020_4000, 0x0102_0000_0000_4000: 0x0000_0000_0000_4000, 0x0102_0000_0020_0000: 0x0000_0000_0020_4000, 0x0102_0000_0020_4000: 0x0000_0000_0000_4000, + 0x0102_0000_1000_0000: 0x0000_0000_1020_4000, 0x0102_0000_1000_4000: 0x0000_0000_0000_4000, 0x0102_0000_1020_0000: 0x0000_0000_0020_4000, 0x0102_0000_1020_4000: 0x0000_0000_0000_4000, + 0x0102_0008_0000_0000: 0x0000_0008_1020_4000, 0x0102_0008_0000_4000: 0x0000_0000_0000_4000, 0x0102_0008_0020_0000: 0x0000_0000_0020_4000, 0x0102_0008_0020_4000: 0x0000_0000_0000_4000, + 0x0102_0008_1000_0000: 0x0000_0000_1020_4000, 0x0102_0008_1000_4000: 0x0000_0000_0000_4000, 0x0102_0008_1020_0000: 0x0000_0000_0020_4000, 0x0102_0008_1020_4000: 0x0000_0000_0000_4000, + 0x0102_0400_0000_0000: 0x0000_0408_1020_4000, 0x0102_0400_0000_4000: 0x0000_0000_0000_4000, 0x0102_0400_0020_0000: 0x0000_0000_0020_4000, 0x0102_0400_0020_4000: 0x0000_0000_0000_4000, + 0x0102_0400_1000_0000: 0x0000_0000_1020_4000, 0x0102_0400_1000_4000: 0x0000_0000_0000_4000, 0x0102_0400_1020_0000: 0x0000_0000_0020_4000, 0x0102_0400_1020_4000: 0x0000_0000_0000_4000, + 0x0102_0408_0000_0000: 0x0000_0008_1020_4000, 0x0102_0408_0000_4000: 0x0000_0000_0000_4000, 0x0102_0408_0020_0000: 0x0000_0000_0020_4000, 0x0102_0408_0020_4000: 0x0000_0000_0000_4000, + 0x0102_0408_1000_0000: 0x0000_0000_1020_4000, 0x0102_0408_1000_4000: 0x0000_0000_0000_4000, 0x0102_0408_1020_0000: 0x0000_0000_0020_4000, 0x0102_0408_1020_4000: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0001_0000, 0x0000_0000_0001_0000: 0x0000_0000_0001_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0102_0000, 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0100_0000: 0x0000_0000_0102_0000, 0x0000_0000_0102_0000: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0204_0000, 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0200_0000: 0x0000_0000_0204_0000, 0x0000_0000_0204_0000: 0x0000_0000_0004_0000, + 0x0000_0001_0000_0000: 0x0000_0001_0204_0000, 0x0000_0001_0004_0000: 0x0000_0000_0004_0000, 0x0000_0001_0200_0000: 0x0000_0000_0204_0000, 0x0000_0001_0204_0000: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0102_0408_0000, 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0400_0000: 0x0000_0000_0408_0000, 0x0000_0000_0408_0000: 0x0000_0000_0008_0000, + 0x0000_0002_0000_0000: 0x0000_0002_0408_0000, 0x0000_0002_0008_0000: 0x0000_0000_0008_0000, 0x0000_0002_0400_0000: 0x0000_0000_0408_0000, 0x0000_0002_0408_0000: 0x0000_0000_0008_0000, + 0x0000_0100_0000_0000: 0x0000_0102_0408_0000, 0x0000_0100_0008_0000: 0x0000_0000_0008_0000, 0x0000_0100_0400_0000: 0x0000_0000_0408_0000, 0x0000_0100_0408_0000: 0x0000_0000_0008_0000, + 0x0000_0102_0000_0000: 0x0000_0002_0408_0000, 0x0000_0102_0008_0000: 0x0000_0000_0008_0000, 0x0000_0102_0400_0000: 0x0000_0000_0408_0000, 0x0000_0102_0408_0000: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0204_0810_0000, 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_0800_0000: 0x0000_0000_0810_0000, 0x0000_0000_0810_0000: 0x0000_0000_0010_0000, + 0x0000_0004_0000_0000: 0x0000_0004_0810_0000, 0x0000_0004_0010_0000: 0x0000_0000_0010_0000, 0x0000_0004_0800_0000: 0x0000_0000_0810_0000, 0x0000_0004_0810_0000: 0x0000_0000_0010_0000, + 0x0000_0200_0000_0000: 0x0000_0204_0810_0000, 0x0000_0200_0010_0000: 0x0000_0000_0010_0000, 0x0000_0200_0800_0000: 0x0000_0000_0810_0000, 0x0000_0200_0810_0000: 0x0000_0000_0010_0000, + 0x0000_0204_0000_0000: 0x0000_0004_0810_0000, 0x0000_0204_0010_0000: 0x0000_0000_0010_0000, 0x0000_0204_0800_0000: 0x0000_0000_0810_0000, 0x0000_0204_0810_0000: 0x0000_0000_0010_0000, + 0x0001_0000_0000_0000: 0x0001_0204_0810_0000, 0x0001_0000_0010_0000: 0x0000_0000_0010_0000, 0x0001_0000_0800_0000: 0x0000_0000_0810_0000, 0x0001_0000_0810_0000: 0x0000_0000_0010_0000, + 0x0001_0004_0000_0000: 0x0000_0004_0810_0000, 0x0001_0004_0010_0000: 0x0000_0000_0010_0000, 0x0001_0004_0800_0000: 0x0000_0000_0810_0000, 0x0001_0004_0810_0000: 0x0000_0000_0010_0000, + 0x0001_0200_0000_0000: 0x0000_0204_0810_0000, 0x0001_0200_0010_0000: 0x0000_0000_0010_0000, 0x0001_0200_0800_0000: 0x0000_0000_0810_0000, 0x0001_0200_0810_0000: 0x0000_0000_0010_0000, + 0x0001_0204_0000_0000: 0x0000_0004_0810_0000, 0x0001_0204_0010_0000: 0x0000_0000_0010_0000, 0x0001_0204_0800_0000: 0x0000_0000_0810_0000, 0x0001_0204_0810_0000: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0102_0408_1020_0000, 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_1000_0000: 0x0000_0000_1020_0000, 0x0000_0000_1020_0000: 0x0000_0000_0020_0000, + 0x0000_0008_0000_0000: 0x0000_0008_1020_0000, 0x0000_0008_0020_0000: 0x0000_0000_0020_0000, 0x0000_0008_1000_0000: 0x0000_0000_1020_0000, 0x0000_0008_1020_0000: 0x0000_0000_0020_0000, + 0x0000_0400_0000_0000: 0x0000_0408_1020_0000, 0x0000_0400_0020_0000: 0x0000_0000_0020_0000, 0x0000_0400_1000_0000: 0x0000_0000_1020_0000, 0x0000_0400_1020_0000: 0x0000_0000_0020_0000, + 0x0000_0408_0000_0000: 0x0000_0008_1020_0000, 0x0000_0408_0020_0000: 0x0000_0000_0020_0000, 0x0000_0408_1000_0000: 0x0000_0000_1020_0000, 0x0000_0408_1020_0000: 0x0000_0000_0020_0000, + 0x0002_0000_0000_0000: 0x0002_0408_1020_0000, 0x0002_0000_0020_0000: 0x0000_0000_0020_0000, 0x0002_0000_1000_0000: 0x0000_0000_1020_0000, 0x0002_0000_1020_0000: 0x0000_0000_0020_0000, + 0x0002_0008_0000_0000: 0x0000_0008_1020_0000, 0x0002_0008_0020_0000: 0x0000_0000_0020_0000, 0x0002_0008_1000_0000: 0x0000_0000_1020_0000, 0x0002_0008_1020_0000: 0x0000_0000_0020_0000, + 0x0002_0400_0000_0000: 0x0000_0408_1020_0000, 0x0002_0400_0020_0000: 0x0000_0000_0020_0000, 0x0002_0400_1000_0000: 0x0000_0000_1020_0000, 0x0002_0400_1020_0000: 0x0000_0000_0020_0000, + 0x0002_0408_0000_0000: 0x0000_0008_1020_0000, 0x0002_0408_0020_0000: 0x0000_0000_0020_0000, 0x0002_0408_1000_0000: 0x0000_0000_1020_0000, 0x0002_0408_1020_0000: 0x0000_0000_0020_0000, + 0x0100_0000_0000_0000: 0x0102_0408_1020_0000, 0x0100_0000_0020_0000: 0x0000_0000_0020_0000, 0x0100_0000_1000_0000: 0x0000_0000_1020_0000, 0x0100_0000_1020_0000: 0x0000_0000_0020_0000, + 0x0100_0008_0000_0000: 0x0000_0008_1020_0000, 0x0100_0008_0020_0000: 0x0000_0000_0020_0000, 0x0100_0008_1000_0000: 0x0000_0000_1020_0000, 0x0100_0008_1020_0000: 0x0000_0000_0020_0000, + 0x0100_0400_0000_0000: 0x0000_0408_1020_0000, 0x0100_0400_0020_0000: 0x0000_0000_0020_0000, 0x0100_0400_1000_0000: 0x0000_0000_1020_0000, 0x0100_0400_1020_0000: 0x0000_0000_0020_0000, + 0x0100_0408_0000_0000: 0x0000_0008_1020_0000, 0x0100_0408_0020_0000: 0x0000_0000_0020_0000, 0x0100_0408_1000_0000: 0x0000_0000_1020_0000, 0x0100_0408_1020_0000: 0x0000_0000_0020_0000, + 0x0102_0000_0000_0000: 0x0002_0408_1020_0000, 0x0102_0000_0020_0000: 0x0000_0000_0020_0000, 0x0102_0000_1000_0000: 0x0000_0000_1020_0000, 0x0102_0000_1020_0000: 0x0000_0000_0020_0000, + 0x0102_0008_0000_0000: 0x0000_0008_1020_0000, 0x0102_0008_0020_0000: 0x0000_0000_0020_0000, 0x0102_0008_1000_0000: 0x0000_0000_1020_0000, 0x0102_0008_1020_0000: 0x0000_0000_0020_0000, + 0x0102_0400_0000_0000: 0x0000_0408_1020_0000, 0x0102_0400_0020_0000: 0x0000_0000_0020_0000, 0x0102_0400_1000_0000: 0x0000_0000_1020_0000, 0x0102_0400_1020_0000: 0x0000_0000_0020_0000, + 0x0102_0408_0000_0000: 0x0000_0008_1020_0000, 0x0102_0408_0020_0000: 0x0000_0000_0020_0000, 0x0102_0408_1000_0000: 0x0000_0000_1020_0000, 0x0102_0408_1020_0000: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0204_0810_2040_0000, 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_2000_0000: 0x0000_0000_2040_0000, 0x0000_0000_2040_0000: 0x0000_0000_0040_0000, + 0x0000_0010_0000_0000: 0x0000_0010_2040_0000, 0x0000_0010_0040_0000: 0x0000_0000_0040_0000, 0x0000_0010_2000_0000: 0x0000_0000_2040_0000, 0x0000_0010_2040_0000: 0x0000_0000_0040_0000, + 0x0000_0800_0000_0000: 0x0000_0810_2040_0000, 0x0000_0800_0040_0000: 0x0000_0000_0040_0000, 0x0000_0800_2000_0000: 0x0000_0000_2040_0000, 0x0000_0800_2040_0000: 0x0000_0000_0040_0000, + 0x0000_0810_0000_0000: 0x0000_0010_2040_0000, 0x0000_0810_0040_0000: 0x0000_0000_0040_0000, 0x0000_0810_2000_0000: 0x0000_0000_2040_0000, 0x0000_0810_2040_0000: 0x0000_0000_0040_0000, + 0x0004_0000_0000_0000: 0x0004_0810_2040_0000, 0x0004_0000_0040_0000: 0x0000_0000_0040_0000, 0x0004_0000_2000_0000: 0x0000_0000_2040_0000, 0x0004_0000_2040_0000: 0x0000_0000_0040_0000, + 0x0004_0010_0000_0000: 0x0000_0010_2040_0000, 0x0004_0010_0040_0000: 0x0000_0000_0040_0000, 0x0004_0010_2000_0000: 0x0000_0000_2040_0000, 0x0004_0010_2040_0000: 0x0000_0000_0040_0000, + 0x0004_0800_0000_0000: 0x0000_0810_2040_0000, 0x0004_0800_0040_0000: 0x0000_0000_0040_0000, 0x0004_0800_2000_0000: 0x0000_0000_2040_0000, 0x0004_0800_2040_0000: 0x0000_0000_0040_0000, + 0x0004_0810_0000_0000: 0x0000_0010_2040_0000, 0x0004_0810_0040_0000: 0x0000_0000_0040_0000, 0x0004_0810_2000_0000: 0x0000_0000_2040_0000, 0x0004_0810_2040_0000: 0x0000_0000_0040_0000, + 0x0200_0000_0000_0000: 0x0204_0810_2040_0000, 0x0200_0000_0040_0000: 0x0000_0000_0040_0000, 0x0200_0000_2000_0000: 0x0000_0000_2040_0000, 0x0200_0000_2040_0000: 0x0000_0000_0040_0000, + 0x0200_0010_0000_0000: 0x0000_0010_2040_0000, 0x0200_0010_0040_0000: 0x0000_0000_0040_0000, 0x0200_0010_2000_0000: 0x0000_0000_2040_0000, 0x0200_0010_2040_0000: 0x0000_0000_0040_0000, + 0x0200_0800_0000_0000: 0x0000_0810_2040_0000, 0x0200_0800_0040_0000: 0x0000_0000_0040_0000, 0x0200_0800_2000_0000: 0x0000_0000_2040_0000, 0x0200_0800_2040_0000: 0x0000_0000_0040_0000, + 0x0200_0810_0000_0000: 0x0000_0010_2040_0000, 0x0200_0810_0040_0000: 0x0000_0000_0040_0000, 0x0200_0810_2000_0000: 0x0000_0000_2040_0000, 0x0200_0810_2040_0000: 0x0000_0000_0040_0000, + 0x0204_0000_0000_0000: 0x0004_0810_2040_0000, 0x0204_0000_0040_0000: 0x0000_0000_0040_0000, 0x0204_0000_2000_0000: 0x0000_0000_2040_0000, 0x0204_0000_2040_0000: 0x0000_0000_0040_0000, + 0x0204_0010_0000_0000: 0x0000_0010_2040_0000, 0x0204_0010_0040_0000: 0x0000_0000_0040_0000, 0x0204_0010_2000_0000: 0x0000_0000_2040_0000, 0x0204_0010_2040_0000: 0x0000_0000_0040_0000, + 0x0204_0800_0000_0000: 0x0000_0810_2040_0000, 0x0204_0800_0040_0000: 0x0000_0000_0040_0000, 0x0204_0800_2000_0000: 0x0000_0000_2040_0000, 0x0204_0800_2040_0000: 0x0000_0000_0040_0000, + 0x0204_0810_0000_0000: 0x0000_0010_2040_0000, 0x0204_0810_0040_0000: 0x0000_0000_0040_0000, 0x0204_0810_2000_0000: 0x0000_0000_2040_0000, 0x0204_0810_2040_0000: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0100_0000, 0x0000_0000_0100_0000: 0x0000_0000_0100_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0200_0000, 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0001_0000_0000: 0x0000_0001_0200_0000, 0x0000_0001_0200_0000: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0102_0400_0000, 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0002_0000_0000: 0x0000_0002_0400_0000, 0x0000_0002_0400_0000: 0x0000_0000_0400_0000, + 0x0000_0100_0000_0000: 0x0000_0102_0400_0000, 0x0000_0100_0400_0000: 0x0000_0000_0400_0000, 0x0000_0102_0000_0000: 0x0000_0002_0400_0000, 0x0000_0102_0400_0000: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0204_0800_0000, 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0004_0000_0000: 0x0000_0004_0800_0000, 0x0000_0004_0800_0000: 0x0000_0000_0800_0000, + 0x0000_0200_0000_0000: 0x0000_0204_0800_0000, 0x0000_0200_0800_0000: 0x0000_0000_0800_0000, 0x0000_0204_0000_0000: 0x0000_0004_0800_0000, 0x0000_0204_0800_0000: 0x0000_0000_0800_0000, + 0x0001_0000_0000_0000: 0x0001_0204_0800_0000, 0x0001_0000_0800_0000: 0x0000_0000_0800_0000, 0x0001_0004_0000_0000: 0x0000_0004_0800_0000, 0x0001_0004_0800_0000: 0x0000_0000_0800_0000, + 0x0001_0200_0000_0000: 0x0000_0204_0800_0000, 0x0001_0200_0800_0000: 0x0000_0000_0800_0000, 0x0001_0204_0000_0000: 0x0000_0004_0800_0000, 0x0001_0204_0800_0000: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0102_0408_1000_0000, 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0008_0000_0000: 0x0000_0008_1000_0000, 0x0000_0008_1000_0000: 0x0000_0000_1000_0000, + 0x0000_0400_0000_0000: 0x0000_0408_1000_0000, 0x0000_0400_1000_0000: 0x0000_0000_1000_0000, 0x0000_0408_0000_0000: 0x0000_0008_1000_0000, 0x0000_0408_1000_0000: 0x0000_0000_1000_0000, + 0x0002_0000_0000_0000: 0x0002_0408_1000_0000, 0x0002_0000_1000_0000: 0x0000_0000_1000_0000, 0x0002_0008_0000_0000: 0x0000_0008_1000_0000, 0x0002_0008_1000_0000: 0x0000_0000_1000_0000, + 0x0002_0400_0000_0000: 0x0000_0408_1000_0000, 0x0002_0400_1000_0000: 0x0000_0000_1000_0000, 0x0002_0408_0000_0000: 0x0000_0008_1000_0000, 0x0002_0408_1000_0000: 0x0000_0000_1000_0000, + 0x0100_0000_0000_0000: 0x0102_0408_1000_0000, 0x0100_0000_1000_0000: 0x0000_0000_1000_0000, 0x0100_0008_0000_0000: 0x0000_0008_1000_0000, 0x0100_0008_1000_0000: 0x0000_0000_1000_0000, + 0x0100_0400_0000_0000: 0x0000_0408_1000_0000, 0x0100_0400_1000_0000: 0x0000_0000_1000_0000, 0x0100_0408_0000_0000: 0x0000_0008_1000_0000, 0x0100_0408_1000_0000: 0x0000_0000_1000_0000, + 0x0102_0000_0000_0000: 0x0002_0408_1000_0000, 0x0102_0000_1000_0000: 0x0000_0000_1000_0000, 0x0102_0008_0000_0000: 0x0000_0008_1000_0000, 0x0102_0008_1000_0000: 0x0000_0000_1000_0000, + 0x0102_0400_0000_0000: 0x0000_0408_1000_0000, 0x0102_0400_1000_0000: 0x0000_0000_1000_0000, 0x0102_0408_0000_0000: 0x0000_0008_1000_0000, 0x0102_0408_1000_0000: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0204_0810_2000_0000, 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0010_0000_0000: 0x0000_0010_2000_0000, 0x0000_0010_2000_0000: 0x0000_0000_2000_0000, + 0x0000_0800_0000_0000: 0x0000_0810_2000_0000, 0x0000_0800_2000_0000: 0x0000_0000_2000_0000, 0x0000_0810_0000_0000: 0x0000_0010_2000_0000, 0x0000_0810_2000_0000: 0x0000_0000_2000_0000, + 0x0004_0000_0000_0000: 0x0004_0810_2000_0000, 0x0004_0000_2000_0000: 0x0000_0000_2000_0000, 0x0004_0010_0000_0000: 0x0000_0010_2000_0000, 0x0004_0010_2000_0000: 0x0000_0000_2000_0000, + 0x0004_0800_0000_0000: 0x0000_0810_2000_0000, 0x0004_0800_2000_0000: 0x0000_0000_2000_0000, 0x0004_0810_0000_0000: 0x0000_0010_2000_0000, 0x0004_0810_2000_0000: 0x0000_0000_2000_0000, + 0x0200_0000_0000_0000: 0x0204_0810_2000_0000, 0x0200_0000_2000_0000: 0x0000_0000_2000_0000, 0x0200_0010_0000_0000: 0x0000_0010_2000_0000, 0x0200_0010_2000_0000: 0x0000_0000_2000_0000, + 0x0200_0800_0000_0000: 0x0000_0810_2000_0000, 0x0200_0800_2000_0000: 0x0000_0000_2000_0000, 0x0200_0810_0000_0000: 0x0000_0010_2000_0000, 0x0200_0810_2000_0000: 0x0000_0000_2000_0000, + 0x0204_0000_0000_0000: 0x0004_0810_2000_0000, 0x0204_0000_2000_0000: 0x0000_0000_2000_0000, 0x0204_0010_0000_0000: 0x0000_0010_2000_0000, 0x0204_0010_2000_0000: 0x0000_0000_2000_0000, + 0x0204_0800_0000_0000: 0x0000_0810_2000_0000, 0x0204_0800_2000_0000: 0x0000_0000_2000_0000, 0x0204_0810_0000_0000: 0x0000_0010_2000_0000, 0x0204_0810_2000_0000: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0408_1020_4000_0000, 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0020_0000_0000: 0x0000_0020_4000_0000, 0x0000_0020_4000_0000: 0x0000_0000_4000_0000, + 0x0000_1000_0000_0000: 0x0000_1020_4000_0000, 0x0000_1000_4000_0000: 0x0000_0000_4000_0000, 0x0000_1020_0000_0000: 0x0000_0020_4000_0000, 0x0000_1020_4000_0000: 0x0000_0000_4000_0000, + 0x0008_0000_0000_0000: 0x0008_1020_4000_0000, 0x0008_0000_4000_0000: 0x0000_0000_4000_0000, 0x0008_0020_0000_0000: 0x0000_0020_4000_0000, 0x0008_0020_4000_0000: 0x0000_0000_4000_0000, + 0x0008_1000_0000_0000: 0x0000_1020_4000_0000, 0x0008_1000_4000_0000: 0x0000_0000_4000_0000, 0x0008_1020_0000_0000: 0x0000_0020_4000_0000, 0x0008_1020_4000_0000: 0x0000_0000_4000_0000, + 0x0400_0000_0000_0000: 0x0408_1020_4000_0000, 0x0400_0000_4000_0000: 0x0000_0000_4000_0000, 0x0400_0020_0000_0000: 0x0000_0020_4000_0000, 0x0400_0020_4000_0000: 0x0000_0000_4000_0000, + 0x0400_1000_0000_0000: 0x0000_1020_4000_0000, 0x0400_1000_4000_0000: 0x0000_0000_4000_0000, 0x0400_1020_0000_0000: 0x0000_0020_4000_0000, 0x0400_1020_4000_0000: 0x0000_0000_4000_0000, + 0x0408_0000_0000_0000: 0x0008_1020_4000_0000, 0x0408_0000_4000_0000: 0x0000_0000_4000_0000, 0x0408_0020_0000_0000: 0x0000_0020_4000_0000, 0x0408_0020_4000_0000: 0x0000_0000_4000_0000, + 0x0408_1000_0000_0000: 0x0000_1020_4000_0000, 0x0408_1000_4000_0000: 0x0000_0000_4000_0000, 0x0408_1020_0000_0000: 0x0000_0020_4000_0000, 0x0408_1020_4000_0000: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0000_0000, 0x0000_0001_0000_0000: 0x0000_0001_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0102_0000_0000, 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0100_0000_0000: 0x0000_0102_0000_0000, 0x0000_0102_0000_0000: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0204_0000_0000, 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0200_0000_0000: 0x0000_0204_0000_0000, 0x0000_0204_0000_0000: 0x0000_0004_0000_0000, + 0x0001_0000_0000_0000: 0x0001_0204_0000_0000, 0x0001_0004_0000_0000: 0x0000_0004_0000_0000, 0x0001_0200_0000_0000: 0x0000_0204_0000_0000, 0x0001_0204_0000_0000: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0102_0408_0000_0000, 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0400_0000_0000: 0x0000_0408_0000_0000, 0x0000_0408_0000_0000: 0x0000_0008_0000_0000, + 0x0002_0000_0000_0000: 0x0002_0408_0000_0000, 0x0002_0008_0000_0000: 0x0000_0008_0000_0000, 0x0002_0400_0000_0000: 0x0000_0408_0000_0000, 0x0002_0408_0000_0000: 0x0000_0008_0000_0000, + 0x0100_0000_0000_0000: 0x0102_0408_0000_0000, 0x0100_0008_0000_0000: 0x0000_0008_0000_0000, 0x0100_0400_0000_0000: 0x0000_0408_0000_0000, 0x0100_0408_0000_0000: 0x0000_0008_0000_0000, + 0x0102_0000_0000_0000: 0x0002_0408_0000_0000, 0x0102_0008_0000_0000: 0x0000_0008_0000_0000, 0x0102_0400_0000_0000: 0x0000_0408_0000_0000, 0x0102_0408_0000_0000: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0204_0810_0000_0000, 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_0800_0000_0000: 0x0000_0810_0000_0000, 0x0000_0810_0000_0000: 0x0000_0010_0000_0000, + 0x0004_0000_0000_0000: 0x0004_0810_0000_0000, 0x0004_0010_0000_0000: 0x0000_0010_0000_0000, 0x0004_0800_0000_0000: 0x0000_0810_0000_0000, 0x0004_0810_0000_0000: 0x0000_0010_0000_0000, + 0x0200_0000_0000_0000: 0x0204_0810_0000_0000, 0x0200_0010_0000_0000: 0x0000_0010_0000_0000, 0x0200_0800_0000_0000: 0x0000_0810_0000_0000, 0x0200_0810_0000_0000: 0x0000_0010_0000_0000, + 0x0204_0000_0000_0000: 0x0004_0810_0000_0000, 0x0204_0010_0000_0000: 0x0000_0010_0000_0000, 0x0204_0800_0000_0000: 0x0000_0810_0000_0000, 0x0204_0810_0000_0000: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0408_1020_0000_0000, 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_1000_0000_0000: 0x0000_1020_0000_0000, 0x0000_1020_0000_0000: 0x0000_0020_0000_0000, + 0x0008_0000_0000_0000: 0x0008_1020_0000_0000, 0x0008_0020_0000_0000: 0x0000_0020_0000_0000, 0x0008_1000_0000_0000: 0x0000_1020_0000_0000, 0x0008_1020_0000_0000: 0x0000_0020_0000_0000, + 0x0400_0000_0000_0000: 0x0408_1020_0000_0000, 0x0400_0020_0000_0000: 0x0000_0020_0000_0000, 0x0400_1000_0000_0000: 0x0000_1020_0000_0000, 0x0400_1020_0000_0000: 0x0000_0020_0000_0000, + 0x0408_0000_0000_0000: 0x0008_1020_0000_0000, 0x0408_0020_0000_0000: 0x0000_0020_0000_0000, 0x0408_1000_0000_0000: 0x0000_1020_0000_0000, 0x0408_1020_0000_0000: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0810_2040_0000_0000, 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_2000_0000_0000: 0x0000_2040_0000_0000, 0x0000_2040_0000_0000: 0x0000_0040_0000_0000, + 0x0010_0000_0000_0000: 0x0010_2040_0000_0000, 0x0010_0040_0000_0000: 0x0000_0040_0000_0000, 0x0010_2000_0000_0000: 0x0000_2040_0000_0000, 0x0010_2040_0000_0000: 0x0000_0040_0000_0000, + 0x0800_0000_0000_0000: 0x0810_2040_0000_0000, 0x0800_0040_0000_0000: 0x0000_0040_0000_0000, 0x0800_2000_0000_0000: 0x0000_2040_0000_0000, 0x0800_2040_0000_0000: 0x0000_0040_0000_0000, + 0x0810_0000_0000_0000: 0x0010_2040_0000_0000, 0x0810_0040_0000_0000: 0x0000_0040_0000_0000, 0x0810_2000_0000_0000: 0x0000_2040_0000_0000, 0x0810_2040_0000_0000: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0100_0000_0000, 0x0000_0100_0000_0000: 0x0000_0100_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0200_0000_0000, 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0001_0000_0000_0000: 0x0001_0200_0000_0000, 0x0001_0200_0000_0000: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0102_0400_0000_0000, 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0002_0000_0000_0000: 0x0002_0400_0000_0000, 0x0002_0400_0000_0000: 0x0000_0400_0000_0000, + 0x0100_0000_0000_0000: 0x0102_0400_0000_0000, 0x0100_0400_0000_0000: 0x0000_0400_0000_0000, 0x0102_0000_0000_0000: 0x0002_0400_0000_0000, 0x0102_0400_0000_0000: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0204_0800_0000_0000, 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0004_0000_0000_0000: 0x0004_0800_0000_0000, 0x0004_0800_0000_0000: 0x0000_0800_0000_0000, + 0x0200_0000_0000_0000: 0x0204_0800_0000_0000, 0x0200_0800_0000_0000: 0x0000_0800_0000_0000, 0x0204_0000_0000_0000: 0x0004_0800_0000_0000, 0x0204_0800_0000_0000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0408_1000_0000_0000, 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0008_0000_0000_0000: 0x0008_1000_0000_0000, 0x0008_1000_0000_0000: 0x0000_1000_0000_0000, + 0x0400_0000_0000_0000: 0x0408_1000_0000_0000, 0x0400_1000_0000_0000: 0x0000_1000_0000_0000, 0x0408_0000_0000_0000: 0x0008_1000_0000_0000, 0x0408_1000_0000_0000: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0810_2000_0000_0000, 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0010_0000_0000_0000: 0x0010_2000_0000_0000, 0x0010_2000_0000_0000: 0x0000_2000_0000_0000, + 0x0800_0000_0000_0000: 0x0810_2000_0000_0000, 0x0800_2000_0000_0000: 0x0000_2000_0000_0000, 0x0810_0000_0000_0000: 0x0010_2000_0000_0000, 0x0810_2000_0000_0000: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1020_4000_0000_0000, 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0020_0000_0000_0000: 0x0020_4000_0000_0000, 0x0020_4000_0000_0000: 0x0000_4000_0000_0000, + 0x1000_0000_0000_0000: 0x1020_4000_0000_0000, 0x1000_4000_0000_0000: 0x0000_4000_0000_0000, 0x1020_0000_0000_0000: 0x0020_4000_0000_0000, 0x1020_4000_0000_0000: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0000_0000_0000, 0x0001_0000_0000_0000: 0x0001_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0102_0000_0000_0000, 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0100_0000_0000_0000: 0x0102_0000_0000_0000, 0x0102_0000_0000_0000: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0204_0000_0000_0000, 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0200_0000_0000_0000: 0x0204_0000_0000_0000, 0x0204_0000_0000_0000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0408_0000_0000_0000, 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0400_0000_0000_0000: 0x0408_0000_0000_0000, 0x0408_0000_0000_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0810_0000_0000_0000, 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x0800_0000_0000_0000: 0x0810_0000_0000_0000, 0x0810_0000_0000_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1020_0000_0000_0000, 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x1000_0000_0000_0000: 0x1020_0000_0000_0000, 0x1020_0000_0000_0000: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2040_0000_0000_0000, 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x2000_0000_0000_0000: 0x2040_0000_0000_0000, 0x2040_0000_0000_0000: 0x0040_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0100_0000_0000_0000, 0x0100_0000_0000_0000: 0x0100_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0200_0000_0000_0000, 0x0200_0000_0000_0000: 0x0200_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0400_0000_0000_0000, 0x0400_0000_0000_0000: 0x0400_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0800_0000_0000_0000, 0x0800_0000_0000_0000: 0x0800_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x1000_0000_0000_0000, 0x1000_0000_0000_0000: 0x1000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x2000_0000_0000_0000, 0x2000_0000_0000_0000: 0x2000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x4000_0000_0000_0000, 0x4000_0000_0000_0000: 0x4000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, +) +RD_MASK = ( + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0001, 0x0000_0000_0000_0001: 0x0000_0000_0000_0001, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0002, 0x0000_0000_0000_0002: 0x0000_0000_0000_0002, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0004, 0x0000_0000_0000_0004: 0x0000_0000_0000_0004, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0008, 0x0000_0000_0000_0008: 0x0000_0000_0000_0008, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0010, 0x0000_0000_0000_0010: 0x0000_0000_0000_0010, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0020, 0x0000_0000_0000_0020: 0x0000_0000_0000_0020, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0040, 0x0000_0000_0000_0040: 0x0000_0000_0000_0040, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0100, 0x0000_0000_0000_0100: 0x0000_0000_0000_0100, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0201, 0x0000_0000_0000_0001: 0x0000_0000_0000_0201, 0x0000_0000_0000_0200: 0x0000_0000_0000_0200, 0x0000_0000_0000_0201: 0x0000_0000_0000_0200, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0402, 0x0000_0000_0000_0002: 0x0000_0000_0000_0402, 0x0000_0000_0000_0400: 0x0000_0000_0000_0400, 0x0000_0000_0000_0402: 0x0000_0000_0000_0400, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0804, 0x0000_0000_0000_0004: 0x0000_0000_0000_0804, 0x0000_0000_0000_0800: 0x0000_0000_0000_0800, 0x0000_0000_0000_0804: 0x0000_0000_0000_0800, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_1008, 0x0000_0000_0000_0008: 0x0000_0000_0000_1008, 0x0000_0000_0000_1000: 0x0000_0000_0000_1000, 0x0000_0000_0000_1008: 0x0000_0000_0000_1000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_2010, 0x0000_0000_0000_0010: 0x0000_0000_0000_2010, 0x0000_0000_0000_2000: 0x0000_0000_0000_2000, 0x0000_0000_0000_2010: 0x0000_0000_0000_2000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_4020, 0x0000_0000_0000_0020: 0x0000_0000_0000_4020, 0x0000_0000_0000_4000: 0x0000_0000_0000_4000, 0x0000_0000_0000_4020: 0x0000_0000_0000_4000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0001_0000, 0x0000_0000_0001_0000: 0x0000_0000_0001_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0002_0100, 0x0000_0000_0000_0100: 0x0000_0000_0002_0100, 0x0000_0000_0002_0000: 0x0000_0000_0002_0000, 0x0000_0000_0002_0100: 0x0000_0000_0002_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0004_0201, 0x0000_0000_0000_0001: 0x0000_0000_0004_0201, 0x0000_0000_0000_0200: 0x0000_0000_0004_0200, 0x0000_0000_0000_0201: 0x0000_0000_0004_0200, + 0x0000_0000_0004_0000: 0x0000_0000_0004_0000, 0x0000_0000_0004_0001: 0x0000_0000_0004_0000, 0x0000_0000_0004_0200: 0x0000_0000_0004_0000, 0x0000_0000_0004_0201: 0x0000_0000_0004_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0008_0402, 0x0000_0000_0000_0002: 0x0000_0000_0008_0402, 0x0000_0000_0000_0400: 0x0000_0000_0008_0400, 0x0000_0000_0000_0402: 0x0000_0000_0008_0400, + 0x0000_0000_0008_0000: 0x0000_0000_0008_0000, 0x0000_0000_0008_0002: 0x0000_0000_0008_0000, 0x0000_0000_0008_0400: 0x0000_0000_0008_0000, 0x0000_0000_0008_0402: 0x0000_0000_0008_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0010_0804, 0x0000_0000_0000_0004: 0x0000_0000_0010_0804, 0x0000_0000_0000_0800: 0x0000_0000_0010_0800, 0x0000_0000_0000_0804: 0x0000_0000_0010_0800, + 0x0000_0000_0010_0000: 0x0000_0000_0010_0000, 0x0000_0000_0010_0004: 0x0000_0000_0010_0000, 0x0000_0000_0010_0800: 0x0000_0000_0010_0000, 0x0000_0000_0010_0804: 0x0000_0000_0010_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0020_1008, 0x0000_0000_0000_0008: 0x0000_0000_0020_1008, 0x0000_0000_0000_1000: 0x0000_0000_0020_1000, 0x0000_0000_0000_1008: 0x0000_0000_0020_1000, + 0x0000_0000_0020_0000: 0x0000_0000_0020_0000, 0x0000_0000_0020_0008: 0x0000_0000_0020_0000, 0x0000_0000_0020_1000: 0x0000_0000_0020_0000, 0x0000_0000_0020_1008: 0x0000_0000_0020_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0040_2010, 0x0000_0000_0000_0010: 0x0000_0000_0040_2010, 0x0000_0000_0000_2000: 0x0000_0000_0040_2000, 0x0000_0000_0000_2010: 0x0000_0000_0040_2000, + 0x0000_0000_0040_0000: 0x0000_0000_0040_0000, 0x0000_0000_0040_0010: 0x0000_0000_0040_0000, 0x0000_0000_0040_2000: 0x0000_0000_0040_0000, 0x0000_0000_0040_2010: 0x0000_0000_0040_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0100_0000, 0x0000_0000_0100_0000: 0x0000_0000_0100_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0201_0000, 0x0000_0000_0001_0000: 0x0000_0000_0201_0000, 0x0000_0000_0200_0000: 0x0000_0000_0200_0000, 0x0000_0000_0201_0000: 0x0000_0000_0200_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0402_0100, 0x0000_0000_0000_0100: 0x0000_0000_0402_0100, 0x0000_0000_0002_0000: 0x0000_0000_0402_0000, 0x0000_0000_0002_0100: 0x0000_0000_0402_0000, + 0x0000_0000_0400_0000: 0x0000_0000_0400_0000, 0x0000_0000_0400_0100: 0x0000_0000_0400_0000, 0x0000_0000_0402_0000: 0x0000_0000_0400_0000, 0x0000_0000_0402_0100: 0x0000_0000_0400_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0804_0201, 0x0000_0000_0000_0001: 0x0000_0000_0804_0201, 0x0000_0000_0000_0200: 0x0000_0000_0804_0200, 0x0000_0000_0000_0201: 0x0000_0000_0804_0200, + 0x0000_0000_0004_0000: 0x0000_0000_0804_0000, 0x0000_0000_0004_0001: 0x0000_0000_0804_0000, 0x0000_0000_0004_0200: 0x0000_0000_0804_0000, 0x0000_0000_0004_0201: 0x0000_0000_0804_0000, + 0x0000_0000_0800_0000: 0x0000_0000_0800_0000, 0x0000_0000_0800_0001: 0x0000_0000_0800_0000, 0x0000_0000_0800_0200: 0x0000_0000_0800_0000, 0x0000_0000_0800_0201: 0x0000_0000_0800_0000, + 0x0000_0000_0804_0000: 0x0000_0000_0800_0000, 0x0000_0000_0804_0001: 0x0000_0000_0800_0000, 0x0000_0000_0804_0200: 0x0000_0000_0800_0000, 0x0000_0000_0804_0201: 0x0000_0000_0800_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_1008_0402, 0x0000_0000_0000_0002: 0x0000_0000_1008_0402, 0x0000_0000_0000_0400: 0x0000_0000_1008_0400, 0x0000_0000_0000_0402: 0x0000_0000_1008_0400, + 0x0000_0000_0008_0000: 0x0000_0000_1008_0000, 0x0000_0000_0008_0002: 0x0000_0000_1008_0000, 0x0000_0000_0008_0400: 0x0000_0000_1008_0000, 0x0000_0000_0008_0402: 0x0000_0000_1008_0000, + 0x0000_0000_1000_0000: 0x0000_0000_1000_0000, 0x0000_0000_1000_0002: 0x0000_0000_1000_0000, 0x0000_0000_1000_0400: 0x0000_0000_1000_0000, 0x0000_0000_1000_0402: 0x0000_0000_1000_0000, + 0x0000_0000_1008_0000: 0x0000_0000_1000_0000, 0x0000_0000_1008_0002: 0x0000_0000_1000_0000, 0x0000_0000_1008_0400: 0x0000_0000_1000_0000, 0x0000_0000_1008_0402: 0x0000_0000_1000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_2010_0804, 0x0000_0000_0000_0004: 0x0000_0000_2010_0804, 0x0000_0000_0000_0800: 0x0000_0000_2010_0800, 0x0000_0000_0000_0804: 0x0000_0000_2010_0800, + 0x0000_0000_0010_0000: 0x0000_0000_2010_0000, 0x0000_0000_0010_0004: 0x0000_0000_2010_0000, 0x0000_0000_0010_0800: 0x0000_0000_2010_0000, 0x0000_0000_0010_0804: 0x0000_0000_2010_0000, + 0x0000_0000_2000_0000: 0x0000_0000_2000_0000, 0x0000_0000_2000_0004: 0x0000_0000_2000_0000, 0x0000_0000_2000_0800: 0x0000_0000_2000_0000, 0x0000_0000_2000_0804: 0x0000_0000_2000_0000, + 0x0000_0000_2010_0000: 0x0000_0000_2000_0000, 0x0000_0000_2010_0004: 0x0000_0000_2000_0000, 0x0000_0000_2010_0800: 0x0000_0000_2000_0000, 0x0000_0000_2010_0804: 0x0000_0000_2000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_4020_1008, 0x0000_0000_0000_0008: 0x0000_0000_4020_1008, 0x0000_0000_0000_1000: 0x0000_0000_4020_1000, 0x0000_0000_0000_1008: 0x0000_0000_4020_1000, + 0x0000_0000_0020_0000: 0x0000_0000_4020_0000, 0x0000_0000_0020_0008: 0x0000_0000_4020_0000, 0x0000_0000_0020_1000: 0x0000_0000_4020_0000, 0x0000_0000_0020_1008: 0x0000_0000_4020_0000, + 0x0000_0000_4000_0000: 0x0000_0000_4000_0000, 0x0000_0000_4000_0008: 0x0000_0000_4000_0000, 0x0000_0000_4000_1000: 0x0000_0000_4000_0000, 0x0000_0000_4000_1008: 0x0000_0000_4000_0000, + 0x0000_0000_4020_0000: 0x0000_0000_4000_0000, 0x0000_0000_4020_0008: 0x0000_0000_4000_0000, 0x0000_0000_4020_1000: 0x0000_0000_4000_0000, 0x0000_0000_4020_1008: 0x0000_0000_4000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0001_0000_0000, 0x0000_0001_0000_0000: 0x0000_0001_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0002_0100_0000, 0x0000_0000_0100_0000: 0x0000_0002_0100_0000, 0x0000_0002_0000_0000: 0x0000_0002_0000_0000, 0x0000_0002_0100_0000: 0x0000_0002_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0004_0201_0000, 0x0000_0000_0001_0000: 0x0000_0004_0201_0000, 0x0000_0000_0200_0000: 0x0000_0004_0200_0000, 0x0000_0000_0201_0000: 0x0000_0004_0200_0000, + 0x0000_0004_0000_0000: 0x0000_0004_0000_0000, 0x0000_0004_0001_0000: 0x0000_0004_0000_0000, 0x0000_0004_0200_0000: 0x0000_0004_0000_0000, 0x0000_0004_0201_0000: 0x0000_0004_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0008_0402_0100, 0x0000_0000_0000_0100: 0x0000_0008_0402_0100, 0x0000_0000_0002_0000: 0x0000_0008_0402_0000, 0x0000_0000_0002_0100: 0x0000_0008_0402_0000, + 0x0000_0000_0400_0000: 0x0000_0008_0400_0000, 0x0000_0000_0400_0100: 0x0000_0008_0400_0000, 0x0000_0000_0402_0000: 0x0000_0008_0400_0000, 0x0000_0000_0402_0100: 0x0000_0008_0400_0000, + 0x0000_0008_0000_0000: 0x0000_0008_0000_0000, 0x0000_0008_0000_0100: 0x0000_0008_0000_0000, 0x0000_0008_0002_0000: 0x0000_0008_0000_0000, 0x0000_0008_0002_0100: 0x0000_0008_0000_0000, + 0x0000_0008_0400_0000: 0x0000_0008_0000_0000, 0x0000_0008_0400_0100: 0x0000_0008_0000_0000, 0x0000_0008_0402_0000: 0x0000_0008_0000_0000, 0x0000_0008_0402_0100: 0x0000_0008_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0010_0804_0201, 0x0000_0000_0000_0001: 0x0000_0010_0804_0201, 0x0000_0000_0000_0200: 0x0000_0010_0804_0200, 0x0000_0000_0000_0201: 0x0000_0010_0804_0200, + 0x0000_0000_0004_0000: 0x0000_0010_0804_0000, 0x0000_0000_0004_0001: 0x0000_0010_0804_0000, 0x0000_0000_0004_0200: 0x0000_0010_0804_0000, 0x0000_0000_0004_0201: 0x0000_0010_0804_0000, + 0x0000_0000_0800_0000: 0x0000_0010_0800_0000, 0x0000_0000_0800_0001: 0x0000_0010_0800_0000, 0x0000_0000_0800_0200: 0x0000_0010_0800_0000, 0x0000_0000_0800_0201: 0x0000_0010_0800_0000, + 0x0000_0000_0804_0000: 0x0000_0010_0800_0000, 0x0000_0000_0804_0001: 0x0000_0010_0800_0000, 0x0000_0000_0804_0200: 0x0000_0010_0800_0000, 0x0000_0000_0804_0201: 0x0000_0010_0800_0000, + 0x0000_0010_0000_0000: 0x0000_0010_0000_0000, 0x0000_0010_0000_0001: 0x0000_0010_0000_0000, 0x0000_0010_0000_0200: 0x0000_0010_0000_0000, 0x0000_0010_0000_0201: 0x0000_0010_0000_0000, + 0x0000_0010_0004_0000: 0x0000_0010_0000_0000, 0x0000_0010_0004_0001: 0x0000_0010_0000_0000, 0x0000_0010_0004_0200: 0x0000_0010_0000_0000, 0x0000_0010_0004_0201: 0x0000_0010_0000_0000, + 0x0000_0010_0800_0000: 0x0000_0010_0000_0000, 0x0000_0010_0800_0001: 0x0000_0010_0000_0000, 0x0000_0010_0800_0200: 0x0000_0010_0000_0000, 0x0000_0010_0800_0201: 0x0000_0010_0000_0000, + 0x0000_0010_0804_0000: 0x0000_0010_0000_0000, 0x0000_0010_0804_0001: 0x0000_0010_0000_0000, 0x0000_0010_0804_0200: 0x0000_0010_0000_0000, 0x0000_0010_0804_0201: 0x0000_0010_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0020_1008_0402, 0x0000_0000_0000_0002: 0x0000_0020_1008_0402, 0x0000_0000_0000_0400: 0x0000_0020_1008_0400, 0x0000_0000_0000_0402: 0x0000_0020_1008_0400, + 0x0000_0000_0008_0000: 0x0000_0020_1008_0000, 0x0000_0000_0008_0002: 0x0000_0020_1008_0000, 0x0000_0000_0008_0400: 0x0000_0020_1008_0000, 0x0000_0000_0008_0402: 0x0000_0020_1008_0000, + 0x0000_0000_1000_0000: 0x0000_0020_1000_0000, 0x0000_0000_1000_0002: 0x0000_0020_1000_0000, 0x0000_0000_1000_0400: 0x0000_0020_1000_0000, 0x0000_0000_1000_0402: 0x0000_0020_1000_0000, + 0x0000_0000_1008_0000: 0x0000_0020_1000_0000, 0x0000_0000_1008_0002: 0x0000_0020_1000_0000, 0x0000_0000_1008_0400: 0x0000_0020_1000_0000, 0x0000_0000_1008_0402: 0x0000_0020_1000_0000, + 0x0000_0020_0000_0000: 0x0000_0020_0000_0000, 0x0000_0020_0000_0002: 0x0000_0020_0000_0000, 0x0000_0020_0000_0400: 0x0000_0020_0000_0000, 0x0000_0020_0000_0402: 0x0000_0020_0000_0000, + 0x0000_0020_0008_0000: 0x0000_0020_0000_0000, 0x0000_0020_0008_0002: 0x0000_0020_0000_0000, 0x0000_0020_0008_0400: 0x0000_0020_0000_0000, 0x0000_0020_0008_0402: 0x0000_0020_0000_0000, + 0x0000_0020_1000_0000: 0x0000_0020_0000_0000, 0x0000_0020_1000_0002: 0x0000_0020_0000_0000, 0x0000_0020_1000_0400: 0x0000_0020_0000_0000, 0x0000_0020_1000_0402: 0x0000_0020_0000_0000, + 0x0000_0020_1008_0000: 0x0000_0020_0000_0000, 0x0000_0020_1008_0002: 0x0000_0020_0000_0000, 0x0000_0020_1008_0400: 0x0000_0020_0000_0000, 0x0000_0020_1008_0402: 0x0000_0020_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0040_2010_0804, 0x0000_0000_0000_0004: 0x0000_0040_2010_0804, 0x0000_0000_0000_0800: 0x0000_0040_2010_0800, 0x0000_0000_0000_0804: 0x0000_0040_2010_0800, + 0x0000_0000_0010_0000: 0x0000_0040_2010_0000, 0x0000_0000_0010_0004: 0x0000_0040_2010_0000, 0x0000_0000_0010_0800: 0x0000_0040_2010_0000, 0x0000_0000_0010_0804: 0x0000_0040_2010_0000, + 0x0000_0000_2000_0000: 0x0000_0040_2000_0000, 0x0000_0000_2000_0004: 0x0000_0040_2000_0000, 0x0000_0000_2000_0800: 0x0000_0040_2000_0000, 0x0000_0000_2000_0804: 0x0000_0040_2000_0000, + 0x0000_0000_2010_0000: 0x0000_0040_2000_0000, 0x0000_0000_2010_0004: 0x0000_0040_2000_0000, 0x0000_0000_2010_0800: 0x0000_0040_2000_0000, 0x0000_0000_2010_0804: 0x0000_0040_2000_0000, + 0x0000_0040_0000_0000: 0x0000_0040_0000_0000, 0x0000_0040_0000_0004: 0x0000_0040_0000_0000, 0x0000_0040_0000_0800: 0x0000_0040_0000_0000, 0x0000_0040_0000_0804: 0x0000_0040_0000_0000, + 0x0000_0040_0010_0000: 0x0000_0040_0000_0000, 0x0000_0040_0010_0004: 0x0000_0040_0000_0000, 0x0000_0040_0010_0800: 0x0000_0040_0000_0000, 0x0000_0040_0010_0804: 0x0000_0040_0000_0000, + 0x0000_0040_2000_0000: 0x0000_0040_0000_0000, 0x0000_0040_2000_0004: 0x0000_0040_0000_0000, 0x0000_0040_2000_0800: 0x0000_0040_0000_0000, 0x0000_0040_2000_0804: 0x0000_0040_0000_0000, + 0x0000_0040_2010_0000: 0x0000_0040_0000_0000, 0x0000_0040_2010_0004: 0x0000_0040_0000_0000, 0x0000_0040_2010_0800: 0x0000_0040_0000_0000, 0x0000_0040_2010_0804: 0x0000_0040_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0100_0000_0000, 0x0000_0100_0000_0000: 0x0000_0100_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0201_0000_0000, 0x0000_0001_0000_0000: 0x0000_0201_0000_0000, 0x0000_0200_0000_0000: 0x0000_0200_0000_0000, 0x0000_0201_0000_0000: 0x0000_0200_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0402_0100_0000, 0x0000_0000_0100_0000: 0x0000_0402_0100_0000, 0x0000_0002_0000_0000: 0x0000_0402_0000_0000, 0x0000_0002_0100_0000: 0x0000_0402_0000_0000, + 0x0000_0400_0000_0000: 0x0000_0400_0000_0000, 0x0000_0400_0100_0000: 0x0000_0400_0000_0000, 0x0000_0402_0000_0000: 0x0000_0400_0000_0000, 0x0000_0402_0100_0000: 0x0000_0400_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0804_0201_0000, 0x0000_0000_0001_0000: 0x0000_0804_0201_0000, 0x0000_0000_0200_0000: 0x0000_0804_0200_0000, 0x0000_0000_0201_0000: 0x0000_0804_0200_0000, + 0x0000_0004_0000_0000: 0x0000_0804_0000_0000, 0x0000_0004_0001_0000: 0x0000_0804_0000_0000, 0x0000_0004_0200_0000: 0x0000_0804_0000_0000, 0x0000_0004_0201_0000: 0x0000_0804_0000_0000, + 0x0000_0800_0000_0000: 0x0000_0800_0000_0000, 0x0000_0800_0001_0000: 0x0000_0800_0000_0000, 0x0000_0800_0200_0000: 0x0000_0800_0000_0000, 0x0000_0800_0201_0000: 0x0000_0800_0000_0000, + 0x0000_0804_0000_0000: 0x0000_0800_0000_0000, 0x0000_0804_0001_0000: 0x0000_0800_0000_0000, 0x0000_0804_0200_0000: 0x0000_0800_0000_0000, 0x0000_0804_0201_0000: 0x0000_0800_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_1008_0402_0100, 0x0000_0000_0000_0100: 0x0000_1008_0402_0100, 0x0000_0000_0002_0000: 0x0000_1008_0402_0000, 0x0000_0000_0002_0100: 0x0000_1008_0402_0000, + 0x0000_0000_0400_0000: 0x0000_1008_0400_0000, 0x0000_0000_0400_0100: 0x0000_1008_0400_0000, 0x0000_0000_0402_0000: 0x0000_1008_0400_0000, 0x0000_0000_0402_0100: 0x0000_1008_0400_0000, + 0x0000_0008_0000_0000: 0x0000_1008_0000_0000, 0x0000_0008_0000_0100: 0x0000_1008_0000_0000, 0x0000_0008_0002_0000: 0x0000_1008_0000_0000, 0x0000_0008_0002_0100: 0x0000_1008_0000_0000, + 0x0000_0008_0400_0000: 0x0000_1008_0000_0000, 0x0000_0008_0400_0100: 0x0000_1008_0000_0000, 0x0000_0008_0402_0000: 0x0000_1008_0000_0000, 0x0000_0008_0402_0100: 0x0000_1008_0000_0000, + 0x0000_1000_0000_0000: 0x0000_1000_0000_0000, 0x0000_1000_0000_0100: 0x0000_1000_0000_0000, 0x0000_1000_0002_0000: 0x0000_1000_0000_0000, 0x0000_1000_0002_0100: 0x0000_1000_0000_0000, + 0x0000_1000_0400_0000: 0x0000_1000_0000_0000, 0x0000_1000_0400_0100: 0x0000_1000_0000_0000, 0x0000_1000_0402_0000: 0x0000_1000_0000_0000, 0x0000_1000_0402_0100: 0x0000_1000_0000_0000, + 0x0000_1008_0000_0000: 0x0000_1000_0000_0000, 0x0000_1008_0000_0100: 0x0000_1000_0000_0000, 0x0000_1008_0002_0000: 0x0000_1000_0000_0000, 0x0000_1008_0002_0100: 0x0000_1000_0000_0000, + 0x0000_1008_0400_0000: 0x0000_1000_0000_0000, 0x0000_1008_0400_0100: 0x0000_1000_0000_0000, 0x0000_1008_0402_0000: 0x0000_1000_0000_0000, 0x0000_1008_0402_0100: 0x0000_1000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_2010_0804_0201, 0x0000_0000_0000_0001: 0x0000_2010_0804_0201, 0x0000_0000_0000_0200: 0x0000_2010_0804_0200, 0x0000_0000_0000_0201: 0x0000_2010_0804_0200, + 0x0000_0000_0004_0000: 0x0000_2010_0804_0000, 0x0000_0000_0004_0001: 0x0000_2010_0804_0000, 0x0000_0000_0004_0200: 0x0000_2010_0804_0000, 0x0000_0000_0004_0201: 0x0000_2010_0804_0000, + 0x0000_0000_0800_0000: 0x0000_2010_0800_0000, 0x0000_0000_0800_0001: 0x0000_2010_0800_0000, 0x0000_0000_0800_0200: 0x0000_2010_0800_0000, 0x0000_0000_0800_0201: 0x0000_2010_0800_0000, + 0x0000_0000_0804_0000: 0x0000_2010_0800_0000, 0x0000_0000_0804_0001: 0x0000_2010_0800_0000, 0x0000_0000_0804_0200: 0x0000_2010_0800_0000, 0x0000_0000_0804_0201: 0x0000_2010_0800_0000, + 0x0000_0010_0000_0000: 0x0000_2010_0000_0000, 0x0000_0010_0000_0001: 0x0000_2010_0000_0000, 0x0000_0010_0000_0200: 0x0000_2010_0000_0000, 0x0000_0010_0000_0201: 0x0000_2010_0000_0000, + 0x0000_0010_0004_0000: 0x0000_2010_0000_0000, 0x0000_0010_0004_0001: 0x0000_2010_0000_0000, 0x0000_0010_0004_0200: 0x0000_2010_0000_0000, 0x0000_0010_0004_0201: 0x0000_2010_0000_0000, + 0x0000_0010_0800_0000: 0x0000_2010_0000_0000, 0x0000_0010_0800_0001: 0x0000_2010_0000_0000, 0x0000_0010_0800_0200: 0x0000_2010_0000_0000, 0x0000_0010_0800_0201: 0x0000_2010_0000_0000, + 0x0000_0010_0804_0000: 0x0000_2010_0000_0000, 0x0000_0010_0804_0001: 0x0000_2010_0000_0000, 0x0000_0010_0804_0200: 0x0000_2010_0000_0000, 0x0000_0010_0804_0201: 0x0000_2010_0000_0000, + 0x0000_2000_0000_0000: 0x0000_2000_0000_0000, 0x0000_2000_0000_0001: 0x0000_2000_0000_0000, 0x0000_2000_0000_0200: 0x0000_2000_0000_0000, 0x0000_2000_0000_0201: 0x0000_2000_0000_0000, + 0x0000_2000_0004_0000: 0x0000_2000_0000_0000, 0x0000_2000_0004_0001: 0x0000_2000_0000_0000, 0x0000_2000_0004_0200: 0x0000_2000_0000_0000, 0x0000_2000_0004_0201: 0x0000_2000_0000_0000, + 0x0000_2000_0800_0000: 0x0000_2000_0000_0000, 0x0000_2000_0800_0001: 0x0000_2000_0000_0000, 0x0000_2000_0800_0200: 0x0000_2000_0000_0000, 0x0000_2000_0800_0201: 0x0000_2000_0000_0000, + 0x0000_2000_0804_0000: 0x0000_2000_0000_0000, 0x0000_2000_0804_0001: 0x0000_2000_0000_0000, 0x0000_2000_0804_0200: 0x0000_2000_0000_0000, 0x0000_2000_0804_0201: 0x0000_2000_0000_0000, + 0x0000_2010_0000_0000: 0x0000_2000_0000_0000, 0x0000_2010_0000_0001: 0x0000_2000_0000_0000, 0x0000_2010_0000_0200: 0x0000_2000_0000_0000, 0x0000_2010_0000_0201: 0x0000_2000_0000_0000, + 0x0000_2010_0004_0000: 0x0000_2000_0000_0000, 0x0000_2010_0004_0001: 0x0000_2000_0000_0000, 0x0000_2010_0004_0200: 0x0000_2000_0000_0000, 0x0000_2010_0004_0201: 0x0000_2000_0000_0000, + 0x0000_2010_0800_0000: 0x0000_2000_0000_0000, 0x0000_2010_0800_0001: 0x0000_2000_0000_0000, 0x0000_2010_0800_0200: 0x0000_2000_0000_0000, 0x0000_2010_0800_0201: 0x0000_2000_0000_0000, + 0x0000_2010_0804_0000: 0x0000_2000_0000_0000, 0x0000_2010_0804_0001: 0x0000_2000_0000_0000, 0x0000_2010_0804_0200: 0x0000_2000_0000_0000, 0x0000_2010_0804_0201: 0x0000_2000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_4020_1008_0402, 0x0000_0000_0000_0002: 0x0000_4020_1008_0402, 0x0000_0000_0000_0400: 0x0000_4020_1008_0400, 0x0000_0000_0000_0402: 0x0000_4020_1008_0400, + 0x0000_0000_0008_0000: 0x0000_4020_1008_0000, 0x0000_0000_0008_0002: 0x0000_4020_1008_0000, 0x0000_0000_0008_0400: 0x0000_4020_1008_0000, 0x0000_0000_0008_0402: 0x0000_4020_1008_0000, + 0x0000_0000_1000_0000: 0x0000_4020_1000_0000, 0x0000_0000_1000_0002: 0x0000_4020_1000_0000, 0x0000_0000_1000_0400: 0x0000_4020_1000_0000, 0x0000_0000_1000_0402: 0x0000_4020_1000_0000, + 0x0000_0000_1008_0000: 0x0000_4020_1000_0000, 0x0000_0000_1008_0002: 0x0000_4020_1000_0000, 0x0000_0000_1008_0400: 0x0000_4020_1000_0000, 0x0000_0000_1008_0402: 0x0000_4020_1000_0000, + 0x0000_0020_0000_0000: 0x0000_4020_0000_0000, 0x0000_0020_0000_0002: 0x0000_4020_0000_0000, 0x0000_0020_0000_0400: 0x0000_4020_0000_0000, 0x0000_0020_0000_0402: 0x0000_4020_0000_0000, + 0x0000_0020_0008_0000: 0x0000_4020_0000_0000, 0x0000_0020_0008_0002: 0x0000_4020_0000_0000, 0x0000_0020_0008_0400: 0x0000_4020_0000_0000, 0x0000_0020_0008_0402: 0x0000_4020_0000_0000, + 0x0000_0020_1000_0000: 0x0000_4020_0000_0000, 0x0000_0020_1000_0002: 0x0000_4020_0000_0000, 0x0000_0020_1000_0400: 0x0000_4020_0000_0000, 0x0000_0020_1000_0402: 0x0000_4020_0000_0000, + 0x0000_0020_1008_0000: 0x0000_4020_0000_0000, 0x0000_0020_1008_0002: 0x0000_4020_0000_0000, 0x0000_0020_1008_0400: 0x0000_4020_0000_0000, 0x0000_0020_1008_0402: 0x0000_4020_0000_0000, + 0x0000_4000_0000_0000: 0x0000_4000_0000_0000, 0x0000_4000_0000_0002: 0x0000_4000_0000_0000, 0x0000_4000_0000_0400: 0x0000_4000_0000_0000, 0x0000_4000_0000_0402: 0x0000_4000_0000_0000, + 0x0000_4000_0008_0000: 0x0000_4000_0000_0000, 0x0000_4000_0008_0002: 0x0000_4000_0000_0000, 0x0000_4000_0008_0400: 0x0000_4000_0000_0000, 0x0000_4000_0008_0402: 0x0000_4000_0000_0000, + 0x0000_4000_1000_0000: 0x0000_4000_0000_0000, 0x0000_4000_1000_0002: 0x0000_4000_0000_0000, 0x0000_4000_1000_0400: 0x0000_4000_0000_0000, 0x0000_4000_1000_0402: 0x0000_4000_0000_0000, + 0x0000_4000_1008_0000: 0x0000_4000_0000_0000, 0x0000_4000_1008_0002: 0x0000_4000_0000_0000, 0x0000_4000_1008_0400: 0x0000_4000_0000_0000, 0x0000_4000_1008_0402: 0x0000_4000_0000_0000, + 0x0000_4020_0000_0000: 0x0000_4000_0000_0000, 0x0000_4020_0000_0002: 0x0000_4000_0000_0000, 0x0000_4020_0000_0400: 0x0000_4000_0000_0000, 0x0000_4020_0000_0402: 0x0000_4000_0000_0000, + 0x0000_4020_0008_0000: 0x0000_4000_0000_0000, 0x0000_4020_0008_0002: 0x0000_4000_0000_0000, 0x0000_4020_0008_0400: 0x0000_4000_0000_0000, 0x0000_4020_0008_0402: 0x0000_4000_0000_0000, + 0x0000_4020_1000_0000: 0x0000_4000_0000_0000, 0x0000_4020_1000_0002: 0x0000_4000_0000_0000, 0x0000_4020_1000_0400: 0x0000_4000_0000_0000, 0x0000_4020_1000_0402: 0x0000_4000_0000_0000, + 0x0000_4020_1008_0000: 0x0000_4000_0000_0000, 0x0000_4020_1008_0002: 0x0000_4000_0000_0000, 0x0000_4020_1008_0400: 0x0000_4000_0000_0000, 0x0000_4020_1008_0402: 0x0000_4000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0000_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0001_0000_0000_0000, 0x0001_0000_0000_0000: 0x0001_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0002_0100_0000_0000, 0x0000_0100_0000_0000: 0x0002_0100_0000_0000, 0x0002_0000_0000_0000: 0x0002_0000_0000_0000, 0x0002_0100_0000_0000: 0x0002_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0004_0201_0000_0000, 0x0000_0001_0000_0000: 0x0004_0201_0000_0000, 0x0000_0200_0000_0000: 0x0004_0200_0000_0000, 0x0000_0201_0000_0000: 0x0004_0200_0000_0000, + 0x0004_0000_0000_0000: 0x0004_0000_0000_0000, 0x0004_0001_0000_0000: 0x0004_0000_0000_0000, 0x0004_0200_0000_0000: 0x0004_0000_0000_0000, 0x0004_0201_0000_0000: 0x0004_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0008_0402_0100_0000, 0x0000_0000_0100_0000: 0x0008_0402_0100_0000, 0x0000_0002_0000_0000: 0x0008_0402_0000_0000, 0x0000_0002_0100_0000: 0x0008_0402_0000_0000, + 0x0000_0400_0000_0000: 0x0008_0400_0000_0000, 0x0000_0400_0100_0000: 0x0008_0400_0000_0000, 0x0000_0402_0000_0000: 0x0008_0400_0000_0000, 0x0000_0402_0100_0000: 0x0008_0400_0000_0000, + 0x0008_0000_0000_0000: 0x0008_0000_0000_0000, 0x0008_0000_0100_0000: 0x0008_0000_0000_0000, 0x0008_0002_0000_0000: 0x0008_0000_0000_0000, 0x0008_0002_0100_0000: 0x0008_0000_0000_0000, + 0x0008_0400_0000_0000: 0x0008_0000_0000_0000, 0x0008_0400_0100_0000: 0x0008_0000_0000_0000, 0x0008_0402_0000_0000: 0x0008_0000_0000_0000, 0x0008_0402_0100_0000: 0x0008_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0010_0804_0201_0000, 0x0000_0000_0001_0000: 0x0010_0804_0201_0000, 0x0000_0000_0200_0000: 0x0010_0804_0200_0000, 0x0000_0000_0201_0000: 0x0010_0804_0200_0000, + 0x0000_0004_0000_0000: 0x0010_0804_0000_0000, 0x0000_0004_0001_0000: 0x0010_0804_0000_0000, 0x0000_0004_0200_0000: 0x0010_0804_0000_0000, 0x0000_0004_0201_0000: 0x0010_0804_0000_0000, + 0x0000_0800_0000_0000: 0x0010_0800_0000_0000, 0x0000_0800_0001_0000: 0x0010_0800_0000_0000, 0x0000_0800_0200_0000: 0x0010_0800_0000_0000, 0x0000_0800_0201_0000: 0x0010_0800_0000_0000, + 0x0000_0804_0000_0000: 0x0010_0800_0000_0000, 0x0000_0804_0001_0000: 0x0010_0800_0000_0000, 0x0000_0804_0200_0000: 0x0010_0800_0000_0000, 0x0000_0804_0201_0000: 0x0010_0800_0000_0000, + 0x0010_0000_0000_0000: 0x0010_0000_0000_0000, 0x0010_0000_0001_0000: 0x0010_0000_0000_0000, 0x0010_0000_0200_0000: 0x0010_0000_0000_0000, 0x0010_0000_0201_0000: 0x0010_0000_0000_0000, + 0x0010_0004_0000_0000: 0x0010_0000_0000_0000, 0x0010_0004_0001_0000: 0x0010_0000_0000_0000, 0x0010_0004_0200_0000: 0x0010_0000_0000_0000, 0x0010_0004_0201_0000: 0x0010_0000_0000_0000, + 0x0010_0800_0000_0000: 0x0010_0000_0000_0000, 0x0010_0800_0001_0000: 0x0010_0000_0000_0000, 0x0010_0800_0200_0000: 0x0010_0000_0000_0000, 0x0010_0800_0201_0000: 0x0010_0000_0000_0000, + 0x0010_0804_0000_0000: 0x0010_0000_0000_0000, 0x0010_0804_0001_0000: 0x0010_0000_0000_0000, 0x0010_0804_0200_0000: 0x0010_0000_0000_0000, 0x0010_0804_0201_0000: 0x0010_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0020_1008_0402_0100, 0x0000_0000_0000_0100: 0x0020_1008_0402_0100, 0x0000_0000_0002_0000: 0x0020_1008_0402_0000, 0x0000_0000_0002_0100: 0x0020_1008_0402_0000, + 0x0000_0000_0400_0000: 0x0020_1008_0400_0000, 0x0000_0000_0400_0100: 0x0020_1008_0400_0000, 0x0000_0000_0402_0000: 0x0020_1008_0400_0000, 0x0000_0000_0402_0100: 0x0020_1008_0400_0000, + 0x0000_0008_0000_0000: 0x0020_1008_0000_0000, 0x0000_0008_0000_0100: 0x0020_1008_0000_0000, 0x0000_0008_0002_0000: 0x0020_1008_0000_0000, 0x0000_0008_0002_0100: 0x0020_1008_0000_0000, + 0x0000_0008_0400_0000: 0x0020_1008_0000_0000, 0x0000_0008_0400_0100: 0x0020_1008_0000_0000, 0x0000_0008_0402_0000: 0x0020_1008_0000_0000, 0x0000_0008_0402_0100: 0x0020_1008_0000_0000, + 0x0000_1000_0000_0000: 0x0020_1000_0000_0000, 0x0000_1000_0000_0100: 0x0020_1000_0000_0000, 0x0000_1000_0002_0000: 0x0020_1000_0000_0000, 0x0000_1000_0002_0100: 0x0020_1000_0000_0000, + 0x0000_1000_0400_0000: 0x0020_1000_0000_0000, 0x0000_1000_0400_0100: 0x0020_1000_0000_0000, 0x0000_1000_0402_0000: 0x0020_1000_0000_0000, 0x0000_1000_0402_0100: 0x0020_1000_0000_0000, + 0x0000_1008_0000_0000: 0x0020_1000_0000_0000, 0x0000_1008_0000_0100: 0x0020_1000_0000_0000, 0x0000_1008_0002_0000: 0x0020_1000_0000_0000, 0x0000_1008_0002_0100: 0x0020_1000_0000_0000, + 0x0000_1008_0400_0000: 0x0020_1000_0000_0000, 0x0000_1008_0400_0100: 0x0020_1000_0000_0000, 0x0000_1008_0402_0000: 0x0020_1000_0000_0000, 0x0000_1008_0402_0100: 0x0020_1000_0000_0000, + 0x0020_0000_0000_0000: 0x0020_0000_0000_0000, 0x0020_0000_0000_0100: 0x0020_0000_0000_0000, 0x0020_0000_0002_0000: 0x0020_0000_0000_0000, 0x0020_0000_0002_0100: 0x0020_0000_0000_0000, + 0x0020_0000_0400_0000: 0x0020_0000_0000_0000, 0x0020_0000_0400_0100: 0x0020_0000_0000_0000, 0x0020_0000_0402_0000: 0x0020_0000_0000_0000, 0x0020_0000_0402_0100: 0x0020_0000_0000_0000, + 0x0020_0008_0000_0000: 0x0020_0000_0000_0000, 0x0020_0008_0000_0100: 0x0020_0000_0000_0000, 0x0020_0008_0002_0000: 0x0020_0000_0000_0000, 0x0020_0008_0002_0100: 0x0020_0000_0000_0000, + 0x0020_0008_0400_0000: 0x0020_0000_0000_0000, 0x0020_0008_0400_0100: 0x0020_0000_0000_0000, 0x0020_0008_0402_0000: 0x0020_0000_0000_0000, 0x0020_0008_0402_0100: 0x0020_0000_0000_0000, + 0x0020_1000_0000_0000: 0x0020_0000_0000_0000, 0x0020_1000_0000_0100: 0x0020_0000_0000_0000, 0x0020_1000_0002_0000: 0x0020_0000_0000_0000, 0x0020_1000_0002_0100: 0x0020_0000_0000_0000, + 0x0020_1000_0400_0000: 0x0020_0000_0000_0000, 0x0020_1000_0400_0100: 0x0020_0000_0000_0000, 0x0020_1000_0402_0000: 0x0020_0000_0000_0000, 0x0020_1000_0402_0100: 0x0020_0000_0000_0000, + 0x0020_1008_0000_0000: 0x0020_0000_0000_0000, 0x0020_1008_0000_0100: 0x0020_0000_0000_0000, 0x0020_1008_0002_0000: 0x0020_0000_0000_0000, 0x0020_1008_0002_0100: 0x0020_0000_0000_0000, + 0x0020_1008_0400_0000: 0x0020_0000_0000_0000, 0x0020_1008_0400_0100: 0x0020_0000_0000_0000, 0x0020_1008_0402_0000: 0x0020_0000_0000_0000, 0x0020_1008_0402_0100: 0x0020_0000_0000_0000, + }, + { + 0x0000_0000_0000_0000: 0x0040_2010_0804_0201, 0x0000_0000_0000_0001: 0x0040_2010_0804_0201, 0x0000_0000_0000_0200: 0x0040_2010_0804_0200, 0x0000_0000_0000_0201: 0x0040_2010_0804_0200, + 0x0000_0000_0004_0000: 0x0040_2010_0804_0000, 0x0000_0000_0004_0001: 0x0040_2010_0804_0000, 0x0000_0000_0004_0200: 0x0040_2010_0804_0000, 0x0000_0000_0004_0201: 0x0040_2010_0804_0000, + 0x0000_0000_0800_0000: 0x0040_2010_0800_0000, 0x0000_0000_0800_0001: 0x0040_2010_0800_0000, 0x0000_0000_0800_0200: 0x0040_2010_0800_0000, 0x0000_0000_0800_0201: 0x0040_2010_0800_0000, + 0x0000_0000_0804_0000: 0x0040_2010_0800_0000, 0x0000_0000_0804_0001: 0x0040_2010_0800_0000, 0x0000_0000_0804_0200: 0x0040_2010_0800_0000, 0x0000_0000_0804_0201: 0x0040_2010_0800_0000, + 0x0000_0010_0000_0000: 0x0040_2010_0000_0000, 0x0000_0010_0000_0001: 0x0040_2010_0000_0000, 0x0000_0010_0000_0200: 0x0040_2010_0000_0000, 0x0000_0010_0000_0201: 0x0040_2010_0000_0000, + 0x0000_0010_0004_0000: 0x0040_2010_0000_0000, 0x0000_0010_0004_0001: 0x0040_2010_0000_0000, 0x0000_0010_0004_0200: 0x0040_2010_0000_0000, 0x0000_0010_0004_0201: 0x0040_2010_0000_0000, + 0x0000_0010_0800_0000: 0x0040_2010_0000_0000, 0x0000_0010_0800_0001: 0x0040_2010_0000_0000, 0x0000_0010_0800_0200: 0x0040_2010_0000_0000, 0x0000_0010_0800_0201: 0x0040_2010_0000_0000, + 0x0000_0010_0804_0000: 0x0040_2010_0000_0000, 0x0000_0010_0804_0001: 0x0040_2010_0000_0000, 0x0000_0010_0804_0200: 0x0040_2010_0000_0000, 0x0000_0010_0804_0201: 0x0040_2010_0000_0000, + 0x0000_2000_0000_0000: 0x0040_2000_0000_0000, 0x0000_2000_0000_0001: 0x0040_2000_0000_0000, 0x0000_2000_0000_0200: 0x0040_2000_0000_0000, 0x0000_2000_0000_0201: 0x0040_2000_0000_0000, + 0x0000_2000_0004_0000: 0x0040_2000_0000_0000, 0x0000_2000_0004_0001: 0x0040_2000_0000_0000, 0x0000_2000_0004_0200: 0x0040_2000_0000_0000, 0x0000_2000_0004_0201: 0x0040_2000_0000_0000, + 0x0000_2000_0800_0000: 0x0040_2000_0000_0000, 0x0000_2000_0800_0001: 0x0040_2000_0000_0000, 0x0000_2000_0800_0200: 0x0040_2000_0000_0000, 0x0000_2000_0800_0201: 0x0040_2000_0000_0000, + 0x0000_2000_0804_0000: 0x0040_2000_0000_0000, 0x0000_2000_0804_0001: 0x0040_2000_0000_0000, 0x0000_2000_0804_0200: 0x0040_2000_0000_0000, 0x0000_2000_0804_0201: 0x0040_2000_0000_0000, + 0x0000_2010_0000_0000: 0x0040_2000_0000_0000, 0x0000_2010_0000_0001: 0x0040_2000_0000_0000, 0x0000_2010_0000_0200: 0x0040_2000_0000_0000, 0x0000_2010_0000_0201: 0x0040_2000_0000_0000, + 0x0000_2010_0004_0000: 0x0040_2000_0000_0000, 0x0000_2010_0004_0001: 0x0040_2000_0000_0000, 0x0000_2010_0004_0200: 0x0040_2000_0000_0000, 0x0000_2010_0004_0201: 0x0040_2000_0000_0000, + 0x0000_2010_0800_0000: 0x0040_2000_0000_0000, 0x0000_2010_0800_0001: 0x0040_2000_0000_0000, 0x0000_2010_0800_0200: 0x0040_2000_0000_0000, 0x0000_2010_0800_0201: 0x0040_2000_0000_0000, + 0x0000_2010_0804_0000: 0x0040_2000_0000_0000, 0x0000_2010_0804_0001: 0x0040_2000_0000_0000, 0x0000_2010_0804_0200: 0x0040_2000_0000_0000, 0x0000_2010_0804_0201: 0x0040_2000_0000_0000, + 0x0040_0000_0000_0000: 0x0040_0000_0000_0000, 0x0040_0000_0000_0001: 0x0040_0000_0000_0000, 0x0040_0000_0000_0200: 0x0040_0000_0000_0000, 0x0040_0000_0000_0201: 0x0040_0000_0000_0000, + 0x0040_0000_0004_0000: 0x0040_0000_0000_0000, 0x0040_0000_0004_0001: 0x0040_0000_0000_0000, 0x0040_0000_0004_0200: 0x0040_0000_0000_0000, 0x0040_0000_0004_0201: 0x0040_0000_0000_0000, + 0x0040_0000_0800_0000: 0x0040_0000_0000_0000, 0x0040_0000_0800_0001: 0x0040_0000_0000_0000, 0x0040_0000_0800_0200: 0x0040_0000_0000_0000, 0x0040_0000_0800_0201: 0x0040_0000_0000_0000, + 0x0040_0000_0804_0000: 0x0040_0000_0000_0000, 0x0040_0000_0804_0001: 0x0040_0000_0000_0000, 0x0040_0000_0804_0200: 0x0040_0000_0000_0000, 0x0040_0000_0804_0201: 0x0040_0000_0000_0000, + 0x0040_0010_0000_0000: 0x0040_0000_0000_0000, 0x0040_0010_0000_0001: 0x0040_0000_0000_0000, 0x0040_0010_0000_0200: 0x0040_0000_0000_0000, 0x0040_0010_0000_0201: 0x0040_0000_0000_0000, + 0x0040_0010_0004_0000: 0x0040_0000_0000_0000, 0x0040_0010_0004_0001: 0x0040_0000_0000_0000, 0x0040_0010_0004_0200: 0x0040_0000_0000_0000, 0x0040_0010_0004_0201: 0x0040_0000_0000_0000, + 0x0040_0010_0800_0000: 0x0040_0000_0000_0000, 0x0040_0010_0800_0001: 0x0040_0000_0000_0000, 0x0040_0010_0800_0200: 0x0040_0000_0000_0000, 0x0040_0010_0800_0201: 0x0040_0000_0000_0000, + 0x0040_0010_0804_0000: 0x0040_0000_0000_0000, 0x0040_0010_0804_0001: 0x0040_0000_0000_0000, 0x0040_0010_0804_0200: 0x0040_0000_0000_0000, 0x0040_0010_0804_0201: 0x0040_0000_0000_0000, + 0x0040_2000_0000_0000: 0x0040_0000_0000_0000, 0x0040_2000_0000_0001: 0x0040_0000_0000_0000, 0x0040_2000_0000_0200: 0x0040_0000_0000_0000, 0x0040_2000_0000_0201: 0x0040_0000_0000_0000, + 0x0040_2000_0004_0000: 0x0040_0000_0000_0000, 0x0040_2000_0004_0001: 0x0040_0000_0000_0000, 0x0040_2000_0004_0200: 0x0040_0000_0000_0000, 0x0040_2000_0004_0201: 0x0040_0000_0000_0000, + 0x0040_2000_0800_0000: 0x0040_0000_0000_0000, 0x0040_2000_0800_0001: 0x0040_0000_0000_0000, 0x0040_2000_0800_0200: 0x0040_0000_0000_0000, 0x0040_2000_0800_0201: 0x0040_0000_0000_0000, + 0x0040_2000_0804_0000: 0x0040_0000_0000_0000, 0x0040_2000_0804_0001: 0x0040_0000_0000_0000, 0x0040_2000_0804_0200: 0x0040_0000_0000_0000, 0x0040_2000_0804_0201: 0x0040_0000_0000_0000, + 0x0040_2010_0000_0000: 0x0040_0000_0000_0000, 0x0040_2010_0000_0001: 0x0040_0000_0000_0000, 0x0040_2010_0000_0200: 0x0040_0000_0000_0000, 0x0040_2010_0000_0201: 0x0040_0000_0000_0000, + 0x0040_2010_0004_0000: 0x0040_0000_0000_0000, 0x0040_2010_0004_0001: 0x0040_0000_0000_0000, 0x0040_2010_0004_0200: 0x0040_0000_0000_0000, 0x0040_2010_0004_0201: 0x0040_0000_0000_0000, + 0x0040_2010_0800_0000: 0x0040_0000_0000_0000, 0x0040_2010_0800_0001: 0x0040_0000_0000_0000, 0x0040_2010_0800_0200: 0x0040_0000_0000_0000, 0x0040_2010_0800_0201: 0x0040_0000_0000_0000, + 0x0040_2010_0804_0000: 0x0040_0000_0000_0000, 0x0040_2010_0804_0001: 0x0040_0000_0000_0000, 0x0040_2010_0804_0200: 0x0040_0000_0000_0000, 0x0040_2010_0804_0201: 0x0040_0000_0000_0000, + }, +) |