/* Generated by Yosys 0.8+314 (git sha1 ef84b434, clang 6.0.0-1ubuntu2 -fPIC -Os) */

(* \nmigen.hierarchy  = "top.black_fill_east" *)
(* generator = "nMigen" *)
module black_fill_east(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [64:0] \$10 ;
  wire [64:0] \$12 ;
  wire [64:0] \$13 ;
  wire [64:0] \$15 ;
  wire [66:0] \$17 ;
  wire [66:0] \$18 ;
  wire [66:0] \$20 ;
  wire [66:0] \$22 ;
  wire [66:0] \$24 ;
  wire [66:0] \$25 ;
  wire [66:0] \$27 ;
  wire [70:0] \$29 ;
  wire [63:0] \$3 ;
  wire [70:0] \$30 ;
  wire [70:0] \$32 ;
  wire [70:0] \$34 ;
  wire [64:0] \$36 ;
  wire [64:0] \$37 ;
  wire [7:0] \$39 ;
  wire [64:0] \$41 ;
  wire [64:0] \$5 ;
  wire [64:0] \$6 ;
  wire [64:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 1'h1;
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = empty0 <<< (* src = "attacks-qbb.py:35" *) 2'h2;
  assign \$1  = ~ (* src = "attacks-qbb.py:177" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 2'h2;
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = empty1 <<< (* src = "attacks-qbb.py:37" *) 3'h4;
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = empty2 <<< (* src = "attacks-qbb.py:38" *) 1'h1;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:177" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = empty <<< (* src = "attacks-qbb.py:33" *) 1'h1;
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_north" *)
(* generator = "nMigen" *)
module black_fill_north(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$11 ;
  wire [78:0] \$13 ;
  wire [94:0] \$15 ;
  wire [94:0] \$16 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$23 ;
  wire [94:0] \$25 ;
  wire [126:0] \$27 ;
  wire [126:0] \$28 ;
  wire [78:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [78:0] \$34 ;
  wire [78:0] \$35 ;
  wire [78:0] \$37 ;
  wire [78:0] \$4 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$11  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 4'h8;
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = empty0 <<< (* src = "attacks-qbb.py:35" *) 5'h10;
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = pieces & (* src = "attacks-qbb.py:32" *) 64'hffffffffffffffff;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 5'h10;
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = empty1 <<< (* src = "attacks-qbb.py:37" *) 6'h20;
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$35  = empty2 <<< (* src = "attacks-qbb.py:38" *) 4'h8;
  assign \$37  = \$35  & (* src = "attacks-qbb.py:38" *) 64'hffffffffffffffff;
  assign \$4  = empty <<< (* src = "attacks-qbb.py:33" *) 4'h8;
  assign \$6  = pieces0 & (* src = "attacks-qbb.py:33" *) \$4 ;
  assign \$8  = empty | (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$1 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$3 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$10 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$34 [63:0];
  end
  assign \$3  = \$8 ;
  assign \$10  = \$13 ;
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \$34  = \$37 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_northeast" *)
(* generator = "nMigen" *)
module black_fill_northeast(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$12 ;
  wire [78:0] \$13 ;
  wire [78:0] \$15 ;
  wire [94:0] \$17 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$24 ;
  wire [94:0] \$25 ;
  wire [94:0] \$27 ;
  wire [126:0] \$29 ;
  wire [63:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [126:0] \$34 ;
  wire [78:0] \$36 ;
  wire [78:0] \$37 ;
  wire [7:0] \$39 ;
  wire [78:0] \$41 ;
  wire [78:0] \$5 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 4'h9;
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = empty0 <<< (* src = "attacks-qbb.py:35" *) 5'h12;
  assign \$1  = ~ (* src = "attacks-qbb.py:176" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 5'h12;
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = empty1 <<< (* src = "attacks-qbb.py:37" *) 6'h24;
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = empty2 <<< (* src = "attacks-qbb.py:38" *) 4'h9;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:176" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = empty <<< (* src = "attacks-qbb.py:33" *) 4'h9;
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_northwest" *)
(* generator = "nMigen" *)
module black_fill_northwest(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$12 ;
  wire [70:0] \$13 ;
  wire [70:0] \$15 ;
  wire [78:0] \$17 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$24 ;
  wire [78:0] \$25 ;
  wire [78:0] \$27 ;
  wire [94:0] \$29 ;
  wire [63:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [94:0] \$34 ;
  wire [70:0] \$36 ;
  wire [70:0] \$37 ;
  wire [63:0] \$39 ;
  wire [70:0] \$41 ;
  wire [70:0] \$5 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff9);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff2);
  assign \$1  = ~ (* src = "attacks-qbb.py:182" *) 64'h8080808080808080;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff2);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe4);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff9);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:182" *) 64'h8080808080808080;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff9);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_south" *)
(* generator = "nMigen" *)
module black_fill_south(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$11 ;
  wire [70:0] \$13 ;
  wire [78:0] \$15 ;
  wire [78:0] \$16 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$23 ;
  wire [78:0] \$25 ;
  wire [94:0] \$27 ;
  wire [94:0] \$28 ;
  wire [70:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [70:0] \$34 ;
  wire [70:0] \$35 ;
  wire [70:0] \$37 ;
  wire [70:0] \$4 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$11  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff8);
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff0);
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = pieces & (* src = "attacks-qbb.py:32" *) 64'hffffffffffffffff;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff0);
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe0);
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$35  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff8);
  assign \$37  = \$35  & (* src = "attacks-qbb.py:38" *) 64'hffffffffffffffff;
  assign \$4  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff8);
  assign \$6  = pieces0 & (* src = "attacks-qbb.py:33" *) \$4 ;
  assign \$8  = empty | (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$1 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$3 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$10 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$34 [63:0];
  end
  assign \$3  = \$8 ;
  assign \$10  = \$13 ;
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \$34  = \$37 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_southeast" *)
(* generator = "nMigen" *)
module black_fill_southeast(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$12 ;
  wire [70:0] \$13 ;
  wire [70:0] \$15 ;
  wire [78:0] \$17 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$24 ;
  wire [78:0] \$25 ;
  wire [78:0] \$27 ;
  wire [94:0] \$29 ;
  wire [63:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [94:0] \$34 ;
  wire [70:0] \$36 ;
  wire [70:0] \$37 ;
  wire [7:0] \$39 ;
  wire [70:0] \$41 ;
  wire [70:0] \$5 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff9);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff2);
  assign \$1  = ~ (* src = "attacks-qbb.py:178" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff2);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe4);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff9);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:178" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff9);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_southwest" *)
(* generator = "nMigen" *)
module black_fill_southwest(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$12 ;
  wire [78:0] \$13 ;
  wire [78:0] \$15 ;
  wire [94:0] \$17 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$24 ;
  wire [94:0] \$25 ;
  wire [94:0] \$27 ;
  wire [126:0] \$29 ;
  wire [63:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [126:0] \$34 ;
  wire [78:0] \$36 ;
  wire [78:0] \$37 ;
  wire [63:0] \$39 ;
  wire [78:0] \$41 ;
  wire [78:0] \$5 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff7);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hffffffffffffffee);
  assign \$1  = ~ (* src = "attacks-qbb.py:180" *) 64'h8080808080808080;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hffffffffffffffee);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffdc);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff7);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:180" *) 64'h8080808080808080;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff7);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_fill_west" *)
(* generator = "nMigen" *)
module black_fill_west(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [63:0] \$11 ;
  wire [63:0] \$13 ;
  wire [64:0] \$15 ;
  wire [64:0] \$16 ;
  wire [64:0] \$18 ;
  wire [64:0] \$20 ;
  wire [64:0] \$22 ;
  wire [64:0] \$23 ;
  wire [64:0] \$25 ;
  wire [66:0] \$27 ;
  wire [66:0] \$28 ;
  wire [63:0] \$3 ;
  wire [66:0] \$30 ;
  wire [66:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [63:0] \$38 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [63:0] \$9 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$9  = empty | (* src = "attacks-qbb.py:33" *) \$7 ;
  assign \$11  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hffffffffffffffff);
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffffe);
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = ~ (* src = "attacks-qbb.py:181" *) 64'h8080808080808080;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffffe);
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hfffffffffffffffc);
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hffffffffffffffff);
  assign \$36  = ~ (* src = "attacks-qbb.py:181" *) 64'h8080808080808080;
  assign \$38  = \$34  & (* src = "attacks-qbb.py:38" *) \$36 ;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$5  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hffffffffffffffff);
  assign \$7  = pieces0 & (* src = "attacks-qbb.py:33" *) \$5 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$9 ;
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$13 ;
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$38 ;
  end
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.black_king" *)
(* generator = "nMigen" *)
module black_king(n, ne, e, se, s, sw, w, nw, pieces);
  wire [78:0] \$1 ;
  wire [64:0] \$11 ;
  wire [63:0] \$12 ;
  wire [63:0] \$14 ;
  wire [64:0] \$16 ;
  wire [63:0] \$18 ;
  wire [78:0] \$2 ;
  wire [63:0] \$20 ;
  wire [63:0] \$22 ;
  wire [63:0] \$24 ;
  wire [7:0] \$26 ;
  wire [63:0] \$28 ;
  wire [63:0] \$30 ;
  wire [7:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [70:0] \$38 ;
  wire [7:0] \$39 ;
  wire [78:0] \$4 ;
  wire [63:0] \$41 ;
  wire [70:0] \$43 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:80" *)
  reg [63:0] \$next\e ;
  (* src = "attacks-qbb.py:78" *)
  reg [63:0] \$next\n ;
  (* src = "attacks-qbb.py:79" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:85" *)
  reg [63:0] \$next\nw ;
  (* src = "attacks-qbb.py:82" *)
  reg [63:0] \$next\s ;
  (* src = "attacks-qbb.py:81" *)
  reg [63:0] \$next\se ;
  (* src = "attacks-qbb.py:83" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:84" *)
  reg [63:0] \$next\w ;
  (* src = "attacks-qbb.py:80" *)
  output [63:0] e;
  (* src = "attacks-qbb.py:78" *)
  output [63:0] n;
  (* src = "attacks-qbb.py:79" *)
  output [63:0] ne;
  (* src = "attacks-qbb.py:85" *)
  output [63:0] nw;
  (* src = "attacks-qbb.py:76" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:82" *)
  output [63:0] s;
  (* src = "attacks-qbb.py:81" *)
  output [63:0] se;
  (* src = "attacks-qbb.py:83" *)
  output [63:0] sw;
  (* src = "attacks-qbb.py:84" *)
  output [63:0] w;
  assign \$9  = \$7  <<< (* src = "attacks-qbb.py:92" *) 4'h9;
  assign \$12  = ~ (* src = "attacks-qbb.py:93" *) 64'h8080808080808080;
  assign \$14  = pieces & (* src = "attacks-qbb.py:93" *) \$12 ;
  assign \$16  = \$14  <<< (* src = "attacks-qbb.py:93" *) 1'h1;
  assign \$18  = ~ (* src = "attacks-qbb.py:94" *) 64'h8080808080808080;
  assign \$20  = pieces & (* src = "attacks-qbb.py:94" *) \$18 ;
  assign \$22  = \$20  >>> (* src = "attacks-qbb.py:94" *) 3'h7;
  assign \$24  = pieces >>> (* src = "attacks-qbb.py:95" *) 4'h8;
  assign \$26  = ~ (* src = "attacks-qbb.py:96" *) 8'hff;
  assign \$28  = pieces & (* src = "attacks-qbb.py:96" *) \$26 ;
  assign \$2  = pieces <<< (* src = "attacks-qbb.py:91" *) 4'h8;
  assign \$30  = \$28  >>> (* src = "attacks-qbb.py:96" *) 4'h9;
  assign \$32  = ~ (* src = "attacks-qbb.py:97" *) 8'hff;
  assign \$34  = pieces & (* src = "attacks-qbb.py:97" *) \$32 ;
  assign \$36  = \$34  >>> (* src = "attacks-qbb.py:97" *) 1'h1;
  assign \$39  = ~ (* src = "attacks-qbb.py:98" *) 8'hff;
  assign \$41  = pieces & (* src = "attacks-qbb.py:98" *) \$39 ;
  assign \$43  = \$41  <<< (* src = "attacks-qbb.py:98" *) 3'h7;
  assign \$5  = ~ (* src = "attacks-qbb.py:92" *) 64'h8080808080808080;
  assign \$7  = pieces & (* src = "attacks-qbb.py:92" *) \$5 ;
  always @* begin
    \$next\n  = 64'h0000000000000000;
    \$next\n  = \$1 [63:0];
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = \$4 [63:0];
  end
  always @* begin
    \$next\e  = 64'h0000000000000000;
    \$next\e  = \$11 [63:0];
  end
  always @* begin
    \$next\se  = 64'h0000000000000000;
    \$next\se  = \$22 ;
  end
  always @* begin
    \$next\s  = 64'h0000000000000000;
    \$next\s  = \$24 ;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = \$30 ;
  end
  always @* begin
    \$next\w  = 64'h0000000000000000;
    \$next\w  = \$36 ;
  end
  always @* begin
    \$next\nw  = 64'h0000000000000000;
    \$next\nw  = \$38 [63:0];
  end
  assign \$1  = \$2 ;
  assign \$4  = \$9 ;
  assign \$11  = \$16 ;
  assign \$38  = \$43 ;
  assign nw = \$next\nw ;
  assign w = \$next\w ;
  assign sw = \$next\sw ;
  assign s = \$next\s ;
  assign se = \$next\se ;
  assign e = \$next\e ;
  assign ne = \$next\ne ;
  assign n = \$next\n ;
endmodule

(* \nmigen.hierarchy  = "top.black_knights" *)
(* generator = "nMigen" *)
module black_knights(nne, ene, ese, sse, ssw, wsw, wnw, nnw, knights);
  wire [94:0] \$1 ;
  wire [7:0] \$11 ;
  wire [78:0] \$13 ;
  wire [15:0] \$15 ;
  wire [78:0] \$17 ;
  wire [63:0] \$19 ;
  wire [94:0] \$2 ;
  wire [7:0] \$21 ;
  wire [63:0] \$23 ;
  wire [15:0] \$25 ;
  wire [63:0] \$27 ;
  wire [63:0] \$29 ;
  wire [7:0] \$31 ;
  wire [63:0] \$33 ;
  wire [63:0] \$35 ;
  wire [63:0] \$37 ;
  wire [63:0] \$39 ;
  wire [7:0] \$4 ;
  wire [63:0] \$41 ;
  wire [55:0] \$43 ;
  wire [63:0] \$45 ;
  wire [63:0] \$47 ;
  wire [63:0] \$49 ;
  wire [70:0] \$51 ;
  wire [70:0] \$52 ;
  wire [55:0] \$54 ;
  wire [70:0] \$56 ;
  wire [63:0] \$58 ;
  wire [94:0] \$6 ;
  wire [70:0] \$60 ;
  wire [78:0] \$62 ;
  wire [78:0] \$63 ;
  wire [63:0] \$65 ;
  wire [78:0] \$67 ;
  wire [78:0] \$8 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:49" *)
  reg [63:0] \$next\ene ;
  (* src = "attacks-qbb.py:50" *)
  reg [63:0] \$next\ese ;
  (* src = "attacks-qbb.py:48" *)
  reg [63:0] \$next\nne ;
  (* src = "attacks-qbb.py:55" *)
  reg [63:0] \$next\nnw ;
  (* src = "attacks-qbb.py:51" *)
  reg [63:0] \$next\sse ;
  (* src = "attacks-qbb.py:52" *)
  reg [63:0] \$next\ssw ;
  (* src = "attacks-qbb.py:54" *)
  reg [63:0] \$next\wnw ;
  (* src = "attacks-qbb.py:53" *)
  reg [63:0] \$next\wsw ;
  (* src = "attacks-qbb.py:49" *)
  output [63:0] ene;
  (* src = "attacks-qbb.py:50" *)
  output [63:0] ese;
  (* src = "attacks-qbb.py:46" *)
  input [63:0] knights;
  (* src = "attacks-qbb.py:48" *)
  output [63:0] nne;
  (* src = "attacks-qbb.py:55" *)
  output [63:0] nnw;
  (* src = "attacks-qbb.py:51" *)
  output [63:0] sse;
  (* src = "attacks-qbb.py:52" *)
  output [63:0] ssw;
  (* src = "attacks-qbb.py:54" *)
  output [63:0] wnw;
  (* src = "attacks-qbb.py:53" *)
  output [63:0] wsw;
  assign \$9  = knights <<< (* src = "attacks-qbb.py:62" *) 4'ha;
  assign \$11  = ~ (* src = "attacks-qbb.py:62" *) 8'hff;
  assign \$13  = \$9  & (* src = "attacks-qbb.py:62" *) \$11 ;
  assign \$15  = ~ (* src = "attacks-qbb.py:62" *) 16'haaaa;
  assign \$17  = \$13  & (* src = "attacks-qbb.py:62" *) \$15 ;
  assign \$19  = knights >>> (* src = "attacks-qbb.py:63" *) 3'h6;
  assign \$21  = ~ (* src = "attacks-qbb.py:63" *) 8'hff;
  assign \$23  = \$19  & (* src = "attacks-qbb.py:63" *) \$21 ;
  assign \$25  = ~ (* src = "attacks-qbb.py:63" *) 16'haaaa;
  assign \$27  = \$23  & (* src = "attacks-qbb.py:63" *) \$25 ;
  assign \$2  = knights <<< (* src = "attacks-qbb.py:61" *) 5'h11;
  assign \$29  = knights >>> (* src = "attacks-qbb.py:64" *) 4'hf;
  assign \$31  = ~ (* src = "attacks-qbb.py:64" *) 8'hff;
  assign \$33  = \$29  & (* src = "attacks-qbb.py:64" *) \$31 ;
  assign \$35  = knights >>> (* src = "attacks-qbb.py:65" *) 5'h11;
  assign \$37  = ~ (* src = "attacks-qbb.py:65" *) 64'h8080808080808080;
  assign \$39  = \$35  & (* src = "attacks-qbb.py:65" *) \$37 ;
  assign \$41  = knights >>> (* src = "attacks-qbb.py:66" *) 4'ha;
  assign \$43  = ~ (* src = "attacks-qbb.py:66" *) 56'h81020408102040;
  assign \$45  = \$41  & (* src = "attacks-qbb.py:66" *) \$43 ;
  assign \$47  = ~ (* src = "attacks-qbb.py:66" *) 64'h8080808080808080;
  assign \$4  = ~ (* src = "attacks-qbb.py:61" *) 8'hff;
  assign \$49  = \$45  & (* src = "attacks-qbb.py:66" *) \$47 ;
  assign \$52  = knights <<< (* src = "attacks-qbb.py:67" *) 3'h6;
  assign \$54  = ~ (* src = "attacks-qbb.py:67" *) 56'h81020408102040;
  assign \$56  = \$52  & (* src = "attacks-qbb.py:67" *) \$54 ;
  assign \$58  = ~ (* src = "attacks-qbb.py:67" *) 64'h8080808080808080;
  assign \$60  = \$56  & (* src = "attacks-qbb.py:67" *) \$58 ;
  assign \$63  = knights <<< (* src = "attacks-qbb.py:68" *) 4'hf;
  assign \$65  = ~ (* src = "attacks-qbb.py:68" *) 64'h8080808080808080;
  assign \$67  = \$63  & (* src = "attacks-qbb.py:68" *) \$65 ;
  assign \$6  = \$2  & (* src = "attacks-qbb.py:61" *) \$4 ;
  always @* begin
    \$next\nne  = 64'h0000000000000000;
    \$next\nne  = \$1 [63:0];
  end
  always @* begin
    \$next\ene  = 64'h0000000000000000;
    \$next\ene  = \$8 [63:0];
  end
  always @* begin
    \$next\ese  = 64'h0000000000000000;
    \$next\ese  = \$27 ;
  end
  always @* begin
    \$next\sse  = 64'h0000000000000000;
    \$next\sse  = \$33 ;
  end
  always @* begin
    \$next\ssw  = 64'h0000000000000000;
    \$next\ssw  = \$39 ;
  end
  always @* begin
    \$next\wsw  = 64'h0000000000000000;
    \$next\wsw  = \$49 ;
  end
  always @* begin
    \$next\wnw  = 64'h0000000000000000;
    \$next\wnw  = \$51 [63:0];
  end
  always @* begin
    \$next\nnw  = 64'h0000000000000000;
    \$next\nnw  = \$62 [63:0];
  end
  assign \$1  = \$6 ;
  assign \$8  = \$17 ;
  assign \$51  = \$60 ;
  assign \$62  = \$67 ;
  assign nnw = \$next\nnw ;
  assign wnw = \$next\wnw ;
  assign wsw = \$next\wsw ;
  assign ssw = \$next\ssw ;
  assign sse = \$next\sse ;
  assign ese = \$next\ese ;
  assign ene = \$next\ene ;
  assign nne = \$next\nne ;
endmodule

(* \nmigen.hierarchy  = "top.black_pawns" *)
(* generator = "nMigen" *)
module black_pawns(se, sw, pawns);
  (* src = "attacks-qbb.py:108" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:111" *)
  reg [63:0] \$next\nw ;
  (* src = "attacks-qbb.py:109" *)
  reg [63:0] \$next\se ;
  (* src = "attacks-qbb.py:76" *)
  reg [63:0] \$next\step_pieces ;
  (* src = "attacks-qbb.py:110" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:108" *)
  wire [63:0] ne;
  (* src = "attacks-qbb.py:111" *)
  wire [63:0] nw;
  (* src = "attacks-qbb.py:106" *)
  input [63:0] pawns;
  (* src = "attacks-qbb.py:109" *)
  output [63:0] se;
  (* src = "attacks-qbb.py:79" *)
  wire [63:0] step_ne;
  (* src = "attacks-qbb.py:85" *)
  wire [63:0] step_nw;
  (* src = "attacks-qbb.py:76" *)
  wire [63:0] step_pieces;
  (* src = "attacks-qbb.py:81" *)
  wire [63:0] step_se;
  (* src = "attacks-qbb.py:83" *)
  wire [63:0] step_sw;
  (* src = "attacks-qbb.py:110" *)
  output [63:0] sw;
  \step$1  step (
    .ne(step_ne),
    .nw(step_nw),
    .pieces(step_pieces),
    .se(step_se),
    .sw(step_sw)
  );
  always @* begin
    \$next\step_pieces  = 64'h0000000000000000;
    \$next\step_pieces  = pawns;
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = step_ne;
  end
  always @* begin
    \$next\se  = 64'h0000000000000000;
    \$next\se  = step_se;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = step_sw;
  end
  always @* begin
    \$next\nw  = 64'h0000000000000000;
    \$next\nw  = step_nw;
  end
  assign nw = \$next\nw ;
  assign sw = \$next\sw ;
  assign se = \$next\se ;
  assign ne = \$next\ne ;
  assign step_pieces = \$next\step_pieces ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_pawn_attacks.step" *)
(* generator = "nMigen" *)
module step(ne, se, sw, nw, pieces);
  wire [78:0] \$1 ;
  wire [64:0] \$11 ;
  wire [63:0] \$12 ;
  wire [63:0] \$14 ;
  wire [64:0] \$16 ;
  wire [63:0] \$18 ;
  wire [78:0] \$2 ;
  wire [63:0] \$20 ;
  wire [63:0] \$22 ;
  wire [63:0] \$24 ;
  wire [7:0] \$26 ;
  wire [63:0] \$28 ;
  wire [63:0] \$30 ;
  wire [7:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [70:0] \$38 ;
  wire [7:0] \$39 ;
  wire [78:0] \$4 ;
  wire [63:0] \$41 ;
  wire [70:0] \$43 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:80" *)
  reg [63:0] \$next\e ;
  (* src = "attacks-qbb.py:78" *)
  reg [63:0] \$next\n ;
  (* src = "attacks-qbb.py:79" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:85" *)
  reg [63:0] \$next\nw ;
  (* src = "attacks-qbb.py:82" *)
  reg [63:0] \$next\s ;
  (* src = "attacks-qbb.py:81" *)
  reg [63:0] \$next\se ;
  (* src = "attacks-qbb.py:83" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:84" *)
  reg [63:0] \$next\w ;
  (* src = "attacks-qbb.py:80" *)
  wire [63:0] e;
  (* src = "attacks-qbb.py:78" *)
  wire [63:0] n;
  (* src = "attacks-qbb.py:79" *)
  output [63:0] ne;
  (* src = "attacks-qbb.py:85" *)
  output [63:0] nw;
  (* src = "attacks-qbb.py:76" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:82" *)
  wire [63:0] s;
  (* src = "attacks-qbb.py:81" *)
  output [63:0] se;
  (* src = "attacks-qbb.py:83" *)
  output [63:0] sw;
  (* src = "attacks-qbb.py:84" *)
  wire [63:0] w;
  assign \$9  = \$7  <<< (* src = "attacks-qbb.py:92" *) 4'h9;
  assign \$12  = ~ (* src = "attacks-qbb.py:93" *) 64'h8080808080808080;
  assign \$14  = pieces & (* src = "attacks-qbb.py:93" *) \$12 ;
  assign \$16  = \$14  <<< (* src = "attacks-qbb.py:93" *) 1'h1;
  assign \$18  = ~ (* src = "attacks-qbb.py:94" *) 64'h8080808080808080;
  assign \$20  = pieces & (* src = "attacks-qbb.py:94" *) \$18 ;
  assign \$22  = \$20  >>> (* src = "attacks-qbb.py:94" *) 3'h7;
  assign \$24  = pieces >>> (* src = "attacks-qbb.py:95" *) 4'h8;
  assign \$26  = ~ (* src = "attacks-qbb.py:96" *) 8'hff;
  assign \$28  = pieces & (* src = "attacks-qbb.py:96" *) \$26 ;
  assign \$2  = pieces <<< (* src = "attacks-qbb.py:91" *) 4'h8;
  assign \$30  = \$28  >>> (* src = "attacks-qbb.py:96" *) 4'h9;
  assign \$32  = ~ (* src = "attacks-qbb.py:97" *) 8'hff;
  assign \$34  = pieces & (* src = "attacks-qbb.py:97" *) \$32 ;
  assign \$36  = \$34  >>> (* src = "attacks-qbb.py:97" *) 1'h1;
  assign \$39  = ~ (* src = "attacks-qbb.py:98" *) 8'hff;
  assign \$41  = pieces & (* src = "attacks-qbb.py:98" *) \$39 ;
  assign \$43  = \$41  <<< (* src = "attacks-qbb.py:98" *) 3'h7;
  assign \$5  = ~ (* src = "attacks-qbb.py:92" *) 64'h8080808080808080;
  assign \$7  = pieces & (* src = "attacks-qbb.py:92" *) \$5 ;
  always @* begin
    \$next\n  = 64'h0000000000000000;
    \$next\n  = \$1 [63:0];
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = \$4 [63:0];
  end
  always @* begin
    \$next\e  = 64'h0000000000000000;
    \$next\e  = \$11 [63:0];
  end
  always @* begin
    \$next\se  = 64'h0000000000000000;
    \$next\se  = \$22 ;
  end
  always @* begin
    \$next\s  = 64'h0000000000000000;
    \$next\s  = \$24 ;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = \$30 ;
  end
  always @* begin
    \$next\w  = 64'h0000000000000000;
    \$next\w  = \$36 ;
  end
  always @* begin
    \$next\nw  = 64'h0000000000000000;
    \$next\nw  = \$38 [63:0];
  end
  assign \$1  = \$2 ;
  assign \$4  = \$9 ;
  assign \$11  = \$16 ;
  assign \$38  = \$43 ;
  assign nw = \$next\nw ;
  assign w = \$next\w ;
  assign sw = \$next\sw ;
  assign s = \$next\s ;
  assign se = \$next\se ;
  assign e = \$next\e ;
  assign ne = \$next\ne ;
  assign n = \$next\n ;
endmodule

(* \nmigen.hierarchy  = "top.black_pawns.step" *)
(* generator = "nMigen" *)
module \step$1 (ne, se, sw, nw, pieces);
  wire [78:0] \$1 ;
  wire [64:0] \$11 ;
  wire [63:0] \$12 ;
  wire [63:0] \$14 ;
  wire [64:0] \$16 ;
  wire [63:0] \$18 ;
  wire [78:0] \$2 ;
  wire [63:0] \$20 ;
  wire [63:0] \$22 ;
  wire [63:0] \$24 ;
  wire [7:0] \$26 ;
  wire [63:0] \$28 ;
  wire [63:0] \$30 ;
  wire [7:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [70:0] \$38 ;
  wire [7:0] \$39 ;
  wire [78:0] \$4 ;
  wire [63:0] \$41 ;
  wire [70:0] \$43 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:80" *)
  reg [63:0] \$next\e ;
  (* src = "attacks-qbb.py:78" *)
  reg [63:0] \$next\n ;
  (* src = "attacks-qbb.py:79" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:85" *)
  reg [63:0] \$next\nw ;
  (* src = "attacks-qbb.py:82" *)
  reg [63:0] \$next\s ;
  (* src = "attacks-qbb.py:81" *)
  reg [63:0] \$next\se ;
  (* src = "attacks-qbb.py:83" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:84" *)
  reg [63:0] \$next\w ;
  (* src = "attacks-qbb.py:80" *)
  wire [63:0] e;
  (* src = "attacks-qbb.py:78" *)
  wire [63:0] n;
  (* src = "attacks-qbb.py:79" *)
  output [63:0] ne;
  (* src = "attacks-qbb.py:85" *)
  output [63:0] nw;
  (* src = "attacks-qbb.py:76" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:82" *)
  wire [63:0] s;
  (* src = "attacks-qbb.py:81" *)
  output [63:0] se;
  (* src = "attacks-qbb.py:83" *)
  output [63:0] sw;
  (* src = "attacks-qbb.py:84" *)
  wire [63:0] w;
  assign \$9  = \$7  <<< (* src = "attacks-qbb.py:92" *) 4'h9;
  assign \$12  = ~ (* src = "attacks-qbb.py:93" *) 64'h8080808080808080;
  assign \$14  = pieces & (* src = "attacks-qbb.py:93" *) \$12 ;
  assign \$16  = \$14  <<< (* src = "attacks-qbb.py:93" *) 1'h1;
  assign \$18  = ~ (* src = "attacks-qbb.py:94" *) 64'h8080808080808080;
  assign \$20  = pieces & (* src = "attacks-qbb.py:94" *) \$18 ;
  assign \$22  = \$20  >>> (* src = "attacks-qbb.py:94" *) 3'h7;
  assign \$24  = pieces >>> (* src = "attacks-qbb.py:95" *) 4'h8;
  assign \$26  = ~ (* src = "attacks-qbb.py:96" *) 8'hff;
  assign \$28  = pieces & (* src = "attacks-qbb.py:96" *) \$26 ;
  assign \$2  = pieces <<< (* src = "attacks-qbb.py:91" *) 4'h8;
  assign \$30  = \$28  >>> (* src = "attacks-qbb.py:96" *) 4'h9;
  assign \$32  = ~ (* src = "attacks-qbb.py:97" *) 8'hff;
  assign \$34  = pieces & (* src = "attacks-qbb.py:97" *) \$32 ;
  assign \$36  = \$34  >>> (* src = "attacks-qbb.py:97" *) 1'h1;
  assign \$39  = ~ (* src = "attacks-qbb.py:98" *) 8'hff;
  assign \$41  = pieces & (* src = "attacks-qbb.py:98" *) \$39 ;
  assign \$43  = \$41  <<< (* src = "attacks-qbb.py:98" *) 3'h7;
  assign \$5  = ~ (* src = "attacks-qbb.py:92" *) 64'h8080808080808080;
  assign \$7  = pieces & (* src = "attacks-qbb.py:92" *) \$5 ;
  always @* begin
    \$next\n  = 64'h0000000000000000;
    \$next\n  = \$1 [63:0];
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = \$4 [63:0];
  end
  always @* begin
    \$next\e  = 64'h0000000000000000;
    \$next\e  = \$11 [63:0];
  end
  always @* begin
    \$next\se  = 64'h0000000000000000;
    \$next\se  = \$22 ;
  end
  always @* begin
    \$next\s  = 64'h0000000000000000;
    \$next\s  = \$24 ;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = \$30 ;
  end
  always @* begin
    \$next\w  = 64'h0000000000000000;
    \$next\w  = \$36 ;
  end
  always @* begin
    \$next\nw  = 64'h0000000000000000;
    \$next\nw  = \$38 [63:0];
  end
  assign \$1  = \$2 ;
  assign \$4  = \$9 ;
  assign \$11  = \$16 ;
  assign \$38  = \$43 ;
  assign nw = \$next\nw ;
  assign w = \$next\w ;
  assign sw = \$next\sw ;
  assign s = \$next\s ;
  assign se = \$next\se ;
  assign e = \$next\e ;
  assign ne = \$next\ne ;
  assign n = \$next\n ;
endmodule

(* \nmigen.hierarchy  = "top" *)
(* top =  1  *)
(* generator = "nMigen" *)
module top(nbk, rqk, enemy, pieces, empty, \pieces$1 , \empty$2 , \pieces$3 , n, ne, e, s, sw, w, pbq);
  wire [63:0] \$10 ;
  wire [63:0] \$100 ;
  wire [63:0] \$102 ;
  wire [63:0] \$104 ;
  wire [63:0] \$106 ;
  wire [63:0] \$108 ;
  wire [63:0] \$110 ;
  wire [63:0] \$112 ;
  wire [63:0] \$114 ;
  wire [63:0] \$116 ;
  wire [63:0] \$118 ;
  wire [63:0] \$12 ;
  wire [63:0] \$120 ;
  wire [63:0] \$122 ;
  wire [63:0] \$125 ;
  wire [63:0] \$127 ;
  wire [63:0] \$129 ;
  wire [63:0] \$131 ;
  wire [63:0] \$133 ;
  wire [63:0] \$135 ;
  wire [63:0] \$137 ;
  wire [63:0] \$139 ;
  wire [63:0] \$14 ;
  wire [63:0] \$141 ;
  wire [63:0] \$143 ;
  wire [63:0] \$145 ;
  wire [63:0] \$147 ;
  wire [63:0] \$149 ;
  wire [63:0] \$151 ;
  wire [63:0] \$153 ;
  wire [63:0] \$155 ;
  wire [63:0] \$157 ;
  wire [63:0] \$159 ;
  wire [63:0] \$16 ;
  wire [63:0] \$161 ;
  wire [63:0] \$163 ;
  wire [63:0] \$165 ;
  wire [63:0] \$167 ;
  wire [63:0] \$169 ;
  wire [63:0] \$171 ;
  wire [63:0] \$173 ;
  wire [63:0] \$175 ;
  wire [63:0] \$177 ;
  wire [63:0] \$179 ;
  wire [63:0] \$18 ;
  wire [63:0] \$181 ;
  wire [63:0] \$183 ;
  wire [63:0] \$185 ;
  wire [63:0] \$187 ;
  wire [63:0] \$189 ;
  wire [63:0] \$191 ;
  wire [63:0] \$193 ;
  wire [63:0] \$195 ;
  wire [63:0] \$197 ;
  wire [63:0] \$199 ;
  wire [63:0] \$20 ;
  wire [63:0] \$201 ;
  wire [63:0] \$203 ;
  wire [63:0] \$205 ;
  wire [63:0] \$207 ;
  wire [63:0] \$209 ;
  wire [63:0] \$211 ;
  wire [63:0] \$213 ;
  wire [63:0] \$215 ;
  wire [63:0] \$217 ;
  wire [63:0] \$219 ;
  wire [63:0] \$22 ;
  wire [63:0] \$221 ;
  wire [63:0] \$223 ;
  wire [63:0] \$225 ;
  wire [63:0] \$227 ;
  wire [63:0] \$229 ;
  wire [63:0] \$231 ;
  wire [63:0] \$233 ;
  wire [63:0] \$235 ;
  wire [63:0] \$237 ;
  wire [63:0] \$239 ;
  wire [63:0] \$24 ;
  wire [63:0] \$241 ;
  wire [63:0] \$243 ;
  wire [63:0] \$245 ;
  wire [63:0] \$247 ;
  wire [63:0] \$249 ;
  wire [63:0] \$251 ;
  wire [63:0] \$253 ;
  wire [63:0] \$255 ;
  wire [63:0] \$257 ;
  wire [63:0] \$259 ;
  wire [63:0] \$26 ;
  wire [63:0] \$261 ;
  wire [63:0] \$263 ;
  wire [63:0] \$265 ;
  wire [63:0] \$267 ;
  wire [63:0] \$269 ;
  wire [63:0] \$271 ;
  wire [63:0] \$273 ;
  wire [63:0] \$275 ;
  wire [63:0] \$277 ;
  wire [63:0] \$279 ;
  wire [63:0] \$28 ;
  wire [63:0] \$281 ;
  wire [64:0] \$283 ;
  wire [63:0] \$284 ;
  wire [64:0] \$286 ;
  wire [64:0] \$288 ;
  wire [65:0] \$290 ;
  wire [64:0] \$291 ;
  wire [64:0] \$293 ;
  wire [65:0] \$295 ;
  wire [65:0] \$297 ;
  wire [64:0] \$299 ;
  wire [63:0] \$30 ;
  wire [63:0] \$300 ;
  wire [64:0] \$302 ;
  wire [64:0] \$304 ;
  wire [63:0] \$305 ;
  wire [63:0] \$307 ;
  wire [64:0] \$309 ;
  wire [63:0] \$311 ;
  wire [63:0] \$313 ;
  wire [63:0] \$314 ;
  wire [63:0] \$317 ;
  wire [63:0] \$319 ;
  wire [63:0] \$32 ;
  wire [63:0] \$321 ;
  wire [63:0] \$323 ;
  wire [63:0] \$325 ;
  wire [63:0] \$326 ;
  wire [63:0] \$329 ;
  wire [63:0] \$331 ;
  wire [63:0] \$333 ;
  wire [63:0] \$335 ;
  wire [63:0] \$337 ;
  wire [63:0] \$338 ;
  wire [63:0] \$34 ;
  wire [63:0] \$341 ;
  wire [63:0] \$343 ;
  wire [63:0] \$345 ;
  wire [63:0] \$347 ;
  wire [63:0] \$349 ;
  wire [63:0] \$351 ;
  wire [63:0] \$353 ;
  wire [63:0] \$354 ;
  wire [63:0] \$357 ;
  wire [63:0] \$36 ;
  wire [63:0] \$38 ;
  wire [63:0] \$4 ;
  wire [63:0] \$40 ;
  wire [63:0] \$42 ;
  wire [63:0] \$44 ;
  wire [63:0] \$46 ;
  wire [63:0] \$48 ;
  wire [63:0] \$50 ;
  wire [63:0] \$52 ;
  wire [63:0] \$54 ;
  wire [63:0] \$56 ;
  wire [63:0] \$58 ;
  wire [63:0] \$6 ;
  wire [63:0] \$60 ;
  wire [63:0] \$62 ;
  wire [63:0] \$64 ;
  wire [63:0] \$66 ;
  wire [63:0] \$68 ;
  wire [63:0] \$70 ;
  wire [63:0] \$72 ;
  wire [63:0] \$74 ;
  wire [63:0] \$76 ;
  wire [63:0] \$78 ;
  wire [63:0] \$8 ;
  wire [63:0] \$80 ;
  wire [63:0] \$82 ;
  wire [63:0] \$84 ;
  wire [63:0] \$86 ;
  wire [63:0] \$88 ;
  wire [63:0] \$90 ;
  wire [63:0] \$92 ;
  wire [63:0] \$94 ;
  wire [63:0] \$96 ;
  wire [63:0] \$98 ;
  (* src = "attacks-qbb.py:332" *)
  reg [63:0] \$next\all_in_between ;
  (* src = "attacks-qbb.py:329" *)
  reg [63:0] \$next\antidiagonal_in_between ;
  (* src = "attacks-qbb.py:439" *)
  reg [63:0] \$next\antidiagonal_sliders ;
  (* src = "attacks-qbb.py:326" *)
  reg [63:0] \$next\attacked_by_black ;
  (* src = "attacks-qbb.py:245" *)
  reg [63:0] \$next\bbishops ;
  (* src = "attacks-qbb.py:248" *)
  reg [63:0] \$next\bking ;
  (* src = "attacks-qbb.py:244" *)
  reg [63:0] \$next\bknights ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_east_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_east_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_north_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_north_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_northeast_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_northeast_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_northwest_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_northwest_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_south_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_south_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_southeast_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_southeast_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_southwest_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_southwest_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\black_fill_west_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\black_fill_west_pieces ;
  (* src = "attacks-qbb.py:76" *)
  reg [63:0] \$next\black_king_pieces ;
  (* src = "attacks-qbb.py:46" *)
  reg [63:0] \$next\black_knights_knights ;
  (* src = "attacks-qbb.py:106" *)
  reg [63:0] \$next\black_pawns_pawns ;
  (* src = "attacks-qbb.py:413" *)
  reg [63:0] \$next\blockers ;
  (* src = "attacks-qbb.py:243" *)
  reg [63:0] \$next\bpawns ;
  (* src = "attacks-qbb.py:247" *)
  reg [63:0] \$next\bqueens ;
  (* src = "attacks-qbb.py:246" *)
  reg [63:0] \$next\brooks ;
  (* src = "attacks-qbb.py:417" *)
  reg [63:0] \$next\check_dest ;
  (* src = "attacks-qbb.py:414" *)
  reg [63:0] \$next\checking_pieces ;
  (* src = "attacks-qbb.py:335" *)
  reg [63:0] \$next\diag_king_attacks ;
  (* src = "attacks-qbb.py:328" *)
  reg [63:0] \$next\diagonal_in_between ;
  (* src = "attacks-qbb.py:438" *)
  reg [63:0] \$next\diagonal_sliders ;
  (* src = "attacks-qbb.py:141" *)
  reg [63:0] \$next\e ;
  (* src = "attacks-qbb.py:252" *)
  reg [63:0] \$next\empty$124 ;
  (* src = "attacks-qbb.py:250" *)
  reg [63:0] \$next\friendly ;
  (* src = "attacks-qbb.py:330" *)
  reg [63:0] \$next\horizontal_in_between ;
  (* src = "attacks-qbb.py:436" *)
  reg [63:0] \$next\horizontal_sliders ;
  (* src = "attacks-qbb.py:337" *)
  reg [63:0] \$next\knight_king_attacks ;
  (* src = "attacks-qbb.py:139" *)
  reg [63:0] \$next\n ;
  (* src = "attacks-qbb.py:140" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:251" *)
  reg [63:0] \$next\occ ;
  (* src = "attacks-qbb.py:334" *)
  reg [63:0] \$next\ortho_king_attacks ;
  (* src = "attacks-qbb.py:336" *)
  reg [63:0] \$next\pawn_king_attacks ;
  (* src = "attacks-qbb.py:143" *)
  reg [63:0] \$next\s ;
  (* src = "attacks-qbb.py:144" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:418" *)
  reg [63:0] \$next\target_mask ;
  (* src = "attacks-qbb.py:331" *)
  reg [63:0] \$next\vertical_in_between ;
  (* src = "attacks-qbb.py:437" *)
  reg [63:0] \$next\vertical_sliders ;
  (* src = "attacks-qbb.py:145" *)
  reg [63:0] \$next\w ;
  (* src = "attacks-qbb.py:238" *)
  reg [63:0] \$next\wbishops ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_fill_east_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_fill_east_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_fill_north_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_fill_north_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_fill_northeast_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_fill_northeast_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_fill_south_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_fill_south_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_fill_southwest_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_fill_southwest_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_fill_west_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_fill_west_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_east_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_east_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_north_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_north_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_northeast_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_northeast_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_northwest_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_northwest_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_south_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_south_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_southeast_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_southeast_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_southwest_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_southwest_pieces ;
  (* src = "attacks-qbb.py:14" *)
  reg [63:0] \$next\white_king_fill_west_empty ;
  (* src = "attacks-qbb.py:15" *)
  reg [63:0] \$next\white_king_fill_west_pieces ;
  (* src = "attacks-qbb.py:46" *)
  reg [63:0] \$next\white_king_knight_attacks_knights ;
  (* src = "attacks-qbb.py:106" *)
  reg [63:0] \$next\white_king_pawn_attacks_pawns ;
  (* src = "attacks-qbb.py:46" *)
  reg [63:0] \$next\white_knights_knights ;
  (* src = "attacks-qbb.py:241" *)
  reg [63:0] \$next\wking ;
  (* src = "attacks-qbb.py:237" *)
  reg [63:0] \$next\wknights ;
  (* src = "attacks-qbb.py:236" *)
  reg [63:0] \$next\wpawns ;
  (* src = "attacks-qbb.py:240" *)
  reg [63:0] \$next\wqueens ;
  (* src = "attacks-qbb.py:239" *)
  reg [63:0] \$next\wrooks ;
  (* src = "attacks-qbb.py:415" *)
  reg [63:0] \$next\zero_if_check ;
  (* src = "attacks-qbb.py:416" *)
  reg [63:0] \$next\zero_if_double_check ;
  (* src = "attacks-qbb.py:332" *)
  wire [63:0] all_in_between;
  (* src = "attacks-qbb.py:329" *)
  wire [63:0] antidiagonal_in_between;
  (* src = "attacks-qbb.py:439" *)
  wire [63:0] antidiagonal_sliders;
  (* src = "attacks-qbb.py:326" *)
  wire [63:0] attacked_by_black;
  (* src = "attacks-qbb.py:245" *)
  wire [63:0] bbishops;
  (* src = "attacks-qbb.py:248" *)
  wire [63:0] bking;
  (* src = "attacks-qbb.py:244" *)
  wire [63:0] bknights;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_east_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_east_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_east_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_north_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_north_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_north_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_northeast_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_northeast_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_northeast_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_northwest_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_northwest_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_northwest_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_south_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_south_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_south_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_southeast_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_southeast_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_southeast_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_southwest_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_southwest_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_southwest_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] black_fill_west_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] black_fill_west_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] black_fill_west_pieces;
  (* src = "attacks-qbb.py:80" *)
  wire [63:0] black_king_e;
  (* src = "attacks-qbb.py:78" *)
  wire [63:0] black_king_n;
  (* src = "attacks-qbb.py:79" *)
  wire [63:0] black_king_ne;
  (* src = "attacks-qbb.py:85" *)
  wire [63:0] black_king_nw;
  (* src = "attacks-qbb.py:76" *)
  wire [63:0] black_king_pieces;
  (* src = "attacks-qbb.py:82" *)
  wire [63:0] black_king_s;
  (* src = "attacks-qbb.py:81" *)
  wire [63:0] black_king_se;
  (* src = "attacks-qbb.py:83" *)
  wire [63:0] black_king_sw;
  (* src = "attacks-qbb.py:84" *)
  wire [63:0] black_king_w;
  (* src = "attacks-qbb.py:49" *)
  wire [63:0] black_knights_ene;
  (* src = "attacks-qbb.py:50" *)
  wire [63:0] black_knights_ese;
  (* src = "attacks-qbb.py:46" *)
  wire [63:0] black_knights_knights;
  (* src = "attacks-qbb.py:48" *)
  wire [63:0] black_knights_nne;
  (* src = "attacks-qbb.py:55" *)
  wire [63:0] black_knights_nnw;
  (* src = "attacks-qbb.py:51" *)
  wire [63:0] black_knights_sse;
  (* src = "attacks-qbb.py:52" *)
  wire [63:0] black_knights_ssw;
  (* src = "attacks-qbb.py:54" *)
  wire [63:0] black_knights_wnw;
  (* src = "attacks-qbb.py:53" *)
  wire [63:0] black_knights_wsw;
  (* src = "attacks-qbb.py:106" *)
  wire [63:0] black_pawns_pawns;
  (* src = "attacks-qbb.py:109" *)
  wire [63:0] black_pawns_se;
  (* src = "attacks-qbb.py:110" *)
  wire [63:0] black_pawns_sw;
  (* src = "attacks-qbb.py:413" *)
  wire [63:0] blockers;
  (* src = "attacks-qbb.py:243" *)
  wire [63:0] bpawns;
  (* src = "attacks-qbb.py:247" *)
  wire [63:0] bqueens;
  (* src = "attacks-qbb.py:246" *)
  wire [63:0] brooks;
  (* src = "attacks-qbb.py:417" *)
  wire [63:0] check_dest;
  (* src = "attacks-qbb.py:414" *)
  wire [63:0] checking_pieces;
  (* src = "attacks-qbb.py:335" *)
  wire [63:0] diag_king_attacks;
  (* src = "attacks-qbb.py:328" *)
  wire [63:0] diagonal_in_between;
  (* src = "attacks-qbb.py:438" *)
  wire [63:0] diagonal_sliders;
  (* src = "attacks-qbb.py:141" *)
  output [63:0] e;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:252" *)
  wire [63:0] \empty$124 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] \empty$2 ;
  (* src = "attacks-qbb.py:136" *)
  input [63:0] enemy;
  (* src = "attacks-qbb.py:250" *)
  wire [63:0] friendly;
  (* src = "attacks-qbb.py:330" *)
  wire [63:0] horizontal_in_between;
  (* src = "attacks-qbb.py:436" *)
  wire [63:0] horizontal_sliders;
  (* src = "attacks-qbb.py:337" *)
  wire [63:0] knight_king_attacks;
  (* src = "attacks-qbb.py:139" *)
  output [63:0] n;
  (* src = "attacks-qbb.py:134" *)
  input [63:0] nbk;
  (* src = "attacks-qbb.py:140" *)
  output [63:0] ne;
  (* src = "attacks-qbb.py:251" *)
  wire [63:0] occ;
  (* src = "attacks-qbb.py:334" *)
  wire [63:0] ortho_king_attacks;
  (* src = "attacks-qbb.py:336" *)
  wire [63:0] pawn_king_attacks;
  (* src = "attacks-qbb.py:133" *)
  input [63:0] pbq;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] \pieces$1 ;
  (* src = "attacks-qbb.py:76" *)
  input [63:0] \pieces$3 ;
  (* src = "attacks-qbb.py:135" *)
  input [63:0] rqk;
  (* src = "attacks-qbb.py:143" *)
  output [63:0] s;
  (* src = "attacks-qbb.py:144" *)
  output [63:0] sw;
  (* src = "attacks-qbb.py:418" *)
  wire [63:0] target_mask;
  (* src = "attacks-qbb.py:331" *)
  wire [63:0] vertical_in_between;
  (* src = "attacks-qbb.py:437" *)
  wire [63:0] vertical_sliders;
  (* src = "attacks-qbb.py:145" *)
  output [63:0] w;
  (* src = "attacks-qbb.py:238" *)
  wire [63:0] wbishops;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_fill_east_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_fill_east_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_fill_east_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_fill_north_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_fill_north_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_fill_north_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_fill_northeast_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_fill_northeast_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_fill_northeast_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_fill_south_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_fill_south_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_fill_south_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_fill_southwest_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_fill_southwest_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_fill_southwest_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_fill_west_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_fill_west_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_fill_west_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_east_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_east_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_east_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_north_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_north_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_north_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_northeast_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_northeast_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_northeast_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_northwest_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_northwest_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_northwest_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_south_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_south_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_south_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_southeast_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_southeast_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_southeast_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_southwest_empty;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_southwest_pieces;
  (* src = "attacks-qbb.py:14" *)
  wire [63:0] white_king_fill_west_empty;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] white_king_fill_west_output;
  (* src = "attacks-qbb.py:15" *)
  wire [63:0] white_king_fill_west_pieces;
  (* src = "attacks-qbb.py:49" *)
  wire [63:0] white_king_knight_attacks_ene;
  (* src = "attacks-qbb.py:50" *)
  wire [63:0] white_king_knight_attacks_ese;
  (* src = "attacks-qbb.py:46" *)
  wire [63:0] white_king_knight_attacks_knights;
  (* src = "attacks-qbb.py:48" *)
  wire [63:0] white_king_knight_attacks_nne;
  (* src = "attacks-qbb.py:55" *)
  wire [63:0] white_king_knight_attacks_nnw;
  (* src = "attacks-qbb.py:51" *)
  wire [63:0] white_king_knight_attacks_sse;
  (* src = "attacks-qbb.py:52" *)
  wire [63:0] white_king_knight_attacks_ssw;
  (* src = "attacks-qbb.py:54" *)
  wire [63:0] white_king_knight_attacks_wnw;
  (* src = "attacks-qbb.py:53" *)
  wire [63:0] white_king_knight_attacks_wsw;
  (* src = "attacks-qbb.py:108" *)
  wire [63:0] white_king_pawn_attacks_ne;
  (* src = "attacks-qbb.py:111" *)
  wire [63:0] white_king_pawn_attacks_nw;
  (* src = "attacks-qbb.py:106" *)
  wire [63:0] white_king_pawn_attacks_pawns;
  (* src = "attacks-qbb.py:46" *)
  wire [63:0] white_knights_knights;
  (* src = "attacks-qbb.py:241" *)
  wire [63:0] wking;
  (* src = "attacks-qbb.py:237" *)
  wire [63:0] wknights;
  (* src = "attacks-qbb.py:236" *)
  wire [63:0] wpawns;
  (* src = "attacks-qbb.py:240" *)
  wire [63:0] wqueens;
  (* src = "attacks-qbb.py:239" *)
  wire [63:0] wrooks;
  (* src = "attacks-qbb.py:415" *)
  wire [63:0] zero_if_check;
  (* src = "attacks-qbb.py:416" *)
  wire [63:0] zero_if_double_check;
  assign \$100  = pbq & (* src = "attacks-qbb.py:266" *) rqk;
  assign \$102  = ~ (* src = "attacks-qbb.py:266" *) enemy;
  assign \$104  = \$100  & (* src = "attacks-qbb.py:266" *) \$102 ;
  assign \$106  = nbk & (* src = "attacks-qbb.py:267" *) rqk;
  assign \$108  = ~ (* src = "attacks-qbb.py:267" *) enemy;
  assign \$10  = \$6  & (* src = "attacks-qbb.py:255" *) \$8 ;
  assign \$110  = \$106  & (* src = "attacks-qbb.py:267" *) \$108 ;
  assign \$112  = pbq & (* src = "attacks-qbb.py:269" *) nbk;
  assign \$114  = \$112  & (* src = "attacks-qbb.py:269" *) rqk;
  assign \$116  = ~ (* src = "attacks-qbb.py:269" *) enemy;
  assign \$118  = \$114  & (* src = "attacks-qbb.py:269" *) \$116 ;
  assign \$120  = pbq | (* src = "attacks-qbb.py:270" *) nbk;
  assign \$122  = \$120  | (* src = "attacks-qbb.py:270" *) rqk;
  assign \$125  = ~ (* src = "attacks-qbb.py:271" *) pbq;
  assign \$127  = ~ (* src = "attacks-qbb.py:271" *) nbk;
  assign \$12  = ~ (* src = "attacks-qbb.py:255" *) enemy;
  assign \$129  = \$125  & (* src = "attacks-qbb.py:271" *) \$127 ;
  assign \$131  = ~ (* src = "attacks-qbb.py:271" *) rqk;
  assign \$133  = \$129  & (* src = "attacks-qbb.py:271" *) \$131 ;
  assign \$135  = bqueens | (* src = "attacks-qbb.py:278" *) brooks;
  assign \$137  = bqueens | (* src = "attacks-qbb.py:279" *) bbishops;
  assign \$139  = bqueens | (* src = "attacks-qbb.py:280" *) brooks;
  assign \$141  = bqueens | (* src = "attacks-qbb.py:281" *) bbishops;
  assign \$143  = bqueens | (* src = "attacks-qbb.py:282" *) brooks;
  assign \$145  = bqueens | (* src = "attacks-qbb.py:283" *) bbishops;
  assign \$147  = bqueens | (* src = "attacks-qbb.py:284" *) brooks;
  assign \$14  = \$10  & (* src = "attacks-qbb.py:255" *) \$12 ;
  assign \$149  = bqueens | (* src = "attacks-qbb.py:285" *) bbishops;
  assign \$151  = occ ^ (* src = "attacks-qbb.py:287" *) wking;
  assign \$153  = occ ^ (* src = "attacks-qbb.py:288" *) wking;
  assign \$155  = occ ^ (* src = "attacks-qbb.py:289" *) wking;
  assign \$157  = occ ^ (* src = "attacks-qbb.py:290" *) wking;
  assign \$159  = occ ^ (* src = "attacks-qbb.py:291" *) wking;
  assign \$161  = occ ^ (* src = "attacks-qbb.py:292" *) wking;
  assign \$163  = occ ^ (* src = "attacks-qbb.py:293" *) wking;
  assign \$165  = occ ^ (* src = "attacks-qbb.py:294" *) wking;
  assign \$167  = black_fill_northwest_output | (* src = "attacks-qbb.py:365" *) black_fill_north_output;
  assign \$16  = ~ (* src = "attacks-qbb.py:256" *) pbq;
  assign \$169  = \$167  | (* src = "attacks-qbb.py:365" *) black_fill_northeast_output;
  assign \$171  = \$169  | (* src = "attacks-qbb.py:365" *) black_fill_east_output;
  assign \$173  = \$171  | (* src = "attacks-qbb.py:365" *) black_fill_southeast_output;
  assign \$175  = \$173  | (* src = "attacks-qbb.py:365" *) black_fill_south_output;
  assign \$177  = \$175  | (* src = "attacks-qbb.py:365" *) black_fill_southwest_output;
  assign \$179  = \$177  | (* src = "attacks-qbb.py:365" *) black_fill_west_output;
  assign \$181  = \$179  | (* src = "attacks-qbb.py:365" *) black_pawns_se;
  assign \$183  = \$181  | (* src = "attacks-qbb.py:365" *) black_pawns_sw;
  assign \$185  = \$183  | (* src = "attacks-qbb.py:365" *) black_knights_nne;
  assign \$187  = \$185  | (* src = "attacks-qbb.py:365" *) black_knights_ene;
  assign \$18  = \$16  & (* src = "attacks-qbb.py:256" *) nbk;
  assign \$189  = \$187  | (* src = "attacks-qbb.py:365" *) black_knights_ese;
  assign \$191  = \$189  | (* src = "attacks-qbb.py:365" *) black_knights_sse;
  assign \$193  = \$191  | (* src = "attacks-qbb.py:365" *) black_knights_ssw;
  assign \$195  = \$193  | (* src = "attacks-qbb.py:365" *) black_knights_wsw;
  assign \$197  = \$195  | (* src = "attacks-qbb.py:365" *) black_knights_wnw;
  assign \$199  = \$197  | (* src = "attacks-qbb.py:365" *) black_knights_nnw;
  assign \$201  = \$199  | (* src = "attacks-qbb.py:365" *) black_king_n;
  assign \$203  = \$201  | (* src = "attacks-qbb.py:365" *) black_king_ne;
  assign \$205  = \$203  | (* src = "attacks-qbb.py:365" *) black_king_e;
  assign \$207  = \$205  | (* src = "attacks-qbb.py:365" *) black_king_se;
  assign \$20  = ~ (* src = "attacks-qbb.py:256" *) rqk;
  assign \$209  = \$207  | (* src = "attacks-qbb.py:365" *) black_king_s;
  assign \$211  = \$209  | (* src = "attacks-qbb.py:365" *) black_king_sw;
  assign \$213  = \$211  | (* src = "attacks-qbb.py:365" *) black_king_w;
  assign \$215  = \$213  | (* src = "attacks-qbb.py:366" *) black_king_nw;
  assign \$217  = black_fill_north_output & (* src = "attacks-qbb.py:370" *) white_king_fill_south_output;
  assign \$219  = black_fill_south_output & (* src = "attacks-qbb.py:371" *) white_king_fill_north_output;
  assign \$221  = \$217  | (* src = "attacks-qbb.py:371" *) \$219 ;
  assign \$223  = black_fill_west_output & (* src = "attacks-qbb.py:374" *) white_king_fill_east_output;
  assign \$225  = black_fill_east_output & (* src = "attacks-qbb.py:375" *) white_king_fill_west_output;
  assign \$227  = \$223  | (* src = "attacks-qbb.py:375" *) \$225 ;
  assign \$22  = \$18  & (* src = "attacks-qbb.py:256" *) \$20 ;
  assign \$229  = black_fill_southwest_output & (* src = "attacks-qbb.py:378" *) white_king_fill_northeast_output;
  assign \$231  = black_fill_northeast_output & (* src = "attacks-qbb.py:379" *) white_king_fill_northeast_output;
  assign \$233  = \$229  | (* src = "attacks-qbb.py:379" *) \$231 ;
  assign \$235  = black_fill_northwest_output & (* src = "attacks-qbb.py:382" *) white_king_fill_southeast_output;
  assign \$237  = black_fill_southeast_output & (* src = "attacks-qbb.py:383" *) white_king_fill_northwest_output;
  assign \$239  = \$235  | (* src = "attacks-qbb.py:383" *) \$237 ;
  assign \$241  = horizontal_in_between | (* src = "attacks-qbb.py:387" *) vertical_in_between;
  assign \$243  = diagonal_in_between | (* src = "attacks-qbb.py:390" *) antidiagonal_in_between;
  assign \$245  = white_king_pawn_attacks_ne | (* src = "attacks-qbb.py:395" *) white_king_pawn_attacks_nw;
  assign \$247  = white_king_knight_attacks_nne | (* src = "attacks-qbb.py:404" *) white_king_knight_attacks_ene;
  assign \$24  = ~ (* src = "attacks-qbb.py:256" *) enemy;
  assign \$249  = \$247  | (* src = "attacks-qbb.py:404" *) white_king_knight_attacks_ese;
  assign \$251  = \$249  | (* src = "attacks-qbb.py:404" *) white_king_knight_attacks_sse;
  assign \$253  = \$251  | (* src = "attacks-qbb.py:404" *) white_king_knight_attacks_ssw;
  assign \$255  = \$253  | (* src = "attacks-qbb.py:404" *) white_king_knight_attacks_wsw;
  assign \$257  = \$255  | (* src = "attacks-qbb.py:404" *) white_king_knight_attacks_wnw;
  assign \$259  = \$257  | (* src = "attacks-qbb.py:405" *) white_king_knight_attacks_nnw;
  assign \$261  = ortho_king_attacks | (* src = "attacks-qbb.py:409" *) diag_king_attacks;
  assign \$263  = all_in_between & (* src = "attacks-qbb.py:421" *) \empty$124 ;
  assign \$265  = brooks | (* src = "attacks-qbb.py:425" *) bqueens;
  assign \$267  = ortho_king_attacks & (* src = "attacks-qbb.py:425" *) \$265 ;
  assign \$26  = \$22  & (* src = "attacks-qbb.py:256" *) \$24 ;
  assign \$269  = bbishops | (* src = "attacks-qbb.py:425" *) bqueens;
  assign \$271  = diag_king_attacks & (* src = "attacks-qbb.py:425" *) \$269 ;
  assign \$273  = \$267  | (* src = "attacks-qbb.py:425" *) \$271 ;
  assign \$275  = knight_king_attacks & (* src = "attacks-qbb.py:425" *) bknights;
  assign \$277  = \$273  | (* src = "attacks-qbb.py:425" *) \$275 ;
  assign \$279  = pawn_king_attacks & (* src = "attacks-qbb.py:426" *) bpawns;
  assign \$281  = \$277  | (* src = "attacks-qbb.py:426" *) \$279 ;
  assign \$284  = attacked_by_black & (* src = "attacks-qbb.py:428" *) wking;
  assign \$286  = \$284  - (* src = "attacks-qbb.py:428" *) 1'h1;
  assign \$288  = \$286  >>> (* src = "attacks-qbb.py:428" *) 6'h3f;
  assign \$28  = pbq & (* src = "attacks-qbb.py:257" *) nbk;
  assign \$291  = checking_pieces - (* src = "attacks-qbb.py:430" *) 1'h1;
  assign \$293  = checking_pieces & (* src = "attacks-qbb.py:430" *) \$291 ;
  assign \$295  = \$293  - (* src = "attacks-qbb.py:430" *) 1'h1;
  assign \$297  = \$295  >>> (* src = "attacks-qbb.py:430" *) 6'h3f;
  assign \$300  = checking_pieces | (* src = "attacks-qbb.py:432" *) blockers;
  assign \$302  = $signed(\$300 ) | (* src = "attacks-qbb.py:432" *) $signed(zero_if_check);
  assign \$305  = ~ (* src = "attacks-qbb.py:433" *) friendly;
  assign \$307  = \$305  & (* src = "attacks-qbb.py:433" *) check_dest;
  assign \$30  = ~ (* src = "attacks-qbb.py:257" *) enemy;
  assign \$309  = $signed(\$307 ) & (* src = "attacks-qbb.py:433" *) $signed(zero_if_double_check);
  assign \$311  = wrooks | (* src = "attacks-qbb.py:443" *) wqueens;
  assign \$314  = all_in_between ^ (* src = "attacks-qbb.py:444" *) horizontal_in_between;
  assign \$313  = ~ (* src = "attacks-qbb.py:444" *) \$314 ;
  assign \$317  = \$311  & (* src = "attacks-qbb.py:444" *) \$313 ;
  assign \$319  = white_fill_east_output & (* src = "attacks-qbb.py:449" *) target_mask;
  assign \$321  = white_fill_west_output & (* src = "attacks-qbb.py:453" *) target_mask;
  assign \$323  = wrooks | (* src = "attacks-qbb.py:456" *) wqueens;
  assign \$326  = all_in_between ^ (* src = "attacks-qbb.py:457" *) vertical_in_between;
  assign \$325  = ~ (* src = "attacks-qbb.py:457" *) \$326 ;
  assign \$32  = \$28  & (* src = "attacks-qbb.py:257" *) \$30 ;
  assign \$329  = \$323  & (* src = "attacks-qbb.py:457" *) \$325 ;
  assign \$331  = white_fill_north_output & (* src = "attacks-qbb.py:462" *) target_mask;
  assign \$333  = white_fill_south_output & (* src = "attacks-qbb.py:466" *) target_mask;
  assign \$335  = wbishops | (* src = "attacks-qbb.py:469" *) wqueens;
  assign \$338  = all_in_between ^ (* src = "attacks-qbb.py:470" *) diagonal_in_between;
  assign \$337  = ~ (* src = "attacks-qbb.py:470" *) \$338 ;
  assign \$341  = \$335  & (* src = "attacks-qbb.py:470" *) \$337 ;
  assign \$343  = white_fill_northeast_output & (* src = "attacks-qbb.py:475" *) target_mask;
  assign \$345  = white_fill_northeast_output & (* src = "attacks-qbb.py:488" *) target_mask;
  assign \$347  = white_fill_southwest_output & (* src = "attacks-qbb.py:479" *) target_mask;
  assign \$34  = ~ (* src = "attacks-qbb.py:258" *) pbq;
  assign \$349  = white_fill_southwest_output & (* src = "attacks-qbb.py:492" *) target_mask;
  assign \$351  = wbishops | (* src = "attacks-qbb.py:482" *) wqueens;
  assign \$354  = all_in_between ^ (* src = "attacks-qbb.py:483" *) antidiagonal_in_between;
  assign \$353  = ~ (* src = "attacks-qbb.py:483" *) \$354 ;
  assign \$357  = \$351  & (* src = "attacks-qbb.py:483" *) \$353 ;
  assign \$36  = ~ (* src = "attacks-qbb.py:258" *) nbk;
  assign \$38  = \$34  & (* src = "attacks-qbb.py:258" *) \$36 ;
  assign \$40  = \$38  & (* src = "attacks-qbb.py:258" *) rqk;
  assign \$42  = ~ (* src = "attacks-qbb.py:258" *) enemy;
  assign \$44  = \$40  & (* src = "attacks-qbb.py:258" *) \$42 ;
  assign \$46  = pbq & (* src = "attacks-qbb.py:259" *) rqk;
  assign \$48  = ~ (* src = "attacks-qbb.py:259" *) enemy;
  assign \$4  = ~ (* src = "attacks-qbb.py:255" *) nbk;
  assign \$50  = \$46  & (* src = "attacks-qbb.py:259" *) \$48 ;
  assign \$52  = nbk & (* src = "attacks-qbb.py:260" *) rqk;
  assign \$54  = ~ (* src = "attacks-qbb.py:260" *) enemy;
  assign \$56  = \$52  & (* src = "attacks-qbb.py:260" *) \$54 ;
  assign \$58  = ~ (* src = "attacks-qbb.py:262" *) nbk;
  assign \$60  = pbq & (* src = "attacks-qbb.py:262" *) \$58 ;
  assign \$62  = ~ (* src = "attacks-qbb.py:262" *) rqk;
  assign \$64  = \$60  & (* src = "attacks-qbb.py:262" *) \$62 ;
  assign \$66  = ~ (* src = "attacks-qbb.py:262" *) enemy;
  assign \$68  = \$64  & (* src = "attacks-qbb.py:262" *) \$66 ;
  assign \$6  = pbq & (* src = "attacks-qbb.py:255" *) \$4 ;
  assign \$70  = ~ (* src = "attacks-qbb.py:263" *) pbq;
  assign \$72  = \$70  & (* src = "attacks-qbb.py:263" *) nbk;
  assign \$74  = ~ (* src = "attacks-qbb.py:263" *) rqk;
  assign \$76  = \$72  & (* src = "attacks-qbb.py:263" *) \$74 ;
  assign \$78  = ~ (* src = "attacks-qbb.py:263" *) enemy;
  assign \$80  = \$76  & (* src = "attacks-qbb.py:263" *) \$78 ;
  assign \$82  = pbq & (* src = "attacks-qbb.py:264" *) nbk;
  assign \$84  = ~ (* src = "attacks-qbb.py:264" *) enemy;
  assign \$86  = \$82  & (* src = "attacks-qbb.py:264" *) \$84 ;
  assign \$88  = ~ (* src = "attacks-qbb.py:265" *) pbq;
  assign \$8  = ~ (* src = "attacks-qbb.py:255" *) rqk;
  assign \$90  = ~ (* src = "attacks-qbb.py:265" *) nbk;
  assign \$92  = \$88  & (* src = "attacks-qbb.py:265" *) \$90 ;
  assign \$94  = \$92  & (* src = "attacks-qbb.py:265" *) rqk;
  assign \$96  = ~ (* src = "attacks-qbb.py:265" *) enemy;
  assign \$98  = \$94  & (* src = "attacks-qbb.py:265" *) \$96 ;
  black_fill_east black_fill_east (
    .empty(black_fill_east_empty),
    .\output (black_fill_east_output),
    .pieces(black_fill_east_pieces)
  );
  black_fill_north black_fill_north (
    .empty(black_fill_north_empty),
    .\output (black_fill_north_output),
    .pieces(black_fill_north_pieces)
  );
  black_fill_northeast black_fill_northeast (
    .empty(black_fill_northeast_empty),
    .\output (black_fill_northeast_output),
    .pieces(black_fill_northeast_pieces)
  );
  black_fill_northwest black_fill_northwest (
    .empty(black_fill_northwest_empty),
    .\output (black_fill_northwest_output),
    .pieces(black_fill_northwest_pieces)
  );
  black_fill_south black_fill_south (
    .empty(black_fill_south_empty),
    .\output (black_fill_south_output),
    .pieces(black_fill_south_pieces)
  );
  black_fill_southeast black_fill_southeast (
    .empty(black_fill_southeast_empty),
    .\output (black_fill_southeast_output),
    .pieces(black_fill_southeast_pieces)
  );
  black_fill_southwest black_fill_southwest (
    .empty(black_fill_southwest_empty),
    .\output (black_fill_southwest_output),
    .pieces(black_fill_southwest_pieces)
  );
  black_fill_west black_fill_west (
    .empty(black_fill_west_empty),
    .\output (black_fill_west_output),
    .pieces(black_fill_west_pieces)
  );
  black_king black_king (
    .e(black_king_e),
    .n(black_king_n),
    .ne(black_king_ne),
    .nw(black_king_nw),
    .pieces(black_king_pieces),
    .s(black_king_s),
    .se(black_king_se),
    .sw(black_king_sw),
    .w(black_king_w)
  );
  black_knights black_knights (
    .ene(black_knights_ene),
    .ese(black_knights_ese),
    .knights(black_knights_knights),
    .nne(black_knights_nne),
    .nnw(black_knights_nnw),
    .sse(black_knights_sse),
    .ssw(black_knights_ssw),
    .wnw(black_knights_wnw),
    .wsw(black_knights_wsw)
  );
  black_pawns black_pawns (
    .pawns(black_pawns_pawns),
    .se(black_pawns_se),
    .sw(black_pawns_sw)
  );
  white_fill_east white_fill_east (
    .empty(white_fill_east_empty),
    .\output (white_fill_east_output),
    .pieces(white_fill_east_pieces)
  );
  white_fill_north white_fill_north (
    .empty(white_fill_north_empty),
    .\output (white_fill_north_output),
    .pieces(white_fill_north_pieces)
  );
  white_fill_northeast white_fill_northeast (
    .empty(white_fill_northeast_empty),
    .\output (white_fill_northeast_output),
    .pieces(white_fill_northeast_pieces)
  );
  white_fill_northwest white_fill_northwest (
    .empty(\empty$2 ),
    .pieces(\pieces$1 )
  );
  white_fill_south white_fill_south (
    .empty(white_fill_south_empty),
    .\output (white_fill_south_output),
    .pieces(white_fill_south_pieces)
  );
  white_fill_southeast white_fill_southeast (
    .empty(empty),
    .pieces(pieces)
  );
  white_fill_southwest white_fill_southwest (
    .empty(white_fill_southwest_empty),
    .\output (white_fill_southwest_output),
    .pieces(white_fill_southwest_pieces)
  );
  white_fill_west white_fill_west (
    .empty(white_fill_west_empty),
    .\output (white_fill_west_output),
    .pieces(white_fill_west_pieces)
  );
  white_king white_king (
    .pieces(\pieces$3 )
  );
  white_king_fill_east white_king_fill_east (
    .empty(white_king_fill_east_empty),
    .\output (white_king_fill_east_output),
    .pieces(white_king_fill_east_pieces)
  );
  white_king_fill_north white_king_fill_north (
    .empty(white_king_fill_north_empty),
    .\output (white_king_fill_north_output),
    .pieces(white_king_fill_north_pieces)
  );
  white_king_fill_northeast white_king_fill_northeast (
    .empty(white_king_fill_northeast_empty),
    .\output (white_king_fill_northeast_output),
    .pieces(white_king_fill_northeast_pieces)
  );
  white_king_fill_northwest white_king_fill_northwest (
    .empty(white_king_fill_northwest_empty),
    .\output (white_king_fill_northwest_output),
    .pieces(white_king_fill_northwest_pieces)
  );
  white_king_fill_south white_king_fill_south (
    .empty(white_king_fill_south_empty),
    .\output (white_king_fill_south_output),
    .pieces(white_king_fill_south_pieces)
  );
  white_king_fill_southeast white_king_fill_southeast (
    .empty(white_king_fill_southeast_empty),
    .\output (white_king_fill_southeast_output),
    .pieces(white_king_fill_southeast_pieces)
  );
  white_king_fill_southwest white_king_fill_southwest (
    .empty(white_king_fill_southwest_empty),
    .pieces(white_king_fill_southwest_pieces)
  );
  white_king_fill_west white_king_fill_west (
    .empty(white_king_fill_west_empty),
    .\output (white_king_fill_west_output),
    .pieces(white_king_fill_west_pieces)
  );
  white_king_knight_attacks white_king_knight_attacks (
    .ene(white_king_knight_attacks_ene),
    .ese(white_king_knight_attacks_ese),
    .knights(white_king_knight_attacks_knights),
    .nne(white_king_knight_attacks_nne),
    .nnw(white_king_knight_attacks_nnw),
    .sse(white_king_knight_attacks_sse),
    .ssw(white_king_knight_attacks_ssw),
    .wnw(white_king_knight_attacks_wnw),
    .wsw(white_king_knight_attacks_wsw)
  );
  white_king_pawn_attacks white_king_pawn_attacks (
    .ne(white_king_pawn_attacks_ne),
    .nw(white_king_pawn_attacks_nw),
    .pawns(white_king_pawn_attacks_pawns)
  );
  white_knights white_knights (
    .knights(white_knights_knights)
  );
  always @* begin
    \$next\wpawns  = 64'h0000000000000000;
    \$next\wpawns  = \$14 ;
  end
  always @* begin
    \$next\wknights  = 64'h0000000000000000;
    \$next\wknights  = \$26 ;
  end
  always @* begin
    \$next\bqueens  = 64'h0000000000000000;
    \$next\bqueens  = \$104 ;
  end
  always @* begin
    \$next\bking  = 64'h0000000000000000;
    \$next\bking  = \$110 ;
  end
  always @* begin
    \$next\friendly  = 64'h0000000000000000;
    \$next\friendly  = \$118 ;
  end
  always @* begin
    \$next\occ  = 64'h0000000000000000;
    \$next\occ  = \$122 ;
  end
  always @* begin
    \$next\empty$124  = 64'h0000000000000000;
    \$next\empty$124  = \$133 ;
  end
  always @* begin
    \$next\black_fill_north_pieces  = 64'h0000000000000000;
    \$next\black_fill_north_pieces  = \$135 ;
  end
  always @* begin
    \$next\black_fill_northeast_pieces  = 64'h0000000000000000;
    \$next\black_fill_northeast_pieces  = \$137 ;
  end
  always @* begin
    \$next\black_fill_east_pieces  = 64'h0000000000000000;
    \$next\black_fill_east_pieces  = \$139 ;
  end
  always @* begin
    \$next\black_fill_southeast_pieces  = 64'h0000000000000000;
    \$next\black_fill_southeast_pieces  = \$141 ;
  end
  always @* begin
    \$next\black_fill_south_pieces  = 64'h0000000000000000;
    \$next\black_fill_south_pieces  = \$143 ;
  end
  always @* begin
    \$next\wbishops  = 64'h0000000000000000;
    \$next\wbishops  = \$32 ;
  end
  always @* begin
    \$next\black_fill_southwest_pieces  = 64'h0000000000000000;
    \$next\black_fill_southwest_pieces  = \$145 ;
  end
  always @* begin
    \$next\black_fill_west_pieces  = 64'h0000000000000000;
    \$next\black_fill_west_pieces  = \$147 ;
  end
  always @* begin
    \$next\black_fill_northwest_pieces  = 64'h0000000000000000;
    \$next\black_fill_northwest_pieces  = \$149 ;
  end
  always @* begin
    \$next\black_fill_north_empty  = 64'h0000000000000000;
    \$next\black_fill_north_empty  = \$151 ;
  end
  always @* begin
    \$next\black_fill_northeast_empty  = 64'h0000000000000000;
    \$next\black_fill_northeast_empty  = \$153 ;
  end
  always @* begin
    \$next\black_fill_east_empty  = 64'h0000000000000000;
    \$next\black_fill_east_empty  = \$155 ;
  end
  always @* begin
    \$next\black_fill_southeast_empty  = 64'h0000000000000000;
    \$next\black_fill_southeast_empty  = \$157 ;
  end
  always @* begin
    \$next\black_fill_south_empty  = 64'h0000000000000000;
    \$next\black_fill_south_empty  = \$159 ;
  end
  always @* begin
    \$next\black_fill_southwest_empty  = 64'h0000000000000000;
    \$next\black_fill_southwest_empty  = \$161 ;
  end
  always @* begin
    \$next\black_fill_west_empty  = 64'h0000000000000000;
    \$next\black_fill_west_empty  = \$163 ;
  end
  always @* begin
    \$next\wrooks  = 64'h0000000000000000;
    \$next\wrooks  = \$44 ;
  end
  always @* begin
    \$next\black_fill_northwest_empty  = 64'h0000000000000000;
    \$next\black_fill_northwest_empty  = \$165 ;
  end
  always @* begin
    \$next\black_pawns_pawns  = 64'h0000000000000000;
    \$next\black_pawns_pawns  = bpawns;
  end
  always @* begin
    \$next\black_knights_knights  = 64'h0000000000000000;
    \$next\black_knights_knights  = bknights;
  end
  always @* begin
    \$next\black_king_pieces  = 64'h0000000000000000;
    \$next\black_king_pieces  = bking;
  end
  always @* begin
    \$next\white_king_fill_north_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_north_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_northeast_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_northeast_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_east_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_east_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_southeast_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_southeast_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_south_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_south_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_southwest_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_southwest_pieces  = wking;
  end
  always @* begin
    \$next\wqueens  = 64'h0000000000000000;
    \$next\wqueens  = \$50 ;
  end
  always @* begin
    \$next\white_king_fill_west_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_west_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_northwest_pieces  = 64'h0000000000000000;
    \$next\white_king_fill_northwest_pieces  = wking;
  end
  always @* begin
    \$next\white_king_fill_north_empty  = 64'h0000000000000000;
    \$next\white_king_fill_north_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_northeast_empty  = 64'h0000000000000000;
    \$next\white_king_fill_northeast_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_east_empty  = 64'h0000000000000000;
    \$next\white_king_fill_east_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_southeast_empty  = 64'h0000000000000000;
    \$next\white_king_fill_southeast_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_south_empty  = 64'h0000000000000000;
    \$next\white_king_fill_south_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_southwest_empty  = 64'h0000000000000000;
    \$next\white_king_fill_southwest_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_west_empty  = 64'h0000000000000000;
    \$next\white_king_fill_west_empty  = occ;
  end
  always @* begin
    \$next\white_king_fill_northwest_empty  = 64'h0000000000000000;
    \$next\white_king_fill_northwest_empty  = occ;
  end
  always @* begin
    \$next\wking  = 64'h0000000000000000;
    \$next\wking  = \$56 ;
  end
  always @* begin
    \$next\white_king_pawn_attacks_pawns  = 64'h0000000000000000;
    \$next\white_king_pawn_attacks_pawns  = wking;
  end
  always @* begin
    \$next\white_king_knight_attacks_knights  = 64'h0000000000000000;
    \$next\white_king_knight_attacks_knights  = wking;
  end
  always @* begin
    \$next\white_knights_knights  = 64'h0000000000000000;
    \$next\white_knights_knights  = wknights;
  end
  always @* begin
    \$next\attacked_by_black  = 64'h0000000000000000;
    \$next\attacked_by_black  = \$215 ;
  end
  always @* begin
    \$next\vertical_in_between  = 64'h0000000000000000;
    \$next\vertical_in_between  = \$221 ;
  end
  always @* begin
    \$next\horizontal_in_between  = 64'h0000000000000000;
    \$next\horizontal_in_between  = \$227 ;
  end
  always @* begin
    \$next\diagonal_in_between  = 64'h0000000000000000;
    \$next\diagonal_in_between  = \$233 ;
  end
  always @* begin
    \$next\antidiagonal_in_between  = 64'h0000000000000000;
    \$next\antidiagonal_in_between  = \$239 ;
  end
  always @* begin
    \$next\ortho_king_attacks  = 64'h0000000000000000;
    \$next\ortho_king_attacks  = \$241 ;
  end
  always @* begin
    \$next\diag_king_attacks  = 64'h0000000000000000;
    \$next\diag_king_attacks  = \$243 ;
  end
  always @* begin
    \$next\bpawns  = 64'h0000000000000000;
    \$next\bpawns  = \$68 ;
  end
  always @* begin
    \$next\pawn_king_attacks  = 64'h0000000000000000;
    \$next\pawn_king_attacks  = \$245 ;
  end
  always @* begin
    \$next\knight_king_attacks  = 64'h0000000000000000;
    \$next\knight_king_attacks  = \$259 ;
  end
  always @* begin
    \$next\all_in_between  = 64'h0000000000000000;
    \$next\all_in_between  = \$261 ;
  end
  always @* begin
    \$next\blockers  = 64'h0000000000000000;
    \$next\blockers  = \$263 ;
  end
  always @* begin
    \$next\checking_pieces  = 64'h0000000000000000;
    \$next\checking_pieces  = \$281 ;
  end
  always @* begin
    \$next\zero_if_check  = 64'h0000000000000000;
    \$next\zero_if_check  = \$283 [63:0];
  end
  always @* begin
    \$next\zero_if_double_check  = 64'h0000000000000000;
    \$next\zero_if_double_check  = \$290 [63:0];
  end
  always @* begin
    \$next\check_dest  = 64'h0000000000000000;
    \$next\check_dest  = \$299 [63:0];
  end
  always @* begin
    \$next\target_mask  = 64'h0000000000000000;
    \$next\target_mask  = \$304 [63:0];
  end
  always @* begin
    \$next\horizontal_sliders  = 64'h0000000000000000;
    \$next\horizontal_sliders  = \$317 ;
  end
  always @* begin
    \$next\bknights  = 64'h0000000000000000;
    \$next\bknights  = \$80 ;
  end
  always @* begin
    \$next\white_fill_east_pieces  = 64'h0000000000000000;
    \$next\white_fill_east_pieces  = horizontal_sliders;
  end
  always @* begin
    \$next\white_fill_east_empty  = 64'h0000000000000000;
    \$next\white_fill_east_empty  = \empty$124 ;
  end
  always @* begin
    \$next\e  = 64'h0000000000000000;
    \$next\e  = \$319 ;
  end
  always @* begin
    \$next\white_fill_west_pieces  = 64'h0000000000000000;
    \$next\white_fill_west_pieces  = horizontal_sliders;
  end
  always @* begin
    \$next\white_fill_west_empty  = 64'h0000000000000000;
    \$next\white_fill_west_empty  = \empty$124 ;
  end
  always @* begin
    \$next\w  = 64'h0000000000000000;
    \$next\w  = \$321 ;
  end
  always @* begin
    \$next\vertical_sliders  = 64'h0000000000000000;
    \$next\vertical_sliders  = \$329 ;
  end
  always @* begin
    \$next\white_fill_north_pieces  = 64'h0000000000000000;
    \$next\white_fill_north_pieces  = vertical_sliders;
  end
  always @* begin
    \$next\white_fill_north_empty  = 64'h0000000000000000;
    \$next\white_fill_north_empty  = \empty$124 ;
  end
  always @* begin
    \$next\n  = 64'h0000000000000000;
    \$next\n  = \$331 ;
  end
  always @* begin
    \$next\bbishops  = 64'h0000000000000000;
    \$next\bbishops  = \$86 ;
  end
  always @* begin
    \$next\white_fill_south_pieces  = 64'h0000000000000000;
    \$next\white_fill_south_pieces  = vertical_sliders;
  end
  always @* begin
    \$next\white_fill_south_empty  = 64'h0000000000000000;
    \$next\white_fill_south_empty  = \empty$124 ;
  end
  always @* begin
    \$next\s  = 64'h0000000000000000;
    \$next\s  = \$333 ;
  end
  always @* begin
    \$next\diagonal_sliders  = 64'h0000000000000000;
    \$next\diagonal_sliders  = \$341 ;
  end
  always @* begin
    \$next\white_fill_northeast_pieces  = 64'h0000000000000000;
    \$next\white_fill_northeast_pieces  = diagonal_sliders;
    \$next\white_fill_northeast_pieces  = antidiagonal_sliders;
  end
  always @* begin
    \$next\white_fill_northeast_empty  = 64'h0000000000000000;
    \$next\white_fill_northeast_empty  = \empty$124 ;
    \$next\white_fill_northeast_empty  = \empty$124 ;
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = \$343 ;
    \$next\ne  = \$345 ;
  end
  always @* begin
    \$next\white_fill_southwest_pieces  = 64'h0000000000000000;
    \$next\white_fill_southwest_pieces  = diagonal_sliders;
    \$next\white_fill_southwest_pieces  = antidiagonal_sliders;
  end
  always @* begin
    \$next\white_fill_southwest_empty  = 64'h0000000000000000;
    \$next\white_fill_southwest_empty  = \empty$124 ;
    \$next\white_fill_southwest_empty  = \empty$124 ;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = \$347 ;
    \$next\sw  = \$349 ;
  end
  always @* begin
    \$next\brooks  = 64'h0000000000000000;
    \$next\brooks  = \$98 ;
  end
  always @* begin
    \$next\antidiagonal_sliders  = 64'h0000000000000000;
    \$next\antidiagonal_sliders  = \$357 ;
  end
  assign \$283  = \$288 ;
  assign \$290  = \$297 ;
  assign \$299  = \$302 ;
  assign \$304  = \$309 ;
  assign antidiagonal_sliders = \$next\antidiagonal_sliders ;
  assign sw = \$next\sw ;
  assign white_fill_southwest_empty = \$next\white_fill_southwest_empty ;
  assign white_fill_southwest_pieces = \$next\white_fill_southwest_pieces ;
  assign ne = \$next\ne ;
  assign white_fill_northeast_empty = \$next\white_fill_northeast_empty ;
  assign white_fill_northeast_pieces = \$next\white_fill_northeast_pieces ;
  assign diagonal_sliders = \$next\diagonal_sliders ;
  assign s = \$next\s ;
  assign white_fill_south_empty = \$next\white_fill_south_empty ;
  assign white_fill_south_pieces = \$next\white_fill_south_pieces ;
  assign n = \$next\n ;
  assign white_fill_north_empty = \$next\white_fill_north_empty ;
  assign white_fill_north_pieces = \$next\white_fill_north_pieces ;
  assign vertical_sliders = \$next\vertical_sliders ;
  assign w = \$next\w ;
  assign white_fill_west_empty = \$next\white_fill_west_empty ;
  assign white_fill_west_pieces = \$next\white_fill_west_pieces ;
  assign e = \$next\e ;
  assign white_fill_east_empty = \$next\white_fill_east_empty ;
  assign white_fill_east_pieces = \$next\white_fill_east_pieces ;
  assign horizontal_sliders = \$next\horizontal_sliders ;
  assign target_mask = \$next\target_mask ;
  assign check_dest = \$next\check_dest ;
  assign zero_if_double_check = \$next\zero_if_double_check ;
  assign zero_if_check = \$next\zero_if_check ;
  assign checking_pieces = \$next\checking_pieces ;
  assign blockers = \$next\blockers ;
  assign all_in_between = \$next\all_in_between ;
  assign knight_king_attacks = \$next\knight_king_attacks ;
  assign pawn_king_attacks = \$next\pawn_king_attacks ;
  assign diag_king_attacks = \$next\diag_king_attacks ;
  assign ortho_king_attacks = \$next\ortho_king_attacks ;
  assign antidiagonal_in_between = \$next\antidiagonal_in_between ;
  assign diagonal_in_between = \$next\diagonal_in_between ;
  assign horizontal_in_between = \$next\horizontal_in_between ;
  assign vertical_in_between = \$next\vertical_in_between ;
  assign attacked_by_black = \$next\attacked_by_black ;
  assign white_knights_knights = \$next\white_knights_knights ;
  assign white_king_knight_attacks_knights = \$next\white_king_knight_attacks_knights ;
  assign white_king_pawn_attacks_pawns = \$next\white_king_pawn_attacks_pawns ;
  assign white_king_fill_northwest_empty = \$next\white_king_fill_northwest_empty ;
  assign white_king_fill_west_empty = \$next\white_king_fill_west_empty ;
  assign white_king_fill_southwest_empty = \$next\white_king_fill_southwest_empty ;
  assign white_king_fill_south_empty = \$next\white_king_fill_south_empty ;
  assign white_king_fill_southeast_empty = \$next\white_king_fill_southeast_empty ;
  assign white_king_fill_east_empty = \$next\white_king_fill_east_empty ;
  assign white_king_fill_northeast_empty = \$next\white_king_fill_northeast_empty ;
  assign white_king_fill_north_empty = \$next\white_king_fill_north_empty ;
  assign white_king_fill_northwest_pieces = \$next\white_king_fill_northwest_pieces ;
  assign white_king_fill_west_pieces = \$next\white_king_fill_west_pieces ;
  assign white_king_fill_southwest_pieces = \$next\white_king_fill_southwest_pieces ;
  assign white_king_fill_south_pieces = \$next\white_king_fill_south_pieces ;
  assign white_king_fill_southeast_pieces = \$next\white_king_fill_southeast_pieces ;
  assign white_king_fill_east_pieces = \$next\white_king_fill_east_pieces ;
  assign white_king_fill_northeast_pieces = \$next\white_king_fill_northeast_pieces ;
  assign white_king_fill_north_pieces = \$next\white_king_fill_north_pieces ;
  assign black_king_pieces = \$next\black_king_pieces ;
  assign black_knights_knights = \$next\black_knights_knights ;
  assign black_pawns_pawns = \$next\black_pawns_pawns ;
  assign black_fill_northwest_empty = \$next\black_fill_northwest_empty ;
  assign black_fill_west_empty = \$next\black_fill_west_empty ;
  assign black_fill_southwest_empty = \$next\black_fill_southwest_empty ;
  assign black_fill_south_empty = \$next\black_fill_south_empty ;
  assign black_fill_southeast_empty = \$next\black_fill_southeast_empty ;
  assign black_fill_east_empty = \$next\black_fill_east_empty ;
  assign black_fill_northeast_empty = \$next\black_fill_northeast_empty ;
  assign black_fill_north_empty = \$next\black_fill_north_empty ;
  assign black_fill_northwest_pieces = \$next\black_fill_northwest_pieces ;
  assign black_fill_west_pieces = \$next\black_fill_west_pieces ;
  assign black_fill_southwest_pieces = \$next\black_fill_southwest_pieces ;
  assign black_fill_south_pieces = \$next\black_fill_south_pieces ;
  assign black_fill_southeast_pieces = \$next\black_fill_southeast_pieces ;
  assign black_fill_east_pieces = \$next\black_fill_east_pieces ;
  assign black_fill_northeast_pieces = \$next\black_fill_northeast_pieces ;
  assign black_fill_north_pieces = \$next\black_fill_north_pieces ;
  assign \empty$124  = \$next\empty$124 ;
  assign occ = \$next\occ ;
  assign friendly = \$next\friendly ;
  assign bking = \$next\bking ;
  assign bqueens = \$next\bqueens ;
  assign brooks = \$next\brooks ;
  assign bbishops = \$next\bbishops ;
  assign bknights = \$next\bknights ;
  assign bpawns = \$next\bpawns ;
  assign wking = \$next\wking ;
  assign wqueens = \$next\wqueens ;
  assign wrooks = \$next\wrooks ;
  assign wbishops = \$next\wbishops ;
  assign wknights = \$next\wknights ;
  assign wpawns = \$next\wpawns ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_east" *)
(* generator = "nMigen" *)
module white_fill_east(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [64:0] \$10 ;
  wire [64:0] \$12 ;
  wire [64:0] \$13 ;
  wire [64:0] \$15 ;
  wire [66:0] \$17 ;
  wire [66:0] \$18 ;
  wire [66:0] \$20 ;
  wire [66:0] \$22 ;
  wire [66:0] \$24 ;
  wire [66:0] \$25 ;
  wire [66:0] \$27 ;
  wire [70:0] \$29 ;
  wire [63:0] \$3 ;
  wire [70:0] \$30 ;
  wire [70:0] \$32 ;
  wire [70:0] \$34 ;
  wire [64:0] \$36 ;
  wire [64:0] \$37 ;
  wire [7:0] \$39 ;
  wire [64:0] \$41 ;
  wire [64:0] \$5 ;
  wire [64:0] \$6 ;
  wire [64:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 1'h1;
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = empty0 <<< (* src = "attacks-qbb.py:35" *) 2'h2;
  assign \$1  = ~ (* src = "attacks-qbb.py:168" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 2'h2;
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = empty1 <<< (* src = "attacks-qbb.py:37" *) 3'h4;
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = empty2 <<< (* src = "attacks-qbb.py:38" *) 1'h1;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:168" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = empty <<< (* src = "attacks-qbb.py:33" *) 1'h1;
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_north" *)
(* generator = "nMigen" *)
module white_fill_north(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$11 ;
  wire [78:0] \$13 ;
  wire [94:0] \$15 ;
  wire [94:0] \$16 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$23 ;
  wire [94:0] \$25 ;
  wire [126:0] \$27 ;
  wire [126:0] \$28 ;
  wire [78:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [78:0] \$34 ;
  wire [78:0] \$35 ;
  wire [78:0] \$37 ;
  wire [78:0] \$4 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$11  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 4'h8;
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = empty0 <<< (* src = "attacks-qbb.py:35" *) 5'h10;
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = pieces & (* src = "attacks-qbb.py:32" *) 64'hffffffffffffffff;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 5'h10;
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = empty1 <<< (* src = "attacks-qbb.py:37" *) 6'h20;
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$35  = empty2 <<< (* src = "attacks-qbb.py:38" *) 4'h8;
  assign \$37  = \$35  & (* src = "attacks-qbb.py:38" *) 64'hffffffffffffffff;
  assign \$4  = empty <<< (* src = "attacks-qbb.py:33" *) 4'h8;
  assign \$6  = pieces0 & (* src = "attacks-qbb.py:33" *) \$4 ;
  assign \$8  = empty | (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$1 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$3 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$10 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$34 [63:0];
  end
  assign \$3  = \$8 ;
  assign \$10  = \$13 ;
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \$34  = \$37 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_northeast" *)
(* generator = "nMigen" *)
module white_fill_northeast(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$12 ;
  wire [78:0] \$13 ;
  wire [78:0] \$15 ;
  wire [94:0] \$17 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$24 ;
  wire [94:0] \$25 ;
  wire [94:0] \$27 ;
  wire [126:0] \$29 ;
  wire [63:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [126:0] \$34 ;
  wire [78:0] \$36 ;
  wire [78:0] \$37 ;
  wire [7:0] \$39 ;
  wire [78:0] \$41 ;
  wire [78:0] \$5 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 4'h9;
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = empty0 <<< (* src = "attacks-qbb.py:35" *) 5'h12;
  assign \$1  = ~ (* src = "attacks-qbb.py:167" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 5'h12;
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = empty1 <<< (* src = "attacks-qbb.py:37" *) 6'h24;
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = empty2 <<< (* src = "attacks-qbb.py:38" *) 4'h9;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:167" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = empty <<< (* src = "attacks-qbb.py:33" *) 4'h9;
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_northwest" *)
(* generator = "nMigen" *)
module white_fill_northwest(empty, pieces);
  wire [63:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$12 ;
  wire [70:0] \$13 ;
  wire [70:0] \$15 ;
  wire [78:0] \$17 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$24 ;
  wire [78:0] \$25 ;
  wire [78:0] \$27 ;
  wire [94:0] \$29 ;
  wire [63:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [94:0] \$34 ;
  wire [70:0] \$36 ;
  wire [70:0] \$37 ;
  wire [63:0] \$39 ;
  wire [70:0] \$41 ;
  wire [70:0] \$5 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff9);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff2);
  assign \$1  = ~ (* src = "attacks-qbb.py:173" *) 64'h8080808080808080;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff2);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe4);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff9);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:173" *) 64'h8080808080808080;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff9);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_south" *)
(* generator = "nMigen" *)
module white_fill_south(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$11 ;
  wire [70:0] \$13 ;
  wire [78:0] \$15 ;
  wire [78:0] \$16 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$23 ;
  wire [78:0] \$25 ;
  wire [94:0] \$27 ;
  wire [94:0] \$28 ;
  wire [70:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [70:0] \$34 ;
  wire [70:0] \$35 ;
  wire [70:0] \$37 ;
  wire [70:0] \$4 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$11  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff8);
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff0);
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = pieces & (* src = "attacks-qbb.py:32" *) 64'hffffffffffffffff;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff0);
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe0);
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$35  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff8);
  assign \$37  = \$35  & (* src = "attacks-qbb.py:38" *) 64'hffffffffffffffff;
  assign \$4  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff8);
  assign \$6  = pieces0 & (* src = "attacks-qbb.py:33" *) \$4 ;
  assign \$8  = empty | (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$1 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$3 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$10 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$34 [63:0];
  end
  assign \$3  = \$8 ;
  assign \$10  = \$13 ;
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \$34  = \$37 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_southeast" *)
(* generator = "nMigen" *)
module white_fill_southeast(empty, pieces);
  wire [7:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$12 ;
  wire [70:0] \$13 ;
  wire [70:0] \$15 ;
  wire [78:0] \$17 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$24 ;
  wire [78:0] \$25 ;
  wire [78:0] \$27 ;
  wire [94:0] \$29 ;
  wire [63:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [94:0] \$34 ;
  wire [70:0] \$36 ;
  wire [70:0] \$37 ;
  wire [7:0] \$39 ;
  wire [70:0] \$41 ;
  wire [70:0] \$5 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff9);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff2);
  assign \$1  = ~ (* src = "attacks-qbb.py:169" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff2);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe4);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff9);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:169" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff9);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_southwest" *)
(* generator = "nMigen" *)
module white_fill_southwest(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$12 ;
  wire [78:0] \$13 ;
  wire [78:0] \$15 ;
  wire [94:0] \$17 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$24 ;
  wire [94:0] \$25 ;
  wire [94:0] \$27 ;
  wire [126:0] \$29 ;
  wire [63:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [126:0] \$34 ;
  wire [78:0] \$36 ;
  wire [78:0] \$37 ;
  wire [63:0] \$39 ;
  wire [78:0] \$41 ;
  wire [78:0] \$5 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff7);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hffffffffffffffee);
  assign \$1  = ~ (* src = "attacks-qbb.py:171" *) 64'h8080808080808080;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hffffffffffffffee);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffdc);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff7);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:171" *) 64'h8080808080808080;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff7);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_fill_west" *)
(* generator = "nMigen" *)
module white_fill_west(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [63:0] \$11 ;
  wire [63:0] \$13 ;
  wire [64:0] \$15 ;
  wire [64:0] \$16 ;
  wire [64:0] \$18 ;
  wire [64:0] \$20 ;
  wire [64:0] \$22 ;
  wire [64:0] \$23 ;
  wire [64:0] \$25 ;
  wire [66:0] \$27 ;
  wire [66:0] \$28 ;
  wire [63:0] \$3 ;
  wire [66:0] \$30 ;
  wire [66:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [63:0] \$38 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [63:0] \$9 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$9  = empty | (* src = "attacks-qbb.py:33" *) \$7 ;
  assign \$11  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hffffffffffffffff);
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffffe);
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = ~ (* src = "attacks-qbb.py:172" *) 64'h8080808080808080;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffffe);
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hfffffffffffffffc);
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hffffffffffffffff);
  assign \$36  = ~ (* src = "attacks-qbb.py:172" *) 64'h8080808080808080;
  assign \$38  = \$34  & (* src = "attacks-qbb.py:38" *) \$36 ;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$5  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hffffffffffffffff);
  assign \$7  = pieces0 & (* src = "attacks-qbb.py:33" *) \$5 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$9 ;
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$13 ;
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$38 ;
  end
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king" *)
(* generator = "nMigen" *)
module white_king(pieces);
  wire [78:0] \$1 ;
  wire [64:0] \$11 ;
  wire [63:0] \$12 ;
  wire [63:0] \$14 ;
  wire [64:0] \$16 ;
  wire [63:0] \$18 ;
  wire [78:0] \$2 ;
  wire [63:0] \$20 ;
  wire [63:0] \$22 ;
  wire [63:0] \$24 ;
  wire [7:0] \$26 ;
  wire [63:0] \$28 ;
  wire [63:0] \$30 ;
  wire [7:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [70:0] \$38 ;
  wire [7:0] \$39 ;
  wire [78:0] \$4 ;
  wire [63:0] \$41 ;
  wire [70:0] \$43 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:80" *)
  reg [63:0] \$next\e ;
  (* src = "attacks-qbb.py:78" *)
  reg [63:0] \$next\n ;
  (* src = "attacks-qbb.py:79" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:85" *)
  reg [63:0] \$next\nw ;
  (* src = "attacks-qbb.py:82" *)
  reg [63:0] \$next\s ;
  (* src = "attacks-qbb.py:81" *)
  reg [63:0] \$next\se ;
  (* src = "attacks-qbb.py:83" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:84" *)
  reg [63:0] \$next\w ;
  (* src = "attacks-qbb.py:80" *)
  wire [63:0] e;
  (* src = "attacks-qbb.py:78" *)
  wire [63:0] n;
  (* src = "attacks-qbb.py:79" *)
  wire [63:0] ne;
  (* src = "attacks-qbb.py:85" *)
  wire [63:0] nw;
  (* src = "attacks-qbb.py:76" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:82" *)
  wire [63:0] s;
  (* src = "attacks-qbb.py:81" *)
  wire [63:0] se;
  (* src = "attacks-qbb.py:83" *)
  wire [63:0] sw;
  (* src = "attacks-qbb.py:84" *)
  wire [63:0] w;
  assign \$9  = \$7  <<< (* src = "attacks-qbb.py:92" *) 4'h9;
  assign \$12  = ~ (* src = "attacks-qbb.py:93" *) 64'h8080808080808080;
  assign \$14  = pieces & (* src = "attacks-qbb.py:93" *) \$12 ;
  assign \$16  = \$14  <<< (* src = "attacks-qbb.py:93" *) 1'h1;
  assign \$18  = ~ (* src = "attacks-qbb.py:94" *) 64'h8080808080808080;
  assign \$20  = pieces & (* src = "attacks-qbb.py:94" *) \$18 ;
  assign \$22  = \$20  >>> (* src = "attacks-qbb.py:94" *) 3'h7;
  assign \$24  = pieces >>> (* src = "attacks-qbb.py:95" *) 4'h8;
  assign \$26  = ~ (* src = "attacks-qbb.py:96" *) 8'hff;
  assign \$28  = pieces & (* src = "attacks-qbb.py:96" *) \$26 ;
  assign \$2  = pieces <<< (* src = "attacks-qbb.py:91" *) 4'h8;
  assign \$30  = \$28  >>> (* src = "attacks-qbb.py:96" *) 4'h9;
  assign \$32  = ~ (* src = "attacks-qbb.py:97" *) 8'hff;
  assign \$34  = pieces & (* src = "attacks-qbb.py:97" *) \$32 ;
  assign \$36  = \$34  >>> (* src = "attacks-qbb.py:97" *) 1'h1;
  assign \$39  = ~ (* src = "attacks-qbb.py:98" *) 8'hff;
  assign \$41  = pieces & (* src = "attacks-qbb.py:98" *) \$39 ;
  assign \$43  = \$41  <<< (* src = "attacks-qbb.py:98" *) 3'h7;
  assign \$5  = ~ (* src = "attacks-qbb.py:92" *) 64'h8080808080808080;
  assign \$7  = pieces & (* src = "attacks-qbb.py:92" *) \$5 ;
  always @* begin
    \$next\n  = 64'h0000000000000000;
    \$next\n  = \$1 [63:0];
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = \$4 [63:0];
  end
  always @* begin
    \$next\e  = 64'h0000000000000000;
    \$next\e  = \$11 [63:0];
  end
  always @* begin
    \$next\se  = 64'h0000000000000000;
    \$next\se  = \$22 ;
  end
  always @* begin
    \$next\s  = 64'h0000000000000000;
    \$next\s  = \$24 ;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = \$30 ;
  end
  always @* begin
    \$next\w  = 64'h0000000000000000;
    \$next\w  = \$36 ;
  end
  always @* begin
    \$next\nw  = 64'h0000000000000000;
    \$next\nw  = \$38 [63:0];
  end
  assign \$1  = \$2 ;
  assign \$4  = \$9 ;
  assign \$11  = \$16 ;
  assign \$38  = \$43 ;
  assign nw = \$next\nw ;
  assign w = \$next\w ;
  assign sw = \$next\sw ;
  assign s = \$next\s ;
  assign se = \$next\se ;
  assign e = \$next\e ;
  assign ne = \$next\ne ;
  assign n = \$next\n ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_east" *)
(* generator = "nMigen" *)
module white_king_fill_east(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [64:0] \$10 ;
  wire [64:0] \$12 ;
  wire [64:0] \$13 ;
  wire [64:0] \$15 ;
  wire [66:0] \$17 ;
  wire [66:0] \$18 ;
  wire [66:0] \$20 ;
  wire [66:0] \$22 ;
  wire [66:0] \$24 ;
  wire [66:0] \$25 ;
  wire [66:0] \$27 ;
  wire [70:0] \$29 ;
  wire [63:0] \$3 ;
  wire [70:0] \$30 ;
  wire [70:0] \$32 ;
  wire [70:0] \$34 ;
  wire [64:0] \$36 ;
  wire [64:0] \$37 ;
  wire [7:0] \$39 ;
  wire [64:0] \$41 ;
  wire [64:0] \$5 ;
  wire [64:0] \$6 ;
  wire [64:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 1'h1;
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = empty0 <<< (* src = "attacks-qbb.py:35" *) 2'h2;
  assign \$1  = ~ (* src = "attacks-qbb.py:159" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 2'h2;
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = empty1 <<< (* src = "attacks-qbb.py:37" *) 3'h4;
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = empty2 <<< (* src = "attacks-qbb.py:38" *) 1'h1;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:159" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = empty <<< (* src = "attacks-qbb.py:33" *) 1'h1;
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_north" *)
(* generator = "nMigen" *)
module white_king_fill_north(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$11 ;
  wire [78:0] \$13 ;
  wire [94:0] \$15 ;
  wire [94:0] \$16 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$23 ;
  wire [94:0] \$25 ;
  wire [126:0] \$27 ;
  wire [126:0] \$28 ;
  wire [78:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [78:0] \$34 ;
  wire [78:0] \$35 ;
  wire [78:0] \$37 ;
  wire [78:0] \$4 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$11  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 4'h8;
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = empty0 <<< (* src = "attacks-qbb.py:35" *) 5'h10;
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = pieces & (* src = "attacks-qbb.py:32" *) 64'hffffffffffffffff;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 5'h10;
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = empty1 <<< (* src = "attacks-qbb.py:37" *) 6'h20;
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$35  = empty2 <<< (* src = "attacks-qbb.py:38" *) 4'h8;
  assign \$37  = \$35  & (* src = "attacks-qbb.py:38" *) 64'hffffffffffffffff;
  assign \$4  = empty <<< (* src = "attacks-qbb.py:33" *) 4'h8;
  assign \$6  = pieces0 & (* src = "attacks-qbb.py:33" *) \$4 ;
  assign \$8  = empty | (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$1 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$3 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$10 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$34 [63:0];
  end
  assign \$3  = \$8 ;
  assign \$10  = \$13 ;
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \$34  = \$37 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_northeast" *)
(* generator = "nMigen" *)
module white_king_fill_northeast(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$12 ;
  wire [78:0] \$13 ;
  wire [78:0] \$15 ;
  wire [94:0] \$17 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$24 ;
  wire [94:0] \$25 ;
  wire [94:0] \$27 ;
  wire [126:0] \$29 ;
  wire [63:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [126:0] \$34 ;
  wire [78:0] \$36 ;
  wire [78:0] \$37 ;
  wire [7:0] \$39 ;
  wire [78:0] \$41 ;
  wire [78:0] \$5 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = pieces0 <<< (* src = "attacks-qbb.py:34" *) 4'h9;
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = empty0 <<< (* src = "attacks-qbb.py:35" *) 5'h12;
  assign \$1  = ~ (* src = "attacks-qbb.py:158" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = pieces1 <<< (* src = "attacks-qbb.py:36" *) 5'h12;
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = empty1 <<< (* src = "attacks-qbb.py:37" *) 6'h24;
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = empty2 <<< (* src = "attacks-qbb.py:38" *) 4'h9;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:158" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = empty <<< (* src = "attacks-qbb.py:33" *) 4'h9;
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_northwest" *)
(* generator = "nMigen" *)
module white_king_fill_northwest(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$12 ;
  wire [70:0] \$13 ;
  wire [70:0] \$15 ;
  wire [78:0] \$17 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$24 ;
  wire [78:0] \$25 ;
  wire [78:0] \$27 ;
  wire [94:0] \$29 ;
  wire [63:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [94:0] \$34 ;
  wire [70:0] \$36 ;
  wire [70:0] \$37 ;
  wire [63:0] \$39 ;
  wire [70:0] \$41 ;
  wire [70:0] \$5 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff9);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff2);
  assign \$1  = ~ (* src = "attacks-qbb.py:164" *) 64'h8080808080808080;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff2);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe4);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff9);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:164" *) 64'h8080808080808080;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff9);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_south" *)
(* generator = "nMigen" *)
module white_king_fill_south(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$11 ;
  wire [70:0] \$13 ;
  wire [78:0] \$15 ;
  wire [78:0] \$16 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$23 ;
  wire [78:0] \$25 ;
  wire [94:0] \$27 ;
  wire [94:0] \$28 ;
  wire [70:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [70:0] \$34 ;
  wire [70:0] \$35 ;
  wire [70:0] \$37 ;
  wire [70:0] \$4 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$11  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff8);
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff0);
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = pieces & (* src = "attacks-qbb.py:32" *) 64'hffffffffffffffff;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff0);
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe0);
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$35  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff8);
  assign \$37  = \$35  & (* src = "attacks-qbb.py:38" *) 64'hffffffffffffffff;
  assign \$4  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff8);
  assign \$6  = pieces0 & (* src = "attacks-qbb.py:33" *) \$4 ;
  assign \$8  = empty | (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$1 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$3 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$10 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$34 [63:0];
  end
  assign \$3  = \$8 ;
  assign \$10  = \$13 ;
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \$34  = \$37 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_southeast" *)
(* generator = "nMigen" *)
module white_king_fill_southeast(empty, \output , pieces);
  wire [7:0] \$1 ;
  wire [70:0] \$10 ;
  wire [70:0] \$12 ;
  wire [70:0] \$13 ;
  wire [70:0] \$15 ;
  wire [78:0] \$17 ;
  wire [78:0] \$18 ;
  wire [78:0] \$20 ;
  wire [78:0] \$22 ;
  wire [78:0] \$24 ;
  wire [78:0] \$25 ;
  wire [78:0] \$27 ;
  wire [94:0] \$29 ;
  wire [63:0] \$3 ;
  wire [94:0] \$30 ;
  wire [94:0] \$32 ;
  wire [94:0] \$34 ;
  wire [70:0] \$36 ;
  wire [70:0] \$37 ;
  wire [7:0] \$39 ;
  wire [70:0] \$41 ;
  wire [70:0] \$5 ;
  wire [70:0] \$6 ;
  wire [70:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff9);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffff2);
  assign \$1  = ~ (* src = "attacks-qbb.py:160" *) 8'hff;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffff2);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffe4);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff9);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:160" *) 8'hff;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff9);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_southwest" *)
(* generator = "nMigen" *)
module white_king_fill_southwest(empty, pieces);
  wire [63:0] \$1 ;
  wire [78:0] \$10 ;
  wire [78:0] \$12 ;
  wire [78:0] \$13 ;
  wire [78:0] \$15 ;
  wire [94:0] \$17 ;
  wire [94:0] \$18 ;
  wire [94:0] \$20 ;
  wire [94:0] \$22 ;
  wire [94:0] \$24 ;
  wire [94:0] \$25 ;
  wire [94:0] \$27 ;
  wire [126:0] \$29 ;
  wire [63:0] \$3 ;
  wire [126:0] \$30 ;
  wire [126:0] \$32 ;
  wire [126:0] \$34 ;
  wire [78:0] \$36 ;
  wire [78:0] \$37 ;
  wire [63:0] \$39 ;
  wire [78:0] \$41 ;
  wire [78:0] \$5 ;
  wire [78:0] \$6 ;
  wire [78:0] \$8 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  wire [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$10  = empty | (* src = "attacks-qbb.py:33" *) \$8 ;
  assign \$13  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hfffffffffffffff7);
  assign \$15  = pieces0 & (* src = "attacks-qbb.py:34" *) \$13 ;
  assign \$18  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hffffffffffffffee);
  assign \$1  = ~ (* src = "attacks-qbb.py:162" *) 64'h8080808080808080;
  assign \$20  = pieces1 & (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$22  = empty0 | (* src = "attacks-qbb.py:35" *) \$20 ;
  assign \$25  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hffffffffffffffee);
  assign \$27  = pieces1 & (* src = "attacks-qbb.py:36" *) \$25 ;
  assign \$30  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hffffffffffffffdc);
  assign \$32  = pieces2 & (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = empty1 | (* src = "attacks-qbb.py:37" *) \$32 ;
  assign \$37  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hfffffffffffffff7);
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$39  = ~ (* src = "attacks-qbb.py:162" *) 64'h8080808080808080;
  assign \$41  = \$37  & (* src = "attacks-qbb.py:38" *) \$39 ;
  assign \$6  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hfffffffffffffff7);
  assign \$8  = pieces0 & (* src = "attacks-qbb.py:33" *) \$6 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$5 [63:0];
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$12 [63:0];
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$17 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$24 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$29 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$36 [63:0];
  end
  assign \$5  = \$10 ;
  assign \$12  = \$15 ;
  assign \$17  = \$22 ;
  assign \$24  = \$27 ;
  assign \$29  = \$34 ;
  assign \$36  = \$41 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_fill_west" *)
(* generator = "nMigen" *)
module white_king_fill_west(empty, \output , pieces);
  wire [63:0] \$1 ;
  wire [63:0] \$11 ;
  wire [63:0] \$13 ;
  wire [64:0] \$15 ;
  wire [64:0] \$16 ;
  wire [64:0] \$18 ;
  wire [64:0] \$20 ;
  wire [64:0] \$22 ;
  wire [64:0] \$23 ;
  wire [64:0] \$25 ;
  wire [66:0] \$27 ;
  wire [66:0] \$28 ;
  wire [63:0] \$3 ;
  wire [66:0] \$30 ;
  wire [66:0] \$32 ;
  wire [63:0] \$34 ;
  wire [63:0] \$36 ;
  wire [63:0] \$38 ;
  wire [63:0] \$5 ;
  wire [63:0] \$7 ;
  wire [63:0] \$9 ;
  (* src = "attacks-qbb.py:25" *)
  reg [63:0] \$next\empty0 ;
  (* src = "attacks-qbb.py:27" *)
  reg [63:0] \$next\empty1 ;
  (* src = "attacks-qbb.py:29" *)
  reg [63:0] \$next\empty2 ;
  (* src = "attacks-qbb.py:16" *)
  reg [63:0] \$next\output ;
  (* src = "attacks-qbb.py:24" *)
  reg [63:0] \$next\pieces0 ;
  (* src = "attacks-qbb.py:26" *)
  reg [63:0] \$next\pieces1 ;
  (* src = "attacks-qbb.py:28" *)
  reg [63:0] \$next\pieces2 ;
  (* src = "attacks-qbb.py:14" *)
  input [63:0] empty;
  (* src = "attacks-qbb.py:25" *)
  wire [63:0] empty0;
  (* src = "attacks-qbb.py:27" *)
  wire [63:0] empty1;
  (* src = "attacks-qbb.py:29" *)
  wire [63:0] empty2;
  (* src = "attacks-qbb.py:16" *)
  output [63:0] \output ;
  (* src = "attacks-qbb.py:15" *)
  input [63:0] pieces;
  (* src = "attacks-qbb.py:24" *)
  wire [63:0] pieces0;
  (* src = "attacks-qbb.py:26" *)
  wire [63:0] pieces1;
  (* src = "attacks-qbb.py:28" *)
  wire [63:0] pieces2;
  assign \$9  = empty | (* src = "attacks-qbb.py:33" *) \$7 ;
  assign \$11  = $signed(pieces0) <<< (* src = "attacks-qbb.py:34" *) $signed(64'hffffffffffffffff);
  assign \$13  = pieces0 & (* src = "attacks-qbb.py:34" *) \$11 ;
  assign \$16  = $signed(empty0) <<< (* src = "attacks-qbb.py:35" *) $signed(64'hfffffffffffffffe);
  assign \$18  = pieces1 & (* src = "attacks-qbb.py:35" *) \$16 ;
  assign \$1  = ~ (* src = "attacks-qbb.py:163" *) 64'h8080808080808080;
  assign \$20  = empty0 | (* src = "attacks-qbb.py:35" *) \$18 ;
  assign \$23  = $signed(pieces1) <<< (* src = "attacks-qbb.py:36" *) $signed(64'hfffffffffffffffe);
  assign \$25  = pieces1 & (* src = "attacks-qbb.py:36" *) \$23 ;
  assign \$28  = $signed(empty1) <<< (* src = "attacks-qbb.py:37" *) $signed(64'hfffffffffffffffc);
  assign \$30  = pieces2 & (* src = "attacks-qbb.py:37" *) \$28 ;
  assign \$32  = empty1 | (* src = "attacks-qbb.py:37" *) \$30 ;
  assign \$34  = $signed(empty2) <<< (* src = "attacks-qbb.py:38" *) $signed(64'hffffffffffffffff);
  assign \$36  = ~ (* src = "attacks-qbb.py:163" *) 64'h8080808080808080;
  assign \$38  = \$34  & (* src = "attacks-qbb.py:38" *) \$36 ;
  assign \$3  = pieces & (* src = "attacks-qbb.py:32" *) \$1 ;
  assign \$5  = $signed(empty) <<< (* src = "attacks-qbb.py:33" *) $signed(64'hffffffffffffffff);
  assign \$7  = pieces0 & (* src = "attacks-qbb.py:33" *) \$5 ;
  always @* begin
    \$next\pieces0  = 64'h0000000000000000;
    \$next\pieces0  = \$3 ;
  end
  always @* begin
    \$next\empty0  = 64'h0000000000000000;
    \$next\empty0  = \$9 ;
  end
  always @* begin
    \$next\pieces1  = 64'h0000000000000000;
    \$next\pieces1  = \$13 ;
  end
  always @* begin
    \$next\empty1  = 64'h0000000000000000;
    \$next\empty1  = \$15 [63:0];
  end
  always @* begin
    \$next\pieces2  = 64'h0000000000000000;
    \$next\pieces2  = \$22 [63:0];
  end
  always @* begin
    \$next\empty2  = 64'h0000000000000000;
    \$next\empty2  = \$27 [63:0];
  end
  always @* begin
    \$next\output  = 64'h0000000000000000;
    \$next\output  = \$38 ;
  end
  assign \$15  = \$20 ;
  assign \$22  = \$25 ;
  assign \$27  = \$32 ;
  assign \output  = \$next\output ;
  assign empty2 = \$next\empty2 ;
  assign pieces2 = \$next\pieces2 ;
  assign empty1 = \$next\empty1 ;
  assign pieces1 = \$next\pieces1 ;
  assign empty0 = \$next\empty0 ;
  assign pieces0 = \$next\pieces0 ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_knight_attacks" *)
(* generator = "nMigen" *)
module white_king_knight_attacks(nne, ene, ese, sse, ssw, wsw, wnw, nnw, knights);
  wire [94:0] \$1 ;
  wire [7:0] \$11 ;
  wire [78:0] \$13 ;
  wire [15:0] \$15 ;
  wire [78:0] \$17 ;
  wire [63:0] \$19 ;
  wire [94:0] \$2 ;
  wire [7:0] \$21 ;
  wire [63:0] \$23 ;
  wire [15:0] \$25 ;
  wire [63:0] \$27 ;
  wire [63:0] \$29 ;
  wire [7:0] \$31 ;
  wire [63:0] \$33 ;
  wire [63:0] \$35 ;
  wire [63:0] \$37 ;
  wire [63:0] \$39 ;
  wire [7:0] \$4 ;
  wire [63:0] \$41 ;
  wire [55:0] \$43 ;
  wire [63:0] \$45 ;
  wire [63:0] \$47 ;
  wire [63:0] \$49 ;
  wire [70:0] \$51 ;
  wire [70:0] \$52 ;
  wire [55:0] \$54 ;
  wire [70:0] \$56 ;
  wire [63:0] \$58 ;
  wire [94:0] \$6 ;
  wire [70:0] \$60 ;
  wire [78:0] \$62 ;
  wire [78:0] \$63 ;
  wire [63:0] \$65 ;
  wire [78:0] \$67 ;
  wire [78:0] \$8 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:49" *)
  reg [63:0] \$next\ene ;
  (* src = "attacks-qbb.py:50" *)
  reg [63:0] \$next\ese ;
  (* src = "attacks-qbb.py:48" *)
  reg [63:0] \$next\nne ;
  (* src = "attacks-qbb.py:55" *)
  reg [63:0] \$next\nnw ;
  (* src = "attacks-qbb.py:51" *)
  reg [63:0] \$next\sse ;
  (* src = "attacks-qbb.py:52" *)
  reg [63:0] \$next\ssw ;
  (* src = "attacks-qbb.py:54" *)
  reg [63:0] \$next\wnw ;
  (* src = "attacks-qbb.py:53" *)
  reg [63:0] \$next\wsw ;
  (* src = "attacks-qbb.py:49" *)
  output [63:0] ene;
  (* src = "attacks-qbb.py:50" *)
  output [63:0] ese;
  (* src = "attacks-qbb.py:46" *)
  input [63:0] knights;
  (* src = "attacks-qbb.py:48" *)
  output [63:0] nne;
  (* src = "attacks-qbb.py:55" *)
  output [63:0] nnw;
  (* src = "attacks-qbb.py:51" *)
  output [63:0] sse;
  (* src = "attacks-qbb.py:52" *)
  output [63:0] ssw;
  (* src = "attacks-qbb.py:54" *)
  output [63:0] wnw;
  (* src = "attacks-qbb.py:53" *)
  output [63:0] wsw;
  assign \$9  = knights <<< (* src = "attacks-qbb.py:62" *) 4'ha;
  assign \$11  = ~ (* src = "attacks-qbb.py:62" *) 8'hff;
  assign \$13  = \$9  & (* src = "attacks-qbb.py:62" *) \$11 ;
  assign \$15  = ~ (* src = "attacks-qbb.py:62" *) 16'haaaa;
  assign \$17  = \$13  & (* src = "attacks-qbb.py:62" *) \$15 ;
  assign \$19  = knights >>> (* src = "attacks-qbb.py:63" *) 3'h6;
  assign \$21  = ~ (* src = "attacks-qbb.py:63" *) 8'hff;
  assign \$23  = \$19  & (* src = "attacks-qbb.py:63" *) \$21 ;
  assign \$25  = ~ (* src = "attacks-qbb.py:63" *) 16'haaaa;
  assign \$27  = \$23  & (* src = "attacks-qbb.py:63" *) \$25 ;
  assign \$2  = knights <<< (* src = "attacks-qbb.py:61" *) 5'h11;
  assign \$29  = knights >>> (* src = "attacks-qbb.py:64" *) 4'hf;
  assign \$31  = ~ (* src = "attacks-qbb.py:64" *) 8'hff;
  assign \$33  = \$29  & (* src = "attacks-qbb.py:64" *) \$31 ;
  assign \$35  = knights >>> (* src = "attacks-qbb.py:65" *) 5'h11;
  assign \$37  = ~ (* src = "attacks-qbb.py:65" *) 64'h8080808080808080;
  assign \$39  = \$35  & (* src = "attacks-qbb.py:65" *) \$37 ;
  assign \$41  = knights >>> (* src = "attacks-qbb.py:66" *) 4'ha;
  assign \$43  = ~ (* src = "attacks-qbb.py:66" *) 56'h81020408102040;
  assign \$45  = \$41  & (* src = "attacks-qbb.py:66" *) \$43 ;
  assign \$47  = ~ (* src = "attacks-qbb.py:66" *) 64'h8080808080808080;
  assign \$4  = ~ (* src = "attacks-qbb.py:61" *) 8'hff;
  assign \$49  = \$45  & (* src = "attacks-qbb.py:66" *) \$47 ;
  assign \$52  = knights <<< (* src = "attacks-qbb.py:67" *) 3'h6;
  assign \$54  = ~ (* src = "attacks-qbb.py:67" *) 56'h81020408102040;
  assign \$56  = \$52  & (* src = "attacks-qbb.py:67" *) \$54 ;
  assign \$58  = ~ (* src = "attacks-qbb.py:67" *) 64'h8080808080808080;
  assign \$60  = \$56  & (* src = "attacks-qbb.py:67" *) \$58 ;
  assign \$63  = knights <<< (* src = "attacks-qbb.py:68" *) 4'hf;
  assign \$65  = ~ (* src = "attacks-qbb.py:68" *) 64'h8080808080808080;
  assign \$67  = \$63  & (* src = "attacks-qbb.py:68" *) \$65 ;
  assign \$6  = \$2  & (* src = "attacks-qbb.py:61" *) \$4 ;
  always @* begin
    \$next\nne  = 64'h0000000000000000;
    \$next\nne  = \$1 [63:0];
  end
  always @* begin
    \$next\ene  = 64'h0000000000000000;
    \$next\ene  = \$8 [63:0];
  end
  always @* begin
    \$next\ese  = 64'h0000000000000000;
    \$next\ese  = \$27 ;
  end
  always @* begin
    \$next\sse  = 64'h0000000000000000;
    \$next\sse  = \$33 ;
  end
  always @* begin
    \$next\ssw  = 64'h0000000000000000;
    \$next\ssw  = \$39 ;
  end
  always @* begin
    \$next\wsw  = 64'h0000000000000000;
    \$next\wsw  = \$49 ;
  end
  always @* begin
    \$next\wnw  = 64'h0000000000000000;
    \$next\wnw  = \$51 [63:0];
  end
  always @* begin
    \$next\nnw  = 64'h0000000000000000;
    \$next\nnw  = \$62 [63:0];
  end
  assign \$1  = \$6 ;
  assign \$8  = \$17 ;
  assign \$51  = \$60 ;
  assign \$62  = \$67 ;
  assign nnw = \$next\nnw ;
  assign wnw = \$next\wnw ;
  assign wsw = \$next\wsw ;
  assign ssw = \$next\ssw ;
  assign sse = \$next\sse ;
  assign ese = \$next\ese ;
  assign ene = \$next\ene ;
  assign nne = \$next\nne ;
endmodule

(* \nmigen.hierarchy  = "top.white_king_pawn_attacks" *)
(* generator = "nMigen" *)
module white_king_pawn_attacks(ne, nw, pawns);
  (* src = "attacks-qbb.py:108" *)
  reg [63:0] \$next\ne ;
  (* src = "attacks-qbb.py:111" *)
  reg [63:0] \$next\nw ;
  (* src = "attacks-qbb.py:109" *)
  reg [63:0] \$next\se ;
  (* src = "attacks-qbb.py:76" *)
  reg [63:0] \$next\step_pieces ;
  (* src = "attacks-qbb.py:110" *)
  reg [63:0] \$next\sw ;
  (* src = "attacks-qbb.py:108" *)
  output [63:0] ne;
  (* src = "attacks-qbb.py:111" *)
  output [63:0] nw;
  (* src = "attacks-qbb.py:106" *)
  input [63:0] pawns;
  (* src = "attacks-qbb.py:109" *)
  wire [63:0] se;
  (* src = "attacks-qbb.py:79" *)
  wire [63:0] step_ne;
  (* src = "attacks-qbb.py:85" *)
  wire [63:0] step_nw;
  (* src = "attacks-qbb.py:76" *)
  wire [63:0] step_pieces;
  (* src = "attacks-qbb.py:81" *)
  wire [63:0] step_se;
  (* src = "attacks-qbb.py:83" *)
  wire [63:0] step_sw;
  (* src = "attacks-qbb.py:110" *)
  wire [63:0] sw;
  step step (
    .ne(step_ne),
    .nw(step_nw),
    .pieces(step_pieces),
    .se(step_se),
    .sw(step_sw)
  );
  always @* begin
    \$next\step_pieces  = 64'h0000000000000000;
    \$next\step_pieces  = pawns;
  end
  always @* begin
    \$next\ne  = 64'h0000000000000000;
    \$next\ne  = step_ne;
  end
  always @* begin
    \$next\se  = 64'h0000000000000000;
    \$next\se  = step_se;
  end
  always @* begin
    \$next\sw  = 64'h0000000000000000;
    \$next\sw  = step_sw;
  end
  always @* begin
    \$next\nw  = 64'h0000000000000000;
    \$next\nw  = step_nw;
  end
  assign nw = \$next\nw ;
  assign sw = \$next\sw ;
  assign se = \$next\se ;
  assign ne = \$next\ne ;
  assign step_pieces = \$next\step_pieces ;
endmodule

(* \nmigen.hierarchy  = "top.white_knights" *)
(* generator = "nMigen" *)
module white_knights(knights);
  wire [94:0] \$1 ;
  wire [7:0] \$11 ;
  wire [78:0] \$13 ;
  wire [15:0] \$15 ;
  wire [78:0] \$17 ;
  wire [63:0] \$19 ;
  wire [94:0] \$2 ;
  wire [7:0] \$21 ;
  wire [63:0] \$23 ;
  wire [15:0] \$25 ;
  wire [63:0] \$27 ;
  wire [63:0] \$29 ;
  wire [7:0] \$31 ;
  wire [63:0] \$33 ;
  wire [63:0] \$35 ;
  wire [63:0] \$37 ;
  wire [63:0] \$39 ;
  wire [7:0] \$4 ;
  wire [63:0] \$41 ;
  wire [55:0] \$43 ;
  wire [63:0] \$45 ;
  wire [63:0] \$47 ;
  wire [63:0] \$49 ;
  wire [70:0] \$51 ;
  wire [70:0] \$52 ;
  wire [55:0] \$54 ;
  wire [70:0] \$56 ;
  wire [63:0] \$58 ;
  wire [94:0] \$6 ;
  wire [70:0] \$60 ;
  wire [78:0] \$62 ;
  wire [78:0] \$63 ;
  wire [63:0] \$65 ;
  wire [78:0] \$67 ;
  wire [78:0] \$8 ;
  wire [78:0] \$9 ;
  (* src = "attacks-qbb.py:49" *)
  reg [63:0] \$next\ene ;
  (* src = "attacks-qbb.py:50" *)
  reg [63:0] \$next\ese ;
  (* src = "attacks-qbb.py:48" *)
  reg [63:0] \$next\nne ;
  (* src = "attacks-qbb.py:55" *)
  reg [63:0] \$next\nnw ;
  (* src = "attacks-qbb.py:51" *)
  reg [63:0] \$next\sse ;
  (* src = "attacks-qbb.py:52" *)
  reg [63:0] \$next\ssw ;
  (* src = "attacks-qbb.py:54" *)
  reg [63:0] \$next\wnw ;
  (* src = "attacks-qbb.py:53" *)
  reg [63:0] \$next\wsw ;
  (* src = "attacks-qbb.py:49" *)
  wire [63:0] ene;
  (* src = "attacks-qbb.py:50" *)
  wire [63:0] ese;
  (* src = "attacks-qbb.py:46" *)
  input [63:0] knights;
  (* src = "attacks-qbb.py:48" *)
  wire [63:0] nne;
  (* src = "attacks-qbb.py:55" *)
  wire [63:0] nnw;
  (* src = "attacks-qbb.py:51" *)
  wire [63:0] sse;
  (* src = "attacks-qbb.py:52" *)
  wire [63:0] ssw;
  (* src = "attacks-qbb.py:54" *)
  wire [63:0] wnw;
  (* src = "attacks-qbb.py:53" *)
  wire [63:0] wsw;
  assign \$9  = knights <<< (* src = "attacks-qbb.py:62" *) 4'ha;
  assign \$11  = ~ (* src = "attacks-qbb.py:62" *) 8'hff;
  assign \$13  = \$9  & (* src = "attacks-qbb.py:62" *) \$11 ;
  assign \$15  = ~ (* src = "attacks-qbb.py:62" *) 16'haaaa;
  assign \$17  = \$13  & (* src = "attacks-qbb.py:62" *) \$15 ;
  assign \$19  = knights >>> (* src = "attacks-qbb.py:63" *) 3'h6;
  assign \$21  = ~ (* src = "attacks-qbb.py:63" *) 8'hff;
  assign \$23  = \$19  & (* src = "attacks-qbb.py:63" *) \$21 ;
  assign \$25  = ~ (* src = "attacks-qbb.py:63" *) 16'haaaa;
  assign \$27  = \$23  & (* src = "attacks-qbb.py:63" *) \$25 ;
  assign \$2  = knights <<< (* src = "attacks-qbb.py:61" *) 5'h11;
  assign \$29  = knights >>> (* src = "attacks-qbb.py:64" *) 4'hf;
  assign \$31  = ~ (* src = "attacks-qbb.py:64" *) 8'hff;
  assign \$33  = \$29  & (* src = "attacks-qbb.py:64" *) \$31 ;
  assign \$35  = knights >>> (* src = "attacks-qbb.py:65" *) 5'h11;
  assign \$37  = ~ (* src = "attacks-qbb.py:65" *) 64'h8080808080808080;
  assign \$39  = \$35  & (* src = "attacks-qbb.py:65" *) \$37 ;
  assign \$41  = knights >>> (* src = "attacks-qbb.py:66" *) 4'ha;
  assign \$43  = ~ (* src = "attacks-qbb.py:66" *) 56'h81020408102040;
  assign \$45  = \$41  & (* src = "attacks-qbb.py:66" *) \$43 ;
  assign \$47  = ~ (* src = "attacks-qbb.py:66" *) 64'h8080808080808080;
  assign \$4  = ~ (* src = "attacks-qbb.py:61" *) 8'hff;
  assign \$49  = \$45  & (* src = "attacks-qbb.py:66" *) \$47 ;
  assign \$52  = knights <<< (* src = "attacks-qbb.py:67" *) 3'h6;
  assign \$54  = ~ (* src = "attacks-qbb.py:67" *) 56'h81020408102040;
  assign \$56  = \$52  & (* src = "attacks-qbb.py:67" *) \$54 ;
  assign \$58  = ~ (* src = "attacks-qbb.py:67" *) 64'h8080808080808080;
  assign \$60  = \$56  & (* src = "attacks-qbb.py:67" *) \$58 ;
  assign \$63  = knights <<< (* src = "attacks-qbb.py:68" *) 4'hf;
  assign \$65  = ~ (* src = "attacks-qbb.py:68" *) 64'h8080808080808080;
  assign \$67  = \$63  & (* src = "attacks-qbb.py:68" *) \$65 ;
  assign \$6  = \$2  & (* src = "attacks-qbb.py:61" *) \$4 ;
  always @* begin
    \$next\nne  = 64'h0000000000000000;
    \$next\nne  = \$1 [63:0];
  end
  always @* begin
    \$next\ene  = 64'h0000000000000000;
    \$next\ene  = \$8 [63:0];
  end
  always @* begin
    \$next\ese  = 64'h0000000000000000;
    \$next\ese  = \$27 ;
  end
  always @* begin
    \$next\sse  = 64'h0000000000000000;
    \$next\sse  = \$33 ;
  end
  always @* begin
    \$next\ssw  = 64'h0000000000000000;
    \$next\ssw  = \$39 ;
  end
  always @* begin
    \$next\wsw  = 64'h0000000000000000;
    \$next\wsw  = \$49 ;
  end
  always @* begin
    \$next\wnw  = 64'h0000000000000000;
    \$next\wnw  = \$51 [63:0];
  end
  always @* begin
    \$next\nnw  = 64'h0000000000000000;
    \$next\nnw  = \$62 [63:0];
  end
  assign \$1  = \$6 ;
  assign \$8  = \$17 ;
  assign \$51  = \$60 ;
  assign \$62  = \$67 ;
  assign nnw = \$next\nnw ;
  assign wnw = \$next\wnw ;
  assign wsw = \$next\wsw ;
  assign ssw = \$next\ssw ;
  assign sse = \$next\sse ;
  assign ese = \$next\ese ;
  assign ene = \$next\ene ;
  assign nne = \$next\nne ;
endmodule

